From nobody Sat Nov 15 09:50:13 2025 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=1752651241; cv=pass; d=zohomail.com; s=zohoarc; b=FVS7/a/wKbRQuajRdVjmQWQQCTNKrffGg30nVH3qlfwIUu8vzOxS/OK7DCdi5HlHkmiCLkmpuHLxHgUi0aXaDb4lWIN9dght8W3gDu0WUzuzZ2r9jojstgUc09BWZ+6TdLMCpGBIQSMpmiGaacLw5TLUrYmw9H+5W5FulCATIFU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651241; 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=XH8hnZY7PY4+xVU9HwCbZyA5htoi0iRO9EEvKGFP4Ws=; b=AXGebD7O2y9Hn2bhwIu1l2BHLutn6iBG1jXe9qTDzMC8taYicqBsUzJdHONN1KUZRAP9vYvb2RrfhDK+nrzKQ28BlDmhUEv46g54PlGVBHcyXXfNy5Bmz1wEIEEmn3qEdmfLSrIPghs5ERybXbNezgJajpN8YAxm3TKZbfSIkCA= 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 1752651241620940.323542787287; Wed, 16 Jul 2025 00:34:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubwdH-0003RZ-4n; Wed, 16 Jul 2025 03:32:51 -0400 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 1ubwd6-0003Fo-SY for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:32:43 -0400 Received: from mail-co1nam11on20628.outbound.protection.outlook.com ([2a01:111:f403:2416::628] helo=NAM11-CO1-obe.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 1ubwd4-0000Xr-E0 for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:32:40 -0400 Received: from BN9P221CA0012.NAMP221.PROD.OUTLOOK.COM (2603:10b6:408:10a::7) by LV8PR12MB9261.namprd12.prod.outlook.com (2603:10b6:408:1ed::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.25; Wed, 16 Jul 2025 07:32:31 +0000 Received: from BL6PEPF00020E66.namprd04.prod.outlook.com (2603:10b6:408:10a:cafe::4d) by BN9P221CA0012.outlook.office365.com (2603:10b6:408:10a::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.19 via Frontend Transport; Wed, 16 Jul 2025 07:32:31 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E66.mail.protection.outlook.com (10.167.249.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:32:31 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:32:26 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EErU4fVJKHuhlaY51dDaqj261grM3N9iRrR4UAEtAvEogwiQyK+Ip59HN26XZoPMS5o2L6tSm1yVGFRneYMrOPGtN4EhDvecIWF8xmlxgzZ2XA6WFBmfxaWEP0I4yHp9kK7QRzYF632JB1hxsp7pFarZdgqCle70lg8pKYJq4MV2B1Hgcb1KOIzvsXGVG1nnwKzdhxoJUlBCz+nBxoH9shmJqu1+63wy65OLVcBxu0FtmL16UQCuQUMyB3Tcz/TWW1kf/AJfs3+64vSr/9a3kX2raK4wcCo4mVhpKZFY+ZvGb9H39eNLbca+sfmvGDghzoxogT0FbltjU2RAza+I2w== 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=XH8hnZY7PY4+xVU9HwCbZyA5htoi0iRO9EEvKGFP4Ws=; b=zDuBV40ZR6Csatr8hbLPVsoAIIxOwV0A+BXY74RIp9H25CxdNnBe+1F+kn+mIumxkqrzxT3nhVwUgwvOB8qnxhyi07qjz7XRE4Hb79AfJgdATDR5q/gLknQ84k3saIba7bh6vMunIx/QmP3rMXbrW7NiCeLDpTdb2fjL9BkdIsewoY64YlZIa52yC3TsA3imn2hlQoJUu06nJImVF6q7kyaGx+EV9AkfSBwjxD0GZUNGxYvP+/0ghryHfCyGvQRFuZfS8bKEd+fcEJpvXaSgEaTpjb7UQweZRfN2TQ8aawMYG13n2aTIwAmEKbrziR6mrFn58Dto+T7T/8IaDE7wFw== 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=XH8hnZY7PY4+xVU9HwCbZyA5htoi0iRO9EEvKGFP4Ws=; b=15CwmIbF2nb5xG54e2piBPA1xz4y/UTLoDi+kc/qavQpsVo6IDTLQqykljm1x2w/UBRqDDu39rthM4mI2AaYKmi5YXb03iybbKvC+2yt97TBCqrurUttqusgiu7QMePnrteqOPhu83ImxP1Ufl+ExE+u2xrHe13jDrwSS9nvpDI= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar , "Vasant Hegde" Subject: [PATCH 1/7] hw/i386/amd_iommu: Fix MMIO register write tracing Date: Wed, 16 Jul 2025 13:01:39 +0530 Message-ID: <20250716073145.915-2-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E66:EE_|LV8PR12MB9261:EE_ X-MS-Office365-Filtering-Correlation-Id: dd0d61a6-cffb-4c21-2147-08ddc43aec8f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oJs2Qb66vNic4BcQOg9B33s/i99WCecG1EJYQyykUY2WWd0FAvhIA0Hutu9Q?= =?us-ascii?Q?fMTy1QNUzFwYEBWAeejQvLtPDdYaW/1DCiL0e8IKlXKGiLr+M2qriOt0QvIB?= =?us-ascii?Q?xlGLSmxiGX+YGKoCfC8KG5hIqwv1HrZRZkSur0g1fYWutab/cTb0Khgq54Tg?= =?us-ascii?Q?CJlnJYxjI/IAYYWsgjnjjmjGvDQbjiwiB4XrPUnzFqK7mH3ENcMWu+vVupGs?= =?us-ascii?Q?5ABMRhCT4uUJVj5FCbdBRPZb+m3UnNpM2RC6utArqcfC2VnFdws62I0j2J4x?= =?us-ascii?Q?CJYQjW4c2VzLdFok2Nsx80xWWWi0It7KRmLlY1b03rWr9hueSyRExd4BhMvH?= =?us-ascii?Q?D9UasLob3YCGE5BgPEil0asQzxOZ9/+ZzqsQ0IYdeqaQwhh0IlnWP2AamQlv?= =?us-ascii?Q?UCOKDEZF5Xiu2MRPxCYFCY5bEELjtYIUg5q/xCTRX+MW0duK38oXQisPixDc?= =?us-ascii?Q?xQCjEbRB+xy4VuR1iDzkhhOJZmogOM9HOo2Mgxpbq4R0VieRRxbOgt9R6VMk?= =?us-ascii?Q?DHdZuZZNrFPhbeiyYEpvziVmn9FMdAqDcX2uvVwPOV/Nav/d6xScnvNwlHtt?= =?us-ascii?Q?edX8hhhNl/OrgLDFNJVLIBMWMbbkSPIFJl5s5VwTejl1r0NlJnN0klTgBgKl?= =?us-ascii?Q?MpNiXO55Nmz+wY0LUb6pG1QycCJYYoNJDJ7PappucqPjuA+Qn/Ob8arkJzSN?= =?us-ascii?Q?k7LslR2Y27igBDAsYd0pI7Rd/9bTCFzXHWikPjPw/cmCocYttTTCJ+bkMsHM?= =?us-ascii?Q?howp+utSPxNgTCbipDwU95AZRlcu9hoclwZ5+xCYudCfLZfiIKkmCWn+383u?= =?us-ascii?Q?QH5s4K2+iJ1AAePtRzsps9Kt40rq8BK1D36gY2B7HVrrMuC9l4uwZ3qM/ftR?= =?us-ascii?Q?vuDU5YrfZjiElcbU1c1BfdbnvbPHQVbMHBVxxYt9+e8RVzmv4crkgq1WlXDv?= =?us-ascii?Q?JAS+IWlLKSz37Nn/gCEOXg/7+PamwC9VuS6Pdu32HD3PkXzQsqH60yElTqYe?= =?us-ascii?Q?SZ/g4BrbedaGcDVxSxvePDQauGQj1mHjmv2nx263/86kG+AiwXY22YFBdmzq?= =?us-ascii?Q?ZCicJ02jBXBoGlsNA9pQP0OhfpRYlTbnB28Zbdd4ma4eWg3IFFNwSa/43lSz?= =?us-ascii?Q?CUWEG8sf5BMpXNoSZ7rXKA/38PdqZhYO7uz9/twzTYTVtrP5suHSwtP/M3hL?= =?us-ascii?Q?BGI0pcSAkcDIIoeBktmkdTw/FNOUobhSxtB85AkFN/5dHZ1/H0VjLYxaMKCb?= =?us-ascii?Q?FgyCa661RB2qfuNDMMvDk5+dkuBv6KVvRmbvwZvHLVtSTkYAHgSmjYaJB83s?= =?us-ascii?Q?wFPWX1h7tDr6jDvJ5nhxaV/U8Y3K3tnJskNpt3eCby8pbubr8Ys6cYaDYyqM?= =?us-ascii?Q?x90HvcUiCslUPi+hq2yvuD3oKnWMRlshQOCdl7/sDYWMauBIbS+LM38bdv+p?= =?us-ascii?Q?c1xcuEd7v8BgecT7t6oxLnSfIbYLAhFH5h7dt+L3G9yUnUNNurZQcRHqDtxf?= =?us-ascii?Q?tc0xwkG0L3ncCvCJp7YfzBaMSmo4BPUkGYaM?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:32:31.1986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dd0d61a6-cffb-4c21-2147-08ddc43aec8f 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E66.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9261 Received-SPF: permerror client-ip=2a01:111:f403:2416::628; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM11-CO1-obe.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_PASS=-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: 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: 1752651244295116600 Content-Type: text/plain; charset="utf-8" Define separate functions to trace MMIO write accesses instead of using `trace_amdvi_mmio_read()` for both read and write. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/i386/amd_iommu.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index e8af24cedb02..7a9d90f00bee 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1358,18 +1358,31 @@ static void amdvi_cmdbuf_run(AMDVIState *s) } } =20 -static void amdvi_mmio_trace(hwaddr addr, unsigned size) +static inline uint8_t amdvi_mmio_get_index(hwaddr addr) { uint8_t index =3D (addr & ~0x2000) / 8; =20 if ((addr & 0x2000)) { /* high table */ index =3D index >=3D AMDVI_MMIO_REGS_HIGH ? AMDVI_MMIO_REGS_HIGH := index; - trace_amdvi_mmio_read(amdvi_mmio_high[index], addr, size, addr & ~= 0x07); } else { index =3D index >=3D AMDVI_MMIO_REGS_LOW ? AMDVI_MMIO_REGS_LOW : i= ndex; - trace_amdvi_mmio_read(amdvi_mmio_low[index], addr, size, addr & ~0= x07); } + + return index; +} + +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); +} + +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); } =20 static uint64_t amdvi_mmio_read(void *opaque, hwaddr addr, unsigned size) @@ -1389,7 +1402,7 @@ static uint64_t amdvi_mmio_read(void *opaque, hwaddr = addr, unsigned size) } else if (size =3D=3D 8) { val =3D amdvi_readq(s, addr); } - amdvi_mmio_trace(addr, size); + amdvi_mmio_trace_read(addr, size); =20 return val; } @@ -1536,7 +1549,7 @@ static void amdvi_mmio_write(void *opaque, hwaddr add= r, uint64_t val, return; } =20 - amdvi_mmio_trace(addr, size); + amdvi_mmio_trace_write(addr, size, val); switch (addr & ~0x07) { case AMDVI_MMIO_CONTROL: amdvi_mmio_reg_write(s, size, val, addr); --=20 2.34.1 From nobody Sat Nov 15 09:50:13 2025 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=1752651241; cv=pass; d=zohomail.com; s=zohoarc; b=nPHMEQZy9bsNbY/7HBPIuRLqNgeniLnONQCobhRcbJKBEoKaXaB6/x2zTYbgFM6YR1m5lXVqkzci7ml4E1n2KN8HWo0zlB5xVrkAIyRCu3BZaSs5z8p/f9KRcQNo+R0+OeRsk6o0JRE5KhM/Tr4PghYBDgliAqernrDIPe4Qj+U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651241; 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=MNICQsosgov9Jys/UJLKTASL6d0v3SuAzELv9lIptms=; b=ZeqlXHcgoxiylJvnJVd6BR7qSPJhWsMjCTgNiVJo88Ujr8csPfxDyuMeskVtvmSMEZaduqDPXQNIXmhNBGoUlJaOJypwhdh/JJ7oUMj78UULoBLSI8HSsAaDetsp8LHJXDPkPdeyYXIqcrNKuB9UPGiXprwUaSArhO+PuY6HqaA= 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 1752651241666789.9864800862366; Wed, 16 Jul 2025 00:34:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubwdQ-0003v4-Pc; Wed, 16 Jul 2025 03:33:01 -0400 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 1ubwdO-0003sa-K9 for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:32:58 -0400 Received: from mail-dm6nam12on2062a.outbound.protection.outlook.com ([2a01:111:f403:2417::62a] helo=NAM12-DM6-obe.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 1ubwdJ-0000Zw-LA for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:32:58 -0400 Received: from BN9PR03CA0177.namprd03.prod.outlook.com (2603:10b6:408:f4::32) by IA1PR12MB6209.namprd12.prod.outlook.com (2603:10b6:208:3e7::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.33; Wed, 16 Jul 2025 07:32:46 +0000 Received: from BL6PEPF00020E64.namprd04.prod.outlook.com (2603:10b6:408:f4:cafe::b8) by BN9PR03CA0177.outlook.office365.com (2603:10b6:408:f4::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.20 via Frontend Transport; Wed, 16 Jul 2025 07:32:46 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E64.mail.protection.outlook.com (10.167.249.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:32:46 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:32:43 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FiOkWZmcH6L26OFhtw0XiaDBF6nBVOu6ib9b3vWzgiseDdGCue1Fj3BjWOU5nkHIx3MAIpsEjQSMxgSWaYv+vqL+GUEkCyaJojjLbVr4vphVOe8yIuKY2F+m08s61r7pk/0/jxqgl4xVhqVIaColBnPHidEUZNtFi2fCpKhVlLu0pb/1uldFeskk+d7IrE6wT1+WZnsXwUI5iyAzpPRVadl879FULQp0bvTHBdMBjNkob7g+f7nnUFoLjjZ2//wC0YfAPmyD1kqKNIkLLBD/niScWf3wktIV6RPxBEKz8lHNVpL3BNPlEj49KYQ/OEGIEhPa/AMxEaxD7xqFp0Rv4w== 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=MNICQsosgov9Jys/UJLKTASL6d0v3SuAzELv9lIptms=; b=ZPWPkgPGbxh4VHQKXrS7BxFyCoG7VzzpWztqe9JQt1GdEAtqeMWMXB6KZ36ayRE9sIRTK8WQc3xgMSZVsNghmedSRM3iJ1Qve0Jl0TOQbCf34xmnCezJBqcLUIzn8fHzP+Dpjja1RQy4hJy8zFf0eTxh7UuInG2uO0zpGrMDJlYwqVRIOeT9SqldxmvPSOAYUvJGg71ZUzeJaMWYXhdvvErvUbe3Fu3GSy10YJqvHJwgYd/Q8Q6JtJK1aR02cKEBb0zFXMHYPwewd28UEb0ok24dniW7Ey2Web4bNLPHC2OjjC/DZIHjDfJgULB9sVAqOm6DT95xcliFqPU0zEOvxQ== 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=MNICQsosgov9Jys/UJLKTASL6d0v3SuAzELv9lIptms=; b=oT3KlaXONlsZ1Wx1N2kzDNzypkFWPevE6AF4NGxu6Rk2zUJLT0hR6OLn82FHrDg7xbQd2dA25axBd5NR7uLQLf0+07edEuzx0S0KMJj1YYy3V0Ba2ndqmHE3Q7OLE6pW2boGMJY2YaXRPffnCwCON+qGsOS+iA4vZp23gI8q3vE= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar , "Vasant Hegde" Subject: [PATCH 2/7] hw/i386/amd_iommu: Remove unused and wrongly set ats_enabled field Date: Wed, 16 Jul 2025 13:01:40 +0530 Message-ID: <20250716073145.915-3-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E64:EE_|IA1PR12MB6209:EE_ X-MS-Office365-Filtering-Correlation-Id: 23d2d870-f742-492a-3481-08ddc43af589 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zCNKYeOpuOE638kSFyYhAG8ffxSivUmyf7vtxpc0J7uHFi4ebBphIulEdpoq?= =?us-ascii?Q?Wl/sw3bH+x/5dhFXYg7LX5ap6xV1M5s4PkHa/nC1kvtIaq8L7rDEBLDiI5tv?= =?us-ascii?Q?D5wBXX/QuaQmdJzLiIpAFXy3axvFV0j8RBobIeC69WphbWyqilA+tCN8kH6A?= =?us-ascii?Q?tJ2AswHsHDh3rvveSAHHIjqrr9FzlkfCXvG4KRaqEYhI6oSez1MVkh28Yr1W?= =?us-ascii?Q?nqP7XfFDlBEcJ+KH3w6CM5ALjBZBYf1JWZhdkog+/7MPPw8aOmwqDTSApAc0?= =?us-ascii?Q?JiKeJYzAoAOhd/8Zixzib2+NOMrozIQdbdlSw2KAnsAogDRTvA8P9kxxM321?= =?us-ascii?Q?jE+xmQARNA7NbFIvlz1eWATelkh8/0W8JQS10iNcP9VwGWHTQ60/2VembO/x?= =?us-ascii?Q?Dja6fPgYf8ay/4yrFUKJdxFJRaRCBfpBrD3lBeCRcBJg6EVQQjaGq3UzIG+9?= =?us-ascii?Q?CW1S1ScN8cDySFWmyuRnK3SxrQLve7OSrbvSCC+XKXRaTK8O67KAIIWvBcZ7?= =?us-ascii?Q?5hYgMa7WyCIwi4/WEnLKhvcwdAGfLnNVkMfp1kUJ/h1j0P1iJTvs5DSF7Mru?= =?us-ascii?Q?tgjDUH+XwtqnCH7HsOBKGP9ItHkhq7mJ4sf17mLLuZeGITRFf5ZnV7LGDFwU?= =?us-ascii?Q?X+1meAkfFXAc9vxDqvLqfXBO92dvrtcwm8Am+pO57qsYfIgKcTgw+ZECn7KL?= =?us-ascii?Q?Tf0VZQHpmg8etsL31MS7thivSaXq+UMD4qmm9RhPmrHWEQ8hxhiIbria8Udq?= =?us-ascii?Q?JlFBjli9bKMptwk0nBS9vE0vK7U/NnbmTnkqrIOUlQoYHRRm6ugo3GVjWJLV?= =?us-ascii?Q?byGEl84WMrXS5QT8Ve03kOsYjuOZzTMV2qYxyBCr2wqhSlHaWc999f1S5NHK?= =?us-ascii?Q?TrIg4guptqYgWgWUD7DwkzJn8j7M8xBG2JNq/0pFw5CRhL1pV+rqh3ZvHT0y?= =?us-ascii?Q?GwJ4WKPYAqpXVpdiT00Z7hr/4QaGOG9hPaSFNx6OSSsU0bb2cYIWHexqHVCk?= =?us-ascii?Q?6ldBbar7upmJ7W0tMTNf4SLffhZ5G7F5M60yc637h9lUnIb3Dp7MsgEKkFDn?= =?us-ascii?Q?6s2SJ9fJeed8Hkl82oN/h8059F2eAbZAdfawPagNV4B/CigP4maLnkLCAwca?= =?us-ascii?Q?mBjOpAu0UgA9UNR3BhCaXO9nLW5jMdpCizQieKmmTn5xuaLB+/YKzhFX9jZw?= =?us-ascii?Q?MP3NnG+mKSZ0O5crGRPTMpxn2JNFrZx5e2x34sa/qCzoWyf/5k8zSspu5FI3?= =?us-ascii?Q?5awHl+YGrsjsYPSarSjwX+aEO9uo6A8020D3s3O9QdUy/omhi+WvGjp9Fd04?= =?us-ascii?Q?jVWb7xbGbJ07P7/5haqx8D1PDuPi4njDjV7E0oaQ/d80Vy1c38j5xgldkh/7?= =?us-ascii?Q?HqTXrtCTCFTD9Nfm+Lu9azMyIUOxm0HYPpPV3YPKpugaWbLgZIGU8OiPw8E3?= =?us-ascii?Q?EcTJ/QuE0JiN3l7CUZd3wH/lGkZdh2/+sQz/ei3vP2/YcFPZns6X/T2sDEq5?= =?us-ascii?Q?efdm/nk8h2Tsj/9BgoLwUwmpoE4ID+/I0maG?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:32:46.2601 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 23d2d870-f742-492a-3481-08ddc43af589 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6209 Received-SPF: permerror client-ip=2a01:111:f403:2417::62a; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM12-DM6-obe.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_PASS=-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: 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: 1752651244269116600 Content-Type: text/plain; charset="utf-8" The ats_enabled field is set using HTTUNEN, which is wrong. Fix this by removing the field as it is never used. Fixes: d29a09ca68428 ("hw/i386: Introduce AMD IOMMU") Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde --- hw/i386/amd_iommu.c | 2 -- hw/i386/amd_iommu.h | 1 - 2 files changed, 3 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 7a9d90f00bee..c8fa98142940 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1412,7 +1412,6 @@ static void amdvi_handle_control_write(AMDVIState *s) unsigned long control =3D amdvi_readq(s, AMDVI_MMIO_CONTROL); s->enabled =3D !!(control & AMDVI_MMIO_CONTROL_AMDVIEN); =20 - s->ats_enabled =3D !!(control & AMDVI_MMIO_CONTROL_HTTUNEN); s->evtlog_enabled =3D s->enabled && !!(control & AMDVI_MMIO_CONTROL_EVENTLOGEN); =20 @@ -2263,7 +2262,6 @@ static void amdvi_init(AMDVIState *s) s->excl_allow =3D false; s->mmio_enabled =3D false; s->enabled =3D false; - s->ats_enabled =3D false; s->cmdbuf_enabled =3D false; =20 /* reset MMIO */ diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index fc4d2f7a4575..62641b779ca3 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -368,7 +368,6 @@ struct AMDVIState { uint64_t mmio_addr; =20 bool enabled; /* IOMMU enabled */ - bool ats_enabled; /* address translation enabled */ bool cmdbuf_enabled; /* command buffer enabled */ bool evtlog_enabled; /* event log enabled */ bool excl_enabled; --=20 2.34.1 From nobody Sat Nov 15 09:50:13 2025 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=1752651220; cv=pass; d=zohomail.com; s=zohoarc; b=njoYhj4pvoW5Fkdr90zLz9wa6kBp8liGl3eBowpFB0TH0YFzsd123tzLfEx+z19iQvBXh7SHzUmmWJAc+3riAD8YyL3/SMJaK0rNFmK6TGDTUTEsNVN84oluaztjAvXm2rXVeULGoJcuBkj/3g+/vExsKL2OtAfUhSlxN+bGgHc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651220; 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=wUfxYJQQR96dKI25S4rOnMwX64hGlSO8SNQp/KZQRGE=; b=TGX2VZf+SVwqNxXcVG1adjGnX6qTb67nFo9CQj5f0Ee/cEvrkYN6ad3Hnroirup3D6K+CdWPCZxmBpXIG4kjNE0u6LPNcPwF6flGuyLxXYPWyzvtF2Rig7iTYkm6g271mFIvz8SCQJxnIoMdjzVmlKOpv7uXmRCtt2UVhx6VvDo= 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 1752651220318831.8417460269472; Wed, 16 Jul 2025 00:33:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubwdq-0004fh-Ip; Wed, 16 Jul 2025 03:33:26 -0400 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 1ubwdh-0004XN-5b for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:33:17 -0400 Received: from mail-bn8nam04on20611.outbound.protection.outlook.com ([2a01:111:f403:2408::611] helo=NAM04-BN8-obe.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 1ubwde-0000dL-NV for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:33:16 -0400 Received: from BN9PR03CA0173.namprd03.prod.outlook.com (2603:10b6:408:f4::28) by SN7PR12MB7153.namprd12.prod.outlook.com (2603:10b6:806:2a4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Wed, 16 Jul 2025 07:33:06 +0000 Received: from BL6PEPF00020E64.namprd04.prod.outlook.com (2603:10b6:408:f4:cafe::bd) by BN9PR03CA0173.outlook.office365.com (2603:10b6:408:f4::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.17 via Frontend Transport; Wed, 16 Jul 2025 07:33:06 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E64.mail.protection.outlook.com (10.167.249.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:33:06 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:32:59 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gPqRUxtQtjcXXyyKp+dGCtdTJgxJWtdih9Hfk9z2zPGDzJpTdiCOON9Fw6ExVWqXEafd///4RB1TacSwlnS0uon/mPiKFW50z20JaZQe/Z9/lRMMWdNByqWIe2xAYl9TAXKEIGsujd9VFQeQpZfbYOlPplxtiviyaRFiqQJBgL50oeDbQrEdothTt7wzBWMH6mAjT40qbca7+R2v54m1RRC1TUNTGBgGU1oCurVKY9i5NISzE9tzIzXUCJbe2rAxuvdeeo04PHoVn9P54FAHqPB/AIpoVNiAD7P06d/oV9hOwL2i8Ofn6VM1TVvp4FPUanGAeiO3Tqfz1TVClsYfkQ== 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=wUfxYJQQR96dKI25S4rOnMwX64hGlSO8SNQp/KZQRGE=; b=pfeacuErjJ/ppEE5Dk1TT4fJzssHJ7a9EVa66r6lt5h81G+BkJqf87qbg6LPqxKf6G2CwfnVG8+YzxyZfS9nldr3cjqwCPllqRULH+S2vwar84ct+xA5xMnIG6SHi/zETUrPlRB2d/pwLN+EARnsoJ6vtn4TAt8n4exueLGPuylb8folkXroOiSkyVHZKjy/eXjEF+aTdufPxUv1eXYMfA3dAJqev8JKoncTdcHN02dk57ROT7pKIVKV7Ze8+Rn/E3YfD7/5U9UBZ4GsFRfV10eHG5rSjO9WHxj+k1u/WnyTAuvgbEPRqYaK5oaQ4+fsDVS2/batc7iCKS/SzulYJA== 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=wUfxYJQQR96dKI25S4rOnMwX64hGlSO8SNQp/KZQRGE=; b=hFfMmPHXJxKMIHF622tsiP027v2RhkVeprQRBhCafNuQlWjaLPvTO9EmXKzWQ3wmzABBC8EIQINQQIz3NyRFpcusjfNt6rPreluIKpU7YoiDwEvDwmV22+IgUJ6joyDAPfDEQcuE/Je9ptWD0dE9CPogcM7JMTtkED2f2IwO04E= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar , "Vasant Hegde" Subject: [PATCH 3/7] hw/i386/amd_iommu: Move IOAPIC memory region initialization to the end Date: Wed, 16 Jul 2025 13:01:41 +0530 Message-ID: <20250716073145.915-4-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E64:EE_|SN7PR12MB7153:EE_ X-MS-Office365-Filtering-Correlation-Id: a7b0735e-ad02-496e-0985-08ddc43b01c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LSPwm6heK4/tiSp2uV5lK41I/BSgghWOnD+NmUbHTED1ZO5fv9yzg7WdO3S3?= =?us-ascii?Q?Wmihf1cNF8loNVfyJU0Z90O3c+jDdr9FtGepdAXkR2ojYGKwTttU7rd5jCDE?= =?us-ascii?Q?+EGvNyTtnmuiol3eP8eHkjqGbSZkPkmZA1rP/XmpfPWC/aNXHYRszHC5nD8y?= =?us-ascii?Q?AiWLTgeWA26jic9dxFt4PKHr9VWoCfZFtS5EM2llP6Z/2YGg0z7CTG7bF+zI?= =?us-ascii?Q?zdgWCqTv4zDgVsGlBzhdbm8Uhmjj+Z3HGjG2xPBPS/EG4LIXdOrmg3dUtu3h?= =?us-ascii?Q?tv6UQpBb28eBclCkWIqcq1XKaiT4BQKJ/qKyL32x8mK/oULUFMw+HXs5eg+8?= =?us-ascii?Q?8bdQsYD8gRUCTR7tvyrwMwAtf9W0bPH37Eu4WX4EOzYSKFvVCnryvha5YJ4f?= =?us-ascii?Q?oG9MWwCtTTXPG50Dyibp3CpTWZN8RPeTgPwsV3LoyTAPPR6nqJgGmLgkXFeM?= =?us-ascii?Q?Qv9LWvmwYITAJpHFyQjj5+K5uggeEXEUEECmoOyfNSMHBds6wAt2h+hcgdzu?= =?us-ascii?Q?s5wPaBWviuEUd0ErNCMkeW5PWkrcY0KYy4M8pOwp7Zt27e3WtMCyWqU0rCDz?= =?us-ascii?Q?VCN/GrnJ7kBaPwE4ch1WdzS9g1zcUv2m4q4WJpxH881rDdQ3Gtgo+NOkrX+F?= =?us-ascii?Q?WwKSScF1Xj+codIbJkV5Gz2SEZ9TwS364gn1fYv1i9NbKe0OLg+S0sJ9aRUl?= =?us-ascii?Q?u4We43JISAdbafWb6W1MEAnazl9Bqjr7Z+OJrnRDwzam4Cq7rWy10UtvCFXW?= =?us-ascii?Q?571I1KMYuGWx03BAzvViB8q4hiLqmhHTVm4jrZkPns5hg2wm/0bopDtJ6Oea?= =?us-ascii?Q?aFnc0sSqXrHSKClxKvj32y1JkALGAOm5sFW1EHkkTU/eCo1X27YO4sv4Ur8Z?= =?us-ascii?Q?LmceDegOJmKUTByGEsg1gPitKP0ycSUbc4NaDM1eodfNCqnISdaCoFwJ0eUX?= =?us-ascii?Q?JxlB8ZTDMGBc+X6CvPM817e7n8wF/z+3DFFlFqPhmd0FY8F3FYdSk4rxeou/?= =?us-ascii?Q?Qa1Bizb0AreaYZ8Lmob2xrcaN2gBXIX+i/R4WfTAmWf0eDdRWIXMRUEJ2wCE?= =?us-ascii?Q?LfQuVaADxDqpEBAnWQYJUcQWpMzZyW6mm9uLwN/J2bKwfRuLDJcvDP/zWu53?= =?us-ascii?Q?xxDo3zVxiCaLVhjMZBHGnrBAoZGpdP9rmEYUWZMsHvb7BqTKjCnytGR5mAfc?= =?us-ascii?Q?T7GyGG5i5tEVliJXM3lEdxjDjDJeSwOCA6DGjsCLPt8UcbZpTga58JDRWBuP?= =?us-ascii?Q?bgl6Q2Mksl+yoeXZnB9xQeedNbG15Foo1GZ8qtGX+GnhtwFaarIwtLpMvEwM?= =?us-ascii?Q?CZ9Qf/J88Wo6Qzjv5Gh+U4Uo6OPw26u6AKGGc7uvW3Hu2kuhxvlISelXEp8P?= =?us-ascii?Q?O7+8stcGt+p76wu/Sj7NEJJi+p0KstHWZmbQnh0usqfDUKYUN6CeoW1C2g3f?= =?us-ascii?Q?198iPNE6W0VYne7mBfvnK0bADNIi8oi1sn+doxteNAznnr4frl3WRbtoTibi?= =?us-ascii?Q?9exiQA6hICcfFkZXM6i9Dx8jKzeUD4wBWNCd?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:33:06.7665 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7b0735e-ad02-496e-0985-08ddc43b01c2 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E64.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7153 Received-SPF: permerror client-ip=2a01:111:f403:2408::611; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM04-BN8-obe.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_PASS=-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: 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: 1752651222634116600 Content-Type: text/plain; charset="utf-8" Setting up IOAPIC memory region requires mr_sys and mr_ir. Currently these two memory regions are setup after the initializing the IOAPIC memory region, which cause `amdvi_host_dma_iommu()` to use unitialized mr_sys and mr_ir. Move the IOAPIC memory region initialization to the end in order to use the mr_sys and mr_ir regions after they are fully initialized. Fixes: 577c470f4326 ("x86_iommu/amd: Prepare for interrupt remap support") Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde --- hw/i386/amd_iommu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index c8fa98142940..784be78f402d 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -2343,9 +2343,6 @@ static void amdvi_sysbus_realize(DeviceState *dev, Er= ror **errp) return; } =20 - /* Pseudo address space under root PCI bus. */ - x86ms->ioapic_as =3D amdvi_host_dma_iommu(bus, s, AMDVI_IOAPIC_SB_DEVI= D); - /* set up MMIO */ memory_region_init_io(&s->mr_mmio, OBJECT(s), &mmio_mem_ops, s, "amdvi-mmio", AMDVI_MMIO_SIZE); @@ -2368,6 +2365,9 @@ static void amdvi_sysbus_realize(DeviceState *dev, Er= ror **errp) memory_region_add_subregion_overlap(&s->mr_sys, AMDVI_INT_ADDR_FIRST, &s->mr_ir, 1); =20 + /* Pseudo address space under root PCI bus. */ + x86ms->ioapic_as =3D amdvi_host_dma_iommu(bus, s, AMDVI_IOAPIC_SB_DEVI= D); + if (kvm_enabled() && x86ms->apic_id_limit > 255 && !s->xtsup) { error_report("AMD IOMMU with x2APIC configuration requires xtsup= =3Don"); exit(EXIT_FAILURE); --=20 2.34.1 From nobody Sat Nov 15 09:50:13 2025 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=1752651263; cv=pass; d=zohomail.com; s=zohoarc; b=Ft8yBW3HlozLc04x9QKky5DMAeBPpEAVcOs14vTIX7JyMn4FOO9bZ/67ldpgEmplUOt5jNuFWfMdcg3Kh7SF1JrEmvLs7IXCJv/wM+IEjz5t0LglEqRXiK9YC/Wl5kLL3/pwzmDn8QSgxto8N8V+huqla4QOsIOuIrgdHiVhKHU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651263; 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=/xYQ8G7cjsZXspJIt2Dx5ZYtk7ThFa0j+X2MRfhjEaQ=; b=f7p0DfV5cViGaN2+ltabu/qW04O2RcDweo02z1H9fCBhHInIphxR7NytMm7pZGMRqEZ6gGYe2vFhwa5bd+Zo4MoAR1Glhry4ilx883S6cVvOLRoc1Pgk7uMyP6lv+Tvab1tok0cOAcqW+znaBYM/Ozjkw6/7vVkPV1wggosoo8g= 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 1752651263445983.9443502577285; Wed, 16 Jul 2025 00:34:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubwec-0005YD-DL; Wed, 16 Jul 2025 03:34:14 -0400 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 1ubwe1-0005Gw-Rq for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:33:39 -0400 Received: from mail-dm6nam10on20623.outbound.protection.outlook.com ([2a01:111:f403:2413::623] helo=NAM10-DM6-obe.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 1ubwdu-0000fv-Oa for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:33:37 -0400 Received: from BLAPR05CA0024.namprd05.prod.outlook.com (2603:10b6:208:36e::20) by IA1PR12MB6580.namprd12.prod.outlook.com (2603:10b6:208:3a0::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.26; Wed, 16 Jul 2025 07:33:24 +0000 Received: from BL6PEPF00020E65.namprd04.prod.outlook.com (2603:10b6:208:36e:cafe::75) by BLAPR05CA0024.outlook.office365.com (2603:10b6:208:36e::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8964.14 via Frontend Transport; Wed, 16 Jul 2025 07:33:24 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E65.mail.protection.outlook.com (10.167.249.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:33:24 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:33:20 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kj8+0HjOEIeuzOkm/N+QOlvqsdAKFZAEv4tmFv7ExOgy50TmuxcYjOYRUbxZwwxFE6XdGBnv13h3oh2/1WULnsKi3vmTEfbhzzhwanFfJTGg3iBX4bgeMON9VvBpm8XVfTZcY4HnijpJP/UT1iuDfUKMb0mKXxOzvMAVncbxDW0H5/uubIoZFzoI84UxIbhORieqTXGsYBFb5I+Ytn08sQq3r1DMr6wXErwV29C3v62nzg/YR328YK3+xLKYETQPiNggubDLOVhfDuP9vR2Zr19crMdZ9ZP0TaD0hKlxJBJlDaOu7Kh1dFILySVa3TCAtRt7PwS6s1S9LtlssyKNNg== 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=/xYQ8G7cjsZXspJIt2Dx5ZYtk7ThFa0j+X2MRfhjEaQ=; b=uswrSnLO6PVk1y5sHx2Xzr+pWBVt9H61tIR1gwbWB0Qkbp3Qk0+ljOog0w7qquLPeS1lmgxr8GGNGpSOxsw73e3R7izcba3IXwydw+AUEqO3OCs4Fn0wa4Fa/51OujKZCjmn79eo8IIDCJEzTkSM8m691F3rxUMnsEaWb0uidinBcd+RxJX9jbUnqG25yzKKzeO4x0aoqPoLLT6tNLDXZhiGuSjgt5Umw9MR3zkSTaNP2G9Ir0+bbLO/EjJnLi8UDZFsK2YWrr8Ck+L/r1yVG9q3k1KTnGCcWsRvaCZfenFdcwCF2mcsOA2Phud5At7iUFD09RHr4+M/8YTI4vF3kg== 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=/xYQ8G7cjsZXspJIt2Dx5ZYtk7ThFa0j+X2MRfhjEaQ=; b=t03+oHYagSl7HXhRDwCzAxECOPOkoMFSO49i7j9dVu7uVZD/om5lok0G/vGjUrtniyMZiW/2sNdE6uLx1iF3ugMet30xi0ClXUhoc/nK8GL6GhSHo2SA1vrEPCj6ISck78+UYdZi2LfKXX/1pOGmyhYLHfNf5s9G29T3Vnga4Xs= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar , "Vasant Hegde" Subject: [PATCH 4/7] hw/i386/amd_iommu: Support MMIO writes to the status register Date: Wed, 16 Jul 2025 13:01:42 +0530 Message-ID: <20250716073145.915-5-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E65:EE_|IA1PR12MB6580:EE_ X-MS-Office365-Filtering-Correlation-Id: 9256ec93-db61-415b-2e56-08ddc43b0c1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?56oeC98A4kPEIdzjuf7rOBLJ3r0iedsJAzzRwr1jaMIneFy4Wso+B0bVPda4?= =?us-ascii?Q?h2LTfDXeUy3EKH14dU4+kKKxd5FK+pyRBnE+nBY218kPpCJJVSce1gOTaRUt?= =?us-ascii?Q?cDNmdl3WEU9DiKVsr76gmxwbfO+9g968lKPxg+eeXGOrE172y7FQoRO9+JFO?= =?us-ascii?Q?ITXG6mahkR2BuKiGGu1x4t8VMuCalKOxgzpTrq+XsdZauGWf+XTqHl55A8Cq?= =?us-ascii?Q?HaM45m0Yahb75S3v0WBUo4cvZO9MqQDwlBc1mFlX3IQqFTWdvm+fH6bve4ld?= =?us-ascii?Q?wAc/nHfoarR0LJY9iBtM9wqr3mm5LNcMaAG32DS4cCvqmI9c/p5dT793QInS?= =?us-ascii?Q?RDmc6BpAw1BXdED7J2HiecaaBQGFxUsJ8T0KDWovpcrrA7/5hujVlf8tTQa5?= =?us-ascii?Q?0NZLorWaDRE7KevgCBRnGxzs0c/ePbvENzX1lAfw+DVQIlHexk8JDKxgaQRv?= =?us-ascii?Q?r0BxwsUGcH7wRBb4Y7V0AfAwBC+PN7122/oZuZQ4Q/5hEAxmfh1LfP08jDfh?= =?us-ascii?Q?Yuq+XV3AV8B1UZ4oHwS76jagBJ1RCrxpdMHfgO8tX0GPkUdE3c87MAonwMYK?= =?us-ascii?Q?ayfEHjcQDWHCnKjdccbXw4z7M63lYfwK80ZxAJ02LE96vLAw5/qfYNO1k/ts?= =?us-ascii?Q?w4fbbfPr6VuZtywVODW8Ze2TTRRkEWAFkcuCoTusimGo5OH4tfFl7eS8cB9U?= =?us-ascii?Q?sPeu0Wwm77bJ9SbpFKveIGtiRZwx5jNPhF/PNzQo0S+aMkoTFTMO8Z+gfkX5?= =?us-ascii?Q?Uei4rfAGzjhxVq9nQT4/2MJhKQVOpWaKJ1bKKl6c4z6ueffyEDO6hERmKmha?= =?us-ascii?Q?VQjeSdBePJYUldy2ZVwMXEZI4W4e/3mew4RnSvL1ICsgTJCgH7hKqPhuTBy4?= =?us-ascii?Q?Fx6qEWGxWfeAof0kDvN0PlHv0Q0L5cZIji/7hICKP6xS5Us/26RNegoM2l0V?= =?us-ascii?Q?UZ+8fm8lEf3trOSQIbgjIkkRO28ydRHc1WHsK6Y/GUZcathwD1Ba9oFujaNo?= =?us-ascii?Q?QkG9zkQfjifzDGFw+AplcTHer9JlAW0/hxg49jcuQXBn/XfQG5N0ndxzyNDe?= =?us-ascii?Q?Yj4zF1koAi5r1AVa/qQh/xkxFpgpoJrq95cTV8R8jmpOgzX1ubuykGIVJVKo?= =?us-ascii?Q?t343gYUJjkj52eMGRsKJDnZ7NxasbgqU6oKOsyID8iMf4eZl8lujQvnonbNr?= =?us-ascii?Q?aqwgIUX09BnpG95JJHFE5MICQcZRe+wJOhc+hDXG2c4a0cGS/dDx0kzUMw0E?= =?us-ascii?Q?Jh/nVNHv7al+HKHMJ/ePnwAvJmLDd5KyXL7HSztx2u4ioqL181hWQcelJejo?= =?us-ascii?Q?Kn9+166Vu3ciHJpSULuIsFAiOkjoqn2ZQStjocDp7d0MrXO4V24+qspHWLbN?= =?us-ascii?Q?/vZ64jhxHR2Bdb5RQBmWP/xhuLZrG2ZSx1AMroOeetEfZbxfzLCt82y6Ce4I?= =?us-ascii?Q?tBkVxYVXnlgwdXYp6AUwNMSMCN/I39jJpzPk9tNMnHEip/4VPqXsRXcGoBfQ?= =?us-ascii?Q?xlPTI8VwFmnAAecwCqgPUN6GrGdWq95Pjicz?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:33:24.1143 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9256ec93-db61-415b-2e56-08ddc43b0c1a 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E65.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6580 Received-SPF: permerror client-ip=2a01:111:f403:2413::623; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM10-DM6-obe.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_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 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: 1752651264260116600 Content-Type: text/plain; charset="utf-8" Support the writes to the status register so that guest can reset the EventOverflow, EventLogInt, ComWaitIntr, etc bits after servicing the respective interrupt. Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde --- hw/i386/amd_iommu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 784be78f402d..e0f4220b8f25 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1613,6 +1613,9 @@ static void amdvi_mmio_write(void *opaque, hwaddr add= r, uint64_t val, amdvi_mmio_reg_write(s, size, val, addr); amdvi_handle_pprtail_write(s); break; + case AMDVI_MMIO_STATUS: + amdvi_mmio_reg_write(s, size, val, addr); + break; } } =20 --=20 2.34.1 From nobody Sat Nov 15 09:50:13 2025 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=1752651302; cv=pass; d=zohomail.com; s=zohoarc; b=ZtvGvAS65RLnAwUdLHNwXaMOdM+LujjOFRfHTUN4hogQ/Tjfc6HMwwyV82UTYgW+rC2krIA/iaaIT23AQ43PJSxw0ejPe3SXIAks6lFf1XJU92hKdW0vItQmZxEypXZntLdT+c5LWZJoi9ZH2neyIX5lewKAuWqkNt2S+uJo240= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651302; 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=fdDEiwv48SvxLbuxY9cdS7A6992pT23iHxOCDadvXCY=; b=UVQrXSDS8Gzw8mUnsxgdcluyeLCP3Rs5pBuaPTJ/ng87Z8yjIaJI+0F3UcUFZt/QfcDtziEIX8YmtwISHET8KgDaZ73Fk9xFpZyMJ/0OY0PM3OY0qW+pp9rWg01MFXRya4FIRTxt5ZI17Qev2VdmwTlxSW1Oz26AiDFskh2zQCo= 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 1752651302487366.78866612549655; Wed, 16 Jul 2025 00:35:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubweg-0005zl-O1; Wed, 16 Jul 2025 03:34:19 -0400 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 1ubweG-0005UM-57 for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:34:01 -0400 Received: from mail-co1nam11on2062a.outbound.protection.outlook.com ([2a01:111:f403:2416::62a] helo=NAM11-CO1-obe.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 1ubweE-0000i2-1H for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:33:51 -0400 Received: from MN0PR04CA0027.namprd04.prod.outlook.com (2603:10b6:208:52d::16) by MN6PR12MB8544.namprd12.prod.outlook.com (2603:10b6:208:47f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Wed, 16 Jul 2025 07:33:40 +0000 Received: from BL6PEPF00020E61.namprd04.prod.outlook.com (2603:10b6:208:52d:cafe::85) by MN0PR04CA0027.outlook.office365.com (2603:10b6:208:52d::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.19 via Frontend Transport; Wed, 16 Jul 2025 07:33:40 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E61.mail.protection.outlook.com (10.167.249.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:33:40 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:33:37 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DC5qgxL8J520+iv//9vzDE6F4ptySe2+6TkjfPNhlnCKqZRpkjwpe9nHMeIpikVNjlhb/sc+qN+JQTUrNndIqpdjf14Ti+G+zrwsH7+nwyhJTWXo7xJazxA/4x9Wb/NArm1VGC56TZFkMiQGiSZpGMqsvvyv7ZxcFSISHkxb9DtN8C/3SstHlKdu33uP+QsBHAi/diu4e2NztAtTZHvahmftfKl3E+3QT0pqdC8C2cJsJsaLXTX12sqCbCfvhRG/xdnrOLdTQB+1HFiQgQqfVoIQLOC+8pJ+4nzfjakPTErSJfRlG8T/Vk8vTjzcVZUrjme4eNweSqFC1qkRaqBvig== 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=fdDEiwv48SvxLbuxY9cdS7A6992pT23iHxOCDadvXCY=; b=pa5SzFnRRKioPECYfIPPvZtGXqU2sMKeNwuNid2vTgbc9N9CCWRw6W9OgAdbSS/5jwp45MCty4e2vi5et6Ya8dxaCsGvVpmEZ+eGMU+nyrEADEbSKIiA817Jy5D8QRCCe/THT3jAp3HKnKMIkKc9wQbnUZ6snRBirsGt3YyKlU9PHjwalnSLq5lvaURk9GYkmLzTu5EuQRiPcu0vsn+tTbYOvUMyUAyeNXxyZW9v6h4WjOshndYClBw0tO+jDFmsh2ot55ApOHatPUB4wmizYe+OT0UmVd8eJ0k3w0mmyRjyWTIk3jQbCmoOERkeWWkBBolowEOFzCvU9AgfwB+xGw== 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=fdDEiwv48SvxLbuxY9cdS7A6992pT23iHxOCDadvXCY=; b=nOANSTh06TA+dNcoF809zOAvzEIwK90G/5F9VwX3sUpOm/04zDftSRnJaCDddhb3ddYvg8Rd3SjF57V0641O/daQbimiKpie+uPPOKytKcjvSbevlTeiVwF4Fir8cnaj4Oi898rRNQSx6cFoZbp/LhFhYQtEDojHmo7bAoHQwLI= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar , "Vasant Hegde" Subject: [PATCH 5/7] hw/i386/amd_iommu: Fix event log generation Date: Wed, 16 Jul 2025 13:01:43 +0530 Message-ID: <20250716073145.915-6-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E61:EE_|MN6PR12MB8544:EE_ X-MS-Office365-Filtering-Correlation-Id: 61332a1f-cace-4853-5e8e-08ddc43b15d1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NQfgAzW9BwFqinhXKSJS0lqa/VCyCWkXU7VYvz8VO3jPd+ofYWHztu8MXLWs?= =?us-ascii?Q?cesG5ptafY3W3qpdvq0Abfocjx/XRUm6URGtU8NbW/dE9tJxxQdt2XTOSGRe?= =?us-ascii?Q?XeB0MmzdxehHcDDrljQK9uNcAn0ta4ERzxQXm5M2Tdu3BkDEOHOg5yu7eHrt?= =?us-ascii?Q?m5O2GmRVxMYDxjvVm6qEDtOLMn42nao8zkbYBY/CGjzCG3coMegk3AoYm32Y?= =?us-ascii?Q?IskL0lcp6tKJ68RtsrVS/36x3vKt6rvQ5TuvWj9drVmlerPyldGQGlP3S1hu?= =?us-ascii?Q?qc8SePW8k5NkIfhYyVt2YI81rtK13/ibDDpBxSikw4BKa4fcx1WD7l9aU/mB?= =?us-ascii?Q?ZVvRMV4mqRvg+SQu+x7GmwVxiibn+/yp24gvrxvLIJT3AfEwwDVs8rdm1BrZ?= =?us-ascii?Q?6irR7wBJfydDQOzHjlMGr1xydU7T9BnbPPLUwy4muV3ud+VtU8sOQ5Ridvcf?= =?us-ascii?Q?Tc8C3c/2CB7Ew3TICgge8EZM7Tz2BXw+Ild9Sf95NmYJFzVw+OSWvEf6gYZM?= =?us-ascii?Q?uIDEGq9mabOmFOC05X1TNDFG2f6xr16HgXI6DM1JsznAShwQy8pGCwJ1mOFr?= =?us-ascii?Q?IRTe8B8bTruNz0c6sjxI+E/hl3h7vxrKgn9SOVnkLeRNNWHZMJFVlycMDI8Z?= =?us-ascii?Q?S922/Dn9liXv9LPitD/NX4lr9i5DMWjupgPQMYDkD0J4EL81HSOxrmvmixTQ?= =?us-ascii?Q?FSGIsNY7+YQ4QZQTM5+wb6S/HrqtSMzLU0AV04OPCCem4j9YTHbWRAvgCWQ2?= =?us-ascii?Q?xQu5dRLkpadSCQYE/Y/I/qgb1mnOFY27QuTNSkuU8mzZhke2qhXMjyAnOy+H?= =?us-ascii?Q?e+p6bSfNH/DT41FCcGLJBK6NRMAT2cMAccUCebBx27a3R2VyCVWrant+tzqD?= =?us-ascii?Q?3qcQYN6MdsHgSlHDNOYpjwgKwZX8snwv5Kf+sEoQnEuGtgH9riEbhMAcAM58?= =?us-ascii?Q?r6aOMYupXiM9yS9gqT/7IusoQGBk+JVVBhHaLTxPUEj6acQ5w5wlUlxqs4bU?= =?us-ascii?Q?WXWwIBbwifpFkMGFHNvXzMCsUN16vQsU04uYhmlSK0fbCzyk1dGfHkd0QO0f?= =?us-ascii?Q?8D93ANjBnkIffyO6d+ePm5xsoUOqXF2bGiKNTV89GYWf5cMMT42XJW8/K29b?= =?us-ascii?Q?T0p3lJo1/UrwztovHbIbXB5ND/FAehgmloEbpVRpzMMVK4L1lZog3feIIzKN?= =?us-ascii?Q?3yDI7cZ4MRp2MEyqClBQ21/jcSQFrqpt6X7DEr9mBIAqvQR+gNRf5xkm07A0?= =?us-ascii?Q?VvCkcnrOtWImqrK9nnOVRm+N3cjnAy/+hRRXkBjyCEIjlXSGbf8GmQ4KoKvF?= =?us-ascii?Q?FZACpSBPqDobjPz1YHfM75c6kzJbOZGuGkIGGxAwuCwgx3VbVm5ZSjMZZf/P?= =?us-ascii?Q?QITrlT7MBSK2nW6jMIE2WkqTlhYm0cmurc4WTK4l1xRC5b9RK1lQFUcK1nR3?= =?us-ascii?Q?4U+QDjko9peN2mrccw2jP+Lx/zkugTmWYqQAlKVZlolGYSCz5OKLiFFaptSU?= =?us-ascii?Q?l3SKTecSmCp8eC0IGhzsIAx8pbXC7N8r5ntb?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:33:40.4177 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61332a1f-cace-4853-5e8e-08ddc43b15d1 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E61.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8544 Received-SPF: permerror client-ip=2a01:111:f403:2416::62a; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM11-CO1-obe.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_PASS=-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: 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: 1752651304687116600 Content-Type: text/plain; charset="utf-8" Current event logging code is broken, because of following issues 1. The code uses '|' instead of '&' to test the bit field, which causes vIOMMU to generate overflow interrupt for every log entry. 2. Code does not update the eventlog tail MMIO register after adding an entry to the buffer, because of which guest cannot process new entries (as head =3D=3D tail means buffer is empty). 3. Compares eventlog tail (which is byte offset in the buffer) to eventlog length (which is number of maximum entries in the buffer). This causes vIOMMU to generate only fix number of event logs, after which it keeps on generating overflow interrupts, without actually resetting the log buffer. 4. Updates ComWaitInt instead of EventLogInt bitfield in Status register. Guest checks this field to see if there are new event log entries in the buffer. Fix above issues, so that guest can process event log entries. Fixes: d29a09ca68428 ("hw/i386: Introduce AMD IOMMU") Signed-off-by: Sairaj Kodilkar Reviewed-by: Vasant Hegde --- hw/i386/amd_iommu.c | 20 ++++++++++++++++---- hw/i386/amd_iommu.h | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index e0f4220b8f25..a34062153194 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -172,7 +172,7 @@ static void amdvi_writeq(AMDVIState *s, hwaddr addr, ui= nt64_t val) /* OR a 64-bit register with a 64-bit value */ static bool amdvi_test_mask(AMDVIState *s, hwaddr addr, uint64_t val) { - return amdvi_readq(s, addr) | val; + return amdvi_readq(s, addr) & val; } =20 /* OR a 64-bit register with a 64-bit value storing result in the register= */ @@ -201,16 +201,26 @@ static void amdvi_generate_msi_interrupt(AMDVIState *= s) } } =20 +static uint32_t get_next_eventlog_entry(AMDVIState *s) +{ + uint32_t evtlog_size =3D s->evtlog_len * AMDVI_EVENT_LEN; + return (s->evtlog_tail + AMDVI_EVENT_LEN) % evtlog_size; +} + static void amdvi_log_event(AMDVIState *s, uint64_t *evt) { + uint32_t evtlog_tail_next; + /* event logging not enabled */ if (!s->evtlog_enabled || amdvi_test_mask(s, AMDVI_MMIO_STATUS, AMDVI_MMIO_STATUS_EVT_OVF)) { return; } =20 + evtlog_tail_next =3D get_next_eventlog_entry(s); + /* event log buffer full */ - if (s->evtlog_tail >=3D s->evtlog_len) { + if (evtlog_tail_next =3D=3D s->evtlog_head) { amdvi_assign_orq(s, AMDVI_MMIO_STATUS, AMDVI_MMIO_STATUS_EVT_OVF); /* generate interrupt */ amdvi_generate_msi_interrupt(s); @@ -222,8 +232,10 @@ static void amdvi_log_event(AMDVIState *s, uint64_t *e= vt) trace_amdvi_evntlog_fail(s->evtlog, s->evtlog_tail); } =20 - s->evtlog_tail +=3D AMDVI_EVENT_LEN; - amdvi_assign_orq(s, AMDVI_MMIO_STATUS, AMDVI_MMIO_STATUS_COMP_INT); + s->evtlog_tail =3D evtlog_tail_next; + amdvi_writeq(s, AMDVI_MMIO_EVENT_TAIL, s->evtlog_tail); + + amdvi_assign_orq(s, AMDVI_MMIO_STATUS, AMDVI_MMIO_STATUS_EVENT_INT); amdvi_generate_msi_interrupt(s); } =20 diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 62641b779ca3..3dd4e7e3e8b8 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -111,6 +111,7 @@ #define AMDVI_MMIO_STATUS_CMDBUF_RUN (1 << 4) #define AMDVI_MMIO_STATUS_EVT_RUN (1 << 3) #define AMDVI_MMIO_STATUS_COMP_INT (1 << 2) +#define AMDVI_MMIO_STATUS_EVENT_INT (1 << 1) #define AMDVI_MMIO_STATUS_EVT_OVF (1 << 0) =20 #define AMDVI_CMDBUF_ID_BYTE 0x07 --=20 2.34.1 From nobody Sat Nov 15 09:50:13 2025 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=1752651273; cv=pass; d=zohomail.com; s=zohoarc; b=mUV3G78CSYjZ3bBS0e4YYePv+d3H75DFB/YOxB4c5IgZPEBM96ryI8/7+mAXkFcZGDcVeQt0hWA26YgMtvAb07sH52HizXRP8/fnaWAZ5RZ77UEdGYxo8cgu0ny7JL2vZ9RoHaPMdq8cTPFiLwOa4OrJ0VWdIRO2dI5VKYdtfc8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651273; 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=wGBKKQr3LNZab0Sv6LDKUb+Xm7hNpg8a6l1Zqp8oMC8=; b=QCQmi0k106MNHGqnbxZgaKkUq2DVIa2DJG8xD3J6AKsJ7tmLCmqBYeMAaYC0C99hUTWSROnvnBYJR9NtZwwgjJ+hPaZ56XzfBeN8ryNpxG2hiUVllYWnzOnNFNlduHsPqnXsLTrIxl8cOv2SPc9bDYjgsQ7W9dEcKtgxO4jpj1o= 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 1752651273585350.506816604134; Wed, 16 Jul 2025 00:34:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubwej-0006K3-SG; Wed, 16 Jul 2025 03:34:22 -0400 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 1ubwee-0005rW-9o for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:34:16 -0400 Received: from mail-mw2nam12on2060a.outbound.protection.outlook.com ([2a01:111:f403:200a::60a] helo=NAM12-MW2-obe.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 1ubweY-0000km-66 for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:34:15 -0400 Received: from MN0PR04CA0029.namprd04.prod.outlook.com (2603:10b6:208:52d::34) by IA0PR12MB8279.namprd12.prod.outlook.com (2603:10b6:208:40c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.33; Wed, 16 Jul 2025 07:34:02 +0000 Received: from BL6PEPF00020E61.namprd04.prod.outlook.com (2603:10b6:208:52d:cafe::af) by MN0PR04CA0029.outlook.office365.com (2603:10b6:208:52d::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.19 via Frontend Transport; Wed, 16 Jul 2025 07:34:01 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E61.mail.protection.outlook.com (10.167.249.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:34:01 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:33:58 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SL2qifzMDAvJ61EOe6GkSRaek4hxoLVANMEpws0qq1Lakgt6NOA6EJy4pqSZBMQUcnrMa6jDDQX3psRcivF8DqG0o1+AbFXMPlR9EgzN318dYMyTq0EC/DT3s8LXJJk9lXs7xT1IYSAJzhPyLS/8cgf3obKh9j/agIj16e1PM3DF1v1TAO0wIMPGVqeMfY1WqaIkTT1DnyzQuGNmdjbCS1KfDLfgsF1MNQIhDrAwj+rT8dMH0Zi747gvKPfWmo+VrOHI/1kpJiqwEca696UAVo0uau0oYFiGxYVjXP3c7k44SHJUV9v8GZOhV6wIOBrgQTlGiBExZgJSka+ChjoxHQ== 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=wGBKKQr3LNZab0Sv6LDKUb+Xm7hNpg8a6l1Zqp8oMC8=; b=W1PxINOr7+vUyYEUSUcma7G4Xi7s9UMd1gmON1lCypwyUbat1shfxwqeFKOd7n7gVCbgrpz7HesMjyyoZzu+y9AErq6WXXj8ZOHZzvDbB8OyCtrgpNuH73qZMzt9kZNRsa4fUtc4jeDQ01ep4QOPCWEMlJHpmh6UpHKAkNj1VXDY5GuDXFzpmE2rxWaLzv5CV5XUiiDqNhjl8ajgD6HwdzLhhUSkr40CEzVsboJ9gNx4C0yps9H7jPEy3jMe6+yXnzXorcYiJXZuq9l+DjGkdfGclOiNxmlaLRKiAPp9K4oaBVN+tl6ZSbpb2mFe4JZ8gugE+wCgHvNGfNTO+S5Yaw== 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=wGBKKQr3LNZab0Sv6LDKUb+Xm7hNpg8a6l1Zqp8oMC8=; b=CDEJ8YVfLKv/kJWLy6CPREdzT3s2YtYCrDcjZqsONeVD18+ZAERob7ZyGdpWyQyubGv1vFBXX47nET6hZWiEW0hWnSsbVH0yg7QyHCtwq2aAJvucQqgzLIIZBhrWIx9t4nnYso13U104SX51Ore2tchYT8eHKfIVvFL4ylTgXGo= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar , "Alexey Kardashevskiy" Subject: [PATCH 6/7] hw/i386/amd_iommu: Fix handling device on buses != 0 Date: Wed, 16 Jul 2025 13:01:44 +0530 Message-ID: <20250716073145.915-7-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E61:EE_|IA0PR12MB8279:EE_ X-MS-Office365-Filtering-Correlation-Id: 53d76d1f-650b-4862-faf1-08ddc43b2292 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?l99Kbe4TEm+ZDaQkB5A1uLEycVXkzq/NtXRTnwCcB2cvXlM2JJXggEU4Pg+0?= =?us-ascii?Q?fwXfVmHrshI2H6COYhyG8PwrX+4IM3wIV30I5l47iM2p0hHCH07l1qkRaAvH?= =?us-ascii?Q?1oxUrPyj8pGdSFqr1yihM+oMxxgAhnLQ8iYPMKi5uD51l/MrRvoBNI8vVq9H?= =?us-ascii?Q?1gQ6dMxmDK5cE4ckbFxXhN4onrC8uRsq8fGn3NXOLKY9a1RTHEH1YtyYB4LT?= =?us-ascii?Q?cysYNBML1RcidbTIetgUquw4JuyXGtXzvQn9Iy9xupkgmunLDzrk12VZooY1?= =?us-ascii?Q?Nc65INTwNHnaa0zDJl07CbzTdTxi0TQV9H3vhWqWZj0j0fsAAbU5el65JqrH?= =?us-ascii?Q?NwvvrclZDJhAoXk1ZVu/xAEAycql2wxQQVWvoZaI2IHTN284iDE1xARdAPqs?= =?us-ascii?Q?3wzQZ2u+Bv80rpr4w0YPvwZwjiZ41ZB7gLOWXbGFKEt0yIEZsTOmgDRWFHGp?= =?us-ascii?Q?AGqmP0//TjmaPI09AL3Ow61dx1ssv/XTSaSmPsGclz/q2/iZ2snKLS6D4pfW?= =?us-ascii?Q?Ek/vYCDYN3wGsr2TEMU3pbvc/kQ+4KWxRnOOFQm/tjdq9bI8fhlted2x4Sy4?= =?us-ascii?Q?BlOsAhbutyoLJC4L/mVQqKt/ngwI3w5LmnM+mYJu1TdlEenIs+AinK8tx5B5?= =?us-ascii?Q?KG3jEqHghn5jIUodpUBH0a5hABVh0WAqw+NemjuPYPqZ4w3p5qu4sFZiEekP?= =?us-ascii?Q?zV7qCtYCazjqHJ/t82aRG1O4RidUP+oB3T3tbkgnr+StHK/pEQIlfi8duwfI?= =?us-ascii?Q?De4ErgCnfCujc9VPfmru9/mXcaL5RSib0R7j+lkasJqccLYCPZdO28Q9mWa1?= =?us-ascii?Q?5LIU1Ji8Cg+ZTZ/mESXIz5SzQPWTEY1RTgu5ojVcmBwRNJB1wZVcrq9xQx7x?= =?us-ascii?Q?2tj0ioNS5eN91VwFbmoVEHQ/D11LOU1kTEP6xtvqU2Esk8AQSvXSQxEwPc3C?= =?us-ascii?Q?m7sBtuAZoQlAjnF8lGUsQSiev6RXcz22Rrvf2X/b2rh/EawlBOr73wBqYAFN?= =?us-ascii?Q?S/ctU+slf42wc9bYW/n6VAlRXNr0tTYeVMeCGikPHiaCl+g32FSg4NY+Yao7?= =?us-ascii?Q?vTEEu5elEdxlmEKSZiwUw2L/nbXZM8VirKYBODZFQPAwLCK4idEu0h8+Q2rv?= =?us-ascii?Q?guOuzl0Zl+z0e2eLoJ2yikNOYGzC+tsBr6ibQH7EUOEktVHKaoq19nmlPtdB?= =?us-ascii?Q?y9AOrEvGF1/Gi2CXwvWRYvutGiR+LgvJfXCvulJRorWoyaUq825QbCKnbe4J?= =?us-ascii?Q?pwpHrAHcMELomOx8YYUgMkJWXOYsJ9D07K530sSG5imJqCBSFmkaflGelVAn?= =?us-ascii?Q?FfJl1LOAytiQMw0e6zDCoq/lMy/N0uaA1Z6rEkS7zzcOI8cVgm/lMq/HU6re?= =?us-ascii?Q?euPXfsBK1IfUmgaJtBJ5jwNXReVqq41p0PCydS9qXEFiCzQ70XOa85Pwo5Se?= =?us-ascii?Q?CrpDlvgfBYTdHF/7L1EFAeV5pSyrASbljq3NzvoVg2UQltCqszCYku8iZ4UH?= =?us-ascii?Q?4GZ+R0WY2ooyrJrVvwYNHa4qNgn9vsGSRJeN?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:34:01.8211 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 53d76d1f-650b-4862-faf1-08ddc43b2292 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E61.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8279 Received-SPF: permerror client-ip=2a01:111:f403:200a::60a; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM12-MW2-obe.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_PASS=-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: 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: 1752651274614116600 Content-Type: text/plain; charset="utf-8" The AMD IOMMU is set up at boot time and uses PCI bus numbers + devfn for indexing into DTE. The problem is that before the guest started, all PCI bus numbers are 0 as no PCI discovery happened yet (BIOS or/and kernel will do that later) so relying on the bus number is wrong. The immediate effect is emulated devices cannot do DMA when places on a bus other that 0. Replace static array of address_space with hash table which uses devfn and PCIBus* for key as it is not going to change after the guest is booted. Co-developed-by: Alexey Kardashevskiy Signed-off-by: Alexey Kardashevskiy Signed-off-by: Sairaj Kodilkar --- hw/i386/amd_iommu.c | 124 +++++++++++++++++++++++++++----------------- hw/i386/amd_iommu.h | 2 +- 2 files changed, 76 insertions(+), 50 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index a34062153194..33916b458611 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -59,7 +59,7 @@ const char *amdvi_mmio_high[] =3D { }; =20 struct AMDVIAddressSpace { - uint8_t bus_num; /* bus number */ + PCIBus *bus; /* PCIBus (for bus number) */ uint8_t devfn; /* device function */ AMDVIState *iommu_state; /* AMDVI - one per machine */ MemoryRegion root; /* AMDVI Root memory map region */ @@ -101,6 +101,11 @@ typedef enum AMDVIFaultReason { AMDVI_FR_PT_ENTRY_INV, /* Failure to read PTE from guest memory */ } AMDVIFaultReason; =20 +typedef struct amdvi_as_key { + PCIBus *bus; + int devfn; +} amdvi_as_key; + uint64_t amdvi_extended_feature_register(AMDVIState *s) { uint64_t feature =3D AMDVI_DEFAULT_EXT_FEATURES; @@ -360,6 +365,42 @@ static guint amdvi_uint64_hash(gconstpointer v) return (guint)*(const uint64_t *)v; } =20 +static gboolean amdvi_as_equal(gconstpointer v1, gconstpointer v2) +{ + const struct amdvi_as_key *key1 =3D v1; + const struct amdvi_as_key *key2 =3D v2; + + return key1->bus =3D=3D key2->bus && key1->devfn =3D=3D key2->devfn; +} + +static guint amdvi_as_hash(gconstpointer v) +{ + const struct amdvi_as_key *key =3D v; + return (guint)((uint64_t)key->bus | (key->devfn << 24)); +} + +static AMDVIAddressSpace *amdvi_as_lookup(AMDVIState *s, PCIBus *bus, + int devfn) +{ + amdvi_as_key key =3D { .bus =3D bus, .devfn =3D devfn }; + return g_hash_table_lookup(s->address_spaces, &key); +} + +static int amdvi_find_as_by_devid(gpointer key, gpointer value, + gpointer user_data) +{ + amdvi_as_key *as =3D (struct amdvi_as_key *)key; + uint16_t devid =3D *((uint16_t *)user_data); + + return devid =3D=3D PCI_BUILD_BDF(pci_bus_num(as->bus), as->devfn); +} + +static AMDVIAddressSpace *amdvi_get_as_by_devid(AMDVIState *s, uint16_t de= vid) +{ + return g_hash_table_find(s->address_spaces, + amdvi_find_as_by_devid, &devid); +} + static AMDVIIOTLBEntry *amdvi_iotlb_lookup(AMDVIState *s, hwaddr addr, uint64_t devid) { @@ -530,7 +571,7 @@ static inline uint64_t amdvi_get_pte_entry(AMDVIState *= s, uint64_t pte_addr, =20 static int amdvi_as_to_dte(AMDVIAddressSpace *as, uint64_t *dte) { - uint16_t devid =3D PCI_BUILD_BDF(as->bus_num, as->devfn); + uint16_t devid =3D PCI_BUILD_BDF(pci_bus_num(as->bus), as->devfn); AMDVIState *s =3D as->iommu_state; =20 if (!amdvi_get_dte(s, devid, dte)) { @@ -983,23 +1024,13 @@ static void amdvi_switch_address_space(AMDVIAddressS= pace *amdvi_as) */ static void amdvi_switch_address_space_all(AMDVIState *s) { - AMDVIAddressSpace **iommu_as; - - for (int bus_num =3D 0; bus_num < PCI_BUS_MAX; bus_num++) { - - /* Nothing to do if there are no devices on the current bus */ - if (!s->address_spaces[bus_num]) { - continue; - } - iommu_as =3D s->address_spaces[bus_num]; + AMDVIAddressSpace *iommu_as; + GHashTableIter as_it; =20 - for (int devfn =3D 0; devfn < PCI_DEVFN_MAX; devfn++) { + g_hash_table_iter_init(&as_it, s->address_spaces); =20 - if (!iommu_as[devfn]) { - continue; - } - amdvi_switch_address_space(iommu_as[devfn]); - } + while (g_hash_table_iter_next(&as_it, NULL, (void **)&iommu_as)) { + amdvi_switch_address_space(iommu_as); } } =20 @@ -1012,28 +1043,22 @@ static void amdvi_switch_address_space_all(AMDVISta= te *s) */ static void amdvi_update_addr_translation_mode(AMDVIState *s, uint16_t dev= id) { - uint8_t bus_num, devfn, dte_mode; + uint8_t dte_mode; AMDVIAddressSpace *as; uint64_t dte[4] =3D { 0 }; IOMMUNotifier *n; int ret; =20 - /* - * Convert the devid encoded in the command to a bus and devfn in - * order to retrieve the corresponding address space. - */ - bus_num =3D PCI_BUS_NUM(devid); - devfn =3D devid & 0xff; - /* * The main buffer of size (AMDVIAddressSpace *) * (PCI_BUS_MAX) has a= lready * been allocated within AMDVIState, but must be careful to not access * unallocated devfn. */ - if (!s->address_spaces[bus_num] || !s->address_spaces[bus_num][devfn])= { + + as =3D amdvi_get_as_by_devid(s, devid); + if (!as) { return; } - as =3D s->address_spaces[bus_num][devfn]; =20 ret =3D amdvi_as_to_dte(as, dte); =20 @@ -1699,7 +1724,7 @@ static void amdvi_do_translate(AMDVIAddressSpace *as,= hwaddr addr, bool is_write, IOMMUTLBEntry *ret) { AMDVIState *s =3D as->iommu_state; - uint16_t devid =3D PCI_BUILD_BDF(as->bus_num, as->devfn); + uint16_t devid =3D PCI_BUILD_BDF(pci_bus_num(as->bus), as->devfn); AMDVIIOTLBEntry *iotlb_entry =3D amdvi_iotlb_lookup(s, addr, devid); uint64_t entry[4]; int dte_ret; @@ -1773,7 +1798,7 @@ static IOMMUTLBEntry amdvi_translate(IOMMUMemoryRegio= n *iommu, hwaddr addr, } =20 amdvi_do_translate(as, addr, flag & IOMMU_WO, &ret); - trace_amdvi_translation_result(as->bus_num, PCI_SLOT(as->devfn), + trace_amdvi_translation_result(pci_bus_num(as->bus), PCI_SLOT(as->devf= n), PCI_FUNC(as->devfn), addr, ret.translated_addr); return ret; } @@ -2137,30 +2162,28 @@ static AddressSpace *amdvi_host_dma_iommu(PCIBus *b= us, void *opaque, int devfn) { char name[128]; AMDVIState *s =3D opaque; - AMDVIAddressSpace **iommu_as, *amdvi_dev_as; - int bus_num =3D pci_bus_num(bus); + AMDVIAddressSpace *amdvi_dev_as; + amdvi_as_key *key; =20 - iommu_as =3D s->address_spaces[bus_num]; + amdvi_dev_as =3D amdvi_as_lookup(s, bus, devfn); =20 /* allocate memory during the first run */ - if (!iommu_as) { - iommu_as =3D g_new0(AMDVIAddressSpace *, PCI_DEVFN_MAX); - s->address_spaces[bus_num] =3D iommu_as; - } - - /* set up AMD-Vi region */ - if (!iommu_as[devfn]) { + if (!amdvi_dev_as) { snprintf(name, sizeof(name), "amd_iommu_devfn_%d", devfn); =20 - iommu_as[devfn] =3D g_new0(AMDVIAddressSpace, 1); - iommu_as[devfn]->bus_num =3D (uint8_t)bus_num; - iommu_as[devfn]->devfn =3D (uint8_t)devfn; - iommu_as[devfn]->iommu_state =3D s; - iommu_as[devfn]->notifier_flags =3D IOMMU_NONE; - iommu_as[devfn]->iova_tree =3D iova_tree_new(); - iommu_as[devfn]->addr_translation =3D false; + amdvi_dev_as =3D g_new0(AMDVIAddressSpace, 1); + key =3D g_new0(amdvi_as_key, 1); =20 - amdvi_dev_as =3D iommu_as[devfn]; + amdvi_dev_as->bus =3D bus; + amdvi_dev_as->devfn =3D (uint8_t)devfn; + amdvi_dev_as->iommu_state =3D s; + amdvi_dev_as->notifier_flags =3D IOMMU_NONE; + amdvi_dev_as->iova_tree =3D iova_tree_new(); + amdvi_dev_as->addr_translation =3D false; + key->bus =3D bus; + key->devfn =3D devfn; + + g_hash_table_insert(s->address_spaces, key, amdvi_dev_as); =20 /* * Memory region relationships looks like (Address range shows @@ -2203,7 +2226,7 @@ static AddressSpace *amdvi_host_dma_iommu(PCIBus *bus= , void *opaque, int devfn) =20 amdvi_switch_address_space(amdvi_dev_as); } - return &iommu_as[devfn]->as; + return &amdvi_dev_as->as; } =20 static const PCIIOMMUOps amdvi_iommu_ops =3D { @@ -2244,7 +2267,7 @@ static int amdvi_iommu_notify_flag_changed(IOMMUMemor= yRegion *iommu, if (!s->dma_remap && (new & IOMMU_NOTIFIER_MAP)) { error_setg_errno(errp, ENOTSUP, "device %02x.%02x.%x requires dma-remap=3D1", - as->bus_num, PCI_SLOT(as->devfn), PCI_FUNC(as->devfn)); + pci_bus_num(as->bus), PCI_SLOT(as->devfn), PCI_FUNC(as->de= vfn)); return -ENOTSUP; } =20 @@ -2353,6 +2376,9 @@ static void amdvi_sysbus_realize(DeviceState *dev, Er= ror **errp) s->iotlb =3D g_hash_table_new_full(amdvi_uint64_hash, amdvi_uint64_equal, g_free, g_free); =20 + s->address_spaces =3D g_hash_table_new_full(amdvi_as_hash, + amdvi_as_equal, g_free, g_free); + /* This device should take care of IOMMU PCI properties */ if (!qdev_realize(DEVICE(&s->pci), &bus->qbus, errp)) { return; diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 3dd4e7e3e8b8..37a57c4dd553 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -409,7 +409,7 @@ struct AMDVIState { bool mmio_enabled; =20 /* for each served device */ - AMDVIAddressSpace **address_spaces[PCI_BUS_MAX]; + GHashTable *address_spaces; =20 /* list of address spaces with registered notifiers */ QLIST_HEAD(, AMDVIAddressSpace) amdvi_as_with_notifiers; --=20 2.34.1 From nobody Sat Nov 15 09:50:13 2025 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=1752651281; cv=pass; d=zohomail.com; s=zohoarc; b=O+xvt78bxuENdNMdKWQ+lUbVXQb0tZHiYhFWq5kKCVokHFXzctlQBVoyxkEcY1DpQ6yyQeBwHd7qqzG8OqfKEwZjd/eCxKC617yR5WJw6ZwTBpuPXOZe087yHO2r413mXp+S9D8PtarbHCnuL237PbJYTWJSncbC0Xq8k1DnmI4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752651281; 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=S6RRUFaRtYaLJtIc0WFz+rCvfOmoEeLDqJcKIOUZhFE=; b=XLxDtzCcFw0Dz1bSIxp/QT/0A3JbYoZ0ToORsCZZcoeA+OW+Efe0aV7wqGIctOhpdMbhacBXy8+CoVWGJiglryIeZPSlTZACCKRRMESXigTi9pSBC75DMAeSB2wNIvfDDLvvZJln2aQg0Nly8y7X/6gN2Vt2SQQ7s8u4Xxvpd4c= 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 1752651281898523.5118972670648; Wed, 16 Jul 2025 00:34:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubwes-0007J1-Ua; Wed, 16 Jul 2025 03:34:31 -0400 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 1ubwer-0007Cp-F6 for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:34:29 -0400 Received: from mail-dm6nam12on20630.outbound.protection.outlook.com ([2a01:111:f403:2417::630] helo=NAM12-DM6-obe.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 1ubweo-0000n4-Fd for qemu-devel@nongnu.org; Wed, 16 Jul 2025 03:34:29 -0400 Received: from BN9P221CA0028.NAMP221.PROD.OUTLOOK.COM (2603:10b6:408:10a::10) by CH3PR12MB8284.namprd12.prod.outlook.com (2603:10b6:610:12e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.36; Wed, 16 Jul 2025 07:34:18 +0000 Received: from BL6PEPF00020E66.namprd04.prod.outlook.com (2603:10b6:408:10a:cafe::6e) by BN9P221CA0028.outlook.office365.com (2603:10b6:408:10a::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.20 via Frontend Transport; Wed, 16 Jul 2025 07:34:17 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF00020E66.mail.protection.outlook.com (10.167.249.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 07:34:17 +0000 Received: from BLR-L1-SARUNKOD.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 02:34:14 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k0MB0KXhfjav6No76gL0rSoyFmMWrjPOxGHisLmgGD/w/W6o0SGu8MJJmFwXo7DrEBY8hZQcGoMkE1CfsyNvhwFDAdBrBiDpYOP1TxG/L5p7R8RxwLDpFk0lMMaVj3kKvf8s1ivMkDjeEwJmjtHrm2QtRl/KAP6PBk67DItZoFOUuPK3SfAcYJfoBnk4ADokf51VJSoNyjQnkPJSmArCFjwzwmCzJzMSMvRXiboFX6lJga3tEKUtAT52aQF+XhN7dI3vydMOCW5DArkO5on/+hCui8tganzE3We71q6kA3pkjEAeW5lfL2gHXY0IiCHTKWU8TN3sDb582wPrlawjqg== 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=S6RRUFaRtYaLJtIc0WFz+rCvfOmoEeLDqJcKIOUZhFE=; b=d8fPTiYVlwmtcB9Clb3e43Uz1TS2RZs2QK6XPXfx59altwSuGas+HLL1gWFWZTLgfkHe6lyURV9GO7cBeW+oXGbrAiE4DxqZNfIzGB8rFQ8S6RtfQWZswxwEKCIQukWRyAmg5iWCLTCP16dCAqG2sPG39yiO8124ewr/w8d0Ulw6juorcF2pNISa8km0OjOReYqGJjoNvdBkV7ayK697He1jC2JriCEva4/OVrv9DmbRvsULN/7EteIF3kO/aE0Kv+eXK05kNbta+T3afS9y1J/OmXhSI5pwptkEYDp0kTc72+RpBMIPc8KiSPqWD/WmwxAT/ErWCGUS2enP1ybIdA== 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=S6RRUFaRtYaLJtIc0WFz+rCvfOmoEeLDqJcKIOUZhFE=; b=xoMI355x2vNOBieUkuU/MLuTTNiLtcGb553FXDW2UKj4hiY9vdZ7jIVVmzmUaxx8SBr4olPqFy1PAWe1VrA0ujYy+PSrj4vYk0B+Ejhp7o6EUn79K/S6MuAyHlQBNxQ8/rchYznY2dunm9M8SNAD37FbnZMtbBTWSSBoNGzoBhQ= 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=SATLEXMB04.amd.com; pr=C From: Sairaj Kodilkar To: CC: , , , , , , Sairaj Kodilkar Subject: [PATCH 7/7] hw/i386/amd_iommu: Support 64 bit address for IOTLB lookup Date: Wed, 16 Jul 2025 13:01:45 +0530 Message-ID: <20250716073145.915-8-sarunkod@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250716073145.915-1-sarunkod@amd.com> References: <20250716073145.915-1-sarunkod@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00020E66:EE_|CH3PR12MB8284:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a1a17cd-d4b4-43c5-8737-08ddc43b2c24 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jN+H47JsO8nO/TCGE2O4I7AAaTl/xj+r7oy1N7CDgPpg3ahDrqBwv5jVF+iF?= =?us-ascii?Q?BFdgk0H4Vqo3Z214QhJ1ZnJ/Xlx0dR9RBGfEXw7NjyD1OFY6Le8bGNbYFqeY?= =?us-ascii?Q?y0fh9XUs0l/eUdbOQQYZr7svC/0EqfYb8TclzpfkReY19jpMmRxnOghVNyjl?= =?us-ascii?Q?Jrg8Y9lhiQgeleJoY7nX6hDj1kT8HL2ynBmZHLGMAwaLtiSAHSQ3dp0CnMB+?= =?us-ascii?Q?2rxrN2g3TC5SzW+etAteHaCPQkkQ8wJkXXepso6XK75Klbhrlqi0ZkH9XU21?= =?us-ascii?Q?krg7KYKgpk9OUMdj5jtY14ysXqGLDXeHyPebJcFOOar4fI3ng1Wazpi2NFa3?= =?us-ascii?Q?V9pmtCi8VXp6Ij/O7ufmUYrS9RDLjK2I1P8JMYIPPsJ6WJ0dEmFyFv/R+Q1p?= =?us-ascii?Q?i75oj5mZe3eq4hBrKoUCv1fD/luK1DAk4QNFJL9PRyW55imkNIuPYWhXHXI1?= =?us-ascii?Q?KMm9tXIMCbKRpbwQrT6OKeuORbhSAkZvOluqY5hflNpgV5Nwv25GLNX95nZ3?= =?us-ascii?Q?Ll9w/X8ld0H3EuTU49+o7VTmmtXwYONYiSBP3RiN1yK+EW+QFYO358ryTXKb?= =?us-ascii?Q?8tiIxJpWrWVfko8oJP/XWXQAjHmETCrm3QUz5BWsqe6wc87LPgAeBOWcYv01?= =?us-ascii?Q?cqUeCcrK4QokfhRQ9t8ZGXRPcw2z6Rq412se5PwYlYQJIckFhglVIfafucV1?= =?us-ascii?Q?M7bSRzUPTVWUc4gnnbBCDR4V3r93v7X0cWZkK/MwlGxkMX3qUZRnSVXdpKb0?= =?us-ascii?Q?2Gn6k+vU+dNyKDiTz1S1zTwACzAjrTK7tMnFst+U7HlP8BJLzdKcNe8rhCrP?= =?us-ascii?Q?T/EBGewjowDcHnndrt/GFHNZGhNoUC24OfCEq5oKNPf4oQ2gUNnlTZaFNolV?= =?us-ascii?Q?z1luUgVZv7kKm48gTy6DA0YMf6X7Ua0Hxz+ezAS0o0fHi3I+JpSR00r4paTT?= =?us-ascii?Q?3rxlNJ9jY8v+ZL2dXTYOx4iR4H6U8zBnULWe3GW6gpQVO7odjHBgOl7zSMGT?= =?us-ascii?Q?pqQkTNoWP/B9SAREVuVAzpL87YKupTQMd4QioV8wCzgvGnNRfmpxwzDIXnD4?= =?us-ascii?Q?9by4EVo7zO4E8YXeqNrT/Y1oq9VEJ+w//N6HcMnxTtxcIDB2Wd77slaVPzdn?= =?us-ascii?Q?0ChEXW4q/r64+Yt6oLv/fssB4OCHPgzpl1xFUAbtNDoiQRYiGPoa6dEzUCy5?= =?us-ascii?Q?i9oX45VWTgPKRHMW6rWadJqufac3LoOrj1UEl3z+IAp7Dq0EFAi05rcHJmvO?= =?us-ascii?Q?3sTE8694KSFoxJ6L52JYMH1Pc3uFIkyhJy2AQOcdUtRx4DcFPMOdVOgDSb7M?= =?us-ascii?Q?cIk7c+t66ycachwkJSe5ExxQut6/csn9o8hVJGcwlPFOhfDBbiWVtr+BRDoX?= =?us-ascii?Q?k8J8QJUyzhY0htsrACdoJ8L4iyJjJf8Z7D4D307+V4f3Ob/ZnvRwUfYU2Gz8?= =?us-ascii?Q?LRgPAUzfm5YmuWMitceQ4vV5HP0xY51cu2flC6rOJMiqahUsVjmsuRcGSORT?= =?us-ascii?Q?szeESco1JJuiNBalYk9yk+z6lHOF2eLEX/6R?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(1800799024)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 07:34:17.8756 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0a1a17cd-d4b4-43c5-8737-08ddc43b2c24 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00020E66.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8284 Received-SPF: permerror client-ip=2a01:111:f403:2417::630; envelope-from=Sairaj.ArunKodilkar@amd.com; helo=NAM12-DM6-obe.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_PASS=-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: 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: 1752651282827116600 Content-Type: text/plain; charset="utf-8" Physical AMD IOMMU supports upto 64 bits of DMA address. When device tries to read or write from the given DMA address, IOMMU translates the address using page table assigned to that device. Since IOMMU uses per device page tables, the emulated IOMMU should use the cache tag of 68 bits (64 bit address - 12 bit page alignment + 16 device ID). Current emulated AMD IOMMU uses GLib hash table to create software iotlb and uses 64 bit key to store the IOVA and deviceID, which limits the IOVA to 60 bits. This cause failure while setting up the device when guest is booted with "iommu.forcedac=3D1". One example of the failure is when there = are two virtio ethernet devices attached to the guest with -netdev user,id=3DUSER0 \ -netdev user,id=3DUSER1 \ -device virtio-net-pci,id=3Dvnet0,iommu_platform=3Don,disable-legacy=3D= on,romfile=3D,netdev=3DUSER0 \ -device virtio-net-pci,id=3Dvnet1,iommu_platform=3Don,disable-legacy=3D= on,romfile=3D,netdev=3DUSER1 \ In this case dhclient fails for second device with following dmesg [ 24.802644] virtio_net virtio0 enp0s1: TX timeout on queue: 0, sq: outpu= t.0, vq: 0x1, name: output.0, 5664000 usecs ago [ 29.856716] virtio_net virtio0 enp0s1: NETDEV WATCHDOG: CPU: 59: transmi= t queue 0 timed out 10720 ms [ 29.858585] virtio_net virtio0 enp0s1: TX timeout on queue: 0, sq: outpu= t.0, vq: 0x1, name: output.0, 10720000 usecs ago To solve this problem, define `struct amdvi_iotlb_key` which uses 64 bit IOVA and 16 bit devid as key to store and lookup IOTLB entry. Fixes: d29a09ca6842 ("hw/i386: Introduce AMD IOMMU") Signed-off-by: Sairaj Kodilkar --- hw/i386/amd_iommu.c | 51 ++++++++++++++++++++++++++++----------------- hw/i386/amd_iommu.h | 5 +++-- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 33916b458611..a2a2c0f0be23 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -106,6 +106,11 @@ typedef struct amdvi_as_key { int devfn; } amdvi_as_key; =20 +typedef struct amdvi_iotlb_key { + uint64_t gfn; + uint16_t devid; +} amdvi_iotlb_key; + uint64_t amdvi_extended_feature_register(AMDVIState *s) { uint64_t feature =3D AMDVI_DEFAULT_EXT_FEATURES; @@ -355,16 +360,6 @@ static void amdvi_log_pagetab_error(AMDVIState *s, uin= t16_t devid, PCI_STATUS_SIG_TARGET_ABORT); } =20 -static gboolean amdvi_uint64_equal(gconstpointer v1, gconstpointer v2) -{ - return *((const uint64_t *)v1) =3D=3D *((const uint64_t *)v2); -} - -static guint amdvi_uint64_hash(gconstpointer v) -{ - return (guint)*(const uint64_t *)v; -} - static gboolean amdvi_as_equal(gconstpointer v1, gconstpointer v2) { const struct amdvi_as_key *key1 =3D v1; @@ -401,11 +396,27 @@ static AMDVIAddressSpace *amdvi_get_as_by_devid(AMDVI= State *s, uint16_t devid) amdvi_find_as_by_devid, &devid); } =20 +static gboolean amdvi_iotlb_equal(gconstpointer v1, gconstpointer v2) +{ + const amdvi_iotlb_key *key1 =3D v1; + const amdvi_iotlb_key *key2 =3D v2; + + return key1->devid =3D=3D key2->devid && key1->gfn =3D=3D key2->gfn; +} + +static guint amdvi_iotlb_hash(gconstpointer v) +{ + const amdvi_iotlb_key *key =3D v; + /* Use GPA and DEVID to find the bucket */ + return (guint)(key->gfn << AMDVI_PAGE_SHIFT_4K | + (key->devid & ~AMDVI_PAGE_MASK_4K)); +} + + static AMDVIIOTLBEntry *amdvi_iotlb_lookup(AMDVIState *s, hwaddr addr, uint64_t devid) { - uint64_t key =3D (addr >> AMDVI_PAGE_SHIFT_4K) | - ((uint64_t)(devid) << AMDVI_DEVID_SHIFT); + amdvi_iotlb_key key =3D {devid, AMDVI_GET_IOTLB_GFN(addr)}; return g_hash_table_lookup(s->iotlb, &key); } =20 @@ -427,8 +438,7 @@ static gboolean amdvi_iotlb_remove_by_devid(gpointer ke= y, gpointer value, static void amdvi_iotlb_remove_page(AMDVIState *s, hwaddr addr, uint64_t devid) { - uint64_t key =3D (addr >> AMDVI_PAGE_SHIFT_4K) | - ((uint64_t)(devid) << AMDVI_DEVID_SHIFT); + amdvi_iotlb_key key =3D {devid, AMDVI_GET_IOTLB_GFN(addr)}; g_hash_table_remove(s->iotlb, &key); } =20 @@ -439,8 +449,10 @@ static void amdvi_update_iotlb(AMDVIState *s, uint16_t= devid, /* don't cache erroneous translations */ if (to_cache.perm !=3D IOMMU_NONE) { AMDVIIOTLBEntry *entry =3D g_new(AMDVIIOTLBEntry, 1); - uint64_t *key =3D g_new(uint64_t, 1); - uint64_t gfn =3D gpa >> AMDVI_PAGE_SHIFT_4K; + amdvi_iotlb_key *key =3D g_new(amdvi_iotlb_key, 1); + + key->gfn =3D AMDVI_GET_IOTLB_GFN(gpa); + key->devid =3D devid; =20 trace_amdvi_cache_update(domid, PCI_BUS_NUM(devid), PCI_SLOT(devid= ), PCI_FUNC(devid), gpa, to_cache.translated_addr); @@ -453,7 +465,8 @@ static void amdvi_update_iotlb(AMDVIState *s, uint16_t = devid, entry->perms =3D to_cache.perm; entry->translated_addr =3D to_cache.translated_addr; entry->page_mask =3D to_cache.addr_mask; - *key =3D gfn | ((uint64_t)(devid) << AMDVI_DEVID_SHIFT); + entry->devid =3D devid; + g_hash_table_replace(s->iotlb, key, entry); } } @@ -2373,8 +2386,8 @@ static void amdvi_sysbus_realize(DeviceState *dev, Er= ror **errp) X86MachineState *x86ms =3D X86_MACHINE(ms); PCIBus *bus =3D pcms->pcibus; =20 - s->iotlb =3D g_hash_table_new_full(amdvi_uint64_hash, - amdvi_uint64_equal, g_free, g_free); + s->iotlb =3D g_hash_table_new_full(amdvi_iotlb_hash, + amdvi_iotlb_equal, g_free, g_free); =20 s->address_spaces =3D g_hash_table_new_full(amdvi_as_hash, amdvi_as_equal, g_free, g_free); diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 37a57c4dd553..04d48d23bce6 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -218,8 +218,9 @@ #define PAGE_SIZE_PTE_COUNT(pgsz) (1ULL << ((ctz64(pgsz) - 12) % 9)) =20 /* IOTLB */ -#define AMDVI_IOTLB_MAX_SIZE 1024 -#define AMDVI_DEVID_SHIFT 36 +#define AMDVI_IOTLB_MAX_SIZE 1024 +#define AMDVI_IOTLB_DEVID_SHIFT 48 +#define AMDVI_GET_IOTLB_GFN(addr) (addr >> AMDVI_PAGE_SHIFT_4K) =20 /* default extended feature */ #define AMDVI_DEFAULT_EXT_FEATURES \ --=20 2.34.1