From nobody Sat Feb 7 03:56:12 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=1754040193; cv=pass; d=zohomail.com; s=zohoarc; b=QVN6WOclaF204R/4lke+dt0CBwlc3wJO7J36gy0zfl4Fs8vxWkRSzNxuGOLVEdPm7g/1jr8oGrPk2M1fQqB4JvLMXGGlmZ/1bn7PGTe3tpbQRPA4UUzKeZBJTXZIVyxXatg5yVKVAQHg3Vs/RcNErq2gilpyYMwyEWws7iSOxb0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754040193; 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=BanVMEjZRx8aOaNUyzbBjnmHksdpZUi3wpwgwjwI8Ts=; b=O82fbX4GtOidMl4RZPvFUMyTUpxPucDhbNW5jdVB0MCXtrIieRGa8f7rSLPs5xlycISmPwxXh7UqSwWrBWFln9cV5+z6BXWcsSy4smBtWSQo62dFIrHxAzmXlR0vGy5gK5mrYvzooORyTaIhCHRM/qyfVaL0qJHyS1i9jdcVp6s= 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 1754040193289202.04721533723978; Fri, 1 Aug 2025 02:23:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1067003.1431979 (Exim 4.92) (envelope-from ) id 1uhlyV-0006Yb-KC; Fri, 01 Aug 2025 09:22:51 +0000 Received: by outflank-mailman (output) from mailman id 1067003.1431979; Fri, 01 Aug 2025 09:22:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uhlyV-0006YU-HI; Fri, 01 Aug 2025 09:22:51 +0000 Received: by outflank-mailman (input) for mailman id 1067003; Fri, 01 Aug 2025 09:22:50 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uhlyU-0006Wd-CT for xen-devel@lists.xenproject.org; Fri, 01 Aug 2025 09:22:50 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 16fe0891-6eb9-11f0-b895-0df219b8e170; Fri, 01 Aug 2025 11:22:48 +0200 (CEST) Received: from AS2PR03MB10110.eurprd03.prod.outlook.com (2603:10a6:20b:57a::22) by VI1PR03MB10032.eurprd03.prod.outlook.com (2603:10a6:800:1c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.13; Fri, 1 Aug 2025 09:22:43 +0000 Received: from AS2PR03MB10110.eurprd03.prod.outlook.com ([fe80::52f0:1815:60c9:8873]) by AS2PR03MB10110.eurprd03.prod.outlook.com ([fe80::52f0:1815:60c9:8873%5]) with mapi id 15.20.8964.023; Fri, 1 Aug 2025 09:22:43 +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: 16fe0891-6eb9-11f0-b895-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lKoIukvHor2GWksWgFDwCcUdFSXFjLTkTyy179S/xnefcXs4n2ZoYKTL/wN9rXgQXQgqwq8yh0sN1xlfoyjucysrhhQIZT3qO38OC9EQOGVzSuTsjn3ir9rMv/j+ok9YnvBdVwpt74sveeGd7Y+ucPrwy4YwMzQNkDA526eq3zC77SLaEaCXmLbZwxp8qN72iojVySxln7GClbPk1XJbA/bIWyr3x8wi4p3OqXNt+6f0cWfm7aLIh4Fz9+6VJ7qZpjLJHm2Lsz2kMNgSEpeD5NALP1P2nq5peHpaT2esikx8jiu/CIN5TpdIzeUk50hXmDsKAOSFsjBEivGzIZGnAA== 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=BanVMEjZRx8aOaNUyzbBjnmHksdpZUi3wpwgwjwI8Ts=; b=wwR6194Yxmg39KPd89kVWLI22g7UqtDOUzmEBjO+qYDIKb2brcbcQD27fvqM4mgNrmPE9eXdhNPA+tS56UCyEfZOi8Txn2XO2p1NotSDWRCvGVZ2L2hFx7UKipqzkeOoACGzwD/W2jz54S85bQ4bZDifVk9/8eFeCA1qoh5XTpeOi1RaQu1hCJyVeRNY9ZQJYFpFZPL/l9INBnoLndG334I6UPqgztjuoKnLMHuETmsHVi6P9Rgtw5j+Q456FN0szZDLq++EWt0bkE/mZw6a7QroJsxWmjDZUdrcaaOXRMiw03QaFqN09M/Wae5roE3UWLPGNEYKJdKq+YpctllPJg== 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=BanVMEjZRx8aOaNUyzbBjnmHksdpZUi3wpwgwjwI8Ts=; b=azufd/HJo99V295DXIK/Or3Ol7rOJ4WSRXK5eUnlu85or00B7gfkGclmSmRgnhWTPY5ASoeALfT0pWNwmRoZbooMuWzCzN0q1w/lo/VrsPQw7SI9bzDzfJkBkLqT11fEY2mUzNtnap0gpv+xpd+WKnr784wmAE8ptvi2T+SVcL8XwmJ9Ub273LjELMUgiBlQHyu+avs/TQoB7uQJc79Mm9lhGAedpapcWRY8dVZuo5uXtnxVs+cxZNyGyno+pel3R7N6aoXMZySfNwJESvmOb2f8Ytyp1j+QpRPj4FqGolEtA9WF5NwmVzmDC+KKISgcxp9C0mKj7B4GpCTwB1hf3g== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Edward Pickup , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Stefano Stabellini , Bertrand Marquis , Volodymyr Babchuk , Luca Fancellu , Mykyta Poturai , Stewart Hildebrand Subject: [PATCH v1 1/3] arm/pci: Add pci-scan boot argument Thread-Topic: [PATCH v1 1/3] arm/pci: Add pci-scan boot argument Thread-Index: AQHcAsXViqFNiGIadUqVpLIjHx6cnw== Date: Fri, 1 Aug 2025 09:22:42 +0000 Message-ID: <98c8889e07d6c82067309d8458e15dd52145b467.1753968306.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: AS2PR03MB10110:EE_|VI1PR03MB10032:EE_ x-ms-office365-filtering-correlation-id: a3558229-a14a-40ba-93ba-08ddd0dcf80c x-ld-processed: b41b72d0-4e9f-4c26-8a69-f949f367c91d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?vkjDhpB8nkXoFKeTwgSg/GqQE45tNaUw7yLgQGYurPMiJFAaenlA35j4wn?= =?iso-8859-1?Q?XYUXRU7lq1nHoY3mApFBt4RlkbvoMN6x/ZzRqrIKLGMg7RjWeI94ZcMbQY?= =?iso-8859-1?Q?xnblMjUI7yZlnstsDvvz+f33ufZLd9TCnxiBJhuue9NMZYVrr0ms8EFRkq?= =?iso-8859-1?Q?rgBWEBKFmusLP5XF0KG5unt9N8dwKX4dWGgQvAxBIpcEkyGwEw2OEXt45a?= =?iso-8859-1?Q?BGnTwUH+9WySncpc4/VDN7ABkBezUoasTjtZH76SbOud4r1cd1TxRup/Dg?= =?iso-8859-1?Q?0Qr+VzfkaAvrZTnKLvtyI3aeYPOfCbQUrok2snYGYMzEKwAp7W4oCh5AmR?= =?iso-8859-1?Q?sRjIBzHNzWVBQh9CHmj0BjtMlk0GH+0f2DOVzmuUq/HFgB+KywbCGHSUDU?= =?iso-8859-1?Q?Pe91QvC6SacIU2qU7HG4FXaepqIz2FjN1oKbg6MvX0H94hTjrIEqzonsS7?= =?iso-8859-1?Q?vbYeYMCfnJK9dnuoOyxKnmWB9EQQ361e1rzY7bqm4KZkQKPSeQJ0uhIfCC?= =?iso-8859-1?Q?XbpkjTLicvR8CkqnkrrH4q898i/wbF4Id2GTieY8lPhnZs39yXv7nB52UP?= =?iso-8859-1?Q?sZfFremX7ceUr8OjpfW/hgeOvDGK5cg0mue1PusgGAN1f/IUHET+D3XU03?= =?iso-8859-1?Q?zrh/NWz8NHLMGMiZbiAxcqQuGutlChsjtVjvjT5cxwu1i2StjzQ+ezzu+r?= =?iso-8859-1?Q?RWcNaOt3wMUIxTbAjW4ZPkXMHjrj8ul43yf9R8gL4B5cAz4R2yCHQuXWI4?= =?iso-8859-1?Q?AWd6ATbmtO8H28mE6Dz3kpI8xhTHS4BdRQMesURFRb+CZn9ngP/C51pEiF?= =?iso-8859-1?Q?vM0pzOWAH71ufmZSiXxK/qPbhEq6k+8Sc+qAoUKoEIckfn4sQPYPaaWYH9?= =?iso-8859-1?Q?DbiacnQiDcZ2jfF+c59tFPMmHqM+sPisr7z9gckcV/JCSNlZeu6fEVbRPA?= =?iso-8859-1?Q?nZeXLbcreqVwWr3ZCXFROxf8RmcSfVVW8GnLvHev6bUZTl0y47HHgPnPa6?= =?iso-8859-1?Q?Er4TPctnEuhu1TyTHU54BZpRoXJHMSgwgKmsQw61jT9ek53eoIzXvgaClZ?= =?iso-8859-1?Q?EhTL/wJ5agdemMxsZ1t+c2tdIAkrRgwoLTexubhClZarK1h/Fxjcn91FDX?= =?iso-8859-1?Q?MAq4X+bSjIAKyyPS1KbMjrhDfLDI8JtG+sWHU8GOlFJqQaSCHudXSe+NUj?= =?iso-8859-1?Q?YRplQpac18o9/HxsNsOZ+QjxT0cxhQR5BaPMTMuS32JrSrooWzmtBt23Vn?= =?iso-8859-1?Q?GVKEKRTHaItG+mJ0sbVre6o0tBw1lQcUai4KEcip+IrIUwpx6i7OtCmq8F?= =?iso-8859-1?Q?6yj+R3f9ItBDu4JjWk2lt7evCR8tAQW+6wEhEsJ8DSrnwQy5wJhn3qJ01R?= =?iso-8859-1?Q?XEPJv4JLQ4VLUA+PO0Azi3LavpKDLwQCZm+HCiyB1NqhTXa5hhY2hHbN4m?= =?iso-8859-1?Q?HkMXO5kfL9i1TvOk71Cy3bI6kvW5Th/QmVUYr9H0aP+kVlNoMaA3Gezey3?= =?iso-8859-1?Q?MvHaG0egNeGGDITDaCYernlilLIwisNQpNAzSrC9831UYRyrSNGouYEA5l?= =?iso-8859-1?Q?/72JuoI=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB10110.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?5khTiqiQ9MCdb6XB1n34rWYi5ssjJfiufwXOJ79ZB7P3CkBmNcH2j19lac?= =?iso-8859-1?Q?uN4AATenip6mCjXnpVF761YPOAdvyDprnk/Tb79QMqRa2ui6yp89WiG3TD?= =?iso-8859-1?Q?+icn0znMsgZStG2iQVDKXl18vpthlbAwy2xpkZd1bKnqAzG4oOsOJiq807?= =?iso-8859-1?Q?NipG3TAz5BDIWiIoBL1LJjiGwJQUA+EElXIpZnh1wj0CUtmQSDMxcjYeqa?= =?iso-8859-1?Q?i3kU7ggj24bYQ3XwcLLgcY8g+uf70+x+uWklwb1+Pe9nFQUHisLzYm+uKD?= =?iso-8859-1?Q?WImfTC8PBFMZVUTyD+FvuSUSmK+1NIgi+HU4sODZWRcHleLdBC24Gyp0i9?= =?iso-8859-1?Q?jpeGpQvQBS18WuN0zgyHW3BwRVaVTMqCWznQXqm8Ppdjg2CsIwxtXLCJJ9?= =?iso-8859-1?Q?y1Gv6lM6fXLwO4kWflGfKKJvdYiPt5Iar3Bgsm6nq/9X92nd8GO8ASFNEs?= =?iso-8859-1?Q?QHhCgYN9gnyFXK24azaUEbRslXnFJ9iaKEsQpMqfbeNcHiRr8B98HeDTNS?= =?iso-8859-1?Q?8gn4uqLoMdGaVWSBrqmEd0sfdWJoTLzrdzw5Qu5/bBlj7oI97UX5vPxAR3?= =?iso-8859-1?Q?L863e3GNmvoNskzXoQwgQQTTtklwYXTx2NVY5iv9HMGSYX2sfknc+QUkFG?= =?iso-8859-1?Q?Y+eR06R9Vw4Kb/Oiz8eHdZymYMBzqESuOgBHOJ6Wf7LJqBTIQ14x0etOEN?= =?iso-8859-1?Q?W5FBC2erb6jx6rUKYv8L5A3PH7K1OU4ImzY+zQ54MkBsf7yeaHN5TW9plu?= =?iso-8859-1?Q?gcuI0/GvDcPpufBG3BzjGrfAjKKzW5N4aCQ0xmumlJL1gcHVmulnVFrOZb?= =?iso-8859-1?Q?XcrnyO8dXBoG/NGZLa0IXAry8fY8FxziADRIpxDVRvHYd4AlMBxAeTPTIu?= =?iso-8859-1?Q?db3yejgQ+y1fSVZgEgmVaFHwWh7ruLMJuBX/ki+ZEzWBQEtU/4/S73uacV?= =?iso-8859-1?Q?U1BObNTrsp31HAor3gkd7FFHXt//xx1igD+ieuSIiMztzFfyvLbmVMfvUe?= =?iso-8859-1?Q?PrS8VBnWSedLj1lnHAAjkZBr8dv3G0BbpTtlpPXPJbiKnTITnIEkYt9QOi?= =?iso-8859-1?Q?B3SPpALvFb70+Ai39ID4iAO64a67V4E0EJ4RdyjXV1O7O8HnM56hZ8nkiH?= =?iso-8859-1?Q?8GycIzkoIaNwW08Ga0f7k1svFcVyoQ6ZAjIh+VvYo8kN4CpZ7k4LmN5n2Y?= =?iso-8859-1?Q?jZoKw3mUXCsNEntz/qQrb2DJ0Q6kT+nSWACUDMakN08lcXhOYiqTCjkGLv?= =?iso-8859-1?Q?OR2KWd9mWwuUEdHqbBNJ0LUj3PXL8VPe9Y279OWM77tmrMAiqLwQ5gV89l?= =?iso-8859-1?Q?XP+8fmW1P60QEZwNkQ6qAd64Ae9sJhEVTqn70zqfWamZnHrr98NS31Fci3?= =?iso-8859-1?Q?KrcZwhmTGPSZFRBsZx4oBN2uTV1cT4qz1rK5zsAw4iNfoWq4vNMn8/EADJ?= =?iso-8859-1?Q?Ty0Ykr4XnCiEfQW659DG4P2aB/zm0bJzWbAJzQ0MhJ0WXzZc+Zt+3uTSkw?= =?iso-8859-1?Q?pWaeWFeUIca9iFWMwhpkEeCOU5u/9oH6ISK0RajMsFaYgdTFCxI+4uV/3C?= =?iso-8859-1?Q?OU+k8mV9VicW/1+rcO+/NMlSBTzsTY0a0pHg3fADKidfs69bALE5ZyI44d?= =?iso-8859-1?Q?oQVIePgBmQU7C6I8Ls+3KH7yB62F3C6zaODxnXnqhPmJhGQC8yNGEO3w?= =?iso-8859-1?Q?=3D=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: AS2PR03MB10110.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3558229-a14a-40ba-93ba-08ddd0dcf80c X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Aug 2025 09:22:42.7687 (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: 4tlqLzpDlpN8ckIrqlWBS98Uuij3EKWnilJDXBtf6vzIDlnesUt33hDHqoPvkSPbN7SzLMmgBkgoJnnSbKyp1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB10032 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754040194711116600 Content-Type: text/plain; charset="utf-8" From: Edward Pickup This patch adds a Xen boot arguments that, if enabled, causes a call to existing code to scan pci devices enumerated by the firmware. This patch also makes an existing debug function viewable outside its translation unit, and uses this to dump the PCI devices found. The debug message is controlled by config DEBUG. Additionally, this patch modifies segment loading to ensure that PCI devices on other segments are properly found. This will be needed ahead of dom0less support for pci passthrough on arm. Signed-off-by: Luca Fancellu Signed-off-by: Edward Pickup Signed-off-by: Mykyta Poturai --- (cherry picked from commit bce463e1588a45e1bfdf59fc0d5f88b16604e439 from the downstream branch poc/pci-passthrough from https://gitlab.com/xen-project/people/bmarquis/xen-arm-poc.git) changes since cherry-pick: * s/always_inline/inline/ * replace additional kconfig option with config DEBUG Signed-off-by: Stewart Hildebrand --- docs/misc/xen-command-line.pandoc | 7 +++++++ xen/arch/arm/include/asm/pci.h | 11 +++++++++++ xen/arch/arm/pci/pci-host-common.c | 1 + xen/arch/arm/pci/pci.c | 26 ++++++++++++++++++++++++-- xen/drivers/passthrough/pci.c | 2 +- xen/include/xen/pci.h | 1 + 6 files changed, 45 insertions(+), 3 deletions(-) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line= .pandoc index 6865a61220..72c122ea32 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -2058,6 +2058,13 @@ This option can be specified more than once (up to 8= times at present). =20 Flag to enable or disable support for PCI passthrough =20 +### pci-scan (arm) +> `=3D ` + +> Default: `false` + +Flag to enable or disable Xen PCI scan at boot. + ### pcid (x86) > `=3D | xpti=3D` =20 diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h index 08ffcd4438..0afdc90de0 100644 --- a/xen/arch/arm/include/asm/pci.h +++ b/xen/arch/arm/include/asm/pci.h @@ -23,6 +23,7 @@ #define pci_to_dev(pcidev) (&(pcidev)->arch.dev) =20 extern bool pci_passthrough_enabled; +extern bool pci_scan_enabled; =20 struct rangeset; =20 @@ -128,6 +129,11 @@ static always_inline bool is_pci_passthrough_enabled(v= oid) return pci_passthrough_enabled; } =20 +static inline bool is_pci_scan_enabled(void) +{ + return pci_scan_enabled; +} + void arch_pci_init_pdev(struct pci_dev *pdev); =20 int pci_get_new_domain_nr(void); @@ -155,6 +161,11 @@ bool arch_pci_device_physdevop(void); =20 #else /*!CONFIG_HAS_PCI*/ =20 +static inline bool is_pci_scan_enabled(void) +{ + return false; +} + struct pci_dev; =20 static inline void arch_pci_init_pdev(struct pci_dev *pdev) {} diff --git a/xen/arch/arm/pci/pci-host-common.c b/xen/arch/arm/pci/pci-host= -common.c index 487c545f3a..d3481b05eb 100644 --- a/xen/arch/arm/pci/pci-host-common.c +++ b/xen/arch/arm/pci/pci-host-common.c @@ -284,6 +284,7 @@ pci_host_common_probe(struct dt_device_node *dev, } =20 pci_add_host_bridge(bridge); + pci_add_segment(bridge->segment); =20 return bridge; =20 diff --git a/xen/arch/arm/pci/pci.c b/xen/arch/arm/pci/pci.c index beb1f971fa..eea264db0e 100644 --- a/xen/arch/arm/pci/pci.c +++ b/xen/arch/arm/pci/pci.c @@ -91,8 +91,13 @@ bool arch_pci_device_physdevop(void) bool __read_mostly pci_passthrough_enabled; boolean_param("pci-passthrough", pci_passthrough_enabled); =20 +/* By default pci scan is disabled. */ +bool __read_mostly pci_scan_enabled; +boolean_param("pci-scan", pci_scan_enabled); + static int __init pci_init(void) { + int ret; /* * Enable PCI passthrough when has been enabled explicitly * (pci-passthrough=3Don). @@ -104,9 +109,26 @@ static int __init pci_init(void) panic("Could not initialize PCI segment 0\n"); =20 if ( acpi_disabled ) - return dt_pci_init(); + ret =3D dt_pci_init(); else - return acpi_pci_init(); + ret =3D acpi_pci_init(); + + if ( ret < 0 ) + return ret; + + if ( is_pci_scan_enabled() ) + { + ret =3D scan_pci_devices(); + + if ( ret < 0 ) + return ret; + +#ifdef DEBUG + dump_pci_devices('c'); +#endif + } + + return 0; } __initcall(pci_init); =20 diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 3edcfa8a04..fa03dafac7 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1384,7 +1384,7 @@ static int cf_check _dump_pci_devices(struct pci_seg = *pseg, void *arg) return 0; } =20 -static void cf_check dump_pci_devices(unsigned char ch) +void cf_check dump_pci_devices(unsigned char ch) { printk("=3D=3D=3D=3D PCI devices =3D=3D=3D=3D\n"); pcidevs_lock(); diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h index 130c2a8c1a..5c242278b9 100644 --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -217,6 +217,7 @@ static always_inline bool pcidevs_trylock(void) bool pci_known_segment(u16 seg); bool pci_device_detect(u16 seg, u8 bus, u8 dev, u8 func); int scan_pci_devices(void); +void dump_pci_devices(unsigned char ch); enum pdev_type pdev_type(u16 seg, u8 bus, u8 devfn); int find_upstream_bridge(u16 seg, u8 *bus, u8 *devfn, u8 *secbus); =20 --=20 2.34.1 From nobody Sat Feb 7 03:56:12 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=1754040191; cv=pass; d=zohomail.com; s=zohoarc; b=QWIYulFJ/lcljtIjkwQULAZ5Cxd4dOaWLraBCvyg7Px0Ni8ayk1fXpQY1SIQDD7UkwQ//C2xbFLIDGSsdpGtPWZsNpcPwbcOj+GzdMrwE/cNwShoXb1cixOuQPmAnADexRxyDpzkZ9WJLmzlAOWqhXx/TJo86TEmA91VM2aVQws= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754040191; 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=9zlQ9RsmD85LL2B66MlIxD5xfPP4ETtjgZvJ6aWslpI=; b=oBtnbJI/vDMcbpCJSoWOj4MNYengJtX2qC2+vunyvbzzZ6LLvbHiTBtiAoSfPPfGooRAOxqt4Vbscuec8r2lgu1RIgVPzUTKR0Rl//Uh/nxZrc7hFyJ4PFVvd7U7hAQ1k3hdHuSILBECRYwuTWeV2KLdnpJZxJVur8pdEQzzuWw= 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 1754040191839793.1792047467158; Fri, 1 Aug 2025 02:23:11 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1067004.1431990 (Exim 4.92) (envelope-from ) id 1uhlyW-0006mX-SA; Fri, 01 Aug 2025 09:22:52 +0000 Received: by outflank-mailman (output) from mailman id 1067004.1431990; Fri, 01 Aug 2025 09:22:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uhlyW-0006mQ-Ou; Fri, 01 Aug 2025 09:22:52 +0000 Received: by outflank-mailman (input) for mailman id 1067004; Fri, 01 Aug 2025 09:22:51 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uhlyV-0006Wd-KC for xen-devel@lists.xenproject.org; Fri, 01 Aug 2025 09:22:51 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 1825ef52-6eb9-11f0-b895-0df219b8e170; Fri, 01 Aug 2025 11:22:50 +0200 (CEST) Received: from AS2PR03MB10110.eurprd03.prod.outlook.com (2603:10a6:20b:57a::22) by VI1PR03MB10032.eurprd03.prod.outlook.com (2603:10a6:800:1c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.13; Fri, 1 Aug 2025 09:22:43 +0000 Received: from AS2PR03MB10110.eurprd03.prod.outlook.com ([fe80::52f0:1815:60c9:8873]) by AS2PR03MB10110.eurprd03.prod.outlook.com ([fe80::52f0:1815:60c9:8873%5]) with mapi id 15.20.8964.023; Fri, 1 Aug 2025 09:22:43 +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: 1825ef52-6eb9-11f0-b895-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=htXMl8gFRBj3SLuhJjO77sE76IParomrBpfrZ7mHESjhFCZA9V7gUFdD8oCam0Od2z3TDt/iin4LS5AcCsRu2AT6cDUmZGFTRfMLZr9rU++h3DofUNAyWpzZwbpOGuHegveWkE5vpszA0oyCdvXnbsEj5lwf1XKimpGmhlUtTLZLlLB92MIXg3RDYGJxt2fAVu91OQGMiHbephZTWMrFHIdARjMJrx4O1Ea10ONgeJKoN/FBu0YtmvmIrENn+Fo5AeN3BjsHy3cH5TsLm5XB6t/IS/i2VVbG+udbxDV9rJByokQH+ikg9HFL+ZaA9rkfRZj6uzEA/99kOQhSMf1dPQ== 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=9zlQ9RsmD85LL2B66MlIxD5xfPP4ETtjgZvJ6aWslpI=; b=Yla8oTQ6gxG5F1eGI1WSNlSoeROvIYyZKHGvB5ZruT1pZTVM0AA8uOpMUHMlST/p/lrx/JFEBrRBIQYU9IQ8X981g2aPGuzdzXP+qGPYvqor+PSKkvK1dIx2w915X2zkA14rZn7wtvF1nwY3Dybz8bUh9Jw/tGzJUm2se1/rk6ojcoPI2oOkUejyMHpdrxtcfm9DR+gzaDMBcdOhif7EJPboHPl4OvXnxgYDz+IcfG1bgUyHZl+NuUV78ic9AWW4SvusDo2L66d3fHFp1476bFGiAmCwyOlZXbdqVIF2qLySZoWHSxhyPvgeecplXMVTCnHiLcHQZpIxMftDzHJh9g== 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=9zlQ9RsmD85LL2B66MlIxD5xfPP4ETtjgZvJ6aWslpI=; b=GR9XyI4wY0mVAnrgLh6STd2ogC9v4+wvQRFl8u3RLCcHo1L9bRiGWWOnoulRVaLAP7ipoKRhacjJvm6vDfL3f6cLbuPm1DdqEULY/T7TJUK09sbvCIR/8VIyAdKgEbgmGh+KEXUROQFt1qYaeCKGax/Bt545kZmtoJYcOSWlk8cfofC950nr9SMIe3oGUqbh5jxs5eA5W6tuagbPkRC0EYAbnn8caDN93WlJq+2hYL2kkqSAQlbARAdilifsOURVsBQi/ERXqMr4JmVJoq8lQDVwXvOoaeIzxGNCOorX7xlKlSFo9aqnNMavPIbyBD8x74KK3j0qMl8waUI+mjF8/w== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Luca Fancellu , Jan Beulich , Andrew Cooper , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Anthony PERARD , Michal Orzel , Julien Grall , Stefano Stabellini , "Daniel P. Smith" , Mykyta Poturai Subject: [PATCH v1 2/3] xen/pci: modify pci_add_device to handle device add by Xen Thread-Topic: [PATCH v1 2/3] xen/pci: modify pci_add_device to handle device add by Xen Thread-Index: AQHcAsXVSnyGYKO2WEup/omKSt+BHQ== Date: Fri, 1 Aug 2025 09:22:43 +0000 Message-ID: <32cf834e95664805604b13d10bcaa857897f0890.1753968306.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: AS2PR03MB10110:EE_|VI1PR03MB10032:EE_ x-ms-office365-filtering-correlation-id: e0adab0a-389b-49e2-2b06-08ddd0dcf887 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?lzt0XJvpf5GNBAVYxzS8XNBUyLFEOTwfoHpQUVhxclER5ZqLkb8pu02XRl?= =?iso-8859-1?Q?L0ORC9V4g8aNPnsT8GSOYB9Wrbm4ntrzdNnzkNVjxl04l0Zgvm5xA4CK31?= =?iso-8859-1?Q?vMRWECCAtrVU7ygn+l3ZunOnzPqMhPCdYXjxozoVrJRUAE/KHjGI9YebL6?= =?iso-8859-1?Q?ciwVBvJC7Hm5q1r563gWa6XxtrYHyTVnrrvD+NN2Se0locup8YJyL2+X5n?= =?iso-8859-1?Q?Ixs+NbMTNj8HojjCrgsCLIjWjPpCJcnzp2qmxEZrSR5Jmo4HJ1L2tPX1kI?= =?iso-8859-1?Q?CdW2FQqkWCHdCH5Q2257fUx738BExELy581rJEr6tGN3zUXR+YQVCbwboL?= =?iso-8859-1?Q?S+YM7pgh/rBN7Ul2wbCn5nxZI28kv0aLXZVtkfNxn0QGK2nS7Vffevd2Ii?= =?iso-8859-1?Q?sl6PNcCagCEXUXgVpYk2OCTJgMsu8dJRbzFfH77+CcOIUnBSuIUeRlQTmp?= =?iso-8859-1?Q?wW5RCCSKbznmvPWoZSTd4FSvPPPSLkeBvlJ030MO4TRzKLKcUzOn/ieJ/S?= =?iso-8859-1?Q?HBqMzEQkEaF+MDE8fgrAQNXPVgMucyzDb3EdVeGjLmaVZwIiM5Z6Spa+FV?= =?iso-8859-1?Q?ud8MKoc1tVY9ARN4a/dMKfL8uZp3Ch39aCW2Z777hq9DrbcTmt70b65OjE?= =?iso-8859-1?Q?3v9UweWAXVuVTNnObE41cRDida4gclOmr30xKrgWWwTsV15cSH9F4PFEM2?= =?iso-8859-1?Q?wTxz+yBgIkgBBGZ94PjWIZoSB3vfKmTu8cX4JDqhCobT6SwnFvYw/hSn5T?= =?iso-8859-1?Q?0XGBnyZ1k7qQP/AM2pMCT7nKulh5PSVgOpGg6XmAecxqXO+ri6DhQEDCp2?= =?iso-8859-1?Q?f+btlxWa9XZflx25osfqWS5DR6ZAQ9zMFH1kWV1yN9h2PULHrZt7lMfyTt?= =?iso-8859-1?Q?S0+vv8c+ahSAMw03lZflQDs70w2m2bO7XPuDeDWIVj9ciKzOz52Bp2AkWQ?= =?iso-8859-1?Q?4tB38OiDE+g9uoksCG8fktljryjLtMhGZK/O4d2kIPHVUSvBLt5cCWDOxi?= =?iso-8859-1?Q?DnMhxxeandxNM+E0jXYj++VIydbL9kFzRZlzEAWxzV92G/eVhiUUyu1X7I?= =?iso-8859-1?Q?Z9wkjx9LpLA4KdZsP3ECtv9CgHzhtbv/QIjFJhLcvf0FwfNZIF0I7rqzG/?= =?iso-8859-1?Q?xdV84BJpyV8tVtc4eKmmnvYmOEcOjzXPwK7cIlT+plmjhNwy20iUsgLPPT?= =?iso-8859-1?Q?Qc0VlzDN0zLD/pgthIz9VxvGcoiY8mINiKyhsmzbGROIJBT8VuKWgh32nv?= =?iso-8859-1?Q?1z8Dr3AMw502cYiVfyx0MtyeG4fXqIVYwd73b+3cNgSNVf4Id5lf95lTrI?= =?iso-8859-1?Q?RB3/gEI5vXRiNiVKvZz1b0yu7KBYA1RGzU/aSwfejfZ73znPSMla1aIhjo?= =?iso-8859-1?Q?mV9HASUxXVPwQaJ2GIKGX1M+PnQQvcDRK4+BZmp0ICEZNRD7k2fDZ6t1pi?= =?iso-8859-1?Q?HiQ/yFr/Wp78eI9h4HY6uw39wboWYSAE1Av9EES4kBEcTtXR4VBaY58lLe?= =?iso-8859-1?Q?EFM67FuQnZXixIxWniz1Jf0n/0J0XmddAgY52sNpU/EjTD+AcXFqo7Tgtp?= =?iso-8859-1?Q?bIoqtlw=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB10110.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?LKKh5X2TOAZqS97An7R1JDl3zU8JyvH91rsjWC5P8fFzuZB9wyY0/Q2pjI?= =?iso-8859-1?Q?9SpYH4j6dsmIAVO4VVqwsxonEUnzY2QsaATYc4G60thkbEhGK+V6GFRBmT?= =?iso-8859-1?Q?tiaPgl3UbiD8hjn0Hf8S3cLeQ6JtSp/si9d+Imwk6em1547K65Zh6witPR?= =?iso-8859-1?Q?0E+QCdvL8w0lTyo8JgevgcZA2roAMbymgx6okglN9nkx4/nuy+ZNbZf0PV?= =?iso-8859-1?Q?Dpko7g6pduOBKtoh/JrlVS94V3jWkBeu2wcLOuQ+g8ztvm2uhSaeb41T3p?= =?iso-8859-1?Q?Hfbj8ApwhIU+ZRW/BpHCbkjkumvV2OmT3JGsGVglBIZsuj+/IHNMgD4Bf+?= =?iso-8859-1?Q?2iPuSgMtdWau7Obcq8aDsjgkZ+1Z+wfSgE9GPWlTj31hsVyt+E0VDdnauV?= =?iso-8859-1?Q?awv5L3aErwsSS6e2kEWwDpNYixXbfVsLgm5ey6z20qOUN1h41kkcqpKl+s?= =?iso-8859-1?Q?Zv9QgffdPNVg+n40jcxWkvqdfp4E18a5CE12SJ/V3NKFWjctW+6OELC3Pg?= =?iso-8859-1?Q?2DDlsrS0NC9rYuc6rvgCCb0x2JeZj32jwbs8YEH/OVUhS3PumRE0zT0Hhe?= =?iso-8859-1?Q?NERPzi6R5L2BUBFjB8PU8UcCRlzHolwYvybq2f2FS/o/3cOy7Qh4yCYOLl?= =?iso-8859-1?Q?DrlGVHlexNCw61sU9v5u/T6HrAc3xyxip+30a3GwDzyuDVlgyNF1aQWG8A?= =?iso-8859-1?Q?sir5+BRQpVnjgZtpT6yMfsG3jK7Jbsw66qVbsOlfAjpBGC5sFjnmPi0HFc?= =?iso-8859-1?Q?6md9vNKiGo2lmYfx8gCPzpDmD/b9F66f4IaAl1JMU4hQWwKXUhWoYCfDyQ?= =?iso-8859-1?Q?9wSY0PzoKmA379EhI7r99zBn8PwpkIymbDjoGjxef87YbPwhkUAUSvavvq?= =?iso-8859-1?Q?i61cMffoveGNTahqntzsDJqmfK2HyBfV6VgDFK/2W/fiMo8Y/vnV2jSiPK?= =?iso-8859-1?Q?cU2UNfri7DkL3z/hBH6zxb83ZT4nv3J4+YBMFIb+Fy2+md/DgAE6FoQY/F?= =?iso-8859-1?Q?ZUPI/qhR0fAHmZbjw8RVoUI4Ndi9XDl9T5awznwD3MyUAjVcgQBvhwcddh?= =?iso-8859-1?Q?t9o+XjwRGQAnrEjdBheCpGbI8AYgPJKUUXVMIpn3gQb7rjWBaF+L2SmH66?= =?iso-8859-1?Q?ArSvym/aRoRCGqhhGvsZS6nWtPIyUPW3WKNE/kul4Al21IH5HPnuvVF7ws?= =?iso-8859-1?Q?Fk5ANpJoyCbk/Yc6bhjvqp2XjlsVFdHSsKdbofvnlxNakdGtuYGT/qqqzz?= =?iso-8859-1?Q?oF/CtCm6/IgvfB+MmdZYcKzWRVo/hMzwhTm8NcG4ZiszNo8QIMaBTmqerZ?= =?iso-8859-1?Q?qP8Dv8QUhfXCW6T0XqT0MRsDldUWY9YyA4Jwt+++xOebp4nEVhrbM3E00d?= =?iso-8859-1?Q?KwZxjF1MtvHyTrKa2vM+thVTC9m7F/TkgZRes3TEI9VwmWytUmimJ/Fqhj?= =?iso-8859-1?Q?fjH97maCAWZcLV7jIyKaoU7eRIOzSlstChduoTq9IM32db1y2LEeScvUSd?= =?iso-8859-1?Q?jXVO8Ly/C0+7mbJMt/pokT3E13wXDf8VisKEQNc6Gxf30wGAqoDJkvXLv1?= =?iso-8859-1?Q?Apum4gz4XYMkZAN0ugyF/TyT3N9y4oBDjeLjswGigmehqrbaRuMewdrzM1?= =?iso-8859-1?Q?oq0SIGS7jOWSUZrXwj+J0jicLUAnD6F+sFpdpIxM0tUOjefv83D/KL+Q?= =?iso-8859-1?Q?=3D=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: AS2PR03MB10110.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0adab0a-389b-49e2-2b06-08ddd0dcf887 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Aug 2025 09:22:43.2717 (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: dbZZQK/UQt/EQAnTtI2KXvP5z4n7WFq53WAoQ49sX86/4cf0pSOOiVSrbAQ1wLrU/uuw5rMCougVGu/kt6nZiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB10032 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754040195338124100 Content-Type: text/plain; charset="utf-8" From: Luca Fancellu Currently pci_add_device is called from hypercalls requested by Dom0 to add pci devices and when the device has no domain associated with it, it is assumed that hardware_domain is the owner. On the dom0less scenario, the enumeration is performed by the firmware and Xen at boot time might want to assign some pci devices to guests, so it has to firstly add the device and then assign it to the final guest. Modify pci_add_device to have the owner domain passed as a parameter to the function, so that when it is called from the hypercall the owner would be the hardware domain, otherwise when Xen is calling it, it would be another domain since hw domain could not be there (dom0less guests without Dom0 use case). In pci_add_device there is a call to xsm that doesn't consider the requester of the function to be Xen itself, so add a check to skip the call if the owner domain is dom_io, since it means the call is coming directly from Xen. Signed-off-by: Luca Fancellu Signed-off-by: Mykyta Poturai --- (cherry picked from commit f0c85d9043f7c9402e85b73361c8a13c683428ca from the downstream branch poc/pci-passthrough from https://gitlab.com/xen-project/people/bmarquis/xen-arm-poc.git) changes since cherry-pick: * s/hardware_domain/d/ in some write_unlock calls in xen/drivers/passthroug= h/pci.c --- xen/arch/x86/physdev.c | 9 ++++----- xen/drivers/passthrough/pci.c | 32 ++++++++++++++++++++------------ xen/drivers/pci/physdev.c | 3 ++- xen/include/xen/pci.h | 2 +- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c index 4dfa1c0191..9e894ce665 100644 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -446,8 +446,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) if ( copy_from_guest(&manage_pci, arg, 1) !=3D 0 ) break; =20 - ret =3D pci_add_device(0, manage_pci.bus, manage_pci.devfn, - NULL, NUMA_NO_NODE); + ret =3D pci_add_device(hardware_domain, 0, manage_pci.bus, + manage_pci.devfn, NULL, NUMA_NO_NODE); break; } =20 @@ -477,9 +477,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) pdev_info.is_virtfn =3D manage_pci_ext.is_virtfn; pdev_info.physfn.bus =3D manage_pci_ext.physfn.bus; pdev_info.physfn.devfn =3D manage_pci_ext.physfn.devfn; - ret =3D pci_add_device(0, manage_pci_ext.bus, - manage_pci_ext.devfn, - &pdev_info, NUMA_NO_NODE); + ret =3D pci_add_device(hardware_domain, 0, manage_pci_ext.bus, + manage_pci_ext.devfn, &pdev_info, NUMA_NO_NOD= E); break; } =20 diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index fa03dafac7..49a39d69db 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -654,7 +654,7 @@ unsigned int pci_size_mem_bar(pci_sbdf_t sbdf, unsigned= int pos, return is64bits ? 2 : 1; } =20 -int pci_add_device(u16 seg, u8 bus, u8 devfn, +int pci_add_device(struct domain *d, u16 seg, u8 bus, u8 devfn, const struct pci_dev_info *info, nodeid_t node) { struct pci_seg *pseg; @@ -672,9 +672,12 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn, else type =3D "device"; =20 - ret =3D xsm_resource_plug_pci(XSM_PRIV, (seg << 16) | (bus << 8) | dev= fn); - if ( ret ) - return ret; + if ( d !=3D dom_io ) + { + ret =3D xsm_resource_plug_pci(XSM_PRIV, (seg << 16) | (bus << 8) |= devfn); + if ( ret ) + return ret; + } =20 ret =3D -ENOMEM; =20 @@ -767,9 +770,9 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn, ret =3D 0; if ( !pdev->domain ) { - pdev->domain =3D hardware_domain; - write_lock(&hardware_domain->pci_lock); - list_add(&pdev->domain_list, &hardware_domain->pdev_list); + pdev->domain =3D d; + write_lock(&d->pci_lock); + list_add(&pdev->domain_list, &pdev->domain->pdev_list); =20 /* * For devices not discovered by Xen during boot, add vPCI handlers @@ -779,25 +782,30 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn, if ( ret ) { list_del(&pdev->domain_list); - write_unlock(&hardware_domain->pci_lock); + write_unlock(&d->pci_lock); pdev->domain =3D NULL; printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret); goto out; } - write_unlock(&hardware_domain->pci_lock); + write_unlock(&d->pci_lock); ret =3D iommu_add_device(pdev); if ( ret ) { - write_lock(&hardware_domain->pci_lock); + write_lock(&d->pci_lock); vpci_deassign_device(pdev); list_del(&pdev->domain_list); - write_unlock(&hardware_domain->pci_lock); + write_unlock(&d->pci_lock); pdev->domain =3D NULL; goto out; } } - else + else if ( pdev->domain =3D=3D d ) iommu_enable_device(pdev); + else + { + ret =3D -EINVAL; + goto out; + } =20 pci_enable_acs(pdev); =20 diff --git a/xen/drivers/pci/physdev.c b/xen/drivers/pci/physdev.c index d46501b884..1b59bf1246 100644 --- a/xen/drivers/pci/physdev.c +++ b/xen/drivers/pci/physdev.c @@ -50,7 +50,8 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void= ) arg) } #endif =20 - ret =3D pci_add_device(add.seg, add.bus, add.devfn, &pdev_info, no= de); + ret =3D pci_add_device(hardware_domain, add.seg, add.bus, add.devf= n, + &pdev_info, node); break; } =20 diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h index 5c242278b9..77a44aea70 100644 --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -227,7 +227,7 @@ void setup_hwdom_pci_devices(struct domain *d, int pci_release_devices(struct domain *d); int pci_add_segment(u16 seg); const unsigned long *pci_get_ro_map(u16 seg); -int pci_add_device(u16 seg, u8 bus, u8 devfn, +int pci_add_device(struct domain *d, u16 seg, u8 bus, u8 devfn, const struct pci_dev_info *info, nodeid_t node); int pci_remove_device(u16 seg, u8 bus, u8 devfn); int pci_ro_device(int seg, int bus, int devfn); --=20 2.34.1 From nobody Sat Feb 7 03:56:12 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=1754040195; cv=pass; d=zohomail.com; s=zohoarc; b=XGpSYybrz7j10HhJJ5G2GJHfCR7HSa4vX3Nvltn675/qusZPaEwZwFu9fG012ETte4KCBRfso1hblevYI5+ADosXOJBjZRmhebiQTou8cuJBWPTRaZdImtqDlYzFkfUkAcFoq+nHvL8vg3QGaEZlhidgzfyx3/ADr/NU9hydGj0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754040195; 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=e64OALVPA2DRTruFZiGWQJ7H25VJryTEDwAJlln/x14=; b=JdYv1Rl3EFHqcJRrp9fZX6ze72jOV72AKralcjhb2NqzO2yOrCOZGarkOPc4H7LvOYCXcScGyetTc9aW312pKlFXTNLgEiQoFOp7dxIZ6oPgM8ElMxXMBVlaGtoR+ruHtbXjs9m1zK8NrTKQpQl699Lyx3+gJysKzUIGvW7Lbfc= 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 1754040195163811.4508985300337; Fri, 1 Aug 2025 02:23:15 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1067005.1432000 (Exim 4.92) (envelope-from ) id 1uhlyY-00071O-7V; Fri, 01 Aug 2025 09:22:54 +0000 Received: by outflank-mailman (output) from mailman id 1067005.1432000; Fri, 01 Aug 2025 09:22:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uhlyY-00071F-3s; Fri, 01 Aug 2025 09:22:54 +0000 Received: by outflank-mailman (input) for mailman id 1067005; Fri, 01 Aug 2025 09:22:53 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uhlyX-0006Wd-2T for xen-devel@lists.xenproject.org; Fri, 01 Aug 2025 09:22:53 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 190dc2da-6eb9-11f0-b895-0df219b8e170; Fri, 01 Aug 2025 11:22:51 +0200 (CEST) Received: from AS2PR03MB10110.eurprd03.prod.outlook.com (2603:10a6:20b:57a::22) by VI1PR03MB10032.eurprd03.prod.outlook.com (2603:10a6:800:1c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.13; Fri, 1 Aug 2025 09:22:45 +0000 Received: from AS2PR03MB10110.eurprd03.prod.outlook.com ([fe80::52f0:1815:60c9:8873]) by AS2PR03MB10110.eurprd03.prod.outlook.com ([fe80::52f0:1815:60c9:8873%5]) with mapi id 15.20.8964.023; Fri, 1 Aug 2025 09:22:44 +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: 190dc2da-6eb9-11f0-b895-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nxt0oiV0uEVZqmxLq8xkIOpJF1b4v2sv9ABS1ORdNUX+P7VcC1485jEMYgY+QA1W/glyUIu4Vz7/0pKWO5j1vsKr9MHpMEQEP3UX6SGKqCXi97sDXX3tqw786v0+smqWw7hzY/pyViRmDW2R2R0V9DYwJbTaLRJwDDxLGR8LqqTa7hUFk9yVC0ZmxRIVBb62WdI/65phDzdgB51QRrvJLSsFXWHPGoHokLEKysVZtUWeY6pEcU2xS7V+UHTA0NdhvZr0fe1GYrlVoRmlMC036rWbGM89MSJu29fQuFQZSPiz5od0+XjBIFj8z4zND4pauGrRGcnXZwPhBcFpqtXgbg== 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=e64OALVPA2DRTruFZiGWQJ7H25VJryTEDwAJlln/x14=; b=SiHWIbr+BAwMUY+XOfyhWOcCMw4SxuUtMtdFKG0JVe4BlayMAbRvfOHHVDAJU+cMapu6zkhOaWNZ4vrkQ+Ea6UyHR4q17+hyJyczvI/0bMnN9M8it4MdXyylOYgrdM6mnPsMTvM5+XzY2uAA/WTzthCpbjlSpGMWFuW+l4MASkzAuGYuXOH7UpJrka+g0oEwDUfujmX4wkASnLIoj1QNlQTWjwngPkWF1UZwqLblb/ihmxEy8VCd8f+xKxCy+ux1GkAIpQhnS+pgOZjQ5uVQTkROxpV6a72dkKaJIObCwxRzOuvZcA/7+t9+mug0lR7lRyD+th1oObUTb41pw+VgTQ== 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=e64OALVPA2DRTruFZiGWQJ7H25VJryTEDwAJlln/x14=; b=H3RZZT/GXAe3uLdb0BTpCHCcV45v9Zs7aGpdMQvaFmms3VtMFGjtJtExEk47u99ztBDbp89cYNwixnwF8fdiu1AYIp6OHsoistCuqPB6GhtDr0KilIGMitI8iiiqIFv5WJvSnrgvWn+vZnWZcgRVCHvF1bU0ZYBvxz7jSD6SbGgIDsJJ5TAbuKQwCxilOARjLK0L1ax0tkCqIZhKvBLTuMdV4IE+ebaj2lHFBhYuoQ/ur9GfTf1Ztb/grNTSj490I9E8s9RNWyhYOHDqdUZh9qTWt0a1nOHFkVJ9+QSvYnzhaIgKyU12rsG7B6VrMTOpSYnncMJ6ldWegt13bnL/AQ== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Luca Fancellu , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Mykyta Poturai Subject: [PATCH v1 3/3] xen/pci: add discovered PCI device at boot Thread-Topic: [PATCH v1 3/3] xen/pci: add discovered PCI device at boot Thread-Index: AQHcAsXVA3qngHqyPEewy8MzwqQRRg== Date: Fri, 1 Aug 2025 09:22:43 +0000 Message-ID: <5097b76acf0a5c64cc78522f6af6233370c948e6.1753968306.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: AS2PR03MB10110:EE_|VI1PR03MB10032:EE_ x-ms-office365-filtering-correlation-id: 519d7477-261b-45d8-8870-08ddd0dcf8d1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?BiBTUu918+4Z+i13Sd9mo9Taend7nlnBZ6N5eu5dYtNGM5sdKHZeregX9d?= =?iso-8859-1?Q?uRvXCKs8GScUOdJxHk+ZEX1XmeA+r7+V38PHdIycToWrMBGlmr24JHyDvI?= =?iso-8859-1?Q?FK1I2VG4LBIinTwF6PtdzGRh4/U9KrQUP9jq0eCTjxsHWKgadPjWAFYnXv?= =?iso-8859-1?Q?9yGszImv/Y0Doo0GtpHn4RZhBEziWPlqz6KKNZrgZTEOrVmphwSj7AgrTV?= =?iso-8859-1?Q?wPhSqjTnkJTgXsFeHELT52I7EX2nj0sMAW1wuiMay5mQSj50ojR8fs0ALS?= =?iso-8859-1?Q?HlDcbK+BoXDu0iI0lvmfmXjwz7fbmqtW1MmZIR3ORhQNX+882wYFjDAv7+?= =?iso-8859-1?Q?VnDFvVFMV8k7xIQm4v2hAu/I1T52BnTg2DZZkujPAu5TYtB5tvcYOMg0cw?= =?iso-8859-1?Q?gebaBCxto3uS0hw1TsDANE5BcsSZNJ2bFpbOQHCChbGrpvm1uCm7nZK6AB?= =?iso-8859-1?Q?X3uWOEdf+KJn1Xn4b1ll91OQmgQkWkccuAj//RvdcUKBizTgZlTLiS3hHQ?= =?iso-8859-1?Q?YQWVVPnFlnJOlia7iZ1qr1Pes5DP7GhlKq8lPZNOc9/yuJBEZnOBS5t6L4?= =?iso-8859-1?Q?5PEd55m8SSz45MtvburgOt1eTqG5Le4K0Ty4fD2djIjPUwX5rQr/4+zEUf?= =?iso-8859-1?Q?c8lxfwKE+M4GFxbBl0DNNOCD8lFQGrJEbdBobhdDlJQv3azLyK566n8APs?= =?iso-8859-1?Q?RYSVUOjUTJPzWkxNKzzjg3N/wu8r8vY3hpVLhDDvNPMoPIZgzIuVNiVMVy?= =?iso-8859-1?Q?5e3AL9sQ+4Rol6qWULPhPYtY8NgK6aBXRES0gHAUikX1S33pVvdle2kwN3?= =?iso-8859-1?Q?WvTJtkhfDvn4LEqV9Vlavzl8rtHfDmYY5DGO6f4d8caK4b5cZad4L6z/jl?= =?iso-8859-1?Q?A+Sdk5rZ4OYWlqBEvoWjjdTMRCv6X0vPl3q95IaGhYFm2/5ohEjiV/MROw?= =?iso-8859-1?Q?3zo0fVPKEweQL284v7OkwOzcsHDjmZXg9gCvaHUtKzhXkfrsxwJ4a4GcT6?= =?iso-8859-1?Q?ynbpMjHGMaXGdKmdUjpIGDtw98i2VWsxKq0heRUnqgu8Uelq615BmTmWeR?= =?iso-8859-1?Q?qYMLS/OGivMatycdr/3RjcPEBGk75HKTszPS6yuAT9axFDkFrAJMu/zehg?= =?iso-8859-1?Q?4PEXoKNSo/FNymiKFxNtD6uYSSIazf2iVqmwoXQ887fZK+IbcpB7JZo+td?= =?iso-8859-1?Q?VFjD6Wr9sgd9yAeH+9yEG0lt6PNc6oGAkesl2B9x2hLArqBxgcc1zN6CD6?= =?iso-8859-1?Q?+8qURqdet5QB7h0SvoLztIjm0vNYcC3hK5CpsBTz8gGARIgiyRZUgmd4zQ?= =?iso-8859-1?Q?Zl/4Z0xAvrtEliG2RaFkIgj4dbJLWPNO0tPFes+IgQ7ulfWL6Nu6Tjz/0k?= =?iso-8859-1?Q?NqU6PM12ronPe0S1EHyCf4BYDtVeftFWKnVdnLBG25i8AGmH2ZZDBMeSPD?= =?iso-8859-1?Q?6k+/rThcrF7Tr15ASzRUjZTslti0YkJP2Y1F+QFjaT/btejOp0AnvozNTG?= =?iso-8859-1?Q?TY3NlpsRrNxBIz3PteFdbiUGo1692irxodFkis6dsAfT18cbuNYLYP00LJ?= =?iso-8859-1?Q?Hx91dTg=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB10110.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?9RzHnKVxpHdPkNIJ6mgfYJKUREQiohuo73GdIoDf5oe6bQVfBxuhtO1HtO?= =?iso-8859-1?Q?H2Jfz3P+eXX7tV1bDmNsBKx4x3cnTY4POwWz4VWWbHEuVeoArXgH+0WTfG?= =?iso-8859-1?Q?kaYrWvhhiiLdhGEV9LVYWfOzoMekeU4QGuL50/RkacQCsaoZTei6P0XFAU?= =?iso-8859-1?Q?veIC0utb31pGI9WEqsmQ1efCEEGAYYrJgxA5pVXDN3HMPvGcXGi5cLGnaI?= =?iso-8859-1?Q?l1xvOpZUolpg9GTJFyUw42xfyu12yvdPzmIV7Sbs2q6xQCoN2jjfpgZ3Jt?= =?iso-8859-1?Q?PfHLBPxBGtuyBykJHAvrve/aYGEqBDz4rjOvn/zigfg0vhRsQAauon3LtE?= =?iso-8859-1?Q?xuyMpZY3MzDseXSZD4mmPFxb+LLS+nOEjC0DQoXW3R4s/U+hcDIxgBFxjF?= =?iso-8859-1?Q?umkayQhf3up0iAhJDnj+4fhlGP/4A+yqgA5KAnGnvfH/SERNNPUbes/p29?= =?iso-8859-1?Q?QtqHSmRpOIownQLmj8/fl7ZD/Igaarb51z0tGhzgyiY0opOFWAy7rVBQ65?= =?iso-8859-1?Q?iPqZ1vSz6Hsj142SRXmRoeEm/Lz2cWN1FYgcsSoEl5aoskeuhDZKpdK44b?= =?iso-8859-1?Q?ISQa5ZuB0DxQ+E0u4xzypt97qwRvPy5VqIHaSTbFX2D+1b6SB/EEuU0Mcc?= =?iso-8859-1?Q?IwRp9wRq6U4bn7u+NPZC976UyE2IxiR9/3OuXLFoVVL0Hm0H/LzDMTyy95?= =?iso-8859-1?Q?PyxLwQ24MwB6hM0e1dyjJYoclPyeqR11IpSDdQ0f3OOAE4ZK705ErTbJZf?= =?iso-8859-1?Q?HWAuNoTk4tx1MIlVNjU2bzoFsU+Jes2HpNy3Qbnp+6veHVsx3/8dKxfK0t?= =?iso-8859-1?Q?4po1e3Irf22Q9e+hWWwQSYlZ2gEv+c5hhcA+IPSTL1L1LfvdRZpwMJvrwS?= =?iso-8859-1?Q?+sL7iQ86pXJyH3boFYW8Sb3aQYHsy4CgtRXXLGyFkDkhZMC/9ADhw0KAAW?= =?iso-8859-1?Q?CdnJtjr+cx3TzFYSSwCPyWCyV1LetN8IOkAwUSZRei6zCXZzg6w5ucSA72?= =?iso-8859-1?Q?hiAKTdZgY3Pq9t2wBWUrYAR+BtyRNEZG7/5hnrA/TrZCcn9M7+HBUY6yx7?= =?iso-8859-1?Q?sYbf1f3kgFWxubpogd4GukkG/D45b7tccwhl8vZwz6voy+LOjradEx4JqI?= =?iso-8859-1?Q?Z2zghZqbcHNpuSWSts5ITqNo3qGz5aoTOAKvgIP8kyZAJLPmob6k8tmhQ6?= =?iso-8859-1?Q?A35UO6sht/KDUInSByppZAuIyuixtNdYchnRWntsZ9Ty1HdZhYi6O1BTpu?= =?iso-8859-1?Q?p7HDNsnyQ4MTYRrr+YkcsovYplcaUlXNWaayjnLkr8QB8WyIrE4xDry9Zg?= =?iso-8859-1?Q?GrF/s92Smt5VR4NF6kNcAf/r2dI/51lzme10O8ygteg1SI4B/twvMAywwT?= =?iso-8859-1?Q?C8XYg5wlKALR67HuUw+jB7InXHZMFjQawdTSF/yw1/UxyvbXJ3aI5Rktit?= =?iso-8859-1?Q?mNligUVkpCQGp6Ebe6xfbvWQc091yWXWIN6Lx9u4sCGBXgdCEy2D8pQ1rA?= =?iso-8859-1?Q?IZ2+OCb9BzsSwvGDz+oTwlbuP2AlaJCTXNXfKrkxTQbo67l+l8IlfXjJhz?= =?iso-8859-1?Q?OAGWGFOif9GiDh/Z0RCRNzHmVnOGYdF6BKU1GdwrvfMp5wOXWqBRHmmP0V?= =?iso-8859-1?Q?SYRMUlaSpvyzbm9T8tvTow2L3ODmDBqUTS2xDemrgpsUwr4SxAv7VJOQ?= =?iso-8859-1?Q?=3D=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: AS2PR03MB10110.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 519d7477-261b-45d8-8870-08ddd0dcf8d1 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Aug 2025 09:22:43.6923 (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: xuQ6ahSRdINkBeeN5rYgu6evqCSZbfF6OCzLGHm387PKm/GeLXSu8Quv8rcrBcp3BSzsrSd1Dmx+7sb1t5KYvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB10032 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754040196335116600 Content-Type: text/plain; charset="utf-8" From: Luca Fancellu Create add_discovered_pci_devices function that calls pci_device_add on every PCI device discovered. The devices will be added to dom_io so that they can be assigned later to other domains. Signed-off-by: Luca Fancellu Signed-off-by: Mykyta Poturai --- (cherry picked from commit eff51e50021b75f5a50533f7de681b2ce044f5bd from the downstream branch poc/pci-passthrough from https://gitlab.com/xen-project/people/bmarquis/xen-arm-poc.git) --- xen/arch/arm/pci/pci.c | 1 + xen/drivers/passthrough/pci.c | 28 ++++++++++++++++++++++++++++ xen/include/xen/pci.h | 1 + 3 files changed, 30 insertions(+) diff --git a/xen/arch/arm/pci/pci.c b/xen/arch/arm/pci/pci.c index eea264db0e..b2426878ee 100644 --- a/xen/arch/arm/pci/pci.c +++ b/xen/arch/arm/pci/pci.c @@ -123,6 +123,7 @@ static int __init pci_init(void) if ( ret < 0 ) return ret; =20 + add_discovered_pci_devices(); #ifdef DEBUG dump_pci_devices('c'); #endif diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 49a39d69db..d6f1c78701 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1180,6 +1180,34 @@ int __init scan_pci_devices(void) return ret; } =20 +static int __init _add_discovered_pci_devices(struct pci_seg *pseg, void *= arg) +{ + struct pci_dev *pdev; + int ret =3D 0; + + list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) + { + ret =3D pci_add_device(dom_io, pdev->seg, pdev->bus, pdev->devfn, = NULL, + NUMA_NO_NODE); + if ( ret < 0 ) + { + printk(XENLOG_ERR + "%pp: Failure adding the discovered pci device (Error %= d)\n", + &pdev->sbdf, ret); + break; + } + } + + return ret; +} + +void __init add_discovered_pci_devices(void) +{ + pcidevs_lock(); + pci_segments_iterate(_add_discovered_pci_devices, NULL); + pcidevs_unlock(); +} + struct setup_hwdom { struct domain *d; int (*handler)(uint8_t devfn, struct pci_dev *pdev); diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h index 77a44aea70..81c0c23604 100644 --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -217,6 +217,7 @@ static always_inline bool pcidevs_trylock(void) bool pci_known_segment(u16 seg); bool pci_device_detect(u16 seg, u8 bus, u8 dev, u8 func); int scan_pci_devices(void); +void add_discovered_pci_devices(void); void dump_pci_devices(unsigned char ch); enum pdev_type pdev_type(u16 seg, u8 bus, u8 devfn); int find_upstream_bridge(u16 seg, u8 *bus, u8 *devfn, u8 *secbus); --=20 2.34.1