From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023097.outbound.protection.outlook.com [40.107.159.97]) by lore.virtuozzo.com (Postfix) with ESMTPS id B107080B9D for ; Tue, 20 Oct 2026 16:31:00 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aGzA1cx72dEecYsnqq3u6i7Jk59OsVvDYPa+yPGXXdwhRoFlIwtn74DvaB2nxDYVHS21ue4+NtLDqTg1HhGiJiBYxl+NRrzBFPZxYd+JXfK6Dbfxex/l7gE6VpUNyGb3oE50nSWki4wfriLiqu9OTbyHpd1HK6qHb16M9EPOSiJtXCU3FrpGtKiw8Yz8MQp26+9SoRvNj4ObLhoqX6tm0WvLhOsseEKZcwU7nWHGX6qcn8rVWsOyo8xrW/r4KttL2x5T9999NQBmLmrTvE6yTiZp6AamNKaDjVdpueNXgibNlDxvEIwPPtnTQsJdXsZKPImmj75z1PkfnZ1H+Y2Whg== 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=HhxceLDQPAwCykpVxnCkr5dElj2rOiSTycWvqE3KGrU=; b=u1muXBX3XAHaSbth7rkpypEHSreVS6kJz5WKxljXNAZYALNDA4L4NnHkWNnQ0Umrc/g3wlmP4E4gI6r81mb0B6yO0OsNTlHTg0zYo+TtWctQvsIhpZVoVrJgGdJWc8qH5zmpBZvThd4M0j4IaFckUPAm13GShDfS4LKRbT+fr4uy+2icl1jpIt84i6yePV6LpRa6m14O8HlNeHriYbWwx/3qRzUhP50RS79xj53UEhvk7d4OUbAvru99GhTQLCeF/T1IWCE+3MFjDyIKK+E/QUs1Xf/atphV+TULIkQhGwg0GSYFQ/TBRd5DDcXzmY5nzrlM2saG+mHDMB7fr5Ehpw== 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=HhxceLDQPAwCykpVxnCkr5dElj2rOiSTycWvqE3KGrU=; b=NKh6vjLsZlMV+d8iA/XP5b6pmNp1k10qGGO4+KRMYQEpV6gmU9A/zrzwz23fc0BZoZy8/HNkqlKYwbVzicFbmVQrDKOwWalvU3kMoaAB4x1/mhQjGmWNNbWmakEug6bq0vMufVl1sBOJLRQ7+2JOvF9kwtDcC8Tn7VkI7Y7smkvLu7LAV8ClY2me0ebQjzIy3UzNdQ4asdSBwPoDgVwJD8wYLDTKioq/hCycrUIm6KWTyEjvOKYA1D2mYpN7UG0nVm9px+spaOOJtzssvoiG69adgwl67538DmWWdnlaN+oVakZpaNwYVxEeY1AUrXQ9Gvbb2rT8UgRE6cvLqhE4yQ== 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 AS4PR08MB7553.eurprd08.prod.outlook.com (2603:10a6:20b:4fb::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.15; Tue, 20 Oct 2026 16:30:57 +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.0546.012; Tue, 20 Oct 2026 16:30:57 +0000 From: Andrey Drobyshev Date: Tue, 20 Oct 2026 19:30:53 +0300 Subject: [PATCH QEMU HCI-8.1 v4 13/31] migration: ensure APIC is loaded prior to VFIO PCI devices Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261020-vfio_v1-v4-13-83a5668230e5@virtuozzo.com> References: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> In-Reply-To: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0056.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34b::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_|AS4PR08MB7553:EE_ X-MS-Office365-Filtering-Correlation-Id: 14164bf5-8979-4c25-fd1d-08df2ec783cd X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|376014|52116014|366016|5113699003|10067099003|22082099003|18002099003|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: gNG9TOMSmRh0WaGwpo/CGcHH19OvpuqUADTG/swX226kUjquPhEm/Xgl3q/Ib+1jFKvgmSNWhwuM7t1xy8LnciH2Bcbii1bKKk3BgTP2OrxcadCp8P9qpLpQIzJDt42Vdc++8nUm1yEjPJvsV4oeqSvirMU5RCJ/O6dvKJObXEFUbjmKtubtcvQNCJ4+N/VP5AHTeksDUbzGbeqoCuyA61JXatRwTBedhBWQu2HX1U7mENmhxiCaaedukZweYNc74peDnnCKzT7N4f+EhQ0XzMA+oX1skKM3BHPi/fGDZO4rNunuiRMvKm7d1oXZW/obF+25rtRZBntVROO2XHCeLEgbulYVtNHMMcDNtPKXSavqWJYm7yFtQ0n4+1CrYsQ5UD5ytuAqXdAXweEVHi2Fb3XjNnUUFYTmBzIGUfs1whqqb19Ot9/FveeHBmRdnKbvuwlMwXHHcZysb/Uk3WhKOHxgDSu9o8/qGpk5f0FDUfTtflMHTJ7v7eRjJMMAISlSFB3DO8z3buXghl0D8axUYQPTJDBCcchn0CYrhWVc33qLxhsa/L9NZDsBNkbdW0eFij7BVNdmsypaoyEf45KSYAEO9qazVZph/csmVaxKAX6l4BhPUu640y2IFXd1IAZHI4PfIqElYM+C1dEDQVxsE3NaPqR/6LQ2ojjWKKWCmyQ= 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)(23010399003)(1800799024)(376014)(52116014)(366016)(5113699003)(10067099003)(22082099003)(18002099003)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WG9Hd3RLSG5zMVRkM1c5NmtnMzFOMDlaM3U1TEt2akJHc2szRGYrb0VpcWdw?= =?utf-8?B?UWFUWkNxeTQyV1JzM08yaTBsNkFBdGNSWUMzMWxweXkxNlM2UWJoSElZOGVS?= =?utf-8?B?VVJLOGR5aklrOFUva1BXbmp0a0pVYzZvaC81blc3WFZ4bEtZckljcm9QQkc0?= =?utf-8?B?NE1RMCtBNGtWSzhjMldjMHR5bGRJejJiVy90VTRtRmpDU3Nra0xwaWhSb2pn?= =?utf-8?B?dFdjbkppeGNaMklaY242VzBTK1BjRi8xRjlXT1grejN0MWwwdStydzh6Smdp?= =?utf-8?B?clFiUVdJZUpJblhZZnc5MXNUL3g4bUpPRnJwQW90L1ZISzhBQjdIbG1IdTQw?= =?utf-8?B?cEczMUZBTW16eVZ1T2NGTDE4Ry9WZTY2NFp1bllLOTRaRnBOUnNyZ3dpZVFm?= =?utf-8?B?QXcwV0FZUllmcm10d2I5MlVaTG0vWVJhL0JiRW5VcDBVWUNhMXNJUzJuNzNV?= =?utf-8?B?WWhtdWp2VUQ4WVM3NVNyMW1DNllldGhWaUVpcXFTVEQ1ZEhBMXU1Tko5M3VT?= =?utf-8?B?ZWszN2VWODROVXlVVFRLUFlDVmFrUXJkTmtqOFlIMCt3Ym1iaE5OZ2d6YUtu?= =?utf-8?B?Z0NvVmNyNlhZa0gzQmt1V0pqMU5aK2tVR2RnMDNCQzFhMGdoRVh1ZDBIdjlt?= =?utf-8?B?bnkrYnk3L3Y1eWdIQzBZOS9yK1lmOFh6VERnMlJhOGcxaURyVCtlclVhSVNv?= =?utf-8?B?Y3BuS2RiU2VkbG1xQVc0VEdWZTlxZ2I3UWxJOVlDQzZINWI2a3UwOG1qeUl1?= =?utf-8?B?ekJSTG1GeVRzWXgzaUg2RENuOFBVZkorWkZWN1c4eUJXVUdLZlFBNTNDRTho?= =?utf-8?B?OGVFTjBiSDY4UDlFcFdnUTc1WUVqRnREbGlzcFQwenJvd3p5dW1aWVBBQWcx?= =?utf-8?B?QWRWdmYrVGpWNGpGMCsyQjJFR281Y0FCZkx4L3pVZ0RwenNUZFhWaEhMVmxr?= =?utf-8?B?MlVRVzhKck1FZ2E2YTlSTkRFUFhnSkRtcDFVR3B0azhJWVFjZit1Q0dYRUZL?= =?utf-8?B?d0oxUTlQR3dXK1l2VkUwRGZHWndjRFNIN3pzTXlsdXJvSTJ1bjAxRUF5MkR1?= =?utf-8?B?REpjaDE4WjNHMDc1LzlidVlqY0VtRWExOGlDTVp1UHJ6ZXVVekVPRmdPaW1q?= =?utf-8?B?aWRWNmJUaHFhMEozcnNINSt6Z0VSTFg1Z0ZxZndNb3R4aktnVk00c3Ztc3lT?= =?utf-8?B?dCtFSGU4MEJXK3hEeHV2dURONnBhZzFFWkIvV1ZqMWZuMmExSS9yNnB5Y3ht?= =?utf-8?B?VThQeFgycEoyY2xzYmJSNllZbDVodHFNLzhVTmh6UnltYmpPOUVoMm92T2pW?= =?utf-8?B?aEtVQmx6emo2UnNYOU1mcytIay9oQy9qV3AyS3kyT0FDRHRvMVZMcFR6M3dk?= =?utf-8?B?dXUzN0FaNFcrbGRQTlJkSDhDTGxiUDJDZWQxVXpTekFQMER6N2F0a29wSmJx?= =?utf-8?B?Mm0xWnczTUhCWGhNV1c4d2VOUlBqQUtyRXpJTjRzMEhBNHJuTjVZTGlOZmF1?= =?utf-8?B?VjU4ZzdGd0FCMENEOFNiYjF5TytmRlFhbkY5WWpsbm1Zd1NkNEE2aVJrY29p?= =?utf-8?B?S2pNb0lCK0liL1djOFl4cW05L3Z3T1JzUHl5eVFUak1zZDYzMDYzQWVtOVpa?= =?utf-8?B?ZmdaQStRcEVqMFRnRHBDeWtOM00ycnB5MXRCNUZCeWRYM1YwQ2J5TlA1VU9m?= =?utf-8?B?VFJzazhVZTNESGZSZVo3TWNWclpvc0hwNUJKTWlIaUdUZHNIYUhlTzBiUjFZ?= =?utf-8?B?QzZWTllsVllheUJ1Qjh1d3RUSE4zQjFLeUNGNzZIYytubnBLbEZyQ0lyQXBq?= =?utf-8?B?TTN4LzF6a29CSXRURVp1UGtzTnJHcmVTUTFQOHdwcERvM0JEVFdrd1ZaTFVC?= =?utf-8?B?eWN0MVNva0ozL215dm1vSDI1ZzZrRklvY1p3Y1FMYXdhRGp5M0hIM2hLcm5v?= =?utf-8?B?WURSNDZrb2xMcVlIelZZU1pqT2QzM0gvM3ZIMnRIWXZkRUFiTzdCcGFxMm9j?= =?utf-8?B?aHJnRUtWOE1leEhFR0ZPL3ExcER4Umk5U00yNDRjOVVHUHVTeVg0Z2xuTHEy?= =?utf-8?B?aFVRcTBab1N0SEdhbXpYQlNuNmZwSm5DTCtWcEh0Z25pS1pFTWhRRlpWQmph?= =?utf-8?B?Q1JnM21pNEN3QTZJdjRzMFk1cjI4eU0wSUpTbEw5OTYwQWYrK1JKZFB4ckpx?= =?utf-8?B?ZURTWXI5L0VVcDlUTlp3YlJIeHhBZnRGenlFbmdQdEZ3L3dzSUJpLzVnOWJH?= =?utf-8?B?M1hSY2MrbStlRUQwY3hBS29wM2VyRUtEUFJrTWYybTdJcDNFMWpyY3lJcjc5?= =?utf-8?B?WFFjU3FrNXBoQXJXWUs4eFJBQWZ4SnlqczVpM0NyazFoY0JPc1lSd0lZMWVH?= =?utf-8?Q?SoarCnwJODW4uRa8=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 14164bf5-8979-4c25-fd1d-08df2ec783cd X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2026 16:30:55.5254 (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: Eo/LQTKSkg4M/EVlIpr3CYHoQ6ovH2ax9IqDdc4GSpUoulHE+TYwHvoML5KVOmfYz/9d21MRYC+NiuXweujpyaTi9G1iwf7CbjDJ3uuV07w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7553 From: Yanfei Xu The load procedure of VFIO PCI devices involves setting up IRT for each VFIO PCI devices. This requires determining whether an interrupt is single-destination interrupt to decide between Posted Interrupt(PI) or remapping mode for the IRTE. However, determining this may require accessing the VM's APIC registers. For example: ioctl(vbasedev->fd, VFIO_DEVICE_SET_IRQS, irqs) ... kvm_arch_irq_bypass_add_producer kvm_x86_call(pi_update_irte) vmx_pi_update_irte kvm_intr_is_single_vcpu If the LAPIC has not been loaded yet, interrupts will use remapping mode. To prevent the fallback of interrupt mode, keep APIC is always loaded prior to VFIO PCI devices. andrey.drobyshev: This commit is cherry-picked as-is, with no modifications, from the upstream commit d943cef76090. Signed-off-by: Yicong Shen Signed-off-by: Yanfei Xu Reviewed-by: Peter Xu Link: https://lore.kernel.org/r/20250818131127.1021648-1-yanfei.xu@bytedance.com Signed-off-by: Peter Xu --- hw/intc/apic_common.c | 1 + include/migration/vmstate.h | 1 + 2 files changed, 2 insertions(+) diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index 37a7a7019d3..394fe020134 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -379,6 +379,7 @@ static const VMStateDescription vmstate_apic_common = { .pre_load = apic_pre_load, .pre_save = apic_dispatch_pre_save, .post_load = apic_dispatch_post_load, + .priority = MIG_PRI_APIC, .fields = (const VMStateField[]) { VMSTATE_UINT32(apicbase, APICCommonState), VMSTATE_UINT8(id, APICCommonState), diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 6839117be87..c3d156c514f 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -163,6 +163,7 @@ typedef enum { MIG_PRI_IOMMU, /* Must happen before PCI devices */ MIG_PRI_PCI_BUS, /* Must happen before IOMMU */ MIG_PRI_VIRTIO_MEM, /* Must happen before IOMMU */ + MIG_PRI_APIC, /* Must happen before PCI devices */ MIG_PRI_GICV3_ITS, /* Must happen before PCI devices */ MIG_PRI_GICV3, /* Must happen before the ITS */ MIG_PRI_MAX, -- 2.47.1