From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054535; cv=pass; d=zohomail.com; s=zohoarc; b=gGMGk0cNqxLolofah6kyLhhlYvedMjgdTV1tYrLJqVo09YEotWqfuoSJu8bIFWhtnotz2OCJTDJpfH6wqhBUprje7XeDNqdb33BLzG9fH1OxV+1oW+Yk0FrhkwS2uUO9MRJfhllksAEoqfKCDNWD/lwU6VCyPkP7vfAv5aCLfpE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054535; 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=eKjBrBlYi81AwmoCTlVxMi0XuRHMmtnX6O2MuhzGwS8=; b=XWHlNOVN5xekz2FVTJuKMocukL8ZYkSMcNVFil1co2Lyyyv5j5oXZLehXFCrASkJ56V8dqYTXdxG4ldo+9l5N80Stmd8LUDdnqyITdqSwFY/3K+IhxiZcOTBrCU2KC09LJzy6+oGcFWxCYlVnbUbcmf/I/YNqd02tP6QrJNc9/k= 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=epam.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 1773054535830718.3357433215664; Mon, 9 Mar 2026 04:08:55 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249275.1546752 (Exim 4.92) (envelope-from ) id 1vzYTR-0003vi-3c; Mon, 09 Mar 2026 11:08:33 +0000 Received: by outflank-mailman (output) from mailman id 1249275.1546752; Mon, 09 Mar 2026 11:08:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzYTQ-0003vb-Ul; Mon, 09 Mar 2026 11:08:32 +0000 Received: by outflank-mailman (input) for mailman id 1249275; Mon, 09 Mar 2026 11:08:31 +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 1vzYTP-0003iR-PJ for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:31 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 4e289918-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:30 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by PAVPR03MB9775.eurprd03.prod.outlook.com (2603:10a6:102:312::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.23; Mon, 9 Mar 2026 11:08:26 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:26 +0000 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: 4e289918-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UNbYhsNNWLbxrbWO51Gle1Q32feoW3QMwvwGSzY4ZE3h9tzq/4VQ/hQ6P0CAaeo7FNUCMZxe90yHkdUEJ8BmFqvE7TU6ykvjZHk/oq/xCt4p+xt+5ujVUprBLsZjKPWLaKoPVgg1a3G9tWAnWCWwr78QXjDxzrWZQP7sHzQDG9bhsQ880QDjib5h7iH+9nFm+fawj3Vp2maj++bVwroZoa338/aXWqkvBOaBHlaHR2H5Nya2Vg9NIzIT1DD2tItmvtYwvG+kubHtYcs9FlFH0HZnDEm7m8vh6X9mMG2jtlodGDUBvsHe9I9mY+/Ax4+xoOcBU+x08xnPsrnU/vBASQ== 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=eKjBrBlYi81AwmoCTlVxMi0XuRHMmtnX6O2MuhzGwS8=; b=CtrNWDAgLUeFETsHbrhOK+MpnXKGofqk55o0mP0E7FSglvzz1pGwT3sgdDBc7m993EF188CpbPU9QCodFl50aq+AC0GMoTnDlIWxPhzIRzhWCa2siMdeMy1Tg2dlZqNxnnwgWgJEVFvlpYLGaEUgQKx9hTvkERHur0ki0EkLXZOs14MUNRQNKseOMiDlHzoeNzPBgor4qOXoCvQEFX2td2jT+D6/MHYKx7ArRboiDpyrlA/stGuUrf5EsQG7keqfyxOuof5UdnYuWz3TzsmKpoxXgN5LnjS6C6CuYeEUR5jGR8/FbsO4Ph4mbrNMf+qMNNeg6ff5Q25eTBqKT84C4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eKjBrBlYi81AwmoCTlVxMi0XuRHMmtnX6O2MuhzGwS8=; b=PTQEALWTxsHQoSAEnSmETyyHSgbGoD2+WgLhN6eApJn8vaIihQbvFeGj6ybODIGd01UrSVMFGN9sDsSW+ffq8JqDP84uYq3Z6zv4fEa9wc44KkRgcAtc18k587U/y0L7UclriuLM9BNOkbSHcH1CPSKunezzAlOXyPmCNbZk6GTaAB6bco56o6PQGK6PUuGKaMa/G5iKH72A4RCtjHEl1TAwUZTxNRoRw1el9cVGlfZwSfNXmukJfvI6v3GKCh+TxXeE6p7Wsm1CazHuMGRXPumDmlU0QDCebCyudufJC8koPBdTaKFx/2VPwmCid9CxCTwf7nMc02U6lMiRYe5kgw== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Stewart Hildebrand , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Mykyta Poturai , Teddy Astie Subject: [PATCH v2 1/8] vpci: rename and export vpci_modify_bars Thread-Topic: [PATCH v2 1/8] vpci: rename and export vpci_modify_bars Thread-Index: AQHcr7UN7Q/q9Zlc+0i/1HMfYtl+WQ== Date: Mon, 9 Mar 2026 11:08:25 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|PAVPR03MB9775:EE_ x-ms-office365-filtering-correlation-id: 59e1b0c8-4252-4867-d6f1-08de7dcc3007 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700021; x-microsoft-antispam-message-info: O7Ti40F72MuPHn/AiK/Uqkd3Z4k2+q1D2Qr6ZtRkmezp/ADgjLgmWoLiiTkSeRmV5hZfilh2lc3Tu9zDsG6w+sQgDGzMSUQTUVkH4F+DHhXCtolo/R53R1UA4ttqzSG2koUzrx2H+41YXU9kpNOs9cmV5nrKXo5zTQY6wcOb5gysccuwnjR7DL4wRMVgBWT6V/2VHxZIcLlSzuWu6sqKQdTyAhTHK3x9B/AqhGErHHHCRKo3RMLYzpIYh7yt86bmwvOGmbprJPJz0vieiwwS+R7vxKfiLuId9TvgQijk0z/I+GorL30YK8lOPn6kaXXLItMfciBSHYwHK3XFxxY/WkiKG09KHj1p0wZMTeMSHKh5WLTTe4caqR8DQJh6HJOpVhzc5u9vyue67UW+aAmDTGnEAdP4KMS7OQN/YmH3LSaycUeQZg8ESdDiymsE9mIKsfK1XfAWBWJdD+L5T0uUGFLFTvcI1sf2hA4NrX4MIi3i5S4N6L2gDcWbOdL3XPetuHI4MBL1dESOEX9S24t+aTpgsSXi/1FlgwFmDEzKHWb3R1x3QdBpd9GtWqU/+2U1IUDmnsf0vh5zpEn03HdENqc6FVS10Mp172Eg1S0zV+Q5f2PC4OFVaupwiTb0SspPkI34ZXMlyu65m/oXptbBLQ6DzhxH2aAXM4R/V+1NdH4Li2PEWdjSA94JGc8Mehrj55bWrUzhUxUnfXSv204QoIUKUyWMJX4uk7AeB4Oh6dLKwKlzwqIPVuBRI+ZxkuUYNTRPlyp8w3ar8l4f5HpJE8w1fBPPGGM1jV3ihxf6FMI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?T10TfFxg+Q6Beh2pyBHMUu0F7TExdPD3nIAZ/L7Dundx4p71bZ6VQqJqPg?= =?iso-8859-1?Q?eZ33+iO4wH05/d2SQP5aW0U9D4arpYgrPj7AjYcqtNMXSL6gibqkgB6PwM?= =?iso-8859-1?Q?/VFXuA+UKxoifPozxKl9CF29wB0vBznYueAhUar03v5m/OXO7Um7OcwHFx?= =?iso-8859-1?Q?XkCR8m5/xSfiOuFRYzRP0nAHM+1cButtZvyBtK+ATCjY2qEH4VXhZTcWOm?= =?iso-8859-1?Q?5rkt5sfrOM3L0WG6tSBw+9frEkIQFZMQ4aeaPAdkJYAZNMiJ83MFW0lgh3?= =?iso-8859-1?Q?BRrf6qooSsSG3JJ9tY/Vxh2kaxJz6DiS1npGkZOtl4Mab1K+bcKbmfZYbN?= =?iso-8859-1?Q?2dfKulaDEW0xsqCeN7I/cOFQcJGsuOZOELc7QCI6bI4WBWyKUaKnh6DEv8?= =?iso-8859-1?Q?3UBs77T4UtCe+G4JzUmE2T7XE07kUThv1oaWm8SrEfVDojMKcCoo7S3uUf?= =?iso-8859-1?Q?zXYSU0klr3eqFlssheVKvpnREYGUlWLrUQuNxOSybMiuLn3Y5KdV4nK+3f?= =?iso-8859-1?Q?Dfg1PYI4wcf5kOu2AY1mL44e8/6MyAfw83/RvjzhVRyCYOOb1KgIhMGhEX?= =?iso-8859-1?Q?Q+Mcvs8W1u2d5mx3YxtItdhJIGnjoPqvGzlVeAKHIaAb5UQcc4qBm8aY3K?= =?iso-8859-1?Q?4UXFZaFKToJO6Rq/TIbU9EYHWQifUgBrmA3Y9Kz8zqnIYfHGg9SJIZlbOh?= =?iso-8859-1?Q?iHMLEXkCjeBXi78/g91NgjSVICSfMw3okQUOwFVv21vs5834kKuJUpzlWd?= =?iso-8859-1?Q?nfM5DaGXoXf55mMkBaPA3nao1Vxb85Ye/PAJe891VTfpXuqB8mZcZc8dgw?= =?iso-8859-1?Q?vfqx8t9mBIp/fV70/SeRMichumv7P3nlNPrKgJmgWf6GXIAXB5WA7Gc8C4?= =?iso-8859-1?Q?nOLMUaoULiTSr8os9s1iLS2gWY2/CJ2iK/Ti+Miq4B01/AlcPsY5SxcTsg?= =?iso-8859-1?Q?+nfggLf+UlVvJdi/oS5A8l7ygHCjMkJivNLPIGpPDLbh9Ydym3xFOOc4HQ?= =?iso-8859-1?Q?qW5kV+zF7LoKbuJ6DvEZTSpoQNJz7Gk8ypE0lk0oxMvabURYpK0jKo3KLz?= =?iso-8859-1?Q?JKhieJgFBbRPpL6UD04B/NK2YDNBYlxeheAq7SWvEdhxSyBIzCkyjkzP3U?= =?iso-8859-1?Q?+NI2CjVwMgpwY0eXF/8QshL6kA9FcIj5xh13nsiLHZz6+0EIYrlehaXjw9?= =?iso-8859-1?Q?BjQh6KTxFTRxfQuNA6dqLh6S9pYmpfnCdL8IERKEJYZ/2CuUeAi2CW3Bz5?= =?iso-8859-1?Q?sCywEehndIuTSmQ3oaYE3DQoEH0LLyAmJIVJoSfklt0UeRcLkLyJIc/uZ2?= =?iso-8859-1?Q?t+0x85Ll4GHPO+KXrCRLMXpbEy0MyICbO02B8wo/BPebqnsrjT9+SUQ7ck?= =?iso-8859-1?Q?oGbPlPgYAZUgmgZvfGP872fn8tu3sP3EZKRslAZ2qsiQvvjgNBHTrG6tfZ?= =?iso-8859-1?Q?x5Z81CAB82oluGkaicsUn9QIQs1brVk0d0bWBwF5PCzsrl6r+dsGBQTH0K?= =?iso-8859-1?Q?0AWbFb4CCkktJG0wbbkMGIKQXGIq0iE3E4rYhhL5rZzM+Z5TQ5HabD+U9Q?= =?iso-8859-1?Q?3FMgTQZ75+hBo1hfcixrJDcfnjHghIq/hkkRnHUdKltpg8tq9/gsiuVrSb?= =?iso-8859-1?Q?3zCj9hg7WeXUE3JEu4S8OeCAf61VW2Zng+8dXxhMjRW4yEpR24w4PpEVqz?= =?iso-8859-1?Q?3bxmLrYvMXrrsQCWVjVR7wbCwM/fYfW6dzqcabCh2aIHlHtrWZHeJH3Nmn?= =?iso-8859-1?Q?x+W9eL/wjIkE+1UwsqMaDcbA81EsLP5VIhUi/RQ1MiXOpjwZh5vmznSP7a?= =?iso-8859-1?Q?56RvvFOjWnpA5FVxX9uU0qSmxyDHhhg=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59e1b0c8-4252-4867-d6f1-08de7dcc3007 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:25.6964 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BlPLie3bHHeOvHSRF4kOKH2ewat4OjMOV360X4SbCOCZfotcK/B+OAkQAAp0oykHdizm0DietFKYV2+dQ6IJPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR03MB9775 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054537467158500 Content-Type: text/plain; charset="utf-8" From: Stewart Hildebrand Export functions required for SR-IOV support. Signed-off-by: Stewart Hildebrand Signed-off-by: Mykyta Poturai Reviewed-by: Teddy Astie --- v1->v2 * Collect RBs --- xen/drivers/vpci/header.c | 16 +++++++++------- xen/include/xen/vpci.h | 3 +++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 739a5f610e..5202518e83 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -304,7 +304,7 @@ static void defer_map(const struct pci_dev *pdev, uint1= 6_t cmd, bool rom_only) raise_softirq(SCHEDULE_SOFTIRQ); } =20 -static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_= only) +int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on= ly) { struct vpci_header *header =3D &pdev->vpci->header; struct pci_dev *tmp; @@ -545,7 +545,7 @@ static void cf_check cmd_write( * memory decoding bit has not been changed, so leave everything a= s-is, * hoping the guest will realize and try again. */ - modify_bars(pdev, cmd, false); + vpci_modify_bars(pdev, cmd, false); else pci_conf_write16(pdev->sbdf, reg, cmd); } @@ -713,13 +713,15 @@ static void cf_check rom_write( * Pass PCI_COMMAND_MEMORY or 0 to signal a map/unmap request, note th= at * this fabricated command is never going to be written to the registe= r. */ - else if ( modify_bars(pdev, new_enabled ? PCI_COMMAND_MEMORY : 0, true= ) ) + else if ( vpci_modify_bars(pdev, + new_enabled ? PCI_COMMAND_MEMORY : 0, + true) ) /* * No memory has been added or removed from the p2m (because the a= ctual * p2m changes are deferred in defer_map) and the ROM enable bit h= as * not been changed, so leave everything as-is, hoping the guest w= ill * realize and try again. It's important to not update rom->addr i= n the - * unmap case if modify_bars has failed, or future attempts would + * unmap case if vpci_modify_bars has failed, or future attempts w= ould * attempt to unmap the wrong address. */ return; @@ -933,8 +935,8 @@ int vpci_init_header(struct pci_dev *pdev) /* * For DomUs, clear PCI_COMMAND_{MASTER,MEMORY,IO} and other * DomU-controllable bits in PCI_COMMAND. Devices assigned to DomUs wi= ll - * start with memory decoding disabled, and modify_bars() will not be = called - * at the end of this function. + * start with memory decoding disabled, and vpci_modify_bars() will no= t be + * called at the end of this function. */ if ( !is_hwdom ) cmd &=3D ~(PCI_COMMAND_VGA_PALETTE | PCI_COMMAND_INVALIDATE | @@ -1059,7 +1061,7 @@ int vpci_init_header(struct pci_dev *pdev) goto fail; } =20 - return (cmd & PCI_COMMAND_MEMORY) ? modify_bars(pdev, cmd, false) : 0; + return (cmd & PCI_COMMAND_MEMORY) ? vpci_modify_bars(pdev, cmd, false)= : 0; =20 fail: pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd); diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index d6310104ea..a98ddbb32e 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -295,6 +295,9 @@ bool vpci_ecam_write(pci_sbdf_t sbdf, unsigned int reg,= unsigned int len, bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int len, unsigned long *data); =20 +/* Map/unmap the BARs of a vPCI device. */ +int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on= ly); + #endif /* __XEN__ */ =20 #else /* !CONFIG_HAS_VPCI */ --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054538; cv=pass; d=zohomail.com; s=zohoarc; b=ZqUuEa2MtM6HVZISXzZHyOr4JfXodhiCqH0Sp3wBiRlqFmibrTVzvFjpzN1QFoLDvbMgLLgy9WsNHr1BstUmN3Z2DMDw69n98XmPsuySNjcyNau1p5xqhS6uWvMkyB1xY0qE+cWCcuuyVGnmbIZHWiyQkwiOL5D3sD0EZYjZLaI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054538; 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=pWzIGDE75yh52u15Xirf0pf0J8xYC99w/7XLPD+73E4=; b=hgtZTQ/pyw6XmwRtHeE3CK1+T7HjLNCBenx7rt5CUifatgZ5AeJzz6ONn3ccO9Qi4THLLz7H2HTiNellH7yLQuT1HOIoAYjWhV9hTdPiW/eFZflRcpJSjq85eoBWGQk6rsolIoFI/Uf3kt4doWNhEDKtZlg4QY07kbAWSByH9Mw= 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=epam.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 1773054538036446.22506372357145; Mon, 9 Mar 2026 04:08:58 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249276.1546761 (Exim 4.92) (envelope-from ) id 1vzYTX-0004Di-CF; Mon, 09 Mar 2026 11:08:39 +0000 Received: by outflank-mailman (output) from mailman id 1249276.1546761; Mon, 09 Mar 2026 11:08:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzYTX-0004Db-8o; Mon, 09 Mar 2026 11:08:39 +0000 Received: by outflank-mailman (input) for mailman id 1249276; Mon, 09 Mar 2026 11:08:37 +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 1vzYTV-0003iR-TL for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:37 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 521c8dc5-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:37 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:27 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:27 +0000 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: 521c8dc5-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nl8QLc9UdP4ObnHMHs2oJLNhVmBTPr7g7K/+hl+X37iwSZo8VxQXuDT8O90eGWeeO67dqMdQyQu16VlnC4z7czZ9hghgP0c7KmmAYV6OqRYZvwDbiCzEZdiB14C4uokcLH6QRS8pcc/uH9lseoX6LPkoXFED6XeY/7uaXGzN5rXpC3ZL916wDMYd8YEL+hBsJSqx1UPcbEkNwsg/tWsZO0d/bILruNZJEapkStxToql0n3FTuvV1Dw6SEsl3HSBwzgrpRMSUBxGydgadz8fgmfW9qIwRxwZc3kAXAvOObtAGmcDfqLTNbk2YByiFyCsN9IQm9BaD8UO6ZLbnlvHjSg== 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=pWzIGDE75yh52u15Xirf0pf0J8xYC99w/7XLPD+73E4=; b=RutKlxD6KyV5kxYSoeghtgKLH9y+5DtP0UA2c/EICN1DbJ8PVVGXnPWiHF4zhh+RhhFdyJr3k7WP+euOM8vpEnyiHvmBJgXyC6ubHCo1bvfDHMeSAJypI5ntTQtxgMAGEGgJb0W1zy9fPQ/5IT0Xc7kPv4aYXNISqe/4hYLO0V0erg4KL2kwKoLYOMHA83fNMJAI5oTih+SKjuKAhWQZQU8XxEcMOVu4thXBTcLZDIiKt3rH5+1pTVr64e1t7YFc6slmyP9G4Ym96GKgvhwedG+pHmJF0ELLumlxJ6CsMT8Nj3xdJXVZZ8P6L3/aNraWaQH+y6w/I84vOiQbXmbyug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pWzIGDE75yh52u15Xirf0pf0J8xYC99w/7XLPD+73E4=; b=PHiJLcidbNn0dDFazHvU98HdYzaVw3FIO+hxVLLyOY+i8kZOlKOk8NaJ8+xoEzqpdR9Togc9youYXVngFNTl+TBD8BFSCJouCd7gi0eUORPifGY0LLHzbERZ+deNb/8HYog+6LrPWJc71IAWCYkcr/5xKXl6Cb+2hdESYSN+MoHwSdltFOZrxk65KdRM+XjYPWT+PWGkOx2Wr4SJPJWQ/yao6DoyvFNhAecaSm3nBQlWsOqzMbpuZ3BsqT5lxQoC9s9nah5GFtF+OJLybqkW0R/9d5ivDQaPDpZmZMue6Qg0XhKQkdkKe+kNFgPg0JlEcLYg3CF3u05ex15GUAB1vA== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Stewart Hildebrand , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Mykyta Poturai , Teddy Astie Subject: [PATCH v2 2/8] vpci: rename and export vpci_guest_mem_bar_{read,write} Thread-Topic: [PATCH v2 2/8] vpci: rename and export vpci_guest_mem_bar_{read,write} Thread-Index: AQHcr7UNr/GbhVrPC0iBoBGfLfVFWg== Date: Mon, 9 Mar 2026 11:08:26 +0000 Message-ID: <5f364e8fddc83b9a7ae08945a91c38ae1648442a.1772806036.git.mykyta_poturai@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: acd06d94-67d8-467e-243d-08de7dcc3047 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: jsAlT0GNPi0IS2NxVOWAoYpQiAmM0cDPg2eh7bUOYeRfdqOZiE24yLU2/siQ0vDErl18i/1bIPp827lFJiULUMJja9zTPEE917ec7vu9/wdinp4p6luFKLa0RBLRvIGZnz+wq4BUz9TJYW20unLgZ4s1IllDFzIVOdjOueeRG7FX2PuZbj5ujnRzuDNihlTBggpt7F3cmn0IWa3tK6MVPki7XCFV6vGEPCVs4rW+x9/bgYb7mG8p11YBY51n6kwKrDQY+cdjYotq9CJEp6JiVpcK+nMVUse5tezCE7rFAvjSMDVYkPc/1q+BTxYPVAbG2Cjem3FF/TVSYAsEOvaQB+xbtDqs4oDAIDNKDanUrmQ9fsinWaIevRi7Xl4xtlkaFw+NXCD3bRXa0eoLvwtfHdntorHGu8yrfleOW10SM+4OUXUsZzNuBZfHXL4wN5F6pkJIB7rZAUDr2Uyoe+WqKP50344TSc0d849cvTtRP98dkuXCP2U0spUCXiPlE9ErqJPIfxPzyoMyQaJXqFrgWduaSKxLFUUk/BV5+EnvJljT8Jgs+1a2AcMnYDmw7mmMUlM1G5/BaAHI55Ks8DWUeqdI8n+oXD9AtLnI4vl4Nz14V0dMostCi0/FBQOyfcxoYwze8zpqnCudvtmYg7JImb84zFKxzlu7PqmPcVE5oiFR5oidqjs29LkIp7Keiv2ImlL9ciO2Avd1oOR8y5Ovwgof3Lkfs49r/31cWcGf6/m4YmlavTTVg/DYmMHN/fwE7jiymyYRhii15lWvD5GVL2d7ALPHqMTa0k7P1qwYpHk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?auwvkiNQA2GZu4QqaB+cl/5cXA3UfuB8bj8To7PB0vkaqMTlTNkXZBok27?= =?iso-8859-1?Q?QNHUFEEa8DrXqOHczIp4lSVrBJY//w/tgiyRB6UPtld6zL11Kf95Pj3F6v?= =?iso-8859-1?Q?29Rx3LQpyGhaXUfIzyjWifCrXTC6/Sp9E7PCuJ1q5q532PGbhtg5Rj4HUc?= =?iso-8859-1?Q?C3UiAEVIgynCkfFKoH/JtJXftJw4cr22ynvTB23yxPP4bcJo+PxFjKSkWh?= =?iso-8859-1?Q?BhhpyA3I9TMRKPGLDnIKPOrlunZHtR3fWLqfhwvBW02Awif+5aMjuW+CXH?= =?iso-8859-1?Q?hcSGuLP2lYIJxCndVb9q14SoMYl5mQG+yirhQ5Dq4Bd820yigWBP2lCh9b?= =?iso-8859-1?Q?27mas/VjtjWTuqFzEVsfO+VVV39THkwSna/oiUYtHxe9Bte5dw3FYRReUQ?= =?iso-8859-1?Q?xU+IJ+ARY3FeDk/CGJN6pHJumqsLRFhaR3r1w69t6Lq9BDSmC5MT4ENYPe?= =?iso-8859-1?Q?+F62wN36nIJkLtOO4/rB7JpPTXRQE4cmLS2zqiEUd2lRI/xzlHFMHopMJL?= =?iso-8859-1?Q?kA8X00Y5+lNCLVxfc74YgZ1HpjC5pkRLK6s3Cdmxk2jGYKcT0HmkyV+CC4?= =?iso-8859-1?Q?17bQDmm0IVB99GeIoEX+zv76NtTdHmdw3VWfuFmRO8r55AK4QoV4y4X05j?= =?iso-8859-1?Q?B12c51r0Jz6VlrVvs3fm/XyTPDwbqF3r9AlC4x1pXswI08RGU4IIAJyjhu?= =?iso-8859-1?Q?u8z4nmtCPMvhEMTkP+0rCB9xAAScV+pAw/UVjWFXRoO5UIj9q1FZ1+0as/?= =?iso-8859-1?Q?bgiKBK50dm+g06qOHjuNgvB9paEjMfFOd09oJX9Rg2eVBfLZ2rRb64RwoN?= =?iso-8859-1?Q?KbfzBPRfyM2H7kV+W4KB4oI1PR/rXT7JDYGNSN1/ZPYQeBAhLWu/uPACRG?= =?iso-8859-1?Q?cjzPD3AzQsnHysFT0uC9VGKRj6hVNS+dUWynntMioFg0vLLqZ7wybjd7ki?= =?iso-8859-1?Q?IeDhANaeN1f6FY1lDlr44NoKyoH83/7dIRafhjPZxTVD6Ihwwbt9I//8Kp?= =?iso-8859-1?Q?rorBOjYJZu33PtwrpaLJ50cRgfIDDAoNcdNVvaQJ9tUw4Q7XmQE/AUvqC0?= =?iso-8859-1?Q?BBNguujleBwG/A6sYIk1KDtDcGkJbwmj2Cqp510FLoVUttWkKvVI70Y0Ql?= =?iso-8859-1?Q?W7y1Fs9sPID7zjoJf1EFdLfCVb2P8wVAiiHpeUn4EC0Z99xapNam7KjRCg?= =?iso-8859-1?Q?FsUQu5oLKZJYj5Lr4LssiY7T+SKXAbd+ntxcoagdO2ULpvurS2L494s7ez?= =?iso-8859-1?Q?kLnxJPECQeDZ2IadwkuSHJqkPWVdl17a4fSrnDXng82YW84BfmwevATjMf?= =?iso-8859-1?Q?DTqdBiMB5tT9P79T2pftUgOWPjC6w4Fb/4XPriKu65JEmD0mzWNyaWSQ7T?= =?iso-8859-1?Q?ITm4CSFR8oahilOd92EPPz17H1Lk34OG9mA9v/VuGNQO8NdQpUMxA5EXjs?= =?iso-8859-1?Q?TyMdDFfiuAQ7X8vBtkTM8rrcbbSUdRxZ25VheBk/7HoKKY3qOvuIM9BSIE?= =?iso-8859-1?Q?ReFGZJSNTOqnJKwbIxpkk/0STHCbTv2sEMQ9nuoX5LPMwsRPMT0bEdj9wZ?= =?iso-8859-1?Q?01EFDq343q7UGRJae5VpX1YfgErL+zrlYyagY+LU9IWVrSVIJrp3294m+1?= =?iso-8859-1?Q?N+CT9OeXDo/aD0uH0UqwjU7v9ulBHsevjUnbkYvpa8eLuBF9bWIun2fanS?= =?iso-8859-1?Q?7j44MNG1tVDw14wW1X+a/NB/bb3F1xs6arF1S0oBh1h1nWNoz6ltSb3iwS?= =?iso-8859-1?Q?gfS47j3K3RuFlthJZNKic8TwkMnOK/dS/DVeXWYiTOmn2N10MvC+75cZUZ?= =?iso-8859-1?Q?CpP+O+HxFHwYFVsosu768htF6eHgop8=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: acd06d94-67d8-467e-243d-08de7dcc3047 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:26.0310 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: e4WSfxWyCKueygyCsJC6swW/fwfuIaiKHOdObpxVS2Z2PMvVr8qZJ/MGfx5o5EGYntWyDkhnExk2sy2//qMjIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054539477158500 Content-Type: text/plain; charset="utf-8" From: Stewart Hildebrand Export functions required for SR-IOV support. Signed-off-by: Stewart Hildebrand Signed-off-by: Mykyta Poturai Reviewed-by: Teddy Astie --- v1->v2: * collect RBs --- xen/drivers/vpci/header.c | 20 +++++++++++--------- xen/include/xen/vpci.h | 6 ++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 5202518e83..07ec991a12 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -610,9 +610,9 @@ static void cf_check bar_write( pci_conf_write32(pdev->sbdf, reg, val); } =20 -static void cf_check guest_mem_bar_write(const struct pci_dev *pdev, - unsigned int reg, uint32_t val, - void *data) +void cf_check vpci_guest_mem_bar_write(const struct pci_dev *pdev, + unsigned int reg, uint32_t val, + void *data) { struct vpci_bar *bar =3D data; bool hi =3D false; @@ -652,8 +652,8 @@ static void cf_check guest_mem_bar_write(const struct p= ci_dev *pdev, bar->guest_addr =3D guest_addr; } =20 -static uint32_t cf_check guest_mem_bar_read(const struct pci_dev *pdev, - unsigned int reg, void *data) +uint32_t cf_check vpci_guest_mem_bar_read(const struct pci_dev *pdev, + unsigned int reg, void *data) { const struct vpci_bar *bar =3D data; uint32_t reg_val; @@ -959,8 +959,9 @@ int vpci_init_header(struct pci_dev *pdev) bars[i].type =3D VPCI_BAR_MEM64_HI; rc =3D vpci_add_register(pdev->vpci, is_hwdom ? vpci_hw_read32 - : guest_mem_bar_read, - is_hwdom ? bar_write : guest_mem_bar_wr= ite, + : vpci_guest_mem_bar_read, + is_hwdom ? bar_write + : vpci_guest_mem_bar_write, reg, 4, &bars[i]); if ( rc ) goto fail; @@ -1018,8 +1019,9 @@ int vpci_init_header(struct pci_dev *pdev) bars[i].prefetchable =3D val & PCI_BASE_ADDRESS_MEM_PREFETCH; =20 rc =3D vpci_add_register(pdev->vpci, - is_hwdom ? vpci_hw_read32 : guest_mem_bar_r= ead, - is_hwdom ? bar_write : guest_mem_bar_write, + is_hwdom ? vpci_hw_read32 + : vpci_guest_mem_bar_read, + is_hwdom ? bar_write : vpci_guest_mem_bar_w= rite, reg, 4, &bars[i]); if ( rc ) goto fail; diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index a98ddbb32e..dd233b8b03 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -78,6 +78,12 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsig= ned int size, uint32_t cf_check vpci_read_val( const struct pci_dev *pdev, unsigned int reg, void *data); =20 +void cf_check vpci_guest_mem_bar_write(const struct pci_dev *pdev, + unsigned int reg, uint32_t val, + void *data); +uint32_t cf_check vpci_guest_mem_bar_read(const struct pci_dev *pdev, + unsigned int reg, void *data); + /* Passthrough handlers. */ uint32_t cf_check vpci_hw_read8( const struct pci_dev *pdev, unsigned int reg, void *data); --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054548; cv=pass; d=zohomail.com; s=zohoarc; b=gshnJlYrfJJBUz1N5uVE1VLuaC6iDWmtm1ITZdEdSAlA0XK0Ee3xscDdoi/0Jtc5E0l12AoX0IspeXOSaQRuqn+gwjkPT0W5hNGHeADNWRSuV2UYm4bmo2f2Sr3lCDf3Fx9VrirVZMwrMY+hr2WZx99yhOs3Pakmw/Dfit8KD4Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054548; 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=lcvxHQYqTk81Exw11I8k3Jy5Hv2/V72aWoUK5BU4wB4=; b=fCo9sQv7C3ezNBFR17peEALd2cFaJU365XKWUh6FJmNKV1e4fHcLBNj6DUaiazPkoNl1X348DKPnTfvplEuVoiqGv0Q+D9NBMM5o7W3LhmV9TZe/RXYqoMlG8s/pErBGG52d9r4l6TSRe5L+fYDKyPY1op57LMqUnM4ztR7YDUw= 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=epam.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 1773054548836347.9792363597452; Mon, 9 Mar 2026 04:09:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249282.1546811 (Exim 4.92) (envelope-from ) id 1vzYTd-0005Z8-ML; Mon, 09 Mar 2026 11:08:45 +0000 Received: by outflank-mailman (output) from mailman id 1249282.1546811; Mon, 09 Mar 2026 11:08: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 1vzYTd-0005Y4-EW; Mon, 09 Mar 2026 11:08:45 +0000 Received: by outflank-mailman (input) for mailman id 1249282; Mon, 09 Mar 2026 11:08:44 +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 1vzYTb-0003iR-Ui for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:44 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 54167cf5-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:40 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:30 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:30 +0000 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: 54167cf5-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ufKkM76nCFoPrt5Nn8II0vupQM7nW/336xjv7ote/dWX1jCAEb+FUlBOww6D/nRnlSP9tgza5euNjWkJy7SuCPHBC42g+hZ+rVVzaafrdSd3aXlAlR9JY2LwVSpE4jST4vo0hGZ1uCWNWQL9qqOB+hPBfcG3c4evtbG1g6TelD9k/Iy+QvRmG7cQB6eaWs0N7T5KUcuj/M0ThNe1+IIkAlg8jKN1hheOBznmnK5ONJWfUdNLW5lX4DXq9/IoVoXm0a6i0LDmSXMjlW27vmYZs2bIR+kZ/QdP86YW+0Yh35B3eaK2CQGeq3j7unaPM+mA9r480SOPc9yEv9CzUYD8Lw== 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=lcvxHQYqTk81Exw11I8k3Jy5Hv2/V72aWoUK5BU4wB4=; b=mN8JHW05k2jAsw76jSA4mNSFSLtzHXVfoOrkLgaugGJipBe18LPeGUGmhazMaCP0zC9sHb4/ZY7JNldSCMDKXXGz0/UbQUb7EMTo2A1NzeZ+/qZ/UDl1Y4kVug23m7chgT0/Cbiehq0MuXsAn3g+ZNkyQ7kWZzFmHB6XZyEzPJlJbeT/yQmtj0obZA5WQds3dpQLsL84k94076O1N3s6obHNS0qpdu5FdSlyrKCi3Nu4/nstkovJRgWwxS+HpcdDXFtx+ubc47ZUSAFQGXDJRp1zPfHiJOGbp8YdvauvRwxjEimAI+wbzCrVVQlNI06Wi8w2kFZ8uyyp/YzIIUh8Zw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lcvxHQYqTk81Exw11I8k3Jy5Hv2/V72aWoUK5BU4wB4=; b=AclPR2nCcBzYHoAcRYSokkEwWghc+D66VDw0SrktIt1283aZ0eQT8Ii41ZfanK6NlKBrqOJIgt+i7n7s8Y/HpuI0SMRUlfIIALMFEih8kMl2lI+OLfkhaWFhcRCQimkBGYCkEoCBEnNlV2MZvOkdIxQm1o+khaLHSaz2rAfmmbXKeh+YAFBJzwUvtVW0O1NB9vrBh1Nam/HaB16jqhBDwQ3PkAH50sGp5KWtLzf5Zv40OuTcIJ8pRpWW4jLjU8zlG+3zaDpJzMpFqHGXMCjRyRazMVL2lkky2OWhEQKnVptd5JT1Ml8tqsVaX3a6FEfLOkSrOsBl9xe92EtlEohEQg== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Mykyta Poturai , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Stefano Stabellini , Stewart Hildebrand Subject: [PATCH v2 3/8] vpci: Use pervcpu ranges for BAR mapping Thread-Topic: [PATCH v2 3/8] vpci: Use pervcpu ranges for BAR mapping Thread-Index: AQHcr7UNO3bwYqCdZkmfzVSjd86SfA== Date: Mon, 9 Mar 2026 11:08:26 +0000 Message-ID: <43ce584a124f0bd07e641934e15e5ab56548e1ba.1772806036.git.mykyta_poturai@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: c0ae7012-27d0-4fa2-b807-08de7dcc3252 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: VNTL2Y5weYB5w5gs2pnkOUmxLsZO4RZe41Or3CD8FPQYOdnQrT9c1YD88R+lbtnFX43mKxY9N2OTA66yE5HJ1KsB8MeUdwFYSRRVnSKuAYm3l3UoCgr4iQLF33HHldNqV7hOvqH7eZov+YW2LA7ZklXea/DpO0PPqHSE8UXTAOFE01JRTHJmyzP6qxcclQq6ltClMc72JQ1GmrhJlwdl6Tz1yglC2lOEcpEyxCbYUy+KLnSztlz4TI5lf3aExlZSHB01eGg70GreP76bGGAEr+KAa4HoJ1ATWetF1ppiMRBqR3KbF1SPCSKIuQY3Ck9NqlvKhOPmEjJq6+3uiAtSV56VS5eoBsf/GwA3Uy6vrjTjNQBMSMSB221+thbqKBKZ3zj1RmzDryx4RcpDSEQoEqqn7a7VXAK633FwHXnj28wPwiJknMWmaYuOtHiKk08a9+KyJV1bjt8uEKWmTIRIm3cLFsRe6JrjSDaUl9LukexVYfWizc6V5RGp8w3J64yQb5ptDP+4jjMq1gTwpO0tGODZfj9yZaDq7H79hgyG5BITA8Hbpts7dNnKNz0b9eTmb9QDC9IYhvFuCJMCe6Kq0zZ2dem2sJ50c18duICIN7pSuoFPjrsmzYjHPKub6dhlmZlKCOy/MMynFWYTraeBKCM5DL1b3lPmfZa9aG8WQ8xpRozzstDdBSWFwvrdfOlV6oraSBvOsKZLBTXFn+U98TPAX92Yo5dRa9PMZT9HAqzYiYRelCNFhhGjKeNmJbFJIED6wWS/+S8SXm1+TO9u5CQDTTofWtXblNBWn4UOvrk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?q2DbLmAQC1qUooapjiJkp0rfFBwH97vOEOJyEtZPwGq1gBvbvYdDmNi9PE?= =?iso-8859-1?Q?plJ99S5TfoEuejISpnhV5QdnxKcQqXGpI4cHb3MvqP9ZKnAnbc27R83x5A?= =?iso-8859-1?Q?7FdLNRlL2NpOuxQ4gTwnGE2VgH3+WKH63AprLfO1/lVVSDAJLd/pr7LC1W?= =?iso-8859-1?Q?Jrvz7d6QKuEDJOoyUsjkJf7C0qzK3f4npZgXfo0pofEvV00Z/jzCqSoulK?= =?iso-8859-1?Q?hDTC8yUgVYn74yLgNDpOg3XHt20qlvJKFFibfAS3BW48Z3T0jOQPfIcpRO?= =?iso-8859-1?Q?+/5gQQkgI/3My+84ljsDG+toI9vIXLkhzcM/X432gUOYu7q/MjnzSSsppx?= =?iso-8859-1?Q?WsCEV/h/BQAWXisIevHQ1ImBfWnDX2RSBSovCCsPfNEfSwNy93zwuCCTnq?= =?iso-8859-1?Q?2/uLEmJVk02WoCZPZ00kgI7GCEI2wAM+ne2FhY4GkOffkM0T2mIXzh1arp?= =?iso-8859-1?Q?IjLbr//8FZGj+B5VgWAHklR/wEghmj1xJ4vC9r76tb6pYwu7fwMN6f4GZ2?= =?iso-8859-1?Q?iXO01l7Jp8sODHhGPylBy12UJLRkkQbAeCYCE747y6zxabvEpMIUccIDSq?= =?iso-8859-1?Q?OfIIcW7h69HqqOF1CVyXWT8fFdNGknMiB1cUXFiUzMDihJWxi05p0wDkLN?= =?iso-8859-1?Q?SEbgYzrf3eXQj5TbQk4S8FhnTuZBoSCNgQb1wgKuiuJ1Zew+PhE0c37BqT?= =?iso-8859-1?Q?IuoaN9oV4Rf2z87Ly7aztX2Mst+5irxniuXWbI2wNSvL8qn0Tt+KLy+J6a?= =?iso-8859-1?Q?kNxV1TW/npgxeUPbFfRp7DzBfAgEwmlGSwVmakoLfX3m2X8A9Pv5N+MxXh?= =?iso-8859-1?Q?VZ7WNcuw3dGqX7YUYsRgnmH0VIbwa7O1XqbM7FJ8UbGfnsW+CHrikXF9kY?= =?iso-8859-1?Q?RxqFURv976dRhbwLSOIpeH9HOgTfRrVl4lzoNPK8NKg2XvWazDmoqMkgM9?= =?iso-8859-1?Q?cL+E+O1ym/WqdjKx563zIkte6UA3dM+fmKmBJvr6H+zgl5TvXVSwRXr5kt?= =?iso-8859-1?Q?owjotReVRy0l9EqmbHDFlVKRAL2BJQYcKw/mdQBoWJc9DNzopbJvKTIM+g?= =?iso-8859-1?Q?atmj3IuvITbOEf+bZj5DRbdfn/HQxqOOcV16JHJT/sJcfgF+j3ef57rSf4?= =?iso-8859-1?Q?VPND6G+6+xLh4Q9ytOfquQMgtPTDhLrZzJ07fNxLlThYdigpCHpVG2Cimi?= =?iso-8859-1?Q?0PfTVo8pHIBSjNBTsFMw2bTgUPHgE43CGVP4qbFsTI0rIv+h0RKmaPWdsq?= =?iso-8859-1?Q?E72GJBzDOWr8p5AyViPrCuHFGChRCNOq3AmtPDWZ/4hiAnMEvO7/52syP1?= =?iso-8859-1?Q?/TlwoBvaSn9N+qmbnTmJBNAptIdh55s4/pTYP4Hn0Pz4Ik167kz4AGjxFe?= =?iso-8859-1?Q?LVivL4uj97Sm0XKbPulbuM4R8yS3YqsIWg2L9sxxcH13blM2ZvUhlWuK7z?= =?iso-8859-1?Q?vtZg7wbNoQXGeNscN38eGMdKNRHIexQ7vFTjKKeub6E0WqkWI3mGpZA1zJ?= =?iso-8859-1?Q?pQ/bDZdB5Ystzpnumq3C5jLH/R+kja+TSyvWddR84qnOrAd9EB4t4L2+hJ?= =?iso-8859-1?Q?0MNQ+ZBmrrE+0mzAeJJaXDv+OCqP1xAy/Vo/q+8G2w4IZuNEExUyTEJtTZ?= =?iso-8859-1?Q?ZyDrZr/ZIXRzt7c7QCvLsDBFDaebAFJqMxwJ3058FHSN78m7CxcLufSIRM?= =?iso-8859-1?Q?X+6MS35BBDJ8lySTo3hxSbuJqN3Udc0xkG6EMb2ZImVXuP9z5tGFcHaF/Z?= =?iso-8859-1?Q?DPnF3uHd0/P3toJg5TfjjOVoHBjYbI/1d//7tjqVQZV8NDR+pr72AgS2Ky?= =?iso-8859-1?Q?EyGtafCu53X38MKgDep3Pn1p8XVBRK4=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0ae7012-27d0-4fa2-b807-08de7dcc3252 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:26.5055 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eLbz4qPsJRc/HbrUPT1Xz/A5Ny+whi4Npp/OF4pyateOeuH6YOUVL/gICYaDdbjIINrbqlxJNDwLsmU3mBtL4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054549706154100 Content-Type: text/plain; charset="utf-8" There is no need to store ranges for each PCI device, as they are only used during the mapping/unmapping process and can be reused for each device. This also allows to avoid the need to allocate and destroy rangesets for each device. Signed-off-by: Mykyta Poturai --- v1->v2: * new patch --- xen/common/domain.c | 24 ++++++++++++++ xen/drivers/vpci/header.c | 66 ++++++++++++++------------------------- xen/drivers/vpci/vpci.c | 3 -- xen/include/xen/vpci.h | 4 ++- 4 files changed, 51 insertions(+), 46 deletions(-) diff --git a/xen/common/domain.c b/xen/common/domain.c index e06174fca7..76b0163616 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -454,6 +454,14 @@ static int vcpu_teardown(struct vcpu *v) */ static void vcpu_destroy(struct vcpu *v) { +#ifdef CONFIG_HAS_VPCI + int i; + + for ( i =3D 0; i < ARRAY_SIZE(v->vpci.bar_mem); i++ ) + if ( v->vpci.bar_mem[i] ) + rangeset_destroy(v->vpci.bar_mem[i]); + +#endif free_vcpu_struct(v); } =20 @@ -511,6 +519,22 @@ struct vcpu *vcpu_create(struct domain *d, unsigned in= t vcpu_id) if ( arch_vcpu_create(v) !=3D 0 ) goto fail_sched; =20 +#ifdef CONFIG_HAS_VPCI + { + int i; + + for ( i =3D 0; i < ARRAY_SIZE(v->vpci.bar_mem); i++ ) + { + char str[32]; + + snprintf(str, sizeof(str), "%pv:BAR%u", v, i); + v->vpci.bar_mem[i] =3D rangeset_new(d, str, RANGESETF_no_print= ); + if ( !v->vpci.bar_mem[i] ) + goto fail_sched; + } + } +#endif + d->vcpu[vcpu_id] =3D v; if ( vcpu_id !=3D 0 ) { diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 07ec991a12..cb64d9b9fc 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -195,6 +195,7 @@ bool vpci_process_pending(struct vcpu *v) for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) { struct vpci_bar *bar =3D &header->bars[i]; + struct rangeset *mem =3D v->vpci.bar_mem[i]; struct map_data data =3D { .d =3D v->domain, .map =3D v->vpci.cmd & PCI_COMMAND_MEMORY, @@ -202,10 +203,10 @@ bool vpci_process_pending(struct vcpu *v) }; int rc; =20 - if ( rangeset_is_empty(bar->mem) ) + if ( rangeset_is_empty(mem) ) continue; =20 - rc =3D rangeset_consume_ranges(bar->mem, map_range, &data); + rc =3D rangeset_consume_ranges(mem, map_range, &data); =20 if ( rc =3D=3D -ERESTART ) { @@ -223,8 +224,8 @@ bool vpci_process_pending(struct vcpu *v) =20 /* Clean all the rangesets */ for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) - if ( !rangeset_is_empty(header->bars[i].mem) ) - rangeset_purge(header->bars[i].mem); + if ( !rangeset_is_empty(v->vpci.bar_mem[i]) ) + rangeset_purge(v->vpci.bar_mem[i]); =20 v->vpci.pdev =3D NULL; =20 @@ -259,13 +260,14 @@ static int __init apply_map(struct domain *d, const s= truct pci_dev *pdev, for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) { struct vpci_bar *bar =3D &header->bars[i]; + struct rangeset *mem =3D current->vpci.bar_mem[i]; struct map_data data =3D { .d =3D d, .map =3D true, .bar =3D bar }; =20 - if ( rangeset_is_empty(bar->mem) ) + if ( rangeset_is_empty(mem) ) continue; =20 - while ( (rc =3D rangeset_consume_ranges(bar->mem, map_range, - &data)) =3D=3D -ERESTART ) + while ( (rc =3D rangeset_consume_ranges(mem, map_range, &data)) = =3D=3D + -ERESTART ) { /* * It's safe to drop and reacquire the lock in this context @@ -330,12 +332,13 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint= 16_t cmd, bool rom_only) for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) { struct vpci_bar *bar =3D &header->bars[i]; + struct rangeset *mem =3D current->vpci.bar_mem[i]; unsigned long start =3D PFN_DOWN(bar->addr); unsigned long end =3D PFN_DOWN(bar->addr + bar->size - 1); unsigned long start_guest =3D PFN_DOWN(bar->guest_addr); unsigned long end_guest =3D PFN_DOWN(bar->guest_addr + bar->size -= 1); =20 - if ( !bar->mem ) + if ( !mem ) continue; =20 if ( !MAPPABLE_BAR(bar) || @@ -353,7 +356,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16= _t cmd, bool rom_only) continue; } =20 - ASSERT(rangeset_is_empty(bar->mem)); + ASSERT(rangeset_is_empty(mem)); =20 /* * Make sure that the guest set address has the same page offset @@ -368,7 +371,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16= _t cmd, bool rom_only) return -EINVAL; } =20 - rc =3D rangeset_add_range(bar->mem, start_guest, end_guest); + rc =3D rangeset_add_range(mem, start_guest, end_guest); if ( rc ) { printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n", @@ -379,12 +382,12 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint= 16_t cmd, bool rom_only) /* Check for overlap with the already setup BAR ranges. */ for ( j =3D 0; j < i; j++ ) { - struct vpci_bar *prev_bar =3D &header->bars[j]; + struct rangeset *prev_mem =3D current->vpci.bar_mem[j]; =20 - if ( rangeset_is_empty(prev_bar->mem) ) + if ( rangeset_is_empty(prev_mem) ) continue; =20 - rc =3D rangeset_remove_range(prev_bar->mem, start_guest, end_g= uest); + rc =3D rangeset_remove_range(prev_mem, start_guest, end_guest); if ( rc ) { gprintk(XENLOG_WARNING, @@ -394,7 +397,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16= _t cmd, bool rom_only) } } =20 - rc =3D pci_sanitize_bar_memory(bar->mem); + rc =3D pci_sanitize_bar_memory(mem); if ( rc ) { gprintk(XENLOG_WARNING, @@ -411,14 +414,14 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint= 16_t cmd, bool rom_only) unsigned long end =3D PFN_DOWN(vmsix_table_addr(pdev->vpci, i) + vmsix_table_size(pdev->vpci, i) - 1); =20 - for ( j =3D 0; j < ARRAY_SIZE(header->bars); j++ ) + for ( j =3D 0; j < ARRAY_SIZE(current->vpci.bar_mem); j++ ) { - const struct vpci_bar *bar =3D &header->bars[j]; + struct rangeset *mem =3D current->vpci.bar_mem[j]; =20 - if ( rangeset_is_empty(bar->mem) ) + if ( rangeset_is_empty(mem) ) continue; =20 - rc =3D rangeset_remove_range(bar->mem, start, end); + rc =3D rangeset_remove_range(mem, start, end); if ( rc ) { gprintk(XENLOG_WARNING, @@ -468,8 +471,9 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16= _t cmd, bool rom_only) for ( j =3D 0; j < ARRAY_SIZE(header->bars); j++) { const struct vpci_bar *bar =3D &header->bars[j]; + struct rangeset *mem =3D current->vpci.bar_mem[j]; =20 - if ( !rangeset_overlaps_range(bar->mem, start, end) || + if ( !rangeset_overlaps_range(mem, start, end) || /* * If only the ROM enable bit is toggled check ag= ainst * other BARs in the same device for overlaps, bu= t not @@ -480,7 +484,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16= _t cmd, bool rom_only) bar->type =3D=3D VPCI_BAR_ROM) ) continue; =20 - rc =3D rangeset_remove_range(bar->mem, start, end); + rc =3D rangeset_remove_range(mem, start, end); if ( rc ) { gprintk(XENLOG_WARNING, @@ -733,18 +737,6 @@ static void cf_check rom_write( } } =20 -static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *b= ar, - unsigned int i) -{ - char str[32]; - - snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i); - - bar->mem =3D rangeset_new(pdev->domain, str, RANGESETF_no_print); - - return !bar->mem ? -ENOMEM : 0; -} - static int vpci_init_capability_list(struct pci_dev *pdev) { int rc; @@ -989,10 +981,6 @@ int vpci_init_header(struct pci_dev *pdev) else bars[i].type =3D VPCI_BAR_MEM32; =20 - rc =3D bar_add_rangeset(pdev, &bars[i], i); - if ( rc ) - goto fail; - rc =3D pci_size_mem_bar(pdev->sbdf, reg, &addr, &size, (i =3D=3D num_bars - 1) ? PCI_BAR_LAST : 0); if ( rc < 0 ) @@ -1046,12 +1034,6 @@ int vpci_init_header(struct pci_dev *pdev) 4, rom); if ( rc ) rom->type =3D VPCI_BAR_EMPTY; - else - { - rc =3D bar_add_rangeset(pdev, rom, num_bars); - if ( rc ) - goto fail; - } } else if ( !is_hwdom ) { diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index f66f50c8ba..af61b521b0 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -357,9 +357,6 @@ void vpci_deassign_device(struct pci_dev *pdev) } spin_unlock(&pdev->vpci->lock); =20 - for ( i =3D 0; i < ARRAY_SIZE(pdev->vpci->header.bars); i++ ) - rangeset_destroy(pdev->vpci->header.bars[i].mem); - xfree(pdev->vpci); pdev->vpci =3D NULL; } diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index dd233b8b03..fa654545e5 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -118,7 +118,6 @@ struct vpci { uint64_t guest_addr; uint64_t size; uint64_t resizable_sizes; - struct rangeset *mem; enum { VPCI_BAR_EMPTY, VPCI_BAR_IO, @@ -212,6 +211,9 @@ struct vpci { struct vpci_vcpu { /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */ const struct pci_dev *pdev; +#ifdef __XEN__ + struct rangeset *bar_mem[PCI_HEADER_NORMAL_NR_BARS + 1]; +#endif uint16_t cmd; bool rom_only : 1; }; --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054538; cv=pass; d=zohomail.com; s=zohoarc; b=Uf4hj6A7CQfav9J+rcKR7yE+cH+ynsqDjTCVDmFyADjH9g9Tm6p3ks/79TjD0wL/a7ppOb7cSbOTkjVvRf0UinHDFSsr68EcGjyigA0RanXEb4pylxX/Nwx56VgoMRS7P/hVGRUfBmxW2uuLxXiGAtaqfd/OOKHxa8kx58fS7go= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054538; h=Content-ID: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=as8HXwLx1Zl9o2iQtPqGLoGRGBXmJbz5GSTKA8wbpEg=; b=PVrRT/7FU7utkKolyzyFAhY0oukw01FVGF6Ho+GojO7xglhb5na+44FJs0ZFdTOPSHxMATN1ThvY9zov2NGAaYAuJOiiej8iUDrfZq8sKRPnzCgEmgoZt9olbX2XZNK5LT5sCbobSKqcTPDVi4d5CVXbOLuzxBn+7+SNY+L7XhU= 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=epam.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 1773054538328603.4293943310784; Mon, 9 Mar 2026 04:08:58 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249279.1546784 (Exim 4.92) (envelope-from ) id 1vzYTa-0004p9-EG; Mon, 09 Mar 2026 11:08:42 +0000 Received: by outflank-mailman (output) from mailman id 1249279.1546784; Mon, 09 Mar 2026 11:08: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 1vzYTa-0004nX-84; Mon, 09 Mar 2026 11:08:42 +0000 Received: by outflank-mailman (input) for mailman id 1249279; Mon, 09 Mar 2026 11:08: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 1vzYTY-0003iR-Ty for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:41 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 533635de-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:39 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:30 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:30 +0000 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: 533635de-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JNvNmbgqDJK2L+vIoJyA85Uf7OEmPgIqHSQjq71ibsxBxaJV/uNZzMWDWczahzoMxf9+/T54BiUq4qYALg1OgRHUlT5tR90ligM7ibKaWvxouoX5ij49BkTi9ALDbmVTOCvbEcwBSmxU1UojQ+o0Nl6ukA0/NQ4qFI193HWJqeFSzKzhR3bBa5g3DLh8x5Sd0NN+NmRZsm6m+qF4wKuoI93E8clFIsJTqffgZodd8cCi7QSauJ1fqqsU/JKE84HeKtDwhCN0QWPhyN5uoqQ+9SKL+FrkNMboqZSPI7AJ698qX2CXTC05ZHhiTy4Rv6ogswmhPPmP8vwh4RYD32geyQ== 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=as8HXwLx1Zl9o2iQtPqGLoGRGBXmJbz5GSTKA8wbpEg=; b=txDinyKu++Xk3mujU58GFWCEgby8z98yN6d8TAyvbNE1DluG9ZTNoCltTH2DWv+PHcQ62LestJKNB3qdLvlMdqCptsomW54Vco0clgt3JnPZDXxU0GrgaIHSLL4NhEnm9Bzergq1d9FnAcdATILM0kEtMSXqvGVNyg4jJN3bZcXTA4IU1mf/msVWm4qoacZm5Y4b+mITmJdK+V587V7OVvkAyZUDepSQVTO/1VCzsrPrMKvUncMdtjRwuEfX3uZTKUad8LzONANuANdxd2NbATIpNbRJUzXTVCQfbj/qI6pbt6nRj38uGhbYiQeLdP6nHVF3p43zUs3AefCHwicTDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=as8HXwLx1Zl9o2iQtPqGLoGRGBXmJbz5GSTKA8wbpEg=; b=YM3ClKHI1XPlEwOAyXw2zRDGkOJ5KRE+ltfnNHslT062QWDp80yk4fMtSlAsRda2PQhWrGil+5WERPFJpMLyvWEkGRnSPmsS6SXitl9mFnXovLTfyXLl5ySoynbqniR/lKqiag6MEBoVf4hULpBp79oEekvveEG4yzEuNfaADUiYf0H8K+KNKZgMiZRlnty+Z1lCZK21CKaqNjzMOIvM99CS/pe02V9AKn6LD+fnx1Jr+a261VGN03Rm3vUtwfgN8Batt4oScq31YtVHa8EdDRjPsW8pJYqTMm5yTCmuQjwbeS6gnmPZuvQ59jqpej+UPFwRQcs3WHpsZlx8qmFodQ== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Mykyta Poturai , =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= , Stewart Hildebrand Subject: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu pending actions Thread-Topic: [PATCH v2 4/8] vpci: add a wait operation to the vpci vcpu pending actions Thread-Index: AQHcr7UNjpbdOXJQP0qdir/zrd85oQ== Date: Mon, 9 Mar 2026 11:08:26 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: 9ba41daa-adda-4cbc-6641-08de7dcc3287 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: FgBkkkf5bQYCe5NIp3tiTwRBx5GxGX5OdGalTuAAIPC53cH+NHwLxFtKgRA79kB7vkr2ELmJqixBxsg/yGFosUEd/O0YwjsVUFw9H3pEAE6BeS9HwTe9l2OoUYmgpKgJMLo6AutEH36CO59lcBZJ/KOKNgSZ3vviafFTb1Pg3pDco9I0r4m7QCi1zQ22qbebJj342FvHie2uUFSQ48YMBEo+ROmNGbBsk3TzcCYdkZTu42QFA43pVIoYu+gEQzWAgLFNfZJayXbILBQ5tnH5bkeEiVPL9ZJYzDrE5yg1xDApeCkPBQbQVS7vzKeDcVMnaa3qL60c1wHLVxybZ415z/Ey4Sb/VUO+vAyUltW/Zh3Iq49+GRc5SMU38r3qZGKsb2lDKmcrCjzDybLuBZYKcd0WfDiEKIYGrvG1LGRoM4o/wv8AJi45EECRjp31MAUeL+dqRRStLhIxhhig/aAmLN6zCyc/Dq2CfmrwD59IDr6R2FlJVvve8E1jTUNjPhZ15CbHCi0l2EF+Z73XkRQlnIdnCNxvqmAFkEVqjKm638PITQaLmwpNvJGRpdmPGErWRnVVKdOyB7dqU3L80kJwfAcVj9/ZYAf//Sjj4ipRl/s8WD4eMt4XsM8/Ci7HWHeY1IK14enPg3Xgf49EOojbB8d4Pc+IwDGx3XVkG9FhmJ/iMNtdv7jWQVMcolT/XFoQSf3JGY0aoIph28l6KSy/gVbzZ4/mC2sx6mZfvQtB8nbN6m1VEtDjmyv8RT4tdtfK4LBnyKCKUeGSVUWT7mcbv7phPWvbaDWIFefp88Oz0q0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eUxoTEtMcFJnanFUeFpxTjdsb2VoWDhMTktoRXFUZ2w2aFlMdnJvM1VoMEVv?= =?utf-8?B?U05MZVZHaVB1ellZWnA4L25aVGplVlpUWGdHQ3ZBbGdGRlQwYU82VlBVWHMr?= =?utf-8?B?NnV5Z0xzNWpwU0ZPTlRjYkhURWJqdlJjSDVIRUp0SlJ5MmFUS29FRUNjeVhq?= =?utf-8?B?SnhicWVtS2hrdHZEejVLY1NMdW40d3ZBS1ZzWVRqeEJyTk9DNkdNa1dWNno5?= =?utf-8?B?TFMyZXg0OVNpYnBvb1NuMGNORVNLZ2QxS3FuWEg5S2NUdlUyS3Ard3JVeEQy?= =?utf-8?B?MnBKSnVqTE9VQW9ubHR3WUlsVmRvQmRiOUVUWmRmZEtXZ3BmdkE4RjR2anpz?= =?utf-8?B?TTgzM3U5NGszazVrSU9XbXVXWnU4YlYyYkt6dlpHRWR5Zll0YkxhMFBPSVZR?= =?utf-8?B?QUlFRU1TU2M3K2I3VEJhSkVhcUpaMlJLczljVStYb0NYa2lsdGtvd013aVJj?= =?utf-8?B?K1VZdWlTRVVjRTROVU8rbmEyNkdKdXh4d2syTjYvcDdqWGRwR2pPalNncGJO?= =?utf-8?B?bmNZQ0dkVDVpZVhUZllOSUtpN09oY1VFejhvbmc3OThYUTVFTVhtcFBGMVdD?= =?utf-8?B?UnRSNGx2Tmw4eUN6RUxmVE5mL3ptTWRocmZYb2VoMEtOVGpzRWNmV3ppYkFY?= =?utf-8?B?Zi9RcFZoYmdGdEVRZk9JMTVFRERSbUZMOG5lczB0b3lPaEZDcFRvdkhHS2VZ?= =?utf-8?B?K0NNcmZtaEViK0xmTDhmOG1QdFdNcWhHOEF1UzBQbDFpRUZxMXMrMU53SEti?= =?utf-8?B?ejBOVkZGU2ovSHBleDFyVXdyeTdZU0FCWldGbC9FREdZNmtjd0hVbDdsbTNi?= =?utf-8?B?RmlyOGlMWHZuMXFmeXpZeHg3MkZCN1U0b25xbnM5N2pPMjg1MDN4L2NlSzAy?= =?utf-8?B?TkYxUEo3TXRHc3VjNEJCa242K2FuZkV5QnlKVk1TRkpXcHc4bUUrLzhRZ1p6?= =?utf-8?B?aENJWEZZVDJ3bEFjeW0wN1d0dXJMRnBaL1NkMC8zb0M2L1RaWlRSa2pyMmMr?= =?utf-8?B?dmh4MTFPcEd4ZGRzR3o2cSs3WXQxQ25YRUhMYjJqWXBqQm5jYmJlMWJGMFRs?= =?utf-8?B?VEJpT0s0eFNZbldGSU9nSU1YVkJyS3RFMnlKYWh4WkVuazRldnhpNmJIaHJi?= =?utf-8?B?TjBudUlleWdBOUh1NlpabXZaU0J6bEZRYnVPelNHREhjaEQzdElNcTNIV3hl?= =?utf-8?B?L0NWbHJJc3gvZlNVR0tOeWpOZjVUYnE2elNNdzdXQlZvQTdqb1VxWnp3T2hP?= =?utf-8?B?aG1GWVczaS9QQW13ek5NTWE0d3dIdFkvVmhUUkJweXpTS0l2V0haVGFUeHMy?= =?utf-8?B?ZEMzaHFhRUhDRzNDS1BnMmJyYUJJK0puQUFYWTJYT2NLdWtnTDVRa2E0Nk5p?= =?utf-8?B?bnRmY0FDMUh1M0E4ek9FNytFbkJLMXFDZlZLUE0xTE5hb1MvTUlQdVpRNW85?= =?utf-8?B?RDFKcm5NZzFFVUZYMlFWeE9BamxHa00wTEorbzRjSEZ0a25ISnlSYzFjT3h6?= =?utf-8?B?OTl4b3NRYXhKSVdEK2NMZzhaQ0tGdXNMYjZKVkFPWGtiQ0luSlZPdUVFb2lI?= =?utf-8?B?V1hUcW9qdXdHQk5QR3F4RTkveDVQbStGYzFUK2VWTy9UMmtqMmIrek5acW9M?= =?utf-8?B?RnFwQWlTNk1KY05WcHlpRmJMNlJmTkpxSE1DWUxhT0VhbHhxRFFFeGIvMGor?= =?utf-8?B?ditYMjNMeVdDRFFDT3U1ekhhZDVZUzNFN1gxbkRrU2UrMTUvVldnZjN1eUZP?= =?utf-8?B?TFp2T0RFSmIvZW81MlRhNTU4ZkdRQ1htSFpoVjlBMkcwdXpPR0h4UWs3OVMx?= =?utf-8?B?WE9rQnErSC80MmY3T2RrZ0JHM0NrT1BHajVZZzZ5UklRWHhGU1poTzBHRWtL?= =?utf-8?B?cjU4NlgvdHo0MlYrZExRdEpuMnBleU10WVIwODhhNnF2SUk3WElXSGJEWjhs?= =?utf-8?B?V0RVU1dSTThUamtkcmxzVVVWUGhLeUlUdkYwYXNTb0NUeHVsanA3NkgzVFcr?= =?utf-8?B?OEZPV2NralpHL3JmdTh6aHlJQkx1S3JSbjc0WjRvL2ZhRTdGT3JPU2hTVnBI?= =?utf-8?B?SHpJekNPcVFzRFNVb3crclJzMFV1ZTc2T3cxWTA2TGhueUZXckRWQTlJZDlV?= =?utf-8?B?N21saUJROG5kTGlHNVRlNGFhR3ZmL2czYmhNRW5mdXdya0JwQ2Q3d1ZVQ2Ja?= =?utf-8?B?M0V1TzlFOTQxZU4wbE16ak4rUkg5YWp5eVVkN1hDMHN4SXJKRkhHTkdmUGQy?= =?utf-8?B?ZkpINWtRL1VQdE05VzFrb29tWjBNOS9LUUdiK2xuYnIyQXFKSkhMaW41dGpG?= =?utf-8?B?ZnNyOTlzYjNrcklkUzNoK29GejdNdnVJZ1BGRWdDMUM1bXYydmlTczVYLzJH?= =?utf-8?Q?YE9MyvWmuNlzAoG4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <32432DDDF70C5D40839E4418016DD16E@eurprd03.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ba41daa-adda-4cbc-6641-08de7dcc3287 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:26.9721 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dURlGtTLDghS1KYqIh8m0pMYhb9AQHdXq/yp2sOUZDoK+L1+rfAUoIe6S36WqqtLzt3CZjd6Xt1BmJnhhxSUrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054539536158501 This allows waiting a specified number of cycles on the vcpu. Once the wait has finished a callback is executed. Note that this is still not used, but introduced here in order to simplify the complexity of the patches that actually make use of it. Signed-off-by: Roger Pau Monn=C3=A9 Signed-off-by: Mykyta Poturai --- v1->v2: * new patch --- xen/drivers/vpci/header.c | 125 ++++++++++++++++++++++---------------- xen/include/xen/vpci.h | 19 ++++++ 2 files changed, 90 insertions(+), 54 deletions(-) diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index cb64d9b9fc..284964f0d4 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -175,76 +175,92 @@ static void modify_decoding(const struct pci_dev *pde= v, uint16_t cmd, =20 bool vpci_process_pending(struct vcpu *v) { - const struct pci_dev *pdev =3D v->vpci.pdev; - struct vpci_header *header =3D NULL; - unsigned int i; - - if ( !pdev ) - return false; - - read_lock(&v->domain->pci_lock); - - if ( !pdev->vpci || (v->domain !=3D pdev->domain) ) + switch ( v->vpci.task ) { - v->vpci.pdev =3D NULL; - read_unlock(&v->domain->pci_lock); - return false; - } - - header =3D &pdev->vpci->header; - for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) + case MODIFY_MEMORY: { - struct vpci_bar *bar =3D &header->bars[i]; - struct rangeset *mem =3D v->vpci.bar_mem[i]; - struct map_data data =3D { - .d =3D v->domain, - .map =3D v->vpci.cmd & PCI_COMMAND_MEMORY, - .bar =3D bar, - }; - int rc; + const struct pci_dev *pdev =3D v->vpci.memory.pdev; + struct vpci_header *header =3D NULL; + unsigned int i; =20 - if ( rangeset_is_empty(mem) ) - continue; + if ( !pdev ) + break; =20 - rc =3D rangeset_consume_ranges(mem, map_range, &data); + read_lock(&v->domain->pci_lock); =20 - if ( rc =3D=3D -ERESTART ) + if ( !pdev->vpci || (v->domain !=3D pdev->domain) ) { + v->vpci.memory.pdev =3D NULL; read_unlock(&v->domain->pci_lock); - return true; + break; } =20 - if ( rc ) + header =3D &pdev->vpci->header; + for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) { - spin_lock(&pdev->vpci->lock); - /* Disable memory decoding unconditionally on failure. */ - modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY, - false); - spin_unlock(&pdev->vpci->lock); + struct vpci_bar *bar =3D &header->bars[i]; + struct rangeset *mem =3D v->vpci.bar_mem[i]; + struct map_data data =3D { + .d =3D v->domain, + .map =3D v->vpci.memory.cmd & PCI_COMMAND_MEMORY, + .bar =3D bar, + }; + int rc; + + if ( rangeset_is_empty(mem) ) + continue; =20 - /* Clean all the rangesets */ - for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) - if ( !rangeset_is_empty(v->vpci.bar_mem[i]) ) - rangeset_purge(v->vpci.bar_mem[i]); + rc =3D rangeset_consume_ranges(mem, map_range, &data); =20 - v->vpci.pdev =3D NULL; + if ( rc =3D=3D -ERESTART ) + { + read_unlock(&v->domain->pci_lock); + return true; + } =20 - read_unlock(&v->domain->pci_lock); + if ( rc ) + { + spin_lock(&pdev->vpci->lock); + /* Disable memory decoding unconditionally on failure. */ + modify_decoding(pdev, v->vpci.memory.cmd & ~PCI_COMMAND_ME= MORY, + false); + spin_unlock(&pdev->vpci->lock); + + /* Clean all the rangesets */ + for ( i =3D 0; i < ARRAY_SIZE(header->bars); i++ ) + if ( !rangeset_is_empty(v->vpci.bar_mem[i]) ) + rangeset_purge(v->vpci.bar_mem[i]); + + v->vpci.memory.pdev =3D NULL; + + read_unlock(&v->domain->pci_lock); =20 - if ( !is_hardware_domain(v->domain) ) - domain_crash(v->domain); + if ( !is_hardware_domain(v->domain) ) + domain_crash(v->domain); =20 - return false; + break; + } } - } - v->vpci.pdev =3D NULL; + v->vpci.memory.pdev =3D NULL; =20 - spin_lock(&pdev->vpci->lock); - modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only); - spin_unlock(&pdev->vpci->lock); + spin_lock(&pdev->vpci->lock); + modify_decoding(pdev, v->vpci.memory.cmd, v->vpci.memory.rom_only); + spin_unlock(&pdev->vpci->lock); =20 - read_unlock(&v->domain->pci_lock); + read_unlock(&v->domain->pci_lock); + + break; + } + case WAIT: + if ( NOW() < v->vpci.wait.end ) + return true; + v->vpci.wait.callback(v->vpci.wait.data); + break; + case NONE: + return false; + } =20 + v->vpci.task =3D NONE; return false; } =20 @@ -295,9 +311,10 @@ static void defer_map(const struct pci_dev *pdev, uint= 16_t cmd, bool rom_only) * is mapped. This can lead to parallel mapping operations being * started for the same device if the domain is not well-behaved. */ - curr->vpci.pdev =3D pdev; - curr->vpci.cmd =3D cmd; - curr->vpci.rom_only =3D rom_only; + curr->vpci.memory.pdev =3D pdev; + curr->vpci.memory.cmd =3D cmd; + curr->vpci.memory.rom_only =3D rom_only; + curr->vpci.task =3D MODIFY_MEMORY; /* * Raise a scheduler softirq in order to prevent the guest from resumi= ng * execution with pending mapping operations, to trigger the invocation diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index fa654545e5..47cdb54d42 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -212,7 +212,26 @@ struct vpci_vcpu { /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */ const struct pci_dev *pdev; #ifdef __XEN__ + enum { + NONE, + MODIFY_MEMORY, + WAIT, + } task; struct rangeset *bar_mem[PCI_HEADER_NORMAL_NR_BARS + 1]; + union { + struct { + /* Store state while {un}mapping of PCI BARs. */ + const struct pci_dev *pdev; + uint16_t cmd; + bool rom_only : 1; + } memory; + struct { + /* Store wait state. */ + s_time_t end; + void (*callback)(void *); + void *data; + } wait; + }; #endif uint16_t cmd; bool rom_only : 1; --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054549; cv=pass; d=zohomail.com; s=zohoarc; b=SXfKUWUVFr3frKVR/ZV+LPhWY7dxJWE/h8MwMRbxPoHuxZg8Gi5FQBJY3ZtQhms9c8OIBbwhG4O346BkLJ6LCSGD8QI/LIt2pbMykgedJ3ZMLJMqH1olD0u0qwPLGrCF1BdOU2gZuWZAkVFtssvL4mrck9Fs6abMRaHuxK8QLQU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054549; 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=YOUp/hM8Mfho1OBtuL27ZRMzjlpOJY9US27a6WY94g4=; b=G9ZspcSFAikRWIozubpvyzg91VsqTc2rci50WTD2SjHX39SX8DoxO6/KjpLZg7o4yEglQK6LtjI6XpX+IeB4Z//ns1mdXIWoZ0bFiM6O0qZU22KNIevYpzRAO1EAxmvH3IG6FBYJsny9m0AcFcXB7hhJyGufzAJ+WTfsjoutUR0= 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=epam.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 1773054549194717.8811272244265; Mon, 9 Mar 2026 04:09:09 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249280.1546796 (Exim 4.92) (envelope-from ) id 1vzYTb-0005BN-N0; Mon, 09 Mar 2026 11:08:43 +0000 Received: by outflank-mailman (output) from mailman id 1249280.1546796; Mon, 09 Mar 2026 11:08:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzYTb-0005Aq-IG; Mon, 09 Mar 2026 11:08:43 +0000 Received: by outflank-mailman (input) for mailman id 1249280; Mon, 09 Mar 2026 11:08:42 +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 1vzYTZ-0003iR-UA for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:41 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 53a1cd69-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:39 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:31 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:31 +0000 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: 53a1cd69-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=umqdO+OX5PucfeKcvu4wVdnZsYjWf+IqS49sNdKVg+VPg7B90AQayl2p+Hh3hB+Pvxf/ifgBaRrUEeK4R3vcn/WHuByk69QzfUA4phNjmpGDscaC53D8afyoElkTW22zPMnruz29Q4Oe8mc2mAqWVIHGAqeI4vTDBFjojoKtMz08ZuVThlq7oYokrLWvWWqG26k0FSjDjpRnwZSPEmZfsIvEIaaOnTRdC2xPOVB3OncBTRoQ1MYhj0FRhNwdHKH8wQw9f5pesRN+Y/EMk5ZGUiL4e/cWOMPddtdhcHFa5NA8TjKQcRA4UXH2lMzqM01OTx4Kj2w++i97S5pW0siGrA== 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=YOUp/hM8Mfho1OBtuL27ZRMzjlpOJY9US27a6WY94g4=; b=eOF7p8Mp5YP0DvPVx71TGejxYorK5R30noHdTP8m+QukpePE/vJqHekPltSuZ9dSbaLMFq0EknZidAk5pS8vlryI/ZZsaGsnZSL9ddD7RBOAGGBqAXYpiqBW/FoaIhpR3OJv9MmP6M1QuQawXjz/wJQjy7RAlN/UwHb/eNxZQdSdshLM6UR+oeOWwromGi72KJGozZVWuslHBAEg1EPK3YiIAiE3WEFW3HVyVxuIoCgctKauqLRuTWHRd8H7YviL+g3NzXxxgziFrXaEEPEf2YtidNGLeYCABewmJxDgQTQI+TGCXM+x7GB0jeP9R+grd5h+T82BUMp5MnHcxPZdVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YOUp/hM8Mfho1OBtuL27ZRMzjlpOJY9US27a6WY94g4=; b=UnWdGs2MYb/G8XrKT98/qp1aCJF2wG/fuPc75Rd6vLIy9IsyzBmI2cKQG8STI7VEcYnMKH0jZ6DAMtdWS/lsi4ktg4rrSfKkcxk8TQ3Gixheqqd85cxpYnKb1kBh8t4PnroxWgSgIzGHNfGHtdwMsRxXG8O/7iOZfRdKm8nwWqH1jNlAtI0oc+rfnpcmZI1DVO4NEbTAljTRSnqjPlZsYnK76sAAatnWeDvaVvXhwG0ykI4avvkgnY0PEQkv1w3rQMviTmvbTvqpYGTpAfmRrlEsT2DRiiCx6bLN1KY+B1gH6KOHGIrKvvt9QYsmxSg0jFD9oe2GD41t/42LnfXGcA== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Mykyta Poturai , Jan Beulich , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= Subject: [PATCH v2 5/8] pci/iommu: Check that IOMMU supports removing devices Thread-Topic: [PATCH v2 5/8] pci/iommu: Check that IOMMU supports removing devices Thread-Index: AQHcr7UOnGwu40XXHUWWV8IGnIja1A== Date: Mon, 9 Mar 2026 11:08:27 +0000 Message-ID: <0ba0f0a8a7db5c762fa59e2eec627199c023f8b9.1772806036.git.mykyta_poturai@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: c684ad2a-66bb-428c-6f87-08de7dcc32c1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: AXXT3QIz7oRpjcsqQ0pFqIoWteZ+eX+KlnT4L3c9V9fNfJDJTfPg0OzSIlE474qZDJmN8pD2SQFYUS5pm4hWJze3YtSmOD1+URh4sffyoRu8Qd7qPSxBnCTbsir6S6rZhrW7Fy6F3/Fh2kzWi93DM11xR+M3myXHq0gGP0UMPjT/vT+WCiPzCrYf8GfuSTGFvzUx7poM9xe+s27mTDwzYYJl2hcQCqXvJfCIwCiCSVSebq00ryyhlDsw1Bnv3wtwV5KOmG8F6WdxIAvQlqBM3lVF6jjsmsgY6xs/2RBK1/0NdsGisdycRaUxuKKgdB9QKcRkJxnHcaIhE7jap6oEm4gQikg9NCZPsIqQTAQnlD9ZREbRMpTqQ4nr3KqJyyh6f9Z0gZoyFTluM400LFzzmQGyeccFKny3MJdeVcuVOld+qHzh1fa18axj3XpvsBBeraAsDMqXVe6UT9nEHD3ZnrlOnBX1rQtSq6qdIRDoU4ov46GQIqrPznHuOVtBLqDrfpoAFzXTX9dimpwgZ8gPxTf0whyWl+vCLdM7vDOY4Yf+gHtEQddob6s98VJsnEB1Kt6X5lzDatbqxF3oVQh9E6pkG3pZ94tnRlQCUxwl71+Qr5+tU7kb01DgFvnO2UW1jup4lpGIqJXhJMy0642sEyWG25Mo6uJXHuzuBAStdxljgyb+u1mcRC9mro7vnIPG3ceCLRX0Aepw4KMK/OkWeMvomCI09sbY4+FswT4cwTYZtIoxP+L4lIxuIo0gBTRtLkt91yxo9/3W4p/f6FU7Joi22+l7sQcvqT9wYDMpz4U= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Dr6A+9qrm8mFQwM5XB1Bx6nlB82GevkgQrkrChnnCWS7+0eoTKsO8VU/m0?= =?iso-8859-1?Q?FkdOlQ6kak+0NtS8++f18eVE3n4J4ow++SizF68QMn/9Yol2EL1YB2PPlF?= =?iso-8859-1?Q?TKyJpxttvTgophvM1zfwH/p66UoHLvsAV74mVP0WZ7Mw0Os2aztrNhZwqr?= =?iso-8859-1?Q?4YbmpWin3tbufTKrCN44IMcvpftth4/dxsC3J7EtmJVknVPt6pRzO1RFsr?= =?iso-8859-1?Q?BScS33HKxBOc1GK7zBuTP4iroIoLpREuM4mlSbRvbn8NV9w8tYK5tIaEw1?= =?iso-8859-1?Q?Sq4ko0XAfcVN9k4oYxHgHJ5Wv0ZXgZhivB3k0O66J33PZ6vHl+sFjDKvNp?= =?iso-8859-1?Q?eOiENj8jBbsUqOAhrGL/Uf5I94y5H7r+FoYNMb/vYLx1dXA2GXeVhj08H+?= =?iso-8859-1?Q?VqXR6F1Lz6hBmE48JVl1q3TOg6R2cMnFywcPhJhe1s/LdZmSdtn5vpdqXR?= =?iso-8859-1?Q?ni0odqy/OQAKTXhDLDtStUFBHtnE2BTa7Of877rgFPV1WFOp6JgXobDYUZ?= =?iso-8859-1?Q?J3mA006yd6re13VXcLdYTRhaQqtMMt27ryrPh+1WWy/Vpf06+yYYCUoP8W?= =?iso-8859-1?Q?ok5s5KePTnDU/gEbLGscLpUuD/5vH7H1udJVtmP8OULORV5IWhPnDkx0H7?= =?iso-8859-1?Q?xMrguCz5VrFtgmK2UHiF5/EK6vzBba1R0SsXgT4JLGRTcKtLzwUA1cg8mC?= =?iso-8859-1?Q?585PZ8aXzMvo8Ylq/MsnHyNxpASS3wP4+Mbl4bQETyS0uZ5MEaHSu5O4df?= =?iso-8859-1?Q?0U5TWH8t65g8g395bTRGxKbFWFGxrg1vxtvUd3D7bzzyPdWmjMvWdNqmq1?= =?iso-8859-1?Q?xGCEODTCSKzC62ekYOGgoTR9oEj3vauBxIyz5SyyEZPzH1qYoInMMLA3GX?= =?iso-8859-1?Q?sdCh+DINZ045OAZcCjJojJDItqIDwG7G6h1vFWfCiIfTSQi+43jSnNO6Va?= =?iso-8859-1?Q?w04bSDBB5LP69UgL7ytEiTUfEve/Mzby9hndB61viCiuyTAq5SPXAz9UxY?= =?iso-8859-1?Q?3WaxAIIBjpqosF7KxK9b4KqXcDCdYdDQ03vhcEYDOztooA3e2o+TJ446rA?= =?iso-8859-1?Q?fiGWh/yg5xfFlxo2yDozP6m7/c0FGbPXmh3YXpwk6f+KEkqFv9uVYHJi+S?= =?iso-8859-1?Q?8FFnHbrrK4bSRM/FnhojxY4CXr/tck/Q+PXplrLbVXAt/kTozwJArnNEi+?= =?iso-8859-1?Q?bbNFrI70a+pFXOvDXX8K4RBgrnSkFmbxTo/Jj1YnD1Smy3ODGK8/gOWLBe?= =?iso-8859-1?Q?AocqidWjgX2zL411v/Hl5lc3D1+YPZoe14m7WCzbzFWEOeH7DHHaENn3of?= =?iso-8859-1?Q?1js+Nph0+rvzkXZTHapoo9f1xlfoW8fpo/G157F5S2KLi24sh8rnYIHoY9?= =?iso-8859-1?Q?MTDTl5kaZdHrgpYtCuLQSMm3rfKFymLqUDMtSNWS4pg4XpWCagoze2X52Q?= =?iso-8859-1?Q?cKk8g86WgOrEpk0Rn57ntTCM4U6szcMiGQP3U6x4fda+wmDVwbHkBu946I?= =?iso-8859-1?Q?zLHkKm7MAJQxYfHFFP4TE7uW7hEA9tZsXCk9s0i0/Zyy9/A/tsQbPWnQV7?= =?iso-8859-1?Q?BfYQB0xZBDHjwX7B8xBZSSraxSEJilkvig0zuEfccYLqBNqd9z9x6z3dEz?= =?iso-8859-1?Q?aoVHERTU0lKzBAP+0ZOmlEouhYURkINfUOvFUaHB7C6TyItoZ7cA7fq6jT?= =?iso-8859-1?Q?3IPPNzW+aKLhHZgYkranl64LfH5VecrQb2qldbsN3nh8wH8fToqpPQYtTm?= =?iso-8859-1?Q?oYWO863cxr7rQNnzySlkbC7p50kRy4StN8KVTpXGgqSSdwTbUGSDdaKoiq?= =?iso-8859-1?Q?HZIpJjBQwL77H1vOJ8o5Dg0TV9lXrFQ=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c684ad2a-66bb-428c-6f87-08de7dcc32c1 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:27.4268 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: JnvUHuIWekIYrnFJeUMcgMYD6aJ4ohgGw9zI3gNqMsz0vwo9XvhikNeGn28edFsBLOhfV8cGoLb81UPrD2FGMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054551480154100 Content-Type: text/plain; charset="utf-8" before trying to remove them. Some IOMMU platforms, such as SMMU-V3 and IPMMU-VMSA don't support removing devices. Trying to call remove_device will result in a crash. So check that platform_ops have remove_device set before calling it. Signed-off-by: Mykyta Poturai --- v1->v2: * new patch --- xen/drivers/passthrough/pci.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 464bb0fee4..704eb6e19f 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1545,6 +1545,12 @@ static int iommu_remove_device(struct pci_dev *pdev) if ( !is_iommu_enabled(pdev->domain) ) return 0; =20 + if ( !hd->platform_ops->remove_device ) + { + printk(XENLOG_ERR "IOMMU: remove_device not supported by platform\= n"); + return -EOPNOTSUPP; + } + for ( devfn =3D pdev->devfn ; pdev->phantom_stride; ) { int rc; --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054544; cv=pass; d=zohomail.com; s=zohoarc; b=TZ5WHSHhoqRnl/o0N4qolyytqtWq+nkcf599TqAJKLOCEPevi2G6pvm/dfsgP2PDSRg5rVxKGB4V6e7oOkiiEVYLtD9ykDdUQEv7apRLFBTnTNbJ2GSUMRZl9kt+iwHc9O/VsTCHEeNxFP+jqybpZe0ZWcR/mEbmowCQDeIGCz0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054544; h=Content-ID: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=jPd7eg99vjV5lo4tppv9T3tRyoUFlgTQOLxJi+eBzBY=; b=Dr/b1ZziJscYYx+zxFjtF0VQfDRsyznrHBkuzobxe8sUSpWtx+mpGmnUtS/igKwR2xDF7BD+jdZbl0TwCmJH+4M0DRVESoMMYD/uhIs8oP+zr2JKHTklKZmqAVdCFb3gEGoKuKXYgSuRBij6KH1XUd8Xq4nbrt7F+CHK9QGGY84= 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=epam.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 1773054544019863.4570955459309; Mon, 9 Mar 2026 04:09:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249278.1546779 (Exim 4.92) (envelope-from ) id 1vzYTZ-0004iM-SZ; Mon, 09 Mar 2026 11:08:41 +0000 Received: by outflank-mailman (output) from mailman id 1249278.1546779; Mon, 09 Mar 2026 11:08:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzYTZ-0004iD-NR; Mon, 09 Mar 2026 11:08:41 +0000 Received: by outflank-mailman (input) for mailman id 1249278; Mon, 09 Mar 2026 11:08:40 +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 1vzYTX-0003iR-Tl for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:40 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 52cadce9-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:38 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:33 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:33 +0000 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: 52cadce9-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=drDPO9QznwPw0acjwL60yGPkwYzkpG+GVxUg97cIyKdC8Alk1uuH9lIjqjP3fCVRdLsYzf+YHNXhkSPGfvF8xzE7qc1So/gbYXSvYkWTrmLgUAl13UNrYYjfSZSqeMqy1nz08kZCruUqUFTOlt8QZWyde+NLu6OsPtmEbTnwj1TE1Tw2ZRQQgf31DqFFOKGHSlzF4ayo8/J1cyMdMkzFoZhpmdefd0B3IC0UzTHIMpEX1iNBxdxIWUtdz13jD/S6Lqg8fItYBahvzjoNZqTtLatmFZ+iagPnsreqBkK6aQzlatYz4zn/yUzaqFd74FfWRIwba/8y8nCvZAG9eo6GWQ== 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=jPd7eg99vjV5lo4tppv9T3tRyoUFlgTQOLxJi+eBzBY=; b=EKYqFMaPdpQTh/zZ2YFaEOLR70yWeWBwNJnhgjAUgLktNpTc/94GJVYvhfqjp+Ps2z+OzciGn99Mu1qI17/uymfDKIvC6uyNWwQ9scyEZOyDsJhY++bLI1B2iJKHcB+4UJu19bVfgU9HOFNGHWPJnABi5XBSfv4K9kTy01jcDn63ilY28lDKxErLcxOk9UpA7suJCLgjnu0BsCIhuCjh2WXbZrCWQMRAFo6OZ5k4xDP5u3flf7wLtZL4WeUkhmPQ4+kazVj6wX7fjtULLQtcT2Pb84Y7zFXhp8+UwXlCpoaawhdDJpiiCjGhFtzdZC1U9Flpq9PGgm8X1Ckqk7egbA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jPd7eg99vjV5lo4tppv9T3tRyoUFlgTQOLxJi+eBzBY=; b=Tskh8JBL0HRr4v1du1eU5NDPUlYOzC6HBpi2nkCyI32VTBNkas3enBg/A2Xd83Bi5ZtEdloPJEAVWOEGu0z2O9PEVI1A4/suqvuHHUvB9FTYACkUIjkNlYrkTyiQgNs3MgibVQ6/yoyASTBEeAZsvF2O2GI69LamtSaTFya2dVbUsp/Y6Gf/JHkncMU44H6G+3BIBVI9o3RftDp/1yYansXhg30528W/8obQsbxXU9F7vtol4LBffdto9MQ6CEEhE5eNMemM9woLQm6jAxCpHqiukhTvo5sOqpa3Vw/rYsNdkubz033t1gQCNtwAfJiNv/ORplaMwy1uNFkM5Z+VZQ== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Stewart Hildebrand , =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= , "Daniel P. Smith" , Mykyta Poturai Subject: [PATCH v2 6/8] vpci: add SR-IOV support for PVH Dom0 Thread-Topic: [PATCH v2 6/8] vpci: add SR-IOV support for PVH Dom0 Thread-Index: AQHcr7UOJDdt9SAQzUinWXRod1IIzA== Date: Mon, 9 Mar 2026 11:08:27 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: a4840fa3-50ac-4db8-4211-08de7dcc33f4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: XhqXnexDxH+jMPCZSI2iTGH4fAKsHP/TaJ5qdrYQEG9NxZTUt+ZizIX7OqlIGrmmQNhPcT2Q6I+zmQmDTVYB6IjrQM+hv0eUcAqAmhlRe4IFtROYQH65TBnIQSkGT7971kgTFzZKQ+haQyDjrMifzzTlkUSOY6xP0w99q6pE4gmAyka0fSkPVSNfefH2wZ2aASsJoU6R4C6mbYWl/C3B0TuCZzIXEvlIS00W/mlwgj25cY1bUOcsuBroiouS2mTHlU/jJ0DiDi9WBh+4ObCRGJJFL8HOZkjlb5nXKnZUy5k4BnODpZNHY5QaQKfpQHlR9cgPYTDZVFNUgBkc7AG5ER2aVoX+HCG/Ylr3IwhB6DBaobgg6cVIu8qm0V5vDn2ePp4GFCiD7XXDJE/PSZTT2dLwJigXELskmeZM+M48+RUxvX1YcNZtnSIJ3h7eu0M2t6Tp9tydNpHJtinaVnf9w1K3uHzFhM6jUb3R5JsoJ6yq8kjcWk6zhBioa2l/AdUlym0zP1PJCpyLKSxuWMAC+9LmDtGpxU8YWdEjCdKfAljNpPnt6g/UtU2mpDZNAWUd4Wp7FEgLdjq0Q4pBROhDsc36OCJ8hB3KZHCYaWEjN/0An8UGXpxtE9nxN2XMmFavMLSMtB78DBv4kKmcbQdcrlq8yIzhnQZSxfVYKGfviSPSLR9tsS9GfX1s30AbQsylKDp7fcyJuzxnmE69s9SKjahM4gs2U+jhTAGRo46evMA2hH9JFMIxNtaW+yj/hUmHdg2BXTOQ/jeVeq2DdQv5wAUdwu/GX+EKzuUp/ecDyAo= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QnlBUU55aEJXU1hXVlpkdlFzamtvcGVYdFFtSk02S2RVNWRPTzgwbFlkSkZI?= =?utf-8?B?M25tMVZGZVVITEtzbGE5dnY3RDk5K3g1VmdpN0M0ZzQ2eEZLU0dKLzJ6aHhh?= =?utf-8?B?eHEzcUJUYzcrQXZQa3lQSk93bDd0VG9Xa2s2V1hDcDNxMzI0SkVMekhOVEE1?= =?utf-8?B?M2ZHWjRuR1NkcXRXSFhmeXRTZmFlTjU4cTlvM2tzMVhhMkZZQ1ZDQjNDNzRN?= =?utf-8?B?TXdmS0JiMGlDazdsaTZ4alYyQytyNnF4OEFNeXNyZXNlWllWQ1ZjTUlVUmhp?= =?utf-8?B?R1lIYU1UaWdlZHhMV29RVjhoMk8zQjF2dTdwMzVDYXY3Wkl3V3pTTHFHOXJT?= =?utf-8?B?RXRMYTJZcXo0YmxKNFVxdjBzSHBqVTVzalVEcXBhWkhBOXVxd2JHY2pwMU9o?= =?utf-8?B?Um1VV2dHR1pUOXNCUTJnc0syTU5IR25lUjVULzhDVXkyY1cxVVd4WGhsOEEw?= =?utf-8?B?NkVtYjJzOWhJTkt1Yi9CR0c0ZEdDYzVINXJaWFFodjdnVlh4RkNlNkNmNlpa?= =?utf-8?B?YnBxeUVGcGtmbngzcFNSU2tiTmE5R09qVVlWVXFYZWY1U0pnZEtrYmRBQ0xU?= =?utf-8?B?QWwrL09RVnRjTDNtNjJ2L0lxb0pTZ1hkOGk3ZXF4WHFFc3NhbWY0amp4Z0dM?= =?utf-8?B?bklFSjBWOXRLbnhwRFFCV0ZVdUNKYXl0K1FlbHJPUFNURnlVd3FqVmtNdUl6?= =?utf-8?B?U0lQQks0NmRFT1pQL3dtWFZOVVYyOE5HWkdGVVV6Qmg2K1NSS0wrazdGTnhT?= =?utf-8?B?eVdKbkorYWpqT3lUZUxPb3dkZkJlaGFIMklndWdhSWx2NFZJZU96MlVTQXN6?= =?utf-8?B?eVByVDZaUmxHd1RPM2ttV1JTdExRa2NhVDc2OUl6ZGwvQTdZdWdhMm1NaWk0?= =?utf-8?B?Qm9zbTQwa21JTWg1clZqMEZIK00wZThoNzRxNW1qNU9Zb1U1M1g0UFMrcUYy?= =?utf-8?B?aDBSZDU4aUVmS3VSUEJNcGZyK1V2TWVYTVV6SWQvL3lTTksvZksxaGExMHZ0?= =?utf-8?B?OEU5SGdNYWVXSmJyL1Z6ZzhpUS9Wb2pvUTc1SThhSW4zNmNDR09IZitwQTc4?= =?utf-8?B?N3FaSzNwNjZhWnpTVGk0cWtFWEt6bllBNzllY3grMyt3SDA2eG5SUlVrdFpv?= =?utf-8?B?ak4vQndaODdEOFZWaHplMUNGVWgwWlRLRWwyQTFabTJzWWczcFk2QjZ6S3ky?= =?utf-8?B?WHNXcys4UWRiMTd3VGdhNWxaUTNYM1p4VDZnU3Fmc2lFZEJhUmY2eWQrVGVX?= =?utf-8?B?N0Y4OThYTlZuWUdTdHhGNHNKVTl6NUNYaGZLYkdxeHNXYStBdjRyeEMrU2lT?= =?utf-8?B?T3pkV1BKcUFkV0tMWm1ZRXJJNndrVG10STZ2SzArS0E2K2UyUmNtTk5sSzNz?= =?utf-8?B?UVc3cUp4amZUQ09tOHB4V3F2Z0hhbFUxRndMM0FuT2RkSmZ0bmVnVExEY3RP?= =?utf-8?B?MG5RaVJqblFzTUtxRkE5TEl3RW9KdS84Ylp0YjdVZkt6T3A1S0pKbm1WazYz?= =?utf-8?B?WHo1MUJXRXZ5QkRVYnk0YThJL0c0emQ2VU5ZUGVQL1EvN0dKSW1mM1hLcmd1?= =?utf-8?B?SnM1UkhnOXpnSlhyOFQ2ZEs2cDJjbEI3SkV5R3BTV1JFZFBlMTZpK2JNdkFo?= =?utf-8?B?S2VHbjRJNEpNdTNVMndFQmtFT2Q0QmtPanl5d3BpZWxWRHpwc0x0OTkxT3FS?= =?utf-8?B?b2RWY2h3STVTdlpFZTM2TjhuNmZVS1grSEt4RkcwTmh6RjR1RXFPMWswcUJG?= =?utf-8?B?RU0rQWNISXBPNWJHRVd0R2x3K2MxT3BpbkIwSER4Mi90UE5XQkRGNkVSYzFO?= =?utf-8?B?d09wVCthbndiR3duLzI2U2NPRkNaWjJDNHJmY2tmL0VOVS93QzRKUWlNUHB5?= =?utf-8?B?K3JpUU5jemJvcTNTVUlkNjNScTQ5OHo5SmNUR2lZcGJDRXZnREw5cml0TEpt?= =?utf-8?B?VjBQcnBrNUZ6VkZMQW41aUdJRDhWYnFZMkxVZXJ5eHRPUnpTVXlNM0R2a2Ew?= =?utf-8?B?TlZMRGxROWZQSGJWaXZUdlJhS1NoVlBVdmRBblVUaExHZGkwektFbDdxTExu?= =?utf-8?B?S1I4MXUvc0lncmVYUXZ2WEFDUWRmRzZXdndXYUI4SUZSTlJBSlVQM05TSXQy?= =?utf-8?B?dkw0NHppREtHeXNPVTJFSDZmQ0x1RGFwRWY1K0FYbjlObGlmQTBOWEVXb2ly?= =?utf-8?B?SFcrZlJuTGRRZXpoUkNYR2Q0NUV5YWd0NncweHpBTHoyb2M2YWNPT0FVMDZJ?= =?utf-8?B?WkpscmY5WEs4K1FEd2s0ZUh5NGFUWjBSSUVLU2Z4NTZRR3pwMHArZlZFT0hI?= =?utf-8?B?NUVLbG5VSVNQbUdDeEJjM3ZjeGU4Q3h5MGE2eWFhRVQveHpBOVdJUXprVUI1?= =?utf-8?Q?MeeManXb2lAi6PCk=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <69B3D15764319041A131EA3108B1172A@eurprd03.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4840fa3-50ac-4db8-4211-08de7dcc33f4 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:27.8941 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9BASa2I4w+dmNwlYiFCzgAnqInA92UBy8aXw+UHqa35h6k0NMcuf62Ir0aP7NWyel7uBhdMAsqyHVQ7JcnFgJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054545512154100 From: Stewart Hildebrand This code is expected to only be used by privileged domains, unprivileged domains should not get access to the SR-IOV capability. Implement RW handlers for PCI_SRIOV_CTRL register to dynamically map/unmap VF BARS. Recalculate BAR sizes before mapping VFs to account for possible changes in the system page size register. Allow forcing vpci_modify_bars to not defer the actual mapping changes, which is needed to fix the sequential calls to vpci_modify_bars when enabling VFs from Dom0. Signed-off-by: Roger Pau Monn=C3=A9 Signed-off-by: Stewart Hildebrand Signed-off-by: Mykyta Poturai --- v1->v2: * switch to VF discovery by Xen * fix sequential vpci_modify_bars calls * move documentation changes to a separate commit --- xen/drivers/vpci/Makefile | 2 +- xen/drivers/vpci/header.c | 17 +- xen/drivers/vpci/sriov.c | 363 ++++++++++++++++++++++++++++++++++++++ xen/include/xen/vpci.h | 12 +- 4 files changed, 385 insertions(+), 9 deletions(-) create mode 100644 xen/drivers/vpci/sriov.c diff --git a/xen/drivers/vpci/Makefile b/xen/drivers/vpci/Makefile index a7c8a30a89..fe1e57b64d 100644 --- a/xen/drivers/vpci/Makefile +++ b/xen/drivers/vpci/Makefile @@ -1,2 +1,2 @@ -obj-y +=3D vpci.o header.o rebar.o +obj-y +=3D vpci.o header.o rebar.o sriov.o obj-$(CONFIG_HAS_PCI_MSI) +=3D msi.o msix.o diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index 284964f0d4..c55c3380d4 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -264,7 +264,7 @@ bool vpci_process_pending(struct vcpu *v) return false; } =20 -static int __init apply_map(struct domain *d, const struct pci_dev *pdev, +static int apply_map(struct domain *d, const struct pci_dev *pdev, uint16_t cmd) { struct vpci_header *header =3D &pdev->vpci->header; @@ -323,7 +323,8 @@ static void defer_map(const struct pci_dev *pdev, uint1= 6_t cmd, bool rom_only) raise_softirq(SCHEDULE_SOFTIRQ); } =20 -int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on= ly) +int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on= ly, + bool no_defer) { struct vpci_header *header =3D &pdev->vpci->header; struct pci_dev *tmp; @@ -519,7 +520,7 @@ int vpci_modify_bars(const struct pci_dev *pdev, uint16= _t cmd, bool rom_only) d =3D dom_xen; } =20 - if ( system_state < SYS_STATE_active ) + if ( system_state < SYS_STATE_active || no_defer ) { /* * Mappings might be created when building Dom0 if the memory deco= ding @@ -566,7 +567,7 @@ static void cf_check cmd_write( * memory decoding bit has not been changed, so leave everything a= s-is, * hoping the guest will realize and try again. */ - vpci_modify_bars(pdev, cmd, false); + vpci_modify_bars(pdev, cmd, false, false); else pci_conf_write16(pdev->sbdf, reg, cmd); } @@ -736,7 +737,7 @@ static void cf_check rom_write( */ else if ( vpci_modify_bars(pdev, new_enabled ? PCI_COMMAND_MEMORY : 0, - true) ) + true, false) ) /* * No memory has been added or removed from the p2m (because the a= ctual * p2m changes are deferred in defer_map) and the ROM enable bit h= as @@ -954,6 +955,9 @@ int vpci_init_header(struct pci_dev *pdev) =20 header->guest_cmd =3D cmd; =20 + if ( pdev->info.is_virtfn ) + return vf_init_header(pdev); + /* Disable memory decoding before sizing. */ if ( !is_hwdom || (cmd & PCI_COMMAND_MEMORY) ) pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd & ~PCI_COMMAND_MEMOR= Y); @@ -1062,7 +1066,8 @@ int vpci_init_header(struct pci_dev *pdev) goto fail; } =20 - return (cmd & PCI_COMMAND_MEMORY) ? vpci_modify_bars(pdev, cmd, false)= : 0; + return (cmd & PCI_COMMAND_MEMORY) + ? vpci_modify_bars(pdev, cmd, false, false) : 0; =20 fail: pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd); diff --git a/xen/drivers/vpci/sriov.c b/xen/drivers/vpci/sriov.c new file mode 100644 index 0000000000..6f691149e9 --- /dev/null +++ b/xen/drivers/vpci/sriov.c @@ -0,0 +1,363 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Handlers for accesses to the SR-IOV capability structure. + * + * Copyright (C) 2026 Citrix Systems R&D + */ + +#include +#include +#include + +static int vf_init_bars(const struct pci_dev *vf_pdev) +{ + int vf_idx; + unsigned int i; + const struct pci_dev *pf_pdev =3D vf_pdev->pf_pdev; + struct vpci_bar *bars =3D vf_pdev->vpci->header.bars; + struct vpci_bar *physfn_vf_bars =3D pf_pdev->vpci->sriov->vf_bars; + unsigned int sriov_pos =3D pci_find_ext_capability(pf_pdev, + PCI_EXT_CAP_ID_SRIOV); + uint16_t offset =3D pci_conf_read16(pf_pdev->sbdf, + sriov_pos + PCI_SRIOV_VF_OFFSET); + uint16_t stride =3D pci_conf_read16(pf_pdev->sbdf, + sriov_pos + PCI_SRIOV_VF_STRIDE); + + vf_idx =3D vf_pdev->sbdf.sbdf - (pf_pdev->sbdf.sbdf + offset); + if ( vf_idx < 0 ) + return -EINVAL; + + if ( stride ) + { + if ( vf_idx % stride ) + return -EINVAL; + vf_idx /=3D stride; + } + + /* + * Set up BARs for this VF out of PF's VF BARs taking into account + * the index of the VF. + */ + for ( i =3D 0; i < PCI_SRIOV_NUM_BARS; i++ ) + { + bars[i].addr =3D physfn_vf_bars[i].addr + vf_idx * physfn_vf_bars[= i].size; + bars[i].guest_addr =3D bars[i].addr; + bars[i].size =3D physfn_vf_bars[i].size; + bars[i].type =3D physfn_vf_bars[i].type; + bars[i].prefetchable =3D physfn_vf_bars[i].prefetchable; + } + + return 0; +} + +/* Must be called form vpci_process_pending context */ +static int map_vfs(const struct pci_dev *pf_pdev, uint16_t cmd) +{ + struct pci_dev *vf_pdev; + int rc; + + ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock)); + + list_for_each_entry(vf_pdev, &pf_pdev->vf_list, vf_list) { + rc =3D vpci_modify_bars(vf_pdev, cmd, false, true); + if ( rc ) + { + gprintk(XENLOG_ERR, "failed to %s VF %pp: %d\n", + (cmd & PCI_COMMAND_MEMORY) ? "map" : "unmap", + &vf_pdev->sbdf, rc); + return rc; + } + } + + return 0; +} + + +static int size_vf_bars(struct pci_dev *pf_pdev, unsigned int sriov_pos) +{ + /* + * NB: a non-const pci_dev of the PF is needed in order to update + * vf_rlen. + */ + struct vpci_bar *bars; + unsigned int i; + int rc =3D 0; + + ASSERT(rw_is_write_locked(&pf_pdev->domain->pci_lock)); + ASSERT(!pf_pdev->info.is_virtfn); + ASSERT(pf_pdev->vpci->sriov); + + /* Read BARs for VFs out of PF's SR-IOV extended capability. */ + bars =3D pf_pdev->vpci->sriov->vf_bars; + /* Set the BARs addresses and size. */ + for ( i =3D 0; i < PCI_SRIOV_NUM_BARS; i +=3D rc ) + { + unsigned int idx =3D sriov_pos + PCI_SRIOV_BAR + i * 4; + uint32_t bar; + uint64_t addr, size; + + bar =3D pci_conf_read32(pf_pdev->sbdf, idx); + + rc =3D pci_size_mem_bar(pf_pdev->sbdf, idx, &addr, &size, + PCI_BAR_VF | + ((i =3D=3D PCI_SRIOV_NUM_BARS - 1) ? PCI_BAR= _LAST + : 0)); + + /* + * Update vf_rlen on the PF. According to the spec the size of + * the BARs can change if the system page size register is + * modified, so always update rlen when enabling VFs. + */ + pf_pdev->physfn.vf_rlen[i] =3D size; + + if ( !size ) + { + bars[i].type =3D VPCI_BAR_EMPTY; + continue; + } + + bars[i].addr =3D addr; + bars[i].guest_addr =3D addr; + bars[i].size =3D size; + bars[i].prefetchable =3D bar & PCI_BASE_ADDRESS_MEM_PREFETCH; + + switch ( rc ) + { + case 1: + bars[i].type =3D VPCI_BAR_MEM32; + break; + + case 2: + bars[i].type =3D VPCI_BAR_MEM64_LO; + bars[i + 1].type =3D VPCI_BAR_MEM64_HI; + break; + + default: + ASSERT_UNREACHABLE(); + } + } + + rc =3D rc > 0 ? 0 : rc; + + return rc; +} + +struct callback_data { + const struct pci_dev *pdev; + unsigned int pos; + uint32_t value; + bool enable : 1; + bool disable : 1; + bool map : 1; + bool unmap : 1; +}; + +static void cf_check control_write_cb(void *data) +{ + struct callback_data *cb =3D data; + const struct pci_dev *pdev =3D cb->pdev; + uint16_t offset =3D pci_conf_read16(pdev->sbdf, cb->pos + PCI_SRIOV_VF= _OFFSET); + uint16_t stride =3D pci_conf_read16(pdev->sbdf, cb->pos + PCI_SRIOV_VF= _STRIDE); + struct vpci_sriov *sriov =3D pdev->vpci->sriov; + int rc =3D 0; + unsigned int i; + + if ( cb->unmap ) + { + write_lock(&pdev->domain->pci_lock); + map_vfs(pdev, 0); + write_unlock(&pdev->domain->pci_lock); + } + + if ( cb->enable || cb->disable ) + { + for ( i =3D 0; i < sriov->num_vfs; i++ ) + { + const pci_sbdf_t vf_sbdf =3D { + .sbdf =3D pdev->sbdf.sbdf + offset + stride * i, + }; + + if ( cb->enable ) + { + const struct pci_dev_info info =3D { + .is_virtfn =3D true, + .is_extfn =3D false, + .physfn.bus =3D pdev->sbdf.bus, + .physfn.devfn =3D pdev->sbdf.devfn, + }; + rc =3D pci_add_device(vf_sbdf.seg, vf_sbdf.bus, vf_sbdf.de= vfn, + &info, pdev->node); + } + if ( cb->disable ) + rc =3D pci_remove_device(vf_sbdf.seg, vf_sbdf.bus, vf_sbdf= .devfn); + + if ( rc && rc !=3D -ENODEV) + gprintk(XENLOG_ERR, "failed to %s VF %pp: %d\n", + cb->enable ? "add" : "remove", &vf_sbdf, rc); + } + } + + if ( cb->map ) + { + write_lock(&pdev->domain->pci_lock); + rc =3D map_vfs(pdev, PCI_COMMAND_MEMORY); + + if ( rc ) + map_vfs(pdev, 0); + write_unlock(&pdev->domain->pci_lock); + } + + pci_conf_write16(pdev->sbdf, cb->pos + PCI_SRIOV_CTRL, cb->value); + xfree(cb); +} + +static void cf_check control_write(const struct pci_dev *pdev, unsigned in= t reg, + uint32_t val, void *data) +{ + unsigned int sriov_pos =3D reg - PCI_SRIOV_CTRL; + struct vpci_sriov *sriov =3D pdev->vpci->sriov; + struct callback_data *cb =3D NULL; + uint16_t control =3D pci_conf_read16(pdev->sbdf, reg); + bool mem_enabled =3D control & PCI_SRIOV_CTRL_MSE; + bool new_mem_enabled =3D val & PCI_SRIOV_CTRL_MSE; + bool enabled =3D control & PCI_SRIOV_CTRL_VFE; + bool new_enabled =3D val & PCI_SRIOV_CTRL_VFE; + + ASSERT(!pdev->info.is_virtfn); + + if ( new_enabled =3D=3D enabled && new_mem_enabled =3D=3D mem_enabled ) + { + pci_conf_write16(pdev->sbdf, reg, val); + return; + } + + cb =3D xzalloc(struct callback_data); + + if ( !cb ) + { + gprintk(XENLOG_ERR, + "%pp: Unable to allocate memory for SR-IOV enable\n", + pdev); + return; + } + + cb->pdev =3D pdev; + cb->pos =3D sriov_pos; + cb->value =3D val; + cb->map =3D new_mem_enabled && !mem_enabled; + cb->unmap =3D !new_mem_enabled && mem_enabled; + cb->enable =3D new_enabled && !enabled; + cb->disable =3D !new_enabled && enabled; + + current->vpci.task =3D WAIT; + current->vpci.wait.callback =3D control_write_cb; + current->vpci.wait.data =3D cb; + current->vpci.wait.end =3D NOW(); + + if ( cb->enable ) + { + size_vf_bars((struct pci_dev *)pdev, sriov_pos); + + /* + * Only update the number of active VFs when enabling, when + * disabling use the cached value in order to always remove the sa= me + * number of VFs that were active. + */ + sriov->num_vfs =3D pci_conf_read16(pdev->sbdf, + sriov_pos + PCI_SRIOV_NUM_VF); + /* + * NB: VFE needs to be enabled before calling pci_add_device so Xen + * can access the config space of VFs. FIXME casting away const-ne= ss + * to modify vf_rlen + */ + pci_conf_write16(pdev->sbdf, reg, control | PCI_SRIOV_CTRL_VFE); + /* + * The spec states that the software must wait at least 100ms befo= re + * attempting to access VF registers when enabling virtual functio= ns + * on the PF. + */ + + current->vpci.wait.end =3D NOW() + MILLISECS(100); + } +} + +int vf_init_header(struct pci_dev *vf_pdev) +{ + const struct pci_dev *pf_pdev; + unsigned int sriov_pos; + int rc =3D 0; + uint16_t ctrl; + + ASSERT(rw_is_write_locked(&vf_pdev->domain->pci_lock)); + + if ( !vf_pdev->info.is_virtfn ) + return 0; + + pf_pdev =3D vf_pdev->pf_pdev; + ASSERT(pf_pdev); + + rc =3D vf_init_bars(vf_pdev); + if ( rc ) + return rc; + + sriov_pos =3D pci_find_ext_capability(pf_pdev, PCI_EXT_CAP_ID_SRIOV); + ctrl =3D pci_conf_read16(pf_pdev->sbdf, sriov_pos + PCI_SRIOV_CTRL); + + if ( (pf_pdev->domain =3D=3D vf_pdev->domain) && (ctrl & PCI_SRIOV_CTR= L_MSE) ) + { + rc =3D vpci_modify_bars(vf_pdev, PCI_COMMAND_MEMORY, false, false); + if ( rc ) + return rc; + } + + return rc; +} + +static int cf_check init_sriov(struct pci_dev *pdev) +{ + unsigned int pos; + + ASSERT(!pdev->info.is_virtfn); + + pos =3D pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); + + if ( !pos ) + return 0; + + if ( xsm_resource_setup_pci(XSM_PRIV, pdev->sbdf.bdf) ) + { + printk(XENLOG_ERR + "%pp: SR-IOV configuration unsupported for unpriv %pd\n", + &pdev->sbdf, pdev->domain); + return 0; + } + + pdev->vpci->sriov =3D xzalloc(struct vpci_sriov); + if ( !pdev->vpci->sriov ) + return -ENOMEM; + + return vpci_add_register(pdev->vpci, vpci_hw_read16, control_write, + pos + PCI_SRIOV_CTRL, 2, NULL); +} + +static int cf_check cleanup_sriov(const struct pci_dev *pdev, bool hide) +{ + if ( hide ) + return 0; + + XFREE(pdev->vpci->sriov); + + return 0; +} + +REGISTER_VPCI_EXTCAP(SRIOV, init_sriov, cleanup_sriov); + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h index 47cdb54d42..ae5f3b7274 100644 --- a/xen/include/xen/vpci.h +++ b/xen/include/xen/vpci.h @@ -45,6 +45,7 @@ typedef struct { REGISTER_VPCI_CAPABILITY(PCI_EXT_CAP_ID_##name, name, finit, fclean, t= rue) =20 int __must_check vpci_init_header(struct pci_dev *pdev); +int __must_check vf_init_header(struct pci_dev *pdev); =20 /* Assign vPCI to device by adding handlers. */ int __must_check vpci_assign_device(struct pci_dev *pdev); @@ -146,7 +147,6 @@ struct vpci { * upon to know whether BARs are mapped into the guest p2m. */ bool bars_mapped : 1; - /* FIXME: currently there's no support for SR-IOV. */ } header; =20 /* MSI data. */ @@ -200,6 +200,13 @@ struct vpci { struct vpci_arch_msix_entry arch; } entries[]; } *msix; + + struct vpci_sriov { + /* PF only */ + struct vpci_bar vf_bars[PCI_SRIOV_NUM_BARS]; + uint16_t num_vfs; + } *sriov; + #ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT /* Guest SBDF of the device. */ #define INVALID_GUEST_SBDF ((pci_sbdf_t){ .sbdf =3D ~0U }) @@ -323,7 +330,8 @@ bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, = unsigned int len, unsigned long *data); =20 /* Map/unmap the BARs of a vPCI device. */ -int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on= ly); +int vpci_modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_on= ly, + bool no_defer); =20 #endif /* __XEN__ */ =20 --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054539; cv=pass; d=zohomail.com; s=zohoarc; b=j/T9ShnKihPlCHtc3xhZCWguUyVAYv2vPmgmHpAlaCv/qHsG4DZve9X15YYO2ml7xnASR03iM0o4O/4ri7DF/t3WAd2mLaGbWWy7h7VSWzOpQ8m8n81yEY0geN4IJlQjGzOije8ESuCabFMWgWuI72uUXyqUj1bz6lLTQLOnwWo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054539; 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=TIjXoyluGNn9xI4dhnAjl42ZVBDPRjpiZelesPBUChw=; b=S2pn4VGbYt1Vdhaugz0cqyR29ALu42H9CZM4t8gtFW0jQJG4s0v8jlw4yCRJYQbNzq7k8zpUOrB+w7LtGH5paymknbuHN8ZP5ivwhLJoSrxUgRCw9mKzxoE5WZdI/ZxQuVOphEqJGYmJ+M8T9kZgZZtGgjtDO4q+JXPPiz6i6oU= 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=epam.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 1773054539314667.260010953712; Mon, 9 Mar 2026 04:08:59 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249277.1546770 (Exim 4.92) (envelope-from ) id 1vzYTY-0004TG-J6; Mon, 09 Mar 2026 11:08:40 +0000 Received: by outflank-mailman (output) from mailman id 1249277.1546770; Mon, 09 Mar 2026 11:08: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 1vzYTY-0004St-FQ; Mon, 09 Mar 2026 11:08:40 +0000 Received: by outflank-mailman (input) for mailman id 1249277; Mon, 09 Mar 2026 11:08:38 +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 1vzYTW-0003iR-Te for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:38 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 52878060-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:37 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:33 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:33 +0000 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: 52878060-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xqd8cYj7gy2TZSBOlBkbaLMT6N1GKSlKJkUPzNqCtkbo01FLxHG6Q3uxyJ03kCj5CQBdyLE97eueuXbMdLGhp58TCU/Db5WUa4egtwHZd/tU1LZ6cwIJ0nmmbNr3dEE26d9tfRYekoOn6VVQ8A6segUyG+WjZuKCR8v2JHUI2kT8TQfzNdy9OsffZ6RT762MrE88G3CgOPQ7yBQe937oNFVAYqH+QhdrMUZFI//ULZChed0DRB/nU4tswXTVpnZyrgdJ4Otv5Kjdu1KN9Ag8p9st0gaydhIcFSLlPoZks+FFfD44UVcmR8eec2OkyA3jdF6l77EQrW9LACucgkI28g== 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=TIjXoyluGNn9xI4dhnAjl42ZVBDPRjpiZelesPBUChw=; b=tWIRsOk2mLToM6/blopyO0HS0cFJh5OKhmN20RRJzSLN7EQxaO1YQJsRicwIuGMRd2o86sFbjps5qfVBPIj803vGM6DFaeLi4jCh/KQLmv2xzf28D0PHesuK8SaesgWeZmvKY3uYFfbU2EPEDfSNJF33nLs6bSJybtsWleeWeQOwGbqHDNTxp14to9kBVYZUNd+VfhgYocGAGC7VQFZS2OURF5kqmL6CWMxTYw2ORTsPX7GtY/Lq5pQ3VjJVDQ7gHMi8XCBIVa4pqAz3FEqoS+gZ0xH1v/loKFqvE8uquzBeYFrLRNUIgGMdwmwiIaPBKjxsS2ozjWwqAiuTnP2yxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TIjXoyluGNn9xI4dhnAjl42ZVBDPRjpiZelesPBUChw=; b=icksVjs0RBwAZ6amoj6d06hDrO0Vm8ttxzyCLQ8vMPtDNjkTZOI4HCbAandGHlQWxoWquwz7+wCIGzVEYVWnGCVWP66444diOPJCdLRoP7uKnkfBlHLKyfA+dwBReScg7tjKnA97s7qurwF6Yvu0PpDtXH+JCQ52S3fCmlt6hlLZ3WihALk41VgiThD8zYzSV6j2mK9jzDj3oCufaWg1NG0o/Z1OIKVU1iWjVaE3e8UJwyFeqJWxOX56JjQ0nfRvZuZkVjEtD10F0nog+4yPTn4BW+sLRWM5oi52wVUXW5ZFwqK4BMVDuejkbi2ugCvjIgEwqsyvucv469QiA33YhA== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Stewart Hildebrand , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Mykyta Poturai Subject: [PATCH v2 7/8] vpci: add SR-IOV support for DomUs Thread-Topic: [PATCH v2 7/8] vpci: add SR-IOV support for DomUs Thread-Index: AQHcr7UO+MwgiaR8rkeSbkx2JKFNaw== Date: Mon, 9 Mar 2026 11:08:28 +0000 Message-ID: <4df03dab1dc6ce3ac7524b9f06641bc90889f743.1772806036.git.mykyta_poturai@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: c39d720f-7feb-489e-8530-08de7dcc3437 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: US12a8QYXxbqfc0jdD1/5pKn21z0T2D2rwo7FlXKT3EdnjTJZCMqDH+0JAvFGZ4HgxSunTdrHuAMmEnZ2lQdRqmoZjXV1thM7zTqP+0DkJkZyLwaf9NuTXH4pskfkUp24uzetDbOo/1F1D9hHaO3309t9Ci6N0ksFQzMYikrAMM5XLAVrcDvqI5aB+9drUCbkEIWJWwbd1LzdLPS8A+rJnIdHy5Kc95BC0Za5w7KYsrgEyRLjCy4kFzwnyzt3EGTUzv+/X1u3yDOeL87ZL2mwlxPrTtMSCk1PSxHk7Ge9mX3GUIoM6BBZfppLLsK4Pg7PJrS1keWL/BYbJafi4B/GxHGpNQ0RLvWU+LuSKSSrOlbRyuvvOkjOb8tyEjpN0x2evYPl2EpjGrEkMh0jir9jDYyi4zqmdGUYhvGuFvz/nQKAO1qjEwNXL4eTa0wn1dl0Z8B0TTsH1hBsVIZEkEwAwowuzxfy8sTv13xmNnYE1QjwjvY0LztSAPWRI3vujdXzeY/8Kh870Ix8GZ/4w+m36mPZRVLXTTdSiS3VJiyypTzCQDRl09w98UEzQSi1cWgeOchvcq+Woeu0HF7M28LtdcAR0p2/RW2I7gYnKkY3rudMdBClwbmZ9hALoYuJXN+PEoiHgOZSacRcqqWggM6lBEXtV5HFSZ3BbsQB5H2t7jvvsldGwQRfRKfKxNqUG3JKNfBXApPolQVFwAik6TyulJLxWlJ+foTwp7dvLkXEwI+QPA7toerZdfQntqYEBAAJj35gUaByObicO7eK3Y1lJFPa22FBTT3XYkuZcHMN5g= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?KB3hOanFokbhrM5e0rg3V3DBJYCU2FKzvsTbQg+5FOCYkKS84zN3n0w0Y4?= =?iso-8859-1?Q?oWn3z6xqkj9i1vRpZYarCkSmSjEUcfdsgvq64vfjcZxcqDoX8Ncoc2V2ld?= =?iso-8859-1?Q?nw/B0eN+zr0lIKWEFdmxnRqJQt2MIc9b4r3a8CiANYtv+U1m4HlCFwEnCC?= =?iso-8859-1?Q?dlowIZYZEQf5gqS2RKon7mk8hqq3vcPz1DQXf0THb5ldQzIV3057lL6+gq?= =?iso-8859-1?Q?yZH1k+7B5iEH5cJ2wFGN6WM/YZuKsUWf2a97uCuGgU6CxbPPlGI8F7kK/s?= =?iso-8859-1?Q?VsfWF594DD0U4SJ8+ly5KtZpDHUDCVxEOlk7fdVOM8SvzTI54dq7mhtVFn?= =?iso-8859-1?Q?QWqu+SiSoEeSaN8T0WCT+pjOaAOLpH9nUm920lNaGGrdvlvfJqibh4GaVd?= =?iso-8859-1?Q?K6SI/OBsEbxohI1h/lhQFBMlEscLB3S7IubLII4onqirnwUnvmlYkHUa7E?= =?iso-8859-1?Q?eXOe8N2oA1glHLkM1uVQ9QLZj7dmDmWKfx4U7Vh6vsNpqooCMOCYShNuFw?= =?iso-8859-1?Q?xiDmvbwQfebkgsyvp/sMcZydEQjFxFS2IR0U8h9V7198QQ4lpZULG59IN4?= =?iso-8859-1?Q?n+c+lunwo70yYnWJYf1K3/9Q+Sv5YTeVqTLza3grTsYFfnYdMjzErRV5HM?= =?iso-8859-1?Q?OjZ7cHIfz9CnFTglcnnBOckHBpxvF64zSa/RNK6GC9FEh3NjkP4bNsu5QM?= =?iso-8859-1?Q?Qiu1xuM4KaTBRHfPFosLPt/cZUE7Rg7FbBGeohloV+tamF5bDI08Z45xl2?= =?iso-8859-1?Q?X9sXAn16lAf17bCvHo7E8XAHR3IobvU15r+KLADohicRevUnb4NUXi6YiQ?= =?iso-8859-1?Q?MIrUCWlJLvrkHItPouXrHW8jhteFG5cEDIdjSPg/c7AisMsyLa48l8Nt6S?= =?iso-8859-1?Q?BtgP7rZTso9B6SzdNloXeCMFMe29dsehmzPyPfCeEUuGMMrPoXBu+71DID?= =?iso-8859-1?Q?wCKL4OZvB52I1NeK0AiuLhizpsKo2QDzK02uGhHcMK9a5VYoAbLum+7wxz?= =?iso-8859-1?Q?PyN2ZYvqhwIcbrdkOd8FKZGiV1lpS7KRrBQIo/+5/Dhe9nVG8If+P5VXS3?= =?iso-8859-1?Q?rXLrWxGNthf4yQkXRht3EDJoUsUoKAjytrpQaYstt/jkdrLEQPZNzbL2Wb?= =?iso-8859-1?Q?StYLGT5jdutavNVvWUi3aIpIPioCmY1ppHA1C/6FH72GNxKCgIzGCHzzge?= =?iso-8859-1?Q?5rPyiLVHjlYVfcwOK5ztmBeXYNiAq11lXvBVlA2DUkqTVpyYcOTDBcbQjy?= =?iso-8859-1?Q?udRRGKg4p3RDlLGWrLvn6Uz/QNAp/ARKfevoakkMWOys2vxAzg4/2Y4E8d?= =?iso-8859-1?Q?XAzUbs5ANpgJmKOYK0vJgZ4zTMa6EZOD6s6LUrde2v/aNtKB4k+FhV7xYi?= =?iso-8859-1?Q?IEZw11YEy4RG1Xl3kLd7MjaZyfeeuM//rGhCAIsJtU1GKdzRtMMRk1tQfS?= =?iso-8859-1?Q?i0gQsSwyxC4ASf1lqw2c8Kwq/pBzAaJnxRpHeoQlI1kJkqjeBlQfZ7ddcv?= =?iso-8859-1?Q?UdZ4GkdW3HhX+Pmmgr4uaMe7t639r9UswIipVryQxat7AjhO7QbhIIemjq?= =?iso-8859-1?Q?A9ZAFzADlIWkRFA2uj624bFXO/Ic5SOAoIUYOeYfDZNlYnThhLxtBg1nKb?= =?iso-8859-1?Q?+niyNwIKhRZFza6DvQc4/5zacnjBX83P4Av5XYbEGf+s7g4qRrGaTHLq+d?= =?iso-8859-1?Q?neo5jl5T2qiqfyGOsrN50nvF+AQFqYWqUdeaL7od1V7KTPCXJmIyakmQbr?= =?iso-8859-1?Q?CJgEd7N8CLeVXvc6nfuwK/N0kLnvTdKkr8SQczhaZMZTcmz9UBm/cvwu/d?= =?iso-8859-1?Q?vo3UOo/8qRNr20wwF4I0WXMIGv77Pa0=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c39d720f-7feb-489e-8530-08de7dcc3437 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:28.2601 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: meoYxEVlFmzSkLtlCLYWjSmiZZc//L3Tpt8twbzfGmw+BEdX8crR9YtB07/y3I+FNpb2m5sHjJZze57NBLbIlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054539482158500 Content-Type: text/plain; charset="utf-8" From: Stewart Hildebrand SR-IOV virtual functions have simplified configuration space such as Vendor ID is derived from the physical function and Device ID comes from SR-IOV extended capability. Emulate those, so we can provide VID/DID pair for guests which use PCI passthrough for SR-IOV virtual functions. Emulate guest BAR register values based on PF BAR values for VFs. This allows creating a guest view of the normal BAR registers and emulates the size and properties as it is done during PCI device enumeration by the guest. Note, that VFs ROM BAR is read-only and is all zeros, but VF may provide access to the PFs ROM via emulation and is not implemented. Signed-off-by: Stewart Hildebrand Signed-off-by: Mykyta Poturai --- v1->v2: * remove VF register handlers covered by init_header * set guest addr unconditionally --- xen/drivers/vpci/sriov.c | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/xen/drivers/vpci/sriov.c b/xen/drivers/vpci/sriov.c index 6f691149e9..1c408d1c6b 100644 --- a/xen/drivers/vpci/sriov.c +++ b/xen/drivers/vpci/sriov.c @@ -303,6 +303,63 @@ int vf_init_header(struct pci_dev *vf_pdev) sriov_pos =3D pci_find_ext_capability(pf_pdev, PCI_EXT_CAP_ID_SRIOV); ctrl =3D pci_conf_read16(pf_pdev->sbdf, sriov_pos + PCI_SRIOV_CTRL); =20 +#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT + if ( pf_pdev->domain !=3D vf_pdev->domain ) + { + uint16_t vid =3D pci_conf_read16(pf_pdev->sbdf, PCI_VENDOR_ID); + uint16_t did =3D pci_conf_read16(pf_pdev->sbdf, + sriov_pos + PCI_SRIOV_VF_DID); + struct vpci_bar *bars =3D vf_pdev->vpci->header.bars; + unsigned int i; + + rc =3D vpci_add_register(vf_pdev->vpci, vpci_read_val, NULL, + PCI_VENDOR_ID, 2, (void *)(uintptr_t)vid); + if ( rc ) + return rc; + + rc =3D vpci_add_register(vf_pdev->vpci, vpci_read_val, NULL, + PCI_DEVICE_ID, 2, (void *)(uintptr_t)did); + if ( rc ) + return rc; + + /* Hardcode multi-function device bit to 0 */ + rc =3D vpci_add_register(vf_pdev->vpci, vpci_read_val, NULL, + PCI_HEADER_TYPE, 1, + (void *)PCI_HEADER_TYPE_NORMAL); + if ( rc ) + return rc; + + rc =3D vpci_add_register(vf_pdev->vpci, vpci_hw_read32, NULL, + PCI_CLASS_REVISION, 4, NULL); + if ( rc ) + return rc; + + for ( i =3D 0; i < PCI_SRIOV_NUM_BARS; i++ ) + { + switch ( pf_pdev->vpci->sriov->vf_bars[i].type ) + { + case VPCI_BAR_MEM32: + case VPCI_BAR_MEM64_LO: + case VPCI_BAR_MEM64_HI: + rc =3D vpci_add_register(vf_pdev->vpci, vpci_guest_mem_bar= _read, + vpci_guest_mem_bar_write, + PCI_BASE_ADDRESS_0 + i * 4, 4, &bar= s[i]); + if ( rc ) + return rc; + break; + default: + rc =3D vpci_add_register(vf_pdev->vpci, vpci_read_val, NUL= L, + PCI_BASE_ADDRESS_0 + i * 4, 4, + (void *)0); + if ( rc ) + return rc; + break; + } + } + + } +#endif /* CONFIG_HAS_VPCI_GUEST_SUPPORT */ + if ( (pf_pdev->domain =3D=3D vf_pdev->domain) && (ctrl & PCI_SRIOV_CTR= L_MSE) ) { rc =3D vpci_modify_bars(vf_pdev, PCI_COMMAND_MEMORY, false, false); --=20 2.51.2 From nobody Thu Apr 9 15:47:10 2026 Delivered-To: importer@patchew.org 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; 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=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1773054543; cv=pass; d=zohomail.com; s=zohoarc; b=FKlgZ7pXySh+yKDw0FebXyN19o/9o8JsjZNxJ+TXipn5bAC98oa/PTPfPsMUcGKY6jbQruRyufo/C9Cf8gj/22kEcaudop1EnvKuQ9aGDFJ61hSastVlOaHMbpOj+I3zw06otjlGrGNmG6p0KbUEAo6uvTDkjAilRLR8YyHm0ug= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773054543; 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=IqQ9wzGtIwcLcpHstce4KsP+TKXKqpd4rz2ohRjKgNM=; b=YM1iVYBnb6qii0zPUy/N4F+sUIiY8PanGNPR9Vs6QSTtlWFSF62TqKK0xBEiQlQjh/nhS3WsV1ORWP01gZsbD+Qq0Yzc9wDz1NITtRaDZ9yZDYbuMKG98EtD36AbqPbytG10d3Wm5il93WnlNWbyWKpNeIDOxBFS33UqDUHz/ZQ= 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=epam.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 1773054543873881.7995482268961; Mon, 9 Mar 2026 04:09:03 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249281.1546806 (Exim 4.92) (envelope-from ) id 1vzYTd-0005SE-1C; Mon, 09 Mar 2026 11:08:45 +0000 Received: by outflank-mailman (output) from mailman id 1249281.1546806; Mon, 09 Mar 2026 11:08: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 1vzYTc-0005Ra-S1; Mon, 09 Mar 2026 11:08:44 +0000 Received: by outflank-mailman (input) for mailman id 1249281; Mon, 09 Mar 2026 11:08:43 +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 1vzYTa-0003iR-UV for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 11:08:42 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 53e0db43-1ba8-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 12:08:40 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB9695.eurprd03.prod.outlook.com (2603:10a6:20b:60d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Mon, 9 Mar 2026 11:08:34 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::b8c6:f37a:987a:beb%5]) with mapi id 15.20.9678.020; Mon, 9 Mar 2026 11:08:33 +0000 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: 53e0db43-1ba8-11f1-b164-2bf370ae4941 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jxWOtq7Ket8+vHZ1LjOEdZw9ahGNiYEpdifGh/lgGsUS4A8LYZ6UyoUgvBfDY+nKtGDHKAaq+t74o3p6LTvwZiMZGOMXd3DHTIp7/4RlWv8a8e9a5IouEnxbBLX6d/JJJoEUCHgjuv3yRQXwNm5XUl7zOFGiFfETR6YEqMgl4w0QZZmgjuX+zoNpWw+5E6xEeEMb9C5YWSNFhwD3pF7Sr7nLSUKaJnE9Z1JmbbB8g16OnU4SWBQUtSGgs9U1UlJOhyz32wc5kknmnYpClkNQBU3YmcgLahKn+FX/g6GNiXOKdJAKmBHClZD7R5z95XCum4ShWsvLd0LFyY6vmFPXIg== 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=IqQ9wzGtIwcLcpHstce4KsP+TKXKqpd4rz2ohRjKgNM=; b=vuo3GlXuAraeL20W61I3y0pWNfChfYlqv2AAyxDMJ4Dm25cc5CS5Eej3ByFoU2LiLSk4Iu79ECM113/dH82A94SFD24G4yquCWvrPMOiAybFKf3tXUuqOj0wh2JbhzCQLL9ROJuK9s/qU7uvQwsMBjfy/4sK+mn0i216YaaYBiKhB7Z/sQ9mW9f32xF5XDw7EeRsf6hv81nhOiBK0uN0loYz6CKH3WMok+AOpjLU7KzYyo8kPCNgXd9zj+KcolxrIyhSK+6Axz/RAaLyMhrnlefC9pMhwR93GOO5YSMqJsyw3eyuAbGIqqf4pInmIMhnbud16M2ckBKrXY2d52U1ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IqQ9wzGtIwcLcpHstce4KsP+TKXKqpd4rz2ohRjKgNM=; b=W57iWa9SEqPzaCtzjOuEnb6OKBC9o4weC9pzbAs12ZPhL4MF1AetZONY4T1zJGW3MG1PX2VLeIjINM9AAdS0ryoLb3nqg4wCPnXZbvEbPhUX+/vaau8Tl30OHQx8W8gd/7KdVdEQ6ge1TEpX3jWEdd9Q+SMHGcFCaM1XGCmjhshbQCMk797F/GxNmYo6S3uPDUOhbezbmP0sSrT/yXTIDmgJo7dDf23IX9rW7vKvR5yCa8LmyCuYzS/v9ewBSyZMySOe4dTwGJbeba2X1+FgDg0Tc40cr8J1hxP5ODFEthMob+j+iI3K4EaJVxIfwsqgvSdeynzEE+tRK9Z8LTSIrQ== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Mykyta Poturai , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Stefano Stabellini Subject: [PATCH v2 8/8] docs: Update SR-IOV support status Thread-Topic: [PATCH v2 8/8] docs: Update SR-IOV support status Thread-Index: AQHcr7UOSOcW7ORQ4E6npAgqHkuyvg== Date: Mon, 9 Mar 2026 11:08:28 +0000 Message-ID: <955759c5a770a8be54b6e7ae020915c78576005a.1772806036.git.mykyta_poturai@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB10102:EE_|AS2PR03MB9695:EE_ x-ms-office365-filtering-correlation-id: ab6758fb-bd77-4c08-7f76-08de7dcc346d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021; x-microsoft-antispam-message-info: U8BY+OVTyQQHbwJSV5kZ3zhS0KgozOBhG5hs6OoiV7pTvl8C/SL4VyXljcZlhMDHFJd8Xtly3eqirOudMscRKCLGPcnX4tOb6gM8l/A66m29DHSyJj/WYZXrSDN52aLyxCRCKKrqT0pZ8BbMLfukPU9HQovHxPzpoyLL2zs3tZMRGAL8Zcp0Es3AhJ5K5D8TSAeGE7Ngs0C/eukTJPTyQc7U+4ypgu+wIWkXYk3UdnbxI/uP6WnExvBtazZlg5o1n2FdZzqphrordaSiMPD+1aX23py7cHEcW9ncEQPprAbTgQ2c/m9c/NMBHEfdaE9Z5Y2c+j2pbOY/e12b5MnJKzB6alYTV0Bm6YI8+LxjiNS+ik/jPJFUdH6OAUucf3DD8gFb86Fce6KnJiwUdNBS4wHmJ/Ig2xswAk62JRz+xusJfwMCr5ddpGfsjQyP4UvQ3wh37t+P3tM9/62N+tF2O7dR075AKLbKaMJD/hTEsSjvceATTYavyDK21arUU7PPL+BRKYFoN1QQ3Hnjl8DWPMJxeAFR8FDXtzzxSjMm75hm82zArBgmPAxy+Q9iZho6e0m22VyeoJhCsJhs6dbTrQaIQE3z6j3bdUsMnKFIa2rzH0IFFL7iauv58Mw1xMUzWiPqveU4J+Qeb31D548jXPxDyxRcrFnsWTxC9CDGwYoGUrbrqkIxSBQWFtg4ZERre6pZWUjN4cJfxkvVUPe5TVIyw/y2GAwebgjMeIRVocOf16VOxtZG+B5Zf5PtruqIn9N707JxQ+YnAvqL5mjtIFS3KItTcTDWtmvW39W4Cl0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB10102.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?HpRAy9xWLFZhyTlImjxTAzMMHIaBc80VZlvSia/5WdWvi7aokfQXm5bzbk?= =?iso-8859-1?Q?mX1pHzSi5qK7IYWu2/BTTLhYawBkZBQFWDUHRMmU8aubobClzC7X5DS/eU?= =?iso-8859-1?Q?NkrOX9wzznBwlyJv2qENWdrZSN5Q61qf9SM3kE99760RbGQi2cmMOFpTnU?= =?iso-8859-1?Q?OnsgGUBkB/7Cnr1sNVMRhvbdFsUrlJ34v6GB6k5K0w8TngbeTazN8pRfwC?= =?iso-8859-1?Q?tfktw3t4rYbdpuyrVEnh5J6RUZkHB3U56SLwRPop4qRIOkukgm/H1Rb6Qt?= =?iso-8859-1?Q?VfcG9Vk6+UZuzaolEfQTSlfGQNTlH3s0Z/e4+9pdTGt651ODAeObXg3pSk?= =?iso-8859-1?Q?b+U9aAttoOZo+ZnAN3Rz05RaNep8EPsl45BONFd8nOCurOfGbolRcwN6FE?= =?iso-8859-1?Q?bn7/a0YVDe4011MCX4D/CLeA6TLpuyhGX9GOQoLsMZ/hJ1QGIM55LpVvdi?= =?iso-8859-1?Q?i7Fnyni2XwBf4cRiRCzAZhYoI1pTxMmbv1CSp4QU4+iCsJys62NF8POrxC?= =?iso-8859-1?Q?/d30JZr3U3e3OWe4tCvkpdmQxXw3xtjihnoS1OD5zkEdoMXESgFtuBgoDp?= =?iso-8859-1?Q?PbPMvwqqY5uNOANMI5U0bYlYZOcyiWKmnvLJQimNfBegdcMaUeo35FpxDo?= =?iso-8859-1?Q?5DW0GnN/TxxGtpp5RCksonRZLM/khe377X9L89wdUYsemS3/8GIL4sb2jZ?= =?iso-8859-1?Q?eBXaeaKBUhmewrS5hKWOgBT3WgR+JTyXny+I0pQ9lN4398B8FI+4ZuszjP?= =?iso-8859-1?Q?d5mL1mFITlED6k/nIjaskR4dRmuIlUprzO9MVd7htz9x3LrBxiujlgM/iV?= =?iso-8859-1?Q?DF1GH4JtQPFj0JcpeSUM9Hg7wZSlbPLl/gtvUZMKh4r9fT3DIiSqO37Con?= =?iso-8859-1?Q?+wLZrdvhaV9HRWb2rRM1nosv6kJoLpMiyMroKjglxFWsJv0SkLziLq9/sX?= =?iso-8859-1?Q?xnmfIcPNcUN6dks3+eNBVQIpLhSXgeY2OABVI8jlp+j6rBURttTx7vdtQA?= =?iso-8859-1?Q?49LrPBY/hqmbQiAuhYlt1Tyd+J34AxXS3e41Wzw7YuGLcvu4ZmXRKOcRNB?= =?iso-8859-1?Q?i6pBhlVQEa/q88m+JhN/cauOTJHcrxdV2FDf/YdHpYjtwM6rnlaW8bpYfx?= =?iso-8859-1?Q?R+rN5XvDd5VmmjLTZ5q42P3FvW09nO/z0ZQt7fVY2Baa5hahVNBuX8uK8Z?= =?iso-8859-1?Q?Z7owXDQ0pMs89cxf2PBoV0gglbJUyyuqZsrSRCQ4edB2eLe9IdMytw+K/D?= =?iso-8859-1?Q?evcdepVrvGMgGt+anrlCMheBSuogwsDcIKvGjxsLUg0XVHqho8Skd8zb+C?= =?iso-8859-1?Q?JhSkxow8NaWiRpR5gh77MBIn67zqN2VNH0Cbjw85rmXa0LoSYxmfNeC5kP?= =?iso-8859-1?Q?SGMdT3DB+flWDt17koFHv0gPpIME8wTTDxosNS20mALu3zZU92OsCKtqCk?= =?iso-8859-1?Q?YRg7BQgfWsmeNK0X3pbe/iY/GULWMyIPSp0N6e5TEzSng8HRXNEhQNJDNE?= =?iso-8859-1?Q?YJ64IftVlSBEW6HX120IAwbyj9yzWSVzQOka0gpQTikiTgAVss2nBfurE+?= =?iso-8859-1?Q?1N9463YE+b2h+P6rgonBEO3K86+gtCOSojkINcrDwe4JJvaLSPjK7/oCZG?= =?iso-8859-1?Q?8QdD+r/yv6/C18LO8qKzV62s1TknsPHMkeQGqLJQkrHd2dIRgM0X86QAPW?= =?iso-8859-1?Q?42IFBfmiOUlhowJZ8l1d8sobbmhYxGhhJZAAb/q8dC1mx30iy5kyAxDEg+?= =?iso-8859-1?Q?+nxaMQvEUgo3PFYZJnDsX12cSQA//2Pugj2NLKiJyN1Y6XttYn/sVLpnsY?= =?iso-8859-1?Q?1nyPqHG70vv9qdIJjf+DAKK+0LbY8c0=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB10102.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab6758fb-bd77-4c08-7f76-08de7dcc346d X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Mar 2026 11:08:28.6501 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: MwmSREvtmI4/tGJs/xbNq0uQQsHq9KAnOQHmoE5+rJon2T7bonKvu3Hduy/Wg+LE9nNH7KuT7FJRQHQ+bqFyvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB9695 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1773054545484158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mykyta Poturai --- v1->v2: * new patch --- SUPPORT.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/SUPPORT.md b/SUPPORT.md index d441bccf37..c01853fe7e 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -170,8 +170,6 @@ unexpected behavior or issues on some hardware. =20 At least the following features are missing on a PVH dom0: =20 - * PCI SR-IOV. - * Native NMI forwarding (nmi=3Ddom0 command line option). =20 * MCE handling. --=20 2.51.2