From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216431; cv=pass; d=zohomail.com; s=zohoarc; b=HnaFT5OdTyJR/Na2uBNJFAtyjMfhYeMlyf7t6BTL7HHFIrBuiERsWYa5U+josDREQWkeVCNeIMXG+EmZnKEKgO3FXYfMtJkCZVe4YXmHXkkXOrltEEv+jpHVwvrPi4Y8dXWRsSjD3JmG49s0Tnwnp6hWWE4aoXizgLl+yVv3moE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216431; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+NdYqVfoDf9xHmhA+7J0L70Y6IbKWMvcC1UUUVdHv/s=; b=M2g4zORc33zlzsIpSSIDwn+doQWvb6sm/2n1cKKBGVz+DCI8M0ZOmPVD9/1QOKwsKS9zuKjvAuENBYp9+USirZWfm1XJBOB5dhcLbzVWCECfLVHj6olbRJkxD+ua0y61nkABI1r15SecXMMzCVSpqBs6TpYzY+VcJIlbehEOYF4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216431019375.742282890041; Sun, 20 Apr 2025 23:20:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960833.1352483 (Exim 4.92) (envelope-from ) id 1u6kVD-00058J-0h; Mon, 21 Apr 2025 06:19:35 +0000 Received: by outflank-mailman (output) from mailman id 960833.1352483; Mon, 21 Apr 2025 06:19:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVC-00058B-Rq; Mon, 21 Apr 2025 06:19:34 +0000 Received: by outflank-mailman (input) for mailman id 960833; Mon, 21 Apr 2025 06:19:34 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVC-00057u-0g for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:34 +0000 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on20608.outbound.protection.outlook.com [2a01:111:f403:2418::608]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 94db8d72-1e78-11f0-9ffb-bf95429c2676; Mon, 21 Apr 2025 08:19:30 +0200 (CEST) Received: from PH7P220CA0112.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32d::33) by MN2PR12MB4407.namprd12.prod.outlook.com (2603:10b6:208:260::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.33; Mon, 21 Apr 2025 06:19:23 +0000 Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com (2603:10b6:510:32d:cafe::48) by PH7P220CA0112.outlook.office365.com (2603:10b6:510:32d::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.35 via Frontend Transport; Mon, 21 Apr 2025 06:19:22 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:22 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:21 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 94db8d72-1e78-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gOOQE9TIct/aSdd0KdMgeU1VVi/lydl3Oi/o3xaQDC+ceBNBYk4AhzRPzLVOSsMNrENf50XYQ7I8fo+7yl6p/5Xccq6NHzqaJrzGU/Lo5L2TbAGfAIfTem2oRQ1b03qfXKYigcfDKDQ0Ft+bauJ4tLgPhcLHQEMnOtYrASDW19+XmjodbL4mhUUNStpAS/ZOrLnodMRc4wNk+uqSao6bN2z1Xy7UE46Wxg1P5K43HUOhyhY/vbSGG45ldxNOCWDDxz3YI7ISIlSMVVpvUml/QEqesNODGmBShDeXjaDo/fh1Mjkg2ETX5Q5dlgtUuTlTIV/vV41Kc5RNpoq4MxUXRg== 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=+NdYqVfoDf9xHmhA+7J0L70Y6IbKWMvcC1UUUVdHv/s=; b=O/YhYDQf8v4N4FbLwNztdvh1Z8yLFzOD2nD8JpRLJJZhLCHfET8A7vGqeNcGn1PCUFC+betg8rAC1bVHEAPb7SYnLMtubwkYY2nQ+1YijzMo0Ij25QzjxdovlgheH7arS6YsTVe4DWa4o7okZtHSzjaraXt1D0Qdth2M9DyEaBgrfzDtZ9SapXQ8T5uVhTmbN7LbzPvJBeJAuDt+/0qvZ1f97r2W3Iz/fI37MX5oT5KLCzXfpIvck56vVbspzmTLzY7+dfocHAKlfWaGBlMKjKcLg7+Aw/cWtEKgGZjE6KzxfOfqvNva/3ouz8tAzkCwTBYmX0oFUWUTxHOWc+Tuaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=+NdYqVfoDf9xHmhA+7J0L70Y6IbKWMvcC1UUUVdHv/s=; b=Btmuay+XtPV6JIMSjg3u3Ems1BX1xcU3WuNZSbkEar4CU3g2oR11FJDQV1l4iBszlhzy+ftgoVNmgwRhcK/K99P0PZ95q1xjrFcEOZ8wMXSV7ZxfpmGRzznAv0GSXTbE+tonfd1/zS7w1fR3bwHl1RhRb8LRWmLQ5WiMRtpOlYU= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 01/11] vpci/header: Move emulating cap list logic into new function Date: Mon, 21 Apr 2025 14:18:53 +0800 Message-ID: <20250421061903.1542652-2-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C7:EE_|MN2PR12MB4407:EE_ X-MS-Office365-Filtering-Correlation-Id: a7a2e904-5356-43aa-aa36-08dd809c7558 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: =?utf-8?B?bWJCMUtkNXBxVWFGUkRrRWRoR2NHaVp1ajM1aWdFOEtOTHFDUEFWOFo3dHFU?= =?utf-8?B?dDc5OExUd2I2OEN3c0cyRWpKYUZsUmpYczhYYllEc1VqY0pVNUx0Y3dSUGJM?= =?utf-8?B?Vzc2aHpLakpHQWNvT2xZd3lGcGtuTTNoajVTSi9naGpZZ01hNHlsVlFGU2FD?= =?utf-8?B?c3E3Um5ReS9maXRmVy9NUmtYVWUxWFpiak02VkVEMUE1RmRrRDRjRDdVN3gw?= =?utf-8?B?aHFqYmNlUzJ2aGZvbGtZV0tMVEF5aTRaRmVrRXM5V2RwL3NHcmJvbFU0QlNo?= =?utf-8?B?Z2RULzRuMlN1bUVJcVVmdmdUM1hoc25sdzlNNXNqSGQ0ZXlYYW4rSk1Lb2NK?= =?utf-8?B?Q3V0NE44RHlGWERrWVdUUVdaclhqOXduUC9BV3p6WU9mS1p0R0xKdlBDdSsz?= =?utf-8?B?MUhxOXBOZzNycnE5MmFqZUEvcVFKMDAySFBuNVFjQUQzY3NSMGIrWFhPVTBy?= =?utf-8?B?Nml5dGRZOTFqREpnMnZLTHpwWXM5c2dFcXVFUVZHSnVSYjlZdTFxZWphQXBs?= =?utf-8?B?S2huUHZqNXBPWTZlamd4SHowUDB5cTdZa3Axc25jZDQ1eG80cnVQQzg3VURq?= =?utf-8?B?cE0yNUdmeUtKUGZZVURDb2RyQkc5Q2tlNDNleVQyekJKV1JPRFl2bnc0Ym9E?= =?utf-8?B?a3dLdllScG9KUXF2NVFHWE5uOFFvMVB3WkhJbVVkNGFyOUY4ZXlGWnhFbDhU?= =?utf-8?B?WDdCSzhrVnUzeXUyenlteUxqUlhBS3hVVm9yQlRNRUpkS0NoZXF5MlZxMllQ?= =?utf-8?B?RjNMZU1KVGE0djdhS3p3dFY4OC9XS1hkUkZJVm5jNnZzNCt3YTZEN3VmbXcy?= =?utf-8?B?QkgvUUlkaG1lOGtxWDl2M1BGL0NSeS9pNEY0eVN5NFZDS0xpQ0ZMb0o2dUxI?= =?utf-8?B?bER1Yjk4dmZLZHpTSVdRV2dmMWFJelBHeHhmT0xNRkl0b2Nza0NOeDhJVk1k?= =?utf-8?B?MC9hcGpRTDN0UGVnRXI5OTgydTM5S3lTS2ZGZnJpK2NXdUtUN1dEcGJlR2NC?= =?utf-8?B?SFBiSlBtLzFkbGFkQjlUbWdEQndIQjhoVExlT0VocTBEQ0dSL0N0emVQajVs?= =?utf-8?B?UEF0MWRpVkcvSGQ5ZG1BVk5lWitoQzVnTGpwK1JIckQrUG9BWG83eEJIZXds?= =?utf-8?B?RGJ6U3FJK3A1OWVNdElrN2FLY0hEZ25SSnlIZjNFU20yMnB0OTFlNWE3Nkta?= =?utf-8?B?d1gxeHdwWlpncVpPeTFWanJPY0VmZTJzQWhSTm1wckd4ck5yZWZrVnc4cTRJ?= =?utf-8?B?RlVjemg4QTAyRGtGbHc5alNJYnpLMERPZURVK2J2Q3ltbHZrZ0RiSytGYnZl?= =?utf-8?B?MWQzbU0vV2ZEaFZHS3hxczZJTXRFWGEzNWxNMVFSMXYyV1duY3lhY2h4cDUr?= =?utf-8?B?VDU3em9xWjNXcFBzcjVxY0ZiYk9HY1l6M2JJOG04ZUFzazNzZlVqa09nY3J3?= =?utf-8?B?MWVVQWhTK3RmZW5jMnVndlU2MHRuTzVXdm85VWRFNk5IWlZjbXd5bVAyaGZ0?= =?utf-8?B?Uk1YOHI2bXJtNUFnYnhiRHhRY1NsZmFsQVVzN2pDY1FDeFF4QTFDaHlBVW1w?= =?utf-8?B?UFdkYm1kcVZVaFJUY1JONmJlZ0Y5cWxIQTI5S1NIV2xiYkk1MjdBUU9SQ1BD?= =?utf-8?B?WXI5UENBZkMyV3k4cE16K0QxZStIdlY5VTJPQW15dXEyS2VzeXRDT2ZXMXFM?= =?utf-8?B?ZEppQ2h3blJUdjErMzJKTkdnR1h6QlVZN24ra1V0c0h1N3RjT25xdzBaeXpK?= =?utf-8?B?aHZUeENSbWNrV3FxOWNVTC81cE9ScW9XT3pqVnIwd1VNNTBRbjc4QXA4cG4w?= =?utf-8?B?ZzNGUlF3eTRGV2hpR3NvMVJQUmpWZzVGUTRvT2hVNDZzSjNvNXc0S3AwN1ZU?= =?utf-8?B?cFRvZTJOdWJYMVpVc1ZBWjNmM0Z4bFQ2WjF0NHA4MVlKQ3BYVlFlcVdrT09n?= =?utf-8?B?bFd1VXRjcTVVY0tIQjBCRzZmdXQ5eDdGWllPRmJHaU9ERXVSalNyazd4UnBJ?= =?utf-8?B?UHJvTTBHYmxCQXlQaTJ2dTJZb3FiSjJWcWJMVmxZVFUzb2RVQTVKRDRpdzhq?= =?utf-8?Q?tt5qVD?= 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: 21 Apr 2025 06:19:22.7226 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7a2e904-5356-43aa-aa36-08dd809c7558 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: SJ1PEPF000026C7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4407 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216433102019000 No functional changes. Follow-on changes will benifit from this. Signed-off-by: Jiqian Chen Acked-by: Roger Pau Monn=C3=A9 --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: new patch. Best regards, Jiqian Chen. --- xen/drivers/vpci/header.c | 138 ++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 65 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index ef6c965c081c..3e9b44454b43 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -745,6 +745,75 @@ static int bar_add_rangeset(const struct pci_dev *pdev= , struct vpci_bar *bar, return !bar->mem ? -ENOMEM : 0; } =20 +static int vpci_init_capability_list(struct pci_dev *pdev) +{ + int rc; + bool mask_cap_list =3D false; + + if ( !is_hardware_domain(pdev->domain) && + pci_conf_read16(pdev->sbdf, PCI_STATUS) & PCI_STATUS_CAP_LIST ) + { + /* Only expose capabilities to the guest that vPCI can handle. */ + unsigned int next, ttl =3D 48; + static const unsigned int supported_caps[] =3D { + PCI_CAP_ID_MSI, + PCI_CAP_ID_MSIX, + }; + + next =3D pci_find_next_cap_ttl(pdev->sbdf, PCI_CAPABILITY_LIST, + supported_caps, + ARRAY_SIZE(supported_caps), &ttl); + + rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, + PCI_CAPABILITY_LIST, 1, + (void *)(uintptr_t)next); + if ( rc ) + return rc; + + next &=3D ~3; + + if ( !next ) + /* + * If we don't have any supported capabilities to expose to the + * guest, mask the PCI_STATUS_CAP_LIST bit in the status + * register. + */ + mask_cap_list =3D true; + + while ( next && ttl ) + { + unsigned int pos =3D next; + + next =3D pci_find_next_cap_ttl(pdev->sbdf, + pos + PCI_CAP_LIST_NEXT, + supported_caps, + ARRAY_SIZE(supported_caps), &ttl); + + rc =3D vpci_add_register(pdev->vpci, vpci_hw_read8, NULL, + pos + PCI_CAP_LIST_ID, 1, NULL); + if ( rc ) + return rc; + + rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, + pos + PCI_CAP_LIST_NEXT, 1, + (void *)(uintptr_t)next); + if ( rc ) + return rc; + + next &=3D ~3; + } + } + + /* Utilize rsvdp_mask to hide PCI_STATUS_CAP_LIST from the guest. */ + return vpci_add_register_mask(pdev->vpci, vpci_hw_read16, vpci_hw_writ= e16, + PCI_STATUS, 2, NULL, + PCI_STATUS_RO_MASK & + ~(mask_cap_list ? PCI_STATUS_CAP_LIST = : 0), + PCI_STATUS_RW1C_MASK, + mask_cap_list ? PCI_STATUS_CAP_LIST : 0, + PCI_STATUS_RSVDZ_MASK); +} + static int cf_check init_header(struct pci_dev *pdev) { uint16_t cmd; @@ -753,7 +822,6 @@ static int cf_check init_header(struct pci_dev *pdev) struct vpci_header *header =3D &pdev->vpci->header; struct vpci_bar *bars =3D header->bars; int rc; - bool mask_cap_list =3D false; bool is_hwdom =3D is_hardware_domain(pdev->domain); =20 ASSERT(rw_is_write_locked(&pdev->domain->pci_lock)); @@ -794,61 +862,12 @@ static int cf_check init_header(struct pci_dev *pdev) if ( rc ) return rc; =20 + rc =3D vpci_init_capability_list(pdev); + if ( rc ) + return rc; + if ( !is_hwdom ) { - if ( pci_conf_read16(pdev->sbdf, PCI_STATUS) & PCI_STATUS_CAP_LIST= ) - { - /* Only expose capabilities to the guest that vPCI can handle.= */ - unsigned int next, ttl =3D 48; - static const unsigned int supported_caps[] =3D { - PCI_CAP_ID_MSI, - PCI_CAP_ID_MSIX, - }; - - next =3D pci_find_next_cap_ttl(pdev->sbdf, PCI_CAPABILITY_LIST, - supported_caps, - ARRAY_SIZE(supported_caps), &ttl); - - rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, - PCI_CAPABILITY_LIST, 1, - (void *)(uintptr_t)next); - if ( rc ) - return rc; - - next &=3D ~3; - - if ( !next ) - /* - * If we don't have any supported capabilities to expose t= o the - * guest, mask the PCI_STATUS_CAP_LIST bit in the status - * register. - */ - mask_cap_list =3D true; - - while ( next && ttl ) - { - unsigned int pos =3D next; - - next =3D pci_find_next_cap_ttl(pdev->sbdf, - pos + PCI_CAP_LIST_NEXT, - supported_caps, - ARRAY_SIZE(supported_caps), &= ttl); - - rc =3D vpci_add_register(pdev->vpci, vpci_hw_read8, NULL, - pos + PCI_CAP_LIST_ID, 1, NULL); - if ( rc ) - return rc; - - rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, - pos + PCI_CAP_LIST_NEXT, 1, - (void *)(uintptr_t)next); - if ( rc ) - return rc; - - next &=3D ~3; - } - } - /* Extended capabilities read as zero, write ignore */ rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, 0x100, 4, (void *)0); @@ -856,17 +875,6 @@ static int cf_check init_header(struct pci_dev *pdev) return rc; } =20 - /* Utilize rsvdp_mask to hide PCI_STATUS_CAP_LIST from the guest. */ - rc =3D vpci_add_register_mask(pdev->vpci, vpci_hw_read16, vpci_hw_writ= e16, - PCI_STATUS, 2, NULL, - PCI_STATUS_RO_MASK & - ~(mask_cap_list ? PCI_STATUS_CAP_LIST = : 0), - PCI_STATUS_RW1C_MASK, - mask_cap_list ? PCI_STATUS_CAP_LIST : 0, - PCI_STATUS_RSVDZ_MASK); - if ( rc ) - return rc; - if ( pdev->ignore_bars ) return 0; =20 --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216403; cv=pass; d=zohomail.com; s=zohoarc; b=gVqHqJltXeGxacDn9utE4HSo+PG7UDfU7Kb8Qe/tFd+Mu3P5lS1+dkGHP5X2G5nlI7OkDVwEyg6ub3THq5Sl3+nNg5aNekueguXgC1h4sYwArNn+JSZXr+2vXaZ54DZCRK8q9byXG6RbvAXoY124xCZ4miR67Up5TZUm/rNhDC8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216403; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qOOZ7/CpX+4Q9buwrhLclR4GH2J6CoZoWc+RjO8QAwU=; b=BRA4YzGQljWKbeSAIS7bLzrmPv/3DC0uzPn8HmvENUAHJUOxq3fTPZvcX9spS6YXqF0m3nSU8TPDyE6k2rpZIH2BXBCDizcl3RYCUEeixI5O3ItDsVOx+4jm2kgcGBBKKKkVKTCmBq9zNOH1+dAmrblYMyCbana0pEg5FKVUtZQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216403021868.9726731513296; Sun, 20 Apr 2025 23:20:03 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960834.1352489 (Exim 4.92) (envelope-from ) id 1u6kVD-0005B6-B1; Mon, 21 Apr 2025 06:19:35 +0000 Received: by outflank-mailman (output) from mailman id 960834.1352489; Mon, 21 Apr 2025 06:19:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVD-00059m-2u; Mon, 21 Apr 2025 06:19:35 +0000 Received: by outflank-mailman (input) for mailman id 960834; Mon, 21 Apr 2025 06:19:34 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVC-00057v-Bt for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:34 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2062a.outbound.protection.outlook.com [2a01:111:f403:2417::62a]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 962f3590-1e78-11f0-9eb0-5ba50f476ded; Mon, 21 Apr 2025 08:19:32 +0200 (CEST) Received: from SJ0PR05CA0026.namprd05.prod.outlook.com (2603:10b6:a03:33b::31) by MN2PR12MB4360.namprd12.prod.outlook.com (2603:10b6:208:266::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Mon, 21 Apr 2025 06:19:27 +0000 Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com (2603:10b6:a03:33b:cafe::83) by SJ0PR05CA0026.outlook.office365.com (2603:10b6:a03:33b::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.23 via Frontend Transport; Mon, 21 Apr 2025 06:19:26 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:25 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:22 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 962f3590-1e78-11f0-9eb0-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MX9dQKwPR3BHsG0Ze7MU7iXlZsiAglZXetkZek7JAbIs/qNNvhqCBOfTQMmhZPqWa6CG2mjhCB48CdLF5MtpktpXPUAXtDlRuqU11Uheh4v6ebXvvLIAp4C1B6VaG5v2NU0LIaM951iXnTW+1ATNVo3RlIbM9SOKMuxIB5F1uEjf1rlSWx4qmX8/8RGz1+55JuWXYJIlQyseiFvebaFciMtrshb70YblNLSE+2U5OE2IP47sBs/dTdUXCCrz2RA95YqJg4Jj+ynjB4WhAWT0CL0g5pUUhAtSEmwZMwgQYBpz3ilwMgZ/k+4dk9AqpgF3TBkXK1j1ZGRcL0tQQCu2lw== 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=qOOZ7/CpX+4Q9buwrhLclR4GH2J6CoZoWc+RjO8QAwU=; b=wpZEx38frry+EOwd7fZM7aZjupoR+gq1Efltt2M87ccp7umuAYAyntZrAPqzmtO5Yn0x/T58sX52IF1volDr4VUh0rgycBh03XTG3VmEWMNp74Rw2bTt8Goap46lbVZVULnajrN/pbhz+MYCxfisPNT1T04cvw962S6LYkbok+qUwuaYuNBbnHLbuBaM9B+qWu+uLYc/7e6Vto6hXUrBUjUrWZDTc7Cu+9QqVII4g51VFMyTiBRA4ZA8Jpfvyj3NEM6ywPST2ogsPSVRqUGqfP9uqkocQFVqnVTzg7WslSKm9FNA2h2RERQl74TxaUv6d6An+tG3Lc8/N4P7Afk5sA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=qOOZ7/CpX+4Q9buwrhLclR4GH2J6CoZoWc+RjO8QAwU=; b=OoLxSr1kcKK4Za43AoWSsgcdWGeWypXzvAxDJtgaR3SWYS2Ybee4JgYpesynZRz2poyqwFP13M8pqpwKD7jG0OE5YxhNdYPo5waNiV9thVByMisyu4iqcPKn3INIhpIzCKJlqAL/w3aACQsgKffxyYrwnwfV9y+pK60KKixQ9k4= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , "Andrew Cooper" , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , "Stefano Stabellini" Subject: [PATCH v3 02/11] driver/pci: Get next capability without passing caps Date: Mon, 21 Apr 2025 14:18:54 +0800 Message-ID: <20250421061903.1542652-3-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C8:EE_|MN2PR12MB4360:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e73a68d-a281-4653-b4f2-08dd809c774e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cUlVVlZVVFdtdGVyTVR5L3dUN2RJSDRYZDUzb09NK0NibEVhY1htRTdzUnQ1?= =?utf-8?B?VlN5L3MyRUpsUjBRQ3dZTXRVOXEvS1hUQlRaV0kzaUVwQkU2eGdScVI2T05q?= =?utf-8?B?bjJHbjRXWnJwSnZMSFpjYVo0bHJoUGx0azJHTXp3dEF0ZjQ2MDg5UWpLdUpE?= =?utf-8?B?VlAyU3o1UXFwdkVhZ2NYSXkrY2RScFAvVHpoR1Jtd252clltcStwVytYSzFh?= =?utf-8?B?MVFHcStTdk1XU3pQZFVxWjRzUVBQS2p2MTBIci8vT3lIc05mbk1nSGZscFZz?= =?utf-8?B?VUJKTE42L0wrR3F1OTFiVk1TZ1Z5dTdJV3NKZUIyd3NYdE9iVW90L2FLN0xu?= =?utf-8?B?U2JVbmVKNnFUYm9sTWtsMmNOUjM5MW9FL3ZTTlRDNmhkeWlqKy9RQkZxVjNk?= =?utf-8?B?U3BmeTFBVWFpS0xkT2RjMURJODRUa3QzeExsdVpKZW1tRUZ1TkZzUFFrL0Zv?= =?utf-8?B?TzFHVTBnbURDNm5kZ0t4a3hjNkxkSCtVYnpOUnFnZEtGVkhHSDRvdFNIV2Fk?= =?utf-8?B?d1FIZnBJOHhveUk0d3JIeU5WY3F5UGtxNjJSSXZjUXMyVGk3QW9EMGVUTVJl?= =?utf-8?B?a3l0aHNvNERtbENMR2hyNzd3b2VSem56TEpWbFNtL2JFbDBBamp4MXNIcDJT?= =?utf-8?B?UFpoSituQ3A3dW44cWxWempybDIvdEJJU2d5ZklyVXpkTE5vNzlSZTlHSWU1?= =?utf-8?B?RC94ZlNhNmNuUDZxTE8wNUlGWXZQdVoyYTJHUUxGaFhvbzYyUnl0NTJvYmFT?= =?utf-8?B?cE15NW1hZGRpOWR2Z1ZIazhlM2tPSHZtYzRtMG1DTEdDOUR0bXd5K1owMTlR?= =?utf-8?B?V2srQmp0ajhZRzJqQnp4eDQrL1o3WnNsZHNPNmVtMnEySlhQbnV5V2RyeVVt?= =?utf-8?B?SHQ4VU1NbThSc0MwVW1Eczc1YXZMOVZ0NWFGVzRSYTVLak4vMjBjdit6TVV5?= =?utf-8?B?bkN2RzBPRmdTcXpVU3NET014ZWV4SXkzTGF1bFA4L3JZN3QxWVpDUkoxWDgw?= =?utf-8?B?dC9YZ09FcjRvWVFUMkZLQm4wL2hieExXektZVFZub1REZXRScjRNdFpwc0pm?= =?utf-8?B?Ymo1RmZlZXJIOGJRZmhUV0hkQkl5U251SDA3S1dJeXowOHVxK0JDejZ2bEE5?= =?utf-8?B?T0VpM3h2VDI1V0ZrLzFYY2JDTGJheEIxbDliYTVmRHhqSFcwaGxFNTJCQ0Uw?= =?utf-8?B?YnZMODBuNkV3ajUyY094cXBYaWExSmlpQlVZUlZvcTZzZTBRY0hTNWZIMzFt?= =?utf-8?B?cXB3Y3dCanBTaERUSUZEUE9HRTQ3SHZmKzZwYWd1d294WDVkc1FoR0tSMm1u?= =?utf-8?B?dm9FUFphWlRFMURoWWRQbjl2TlIrbkd0TUZoKzkxczhEQWZNbTlpYVYxakxR?= =?utf-8?B?YjFZQ2hVb1BJVDVUbHRSZk40SWIvUjdSYmtKS2pLUERGaThUYU91cFpVaTJW?= =?utf-8?B?Ni9vdm4yM2M0M0J5bGZjZXowdXgvVkxGNWIwT1JiazdLUU51Tmk2eW1ZTkRt?= =?utf-8?B?YUNlMlVwa3dFZ3VCaElVSjZRNWFuMFhkMVVhemJBTTZWUUhXRFc0eUhudEg0?= =?utf-8?B?MXBZSlNEQ20zZ0VZbklRcUJKNEF4R1RpZmU3dU5nQnZqMmhoQkMvbmZrYkJN?= =?utf-8?B?dFk1WmRVR2pKVlo5VnVpSEFLZDRMSEVFbFZ4Rzg2NGNxYWVINUFBRThGSWZX?= =?utf-8?B?czhmeERZankvWkE2YlZieGt3S1E3T3Y2V3dYeUZqN2NWaGhsTWNqN1ArV2ph?= =?utf-8?B?T0YwU05MVW4rNkdBb2Z1U0RMYnVobENRTjl2MjJkYWtYY0paSFU5anh1UDdz?= =?utf-8?B?bjZndHhsVXpsYUtxWms4OUt3TjV4QjIwcUg4VmpDU0FiMG9JV2EvTlJVQk5R?= =?utf-8?B?TDhOdVpWbW5COXJkS0dqQ3k4bkkwaTJFbXhzNVRVYitYdUM5Y3Q2a0poMm9F?= =?utf-8?B?TnNSeGxDdUltZXkxM0M5d3JOOWdwQjdIQ2VOS0dCbVdFNVRnSDh0ek5LNGN1?= =?utf-8?B?MjZVVjNYUFd6cHNZanQzbkRCQkNTN1VUbVVOSzVOMEREZDVUNkprR0ZGU25L?= =?utf-8?Q?0IAdnZ?= 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)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:25.9971 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e73a68d-a281-4653-b4f2-08dd809c774e 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: SJ1PEPF000026C8.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4360 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216405051019000 Modify function pci_find_next_cap_ttl to support returning position of next capability when size "n" is zero. That can help caller to get next capability offset if caller just has a information of current capability offset. That will be used in a follow-on change. Signed-off-by: Jiqian Chen Acked-by: Jan Beulich --- cc: Andrew Cooper cc: Anthony PERARD cc: Michal Orzel cc: Jan Beulich cc: Julien Grall cc: "Roger Pau Monn=C3=A9" cc: Stefano Stabellini --- v2->v3 changes: * Only check if n =3D=3D 0 and add assertion for array "caps". * Not to change pci_find_next_cap_ttl definition. v1->v2 changes: new patch. Best regards, Jiqian Chen. --- xen/drivers/pci/pci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xen/drivers/pci/pci.c b/xen/drivers/pci/pci.c index edf5b9f7ae9f..804f4e1e6066 100644 --- a/xen/drivers/pci/pci.c +++ b/xen/drivers/pci/pci.c @@ -55,6 +55,9 @@ unsigned int pci_find_next_cap_ttl(pci_sbdf_t sbdf, unsig= ned int pos, =20 if ( id =3D=3D 0xff ) break; + if ( n =3D=3D 0 ) + return pos; + ASSERT(caps); for ( i =3D 0; i < n; i++ ) { if ( id =3D=3D caps[i] ) --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216437; cv=pass; d=zohomail.com; s=zohoarc; b=JKvIc1C+6XnC+gE+dkkgd0NAWylnn2RsRQP92zjWMlgfqPkHEh4qxB/iIBpT5bDVJLMKVhQANkHzVUINxIN/DcDgZLmcCvAN5tjRWA+NCyy79h7RCnmbWbw0nXauvEVFteLhLShKRYK2zJO0Kb1Ai2DycfTVJ6GHd3st5EC/1cY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216437; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+KCgQPyUpGWL9Zy2Qdv7/Xw4+GPX2K++K1X78HD+wMQ=; b=baWsK4oPaM7YNqepZCQB9FJYPoIYhrmDgEXbbc0EKHGEF3l8m2aIEeDXc9P5fDi9YQZKwd9bSya7Vnuxmv74ITcSuCK60t6Jc4T+WCf/2QS2VzvSdUKastT2uDFEz8TrPJscpUF5GX5eH3daJjoVlV/hJa9y7DWVS1QByNA5Sj4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216437944433.87901431111754; Sun, 20 Apr 2025 23:20:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960836.1352513 (Exim 4.92) (envelope-from ) id 1u6kVF-0005o4-S1; Mon, 21 Apr 2025 06:19:37 +0000 Received: by outflank-mailman (output) from mailman id 960836.1352513; Mon, 21 Apr 2025 06:19:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVF-0005nx-O2; Mon, 21 Apr 2025 06:19:37 +0000 Received: by outflank-mailman (input) for mailman id 960836; Mon, 21 Apr 2025 06:19:36 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVE-00057u-1y for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:36 +0000 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on20621.outbound.protection.outlook.com [2a01:111:f403:2416::621]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 96405587-1e78-11f0-9ffb-bf95429c2676; Mon, 21 Apr 2025 08:19:32 +0200 (CEST) Received: from SJ0PR05CA0023.namprd05.prod.outlook.com (2603:10b6:a03:33b::28) by CH3PR12MB8545.namprd12.prod.outlook.com (2603:10b6:610:163::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Mon, 21 Apr 2025 06:19:28 +0000 Received: from SJ1PEPF000026C8.namprd04.prod.outlook.com (2603:10b6:a03:33b:cafe::a0) by SJ0PR05CA0023.outlook.office365.com (2603:10b6:a03:33b::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.25 via Frontend Transport; Mon, 21 Apr 2025 06:19:27 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C8.mail.protection.outlook.com (10.167.244.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:27 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:25 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 96405587-1e78-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ie3C+3Uu+iJEVYh/hqPZlb0ItioxCW19IzzsXI421z6JCXnX2HMirlVWCdWI5TV1vOukyxbbqcO0gsI3ym1ub1+g7oK8NKbDfx3n2ckvzESPKcnwkOrGW15wvKYy5QETRdXVTWbCF2WZGaEdDccS2x80/xgUjeyidZ6d8PAmvUbtv0W54riI54J3NC+jIz/IusMc76R7H/S+s5K2ZV8rOQVzruqg3Y9pVUtqbh5W3tUZQfZRMQRiwV9muuIXHPgJzDW44klyFmylddGd2qmeHkcwhkM9DWsmfGMHW7Sg3oWgLPWAzGNG6b1lKVWEQn7o2OpvheIEJ1aWv+i97AwWhQ== 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=+KCgQPyUpGWL9Zy2Qdv7/Xw4+GPX2K++K1X78HD+wMQ=; b=Eb3Kw/YVV1mYLUAKyMlc6pz909cwLQIavIx7H2RdWukUJZ5rZDbqQ4hcZCFqnwxtCjnWda6X9HP+bG7UDUZUvl7v1uc5dWhtnGCq9qL7YpHiaCVK78Po1sYVAF1bLxs4pKFDlOTESp+eFm8PQNj2sUvxgkbYTcmb79peXtlSuY6M9Evd9jbYaEjGgDIodJgIdktXu9tr/mFeV4jLtnCSWRZ+bxK2gVPol5VuzNmXuJkoW16lkujPLn2t1jrhpWnoqPW8ap1eI9AV9K/+23KrInlsXFiROaWgyNEhh4hFTk6InfDZFC+OjN63venJuU5qMSNy/7R6a0aUmnzr8SiQ/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=+KCgQPyUpGWL9Zy2Qdv7/Xw4+GPX2K++K1X78HD+wMQ=; b=xCgeAVIbHGWhbvzyTglNfvV/ueZ7uiVOEPfPPw7VJaoOuyX4DXkOLIUXnahvNPF4A8gM19Krx/VCI/fOtgAz3+Y8iiw6tdpO+czkKrunahJ91zz2TM+Kd8gF/MqkS3WrS5m6ibGrO1V2SJd1BOrpBUrs4nyj9qUgp3QMRd+0rQ0= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 03/11] vpci/header: Emulate legacy capability list for dom0 Date: Mon, 21 Apr 2025 14:18:55 +0800 Message-ID: <20250421061903.1542652-4-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C8:EE_|CH3PR12MB8545:EE_ X-MS-Office365-Filtering-Correlation-Id: 86c4807b-2405-43a0-9e92-08dd809c783f 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: =?utf-8?B?Uk9KRWFxczJ1MU10d1MyaGxkR2JzbzJhaUlia1N1blprSVJHQnJPQW1uektv?= =?utf-8?B?Zmt3c0wxcUx2dlVKY2NkcEFDV3JoMStaOGduN0cxWDNNRmFmYWxIUEg5dUhX?= =?utf-8?B?SjVXMkNjdWIwU016anowTkdiMEpnaFFJc2VUOVZIUjEydldnYXpJM0p3Zklh?= =?utf-8?B?MXBuQWVIU09uTUJ2MEJKMFcrWndYSzdzOXIwUlVFdXlJekpBbkF4cFdJaHZT?= =?utf-8?B?NzdwNVdYbTcySTF5WW9OVzk0cURMZ01MTnRyTzBWRGJTeE9KQUplVW9uenpy?= =?utf-8?B?aEg1ditiWEpOQkE0TnpzYUtGRjVsdVJPc3RYWHVpdWZRQjN4ZWRuQWFLVzdV?= =?utf-8?B?bVZFV3JKbjF6VzRvQ3hPY2tOUnM5SHZzME5leUtEYW14NjJoNHNHeEVnaCtS?= =?utf-8?B?TDlRR2JmckUzV0ZaYkFFT3NHdEJXVW0vb3BWRVRvYVhmRy9mSHJma0hvMlNF?= =?utf-8?B?WEdLSVhXdzdyT2srcFFyM25QNDhUNUo4ZjN0Nmphb1N2dThUaE5SM21wbmR5?= =?utf-8?B?WWRCYTlxblZpcVlybWhqTm5xMUZBUmJYN3Q1cUlaM0ZyZStZcTBLMnB4MTZU?= =?utf-8?B?cmNWbThpNDNrRFNEQmZSRXdpYVZjTno3am4xU2ZlMWhxek1lTnluUU4rU3ZP?= =?utf-8?B?R0orcTNncjMyVm9leG02a2FaZFVtRC9IcWZlZVdVRWovU1dTbkZpYmMyVXlY?= =?utf-8?B?QVBPVVYyWTE1NTZjUHo5czV5SmVTeXFGR2NVOENabnRHSDFSTTB2U2p6Z1NF?= =?utf-8?B?Z09sa3A4ajA2dHU0WVpSdHlBb1ozbDBFM0JYdHMvSHRqNkFlQW9seit2SEVz?= =?utf-8?B?aHhCaGxsTXF5T2N3ZGkrbUV2OEhxZ0ZOeHJmU29qQnBmTUg0aXd3eUVqR0t3?= =?utf-8?B?bVlpaXZ4RlpQeVYxeW5vY3NuaGVnRHp5MUEvZG02cjJ4dmRCSElmeERiSDVw?= =?utf-8?B?Q0RtcHZJY0VkT2VXb3NibitTOFZrVk1HOGRBZUNCMWJ1TnFWQ3RQNTVpOWpX?= =?utf-8?B?ZEhhbUNmQkY2WmhKMy9HZ0VCRW1oN3J0RjhmZTV4dE9iM3dKVXBxTndTQXRN?= =?utf-8?B?c0RPS0ZsK3hUeHcxVnE1ek1mUloxQ0lad3krdGh0bDJWUHN3WHBaemxnRkxO?= =?utf-8?B?d2ZsVXkwei9XdUYwNGg0aUpkVW4wdk5zT3VUS25lZWVQd3p3OU5saUFEODYx?= =?utf-8?B?K0c5aktZVmpqUWJFQk5TbHRkTDB5NEZVOE4rVDcxRFk3SzJobkY3TlRHeS94?= =?utf-8?B?aGxvQkk5YXpyeEw1dHVBVEtRN292QmpEL1phZ25oc29odCtrOHQ5SzFubEhl?= =?utf-8?B?bGpValV2WjErY3NaYUd1azRXNktDQlNGeEgvUEd3L2t0ZU52TGVpaWpRdEVu?= =?utf-8?B?MDdEQmpqbllHdGwyQkFHTHZkMVdzY3JjNHN2OGhSekNmb0ZrZ0FzeGhsWHI2?= =?utf-8?B?K3BDbUU2aVVzcXBuTzVTTW5JdFkvTllwVXlwNEZmUnE1SmJ0UEV2cVVUU3Y4?= =?utf-8?B?d1N2NVl1aVd3UWFKNmRMc0xpN25aTTcrYXpLZ1VSYnZhcnhQOU0reDN4L3ZB?= =?utf-8?B?Q0JnaDVmSU90UjVWRUExZHJHd1ljcno2Z0NFV2ZYVnRmUWpYc3hPTEVZOHNN?= =?utf-8?B?QlBISGhiYTNFK3hjOTdCSEJZTGxaai8zbjdJMml1cnFXbGphVEVEOVhHYlYy?= =?utf-8?B?MXRuOE96TmxkMDBEclluNmkrajF3Smo2Uis1Tm5WbHRIL3BuWGJyTEN3bzdG?= =?utf-8?B?bUJob0wrWFdtL3BaUHVqbXQxTFNBOXB0eE9NRFpQUUtWbW0xeHpMaGs3blVX?= =?utf-8?B?MnVaYXh0YXVkcytPaHpHaExOTmszc0JFY2FxcFFOdlFiSkFDRCtHVllLU3Iz?= =?utf-8?B?bDRxbFRXdHpBWWIzcmNQR0lpbkxPNXBFdGljaGkrUm52VmNMMW05VXdvSEhk?= =?utf-8?B?Uy9CSXhRNFY2bEhYbVRSL1dEVW9nNm5HcS9hTnpVRU5VNlFwaVVlMkF1SnIz?= =?utf-8?B?aGZhK3VVYklOK1pDYkNJdWk5TE81cUhRV205SFMxZmpmaW5Gd3FHQkplSjNK?= =?utf-8?Q?I4xjX7?= 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: 21 Apr 2025 06:19:27.5604 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86c4807b-2405-43a0-9e92-08dd809c783f 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: SJ1PEPF000026C8.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8545 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216440515019100 Current logic of emulating legacy capability list is only for domU. So, expand it to emulate for dom0 too. Then it will be easy to hide a capability whose initialization fails in a function. Signed-off-by: Jiqian Chen Reviewed-by: Roger Pau Monn=C3=A9 --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * Not to add handler of PCI_CAP_LIST_ID when domain is dom0. v1->v2 changes: new patch. Best regards, Jiqian Chen. --- xen/drivers/vpci/header.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 3e9b44454b43..c98cd211d9d7 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -749,9 +749,9 @@ static int vpci_init_capability_list(struct pci_dev *pd= ev) { int rc; bool mask_cap_list =3D false; + bool is_hwdom =3D is_hardware_domain(pdev->domain); =20 - if ( !is_hardware_domain(pdev->domain) && - pci_conf_read16(pdev->sbdf, PCI_STATUS) & PCI_STATUS_CAP_LIST ) + if ( pci_conf_read16(pdev->sbdf, PCI_STATUS) & PCI_STATUS_CAP_LIST ) { /* Only expose capabilities to the guest that vPCI can handle. */ unsigned int next, ttl =3D 48; @@ -759,10 +759,11 @@ static int vpci_init_capability_list(struct pci_dev *= pdev) PCI_CAP_ID_MSI, PCI_CAP_ID_MSIX, }; + const unsigned int *caps =3D is_hwdom ? NULL : supported_caps; + const unsigned int n =3D is_hwdom ? 0 : ARRAY_SIZE(supported_caps); =20 next =3D pci_find_next_cap_ttl(pdev->sbdf, PCI_CAPABILITY_LIST, - supported_caps, - ARRAY_SIZE(supported_caps), &ttl); + caps, n, &ttl); =20 rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, PCI_CAPABILITY_LIST, 1, @@ -772,7 +773,7 @@ static int vpci_init_capability_list(struct pci_dev *pd= ev) =20 next &=3D ~3; =20 - if ( !next ) + if ( !next && !is_hwdom ) /* * If we don't have any supported capabilities to expose to the * guest, mask the PCI_STATUS_CAP_LIST bit in the status @@ -786,13 +787,15 @@ static int vpci_init_capability_list(struct pci_dev *= pdev) =20 next =3D pci_find_next_cap_ttl(pdev->sbdf, pos + PCI_CAP_LIST_NEXT, - supported_caps, - ARRAY_SIZE(supported_caps), &ttl); + caps, n, &ttl); =20 - rc =3D vpci_add_register(pdev->vpci, vpci_hw_read8, NULL, - pos + PCI_CAP_LIST_ID, 1, NULL); - if ( rc ) - return rc; + if ( !is_hwdom ) + { + rc =3D vpci_add_register(pdev->vpci, vpci_hw_read8, NULL, + pos + PCI_CAP_LIST_ID, 1, NULL); + if ( rc ) + return rc; + } =20 rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, pos + PCI_CAP_LIST_NEXT, 1, --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216407; cv=pass; d=zohomail.com; s=zohoarc; b=T0YDzXQftMpUVv1QcbXRBxhy0CLFe6+l+tP8P7TzYBDjD1FpQRoLIeehQuXeviAttsAiJGBzuvqe9JUx08lJqYeuf89psDyfeH1QzfJTVbifnrrfLQd1FG3Lxb3YeiYQttzNkgi5ktDZr/iNjTjhYKcTRG24f2xvKWO4n0HwJWw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216407; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Smc1jWeK9v3ur3A4inV8stRX58Ho7A+1C8m4g9Og5wc=; b=j2iNs/CRue3DLewJtMrAdlULvlORXl2DfyaX6m3GY3n5kwCAleZ2uw0FblKaCN8osMytipetTSmBwB+TOyJwrsGrpk6UscNavIKRD9p47emLiiIadygsX9DPUTCH/Xci3NZ8ibks1ePzBqzyrYA8xOEfBUtx2VWnCc2cESstFRE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216407557712.5123696189501; Sun, 20 Apr 2025 23:20:07 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960837.1352519 (Exim 4.92) (envelope-from ) id 1u6kVG-0005rP-5v; Mon, 21 Apr 2025 06:19:38 +0000 Received: by outflank-mailman (output) from mailman id 960837.1352519; Mon, 21 Apr 2025 06:19:38 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVF-0005r5-W5; Mon, 21 Apr 2025 06:19:37 +0000 Received: by outflank-mailman (input) for mailman id 960837; Mon, 21 Apr 2025 06:19:36 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVE-00057u-FY for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:36 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2061b.outbound.protection.outlook.com [2a01:111:f403:2414::61b]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 97b748e9-1e78-11f0-9ffb-bf95429c2676; Mon, 21 Apr 2025 08:19:34 +0200 (CEST) Received: from MW3PR05CA0004.namprd05.prod.outlook.com (2603:10b6:303:2b::9) by CH3PR12MB8583.namprd12.prod.outlook.com (2603:10b6:610:15f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Mon, 21 Apr 2025 06:19:30 +0000 Received: from SJ1PEPF000026C4.namprd04.prod.outlook.com (2603:10b6:303:2b:cafe::60) by MW3PR05CA0004.outlook.office365.com (2603:10b6:303:2b::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.18 via Frontend Transport; Mon, 21 Apr 2025 06:19:30 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C4.mail.protection.outlook.com (10.167.244.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:29 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:27 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 97b748e9-1e78-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ga6CJMcifUiSpMNfb6JyEh8UzLZOy7MwrFo7jKU/tyqRidmUvaWuZFpSbHi4t6z9928QbOGZYqGslhu0hneGsRLYUBSkL2uspqcuSpaFXzoN7RQmWq4JNKpmWDkGQFvGH7EHl2XzlPelspjVv2UHOnux/JDIB85SLXTMbRAliLPrCk6ll9H6bA30IBdMYuptFGa9oc41qJQ5X4ycG9vwTc/l760lQaV1r3RxYsYGtenft8FIl1CuNqavwZWp9mj8fL4MJTeycaXoFaqXnSxmRdRx7SkA/QegIcr0Y8qZbMBKA/fB5QrVu7hiHFHpsVJQDpwAVVvaqaYtiJPKJoD6ag== 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=Smc1jWeK9v3ur3A4inV8stRX58Ho7A+1C8m4g9Og5wc=; b=LDTGpiIRx8rokYTtEA6EW+q7ROkgdbZ8vElNvGL4WUCF1GFBIBaEuE5fFbk+ZxJQqptO1P/QdBOOrems/Z6UfO/qYWdqKDvLdF5OrRjgJfqFVJlhI75mT4ZYgD0MgvVtZe5VmRkAD4FxzTMxAwOhxyhTAXJlP2kK+V2JB/Y8De0tMIWnd5XMmAizV8PbaELZlJYYNtM6+jcyeA4nkzQRGnXh4lgFXpIPmm+u8aFwLSxP95MwfswxHdhybYZmIcp1f3q6KrYVjnDLcW5lPveZNHPxX1rvzw4d4Fo3l6gYCuY41OaKYl667jZzJze14iIoqlnLkuDibouEE7X1VkSTlw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=Smc1jWeK9v3ur3A4inV8stRX58Ho7A+1C8m4g9Og5wc=; b=Opjwj0jCv7+aHI5tmgYOgceORHtW0Wh7K/L8pVcwdgUXHaTHAo7NVyPMQoBEwWNW1j7QpFE92VejDqF6aWAbngbfGVUqxCLoph21ZwIfGXIY0tM+VXQNx+s6S4WiwHVM/K4/OIei/bg1lhat9fB3VRUNZxLVGn2jNFzrLMNY7tc= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 04/11] vpci/header: Emulate extended capability list for dom0 Date: Mon, 21 Apr 2025 14:18:56 +0800 Message-ID: <20250421061903.1542652-5-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C4:EE_|CH3PR12MB8583:EE_ X-MS-Office365-Filtering-Correlation-Id: bb1fc3b8-e00f-461c-e8d0-08dd809c793c 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: =?utf-8?B?RWZYYWlkQlV5WEdsMkxlYXBOVGVTVkhXajFvaEtYeWFKQk55dU5VamZkenBL?= =?utf-8?B?OTNYUVJiTDJlalk3QzdvU2VrM1h0MWkvTTRkdnFrZmlDVnUrOGpSYVlhUFNZ?= =?utf-8?B?Y1pmU3hqU05LMDhlRkNzMzF1M3NvU3lzZ0lweFJiWC9jT2hBWEJIRUE1VmFm?= =?utf-8?B?SHFyREdmK092dUtlQnN5d0pPQzBWaUQ4WUcwRzIzT0c2YVhFNGJoUzl1VUhN?= =?utf-8?B?bGtHTVA2ZkE2Wm93OTd0bjUwU09PQXU4QWZJbVpUc0MzbnNVOFk2U3hjenZM?= =?utf-8?B?UUxiak42MndWQVJvM2Y0SElBajhFV3oyUkVUZkpnOFdNR01jUGcwWm1GR3M3?= =?utf-8?B?cG82RHNwZ2k5VWxCKzdMVnZ0RVFld0VkYkhGUzF5MzQvelR6NUlnOW5iWXF2?= =?utf-8?B?M09jKzBPeGtNeGlnNFoybzQ3SklKVk8yOTlWR3hCVzN5Z2pzMnlRQ1U1T3JE?= =?utf-8?B?Njl1akdldFN0eFlLMGduUzU0bDd6ZFF6L29LVW1jVnh2elhGVHhVSEphOUlW?= =?utf-8?B?aGtsdEY1aXJ5N2IxVEdObjFLd3R6SFJMUWFNb0JnOWNhcnFMVkUyQzB4cnhk?= =?utf-8?B?VTBWditIOE4vcUcwRmtLQWkvckNHVTJvZ0hNN0lyZ0pYbDR2NXN0U0twZHZV?= =?utf-8?B?bmhsRUJvSHlCdW0zYXN1K21XNGFsY1luVjh2Y096OUNDSTZLYlBCZzhhWXV0?= =?utf-8?B?a1ZsM2ZPbTQ0UURMZm9DZWR2ckZLODQ1NEtIWVl2aytyZmx4NktmQ0NSZGdE?= =?utf-8?B?NFdqS2ZvOUlKSWZkUDJYMEZ3MTc4OTNJKzNJdkJjeUlvV0ZqTjlyWE9zaElt?= =?utf-8?B?ZkJCSTZJLys5SHBOOHFRalc0WmlEc25Va2I4RlFiN3Q1WEsyckJVRWRYY0hn?= =?utf-8?B?OSs5YzJvWmM2am5kZTluQzJwL3ZPejRjdDdmVVB1dXUvZWJ1TWVGdXllVnZJ?= =?utf-8?B?RjJ4OXpyVit2YzBla2NobE8xMU1MbDQ5UHJkSFJObVE5cVRXZlJva1RHODBs?= =?utf-8?B?alZVdUNTT1RaR3BwVVZ1TUdVWVhxUEUzQ3FybEgzY3c3MWdxaGJudE4wMEJF?= =?utf-8?B?Q01hdVFwcUxqaHVxcURCZUpaS3F6K0Q4aWNjNEFmN1pYUCtjYVlteVpxalkx?= =?utf-8?B?M0plbmdsK21Uczg4Ti9WOHJ3RVVoU3hraE1xTHBhYWgrdFpQeEhjU2dMWFc3?= =?utf-8?B?SUhtay9YdGp6SFlOczBoZUVuQkxKSXBIMm5sT0ZQR2s2L09sSVovVEgwekhj?= =?utf-8?B?ZXpPZkN5V2JyZ3FtQkkvMTNoVlkzSVN5ekNGOG5LS3E4RWpiZnJjQVJFMFdG?= =?utf-8?B?QndtVVdwVWhXeEs0QnBCcFBHVkZTMUpQZTRzSUQ5WFNteS9Pb0oyNU5iaTZE?= =?utf-8?B?S2VScE01b1QvR0dDdHlIQTVFNjE4aGlHQStrd2oyOVYyNTdyRTNzdDJaS0dD?= =?utf-8?B?cDVJUkEvN0dRNG5OeiswcGtpOUpCU0tuWkhZcUdWZWdFcml0TXI0QnBZNnpJ?= =?utf-8?B?MHNFaWFzUFhJSmFnbzQzUW9NTHlMUG9zOG8vU3EwQlQzeGp1YnJKYWgyVHpI?= =?utf-8?B?REt2Z0xjNTEvNDB1VEZuRExBaklQYTZLM2o3azFiVW5ScnJmbVAveWxPQzlC?= =?utf-8?B?NmJiQjBkRVNRbk1sMjBMQ09sRkVndzhvMHRDNFQrcDZwZnJMYXZzRnFxSU1i?= =?utf-8?B?WnJXdGh4TDlLa0F1WVV5eE00NTBMN1pZalhFS0FwWHdETkJGbFRpWXFQWHNy?= =?utf-8?B?Ujh6d2lCeWdXcGpIVWE0UFVmSnpBYitFMWI3V1RqYnFHczhEcU83anJLeUlv?= =?utf-8?B?c2FDc3Y1aUlQelBGWWplYlMwQWVScmRwN0tSLzFZWE9PUmJKRC9rZWRBSGM4?= =?utf-8?B?b3UvbnUxUFRIZVJ4TC8zZXRPeFJMbDBvUmpzaFJuaHdLUjB0ZXNLNzIyc1VP?= =?utf-8?B?Ryt3dVRINGNza09aNWZGQTF1bTV5aHRMMHJZMGZTWC93WWg2Z1JxQk42Q1dq?= =?utf-8?B?L0Q4d3BBUUl5N0ZGYVhNd2kwdFRBWXduNGpXNGIySWJ0R0lrYkdZKzZnZHht?= =?utf-8?Q?kcewPT?= 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: 21 Apr 2025 06:19:29.2360 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bb1fc3b8-e00f-461c-e8d0-08dd809c793c 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: SJ1PEPF000026C4.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8583 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216410442019100 Add a new function to emulate extended capability list for dom0, and call it in init_header(). So that it will be easy to hide a extended capability whose initialization fails. As for the extended capability list of domU, just move the logic into above function and keep hiding it for domU. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * In vpci_init_ext_capability_list(), when domain is domU, directly return = after adding a handler(hiding all extended capability for domU). * In vpci_init_ext_capability_list(), change condition to be "while ( pos >= =3D 0x100U && ttl-- )" instead of "while ( pos && ttl-- )". * Add new function vpci_hw_write32, and pass it to extended capability hand= ler for dom0. v1->v2 changes: new patch Best regards, Jiqian Chen. --- xen/drivers/vpci/header.c | 36 ++++++++++++++++++++++++++++-------- xen/drivers/vpci/vpci.c | 6 ++++++ xen/include/xen/vpci.h | 2 ++ 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index c98cd211d9d7..ee94ad8e5037 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -817,6 +817,31 @@ static int vpci_init_capability_list(struct pci_dev *p= dev) PCI_STATUS_RSVDZ_MASK); } =20 +static int vpci_init_ext_capability_list(struct pci_dev *pdev) +{ + unsigned int pos =3D PCI_CFG_SPACE_SIZE, ttl =3D 480; + + if ( !is_hardware_domain(pdev->domain) ) + /* Extended capabilities read as zero, write ignore for guest */ + return vpci_add_register(pdev->vpci, vpci_read_val, NULL, + pos, 4, (void *)0); + + while ( pos >=3D PCI_CFG_SPACE_SIZE && ttl-- ) + { + uint32_t header =3D pci_conf_read32(pdev->sbdf, pos); + int rc; + + rc =3D vpci_add_register(pdev->vpci, vpci_read_val, vpci_hw_write3= 2, + pos, 4, (void *)(uintptr_t)header); + if ( rc ) + return rc; + + pos =3D PCI_EXT_CAP_NEXT(header); + } + + return 0; +} + static int cf_check init_header(struct pci_dev *pdev) { uint16_t cmd; @@ -869,14 +894,9 @@ static int cf_check init_header(struct pci_dev *pdev) if ( rc ) return rc; =20 - if ( !is_hwdom ) - { - /* Extended capabilities read as zero, write ignore */ - rc =3D vpci_add_register(pdev->vpci, vpci_read_val, NULL, 0x100, 4, - (void *)0); - if ( rc ) - return rc; - } + rc =3D vpci_init_ext_capability_list(pdev); + if ( rc ) + return rc; =20 if ( pdev->ignore_bars ) return 0; diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index 1e6aa5d799b9..3349b98389b8 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -232,6 +232,12 @@ void cf_check vpci_hw_write16( pci_conf_write16(pdev->sbdf, reg, val); } =20 +void cf_check vpci_hw_write32( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data) +{ + pci_conf_write32(pdev->sbdf, reg, val); +} + int vpci_add_register_mask(struct vpci *vpci, vpci_read_t *read_handler, vpci_write_t *write_handler, unsigned int offse= t, unsigned int size, void *data, uint32_t ro_mask, diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index 807401b2eaa2..9d47b8c1a50e 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -78,6 +78,8 @@ uint32_t cf_check vpci_hw_read32( const struct pci_dev *pdev, unsigned int reg, void *data); void cf_check vpci_hw_write16( const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data= ); +void cf_check vpci_hw_write32( + const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data= ); =20 /* * Check for pending vPCI operations on this vcpu. Returns true if the vcpu --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216429; cv=pass; d=zohomail.com; s=zohoarc; b=ClPIXddcjKd/hzOKQDaxbBel4Nto8wuJXNe8e9e03PLSP38IIE8Z/HxxEWdmLsTwlX6BnevNSBlKJjlJcA5vGOgXwdCXL7h4FssXvHSHKA0DK1x5Xeg7E91joH6sh4Ndh5y/sZ/40nR1RhuD3rmWeALAGUEC19eHR4f8jhbGbuM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216429; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WEvMzpvWqS275td8NdQCPoSkcPjKyBi1OV2Wa89ZesQ=; b=k0xria0dfswi8TgyUry4fHv4yXQY6xhkO5DOPdZPbzkq+WoG8W0Z0DYhPl1STyZ1iakvjiiCSYc6agGOCyDuRtQAoAfGu/bKwM+glHxAQVx8yQ+XS9rwwPtdDlQGBsWx1zJdtGe8oNpJPw423UijKwiS2ZfVDXFK3LomqJD6jQk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216429315204.99810217216236; Sun, 20 Apr 2025 23:20:29 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960838.1352533 (Exim 4.92) (envelope-from ) id 1u6kVI-0006IY-Ii; Mon, 21 Apr 2025 06:19:40 +0000 Received: by outflank-mailman (output) from mailman id 960838.1352533; Mon, 21 Apr 2025 06:19:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVI-0006IN-FD; Mon, 21 Apr 2025 06:19:40 +0000 Received: by outflank-mailman (input) for mailman id 960838; Mon, 21 Apr 2025 06:19:39 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVH-00057v-Js for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:39 +0000 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on20629.outbound.protection.outlook.com [2a01:111:f403:2405::629]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 99dd7255-1e78-11f0-9eb0-5ba50f476ded; Mon, 21 Apr 2025 08:19:38 +0200 (CEST) Received: from MW4P221CA0010.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::15) by SJ2PR12MB8832.namprd12.prod.outlook.com (2603:10b6:a03:4d0::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Mon, 21 Apr 2025 06:19:33 +0000 Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com (2603:10b6:303:8b:cafe::92) by MW4P221CA0010.outlook.office365.com (2603:10b6:303:8b::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.34 via Frontend Transport; Mon, 21 Apr 2025 06:19:33 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:32 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:28 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 99dd7255-1e78-11f0-9eb0-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p7Bq+X1XDaDlL7ne3KgoB+CZghg00QiZPw2iJ0f78QwQsxrI638nU9lBA/a/cu6Pd3Cft0t3setlJR4gScDEdw70uic0ikB5F+fI0ZLWZTMzVj2vFeKBSXoYC5UghRQCRXsmhVxKg5hW++3DZ+OjuVBYls5euYG5kq5Ka73k9Nr/CrxNfSwxdz+JkaY/8MjPGRjOWzbSIF1nbCD8fSaOdO0UQ7HYQymsJ42Au1oYXLaRwgYvJ76utN6669ByEUW1Xb7YaMmJ1sNnaskRBC1xP7nsdDttDuOI0d9bJTXszKYEW1UBUdHl6WnFxvXX1dHLtFZ3Jz79LfCRGYKZYs1Cdg== 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=WEvMzpvWqS275td8NdQCPoSkcPjKyBi1OV2Wa89ZesQ=; b=t0t5IRnPlT8npXcykmzC5PrPhMPrlCnhPgmlim2507ZaTXLPdGQgZnXVmvq9VqxafxgdEL64qSqUHHYdddTQM7RNGobfch//95kMUZm5judRNloeOFqsRzI4GCOqcOZO8M73pZYdlKQ9VDShx8MlbElz2qtQe4ZioKYTef/YMX4gaAWNDXv1kB17rMwBDlXPwQcVNVPYLSA9bSc9NPLlNEKFWEh33frxTc3c9fEAVg+pOWdjqSTrdaVRkOyEU/f3ZnaJLGjzVUUsdipNTe/4qqIsSNbZ8tR6yPTfuC10WXDwe90CT14+vH7A3rCPbItNvmq8Sm0NasrYSsbg7NW/EQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=WEvMzpvWqS275td8NdQCPoSkcPjKyBi1OV2Wa89ZesQ=; b=GPc3/Eyh/0SzJvgieEvvDX7YqIMQR9rOB22fRKjIKPSRJt6ZSRRL6y7mtHva0kMSNJ+V1QBtzw/inPeqrnjJTiv197DTWBGUEmks1t+pGkz21+cUAGmZDnBRfPNEcdbfGTVDgecoTAiA0jtGAGdxs1pyErHZyfaJbl/yvPjo2tM= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , "Julien Grall" , Stefano Stabellini Subject: [PATCH v3 05/11] vpci: Refactor REGISTER_VPCI_INIT Date: Mon, 21 Apr 2025 14:18:57 +0800 Message-ID: <20250421061903.1542652-6-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C9:EE_|SJ2PR12MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: fae463d9-a447-4eea-8219-08dd809c7ae3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UnVKQmI0bEtPU0xvaGI4bVkzSlRDclBNRWRxRnBNd09zQm9ONGM2V2RnSFhq?= =?utf-8?B?ZEQvclBhK3daYm1jL2ZLWm94NVJQTTZIMDAwc0ROUVV5enJYZEtpaWQySWxG?= =?utf-8?B?eTRyQW5FTTFDeUljSjhNdTYwQmdNSDFhcEpFVDkwVDlodXFDWk5WVEtReHZF?= =?utf-8?B?T0M0bE83T0NabFdobGdDcFkrZHRzUlpoQ2JkRGtGc00ybDlmZkYrZ0FSdWVo?= =?utf-8?B?c3lWMTBXMk5wZmFjU3hNNTR4ZFFWN254MnY0YUJEVjA5czJ1TFlzQlJwZ3E3?= =?utf-8?B?TzZtcnkrc2c0SFlsOUIzVExUL3h3Y2NMUVhlN0VjdkZ2Zm5oc1ZVQldPbnpw?= =?utf-8?B?cUpCTWNxeUIySnV6c0h0ZVEzOGRRR1dhZy8wcDdaendYckFHTlplSVRsU1Bo?= =?utf-8?B?cUFZUFJldCtwcWpOaUlDcnVEZHZycTMzaUVUaC92TWNNaXZuQjc3T0htV3Fs?= =?utf-8?B?c1lDKzRMZVVUdVd4dFVTc0VvdnJjN0hSQndlQWYvd3RwZVFRUkpUUjRWRXI3?= =?utf-8?B?YUJMN2dLVk9mZFJhK05GK3VzTUtaN2c5OXFEaDlhRzNqY0hWUVVmVCtFMlpW?= =?utf-8?B?TTJ3Yk16QytVYkJaZ2czQy82dFU5MEVHOVdLL1hhQkZIeXB2ZzRjUzV5c0tv?= =?utf-8?B?MHRkV0xqYThaaFNnZFVzUXpEVVhSNnAyWE15YkxCWE9MU0UvR1V3eWxRaTZw?= =?utf-8?B?SGhwYTBRQ2dBbUhYWkRNNDdhRUdCcElIRFlLRnhOSXdVUDhWR0hENy9qZEFs?= =?utf-8?B?dkJ1THUrMkh1VWVXR3NVSENNcytZNXVsS0hEeGk2UDdNRjRxUjhVVmJNdXZO?= =?utf-8?B?TmhjS0EwZytRbnNuMDZzSWkwdndzR1FpYlJlT3JPc0ZlYjZ0STM1Z3RhM2RO?= =?utf-8?B?WmxHM1F4ZEYwK2FMd3pMdjd5NkVuMDZ1NmVGZTBtQ3AzWEJ4cXgvRjZPS2VS?= =?utf-8?B?OWREOTNWN3lta0hra3VUQWtjc2kwbW5nZ3M5QUV6Z2xLZXdkY29ER1huN3BB?= =?utf-8?B?TjYzQWx2djdBM1dvQy9MZktjZXNsWjN4b3ROQUdMdnlpeXd4N3Y0QzNQbkRS?= =?utf-8?B?eXczajAvUzZ2K3Y4VTRNZTk5UWpLZG9wVEUwTDdQYjFCcWpjQ3dkMytqUUhq?= =?utf-8?B?UlNNQ0FOcWI4dzBycDZLOTBYT3JNWVFERDFPQlQzaFd6N1RURkpMTnlmbUV4?= =?utf-8?B?blRlR3dITTJsa0lyOEdnM2h5eTlMUEZGdG10dzRKZk9FYndmWUhxblRuTzZa?= =?utf-8?B?UzB3UlNDYVBlTVA1OWlmNHRFSFZ0Z0E0ZXBwcTQrVGwwME5KY2dUUm9BbWlw?= =?utf-8?B?c09YVkgveC9ianV3YitHYk9yMmtOVnc2azdhdWh6Mk9vZXAyc0QwY1pMMU8r?= =?utf-8?B?bjlBYnRXdzB4VG1CT3dYNG1qV1g5aXpuVkhGMTJONkQ0YTltMHdiRnpuekpW?= =?utf-8?B?bWdKVVI1S1NBZERUR0tmd01hTWtyR1BUbSsvVFQvdW1ZVDNMUGdrc0xNeCt0?= =?utf-8?B?RUpndFRYVUU3UVVieXFmT2JwQVNsd1VrbHR5RHQzNWVINXlHdlFBZlNWRExv?= =?utf-8?B?UkxKTmdMTk1nUkZhRE5qWGpWRTVxMWxuMDRwOHNZeGJvYngzcE9HdzZENFNh?= =?utf-8?B?K29JR1MzSDlwYkw2YWlLVndxQmx1NWtQSndZZXRCMGprZ3RNcTEvbFhha3V2?= =?utf-8?B?VEY1NzZYZ1F6TVlRSnJER3BhQkNLbG8waXhQVnJqTFZXOWhBWEVZZEFya0VF?= =?utf-8?B?bytKeFhmeGMra21BNkFEcW8rY0ZhR2ZPUFRGL3QvSGxPRDVOeDRudmFFRnJO?= =?utf-8?B?UEwzWXdlTXF2bm9KMFpxS0oydnFWSlg5Tkp2RHdWYWxZdWprQnBNOEJJZTZx?= =?utf-8?B?WjJTb0ZDakVDMGNsRjZjdUFlSXhyclBIeUJXTk1SSnBpZU5OeUNLbVBCTm5B?= =?utf-8?B?dDJPa0tPVGs5cmVMWFcrNXJTWUtsUnNEdmF6UGFXMmpTREQrUWlSSEFiZ0dQ?= =?utf-8?B?K29uM2w4M2JNeERjanV5bTc3bjdjZ1pMUWxZb3hOVWQ4TDNtV2N2ZjdmUy9H?= =?utf-8?Q?i+3Jj4?= 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)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:32.0211 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fae463d9-a447-4eea-8219-08dd809c7ae3 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: SJ1PEPF000026C9.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8832 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216432383019100 Refactor REGISTER_VPCI_INIT to contain more capability specific information, this is benifit for follow-on changes to hide capability which initialization fails. What's more, change the definition of init_header() since it is not a capability and it is needed for all devices' PCI config space. Note: Call vpci_make_msix_hole() in the end of init_msix() since the change of sequence of init_header() and init_msix(). The fini hook will be implemented in follow-on changes. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" cc: Andrew Cooper cc: Anthony PERARD cc: Michal Orzel cc: Jan Beulich cc: Julien Grall cc: Stefano Stabellini --- v2->v3 changes: * This is separated from patch "vpci: Hide capability when it fails to init= ialize" of v2. * Delete __maybe_unused attribute of "out" in function vpci_assign_devic(). * Rename REGISTER_VPCI_EXTEND_CAP to REGISTER_VPCI_EXTENDED_CAP. v1->v2 changes: * Removed the "priorities" of initializing capabilities since it isn't used= anymore. * Added new function vpci_capability_mask() and vpci_ext_capability_mask() = to remove failed capability from list. * Called vpci_make_msix_hole() in the end of init_msix(). Best regards, Jiqian Chen. --- xen/drivers/vpci/header.c | 3 +-- xen/drivers/vpci/msi.c | 2 +- xen/drivers/vpci/msix.c | 8 +++++-- xen/drivers/vpci/rebar.c | 2 +- xen/drivers/vpci/vpci.c | 48 +++++++++++++++++++++++++++++++-------- xen/include/xen/vpci.h | 28 ++++++++++++++++------- xen/include/xen/xen.lds.h | 2 +- 7 files changed, 68 insertions(+), 25 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index ee94ad8e5037..afe4bcdfcb30 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -842,7 +842,7 @@ static int vpci_init_ext_capability_list(struct pci_dev= *pdev) return 0; } =20 -static int cf_check init_header(struct pci_dev *pdev) +int vpci_init_header(struct pci_dev *pdev) { uint16_t cmd; uint64_t addr, size; @@ -1038,7 +1038,6 @@ static int cf_check init_header(struct pci_dev *pdev) pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd); return rc; } -REGISTER_VPCI_INIT(init_header, VPCI_PRIORITY_MIDDLE); =20 /* * Local variables: diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c index 66e5a8a116be..ea7dc0c060ea 100644 --- a/xen/drivers/vpci/msi.c +++ b/xen/drivers/vpci/msi.c @@ -270,7 +270,7 @@ static int cf_check init_msi(struct pci_dev *pdev) =20 return 0; } -REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW); +REGISTER_VPCI_LEGACY_CAP(PCI_CAP_ID_MSI, init_msi, NULL); =20 void vpci_dump_msi(void) { diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c index 6bd8c55bb48e..0228ffd9fda9 100644 --- a/xen/drivers/vpci/msix.c +++ b/xen/drivers/vpci/msix.c @@ -751,9 +751,13 @@ static int cf_check init_msix(struct pci_dev *pdev) pdev->vpci->msix =3D msix; list_add(&msix->next, &d->arch.hvm.msix_tables); =20 - return 0; + spin_lock(&pdev->vpci->lock); + rc =3D vpci_make_msix_hole(pdev); + spin_unlock(&pdev->vpci->lock); + + return rc; } -REGISTER_VPCI_INIT(init_msix, VPCI_PRIORITY_HIGH); +REGISTER_VPCI_LEGACY_CAP(PCI_CAP_ID_MSIX, init_msix, NULL); =20 /* * Local variables: diff --git a/xen/drivers/vpci/rebar.c b/xen/drivers/vpci/rebar.c index 793937449af7..026f8f7972d9 100644 --- a/xen/drivers/vpci/rebar.c +++ b/xen/drivers/vpci/rebar.c @@ -118,7 +118,7 @@ static int cf_check init_rebar(struct pci_dev *pdev) =20 return 0; } -REGISTER_VPCI_INIT(init_rebar, VPCI_PRIORITY_LOW); +REGISTER_VPCI_EXTENDED_CAP(PCI_EXT_CAP_ID_REBAR, init_rebar, NULL); =20 /* * Local variables: diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index 3349b98389b8..5474b66668c1 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -36,8 +36,8 @@ struct vpci_register { }; =20 #ifdef __XEN__ -extern vpci_register_init_t *const __start_vpci_array[]; -extern vpci_register_init_t *const __end_vpci_array[]; +extern vpci_capability_t *const __start_vpci_array[]; +extern vpci_capability_t *const __end_vpci_array[]; #define NUM_VPCI_INIT (__end_vpci_array - __start_vpci_array) =20 #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT @@ -83,6 +83,36 @@ static int assign_virtual_sbdf(struct pci_dev *pdev) =20 #endif /* CONFIG_HAS_VPCI_GUEST_SUPPORT */ =20 +static int vpci_init_capabilities(struct pci_dev *pdev) +{ + for ( unsigned int i =3D 0; i < NUM_VPCI_INIT; i++ ) + { + const vpci_capability_t *capability =3D __start_vpci_array[i]; + const unsigned int cap =3D capability->id; + const bool is_ext =3D capability->is_ext; + unsigned int pos; + int rc; + + if ( !is_hardware_domain(pdev->domain) && is_ext ) + continue; + + if ( !is_ext ) + pos =3D pci_find_cap_offset(pdev->sbdf, cap); + else + pos =3D pci_find_ext_capability(pdev->sbdf, cap); + + if ( !pos || !capability->init ) + continue; + + rc =3D capability->init(pdev); + + if ( rc ) + return rc; + } + + return 0; +} + void vpci_deassign_device(struct pci_dev *pdev) { unsigned int i; @@ -128,7 +158,6 @@ void vpci_deassign_device(struct pci_dev *pdev) =20 int vpci_assign_device(struct pci_dev *pdev) { - unsigned int i; const unsigned long *ro_map; int rc =3D 0; =20 @@ -159,14 +188,13 @@ int vpci_assign_device(struct pci_dev *pdev) goto out; #endif =20 - for ( i =3D 0; i < NUM_VPCI_INIT; i++ ) - { - rc =3D __start_vpci_array[i](pdev); - if ( rc ) - break; - } + rc =3D vpci_init_header(pdev); + if ( rc ) + goto out; + + rc =3D vpci_init_capabilities(pdev); =20 - out: __maybe_unused; + out: if ( rc ) vpci_deassign_device(pdev); =20 diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index 9d47b8c1a50e..8e815b418b7d 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -13,11 +13,12 @@ typedef uint32_t vpci_read_t(const struct pci_dev *pdev= , unsigned int reg, typedef void vpci_write_t(const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data); =20 -typedef int vpci_register_init_t(struct pci_dev *dev); - -#define VPCI_PRIORITY_HIGH "1" -#define VPCI_PRIORITY_MIDDLE "5" -#define VPCI_PRIORITY_LOW "9" +typedef struct { + unsigned int id; + bool is_ext; + int (*init)(struct pci_dev *pdev); + void (*fini)(struct pci_dev *pdev); +} vpci_capability_t; =20 #define VPCI_ECAM_BDF(addr) (((addr) & 0x0ffff000) >> 12) =20 @@ -29,9 +30,20 @@ typedef int vpci_register_init_t(struct pci_dev *dev); */ #define VPCI_MAX_VIRT_DEV (PCI_SLOT(~0) + 1) =20 -#define REGISTER_VPCI_INIT(x, p) \ - static vpci_register_init_t *const x##_entry \ - __used_section(".data.vpci." p) =3D (x) +#define REGISTER_VPCI_CAP(cap, x, y, ext) \ + static vpci_capability_t x##_t =3D { \ + .id =3D (cap), \ + .init =3D (x), \ + .fini =3D (y), \ + .is_ext =3D (ext), \ + }; \ + static vpci_capability_t *const x##_entry \ + __used_section(".data.vpci.") =3D &(x##_t) + +#define REGISTER_VPCI_LEGACY_CAP(cap, x, y) REGISTER_VPCI_CAP(cap, x, y, f= alse) +#define REGISTER_VPCI_EXTENDED_CAP(cap, x, y) REGISTER_VPCI_CAP(cap, x, y,= true) + +int __must_check vpci_init_header(struct pci_dev *pdev); =20 /* Assign vPCI to device by adding handlers. */ int __must_check vpci_assign_device(struct pci_dev *pdev); diff --git a/xen/include/xen/xen.lds.h b/xen/include/xen/xen.lds.h index 16a9b1ba03db..c73222112dd3 100644 --- a/xen/include/xen/xen.lds.h +++ b/xen/include/xen/xen.lds.h @@ -187,7 +187,7 @@ #define VPCI_ARRAY \ . =3D ALIGN(POINTER_ALIGN); \ __start_vpci_array =3D .; \ - *(SORT(.data.vpci.*)) \ + *(.data.vpci.*) \ __end_vpci_array =3D .; #else #define VPCI_ARRAY --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216419; cv=pass; d=zohomail.com; s=zohoarc; b=QzEgd1BXXPb5YfSyleerJ4w6XJiiVh+UV9MhJ5ICHiSHlIvncwrW1N3lPxVSj3iYwHPW2iZ+FQ1OC3IVF755UTHDmJEQ6szMHWtEE3xKqlT5ZPOaTF35+r3SRVpT5cIMHP5Kd+58nJATpLsm7vOTVFD/KLLokaoEl+IpquuDXO4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216419; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cS709c8StYxHv0C0xi6qDIj8/5bc2jUhpF/cHHPrYgM=; b=Ved08TqNTt+192igzDHtrvHdEHpzRWeieXpP+SZjK3m0ZvY2FELQz6zK+MvpF+el4VisalceRGKDLraC2exz7CLt32brp2A9F3+XwMXqemABm1SkgRYebCcCWtXQtrhzk9+EJvNOv/FI7IxJhj4NxlAOxMqKCwOVzk+IrL1xXb4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 174521641980369.71777045392139; Sun, 20 Apr 2025 23:20:19 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960839.1352543 (Exim 4.92) (envelope-from ) id 1u6kVK-0006Zq-S9; Mon, 21 Apr 2025 06:19:42 +0000 Received: by outflank-mailman (output) from mailman id 960839.1352543; Mon, 21 Apr 2025 06:19:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVK-0006Zh-P4; Mon, 21 Apr 2025 06:19:42 +0000 Received: by outflank-mailman (input) for mailman id 960839; Mon, 21 Apr 2025 06:19:41 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVJ-00057v-8H for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:41 +0000 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on20617.outbound.protection.outlook.com [2a01:111:f403:2412::617]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9acf559b-1e78-11f0-9eb0-5ba50f476ded; Mon, 21 Apr 2025 08:19:40 +0200 (CEST) Received: from MW4P221CA0009.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::14) by BY5PR12MB4308.namprd12.prod.outlook.com (2603:10b6:a03:20a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.34; Mon, 21 Apr 2025 06:19:34 +0000 Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com (2603:10b6:303:8b:cafe::9) by MW4P221CA0009.outlook.office365.com (2603:10b6:303:8b::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.33 via Frontend Transport; Mon, 21 Apr 2025 06:19:34 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:34 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:31 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9acf559b-1e78-11f0-9eb0-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WNvfAJMEv7XLgzYe9TFpoBQuyt+Bp+Mtll6LrgirOU7APCrzashlGGJlJtW1Pknf8rfm9m+BQQIO3dPqYh5pUjoT+KDjSGb5B3GsJTRKYE2DsGwpLwF1x0hYpKjaRhliyqyINSPnrvxcEIM7M6yNELjWDTaIKRKBK7bAxREEOmQrVODHBgF6LzrM+/WdNeGTOHvLz99OY0bz6sEiZJFjjCG8vrFcboE0UWDiO1A4RoNQHauvVU0ddSG8W6hD6rCG9S18GeiyXUeq5ZgOAeCsYKvveD/8/byMPaekU9mDAaMYu0sOO9vX95GEHR6Cv1IbLJ5orhk89kJ4XdgtREEXYQ== 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=cS709c8StYxHv0C0xi6qDIj8/5bc2jUhpF/cHHPrYgM=; b=l3Pqiw6rLW3IAxaensY7+9UPW7Zm3jOteXe/SRRjM2XtsdX3WjMbIn779u41pd/VYTtL9xqMKNRPsWgogNYE8Ihz0l9fNGDJXh0yG//ilnt7Rjz45c8vDoIpqRIVPKcSw/p2euxwQvsCmKXhtv8zOz4TYVMCMN3TZzfX1c5k4l07+M+la8z0K9sbVrZURkdyaBk5E+TZrQzNzSWYA9ZSNyDNu+FMqESeid6f+lkUtNM73JPrnYLt2AcPUmsLObXhvGa9klPduXV5n46oqFR46zjfBa0dy8VxaJ6qCrieJDq9nLY1mWauQM1qW2e4LOE7zoSbPEdrTUOzrhNO8+laMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=cS709c8StYxHv0C0xi6qDIj8/5bc2jUhpF/cHHPrYgM=; b=Gcpxo56I6/iOk4+XCnwsBElNkawuhurT30pY4Zjz4utXmr7R5kSmwsagLNvDIKHR2fcJoaA5k+DqueTbz+cjUpnTj/iB6l54EqdhaQMLtfc+ptVODDUrdPPbFB/OEWY/psEN+LWG60jMmdXBWw/RUXYpnTBjLZnX5LIr3i622q0= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 06/11] vpci: Hide legacy capability when it fails to initialize Date: Mon, 21 Apr 2025 14:18:58 +0800 Message-ID: <20250421061903.1542652-7-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C9:EE_|BY5PR12MB4308:EE_ X-MS-Office365-Filtering-Correlation-Id: ebac3c6e-198f-4e8d-8cc1-08dd809c7c19 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SENIOThza2lQS3ora0x3RjJRejRiSVd6LzNTSXR5ZG5USmgveFJIc3VmaVov?= =?utf-8?B?MUtRbFBLRkxiZUJUcTRMSkI2MHFHQUhpRGVJQ08wTW5DYjFtTVc1aFBjS0xk?= =?utf-8?B?UzJXSzJqNlJVNzVWY3VibGZjMTM2cEt0Rk9TcW81Y1B2SUVZdkIwL3ovSWtq?= =?utf-8?B?N1RmMkxqL2ZBbDQ4eitzNllJTk14dDRpUGd5MHdGUVAwSHhYWUxRS1o2RDBX?= =?utf-8?B?UlNPK2tBWlA1bWtSNHh1ck9jYmp5eEthMDRKQjBmdlpWUHFaYnRTZFBNN0Fn?= =?utf-8?B?aDZjU3FWQnlWS3l3K21WZ3BveTZqR0wwV3VUemsvaTRFQVJaamJkRms0YWRs?= =?utf-8?B?RjB2TlN4MnJCN1NrR1lzZ2VXQ1g5VWU1eGxPem92Tjh6UStjYjVMNXNnclBl?= =?utf-8?B?dzFSd3dKSEQ2TG44TktudGlFRElkVHJ1Rk9pQTViTTRJN2xWZlZxTklodjZW?= =?utf-8?B?Vm11RXFZc05WNTlLaWFFckljVlZCQnd3SmErekhqRk1yVVBWTkJKUEt0cWYx?= =?utf-8?B?OU52SHYwWUF4bEkzTkhzUVcxVmQyTTVBb29XY3VJMnlZRVJ3OERLWTdaUG5i?= =?utf-8?B?NThvZThHRGlyTEdzQlpGaDFvNVB4WTkxbU5TTXNtbytVRzhnaHc4a3BIU2VJ?= =?utf-8?B?Zm4zZEJTcFpZZkRjUWM4RGFjNjBkcmhQcU9vMVV1b1NNQUhVajl6ZEs1eEYx?= =?utf-8?B?QTZhTXJKRmhNbE02T3JoRjVyeFFMOW8vVDgzdXh4TCtqWXRGWCt6d0dBeTlY?= =?utf-8?B?c0lOcFZrRmdRVDlXOEhwODBiYTNaa2hYd0FBdjJLbDNrQk9wcURENmIzQWVx?= =?utf-8?B?RTdLZ0t5Z2I3NW5GdHdIRGs3aUpBVkRNaTFDZGttVnRiejg3RnhWanhvekd3?= =?utf-8?B?dFV2dU9YWDJoK1I5N0hZTFBvbUVmeWhLcURKanJoNlByQ3dEaVdBN0RVVmNv?= =?utf-8?B?Wkp2NzY2V1gxYnphdEtTTE9zT2FMTXFYcWJkMEVPQ3IzYUx2SzNCUVJyelNp?= =?utf-8?B?MlRjT0lyRXkrNXNodjF5YUgyTTFHaW5abmtwbkVLbVlQaFBBa0s0Q0tLdloy?= =?utf-8?B?RWZtUk4zMUJIR29YbkwwUVFCTENhU0s4dkVBTmNEOXc1SU1adHlVMmM5NENz?= =?utf-8?B?SUkweFNUKytNUEV3RW01YWZlYWtGemFnVHNRWnEzY21CMWpNTW5oRGIyd2VF?= =?utf-8?B?RWljNWJ4SzVOZzh0dHNMbDFleGxJWTIvekM3SHRxbXJWZ2wxV1hWWU5RVmJW?= =?utf-8?B?SU5jNHpZVHh5RVdBRjVaYkRQN0dWdTA3UFNSWTF1V2F3cWhnenVINTVEMnoy?= =?utf-8?B?TzMrMkRjRzA1aUVIVHB2TktwdWRLNk1UNVpFbDQvSVYxMlAxR0JUSVoxVDZC?= =?utf-8?B?RnpLT1pWendnakI5UkpGeFcrSlE0VFhESzNkTTRUZXJTWkRucHJCUWhibjc3?= =?utf-8?B?emFHZ0JZYXBPaXptdEY5ZlBxYy9VcG1ycjI4ZnRsQTkzTmJQU1ozbmMvY3cv?= =?utf-8?B?c20rUUh0bTNTUjIwRi9qUkdqRHZ4MnZoQVZTSGtUWjhBTmZBY2xsUlVMZWww?= =?utf-8?B?NzI0RFgxdkpqbkdJNndLK2NHRk5DMnlSOThIRlpydmZUcDl5Z1ZFUXh0TnBN?= =?utf-8?B?K0xNcTltMVlDQ3J5SUZIMG04bnpFS0Mya0RuWVdGaXdiL3NVS2Rsa0d0M2M1?= =?utf-8?B?MmxiUWZDOTR1Q0RRZHpVY2JFWlZRVzMzZ2UxUlJoUHBEdzNyMzhGRC96Skor?= =?utf-8?B?dFdNbHJBQlcrcHk3NW5uTitlTlIrY08waUV5ZGJZamZ2SHRkUkdNby9LWXNV?= =?utf-8?B?RmRveG9YMVZmMFRoTkRuSHI0RGpxY0xWYVBrQ2lYbjZaMHhRY05hZDJxa3pj?= =?utf-8?B?OGRSQThhNUZQQXZTaFFsa2taUUlyeE90NHNpUUpudUdBNU1XbkN1Q25OQ3JX?= =?utf-8?B?ZEpJMVpHM3A4eGtGK2VKNzBLeEE2NXV5TFBHaDd5b0ZPaXFkQXJlV2hrUkpu?= =?utf-8?B?ZjZ5ZisrL09HcjMvNkdDTnpDT1lvdkppbnYwUTdURTdEckFPY25IYVdaSE5R?= =?utf-8?Q?Q+Zhl1?= 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)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:34.0530 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ebac3c6e-198f-4e8d-8cc1-08dd809c7c19 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: SJ1PEPF000026C9.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4308 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216422607019100 When vpci fails to initialize a legacy capability of device, it just return error instead of catching and processing exception. That makes the entire device unusable. So, add new a function to hide legacy capability when initialization fails. And remove the failed legacy capability from the vpci emulated legacy capability list. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * Separated from the last version patch "vpci: Hide capability when it fail= s to initialize" * Whole implementation changed because last version is wrong. This version adds a new helper function vpci_get_register() and uses it t= o get target handler and previous handler from vpci->handlers, then remove the = target. v1->v2 changes: * Removed the "priorities" of initializing capabilities since it isn't used= anymore. * Added new function vpci_capability_mask() and vpci_ext_capability_mask() = to remove failed capability from list. * Called vpci_make_msix_hole() in the end of init_msix(). Best regards, Jiqian Chen. --- xen/drivers/vpci/vpci.c | 133 +++++++++++++++++++++++++++++++++------- 1 file changed, 112 insertions(+), 21 deletions(-) diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index 5474b66668c1..f97c7cc460a0 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -35,6 +35,22 @@ struct vpci_register { uint32_t rsvdz_mask; }; =20 +static int vpci_register_cmp(const struct vpci_register *r1, + const struct vpci_register *r2) +{ + /* Return 0 if registers overlap. */ + if ( r1->offset < r2->offset + r2->size && + r2->offset < r1->offset + r1->size ) + return 0; + if ( r1->offset < r2->offset ) + return -1; + if ( r1->offset > r2->offset ) + return 1; + + ASSERT_UNREACHABLE(); + return 0; +} + #ifdef __XEN__ extern vpci_capability_t *const __start_vpci_array[]; extern vpci_capability_t *const __end_vpci_array[]; @@ -83,7 +99,91 @@ static int assign_virtual_sbdf(struct pci_dev *pdev) =20 #endif /* CONFIG_HAS_VPCI_GUEST_SUPPORT */ =20 -static int vpci_init_capabilities(struct pci_dev *pdev) +static struct vpci_register *vpci_get_register(struct vpci *vpci, + const unsigned int offset, + const unsigned int size) +{ + const struct vpci_register r =3D { .offset =3D offset, .size =3D size = }; + struct vpci_register *rm; + + ASSERT(spin_is_locked(&vpci->lock)); + list_for_each_entry ( rm, &vpci->handlers, node ) + { + int cmp =3D vpci_register_cmp(&r, rm); + + if ( !cmp && rm->offset =3D=3D offset && rm->size =3D=3D size ) + return rm; + if ( cmp <=3D 0 ) + break; + } + + return NULL; +} + +static struct vpci_register *vpci_get_previous_cap_register + (struct vpci *vpci, const unsigned int offset) +{ + uint32_t next; + struct vpci_register *r; + + if ( offset < 0x40 ) + return NULL; + + r =3D vpci_get_register(vpci, PCI_CAPABILITY_LIST, 1); + ASSERT(r); + + next =3D (uint32_t)(uintptr_t)r->private; + while ( next >=3D 0x40 && next !=3D offset ) + { + r =3D vpci_get_register(vpci, next + PCI_CAP_LIST_NEXT, 1); + ASSERT(r); + next =3D (uint32_t)(uintptr_t)r->private; + } + + if ( next < 0x40 ) + return NULL; + + return r; +} + +static void vpci_capability_mask(struct pci_dev *pdev, + const unsigned int cap) +{ + const unsigned int offset =3D pci_find_cap_offset(pdev->sbdf, cap); + struct vpci_register *prev_next_r, *next_r; + struct vpci *vpci =3D pdev->vpci; + + spin_lock(&vpci->lock); + next_r =3D vpci_get_register(vpci, offset + PCI_CAP_LIST_NEXT, 1); + if ( !next_r ) + { + spin_unlock(&vpci->lock); + return; + } + + prev_next_r =3D vpci_get_previous_cap_register(vpci, offset); + ASSERT(prev_next_r); + + prev_next_r->private =3D next_r->private; + + if ( !is_hardware_domain(pdev->domain) ) + { + struct vpci_register *id_r =3D + vpci_get_register(vpci, offset + PCI_CAP_LIST_ID, 1); + + ASSERT(id_r); + /* PCI_CAP_LIST_ID register of target capability */ + list_del(&id_r->node); + xfree(id_r); + } + + /* PCI_CAP_LIST_NEXT register of target capability */ + list_del(&next_r->node); + spin_unlock(&vpci->lock); + xfree(next_r); +} + +static void vpci_init_capabilities(struct pci_dev *pdev) { for ( unsigned int i =3D 0; i < NUM_VPCI_INIT; i++ ) { @@ -107,10 +207,17 @@ static int vpci_init_capabilities(struct pci_dev *pde= v) rc =3D capability->init(pdev); =20 if ( rc ) - return rc; + { + if ( capability->fini ) + capability->fini(pdev); + + printk(XENLOG_WARNING "%pd %pp: %s cap %u init fail rc=3D%d, m= ask it\n", + pdev->domain, &pdev->sbdf, + is_ext ? "extended" : "legacy", cap, rc); + if ( !is_ext ) + vpci_capability_mask(pdev, cap); + } } - - return 0; } =20 void vpci_deassign_device(struct pci_dev *pdev) @@ -192,7 +299,7 @@ int vpci_assign_device(struct pci_dev *pdev) if ( rc ) goto out; =20 - rc =3D vpci_init_capabilities(pdev); + vpci_init_capabilities(pdev); =20 out: if ( rc ) @@ -202,22 +309,6 @@ int vpci_assign_device(struct pci_dev *pdev) } #endif /* __XEN__ */ =20 -static int vpci_register_cmp(const struct vpci_register *r1, - const struct vpci_register *r2) -{ - /* Return 0 if registers overlap. */ - if ( r1->offset < r2->offset + r2->size && - r2->offset < r1->offset + r1->size ) - return 0; - if ( r1->offset < r2->offset ) - return -1; - if ( r1->offset > r2->offset ) - return 1; - - ASSERT_UNREACHABLE(); - return 0; -} - /* Dummy hooks, writes are ignored, reads return 1's */ static uint32_t cf_check vpci_ignored_read( const struct pci_dev *pdev, unsigned int reg, void *data) --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216406; cv=pass; d=zohomail.com; s=zohoarc; b=H13LYOfC9i24gCDlTvtPLKRNKRfrA3GdshAxYIgFZrP65Avr718L0tICfBOZ2GJvp2KOHj34iQUJcxZki+4KHP6Yo4fzA06Ra3YFEYjSlqxZLWIlGiWxw01uEkDVsmWuWGJNtXaALEU3iOy2nMeGMl2DUqeSmljQSDQ6ttWS7VY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216406; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=odOrILESrhnnD+KMb8PsZKWET0NUPER1gv9psvhTkOQ=; b=LAtUbYFNnsH52MMy/lww9beUu+KGfDdeymiAp6+RZ6Dm/GFcdZxngvUdstYwNL7GX55ziEMbSPST40d8QkUiuLCg7HRGGbldFrWoa48a1xXBb61RvWIC9xPRMxn7Nd5BkBLsFWXwU00zioJmnL/YcP0XIZ/gdhWRWqXHkfrPAug= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216406746701.2290193625543; Sun, 20 Apr 2025 23:20:06 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960840.1352553 (Exim 4.92) (envelope-from ) id 1u6kVM-0006qA-BW; Mon, 21 Apr 2025 06:19:44 +0000 Received: by outflank-mailman (output) from mailman id 960840.1352553; Mon, 21 Apr 2025 06:19:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVM-0006pM-5x; Mon, 21 Apr 2025 06:19:44 +0000 Received: by outflank-mailman (input) for mailman id 960840; Mon, 21 Apr 2025 06:19:42 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVJ-00057u-Vl for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:41 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on20610.outbound.protection.outlook.com [2a01:111:f403:2417::610]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9adb1e11-1e78-11f0-9ffb-bf95429c2676; Mon, 21 Apr 2025 08:19:40 +0200 (CEST) Received: from MW4P221CA0007.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::12) by SA1PR12MB7246.namprd12.prod.outlook.com (2603:10b6:806:2bc::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.25; Mon, 21 Apr 2025 06:19:35 +0000 Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com (2603:10b6:303:8b:cafe::65) by MW4P221CA0007.outlook.office365.com (2603:10b6:303:8b::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.35 via Frontend Transport; Mon, 21 Apr 2025 06:19:35 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:34 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:33 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9adb1e11-1e78-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tn8MEpAeUpxi1WOPqTQ7Ln1cZVb0qdutZuJlN3oicoYVVm1rH8V61KHmpZKUggrnwq6i+un6/WbjpeppDzIe57w6w7wTsUI/WPxZJ/eh53aDFr0hqrySYoxtXgf/ICCGku9BoZVeFceS/+ZvDvU+Nd4rcQ29xYTZbisTPsIcvUDXzPFA65A567nHkGY+GHmmaxrhAsJLKYWeuFAHJtpEVmPELvZle/ilT+KONoRHRyxPg05+LpmNB+yGjhxXDXirOtfDBlDq7mfL6lE1g4fWA2hQ8VyQs57B37Wo9oUuIdmlBhEyFPOmoIf5/HnZjhGPV3wzcLGnWxFJegdbNNwN5w== 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=odOrILESrhnnD+KMb8PsZKWET0NUPER1gv9psvhTkOQ=; b=F4Vwc7u5ywrsSkeO8euRdniTwD0o1ZQS/2eBQ8MAk8piiWGVJ9zFc34zU8jjeV+uabuRfWAL6vjQyQI+9Ut09quEviRUtDVIrhpWtNnjIBYFRHnpAczAQ5KCXXSnKH5J0X/lp4NtdubL0UC3OAkalii+8ynfr9KfMiLnOCypEeQOK0P5m25kVPk7whB0gSrJElng3q2karwBz16w1IwnAsPRWEAP26tfAThgmBvTha9glWiVMNPdGkJoglFeeE9IWh8RKDP6NPdFEdG7hSyiVUSmha8/bMpWm2t7xb+53Xj18a/EC8kHcCnA75XpunOBzbYczJW3XD3Rn6BK3nba5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=odOrILESrhnnD+KMb8PsZKWET0NUPER1gv9psvhTkOQ=; b=GaKGjpiX5esZx7ZrAYpe6ryRzA/j/efXMc12OJ8eAq1AstpIe+9wzCx14dc4DR1uJMuhC2Ffl0edE3145dbqm/x40nwb1zdrl0XbO6ppSWT3ErWO/uBUQKcCQRJYkKN4VYiSzmih0kD81BDaVKWd+AF092PNNMmUQ3LKWXx/wn8= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 07/11] vpci: Hide extended capability when it fails to initialize Date: Mon, 21 Apr 2025 14:18:59 +0800 Message-ID: <20250421061903.1542652-8-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C9:EE_|SA1PR12MB7246:EE_ X-MS-Office365-Filtering-Correlation-Id: da781faf-2e47-4a79-a585-08dd809c7ca8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZnRNZGxmMTZkZWVxOUdPdVFGb3FjVWJpYmwxOFFMaWo0MFdkYjhjM0xFU082?= =?utf-8?B?VE1FK2p2UVg1bTdWVURSa3NnUUI1UmpkaFkyVnNvazVBRkdGWVMxWXBmd1B0?= =?utf-8?B?UStLZ2kvMDlEaHlNSlVESHdhaVZHNXhIMHpkUitNK0NBYzdld0ZMQ25HQlZ5?= =?utf-8?B?ZXl2UHZqZktRcFF2MWlvRHd2LzAvc2UzV0t5WklMVmQvSlRvdHB6d21EUEcx?= =?utf-8?B?WmovemQ0OW4yZTEySk8vUXEyelNtYm9xUEFPcFAwTlNrOGk2OHRWamdibUR3?= =?utf-8?B?L1ZTNWhSSDJLcGtOYmVaVm5TbjRYeTBBNnc5dTdWaGRBb0VXUy9pd0FrMzNx?= =?utf-8?B?K0tRdCtmZXA4c0xYb1pyUExKNjdBY09lMXUrbDBPZTRxNkNjRyt2MkMwejZv?= =?utf-8?B?Y2tRTlBVMERrNlp4eURGQkplSmlIbGkyNTd1WFBDakpMZnM2VmVEdVVkVVdw?= =?utf-8?B?ZDhBdm1RS3lXV08zbGRZeW1ndzNjR2pVSVdUOGUwaWJCbEJqd1hSQmE3OUk0?= =?utf-8?B?TFEvdDQ4THk2RitpYTlUc1Ywa2d5ZVJaS0R5MC9jOFk2ZjJ4dVJQU0p0TTBl?= =?utf-8?B?ZFNDUkRKOUl6cEtVUzlKc2ZEQVd4RmptQ0M3Z2w0K0xiMjE2VkJHZWNrdUda?= =?utf-8?B?MktnSTUxcWRjOHBwTko1c0tXUHRLUnYrMStWbEFoRS9RVHlFei9wRkR5SlJK?= =?utf-8?B?WkJ4Q3BoVDNyN0dDVlUvMm03bnJES2dwVDBqVVl0OTlTZTBoSGthRmk0Z1RS?= =?utf-8?B?TkhqYzQ0bmNyZi9zM251aDFrK2pnZm43bms3eG5HUnRCRyswcFR3WHFuRHZ4?= =?utf-8?B?V0g0WjJNTEt0TTZkaE5GWERDUGpWSmpQZ1pGcDYvRzBua29BOVBrS0hDaGU1?= =?utf-8?B?bnB0cDNuaFpuWFJQbGhaclhGRVFGK2hOUnV0ZFdRTFpvR2xjdmJjQk56a3Jv?= =?utf-8?B?VlFjUVJEZ1EyeTlSd1VuTW53M1BnWDF0S2lET3NYYkxMcWhrNGZlTWJuT1VW?= =?utf-8?B?clZzVFY0VzlHWmVCQjVVZlU1dDJhNHk0Ym5tRW5GSVZsMlBIaHdNbERZUFkx?= =?utf-8?B?K3Uyc3pwRjBHS1B3VVpZbzJ0bnpmUm9PdnlabVZ1TU5WMU53SC91RE9hdmFw?= =?utf-8?B?ZDFubktCdURvaGc3RGFYYTh1cHd1cVNla2hoQkRuYnJBbnlvU0ZWY0djNmds?= =?utf-8?B?Vy9aMmJWOFU4anREQUZDeEQ0cWJua2NHVWZMNmNFNGFKbHk1ZXprR3pUVzhk?= =?utf-8?B?b0RGRHZReGVJVmh4dU1KQlg0VHF3QTlEa1JlUmNiWi9xcVpiVms4OG5GN2hR?= =?utf-8?B?RXRGZHBhRUptOTU1V1JWeGI3QVJYTkg0QlJldlVKL09nTWZtbU9TanlQVGVq?= =?utf-8?B?ZlEwK3p2R28zYlJRcUxteDdkZjFkU2w3cXhpdnNPRnh5bEFRZHNzZWQrM1pv?= =?utf-8?B?dGgwNVhMclFVYTdZS1VXWjlmeS9TV1RoODY5QzdVbE9abHBWTzJ2Ykh6ZFVt?= =?utf-8?B?Yi9qNFFjUDN0RlVQNmorRzdxUmVZOGNidWxXZi9jUHNnZUJsZUthWjJXTDQy?= =?utf-8?B?NllsV3ZpZndianJreWdzSW5DcjdHdG81UDN2cDVuN2YrbS9mUVRFVmN4YStp?= =?utf-8?B?VSt6RXF1MzkzcDM1OXZpTDRSWHNaaWJsQ1pBdUVIZjBSQU5aTE82TnN5aGNm?= =?utf-8?B?MmFMZ1hKK25VdzgxZzY1c0RuRldiSU5YQWNSSEpJblRPNG42KzVIU0xJTVFt?= =?utf-8?B?cHNheDVQaENueW5sR3pPOHYxbERLeUs0eE02ZlpmcmdpWGRIZndTYXpuTjRG?= =?utf-8?B?SGxmeFVZazg2ZEcwN2MveHpLYlFzaWZGZXJ3U044bHoyVGd1RFN0a3dFRHBC?= =?utf-8?B?VnNobTNmb01OeUR6cUxBV3ZTcWowNGhrajdaenJNTkdkdlpOSDFQcHRHbkox?= =?utf-8?B?bGg2cnhBUk5sVFZVUHYrWGNxY0NYMTRiM2tJamlqeXNmdEdIbnEzRHo0YkdH?= =?utf-8?B?dUNtSWNjSTBGR3FOR1hYcVVzSUt1MkFyNzFGWEtEcEx4NjdBYU5FWVNhMlpP?= =?utf-8?Q?Msera9?= 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)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:34.9908 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: da781faf-2e47-4a79-a585-08dd809c7ca8 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: SJ1PEPF000026C9.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7246 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216407101019000 When vpci fails to initialize a extended capability of device for dom0, it just return error instead of catching and processing exception. That makes the entire device unusable. So, add new a function to hide extended capability when initialization fails. And remove the failed extended capability handler from vpci extended capability list. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * Separated from the last version patch "vpci: Hide capability when it fail= s to initialize". * Whole implementation changed because last version is wrong. This version gets target handler and previous handler from vpci->handlers= , then remove the target. * Note: a case in function vpci_ext_capability_mask() needs to be discussed, because it may change the offset of next capability when the offset of ta= rget capability is 0x100U(the first extended capability), my implementation is= just to ignore and let hardware to handle the target capability. v1->v2 changes: * Removed the "priorities" of initializing capabilities since it isn't used= anymore. * Added new function vpci_capability_mask() and vpci_ext_capability_mask() = to remove failed capability from list. * Called vpci_make_msix_hole() in the end of init_msix(). Best regards, Jiqian Chen. --- xen/drivers/vpci/vpci.c | 79 ++++++++++++++++++++++++++++++++++++++ xen/include/xen/pci_regs.h | 1 + 2 files changed, 80 insertions(+) diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index f97c7cc460a0..8ff5169bdd18 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -183,6 +183,83 @@ static void vpci_capability_mask(struct pci_dev *pdev, xfree(next_r); } =20 +static struct vpci_register *vpci_get_previous_ext_cap_register + (struct vpci *vpci, const unsigned int offset) +{ + uint32_t header; + unsigned int pos =3D PCI_CFG_SPACE_SIZE; + struct vpci_register *r; + + if ( offset <=3D PCI_CFG_SPACE_SIZE ) + return NULL; + + r =3D vpci_get_register(vpci, pos, 4); + ASSERT(r); + + header =3D (uint32_t)(uintptr_t)r->private; + pos =3D PCI_EXT_CAP_NEXT(header); + while ( pos > PCI_CFG_SPACE_SIZE && pos !=3D offset ) + { + r =3D vpci_get_register(vpci, pos, 4); + ASSERT(r); + header =3D (uint32_t)(uintptr_t)r->private; + pos =3D PCI_EXT_CAP_NEXT(header); + } + + if ( pos <=3D PCI_CFG_SPACE_SIZE ) + return NULL; + + return r; +} + +static void vpci_ext_capability_mask(struct pci_dev *pdev, + const unsigned int cap) +{ + const unsigned int offset =3D pci_find_ext_capability(pdev->sbdf, cap); + struct vpci_register *rm, *prev_r; + struct vpci *vpci =3D pdev->vpci; + uint32_t header, pre_header; + + spin_lock(&vpci->lock); + rm =3D vpci_get_register(vpci, offset, 4); + if ( !rm ) + { + spin_unlock(&vpci->lock); + return; + } + + header =3D (uint32_t)(uintptr_t)rm->private; + if ( offset =3D=3D PCI_CFG_SPACE_SIZE ) + { + if ( PCI_EXT_CAP_NEXT(header) <=3D PCI_CFG_SPACE_SIZE ) + rm->private =3D (void *)(uintptr_t)0; + else + /* + * Else case needs to remove the capability in position 0x100U= and + * moves the next capability to be in position 0x100U, that wo= uld + * cause the offset of next capability in vpci different from = the + * hardware, then cause error accesses, so just ignore it here= and + * hope hardware would handle the capability well. + */ + printk(XENLOG_ERR "%pd %pp: ext cap %u is first cap, can't mas= k it\n", + pdev->domain, &pdev->sbdf, cap); + spin_unlock(&vpci->lock); + return; + } + + prev_r =3D vpci_get_previous_ext_cap_register(vpci, offset); + ASSERT(prev_r); + + pre_header =3D (uint32_t)(uintptr_t)prev_r->private; + prev_r->private =3D (void *)(uintptr_t)((pre_header & + ~PCI_EXT_CAP_NEXT_MASK) | + (header & PCI_EXT_CAP_NEXT_MASK)= ); + + list_del(&rm->node); + spin_unlock(&vpci->lock); + xfree(rm); +} + static void vpci_init_capabilities(struct pci_dev *pdev) { for ( unsigned int i =3D 0; i < NUM_VPCI_INIT; i++ ) @@ -216,6 +293,8 @@ static void vpci_init_capabilities(struct pci_dev *pdev) is_ext ? "extended" : "legacy", cap, rc); if ( !is_ext ) vpci_capability_mask(pdev, cap); + else + vpci_ext_capability_mask(pdev, cap); } } } diff --git a/xen/include/xen/pci_regs.h b/xen/include/xen/pci_regs.h index 27b4f44eedf3..5fe6653fded4 100644 --- a/xen/include/xen/pci_regs.h +++ b/xen/include/xen/pci_regs.h @@ -449,6 +449,7 @@ #define PCI_EXT_CAP_ID(header) ((header) & 0x0000ffff) #define PCI_EXT_CAP_VER(header) (((header) >> 16) & 0xf) #define PCI_EXT_CAP_NEXT(header) (((header) >> 20) & 0xffc) +#define PCI_EXT_CAP_NEXT_MASK 0xFFC00000U =20 #define PCI_EXT_CAP_ID_ERR 1 #define PCI_EXT_CAP_ID_VC 2 --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216421; cv=pass; d=zohomail.com; s=zohoarc; b=iwDmA3OJhPz/cxZpwjU4cqjLK7k+Bzwwqfk7zXmZcBwx5K3IcjCe3IrVSBPsazwllvDBo5SOFkVMIWUO4r6NOKorKuNJw5eW21JaF5VpGyGtusYgCUBYrcKxn+tRQU86cL4SCCNzvqJGvFSwRtcApb7CuxBd90B/MAV4agHwbKU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216421; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=U+g97RZjgCjOmy0NNzS3RYBikm+tUCQTcif7ks3wE9M=; b=Ym8WyP661lhobbWjiNdPAN7T3Iq+NRe5POYXnkaWsfH6vrwzIsngEmzSj2bqh2HCtP38PcbYk8l3Ro6l2n/6Mhqzdny8ysg2+DOgRo3Iy/3mfK+61jFNKYLsD9uIAIgr+wtz5MvJVnlPQn/7NC2bgtgfR/24Xdh8E8N7cu8kaTw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216421668471.7898282190886; Sun, 20 Apr 2025 23:20:21 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960843.1352563 (Exim 4.92) (envelope-from ) id 1u6kVN-00076h-K4; Mon, 21 Apr 2025 06:19:45 +0000 Received: by outflank-mailman (output) from mailman id 960843.1352563; Mon, 21 Apr 2025 06:19:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVN-00076T-Fq; Mon, 21 Apr 2025 06:19:45 +0000 Received: by outflank-mailman (input) for mailman id 960843; Mon, 21 Apr 2025 06:19:44 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVM-00057u-5H for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:44 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on20609.outbound.protection.outlook.com [2a01:111:f403:2414::609]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9c47d924-1e78-11f0-9ffb-bf95429c2676; Mon, 21 Apr 2025 08:19:42 +0200 (CEST) Received: from MW4P221CA0018.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::23) by SJ0PR12MB7007.namprd12.prod.outlook.com (2603:10b6:a03:486::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.33; Mon, 21 Apr 2025 06:19:38 +0000 Received: from SJ1PEPF000026C9.namprd04.prod.outlook.com (2603:10b6:303:8b:cafe::b0) by MW4P221CA0018.outlook.office365.com (2603:10b6:303:8b::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.33 via Frontend Transport; Mon, 21 Apr 2025 06:19:38 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C9.mail.protection.outlook.com (10.167.244.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:37 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:34 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9c47d924-1e78-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QIjsrsAXzAJ/2H8L8KLTo2DPQPmLKM481ZTK4/yjf+TcKYabt+pa2mlyx8AnRzV3KPXtDZjel9sGvqf99f8Q4f6lIdXMpfUqNBo6baadCGJGTSKmlpmn+MPGvl3pJTa01cl1CC82U+rRdyE/qY3L8FPtun39jFnXdIBidUbf5ZhL1ph+4sH+n/JbIzlaojvtu/eoNCCtCbefY9IIyl5t5ycI27JsV/rT4+7WKuWuVpieCSeSawHrpiR60eyvAPR6LBd2CyzmJRPGUKWkLH6crzpPq2MUjQtYaae+s0iKmrandHSSZQ6Q1VuG280lH/bTvPArm6JOHJ0gM+I/Z31Tsw== 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=U+g97RZjgCjOmy0NNzS3RYBikm+tUCQTcif7ks3wE9M=; b=ev7D3gETMvQ18/tOIR+QsS2YxSjSlO0b/2ulkWtzjo7V0Lc/e+sXOjHeLw0EJcQJuKcosxdPgfCWTi55I9o+wBMLoYX4i/2ofH1r922MR+Uiza6pajgDKM+pL3sQvgWqieH7XuwEusTuMZdsOIbbLuW5luIpfWhViAzu0gCc1YcHJwwF+hQlHl8l8LWyTfOzNHdom5ZgIVzcRXZGez7LITt67XMQdfnt73mu5CQJcU4jNsIe6nw34qXGgX4jrpqtDQzSjX4DrSvjBr0zU6WHJVaRMo2hz0ZHi2oivUzaRaWvH1ZECA0MJBqn5H3Hu8dNvjJ1GMQ5nKXXdnSIrZ3vOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=U+g97RZjgCjOmy0NNzS3RYBikm+tUCQTcif7ks3wE9M=; b=SE6lSFv+hJnm/hrEpGS4nRppuL1Pknl+Ue1mSq1w2Ul23cZ1UEaG3GFtWY1oU38/RX+eAcRQeViWOWOABV2tLE2slpVlHinDdArnHyJK/1jVGu6ME5laziGptDJg2M7kiGYFk0BXTVJviS43Q4R/qXwW715uljJ/6owVZ66BBfs= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Anthony PERARD Subject: [PATCH v3 08/11] vpci: Refactor vpci_remove_register to remove matched registers Date: Mon, 21 Apr 2025 14:19:00 +0800 Message-ID: <20250421061903.1542652-9-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C9:EE_|SJ0PR12MB7007:EE_ X-MS-Office365-Filtering-Correlation-Id: 066e1ad3-c00d-4987-e05f-08dd809c7e61 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z3A2Qzl5bytRZ0lMelFGWG5UVDhXM2htbVQ0bkg4cWRrMlAwblI2bnAxaFU1?= =?utf-8?B?ZjczSkVGc0MrMEY2Zmt0TDV5MlZaSm1ZUUxDZ1psYm1Lck0vRzFqYVNBcnZ5?= =?utf-8?B?VHI0ZFBpTEZKM1RLMHZDYnQrdFVhdFJHeTF3YlBZOE43SnBOeTloZUpKcUVD?= =?utf-8?B?OGIrYVRqdXgzY3JqU05CMlNwdnY2cTYvbnJ3Wk1aZGxTWmhVandFanJxc1hj?= =?utf-8?B?eVlkMkgyellNcUZjRWEwYjFlSG5GTzE4K2pHYkdHeWJLV3h6bUFPaTduN1Jk?= =?utf-8?B?eUhRZUdpUHlFMHlFTVZXQ1FiTG5ZRStIK21lcUJBUjNsejZpcWh3VlFaUnZB?= =?utf-8?B?WDZINkYwbXlFUmZEeE1pcVlQd2RjdHVsUmV6aEJmVkt3RDJXSk0vN2w2YWZX?= =?utf-8?B?TWpvNDg0ZHRHQTB0bXdVeVhMTzNrQzZxRUIyQ05UVkdUQmw0dDM2S0JmTHpr?= =?utf-8?B?V1B6VWJ1K1ArZ2tFZ01yMkZMMTl2c3ZWanZxazVrbGtBQXI1QmdMYXdqZjRX?= =?utf-8?B?UTl2d3V2MHNESlAyTW5QR1JYNlRPazhDZ0FScW5Ib3lMZUdEZ0hrQTNYZ2Rx?= =?utf-8?B?RTFMY0FEZ3NoeTdISmphOHVONUl6ZC84dUl5ak1HeThhbThxUzBGbUxzQUVR?= =?utf-8?B?SWRjSk4vWU4vL3lwRTdZUWs0ZksvL0M0OVN3WWltdkdISTBIYkVZeUVPSWVQ?= =?utf-8?B?WlJPVVZwUVBmWTdWWGpzK3pDYzNyZWpKdFUxMnZoWmVpTzgrb0tOSUd5MTA1?= =?utf-8?B?dEFVN3ZzWDNlWUY2VG1rd0RlbnRxTnJkTU5NZHV5ZHlLTjREUGJyNnZlR1Na?= =?utf-8?B?ZnQ4RVM2MWlUZVVIdGEwWVRYSlcyWVZBaG0vaXNwNWJpRnJaOVRFbmJScHNJ?= =?utf-8?B?SEdVSkN6WEFWL1F3UVF3Q2ZmL3pqUDhCOW96OXk5QTVUZkdTMytNTmJKODd1?= =?utf-8?B?bTc5ZjNac3FLQmE4aWZOVVVHVUY0Wi9Kb0pCRDJPL2w1RmphcUtyc2lXUW9J?= =?utf-8?B?L0tHTHZsWjAvU2pFWWZka0Nzd0haRkh6TnM0SFRSdXdxMTk1MisrT1pjYTZM?= =?utf-8?B?Qml5aldKZmxocnhvcXBYbzluRHVFZEhrNUdmZWNxVUJSV3RKZEdYNmxzckEy?= =?utf-8?B?UDk1cUVVZktXeHNBMTF4T2RTOFJpK3lIRE5vOHpZUmxhdTY1cXo1c3FROEF6?= =?utf-8?B?WkplUHVTNjhIaGhmUmZ0dGJSQjU5VmFpc09VUFR2R0luUU8ya2dTQ1hSMUY3?= =?utf-8?B?djcwZlhnMWRvLzFlbkNQejV6MHB2R3lPd1RLUngzOTAwSEV2Z2duR0xYTDNY?= =?utf-8?B?RzY3ZHNhbmdxbkJ0blgwMFF4dXZHMG43UFgxY3E0cVB2bWRCclc5bTNWZmVu?= =?utf-8?B?QllRMGtFT1BnSms1WmhzanhjUzk4dWcxNXRhVmRtbXdlZDhaT3JBV1ZpbmJK?= =?utf-8?B?bWE4WEFHeVJzTENaZ0NZcXBCSmx3VlNhUlNJYjdzMHFlRCtCV1J6TDNiYXpE?= =?utf-8?B?QzFEN3ROZjdjU2QrSG04SDFBSjJvekRJRGdEbHNyZTFPYm5GL3N6cjZvNUtX?= =?utf-8?B?amNOK2J3SnBjRVJLRE5WRWlJZWRDSnc2Y0gzV1pEaHBQYzhWTTd6Tk03Smhp?= =?utf-8?B?QWk3dTM3SUE2SjhFTTJGQTE2TTY0b25tNGtyTWRnNXN6QVlJQkZzQUV4VmZa?= =?utf-8?B?V1p4MUJnMS9LMHlQMWh4VXVLdmI1UjI1eUpmTEFZaHlnMHFxWGVncUFZb25Q?= =?utf-8?B?cEtKNVdydGVITWhQSE9CK1VYYjY1RkxtQ3ZKUGt6L0sxRVc2KzQ5azl2N0ho?= =?utf-8?B?TTRud1ozS3g4TVF6NFN5eWQ1VGl6Y1JjektPQlJ2bVA5MlllQXJzWmlndm85?= =?utf-8?B?SitIUytpMHVrdERJZWpzU05nYmtRdFdhWmZjWEtvVE51RmZWdlNSczNOWER3?= =?utf-8?B?dWhzeWF6ODJ4RGNjeVpsTGlCYWd1cit5bHZVZ0ljbEUrUE9VemtwZ3BKNTkw?= =?utf-8?B?c3N4YjBucjJJK1hGOVIrMVJhazlEM2ZwcVp0NGxHOTVjWkluMElJVWJhNVEy?= =?utf-8?Q?cShWPW?= 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)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:37.8825 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 066e1ad3-c00d-4987-e05f-08dd809c7e61 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: SJ1PEPF000026C9.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB7007 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216425465019100 vpci_remove_register() only supports removing a register in a time, but the follow-on changes need to remove all registers within a range. And vpci_remove_register() is only used for test currently. So, refactor it to support removing all matched registers in a calling time. And it is no matter to remove a non exist register, so remove the __must_check prefix. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" cc: Anthony PERARD --- v2->v3 changes: * Add new check to return error if registers overlap but not inside range. v1->v2 changes: new patch Best regards, Jiqian Chen. --- tools/tests/vpci/main.c | 4 ++-- xen/drivers/vpci/vpci.c | 34 ++++++++++++++++++++-------------- xen/include/xen/vpci.h | 4 ++-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/tools/tests/vpci/main.c b/tools/tests/vpci/main.c index 33223db3eb77..ca72877d60cd 100644 --- a/tools/tests/vpci/main.c +++ b/tools/tests/vpci/main.c @@ -132,10 +132,10 @@ static void vpci_write32_mask(const struct pci_dev *p= dev, unsigned int reg, rsvdz_mask)) =20 #define VPCI_REMOVE_REG(off, size) = \ - assert(!vpci_remove_register(test_pdev.vpci, off, size)) + assert(!vpci_remove_registers(test_pdev.vpci, off, size)) =20 #define VPCI_REMOVE_INVALID_REG(off, size) = \ - assert(vpci_remove_register(test_pdev.vpci, off, size)) + assert(vpci_remove_registers(test_pdev.vpci, off, size)) =20 /* Read a 32b register using all possible sizes. */ void multiread4_check(unsigned int reg, uint32_t val) diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index 8ff5169bdd18..904770628a2a 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -497,34 +497,40 @@ int vpci_add_register_mask(struct vpci *vpci, vpci_re= ad_t *read_handler, return 0; } =20 -int vpci_remove_register(struct vpci *vpci, unsigned int offset, - unsigned int size) +int vpci_remove_registers(struct vpci *vpci, unsigned int start, + unsigned int size) { - const struct vpci_register r =3D { .offset =3D offset, .size =3D size = }; struct vpci_register *rm; + unsigned int end =3D start + size; =20 spin_lock(&vpci->lock); list_for_each_entry ( rm, &vpci->handlers, node ) { - int cmp =3D vpci_register_cmp(&r, rm); - - /* - * NB: do not use a switch so that we can use break to - * get out of the list loop earlier if required. - */ - if ( !cmp && rm->offset =3D=3D offset && rm->size =3D=3D size ) + /* Remove rm if rm is inside the range. */ + if ( rm->offset >=3D start && rm->offset + rm->size <=3D end ) { + struct vpci_register *prev =3D + list_entry(rm->node.prev, struct vpci_register, node); + list_del(&rm->node); - spin_unlock(&vpci->lock); xfree(rm); - return 0; + rm =3D prev; + continue; } - if ( cmp <=3D 0 ) + + /* Return error if registers overlap but not inside. */ + if ( rm->offset + rm->size > start && rm->offset < end ) + { + spin_unlock(&vpci->lock); + return -EINVAL; + } + + if ( start < rm->offset ) break; } spin_unlock(&vpci->lock); =20 - return -ENOENT; + return 0; } =20 /* Wrappers for performing reads/writes to the underlying hardware. */ diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index 8e815b418b7d..4e226331fdf3 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -69,8 +69,8 @@ static inline int __must_check vpci_add_register(struct v= pci *vpci, size, data, 0, 0, 0, 0); } =20 -int __must_check vpci_remove_register(struct vpci *vpci, unsigned int offs= et, - unsigned int size); +int vpci_remove_registers(struct vpci *vpci, unsigned int start, + unsigned int size); =20 /* Generic read/write handlers for the PCI config space. */ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size); --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216445; cv=pass; d=zohomail.com; s=zohoarc; b=ElUmGXbGAyoApHZz3E5ca7sjRRfF4I9NmOt7pgYIVr/ZQDE914N/z3SJQ7MNzTdYb7tQQK9boNV95cN+iw5Mtu/qspLgjWZ6B7+j06J3xYGM9CGIPkQfvLpolXA11fPFAmoMGZ1OvxLVAXE5qEXrP2CG25JL3fE2SwTVnvbM5yc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216445; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vEn+XTSOOgAgdQZbKXHyAs59sfmZHF4X6iJ2+C/9uRw=; b=iozE2AV6TLO5yKUMEVmL4DBFlfF6zeiBOhFConrsx74rBWikKRBWk3YDuo4qqtxcpTaHDo1BKqgk9LpQbDmHEQWKkJE5f2u8+s3DcDNW3EEShChqY21mSxgQ8J9h8tRo6UvTUEP/R7a/11D6trDojMGjGySif4QAFYHARlcHv74= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216445991513.5412423608183; Sun, 20 Apr 2025 23:20:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960847.1352582 (Exim 4.92) (envelope-from ) id 1u6kVR-0007iC-CE; Mon, 21 Apr 2025 06:19:49 +0000 Received: by outflank-mailman (output) from mailman id 960847.1352582; Mon, 21 Apr 2025 06:19:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVR-0007hs-52; Mon, 21 Apr 2025 06:19:49 +0000 Received: by outflank-mailman (input) for mailman id 960847; Mon, 21 Apr 2025 06:19:47 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVP-00057v-Es for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:47 +0000 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2062a.outbound.protection.outlook.com [2a01:111:f403:2416::62a]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9e76033c-1e78-11f0-9eb0-5ba50f476ded; Mon, 21 Apr 2025 08:19:46 +0200 (CEST) Received: from MW4PR04CA0378.namprd04.prod.outlook.com (2603:10b6:303:81::23) by MN2PR12MB4208.namprd12.prod.outlook.com (2603:10b6:208:1d0::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Mon, 21 Apr 2025 06:19:40 +0000 Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com (2603:10b6:303:81:cafe::e9) by MW4PR04CA0378.outlook.office365.com (2603:10b6:303:81::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.34 via Frontend Transport; Mon, 21 Apr 2025 06:19:40 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:39 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:36 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9e76033c-1e78-11f0-9eb0-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qPZf8WaCgygJSIKkYILIUUN3/zLTO7izle7oAocKxQPCvzJYy3uTAXuf7zhX3lIajufnx5wTqH4IRhdJ2jG3A+SWIZAJARDTKwoitHuXi58n2xosT1hIZsG2Qdy0T/g5YrrFArA0qSNw6EqgrkdIDxWLW2K2YToS8NBTMzzI/dqhmACXlD7XA/F8Taa/iC7A/r4RbqVyUtA9JwgXbNSOg4D+um+QyE0+65Qt76Znp0e0X/SaPF6s5qReDZQGlWbkwIqzb2DafCUBNDB8br3SUJMfS6GhQO9MpPNH25IUFREwjGYgMrltnf87hkNxCoOAc7P/9gYnaqvBqJuxPBhf6A== 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=vEn+XTSOOgAgdQZbKXHyAs59sfmZHF4X6iJ2+C/9uRw=; b=YfIn0wk53p7LP0v7CP2U4oH0AatFmSccGywlwIAi7G9itSN2A8SBjZd4R27xGkJJDl27/Zt2F9n5fxAGEO/DPPnRKzVIFdmgEGnVBw2xEGadGRdR/8YBDb4FPwxtoOJAV4LEQGkae4+r5Jw1SZOea8Qtq3lG/xsKbfOtao19lPGxx9e0+KFxfgfCPQCMR14xjWRdBzGSDXyQ5+aNTjCjXIdw3dcx68wt3uIuyjO6lRdd0Dlk2nvqblGLnXI9rG2LwQh9RLYon0+G73dXKjmV0bfGi5CfpeqPVY9Q6ZqtQJA1N4b5I31U+w68Y6TDgJG0FmHZrNy2xYjrp8Kids3A3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=vEn+XTSOOgAgdQZbKXHyAs59sfmZHF4X6iJ2+C/9uRw=; b=2FfSzyIkhc9udy+wxrSN7B+wKP4diC4OzPq+rSciUXEYd2/Gqn5bhy/2u+jyDghPdwTZOLu5xvqN0v0mRH6TEgNuc1aE2TUpYD0mH/SEeinKSc5adDCxX9qt8BQODqyu8xTNNUz+zWoyO9AEAWYAaKfPqo5F0rkjCh6rJak/QIU= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 09/11] vpci/rebar: Remove registers when init_rebar() fails Date: Mon, 21 Apr 2025 14:19:01 +0800 Message-ID: <20250421061903.1542652-10-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C5:EE_|MN2PR12MB4208:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d26c478-e605-442c-21e4-08dd809c7f47 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?a3oycDVweE8xL1hGQm5XVGQyVi9OanZDTXpWU3FMUVpxdTlRWlROQlVyc0dB?= =?utf-8?B?T2xmQUl6VUR6WXVVcmdzMHA2d2gwV1VrRjJyZ2hEZzRrVmsvV0E4YTFGTDJw?= =?utf-8?B?K05XNXJ4eHN1UHJIejhJT3RvanpiVHhTalpubDM3SWs5L09QbmRRNVo4bkc2?= =?utf-8?B?NFlxK1d1ZlphODFsR0tSSXhEMEJKeWRxTU9JQlA0Z1A3M3J4YkEzNk1aYmNW?= =?utf-8?B?Tld4SnorNlU2dSt1bGY1N29BMmlhVWw2OXhCNlltWkNRSCtqQ20rcmVVYTFq?= =?utf-8?B?bUMrM2YyYzh4aUQwRVFUUExZMXlxTktEYTVta0tKc2o5dmpCT2d1VXk1d01i?= =?utf-8?B?OUQ2aytQYnRNb2w1U3F1Qnl1dnVmNkNJUHo2My9IRVVBU0kvdTNJdzh0QUVn?= =?utf-8?B?Rk0vV2duNlFSS3h4ZmxmNW1TVmduSWdlQmwzV0c3KzNIVUdQNitZNHF6em8y?= =?utf-8?B?ejZQMnJBNXo3N3lwdUNnTkNDN3VyOTNwUE4vY2dva2ZCVFZWalArcFFJQnJH?= =?utf-8?B?STJZeDZBMnJ3RWdyZzN6QXRGN2hlMkdYak00ZFNlUTJRcElmMDlwQjhHYUdT?= =?utf-8?B?bXZvbTdjZGhtc0hQMjFjTXY3UWxHNWhHV2FIcDd2cWJvUDJxZVg3Nmk3T28y?= =?utf-8?B?WGsyT1RHK0l3aXMrcUh6UkpPOVFHOFdDOGJUMHpsWlFZaTJ3WXRxWjIvSFR3?= =?utf-8?B?L3ZkVDRKT2VYSVYyMU5IVE1Bci9QcHlSNkRPR2l0V1VGaEI2VnoxWitIWGt6?= =?utf-8?B?YnJTOWVsaWhDeG5uS3ZsQyt4RVM4bGdTVXZSMkp5RnVUQ1VKcVNmZG5jbURh?= =?utf-8?B?YlQwN1VDVnFOamp5Vi9qbHhqQjVPcmVKRVJsTCtWY21mc0xOb1ZjUG1WMVlY?= =?utf-8?B?TVo3UUFySlEyMEg3RTlNMFMxeFprbmFTYXlVSExVaFloTDQ5Ri95M3RaWndR?= =?utf-8?B?QmlFOExDT25QL25mMFZpdkZNdzJPaVRYV1ZLZkwzSzJsNEo1emdiWjhKb0Ry?= =?utf-8?B?UjJOd3FyeEVidCtDUzNHOGFxYzhwZG5DVy81d0NKVURwSFpwcFZXNm1vTGQ1?= =?utf-8?B?elJQNElWZGRMOGFKb1lKTUdHUmpKU00rRG4zRm5HcW5PaTdyTElvZ0FvVnEx?= =?utf-8?B?bktiMVV4eGNOemdxZ2RUZHZrUmtld25QaUJIOHg5ODBDbWUxc1dkOGdKanRH?= =?utf-8?B?YUpTZDg4dVRWWUQzdXBSUUxWYXNLUmtLbjNKVldaQkFPTHhqaURVc1Fid2hY?= =?utf-8?B?R2p1THFrWm5oZWNxbVlhaVFSejg0TXBoUW1kSmNpZVVWeDdEU29FWXFqa2dP?= =?utf-8?B?Qk0zcGZqVFIxaWhCa3pCTlFjbmZDSER6QkUrQkR3eXZqbkVSc0hjWkRLMG45?= =?utf-8?B?R0xtVmdqS3Rzc2RlYWZraHF6MVh1OFo5TkRndGMzWVZHZWM4QnFoLytkWHpT?= =?utf-8?B?ZFkvRGlGb21OaWsvWGU5R01iMjhwREFYZXVjNnJucUdTMnJ3dllyU3JoSExy?= =?utf-8?B?bnlidEh1WFBVaW9ZTHdUaW9JdW9SbHlvNmxCTHZwYUV3UVI5ZEh2UjVvUENh?= =?utf-8?B?R2NWUWpnZWRtY0FWUzE1NjVSUm1rZHl4VHdlNGFRcjA0Ri9RODR2T0diWEgv?= =?utf-8?B?a0xvVHppUTVkRWdzd0JtOGxNZ2I5TklTRkd0VjZGRjdINWt3ZmhJR0hvTUYr?= =?utf-8?B?anZsakVRc215QkpOckg0TUZlRERCWnJ2KzYzVXRkaTJaZGs3djVjeXlHUmxz?= =?utf-8?B?S1pyc3B5eWxGVklUTURuRFdnejRGQUpYVFdzNkVxaC9HY3VRUEFBN2xWYVFB?= =?utf-8?B?eFlHWmRKODdjb3d4d3FLZnBFZWVFeDluRDE0TktyRVBVSTJQSjc2cVVGb0Fl?= =?utf-8?B?aS95bUVLbWlQZ0pBcXpYcDA1cHh4bkJlQUs1RUduTFVFOHJQRkVGQ0d1SnFL?= =?utf-8?B?TlpEQWtQSTdXQ0VuUEIrampUam0rQlRQWWRrYVZtZ2ZBZmZQR2hzNWhmL0l1?= =?utf-8?B?Wmx0L2NkYTFtV2thMU1rbElrWDR0NmJkNkE4RjhwaHFqZU5FR3BqYW44UlVH?= =?utf-8?Q?FZ/fSI?= 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)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:39.3693 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d26c478-e605-442c-21e4-08dd809c7f47 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: SJ1PEPF000026C5.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4208 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216448473019100 When init_rebar() fails, the previous new changes will hide Rebar capability, it can't rely on vpci_deassign_device() to remove all Rebar related registers anymore, those registers must be removed fini_rebar(). To do that, call vpci_remove_registers() to remove all possible registered registers. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * Use fini_rebar() to remove all register instead of in the failure path of= init_rebar(); v1->v2 changes: * Called vpci_remove_registers() to remove all possible registered register= s instead of using a array to record all registered register. Best regards, Jiqian Chen. --- xen/drivers/vpci/rebar.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/xen/drivers/vpci/rebar.c b/xen/drivers/vpci/rebar.c index 026f8f7972d9..325090afb0f8 100644 --- a/xen/drivers/vpci/rebar.c +++ b/xen/drivers/vpci/rebar.c @@ -49,6 +49,26 @@ static void cf_check rebar_ctrl_write(const struct pci_d= ev *pdev, bar->guest_addr =3D bar->addr; } =20 +static void fini_rebar(struct pci_dev *pdev) +{ + uint32_t ctrl; + unsigned int nbars; + unsigned int rebar_offset =3D pci_find_ext_capability(pdev->sbdf, + PCI_EXT_CAP_ID_REB= AR); + + if ( !rebar_offset || !is_hardware_domain(pdev->domain) ) + return; + + ctrl =3D pci_conf_read32(pdev->sbdf, rebar_offset + PCI_REBAR_CTRL(0)); + nbars =3D MASK_EXTR(ctrl, PCI_REBAR_CTRL_NBAR_MASK); + /* + * Remove all possible registered registers except header. + * Header register will be removed in mask function. + */ + vpci_remove_registers(pdev->vpci, rebar_offset + PCI_REBAR_CAP(0), + PCI_REBAR_CTRL(nbars - 1)); +} + static int cf_check init_rebar(struct pci_dev *pdev) { uint32_t ctrl; @@ -80,7 +100,7 @@ static int cf_check init_rebar(struct pci_dev *pdev) { printk(XENLOG_ERR "%pd %pp: too big BAR number %u in REBAR_CTR= L\n", pdev->domain, &pdev->sbdf, index); - continue; + return -EINVAL; } =20 bar =3D &pdev->vpci->header.bars[index]; @@ -88,7 +108,7 @@ static int cf_check init_rebar(struct pci_dev *pdev) { printk(XENLOG_ERR "%pd %pp: BAR%u is not in memory space\n", pdev->domain, &pdev->sbdf, index); - continue; + return -EINVAL; } =20 rc =3D vpci_add_register(pdev->vpci, vpci_hw_read32, rebar_ctrl_wr= ite, @@ -97,14 +117,7 @@ static int cf_check init_rebar(struct pci_dev *pdev) { printk(XENLOG_ERR "%pd %pp: BAR%u fail to add reg of REBAR_CTR= L rc=3D%d\n", pdev->domain, &pdev->sbdf, index, rc); - /* - * Ideally we would hide the ReBar capability on error, but co= de - * for doing so still needs to be written. Use continue instead - * to keep any already setup register hooks, as returning an - * error will cause the hardware domain to get unmediated acce= ss - * to all device registers. - */ - continue; + return rc; } =20 bar->resizable_sizes =3D @@ -118,7 +131,7 @@ static int cf_check init_rebar(struct pci_dev *pdev) =20 return 0; } -REGISTER_VPCI_EXTENDED_CAP(PCI_EXT_CAP_ID_REBAR, init_rebar, NULL); +REGISTER_VPCI_EXTENDED_CAP(PCI_EXT_CAP_ID_REBAR, init_rebar, fini_rebar); =20 /* * Local variables: --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216418; cv=pass; d=zohomail.com; s=zohoarc; b=VjDN5bvSDh4+Uzk24DQc0fgZoUiB400G/XTEUmm5aoIC2Uyr22lrIeevZjALtVV7qEjIqoXeggQytiaUsMj/vslVhQZ3b8/ddSQMJ6lg55kavfaGNnonIcTxiqzHKGik4FOADTOlBOuOF6ZgVkN9rs0sLayihHKHSVTBhlg8+8Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216418; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZbhJV+X4QM6DUMRC6Mk8VHfG8AJ7SeVNQi3bNQIZl1M=; b=nj25PLWLAycFuK8zHHyPShkwOIYEzFxrFJu3cY0JfRBBnNMtTntDnRWIye7d7k1eGNBGOP/xQXSfhw+eFm4OCD5AxSuDZwwZhCgQ+a8EWPhR+fdq5Yus4/vS/CnvDquaHw4unDAo4jw71W3pl1wr3zTKD1if7cPMXft8DMaObDg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216418434112.08120559941915; Sun, 20 Apr 2025 23:20:18 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960846.1352573 (Exim 4.92) (envelope-from ) id 1u6kVP-0007Rt-Uk; Mon, 21 Apr 2025 06:19:47 +0000 Received: by outflank-mailman (output) from mailman id 960846.1352573; Mon, 21 Apr 2025 06:19:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVP-0007RV-Pw; Mon, 21 Apr 2025 06:19:47 +0000 Received: by outflank-mailman (input) for mailman id 960846; Mon, 21 Apr 2025 06:19:46 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVO-00057v-Mj for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:46 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on20608.outbound.protection.outlook.com [2a01:111:f403:2415::608]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9e32d6e1-1e78-11f0-9eb0-5ba50f476ded; Mon, 21 Apr 2025 08:19:46 +0200 (CEST) Received: from MW4PR04CA0377.namprd04.prod.outlook.com (2603:10b6:303:81::22) by BN3PR12MB9569.namprd12.prod.outlook.com (2603:10b6:408:2ca::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Mon, 21 Apr 2025 06:19:42 +0000 Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com (2603:10b6:303:81:cafe::1b) by MW4PR04CA0377.outlook.office365.com (2603:10b6:303:81::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.34 via Frontend Transport; Mon, 21 Apr 2025 06:19:41 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:41 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:38 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9e32d6e1-1e78-11f0-9eb0-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b3GbvFWV3T9sbOndCdAGYgCAvTEFxxs4bZGA9p8oLrb+l79UO7dEMS0mmA8qHpcMdMDIGsxlqfNWnhXiGDh1sSDiYCSAvwdcEtI6392rA6QK+MGr+5qVrjvyPTFBkYSxBfrF+inNKEWuCulIlDSXJ557/x7fsrJAb7G4Hb3OeCl0USt2Wyj1sNr9eL+YSplQpFMU7dB4oCQnSGSJ255lvTJ1JPPRGzzHzbAEWeOKwy/M1kg1d7fcELlBG7g08ju1UvR/6qwp7SPoMDLS4LfKAPWVzrT3lACZJLjbl8Uou9mmYfYh8Tw2PN5m0g3SmesvdrT5ZgqDH7p3Z60QpuiDSA== 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=ZbhJV+X4QM6DUMRC6Mk8VHfG8AJ7SeVNQi3bNQIZl1M=; b=VzCtQcUJ0o37Hg9XcIRfv5HJokUGDAABEhA3S0FqaE3KkJnAVycg0t/k9E4PG6Q9HP1/xJj40VTZ9xas6NPmbDJ+jXncGyMfT+hOzcESX+40Hc+vhc6I64JPZXsG31lg/xI7yjSTXkhAQQbyukxdrTqQGE9TC8keYIk2fLXr67w2xfDn8GI//zqFSkxjk34iQb2fRpAJ/D+Wh3N2GrV+WwqAJfrJrWhndOYalWvL46s/iPE/hM7P90XFATSIRXOdd+Tu5Nv8ZYesqwpvNDzd4JuU9YI2kgVE8OGITN/bhby1Ql5w/p/U5Zu5lyJnEbHip04/WWmp+QxWcginRXGhyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=ZbhJV+X4QM6DUMRC6Mk8VHfG8AJ7SeVNQi3bNQIZl1M=; b=KcrUkQle6LayMDuScY75fn9wkM3Xm9BrHnCce/3h2W64Yg77IZ2/QER6Oi0q0LT/nvVNRNUmP7OnpFLPbIv9dB5uLQYFd3Ib7JLE/iODBM58VhCuZ28HLdtKynJABkxtxK4y7l+F7XJQtUuu1UstSalMtokXHAhJ5SRhaA/hw4E= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 10/11] vpci/msi: Free MSI resources when init_msi() fails Date: Mon, 21 Apr 2025 14:19:02 +0800 Message-ID: <20250421061903.1542652-11-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C5:EE_|BN3PR12MB9569:EE_ X-MS-Office365-Filtering-Correlation-Id: aa267d89-12fd-4895-a6ff-08dd809c8054 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: =?utf-8?B?bzlzQVJ4VlA1eTZ0dXpRSVBZM1ovSE1aODU4N2JuNEdXVkNLQmxhUGtvQnRQ?= =?utf-8?B?Zk43aWF4U0t5VStWV3lPckJzVlI2dnhUUHc3NzBPbjVwSVBCMUVRZWVVNG9w?= =?utf-8?B?dmttbCswKzZTU0ZreTRBZTVhV2RRWGU0bzc4VTEzQ2t4VGlBV2xhZlBHUWV3?= =?utf-8?B?ZTZ1YllCbXM0SGEveDRKczMwRWNaRFF1Sm1pakZFdnhKNzEvOEtGQ29sZmxI?= =?utf-8?B?UXJ6Nnd0aGxlQjVnaDBITVhKbm5xbDduVk1lR1JmYkptN1RHRjkwZStJUmM0?= =?utf-8?B?T0RkcVpoZFY1dEdtRngrSzYxaG5CUERqdnNUOG1EdFNTcXh4alRXWHR6UmVM?= =?utf-8?B?M2dZdzN0dFJzNHVkWE9TZVB4N1dCSGExUjlPVy8vMTJoV01FbEp6U0dFc1Er?= =?utf-8?B?THRxWHFKcjBVNmw5dmY4NkZBSkg5cWNtQWtCR0pXNVN2d0RteVRMY1ZOSmpW?= =?utf-8?B?SmNrMXF3b0FJRjRtWWcxZDVLYWMzOUFYT2IrUytldWV3dnJBYXRpUFBSdkNz?= =?utf-8?B?bi90T25UQXBtcldWMXdIK3RaeUsrQ2gzcmJkcWJXTTJTY2lIYklYWEc4MDJa?= =?utf-8?B?VEVEaVJGUXRFMzkxcVJPZlFQbUsvREtIb3lUMEE4S25sbmVCbG5uNVdNSDZw?= =?utf-8?B?eUszaHkwY1pwcEJOOUJUM3Rhd1R6MDlJSm91NG1ZdzRIS09kZk1GZlRvdmhy?= =?utf-8?B?YW5pNllxdkxiczhiK0ZvSWlJZjdpMUduTzhXMDlmT0x1ZlFySElvVkpkMTlC?= =?utf-8?B?Mm1VOHh2UVJOdzAxdDhGbEJkU3lVT1ZYYWQ1VnZTcU9rZXBzcGNSdGgyMmc0?= =?utf-8?B?OFB4alBMeWN3WVBJZDd4K0pjL1puYmpXYVBOUm5QRGVTdC95NWhqVGxQUGZv?= =?utf-8?B?ckJCajVXNkl2RlJnUWliejhyNFF2MTNHeUVML0pZaUhCRURNOVhQdllhSFBN?= =?utf-8?B?c3JReTJIR1NVSG40TjBuRjV1SjhRNWlrcFc4WGhzWUxNUXZNVjV4LzRHTWF4?= =?utf-8?B?Z0xudzVMbjNrb3kwZHg2T0g2dDZUcHdGZi91N0FSMkxXMnpTZG0wdUdhbFNL?= =?utf-8?B?TU1HeUw2VmRtWWJDKzdGZGFmMzgzYnVIY3BDUG55VWtBMjdvcGdqVmN1dlFT?= =?utf-8?B?Q3QxbmNxdkpaWkpTWERyaXdTM3ZQcnppVjNyWkVHKzFkV0JtcXVRcXEwNG1m?= =?utf-8?B?bWN5OU50Ky9zcG1lekVWM3cwTmRVSjRyMlN5cmVxT3Z5eFdtOHZCU2FxWHdV?= =?utf-8?B?WGpkTkJlTTVCbWJmV0wrQzAxTHloQWpMNUVEcXI0dnlTZzQ4Nzg4KytDeDBr?= =?utf-8?B?K3NJSFR4WEY5MGpxejNXNTR5SURVWXF5dTJ6SnJTRW4rTUVwNGNnL3pXdW05?= =?utf-8?B?MDZ0KzJ5KzZ5ejFTNlFKYmg0UVNXZmcxeDBJanl4bzF6azM2ajlrbitqemRB?= =?utf-8?B?Vk90QjNTK2I4eXU4S2ovYzZNNnBQY0dXeTdOeldRVUZuU3dYd0llb2pKdzRm?= =?utf-8?B?T0RrL0JQVE1zcUdBT1lCb3F3MmtZSnBCSGo2NjVMYkZ6TFhIak16STZESS9J?= =?utf-8?B?WVo0eGpKUWdpblZwQVRjVCtSbi9MbHEvcjU2R1lEUXMrSHNLODBISVoxYktG?= =?utf-8?B?MWNUVlBjRytmbG5MYnlZV2EvNUYzU1lwbkRtMmJTbUkwRGxzd0RJWkNLdW5m?= =?utf-8?B?aTdRL0JERHZYUzJENmtnbEtGYkxhZlhRWXhIK3IwZlY4TlpEZ2x0d0hTSHJx?= =?utf-8?B?Z1ZmbHdNUXoya3N2NFZ2V05nYWhaWUdycUVEa0RyazhEZ3hJOUhKT21sRlc1?= =?utf-8?B?WEhIQXR6OUZUMmdUdk1KVEN5NTZjSWtvbFhpUzgxN2lFTWl5SmVzL21pWm0v?= =?utf-8?B?aFhTSERUWUxpVVNGTjZHcm5SRWNZWnZXcXE5aXN3QnRZdndFMDNkYTRVRDJ2?= =?utf-8?B?N1VqTk5zRklQdm5FYVdYWE5hdWw0MS9nNkFoNzFNTWl0a29DNDZ6MUFnSkFR?= =?utf-8?B?R1ZhVUR6RUo2NUs5OHVVQ2I3Q2hRdDVPNnhSMFAxRjNLWFp3Tm5MbzI5Sjg0?= =?utf-8?Q?c4hACN?= 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: 21 Apr 2025 06:19:41.1356 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aa267d89-12fd-4895-a6ff-08dd809c8054 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: SJ1PEPF000026C5.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR12MB9569 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216420446019100 When init_msi() fails, the previous new changes will hide MSI capability, it can't rely on vpci_deassign_device() to remove all MSI related resources anymore, those resources must be cleaned up in failure path of init_msi. To do that, add a new function to free MSI resources. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * Remove all fail path, and use fini_msi() hook instead. * Change the method to calculating the size of msi registers. v1->v2 changes: * Added a new function fini_msi to free all MSI resources instead of using = an array to record registered registers. Best regards, Jiqian Chen. --- xen/drivers/vpci/msi.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c index ea7dc0c060ea..18b06b789827 100644 --- a/xen/drivers/vpci/msi.c +++ b/xen/drivers/vpci/msi.c @@ -193,6 +193,32 @@ static void cf_check mask_write( msi->mask =3D val; } =20 +static void fini_msi(struct pci_dev *pdev) +{ + unsigned int end, size; + struct vpci *vpci =3D pdev->vpci; + const unsigned int msi_pos =3D pdev->msi_pos; + + if ( !msi_pos || !vpci->msi ) + return; + + if ( vpci->msi->masking ) + end =3D msi_pending_bits_reg(msi_pos, vpci->msi->address64); + else + end =3D msi_mask_bits_reg(msi_pos, vpci->msi->address64) - 2; + + size =3D end - msi_control_reg(msi_pos); + + /* + * Remove all possible registered registers except capability ID + * register if guest and next capability pointer register, which + * will be removed in mask function. + */ + vpci_remove_registers(vpci, msi_control_reg(msi_pos), size); + xfree(vpci->msi); + vpci->msi =3D NULL; +} + static int cf_check init_msi(struct pci_dev *pdev) { unsigned int pos =3D pdev->msi_pos; @@ -270,7 +296,7 @@ static int cf_check init_msi(struct pci_dev *pdev) =20 return 0; } -REGISTER_VPCI_LEGACY_CAP(PCI_CAP_ID_MSI, init_msi, NULL); +REGISTER_VPCI_LEGACY_CAP(PCI_CAP_ID_MSI, init_msi, fini_msi); =20 void vpci_dump_msi(void) { --=20 2.34.1 From nobody Fri Oct 31 16:11:51 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.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=1745216454; cv=pass; d=zohomail.com; s=zohoarc; b=i6v7rmMavLtzhbpxbgaGP+vB1/s8DKrz1wShuGv5AMYf1EVYCUl6ExfwHNRaqkQs94wGuZP27KE26RT67JEF3aAppODuE6zgU/7vgnA/3roLMXXbvSXwi59l51G2GtkLEVkWbocvdl/gq42+xvx9wZBQ9CATKfLQ9ILil1oLR/Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745216454; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QxL1V2Itz6NoD7DRvN+OfCh1LknThOBHHwX8mxG5dWI=; b=XuQZiYhQIq5H8AaZqYDenOes6N84j5ets4Gr6GYfN0e4skUzFwfgQkue2/DajY4DX5P1EhWl5tFyo57Gf7TQwL11DeiL2f4fymFlJ+p5j/Ijy8N6wY/DbfRrH0jYAX3ToH6KA9u+j7lFGDdbnSZ55VQaYrl2r/xqUC/G8Jz+pZw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1745216454264918.7208186369357; Sun, 20 Apr 2025 23:20:54 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.960849.1352588 (Exim 4.92) (envelope-from ) id 1u6kVR-0007mv-TP; Mon, 21 Apr 2025 06:19:49 +0000 Received: by outflank-mailman (output) from mailman id 960849.1352588; Mon, 21 Apr 2025 06:19:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVR-0007l3-Gk; Mon, 21 Apr 2025 06:19:49 +0000 Received: by outflank-mailman (input) for mailman id 960849; Mon, 21 Apr 2025 06:19:48 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u6kVQ-00057v-Rq for xen-devel@lists.xenproject.org; Mon, 21 Apr 2025 06:19:48 +0000 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2060f.outbound.protection.outlook.com [2a01:111:f403:2413::60f]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9f9304f6-1e78-11f0-9eb0-5ba50f476ded; Mon, 21 Apr 2025 08:19:48 +0200 (CEST) Received: from MW4PR04CA0386.namprd04.prod.outlook.com (2603:10b6:303:81::31) by SN7PR12MB6839.namprd12.prod.outlook.com (2603:10b6:806:265::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.31; Mon, 21 Apr 2025 06:19:44 +0000 Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com (2603:10b6:303:81:cafe::2d) by MW4PR04CA0386.outlook.office365.com (2603:10b6:303:81::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.35 via Frontend Transport; Mon, 21 Apr 2025 06:19:43 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Mon, 21 Apr 2025 06:19:43 +0000 Received: from cjq-desktop.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; Mon, 21 Apr 2025 01:19:40 -0500 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9f9304f6-1e78-11f0-9eb0-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A/tnlSbusmgWhh1SHg1Ib4v7DTB74/8FhjbjZu25kKt+iiNctGfZKG+1oiTSO4f2o/fRZxIm4kv6/AA79jXQqn6zVEFXEHu3czFnxwA9kkn3g8HaYH84ReneGdoJOssXyHpnBDsVvsdEcZ2SyIBSC3OXsJD4OuTCFamUiuotJ1J0m+FVLEjMUb6YR6YvO0Ji94uaMYxcH68UlIV/vibwwC8hIVsocWQ80YEWzCz2jVQ53U+YMjKmgKmmAwQUG7OqkjXsEaos57bW804AzZ9+HbynKSxHvP4VyKXyzs0PC1p/xCuWJ1+6U0B20YA40SDSMeqmqwBzaLWq2NzbmxJtEg== 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=QxL1V2Itz6NoD7DRvN+OfCh1LknThOBHHwX8mxG5dWI=; b=v+fw5O0ly+TDb0jEyKNIfn7GI3fp74td4Nyk1At33M4QvvYCcRPdR0OKZtCRhF0wslTtTDjwPth/A0JoSMwjoUfMiyxxh3Ve6uEirBQelGZrwAwDC8QLevR7HArIN0IBYZssdNap6NxphFjJCnMit/KhJUyO9pgTN7+So+SyalPXk/DJxc12l03QdmzJ4GBooXDBQ553eC5D/B6I0IqqLYz6UnxuJTcCKfXq4iKsmULo54m3gsV+uWisxFmeH1hcgqS+6UxLWjykHcREvq5WwOVY762u8xdS80lMZhsR2JKMQfhjYqqhV+KL8aYwJQ9Vch5OO7VwrKMV9zCTXfDNQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=QxL1V2Itz6NoD7DRvN+OfCh1LknThOBHHwX8mxG5dWI=; b=HKfuiDvf5oxhIBUs4XbhvMcf0mE4mmKfcTyOHSf/F8qTrG96JoRfwwWDvwnMVAWTz0X5afGBXwLfwjYnW3DxJqLikRoYHg+XPUXotOBvkbNl5N+MRj0WEELuzA+VjVd//p+ScAZSn96GnWSopbTAhnqJY3M9kNW0L04gC2cyvvs= 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 lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.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: Jiqian Chen To: CC: Huang Rui , Jiqian Chen , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3 11/11] vpci/msix: Add function to clean MSIX resources Date: Mon, 21 Apr 2025 14:19:03 +0800 Message-ID: <20250421061903.1542652-12-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250421061903.1542652-1-Jiqian.Chen@amd.com> References: <20250421061903.1542652-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: SJ1PEPF000026C5:EE_|SN7PR12MB6839:EE_ X-MS-Office365-Filtering-Correlation-Id: ee384c0c-4627-419a-521a-08dd809c81a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?S2NPcnB0QWZrbGFLNXQzeTcxOTdlNkI2dThEcm1qbE9BU1cyRG9USzRrblRy?= =?utf-8?B?bGNISnBMWEduN1FHa1BLUm8rdUlJVFB4dk5nVFNFZEpTZzVqa1pQUXNmQnZZ?= =?utf-8?B?dVptclpiQ2pKakVIZWVsUG54MGlBazY4T2hMMnhJS2pVSkt1Q3pmSWNGRWJX?= =?utf-8?B?RnF5QUp2aUNKUmE4cGVqU2g4TEdDa3ErbVlxY09seXBkcGxkUkN4dWt3ZXY1?= =?utf-8?B?VnpTMnlxSEc1YmpJQmNFVmR0VkswV05yRWs5R0k5aFNJV1hVdW5idXprNWtG?= =?utf-8?B?YWEwK0Fjb3M3TmU4WXBOaE9kTnBMOSsvQWlkY3c0U204NHRsL2pzMXdSUys2?= =?utf-8?B?RkdHaXN6SFlUc2xXNHlZblVFYUk1QW5HMzNtVE0zWldRajBUVnY0TmlRVzIy?= =?utf-8?B?dDU5eVA1QnBPUS9Odldkd1BmbTJDaDhxZWpHS0RNTzJEVUVFR2xBS0ZSbUNr?= =?utf-8?B?QzBjYTgxM0cvbnRrS3NoeEpCMFdld0ttajMyUWRuQVkvNVRCM0tNZ21TR1Ix?= =?utf-8?B?YUxSWUlRZmxpUzdxTHV2Y1BwWjNDd21PWkVwVjVDUFh6N1RJa3VzSmZ1MStu?= =?utf-8?B?aWdoOEs4ZHJLSEZWQlJ1cEpuYlZBQUpkMHVZZlhxeEUyUmZpWklMR2RLbUdM?= =?utf-8?B?NmNJdFZxbXl3bjlNSzh3a1lWa0UwcDNKMWpiL0FPU2lFRDVjSlVvZldHNkRa?= =?utf-8?B?MzlmNndScTQybWtIN01iZHkrVnZ1bXhRZ1NCMHRLZzdvZlFMUFhyTjVNRlZI?= =?utf-8?B?cnAxVkloQ2U3OUoxSzcxVitNNTBvd1Z1d2Q1b0lOdFU4TlJlNEVFNHlJS21o?= =?utf-8?B?ZmxDejVtd3lvTC9UelV6SDZycFRlRVhFd2o1ZE9hWmxOVFZWNDE5SEZ2c1V2?= =?utf-8?B?ZTkrNXBTUlRjVy90S0NMZUMzY1NJZUs0K1ExVS9IcmRuUkdaWVJTMGY0V0o3?= =?utf-8?B?SnRkbjhrb3hBeTRhWEJaMVNrNXZ4K1FNaXZtYTFSNUVNVnUxZjVQYVkvMWwz?= =?utf-8?B?MmwzVE9FaFlKMVZLazVBS08va0xjbTl4SVo1R280WWFRTHU1Y3FPVWxjaUR5?= =?utf-8?B?K21QejZtaEg4TERpZmxEK1ZFMHcvbjNHRW9WV2hyM1J3dHJnQTZwU3JFbGF0?= =?utf-8?B?S0ZUNUk1RGU2bUpnTUJ1dk1kbDFnN09tNFVSU1BDR2FNV1h1K0RFbVdsMTNS?= =?utf-8?B?TnBpdXNQVkFaVG55REFlVm5YaGZjOWlHNnd6M3BOZWM3a3NCOEtWOHpPYW5E?= =?utf-8?B?alh6YkhyOGh2VlgwS1hVaFFHZDB4LzVUN2lyM3gyODlqS1R5Ulg2VHhGNXgw?= =?utf-8?B?aTd0WWRHaXhpVU9oZWlsWkFiTDhTdE9hdXVRNnoxc2FySUY3eHhhZitOdEVj?= =?utf-8?B?S2o2dUhiV0tsK2tadHJ6L0RvcUJaSHVsY0lIN3NKSGZOU1dFek5WUW5NSEor?= =?utf-8?B?c0NQRUJuT25tNnZuYW9lWDB5Z0Z5L1VFVyt2NitwMUh4bFZhYy9nckE1S1Ex?= =?utf-8?B?aTFxeGFNMFNDZFB4RUp4ZFEzbnFIVHdjVnpLdDVvWHM3RjlvVFJjNXVESCtZ?= =?utf-8?B?Zzg3TkVQRjY2SWhiY2NudWpRTUtRQTYySGtBYms4Qjh1TkhaTGVnald1QUZY?= =?utf-8?B?L1BTb1ZPWWVheXZSVzBtZVNwQlhwRzJoU0JJQkFab00xNkUrUWVJSzc3NFUv?= =?utf-8?B?Ui9JanM0OWhRZjR0RFFiVC9BSmkwL1RTTVNyanpMblZpQm93ZUY0d2hDNUw3?= =?utf-8?B?ZzdsMDJZMXRNUnZRNGNrdFZ0VjEzSHNSZHBYSEg5Nzg5bzRYbndOamYxbmtK?= =?utf-8?B?RjBJNWFYbVJUeWwxV2ZLWEZtMlFINWlkQ1BSdUR0Qlh4LzExNjBVakdSQWhr?= =?utf-8?B?cXdXTjlnbEt2SUQ3cVVIYzRRWkl4Q01ldWFNOHdWVXdReWU0WkpueGxCcU1u?= =?utf-8?B?T3dlT0k0dnpEM0NxdFZMb3NXSDU3YzIzZGhXZDJ3dWYyMC9xL0xZNTk0TExj?= =?utf-8?B?QVhMSDdodndFbnRWRTM1TE5COUs2ZjFtOW96WXYrWHl2V0RCYUdybmI5U1pG?= =?utf-8?Q?keOb9w?= 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)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2025 06:19:43.3551 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ee384c0c-4627-419a-521a-08dd809c81a7 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: SJ1PEPF000026C5.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6839 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1745216456410019100 When init_msix() fails, it needs to clean all MSIX resources. So, add a new function to do that. Signed-off-by: Jiqian Chen --- cc: "Roger Pau Monn=C3=A9" --- v2->v3 changes: * Remove unnecessary clean operations in fini_msix(). v1->v2 changes: new patch. Best regards, Jiqian Chen. --- xen/drivers/vpci/msix.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c index 0228ffd9fda9..e322c260f6bc 100644 --- a/xen/drivers/vpci/msix.c +++ b/xen/drivers/vpci/msix.c @@ -703,6 +703,25 @@ int vpci_make_msix_hole(const struct pci_dev *pdev) return 0; } =20 +static void fini_msix(struct pci_dev *pdev) +{ + struct vpci *vpci =3D pdev->vpci; + unsigned int msix_pos =3D pdev->msix_pos; + + if ( !msix_pos || !vpci->msix ) + return; + + list_del(&vpci->msix->next); + + for ( unsigned int i =3D 0; i < ARRAY_SIZE(vpci->msix->table); i++ ) + if ( vpci->msix->table[i] ) + iounmap(vpci->msix->table[i]); + + vpci_remove_registers(vpci, msix_control_reg(msix_pos), 2); + xfree(vpci->msix); + vpci->msix =3D NULL; +} + static int cf_check init_msix(struct pci_dev *pdev) { struct domain *d =3D pdev->domain; @@ -757,7 +776,7 @@ static int cf_check init_msix(struct pci_dev *pdev) =20 return rc; } -REGISTER_VPCI_LEGACY_CAP(PCI_CAP_ID_MSIX, init_msix, NULL); +REGISTER_VPCI_LEGACY_CAP(PCI_CAP_ID_MSIX, init_msix, fini_msix); =20 /* * Local variables: --=20 2.34.1