From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11021126.outbound.protection.outlook.com [40.107.130.126]) by lore.virtuozzo.com (Postfix) with ESMTPS id 406908096D for ; Fri, 9 Oct 2026 14:56:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t+DSdfPMMF+QBuGBbvc3Cy9snlYDRfDxI2PYudLHddnPfaSb0heGcmmTfQg7gDOlQHWzi6UEWHUWRVH+U69EVFwU9eClb2qqc2/39EHvaCpdcyq+j53ngrVAKwHCJ1lSzSoYSfR9bD0MnOMn6fLg3D+WJPJMTkWkSkL82/86mqqzMuccNaUzaunWW/NfIx0TEIApMQk1tu3W0KWf9eQ2OEz5k5rkPVKY/RB+iqc+jqSJaqmbL+72dDGeVM8cQL6ExZiVnQo5kYPS0l6Qb30mnKfI6lbr5IhYpPSeyhmgKhGYmADdfQTYxCVsIrz8ye97O8qos4/uBibUO0HLF5G8yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vjuLBZA/DdbeQZG8pLN9ez7tY2g0lThn2UonPpqUUdg=; b=jtamOP2jMCYNss9iAK4reSqozej54ST/0lh2bXUj+JxIlvCz935sK1HppyVehWMQ40DM3EZeW6HLLzGDvDgMTZp0qffDQYetH6o8w11Yz6Iwzviuvcg1VwBtVsshrOGhis+Ve01kAn1vZmveYj4NQ9DHPqrL/fAdrECvwFxVkVaVtK2F9ubRMnlT63uP7uv+z6qsu5znff/zOQpjDsHcakdgPSKEhIdu6KVJneaTGG0m5hAhi2xz0mH8ZoDywOwyhnU8FGaYNj3b3OrtpJhRB+EUOycP6NlNZXgytXAlB3iXFzK6/33iiY+hB1p/MWd9DsYvEEVHL9jGpYNTpd+tsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vjuLBZA/DdbeQZG8pLN9ez7tY2g0lThn2UonPpqUUdg=; b=z/Tc06z/TUB8DLxHkH8Q37ZoRNvCEZH6M52bJewvqfhNPBOz64k1DOuPQfUdnLqnjH6eINs5s1dLU8fC2ExTSCA+sLYekva9KLJKUeD6y60XIYMo8OodLROQnM3y6rBcVF8crN22xsDyYquWnbrmPPh42fpEO1ilhg5Qq9XWq3IeU+5jynJWTwExg7JYbbqrut7TcYXul6rsyJDrSIfe0ZW/VGZDKpCBHjPWZMySD7OXvbJawyfiK1jj7GFOCgnCj0EjC7AzxtV69YgJ3arGWboPtfPwmg0NzeOOj9xGd4uNdTwfxZWWHljsUKyUnFtznZn79BY44/vlMik7pBprCQ== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by DB3PR08MB9110.eurprd08.prod.outlook.com (2603:10a6:10:428::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.17; Fri, 9 Oct 2026 14:56:27 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0496.010; Fri, 9 Oct 2026 14:56:27 +0000 From: Andrey Drobyshev Date: Fri, 09 Oct 2026 17:56:17 +0300 Subject: [PATCH QEMU HCI-8.1 18/21] VZ: physmem: align fd-backed RAM like anonymous RAM #VSTOR-103860 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261009-vfio_v1-v1-18-2ae91d5b8048@virtuozzo.com> References: <20261009-vfio_v1-v1-0-2ae91d5b8048@virtuozzo.com> In-Reply-To: <20261009-vfio_v1-v1-0-2ae91d5b8048@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0132.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34a::14) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DB3PR08MB9110:EE_ X-MS-Office365-Filtering-Correlation-Id: a6c840a3-7592-4808-a802-08df261575e9 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|52116014|23010399003|56012099006|38350700014|5023799004|10067099003|22082099003|5113699003|18002099003; X-Microsoft-Antispam-Message-Info: UtZkU2ok1Qx4dFGfuljlXW/R1rr3Fy6qbLzDsLo10y4Zio0kABvJr0l9DFFinmAmF3B91wUrgijIOvV3Za4bPwoc3/jd1JT9pHVj4oU2wu2vVNO23jbaJo8j38P8z3i/JZDYKudkm6eCBXbjZuv063jA7FAtUjW1TE6Xe4VvqxmlOg8x+VB8mrs73Jha1v/RrFwyhT2yojhpV4c2O0pQzBD9sk8CFl2kFFzmis5X/rnub8XmgHWw5E1qSZMS8wWLB7RrMQ1lXWcWcXUp2TlZBzBqjv6vapwNlKGOGzHE0yEWRH8V+9PkhhfP+TyZ5aIMwpWCMxuEM5rdDt66BfoMFpiPbjdIPCZN2BCPRmJYcjlUs8pze3G8lxCa7NszWCo5WhObdSstgQEI5t+T47OsJJ/7ZyJ+RwnIvrciaEXLALDCJukjLMDNDO0N+pGpE2oerL446eITUxBMv6xmFmKgng9xlKa1k1RmsvNrBnf36+7evW5mB8YzGQ8Icyl/QB6XcCTghk70BTgMG+aSlve4sfpYwPaAS/zW0Or/Nz04K2RGt0Ui2Go5o3Bvx3RNEqUw1j8yGq+iiBj4qgt6r8budeb/3nOIHDlQSALFCTHfe0bBi3BNgbB0QakqeVyg9VdWoOyVFbSBiy6goMv3nxKLwxc69kUyifsvghxL+tbN3UdumeDFpaQVSMF2PR9fvzYE91kpAB96Hgdc2OHuYchJIyBG2p3PHUwbvncrWNfzE/w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10656.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(52116014)(23010399003)(56012099006)(38350700014)(5023799004)(10067099003)(22082099003)(5113699003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cWEvZmNiL2dCN2ltSXNIdGNZOXN6OHFjOHIrenh6K3p1ZGJqS0hJWFFnWlc3?= =?utf-8?B?b3o5dUd6Syt2SGlyeTRXYTA0WW5YVER5SThycEtSVHhtbGNFYWJoNDhha2R1?= =?utf-8?B?ZWFPWnlTNVUrZld0K1dURzdnUE1QUkFMbHZGS1ZjT1dnbmxVTUNvUmg0dGU5?= =?utf-8?B?U3NmMTVWMVpuMnUwMjQ1dVExMFZPSjhvL1JlMFRkaGRtdHhhNCtBdG1zc090?= =?utf-8?B?N0xHUEFSbzFndURuZkU1N3hWa0dCODZkZUFHSFJ4YTJWbzJNcnNBeDc0eStR?= =?utf-8?B?aGtPYlVNY0E5V2JodUFGRitTUm9uT1V0OUhRRFJhY3RVL0Z1R3JpSVZTOERn?= =?utf-8?B?RDcwRkJIUkVDUWtFK2FlckRlZ3lhcEZJNWU1aGFEbjI4d09SS1hLQkJ5YSsx?= =?utf-8?B?dk5TK21CeTNWL2U3RDRWcGpUQlpUakc3REtQaUJBYklQeHhibUVGUlhEZUt0?= =?utf-8?B?aXMrbkFCdDVuREplUzZIVzVoK1N6ZFNOaE13Q3dJNzNIamtCNFFKc0xxSDJU?= =?utf-8?B?L09Wbm9ZTFFDUzVZTTF6a3pwWlVVUTBpTUc1MnprNFB2S093b0ZwZmRPS2RI?= =?utf-8?B?RVNSeFZ6UTBJS3dSSmRXbEJFZTVZdldlZXNkTTFkc052Y295dXhCWnV2MHda?= =?utf-8?B?OVFXK2U2ZE1pTmFLMFJWQi85cjVCM2UxVUg3Y21EZnovYlF5L1RrNGtsRk9S?= =?utf-8?B?b0lVdlBMblZUcDBXYnhmdVRzVTV3ZjZ3WHJKNndIcTJHTnVuYVFlUGhEY1U5?= =?utf-8?B?SjkzSnFvRmVRb0RGOXNYR1Rrb3R3Um0yR0p3SHU5SUhaNlArcm9BSFBnUnRL?= =?utf-8?B?VzFFQXRWTzVlR0tpNHFvSmR2U21JSno4dTBhYU1IUkdBeWVkTWdGRWJYdlJK?= =?utf-8?B?bEkzRU4rcHFnS2RPY1pRRGJXRW9RbHFxNExtU3pQYi9ZTHpOcUM5OFdRRmJk?= =?utf-8?B?S3N1VlhYVTVaV3dqeEtnR0VaZmdNTmE1RTN2c014aHpPSHZhOXlHNytNWXda?= =?utf-8?B?d2lBd0JVOFpMdjZtT1RiRFhQSW0xOGk5VDJ0Mzg1YkJjNFh1ajQrVXpjYzZp?= =?utf-8?B?cmRRZ3U3Z0xUSW1jWkRML3NQRmNRdFVmSFo5WE9iaFlTbXdjdTdDOW9jMS9j?= =?utf-8?B?MmxnbnA2enBCK2ZEUHcwNjQ5RmRLeWhsY2RNbXZ1UnhWYjArSUN2SHF3a0F4?= =?utf-8?B?Mkk0eGNacUJhY05sMnM3ek5lNmlBQjEyWjArRkhseWlrbGtvQ2g0ZzQ5OGNt?= =?utf-8?B?YlZ4dnRaaXNuWHpGT3QzNmxMZTRhRUJZRmM2OXBQOW9oQ1h1VVhEelpjMGN6?= =?utf-8?B?cHBhemcyRmUxTHdjREx1clBHTGc3NTJ0Z21NdzZaZ2hINWQ1K2xyT2RSQUhZ?= =?utf-8?B?WnBXUGtRRzJ3SG9FNlBKMGNGS2FUK3FMaU1WckRQS2h1RWdYcmVORFUyQitJ?= =?utf-8?B?YU9nK1NSWjVkZ1lDSjdkeHdIalFCTVFWQmtsUW9YOERsZWQ3WHFRVnNxT0p6?= =?utf-8?B?OWVDVDhLQisvT3YyRUZCV2xwb29qTFZKSUhPOUVWYWkvazcxMEI0SkJySSt3?= =?utf-8?B?Z1d3MDBTcUVsRTlVQWdueTRYOG1pOE5qT09OT1p2SVJ4akZ1NU9YUFA3ZEk0?= =?utf-8?B?ajR2WVh1L0ZtdXJuWkloOUh3YWhxUmNsTWZZWGpMUytCbnJzTDlURjRsLzF1?= =?utf-8?B?eGN6MHNwRTdOM1VTZ203OTFvaiswMjQzOUJXbllpVjFrek0yd3JzSTRocTBL?= =?utf-8?B?aVdMZk5vVjFybUh5YzBDZExxbk5LM1hHd05oYmFjcFZTQko1QzJxcHhXVVNi?= =?utf-8?B?UWRLdVhyZHA0ZVJFUTI5QVRXZG9IQjgwYzlwSkI5NGt3aFl5VWlZS210QURi?= =?utf-8?B?eVVpcFBlVDFnSWhtNjRaeWZkdU4ybGRvbXJQWHJNRC9oWDYwU3JOb3FlUUtv?= =?utf-8?B?V09jSldocWthQW9zNjE0Rk50V0g0eFJTRjFtNGI1clhkeE9QN0xJZkJMdk5U?= =?utf-8?B?MUhxK0pnMjBqRU9MWUNVeDFDUnJvL1pLY3l2RnoxdHR1cEpJUGIzU3d1b2FH?= =?utf-8?B?NUxyaFpFRHE2ZVY2T2hjekppQUlrdm1rNVVXV2g1WHVBNk1FeitjQ0NHanJE?= =?utf-8?B?dFJyREVtak1JdkhzS3BSaUw5bkdFYnNpM3pFZjZ5TVNSZXZoZVcwbkZlRDRT?= =?utf-8?B?UGhBc01CUHUySE1lTnBmbS8rc3ZOWWRPUW5YYld4UUhTTDdoY3YvRWtRK1Y0?= =?utf-8?B?NzZ5dGJBUzlMWU1HYlNNSjY4N05GN1BObjkwTDFQUDE3a1BoUVppQmhHSFdr?= =?utf-8?B?Ty9LWEVhci96VjZKbTBNVUhrV3VLRmZEL1N1YVEwUGxlUTB2bG1tRnBDaXZo?= =?utf-8?Q?Ljap4xzkibGhdIFY=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6c840a3-7592-4808-a802-08df261575e9 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2026 14:56:12.5387 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6z+fYyRudJtcSmpm5iYzcvzfAxv6uFGRDbmWo2ZDGVI0k4Y/2WPyvPORBT2YHwzkuR0hSKCofwnvLOv+76paHL2fmdYzlEF/DG/j9EiEDBI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB9110 file_ram_alloc() aligns the mapping of an FD-backed RAM block to 4K for memfd and tmpfs. Anon RAM by qemu_anon_ram_alloc() is aligned to QEMU_VMALLOC_ALIGN instead, which is 2M on x86_64. Currently, for FD-backed RAM that's only done on s390x KVM. Without such alignment, shared memory can't be mapped with 2M transparent huge pages. That makes "memory-backend-memfd" guest RAM backed by 4K pages only, even with 'advice' set to /sys/kernel/mm/transparent_hugepage/shmem_enabled. This matters for VMs with VFIO devices and cpr-exec. For them, anon RAM pages preserved via MADV_DOEXEC get pinned by VFIO_IOMMU_MAP_DMA and then replaced by copies on first guest write after exec(), while the device keeps doing DMA to the old pinned pages. Therefore we're going to use "memory-backend-memfd" RAM backend for such VMs, and we don't want to lose THP. So align FD-backed RAM blocks to QEMU_VMALLOC_ALIGN on all hosts. Nothing changes for hugetlbfs-backed RAM, whose page size is at least 2M already. Measured on a 2G guest with a vfio-pci NIC, memory-backend-memfd with share=on, and shmem_enabled=advise: before after mapping offset 0x1ff000 0x0 ShmemPmdMapped 0 kB 2097152 kB Signed-off-by: Andrey Drobyshev --- system/physmem.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/system/physmem.c b/system/physmem.c index 6f89232d257..ae5aa534c60 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -1476,11 +1476,14 @@ static void *file_ram_alloc(RAMBlock *block, return NULL; } block->mr->align = MAX(block->page_size, block->mr->align); -#if defined(__s390x__) - if (kvm_enabled()) { - block->mr->align = MAX(block->mr->align, QEMU_VMALLOC_ALIGN); - } -#endif + + /* + * Align like anonymous RAM (qemu_anon_ram_alloc), so that shmem-backed + * RAM (memfd, tmpfs files) is eligible for THP. + * + * On s390x KVM this alignment is required. + */ + block->mr->align = MAX(block->mr->align, QEMU_VMALLOC_ALIGN); if (memory < block->page_size) { error_setg(errp, "memory size 0x" RAM_ADDR_FMT " must be equal to " -- 2.47.1