From nobody Sun Feb 8 14:31:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1769682936; cv=pass; d=zohomail.com; s=zohoarc; b=K2KBRI0jkxVyF9d1bEulLQxP6KdNkL0xOvvjYtCdAQ1Ym74JHqXVVVg3suCg2udCl5PYa1nXq+D67F+/u25TZ8AftH+3JwJ2MtcUVwMfOj1eQdXEIfMiRC/Y4GEXG4HmqSk3qIDgCnnI1BgbHGghhHN0wzQ/QNvFauFuvA5t9Ss= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769682936; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JoItmWmZ+WtBN1W1XXZXnEkKeDyXEybGW5HPOL09QWg=; b=ksQQlhhTY/o0gNe20wZlN0h55eSHdCovb4of0D3JxFLqMte1JDS5khKENT6hfElSs7RDbPRGcEvq8MZi7Gkw8kib7/hE23gVyD06HsyGSVc5GFXzOJZx4aLLKEHBoGSdN+v6sKJmhO6OAeAFyEBf4ITyr3Fb3tAudydclmmg/pg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1769682936659179.65743821236902; Thu, 29 Jan 2026 02:35:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vlPGy-0002wE-Fo; Thu, 29 Jan 2026 05:29:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vlPGu-0002vh-Df for qemu-devel@nongnu.org; Thu, 29 Jan 2026 05:29:08 -0500 Received: from mail-southcentralusazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c10d::3] helo=SN4PR0501CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vlPGr-0000cl-FA for qemu-devel@nongnu.org; Thu, 29 Jan 2026 05:29:07 -0500 Received: from PH7P223CA0003.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:338::34) by MN0PR12MB5762.namprd12.prod.outlook.com (2603:10b6:208:375::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.7; Thu, 29 Jan 2026 10:28:58 +0000 Received: from SN1PEPF000397B0.namprd05.prod.outlook.com (2603:10b6:510:338:cafe::87) by PH7P223CA0003.outlook.office365.com (2603:10b6:510:338::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.10 via Frontend Transport; Thu, 29 Jan 2026 10:28:56 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SN1PEPF000397B0.mail.protection.outlook.com (10.167.248.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3 via Frontend Transport; Thu, 29 Jan 2026 10:28:57 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 29 Jan 2026 04:28:54 -0600 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VIyiRvOtRlwjyJmXXTgh2nhjRFO47QfRKIJBKbuA5wA6pVsYHKj/AmBJ59aAgWmi7/221B7Q8paBMmR4my1tLNdwxX/ZrboRzt79Q1VnQrdt8PHgV9mhPQfRyiK/dL9K1iAQfIJvapB0eHFbQ6EaVgo3Y8SOc/2JhWIXqVjTP1eCGCPC/PcCUTltaa0Di/zY3/V9JBeM/ThrVj+/9THu6LDNurpcRgDkAa2WVUilxe0GLRMPMPB2AOLW3fXi8mnp8vRyDiV2zIet2kkOMUnQTq1uyePsu4YOWoomcoUtLMDJLjCegOuEhpC0a9fnJ4VUsIdF8KWZaqW7bxE7/0ICJQ== 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=JoItmWmZ+WtBN1W1XXZXnEkKeDyXEybGW5HPOL09QWg=; b=JYX0igf5cMwFXbPizxeK0OgzUy4JoC76w2NKn1kBW+MdNg/COjD2VQW/7MFsdA68c6nzGhI8Q4NikeAssPawEoa83KlJ5yzA1hNXgvbPniQTeQQ5jjrxMUROVYjke4Jmvv0YIQjyekjqhQ7Wd6an2ncm03IYk20zTOG63pmI9qCQN70gBbuqYuqcL2VuFyOxRWF+lRzxY/c7/GexQ3TwPZUsVaW9SuzNqXZypXmIqaW9Jdj8HHEAYxYxEInt4yphmIFomRGPhmmzEiJ/VFzD/EiiFNtfkuVnYmFKVPaAgKPwyRUnhHdhk6jpsDgLA6jmvkWHuaRcyS6KTQJcathFrQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JoItmWmZ+WtBN1W1XXZXnEkKeDyXEybGW5HPOL09QWg=; b=ihXL9iWthKTcVF7b6XaQQ7qnDVjuecVObMeOV6pR4rFvcVQja+NuEttWuyOsXv4pypHKwxL/fllF43FZr3mnePc7/lnsSW6G4uXNrn/kWbVDdk6vIqN0HW+TzC/JGxBAQzEM0lj0YHbsObVFTbMMSKin1mzH9ECgHaSuzpVBHsg= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , , Sairaj Kodilkar Subject: [PATCH v2 1/3] amd_iommu: Use switch case to determine mmio register name Date: Thu, 29 Jan 2026 15:58:12 +0530 Message-ID: <20260129102814.4488-2-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260129102814.4488-1-sarunkod@amd.com> References: <20260129102814.4488-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B0:EE_|MN0PR12MB5762:EE_ X-MS-Office365-Filtering-Correlation-Id: b4e8d7bb-3c7c-40be-8e58-08de5f2135da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3p4UWZh6OMgyhlsMXlgpxBnNEte0InsoB0iIEWEfOs1f3G+aEPtSLEVf64yS?= =?us-ascii?Q?SUfV6DwIVSmq9qfGw1ctymJONZ8tyljjHfD4G3dxgqgYNHvQ/65at54bJXET?= =?us-ascii?Q?dwpj+vSqEIshRc9ENtQrHAlgo+AHNQdMH1nb+vnlRhJICAe0b7hehUCnz8/Q?= =?us-ascii?Q?8+5HLAsQJo/02f9iAwX/VlyFuHIW9AEMvOiK72R4+nUtecxbA8auhGRvI4d1?= =?us-ascii?Q?U+0jjFl0t+0o+U2JnFl1u3MsYewHUZJDKLR18VEjsfT794vD1gsQVRKkaC24?= =?us-ascii?Q?jIqUc2gT266p3Gw/uGCYUTKN4LEqtENNNlFPE8HIh+xpimwof8nr4HKRrSS/?= =?us-ascii?Q?L/NnDZJNBInFnQczNSULKDg8WNSOxUA3bEmM+4Jm0Cgq13QQCxKoqlJyqCti?= =?us-ascii?Q?qgLfb4eR98nzNx/x/l6eypSwems4VoeSGuU1t3cSPtx2xk5vHK10KvBew8W1?= =?us-ascii?Q?Pno/zFV0XJCGcoDPbiyLopYc6MOtCL9TPSL/JHKmcRt4RHMVHuNca3C0Y84k?= =?us-ascii?Q?R7U2E/TiNYeWS+klACR1kWlRkLCZhDvBM3+mjI5r10O44GfvkT8rnBPxWl4Z?= =?us-ascii?Q?8cPIhjlnlJNo3Mls2XgQ1cCNlklWnKv3Bs6hYVEFz7cqfInmvcJepMkhIQmL?= =?us-ascii?Q?NDk7OVKTTwr6t5Xto+cF0uYNY2TBhJxkVJogyAogUFGk3k0dXnDbrU9haXAp?= =?us-ascii?Q?UkAjc3ygnGCgRzL1UJQI9JY8jBDlTjDBb0Rxeow0IL3KCQI/wVnpg4MA927v?= =?us-ascii?Q?1rCsRSQ4jy2nMoCjdo8m1P1le3po59Uo+hGRv38OuATt4R28B2KF+URMH3T4?= =?us-ascii?Q?PQVuo1U+CTdM3e30SfB4tZFr4xpBKWI9tJJFv9fFK176+Pts1iSzhxf81Ixq?= =?us-ascii?Q?ge5KUpFiaPNWkA5NygGGp1h7ggVoEpT1zyazb7yAIbMJnAFukBcxzmP1DSr1?= =?us-ascii?Q?v2HG1B9WXqBuaCNAUmO7p4vQUaS4RXTaEbhqdQL9Vy8/V09jxJbAtNoqVFcI?= =?us-ascii?Q?3LOLS38DLqFR3Ly24L4KjIVF4mVaxPFzIPT8yPff9EaJb8TTny+YPqti539i?= =?us-ascii?Q?dLoD9hQ7WB8hxi+kTCM6UxQjvszF42LQVa6VgJS9uWCnVztAU5kYUnvDHqay?= =?us-ascii?Q?DcIU9dgVZXWWlPgibBt8Dlw57DIQWuByT4+Q8QeUzjpmUL06xrzMdTZRbQoM?= =?us-ascii?Q?7zlBpo6OK820vafHURQBjNTPyY49N4hAjCGRjsZEJ3b8UrYcb15++7/gdNB1?= =?us-ascii?Q?wVWSWo40ED6JOGF85F2GpJK+LYsCjEqWJeaGe4kKFuMXkWXY4Mo8y+jh5nRY?= =?us-ascii?Q?+/CM1XezG4+iJlm3AtK9lCJJVJP+B4TUIUuaxHnQhybCMoKfuZ4/66ZHKe6M?= =?us-ascii?Q?+xVn1hVDJyV8/RDzeXdSM4tj3rMmCnRsJakSqeIUYU6wbNOPFYMym0sRSDR9?= =?us-ascii?Q?b4xj7nlVsE3DYViHPbKEbA/i3+NMHk9cmKCeWDbmMC9BEWXs8aU3OzHLzVr9?= =?us-ascii?Q?+UYYQj6Th3AjfyqND74IQdWk1RF2IQRaEYCBFVZgIS8PKJenc2MJgJ62fGzs?= =?us-ascii?Q?DCxIyvUb+2sxh6sP4kMOyr3LTLjB8AK79IsZgWtfX+hv0spMQ487wa3TLlGr?= =?us-ascii?Q?93xyaz9oMMf8blLOTguQTkf4F9idG/iWdNtucuIOAyBqfjSISgIZhxCno4kY?= =?us-ascii?Q?Arxbhw=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2026 10:28:57.4861 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b4e8d7bb-3c7c-40be-8e58-08de5f2135da X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5762 Received-SPF: permerror client-ip=2a01:111:f403:c10d::3; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=SN4PR0501CU005.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1769682937489154100 Content-Type: text/plain; charset="utf-8" This makes it easier to add new MMIO registers for tracing and removes the unnecessary complexity introduced by amdvi_mmio_(low/high) array. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Alejandro Jimenez --- hw/i386/amd_iommu.c | 65 +++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 38 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 789e09d6f2bc..62175cc366ac 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -35,28 +35,7 @@ #include "kvm/kvm_i386.h" #include "qemu/iova-tree.h" =20 -/* used AMD-Vi MMIO registers */ -const char *amdvi_mmio_low[] =3D { - "AMDVI_MMIO_DEVTAB_BASE", - "AMDVI_MMIO_CMDBUF_BASE", - "AMDVI_MMIO_EVTLOG_BASE", - "AMDVI_MMIO_CONTROL", - "AMDVI_MMIO_EXCL_BASE", - "AMDVI_MMIO_EXCL_LIMIT", - "AMDVI_MMIO_EXT_FEATURES", - "AMDVI_MMIO_PPR_BASE", - "UNHANDLED" -}; -const char *amdvi_mmio_high[] =3D { - "AMDVI_MMIO_COMMAND_HEAD", - "AMDVI_MMIO_COMMAND_TAIL", - "AMDVI_MMIO_EVTLOG_HEAD", - "AMDVI_MMIO_EVTLOG_TAIL", - "AMDVI_MMIO_STATUS", - "AMDVI_MMIO_PPR_HEAD", - "AMDVI_MMIO_PPR_TAIL", - "UNHANDLED" -}; +#define MMIO_REG_TO_STRING(mmio_reg) case mmio_reg: return #mmio_reg =20 struct AMDVIAddressSpace { PCIBus *bus; /* PCIBus (for bus number) */ @@ -1484,31 +1463,41 @@ static void amdvi_cmdbuf_run(AMDVIState *s) } } =20 -static inline uint8_t amdvi_mmio_get_index(hwaddr addr) -{ - uint8_t index =3D (addr & ~0x2000) / 8; - - if ((addr & 0x2000)) { - /* high table */ - index =3D index >=3D AMDVI_MMIO_REGS_HIGH ? AMDVI_MMIO_REGS_HIGH := index; - } else { - index =3D index >=3D AMDVI_MMIO_REGS_LOW ? AMDVI_MMIO_REGS_LOW : i= ndex; +static inline +const char *amdvi_mmio_get_name(hwaddr addr) +{ + /* Return MMIO names as string literals */ + switch (addr) { + MMIO_REG_TO_STRING(AMDVI_MMIO_DEVICE_TABLE); + MMIO_REG_TO_STRING(AMDVI_MMIO_COMMAND_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_EVENT_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_CONTROL); + MMIO_REG_TO_STRING(AMDVI_MMIO_EXCL_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_EXCL_LIMIT); + MMIO_REG_TO_STRING(AMDVI_MMIO_EXT_FEATURES); + MMIO_REG_TO_STRING(AMDVI_MMIO_COMMAND_HEAD); + MMIO_REG_TO_STRING(AMDVI_MMIO_COMMAND_TAIL); + MMIO_REG_TO_STRING(AMDVI_MMIO_EVENT_HEAD); + MMIO_REG_TO_STRING(AMDVI_MMIO_EVENT_TAIL); + MMIO_REG_TO_STRING(AMDVI_MMIO_STATUS); + MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_BASE); + MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_HEAD); + MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_TAIL); + default: + return "UNHANDLED"; } - - return index; } =20 static void amdvi_mmio_trace_read(hwaddr addr, unsigned size) { - uint8_t index =3D amdvi_mmio_get_index(addr); - trace_amdvi_mmio_read(amdvi_mmio_low[index], addr, size, addr & ~0x07); + const char *mmio_name =3D amdvi_mmio_get_name(addr); + trace_amdvi_mmio_read(mmio_name, addr, size, addr & ~0x07); } =20 static void amdvi_mmio_trace_write(hwaddr addr, unsigned size, uint64_t va= l) { - uint8_t index =3D amdvi_mmio_get_index(addr); - trace_amdvi_mmio_write(amdvi_mmio_low[index], addr, size, val, - addr & ~0x07); + const char *mmio_name =3D amdvi_mmio_get_name(addr); + trace_amdvi_mmio_write(mmio_name, addr, size, val, addr & ~0x07); } =20 static uint64_t amdvi_mmio_read(void *opaque, hwaddr addr, unsigned size) --=20 2.34.1 From nobody Sun Feb 8 14:31:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1769682970; cv=pass; d=zohomail.com; s=zohoarc; b=fujlQGTlLmKxwLekR8c2PzVG0S+K5ETEb0KUkc44mw5FG/geJ2xxBhEHgSe+b1bfkQmXimXY/sNkpzCoXjZ9vebH3ZTXopdi8IpYqSBNGMKHL+xyDgrfebSeosiqidfZH0H4j3xwZafl4odMDdbQ37G3CUM6STeH3NnG0zzZdtY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769682970; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Q0Gvs0z8/xvF6piE3zVN60oRSMV4pYrKNjMlazVF4wI=; b=YTkURuwwkPPrf7s9i6qGD3BkcK9c/T9wtVN8ciXaqyUsFb2WHQEJMJhWXC62RzRAVgfdtupLR0jTThz8dsywotq9j7f06FFFiefYgLwWMby2UU8LVtLj0vdd5TrUM2ZD3Jmd5L32giBOl5gyhFgJ3JFFjvPy5P1Co/K6GOwfWpI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1769682970264792.5725446946926; Thu, 29 Jan 2026 02:36:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vlPHE-00030E-Kx; Thu, 29 Jan 2026 05:29:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vlPHC-0002zY-AS for qemu-devel@nongnu.org; Thu, 29 Jan 2026 05:29:26 -0500 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] helo=PH7PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vlPH8-0000jT-Un for qemu-devel@nongnu.org; Thu, 29 Jan 2026 05:29:25 -0500 Received: from SA9PR11CA0022.namprd11.prod.outlook.com (2603:10b6:806:6e::27) by DM4PR12MB8523.namprd12.prod.outlook.com (2603:10b6:8:18e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.15; Thu, 29 Jan 2026 10:29:14 +0000 Received: from SN1PEPF000397B4.namprd05.prod.outlook.com (2603:10b6:806:6e:cafe::2c) by SA9PR11CA0022.outlook.office365.com (2603:10b6:806:6e::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.7 via Frontend Transport; Thu, 29 Jan 2026 10:29:02 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SN1PEPF000397B4.mail.protection.outlook.com (10.167.248.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3 via Frontend Transport; Thu, 29 Jan 2026 10:29:13 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 29 Jan 2026 04:29:10 -0600 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j/+fYEIt1oNqF0SsjBZ3LMax+wzKBeqsmJh4jPYVDZXu0yJB6UhsVfE/RewZOHssUBq+B1U4ubtSVm+qgLJJtYK1xYnpqyRk0fzyUbR1UiNuaeaLy136+1esUYPNNrwUM25f+gEohAa0M8e7NsFIqhaU/cXRwpWnaUz9iybPu0V5WW9SR5gqhBEua7KPqFg+dTzhbXyHzgPBIPi51F3mGLe5BXtl89epov05Il07BMMxKUGJwahcpbgJX3L4Ib4i7/llX37frVO5DS5D5HPBLqkr6SC4BZL/tQTnsBvZ7pXtB2/05CDclIVLDazRxZbetwr7shQGmIUtt3NA8M8aHA== 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=Q0Gvs0z8/xvF6piE3zVN60oRSMV4pYrKNjMlazVF4wI=; b=RqVLN4DZ5+DuNT4KtyOaZWOApEOVvbrq68gto4TFCJaDq3i35EPZHCm9hqc9yO/OV2g7mEHe9gle6VN/MHfOFpCKEbsvk962iOyJ1xgtEGtKDnnFuDZqV9M52R6ZIT3t4441z/zcN/nNCwGiNo9J9sQqDOqvg0BVNWH34H0l1c2Q379QWrdarKd4fUsAGC/t0huPZUazbCA+9rRaRbGVT3T0JDuxmss3TGN6upwxYVioqZRzwClOkm1Y4OxvpUzdX28d6oNXC+nwSn14RFdHSdd1E/esPqUXx0QZVJ96EX6va87ZtHL4AnR6jXZQRBWMhnxR7WhXfHyQm+j3cZAzrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q0Gvs0z8/xvF6piE3zVN60oRSMV4pYrKNjMlazVF4wI=; b=xJaCA6Zo99D9PPyXuMcNOB128Q+8Qf21ZEDQP6uJJRZRenqrS+P8jgJsPYLjjD50hWFTX2I4qXQ/oyX+UCfPkY4C7fZVdzuIVjI8Ea7qluUP6lzn3qWAyYe6hlJ6Vx60FT0lnGTdOiHDJC1x156OF7XSfIHOy1DhCd98YWP1prQ= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , , Sairaj Kodilkar Subject: [PATCH v2 2/3] amd_iommu: Turn on XT support only when guest has enabled it Date: Thu, 29 Jan 2026 15:58:13 +0530 Message-ID: <20260129102814.4488-3-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260129102814.4488-1-sarunkod@amd.com> References: <20260129102814.4488-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B4:EE_|DM4PR12MB8523:EE_ X-MS-Office365-Filtering-Correlation-Id: c0dd0897-f3d7-4604-c812-08de5f213f39 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VZisml6Smun5njIVM2AtK5UHiFi0BTDlPcaXZXLXmIIY+KAPHj9GbSO7yupe?= =?us-ascii?Q?uPZMLZH63xz0cVsQA7bVUUZ3YZPVCW7PgVxp0aG9vLAjFXLiusXs5XvnLJIv?= =?us-ascii?Q?xRje/ZHvMbbxfZOjQHsS1LnbFGTWAqB4489k34PelUsrRl9o6tVTpoHPNy1r?= =?us-ascii?Q?kFbmt5KofRWjXe/pIwuZ6DE23WVaCU8NvAX+Qr65dZJllGO0Nr2nu+dFELiM?= =?us-ascii?Q?C6T5GgV0tP/Vn5ynCYegBferXyZHZyDMhHeUkKOpCFvQ7CofNN4YY+4QWsnb?= =?us-ascii?Q?0YMACoxcLFLn23h2FBtLyInzO7OMTJ4jo3z7bT0hHCx2O02KYedQynMML8V8?= =?us-ascii?Q?yTcs62XtMX3vGkHLqATFPDZvtKvutJexmORxJmc7yWk2wk4cijjK1Y8WbR7Y?= =?us-ascii?Q?nOEUJNRAhFcm2H81ExY4pIaTyP9NvHonvY70LNTD9VHbzpCVLHBEV66mMXdF?= =?us-ascii?Q?bCuy+EAvwDB0Ojs/LEUfLwinTw6YknNHfeTSB0Sd0KwVgJUST92jcv2AbpTf?= =?us-ascii?Q?RGtvKs/Gy6u8wZoM7KIi+UIyajmBNco+IzLCaNjKEjukLwkh196mmTlN1rI2?= =?us-ascii?Q?cYsQ2q6yPjmNNWKmb2W1nuuoLBPK5hKVVcVcoc3895MJ+u11ciPSX36sRXa6?= =?us-ascii?Q?838MOlsU/ClVNoqJNM/vsj6tdz+nF0DSH/fpH7ZgXjyNe8xwQTgv/TDpLa/O?= =?us-ascii?Q?C+S392vQ8GQhVPOxHwjkZ3A5vzkbavhSOlglEbK0+qzqMKvP9bOYLsBrGn7Y?= =?us-ascii?Q?N2aQXGeETjHI7OSWu1wqSEXW2Jc7BZP1NwExeO4YIdUCGqsoGvQRFnCg+taX?= =?us-ascii?Q?n2oIJ8ABttOB4bBK+SH5MxdtW6sK3JTwUptnhO+SVsCrsQY9bn/xhqU5bacs?= =?us-ascii?Q?UfbqWGHoiPIK1396gHfa83d8TGj3uljPzmgAOFrnrMOm9ar9Piu80mhr45WB?= =?us-ascii?Q?x78jN1UEXWfxZKB5NwU7L3pTFuQngclVDL7ywUkatoJnF0s1QBhdSq6KUfLL?= =?us-ascii?Q?LdhfhdLHIKIiXal8iCjBf6fFn0VKXyQCF4/MgHxBtpZM8Q7zaRkTYvhnMXO7?= =?us-ascii?Q?hNqoM3lq85kw+Oid5yebmHc7TvsNDt88C+NEbAuMHh157YGpupToyX2pyirP?= =?us-ascii?Q?dHL6793SDmx/7NXp0+gpv8zqmYnLZMnF2iicxWB9wM8M4EJ6ENdSCZBFudfK?= =?us-ascii?Q?9HCUy2WGubOuld/rrsYMZnAIDWqmo0UXGmKgdRjqTTmXanafoq44w9/IJpQm?= =?us-ascii?Q?mEkh7ZCeNQjsw+U2IKx1egcS8GccCGMos7m2N/5ZtiqBXZuxD/tCf1H2yBp4?= =?us-ascii?Q?X8/lNwpqtAG6kXxwT48QyH/AMtgh0PCz+15V8tFuYmCqxWiPPuYVMNLvF8D9?= =?us-ascii?Q?PxGro6ECDYfl/pJoSTv5v8V9bWkkQB5uFLakjYPy+lS9rvIensNTDjgjWcIX?= =?us-ascii?Q?zTxNpMmqrRaS4GkxEPXw7ggpa/rG4scNUpOTJcutECPYuTVtiVDbJRqeZwxS?= =?us-ascii?Q?pINzkdNlXeX6uxfvVU4Z5iW6Cbiz4IlxeR6x+ssbGAJCWCT17W6j6XxRVnKn?= =?us-ascii?Q?z/0F+m/7nl4uNJORTKbDBDfB5/Wes5Hq/uOjf5gybN4X7QLPnjAZzT4M7++Z?= =?us-ascii?Q?BlR1RcmtSueq7uakyaOjnz5KRPP5XsUG8CUqGn5jtRWwNsUjKx9GHeRbJAxm?= =?us-ascii?Q?4enPaA=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2026 10:29:13.1810 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c0dd0897-f3d7-4604-c812-08de5f213f39 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B4.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8523 Received-SPF: permerror client-ip=2a01:111:f403:c107::9; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=PH7PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1769682972198154100 Content-Type: text/plain; charset="utf-8" Current code uses 32 bit cpu destination irrespective of the fact that guest has enabled x2APIC support through control register[XTEn] and completely depends on command line parameter xtsup=3Don. This is not a correct hardware behaviour and can cause problems in the guest which has not enabled XT mode. Introduce new flag "xten", which is enabled when guest writes 1 to the control register bit 50 (XTEn). Also, add a new subsection in `VMStateDescription` for backward compatibility during vm migration. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Alejandro Jimenez --- hw/i386/amd_iommu.c | 21 +++++++++++++++++++-- hw/i386/amd_iommu.h | 4 +++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 62175cc366ac..850d3920a76d 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1535,6 +1535,8 @@ static void amdvi_handle_control_write(AMDVIState *s) s->cmdbuf_enabled =3D s->enabled && !!(control & AMDVI_MMIO_CONTROL_CMDBUFLEN); s->ga_enabled =3D !!(control & AMDVI_MMIO_CONTROL_GAEN); + s->xten =3D !!(control & AMDVI_MMIO_CONTROL_XTEN) && s->xtsup && + s->ga_enabled; =20 /* update the flags depending on the control register */ if (s->cmdbuf_enabled) { @@ -2007,7 +2009,7 @@ static int amdvi_int_remap_ga(AMDVIState *iommu, irq->vector =3D irte.hi.fields.vector; irq->dest_mode =3D irte.lo.fields_remap.dm; irq->redir_hint =3D irte.lo.fields_remap.rq_eoi; - if (iommu->xtsup) { + if (iommu->xten) { irq->dest =3D irte.lo.fields_remap.destination | (irte.hi.fields.destination_hi << 24); } else { @@ -2390,6 +2392,7 @@ static void amdvi_init(AMDVIState *s) s->mmio_enabled =3D false; s->enabled =3D false; s->cmdbuf_enabled =3D false; + s->xten =3D false; =20 /* reset MMIO */ memset(s->mmior, 0, AMDVI_MMIO_SIZE); @@ -2454,6 +2457,16 @@ static void amdvi_sysbus_reset(DeviceState *dev) amdvi_reset_address_translation_all(s); } =20 +static const VMStateDescription vmstate_xt =3D { + .name =3D "amd-iommu-xt", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_BOOL(xten, AMDVIState), + VMSTATE_END_OF_LIST() + } +}; + static const VMStateDescription vmstate_amdvi_sysbus_migratable =3D { .name =3D "amd-iommu", .version_id =3D 1, @@ -2498,7 +2511,11 @@ static const VMStateDescription vmstate_amdvi_sysbus= _migratable =3D { VMSTATE_UINT8_ARRAY(romask, AMDVIState, AMDVI_MMIO_SIZE), VMSTATE_UINT8_ARRAY(w1cmask, AMDVIState, AMDVI_MMIO_SIZE), VMSTATE_END_OF_LIST() - } + }, + .subsections =3D (const VMStateDescription *const []) { + &vmstate_xt, + NULL + } }; =20 static void amdvi_sysbus_realize(DeviceState *dev, Error **errp) diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 302ccca5121f..e9401f3a5c27 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -106,6 +106,7 @@ #define AMDVI_MMIO_CONTROL_COMWAITINTEN (1ULL << 4) #define AMDVI_MMIO_CONTROL_CMDBUFLEN (1ULL << 12) #define AMDVI_MMIO_CONTROL_GAEN (1ULL << 17) +#define AMDVI_MMIO_CONTROL_XTEN (1ULL << 50) =20 /* MMIO status register bits */ #define AMDVI_MMIO_STATUS_CMDBUF_RUN (1 << 4) @@ -418,7 +419,8 @@ struct AMDVIState { =20 /* Interrupt remapping */ bool ga_enabled; - bool xtsup; + bool xtsup; /* xtsup=3Don command line */ + bool xten; /* guest controlled, x2apic mode enabled */ =20 /* DMA address translation */ bool dma_remap; --=20 2.34.1 From nobody Sun Feb 8 14:31:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1769682863; cv=pass; d=zohomail.com; s=zohoarc; b=XpR0/QPzQ8o7IWhKWa4mnTaDkAEKMZiTE6wd33y3y3pYPmbIhoavbkcqaN0Z9d/zR3ClkQpWGdm0DrLKbVoO0ECq/CWlZPeLWvq4nn8/ZVRe8msp3MFdz4Gtjhw67D5qABZkNhkRiWbKPi/PhB7RES78Oogb9zI0IKczEg6Qkd8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1769682863; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zcZw5jVqJCzHw+KDUdQkGoJYNkq7OMNeDidxE08BQR8=; b=KhVj1a0HYwS8cgVe5XmNYsw4ek+b/eHPlt27ITevN3wfRWl0mY25tB3PvB5JsLhuKmgZqC0QfQIJ6dkjC0GyPeJpxFVwqa2E8Z2KQVDq6ZIAkt4JoEqkRG0rKGxdaC8ehRv8PmHAVLlIshNlGtTWl5n6d0i4+VbTtzM7x96K9Lo= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1769682863528485.4966555666939; Thu, 29 Jan 2026 02:34:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vlPHX-00034v-9O; Thu, 29 Jan 2026 05:29:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vlPHT-00033k-HC for qemu-devel@nongnu.org; Thu, 29 Jan 2026 05:29:44 -0500 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vlPHR-0000v6-CD for qemu-devel@nongnu.org; Thu, 29 Jan 2026 05:29:43 -0500 Received: from SN1PR12CA0076.namprd12.prod.outlook.com (2603:10b6:802:20::47) by DS0PR12MB6656.namprd12.prod.outlook.com (2603:10b6:8:d2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.7; Thu, 29 Jan 2026 10:29:34 +0000 Received: from SN1PEPF000397B1.namprd05.prod.outlook.com (2603:10b6:802:20:cafe::39) by SN1PR12CA0076.outlook.office365.com (2603:10b6:802:20::47) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9564.10 via Frontend Transport; Thu, 29 Jan 2026 10:29:31 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SN1PEPF000397B1.mail.protection.outlook.com (10.167.248.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.3 via Frontend Transport; Thu, 29 Jan 2026 10:29:33 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 29 Jan 2026 04:29:30 -0600 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E4HZVIae0BJQmzBp08zyXLy8UQ5zy5ncb1UmUGZOg7XGBXpY7V9hiQIoly2W1ZWpPFStP2kCtH2LbWI0U8871VQRbbvH7WSzQEwi0/orBbru5HyBqFVmw3VVKGFYGSWYooswLMcbRN31ntF+3zm0w5OFNuRvh2012UQTYisIBFcv2+apsYBaLLAB7UKsaKuBiK1zrsVfViLbmMzy7X+PnNU3FnbYz8uAKYAeBFPxF197W+ShFloMREqnZb1nMfrQVLEDzkU62dNXfFuyJRFpHGFNUVahSdcQAHaY59mfXHAQZnFPRdQq89NLQ7BygiLqZ+sA/PcOf0TpYtTQeOKKNw== 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=zcZw5jVqJCzHw+KDUdQkGoJYNkq7OMNeDidxE08BQR8=; b=gXb5ohCFt0I5gBBO1HPIe65rGNSEyn/f0spsEISDxLiBERDlZSJOC+3UDoyyrGHeUiR9uF83fqFJVrMxpbsSisb450TuoHkuqexj4XvEG8Zcb9uiv64JeC/hGC9Xkz7iKn6YfrUQMfg9j5RIlzMU1A9rLuyQZKWM+ZGzd1fHMbZgUdqI18t33mNMndx02af3cPQbMjn9XY42+GabSSib55LOxRRJTbghryBWUUB6SIqJtmOU0PtdDsHFjvSftP9OKWomoLxEG9O4NNl/dApDpHs2QTP1qXan+AD0vIWFhTW5crj+ACf2fy6CEJgg7H618N3+4Clt9AJ9iBo9lnskMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zcZw5jVqJCzHw+KDUdQkGoJYNkq7OMNeDidxE08BQR8=; b=LzzKz5wGRbxdFBa1NbI1+8s+EVQ56iwVu9d2kEG3fc4AM8VgC4nrRdD3fGFwhXmLJpN5zA4Ds4i4spyXBbyEu2DM39uf1Wm9g60ww9Dqqg7SkQ7Uv516RSQSwf8eVH723XMQV25/+ZYv3JupuriNGWds8wCYbsslmShX3BRRw5A= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , , Sairaj Kodilkar Subject: [PATCH v2 3/3] amd_iommu: Generate XT interrupts when xt support is enabled Date: Thu, 29 Jan 2026 15:58:14 +0530 Message-ID: <20260129102814.4488-4-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260129102814.4488-1-sarunkod@amd.com> References: <20260129102814.4488-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B1:EE_|DS0PR12MB6656:EE_ X-MS-Office365-Filtering-Correlation-Id: 69329c15-8f8e-4df2-a6cf-08de5f214b75 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zXdMrkDqBCKxX0K6+08BV62TOShXgmmJ4tE+nQf6sVn39Z8iWLa7B9arA3Cy?= =?us-ascii?Q?aD3nN/PJQe28vUsaw+DRVylZnpJEycoCCYjS0K6ND8O3V2/tItCI1RCVAJn5?= =?us-ascii?Q?LdC/oZ6Cn1vcgFbmINg3a2pSo7eQKSJVtHbLk6apzQ+Fus7N7TtFVzeYBOIN?= =?us-ascii?Q?A+aBJnw2Z6an2HQrqwRI71NtpW2wU9/qpjjofTowYA1ghhAcLqUQZsHFKLkN?= =?us-ascii?Q?b/uZjIVY/eM+Oj/KjsWch+ONrvRRgmgpChaFLaJhQObthub//a/lB87RSZ+0?= =?us-ascii?Q?xPS2cls0xZufivGIV9CmJs16dqhR0fCa9rN1BEwZvnFgqH3UxEoPaj9AKFEr?= =?us-ascii?Q?EIHokilXR4bKLf2XL82IgGhM258WRjouAan7boCf5jVcw6lE3y0w8xo12JCY?= =?us-ascii?Q?ruTpYYyoeTIXbVGh4dCscP1SE+XfQxze2VPj3fRxun6ZzJdpB1RBuyoxTv8h?= =?us-ascii?Q?cTWKPydit8SN4nSyusMnDaXPZ28Li3CcH6FU/C3cgFolnBfM8dK7b4qJtj5K?= =?us-ascii?Q?ao1ZDcrU5BwmiyojlhG+nxG4V3RQIJduOhXqYloHwWqNpgL/uUmppoqTwbQz?= =?us-ascii?Q?EEMDngR0z1+MQkxF4uSHYsgsAbet3Q2hzs37lb0EOcZW8T0IjqSKDCHzYVxx?= =?us-ascii?Q?C/w0413gtOeI6llWSSYYbMVoTRBYBmDhxRrXfhjZaYLghc1GkbVRqvMVkqJG?= =?us-ascii?Q?d+cHjMLJANpqlig6WMwRmLt9hoZVl58e6O07twxrt2BxZEhBWf6VNJitDlN3?= =?us-ascii?Q?ZagykG3Fu4xBwMyUJK6Hr6/rvep6KAOgJITYQNHItwjjzQOUDI5u6ur2bB+/?= =?us-ascii?Q?JcYuZN9aixvoOAafjgOg9/OA00IVBoj+Ph7g7nbLauXbIvoU5elRceK9MUJn?= =?us-ascii?Q?JbW/FcNEmM/imkLTXg396wvRwW9wGn5HRkNF9PSmuQX/c9fZvm/Q1Ajtd9Rn?= =?us-ascii?Q?qgUyS5snviJUoak95Ok8536PHjXrlvTvyXN+SOSD6ccN3Ilpy+H2VpHJEKmq?= =?us-ascii?Q?GLm43Wc8sUyEnCptMnr87gcAu5//K6H5F8g/AKwRHA5FJrsAeTUojgOqrGJH?= =?us-ascii?Q?Lv8uwQURIIvd+QrRCxPu1DoUtKh1y7lJv8cPVKTX71MbNRSWm2HrKUQQht1B?= =?us-ascii?Q?6+zznL/xsR2orjkG06SPMyjMojtCfw7xSW1xta6dumQTzpzyEVPvPdfsPKfG?= =?us-ascii?Q?hv1YWAQcIpezibRkn1v4YJ7SdslxE+LFnVv6PeKggNcdzAntTrxbxFzocyeS?= =?us-ascii?Q?TxlSUa1kkTk6nKmDA/yYi/VrOt8DfDhuU28f3XD+KDtNB5dyD49WoalyB+CD?= =?us-ascii?Q?eDc+8EROztc8YslLGMqqHK96JS+nPIBvB03432iYtfKEOOEg7bAK9oHiOc57?= =?us-ascii?Q?rx/SYjiDJ1XdxOLW6aKVeWANeLlvjrD+/ovK3QVvqMj/FoON8QhC1hBOlNFn?= =?us-ascii?Q?4XnicTUUv2Puktq7wwUBfKsAHMaP31HdDpEUACuE7Nd3mGeD+zOkYK/j9rOK?= =?us-ascii?Q?mFUSbcWZqa9f4oMqSypP2yhZrOiwnGc4snIIjgE0J6l6R6Qard33B0683Xjw?= =?us-ascii?Q?07YPceln5X7DRhLmj9K9Q4pQfgwEifcCL7p4ZQE2RfPHp6dZatwjbfmlL2Lm?= =?us-ascii?Q?ey90LfGjlyLNfWr+3yfXSpOPh0ReyrdqJyYPflIMk15Z2Yw6o6L4yY/CesvR?= =?us-ascii?Q?/b+xXw=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(376014)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2026 10:29:33.7033 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 69329c15-8f8e-4df2-a6cf-08de5f214b75 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6656 Received-SPF: permerror client-ip=2a01:111:f403:c107::3; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1769682866455154100 Content-Type: text/plain; charset="utf-8" When MMIO 0x18[IntCapXTEn]=3D1, interrupts originating from the IOMMU itsel= f are sent based on the programming in XT IOMMU Interrupt Control Registers in MM= IO 0x170-0x180 instead of the programming in the IOMMU's MSI capability regist= ers. The guest programs these registers with appropriate vector and destination ID instead of writing to PCI MSI capability. Current AMD vIOMMU is capable of generating interrupts only through PCI MSI capability and does not care about xt mode. Because of this AMD vIOMMU cannot generate event log interrupts using XT event log register (0x170) when the guest has enabled xt mode. Introduce a new flag "intcapxten" which is set when guest writes control register [IntCapXTEn] (bit 51) and use vector and destination field in the XT MMIO register (0x170) to support XT mode. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Alejandro Jimenez --- hw/i386/amd_iommu.c | 43 +++++++++++++++++++++++++++++++++++++------ hw/i386/amd_iommu.h | 17 +++++++++++++++++ hw/i386/trace-events | 1 + 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 850d3920a76d..742ef5d42561 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -194,18 +194,38 @@ static void amdvi_assign_andq(AMDVIState *s, hwaddr a= ddr, uint64_t val) amdvi_writeq_raw(s, addr, amdvi_readq(s, addr) & val); } =20 +static void amdvi_build_xt_msi_msg(AMDVIState *s, MSIMessage *msg) +{ + union mmio_xt_intr xt_reg; + struct X86IOMMUIrq irq; + + xt_reg.val =3D amdvi_readq(s, AMDVI_MMIO_XT_GEN_INTR); + + irq.vector =3D xt_reg.vector; + irq.delivery_mode =3D xt_reg.delivery_mode; + irq.dest_mode =3D xt_reg.destination_mode; + irq.dest =3D (xt_reg.destination_hi << 24) | xt_reg.destination_lo; + irq.trigger_mode =3D 0; + irq.redir_hint =3D 0; + + x86_iommu_irq_to_msi_message(&irq, msg); +} + static void amdvi_generate_msi_interrupt(AMDVIState *s) { MSIMessage msg =3D {}; - MemTxAttrs attrs =3D { - .requester_id =3D pci_requester_id(&s->pci->dev) - }; =20 - if (msi_enabled(&s->pci->dev)) { + if (s->intcapxten) { + trace_amdvi_generate_msi_interrupt("XT GEN"); + amdvi_build_xt_msi_msg(s, &msg); + } else if (msi_enabled(&s->pci->dev)) { + trace_amdvi_generate_msi_interrupt("MSI"); msg =3D msi_get_message(&s->pci->dev, 0); - address_space_stl_le(&address_space_memory, msg.address, msg.data, - attrs, NULL); + } else { + trace_amdvi_generate_msi_interrupt("NO MSI"); + return; } + apic_get_class(NULL)->send_msi(&msg); } =20 static uint32_t get_next_eventlog_entry(AMDVIState *s) @@ -1483,6 +1503,7 @@ const char *amdvi_mmio_get_name(hwaddr addr) MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_BASE); MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_HEAD); MMIO_REG_TO_STRING(AMDVI_MMIO_PPR_TAIL); + MMIO_REG_TO_STRING(AMDVI_MMIO_XT_GEN_INTR); default: return "UNHANDLED"; } @@ -1537,6 +1558,11 @@ static void amdvi_handle_control_write(AMDVIState *s) s->ga_enabled =3D !!(control & AMDVI_MMIO_CONTROL_GAEN); s->xten =3D !!(control & AMDVI_MMIO_CONTROL_XTEN) && s->xtsup && s->ga_enabled; + /* + * intcapxten does not depend on xten flag because IOMMU spec does not + * specify any dependency between these two flags + */ + s->intcapxten =3D !!(control & AMDVI_MMIO_CONTROL_INTCAPXTEN) && s->xt= sup; =20 /* update the flags depending on the control register */ if (s->cmdbuf_enabled) { @@ -1743,6 +1769,9 @@ static void amdvi_mmio_write(void *opaque, hwaddr add= r, uint64_t val, case AMDVI_MMIO_STATUS: amdvi_mmio_reg_write(s, size, val, addr); break; + case AMDVI_MMIO_XT_GEN_INTR: + amdvi_mmio_reg_write(s, size, val, addr); + break; } } =20 @@ -2393,6 +2422,7 @@ static void amdvi_init(AMDVIState *s) s->enabled =3D false; s->cmdbuf_enabled =3D false; s->xten =3D false; + s->intcapxten =3D false; =20 /* reset MMIO */ memset(s->mmior, 0, AMDVI_MMIO_SIZE); @@ -2463,6 +2493,7 @@ static const VMStateDescription vmstate_xt =3D { .minimum_version_id =3D 1, .fields =3D (VMStateField[]) { VMSTATE_BOOL(xten, AMDVIState), + VMSTATE_BOOL(intcapxten, AMDVIState), VMSTATE_END_OF_LIST() } }; diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index e9401f3a5c27..886814770276 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -57,6 +57,7 @@ #define AMDVI_MMIO_EXCL_BASE 0x0020 #define AMDVI_MMIO_EXCL_LIMIT 0x0028 #define AMDVI_MMIO_EXT_FEATURES 0x0030 +#define AMDVI_MMIO_XT_GEN_INTR 0x0170 #define AMDVI_MMIO_COMMAND_HEAD 0x2000 #define AMDVI_MMIO_COMMAND_TAIL 0x2008 #define AMDVI_MMIO_EVENT_HEAD 0x2010 @@ -107,6 +108,7 @@ #define AMDVI_MMIO_CONTROL_CMDBUFLEN (1ULL << 12) #define AMDVI_MMIO_CONTROL_GAEN (1ULL << 17) #define AMDVI_MMIO_CONTROL_XTEN (1ULL << 50) +#define AMDVI_MMIO_CONTROL_INTCAPXTEN (1ULL << 51) =20 /* MMIO status register bits */ #define AMDVI_MMIO_STATUS_CMDBUF_RUN (1 << 4) @@ -343,6 +345,20 @@ struct irte_ga { union irte_ga_hi hi; }; =20 +union mmio_xt_intr { + uint64_t val; + struct { + uint64_t rsvd_1:2, + destination_mode:1, + rsvd_2:5, + destination_lo:24, + vector:8, + delivery_mode:1, + rsvd_3:15, + destination_hi:8; + }; +}; + #define TYPE_AMD_IOMMU_DEVICE "amd-iommu" OBJECT_DECLARE_SIMPLE_TYPE(AMDVIState, AMD_IOMMU_DEVICE) =20 @@ -421,6 +437,7 @@ struct AMDVIState { bool ga_enabled; bool xtsup; /* xtsup=3Don command line */ bool xten; /* guest controlled, x2apic mode enabled */ + bool intcapxten; /* guest controlled, IOMMU x2apic interrupts enabled = */ =20 /* DMA address translation */ bool dma_remap; diff --git a/hw/i386/trace-events b/hw/i386/trace-events index 5fa5e93b68dc..a1dfade20f18 100644 --- a/hw/i386/trace-events +++ b/hw/i386/trace-events @@ -118,6 +118,7 @@ amdvi_ir_intctl(uint8_t val) "int_ctl 0x%"PRIx8 amdvi_ir_target_abort(const char *str) "%s" amdvi_ir_delivery_mode(const char *str) "%s" amdvi_ir_irte_ga_val(uint64_t hi, uint64_t lo) "hi 0x%"PRIx64" lo 0x%"PRIx= 64 +amdvi_generate_msi_interrupt(const char *str) "Mode: %s" =20 # vmport.c vmport_register(unsigned char command, void *func, void *opaque) "command:= 0x%02x func: %p opaque: %p" --=20 2.34.1