From patchwork Mon Feb 10 10:30:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mykyta Poturai X-Patchwork-Id: 13967583 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CD777C021A5 for ; Mon, 10 Feb 2025 10:31:11 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.884567.1294339 (Exim 4.92) (envelope-from ) id 1thR4B-0006DD-DP; Mon, 10 Feb 2025 10:31:03 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 884567.1294339; Mon, 10 Feb 2025 10:31:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1thR4A-0006Au-Vn; Mon, 10 Feb 2025 10:31:02 +0000 Received: by outflank-mailman (input) for mailman id 884567; Mon, 10 Feb 2025 10:31:01 +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 1thR49-0004Pl-58 for xen-devel@lists.xenproject.org; Mon, 10 Feb 2025 10:31:01 +0000 Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on20614.outbound.protection.outlook.com [2a01:111:f403:2607::614]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 1e41064f-e79a-11ef-a075-877d107080fb; Mon, 10 Feb 2025 11:30:59 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS2PR03MB8977.eurprd03.prod.outlook.com (2603:10a6:20b:5f5::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.15; Mon, 10 Feb 2025 10:30:46 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::35ac:8893:c31c:b971]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::35ac:8893:c31c:b971%3]) with mapi id 15.20.8422.012; Mon, 10 Feb 2025 10:30:46 +0000 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: 1e41064f-e79a-11ef-a075-877d107080fb ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aujIjaarDMYd8kRjgohxSKVfROutdhGgydLZpUDSVRQzSi+rGhc+27FRIUg8IBQIkKW3DQeol1H7SkzHuFEhkjJA/lhdOmy0s6jZJaUmTleOphNKkUsZDsxyt1zxAPrRG5D2A4hlCu1fq3/5nBkDRsUWTUIg3hCCm+swPdIfmRHE8zWE1p1mWSRLurpXDZgQLzVfpgDN9ayfbvv5yfikIaMc2FCsMwOGQb4XcrXEoGueNEEKCczxfGye34/3psWv8XeYYTXXXhWSX23cEgxiD3KvuGwiALjPnYtyhaCSojT48c/dDJmNjDKu0hhafkbgDaYfNKdj5aAOOhKnKZq1IQ== 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=FJzeBG/QJ7V8TMJ6kfZEM24ay9nElFXvR2jyFj4qnzE=; b=KLa0n3Q3Ugw4Rn5xpqmNheMJYygW/PSj/7mZRSj8JydbI5DSyN3KbVoCopVpbSt1yC6sSxMD6f6GVSyxnTsm0OBlYZgMt2y0lZis+Yzemer3FixAoUo3x+P/xamzAUUziaAM/75NnWT/B1acg0nHVRdP+FtOH066l/Jl/GjubFr6dZosQyeCIsfIqdNos6Ohthschyk7hxdlutHnQCMxxP83/Ni54HPozO6iizt0U+hrLWMZmdNNHWUhQXzBfgMy0grpwNCfxZ1FxEYqdHgaZ95zWkpxO87nQtAFClpJVELgMKmN45IPKC5bzksSfrt7JapTtZWTNHFhmhjtS5Q7AQ== 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=FJzeBG/QJ7V8TMJ6kfZEM24ay9nElFXvR2jyFj4qnzE=; b=HRml9QN6s60H9bJa7YtpXkK5mj7gDPUKaKSeImYM/7g1Sv4wYMFz6aC/oyEnp0F2hHKYm+SQjLQdk+D/gvXUQOLEIx3iiHFPGdNn22aCZ/QKvbvAB4vJEC+r9JRXUJltXrUVNNgwvt5b0hRlRuOtETeZ9UGJwydk0SF5ibkrOU0OZXWqQH5LVF08FojAFIppFIdB2YCnVuvJ/ag0mSHLU3TRP+M9sNj2uFfQTgIlOPAWqTVLqQ9p7GLdCW+gqi1j5t92Uho2C/QWGPPwIG2lRWkvKSPkafTD2XxSO/Bj9Ya452jBscMGxbk0Eh7afWE3+vNzn6MPpjoiKGRsQSkhbA== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Stewart Hildebrand , 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 v8 7/8] xen/arm: enable dom0 to use PCI devices with pci-passthrough=no Thread-Topic: [PATCH v8 7/8] xen/arm: enable dom0 to use PCI devices with pci-passthrough=no Thread-Index: AQHbe6bYLRtr9CeUhUS7u7CeNu5b3Q== Date: Mon, 10 Feb 2025 10:30:46 +0000 Message-ID: <9950eff2f8344c5d658def7d2c6d7fc010607498.1739182214.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_|AS2PR03MB8977:EE_ x-ms-office365-filtering-correlation-id: 87b54a4e-0b94-49ae-b5ec-08dd49bdfad6 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?KKQCPo3pxJCaRQHSRl0mitrode?= =?iso-8859-1?q?dgZIlOh63VP9c0WYmvMGIEfM2dk0dbEzs2PtQW+GndpVgCaiDifxKYZy53vV?= =?iso-8859-1?q?XiGBJu34kYhL/wYc8zCMEzykiFNdFrCwNVwVZHKWwUXrfUr6QeXgT+768ZAt?= =?iso-8859-1?q?ZRmsxN2W58pGhCr4WRh+lgnMdXYoA77XxZsi31a34f7ehQP4hyPVsEG2/rSG?= =?iso-8859-1?q?nzFLLuwtsz8MrxvYFQhmVdOfCO7XX/WoVd/QyoEu6s4XKi1jtVN4NA7RQTDm?= =?iso-8859-1?q?oLYsgdqXHBQrYkfh7t8xj8Zuhgxh35GB1j28/jHT7u6SYGCMYgpG8C1C9f6U?= =?iso-8859-1?q?wpE4qrr9YgRe64Fz4Fom9nLYeggTYfoAdBUtKhBGpCFrBZoHuQfDGX3rJNJV?= =?iso-8859-1?q?HE3/iE4UkuyAKc+IluPr8DH1xRU7QMUiVejDMnvq3mk2SjfomhPP5iSc51dR?= =?iso-8859-1?q?BqDPvo5Uv0otkQmRSKspw2VXRiMff3sTdgxysdowQlm1oH60AFy/B0RyMnJv?= =?iso-8859-1?q?SxAybN1iBmhQh3wgCIW+gJJCbiN+uWuG4AsE2DKYmO1V8qINqYmwNaNFDo36?= =?iso-8859-1?q?NYkoflzVTzImZ1J35so4vAEv/t6xEcaSVnq7/zNe/1wTE+KmDVCUGj+32El5?= =?iso-8859-1?q?wUzE/lK01aumxv8Hbhd/gZS12SD4eXD8HOgejENObuCAvkkk4rNXprmMFz5p?= =?iso-8859-1?q?C9uiGheVJpjbYdUFO2tii4DykWj15fCU5EghVROIFt6RwkNIPfKMr0IwTtKW?= =?iso-8859-1?q?qZO7tV6X4GbMhj5Dz22oY2sTrmkO45NgTpafvQxrBmUc0On2kiz3fyxNoJKr?= =?iso-8859-1?q?R4K5L3+01yUui8C2ONxy4EUHka3L9ISJrK7E6AZgpX2oERU7SPeu4Beez7ae?= =?iso-8859-1?q?ft2PuY40+zwNW/+DU36hp8P1qG0WFzgYBNjUA3bV+aGeEQIsn0tOn3UcmeJT?= =?iso-8859-1?q?mmY6QnmKZG0yXDy/nX4lORfE8xdRLQDPTxINTDRY9QPbvgyU9IA+ncVtZH9t?= =?iso-8859-1?q?7p5iZ4mw5JCWebXdx2a2SPfpKt1PCFJV0475dfhksKH+y+fjGTFknJvDF9j5?= =?iso-8859-1?q?DBnKw7lYXKeGHgSwlAH6KhaEtmPDA9FoeoaBCAfcw978FU9H5SBvGJ78e3OF?= =?iso-8859-1?q?PYQpjNy1pJ3W0GNf5rLHW4Snm543ZCbD1h2iFPBnAVQhS+tsermroKPMzKN5?= =?iso-8859-1?q?LpNJXmLPUFdFYAaUFxZunL2i3RIOr8c9PUDWWhrw/O149LDOMvqzkGMCSCgG?= =?iso-8859-1?q?h28n+Z1yQ5JINYZiMEYguhVFo6AHEbzfSOymYYr/EwsXDUY7v0dBPbHk7gAE?= =?iso-8859-1?q?mz8OiRtN7F1n+p7QDKFNRgRxJjsZlW+AA/UOsOaNWkKYSbC/RFZLjoOWMYcM?= =?iso-8859-1?q?LandMHJzICzrQ7eRwOTStuLdlW3e8I5xd/saL/FwZMO7D1nFWQAcbj2KOkPl?= =?iso-8859-1?q?+zqPELtiCtjZJoyvQRnE9c1gNAkqt23JVc6XadjFFG99lmCd7TGpj4kZbUf5?= =?iso-8859-1?q?FovDdZ?= 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)(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?4TymGGUtjtguvlyiUrM6V9a?= =?iso-8859-1?q?D9Wea4c0GR+JPS1Q1v9eQQ9zFIMENHPfak6xwXjVghf3TijQUHzOYAMwCHa1?= =?iso-8859-1?q?NDUKSrFxGnVSSFsbQLNzkiglvVtT3KzDdG3UzQTJINONnCsGPzW7ZSQiL+nP?= =?iso-8859-1?q?VCdWRwqEKZyZazWTICcCWdPJ5BL4/bxeMSL0LLLcpp4XSFPbu+tfHX+PUkII?= =?iso-8859-1?q?57oxNTlcRZM9OSzDDJHp3ZNxB0AwSSjkzi9dfYChzzgGeYgZZqs5WsZ//YCT?= =?iso-8859-1?q?wOJIc1S+8QztjJXKwl/VDO5uPLkP74Wz68E9ffveBmPaUIXDW8xw9W/KTMS9?= =?iso-8859-1?q?FcC1EmTbWch0jZCmLxFduJC/uy8us5POK0SuVBAZO1fLL8fCufVWAVI0WYqH?= =?iso-8859-1?q?awWMDcp9Facin0k9bY06r5hBXbfVzzq2tbBt3+ZQbpTVb70b2fOmPCvmtPce?= =?iso-8859-1?q?vmS+scqFG08k+UfD9x+u5v95rrMlZV5F7o7LRTdCjTQv/862uqAXuwf3/M4y?= =?iso-8859-1?q?DKRdFortuy8DWhgwp8pgXjgVLwCT0ni0WHBbHf46dgVttgPq5mL05CSTOyIP?= =?iso-8859-1?q?RNmP0iNHM3UsmYpxr0zL2wzHGvBxDt83EtbfL4utKGnAlCVXBU06tLEmPIzc?= =?iso-8859-1?q?pnAsjmhiNVSDdWx5mcykQuQLUq/hia2Dmb93DqYr5qW/V4qGMFr37CFfNC7t?= =?iso-8859-1?q?qPkyD4HHkKoeXdFSBD3L2JOstso4nCYm9ywh/gcTM9TAtJO+V1IEqJfooxAN?= =?iso-8859-1?q?15NDMmBg9Rd44D3EvqwE2meBvaIZIHyaS/3Ry99+VWikVJ4pk0hor4+/r80s?= =?iso-8859-1?q?yzP3JVhzQbP/JAto43t6o49CLGPVMKJL+Wt9dsSZyGuyt6LeZUX7OUuUnTAK?= =?iso-8859-1?q?mFIUDBCVNPsLAkhOI5cdOXh7yKUfEfjeJViExTqMHeCOgCwwdOvz7rqQZu2y?= =?iso-8859-1?q?1Fj5aYNhz/8wVDtSqOeZ2xalH2Hgmnsb0dw6MSl72eErDk+8iqHN/gR4bafB?= =?iso-8859-1?q?P3qnQOvSFHWmy0EhpDbLqVaKCXEfzm666+qVd7R1jatfBMRTxSscE23Vq7VS?= =?iso-8859-1?q?sIjdDpx+00c8Odknc8fTtbc8pI41T4Rtn6en+1tXnrHluoWS0hELT4Qb78Zq?= =?iso-8859-1?q?AEPW/tTznn0++63XKkNSnelhE73QuZ8sFUX3I2f/qF5IbDtWsZXbWurjOIB5?= =?iso-8859-1?q?G8TFvu7LRaaqiNeTB8FFR5Kj34ie2A12FYsVpkS9pMTQkU5Nc0zJUJIUNYAV?= =?iso-8859-1?q?HpsIjw8/plkRAEiBYlWq1ddfqwXfM6HxCIcIElI8OXmNmFzAYKQSpXaH5pQ4?= =?iso-8859-1?q?HzshZG/DVBfkZ0iv7IkDPiO+qkBx9ySbaaDUl6n70LCY/Qs0ijitiWuYRcfX?= =?iso-8859-1?q?ozMIZ2kKgNZDQ6zDwHY4E1IB3bLFEB3DJ9qj5LR4qVRw08y4QMSuZKjBIpID?= =?iso-8859-1?q?Z74QJ6DTKidw67M+t3OJnDqbOpEZVIruKOEFqOAl/kzVKgik6jaCZRzZI6+/?= =?iso-8859-1?q?oDcWjpZGuRgHaKW54+tJY4sy0Ra8TblyUFAKvjQvjZX6qssaxD4yeFcEndAU?= =?iso-8859-1?q?fsagyxi3IykH40Ro7Zl8AGBsFXHuxFqp7l8l07UZnyY9K5vNkL/WwjdcJtq8?= =?iso-8859-1?q?0NlCNGpT+lIarmEQxtu2pLmEOGgoBTJHbI4pTnw=3D=3D?= 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: 87b54a4e-0b94-49ae-b5ec-08dd49bdfad6 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2025 10:30:46.2117 (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: BFAcgJ/9Wp+JNYLlteGmF5J5FiLjaSHWEMF3WyrWPREh1WGdky6kHjPVMf+0bJGIQjsLZw+03erDxkPJgvYveg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB8977 From: Stewart Hildebrand Enable the use of IOMMU + PCI in dom0 without having to specify "pci-passthrough=yes". We rely on dom0 to initialize the PCI controller and perform a PHYSDEVOP_pci_device_add call to add each device to SMMU. Enable pci_init() for initializing Xen's internal PCI subsystem, and allow PHYSDEVOP_pci_device_add when pci-passthrough is disabled. Signed-off-by: Stewart Hildebrand Signed-off-by: Mykyta Poturai --- hmm. Since dec9e02f3190 ("xen: avoid generation of stub header") Should we also move is_pci_passthrough_enabled() back to xen/arch/arm/include/asm/pci.h ? Not sure if PPC/RISC-V will plan on using this check. v7->v8: * bring back x86 definition of is_pci_passthrough_enabled() v6->v7: * remove x86 definition of is_pci_passthrough_enabled() * update comments * make pci_physdev_op checks stricter v5->v6: * new patch - this effectively replaces ("Revert "xen/arm: Add cmdline boot option "pci-passthrough = """) --- xen/arch/arm/pci/pci.c | 5 +++-- xen/drivers/pci/physdev.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/pci/pci.c b/xen/arch/arm/pci/pci.c index 78b97beaef..f2281e81aa 100644 --- a/xen/arch/arm/pci/pci.c +++ b/xen/arch/arm/pci/pci.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -83,9 +84,9 @@ static int __init pci_init(void) { /* * Enable PCI passthrough when has been enabled explicitly - * (pci-passthrough=on). + * (pci-passthrough=on) or IOMMU is present and enabled. */ - if ( !pci_passthrough_enabled ) + if ( !is_pci_passthrough_enabled() && !iommu_enabled ) return 0; pci_segments_init(); diff --git a/xen/drivers/pci/physdev.c b/xen/drivers/pci/physdev.c index 0161a85e1e..d8a49cadf3 100644 --- a/xen/drivers/pci/physdev.c +++ b/xen/drivers/pci/physdev.c @@ -19,7 +19,7 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) struct pci_dev_info pdev_info; nodeid_t node = NUMA_NO_NODE; - if ( !is_pci_passthrough_enabled() ) + if ( !is_pci_passthrough_enabled() && !iommu_enabled ) return -EOPNOTSUPP; ret = -EFAULT; @@ -57,7 +57,7 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) case PHYSDEVOP_pci_device_remove: { struct physdev_pci_device dev; - if ( !is_pci_passthrough_enabled() ) + if ( !is_pci_passthrough_enabled() && !iommu_enabled ) return -EOPNOTSUPP; ret = -EFAULT;