From patchwork Mon Feb 24 09:18:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mykyta Poturai X-Patchwork-Id: 13987653 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 A4C9BC021B3 for ; Mon, 24 Feb 2025 09:19:17 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.894977.1303589 (Exim 4.92) (envelope-from ) id 1tmUbd-000442-RG; Mon, 24 Feb 2025 09:18:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 894977.1303589; Mon, 24 Feb 2025 09:18:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tmUbd-00043v-OZ; Mon, 24 Feb 2025 09:18:29 +0000 Received: by outflank-mailman (input) for mailman id 894977; Mon, 24 Feb 2025 09:18:28 +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 1tmUbc-0003pb-BH for xen-devel@lists.xenproject.org; Mon, 24 Feb 2025 09:18:28 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on20603.outbound.protection.outlook.com [2a01:111:f403:260d::603]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 4e2cb060-f290-11ef-9aae-95dc52dad729; Mon, 24 Feb 2025 10:18:27 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS8PR03MB8859.eurprd03.prod.outlook.com (2603:10a6:20b:56f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.18; Mon, 24 Feb 2025 09:18:24 +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.8466.016; Mon, 24 Feb 2025 09:18:24 +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: 4e2cb060-f290-11ef-9aae-95dc52dad729 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Zre0OrYPctFznQ06P/L57StD2/Vf+dcD37UOjzIPNLTWC6iS790JlgaWT5YyBQjPgMTnCViy7w2gxHtIrcHa65TlbHYqAMaXiRT9QOajDQ7m3YVteJpCbBGmuIXPyvf5Lj8YyNfp/f9QMV8sfazoSD8iX3qeDqeC6Df6D/pRUCRD5UB4QPQYPBq77M48fkX1FADmFkGNi91Hzso11/maDvag3cX+pBy/SSNx1M/gpR3LMST70K0GNfGYI+PN5wdhdkWfiK2LY+tnn9+mj0TBZQfeXGQUZJL/x7ZffU1gTE3iRIy1iBPgxz8mmZgOZCv1MibpHxrqetZbuHPPIQVN+Q== 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=Gblh8BA3B38RYzw5oAODeH7N8XCpfEMqk7ps6NGozAI=; b=GpmnHDTfIhdzjTvQIofLLzbVHQId43ZQWu393RFqIHmAwGhPGh5BU0rhWbK/erT1Lenv263n4tQ8n54wQKQxcvgFSPJljPQBpqRNXMqqCl+o0ftdmsS9OXIxX9xiihnmY0TKmtuuzReoeYvXAdFM7ktrf4GNGI5AvYGyMiPlNfCRNg0W1VPoPRSzK/3HNUVxadufOqYuDUz6Z+Papk7G5yWv0ULFBzK/fd/xrEjvb2bgLyOzXsJRQAM3yHGJ/p6aicWVywqyIIE4YCOHzqATMkRv9lRE6U4GJCXlSpKKv0C4wwA5CnloBPCm+IiF3+0HkdwJOIkfe5KnXeFivWpxEA== 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=Gblh8BA3B38RYzw5oAODeH7N8XCpfEMqk7ps6NGozAI=; b=YHFVlDl8AhewLpqIGT9lrIV6H1qowwLEdzpQcKvwJFWMmjYMeJL3pbeAoUZnaRaeJDf5W2jBl7fzHhH+jBEOjB1fsM3Eprk4AV4kl7pYUkH+K9aXnHLit5f1e/6nLajsG9e78+E8O2y0CR65q6xRHGstOgYDIESXlrOZkrKumGO7w7k/si6UWnPNUjEAHnYOwn+6k8sio/ubn1y7FMRPH8A7SJCPnfnEkMjkMb0cIZ9MVuXFjcTjMR2HKWbCBvGk0dVbXoDlIHQoV7UrmVurf4GC7FPqgGgYYDl5+GGfJ+6AJ3mSKI8xk7oofuuB5wmx2VJdLsG4I/bYErhyxHv07Q== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Oleksandr Andrushchenko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Mykyta Poturai Subject: [PATCH 2/7] xen/arm: make pci_host_common_probe return the bridge Thread-Topic: [PATCH 2/7] xen/arm: make pci_host_common_probe return the bridge Thread-Index: AQHbhp0OxJ4bxTlfI0yOtpGJET1sPA== Date: Mon, 24 Feb 2025 09:18:24 +0000 Message-ID: <922cdc05d4821925c796c6411814dfcb94d55b21.1740382735.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_|AS8PR03MB8859:EE_ x-ms-office365-filtering-correlation-id: a5077c81-2d02-472c-9e8e-08dd54b430d9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?6oHPvNmwXDz2XZ7yTPbGISl4yK?= =?iso-8859-1?q?7AmFy0+TyRDgS6WD0Z8Rl20rTH7+0eG3DFHerwys4AT58Z6DFW1pLkgjVX6t?= =?iso-8859-1?q?kLXR/fybfESmf9GbJSlyFcrnBuMi8ZvyurwThk4IPXwpeRkZfW5gqo+21GzB?= =?iso-8859-1?q?YeA4FXcmpRNZjs8LLaweSWNPHgaPI2Tmem12UKpczNlfB+LJsx7P6SeABpad?= =?iso-8859-1?q?jd3wttx9+E+ms8aHeBix2stpPz0SpLVmWL9WaFo+oCciciiGJEy+pzkdFeAx?= =?iso-8859-1?q?oDQ1q8435qFkexNSKJNt1IaSkNX369W+CvUT3Oy7Wj2Szgte4P+eqegbzDYy?= =?iso-8859-1?q?x6h1+k67VkPDA041ZFEBp7I7GTKoCqnIvDs4I+3e4F1QF/U8L6d+GW7de+SQ?= =?iso-8859-1?q?6b+3rVcYyKMiOuUINBbaCFZgEbspFS1L/0BY9X75CRd3FGpQfJvMQMHFac0V?= =?iso-8859-1?q?6p2Zjr3SzAekzbG+TMBg+2YpoTBiuCNDOouNdH618W7TGjCHTqhIprOiPvT5?= =?iso-8859-1?q?cf/Wo+ettfSImDTNrV3QGKrXN+1NRKacY9EkGecLuVT86h5J1r8BEO0rDsrP?= =?iso-8859-1?q?aOwDVdS7fhElk1hzL3HoSWtRUfVElfcFBz6cjzGbNquViyFB0PPppMKaNgxB?= =?iso-8859-1?q?1ha3kGvATy36jmMgXFyRVuMS2McJBwBkoCvUEQNTUab3MYe4dMX9j9Lf075Y?= =?iso-8859-1?q?MwTN3y3ph7gYjGsfhpkUfBQbAsPIFHwOqKDjOtkEluC2sYfGR2YXg2viPopG?= =?iso-8859-1?q?Sc61sx6/uxa+7B7Z+QKftt/yeKkgcTrtKNA796jM3PcLSFnqjPYNTnE2Aeoy?= =?iso-8859-1?q?dkr6gwOu2gG9dxb8r4BC/KJqXpVhMarzg2QcCRlkMfDSuXwLl4yJNL/XAote?= =?iso-8859-1?q?K+hcKCE+YkdWHLc8ET8yNEnDzuiJUieZQm7QRVU8JtbDvFsvbo0wZ40lg4cw?= =?iso-8859-1?q?eClBkDXXH+9ec8L0KMyKWewhuhitxKO4LAzstOiDzGNkktD1OYid9WEckSUx?= =?iso-8859-1?q?d+MbIZ4bqzKmw96bd6SWuEaES3sPdgLKvJumv9EMjumzmSoHcSNIzIZASFO7?= =?iso-8859-1?q?7V4gVPBk/VgeRHHxuzl1fD0MCbCP/RDEnO29MQV/aluG03xVDbJNLj9+ptmx?= =?iso-8859-1?q?3E4HNtQ4SW4BgF2g+wnUPg1HgZyG+W3n510UQ7pGKXpzy0TTpQz8IqDM38v7?= =?iso-8859-1?q?P+R3pfrcqCoi+0+UXl9DgpGV5Ag+bgj2cwjBBFk4XnH/rqtih66zBM0LanJh?= =?iso-8859-1?q?A8ghXzHixXZCswsrAISrd4MYoRkMJvhdeIX0UDbG98DdH/KtS0QQcggTmCya?= =?iso-8859-1?q?oqewFvq0qoSDq7qsTgXGH2ErBdXPZHhHQcaWP4sSMURxXX189usuFsuCtfCo?= =?iso-8859-1?q?51b0vtTlCJvKJiVQg3/toa7gqaam+3gyD55Yw5p7OPmSe4Us7W3lWQqzgpqO?= =?iso-8859-1?q?XmBsSfn5a0qdxQItMSd0xyzrgb9cOtco7G2Hb4TTffJcd7xBtjbZ/bsp4+sM?= =?iso-8859-1?q?yw/Z3k?= 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)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?6OAylqsHEI3pcq6+0986LUp?= =?iso-8859-1?q?hGQnZSXnsvyxthz8IjKrFCPjEmo012GJ7O2YqMeTNdznmgCW2yKvUfhBpVUk?= =?iso-8859-1?q?Ua1VQypA4HO2drq6TIoSiSw+A9S3fg9gbrQRsOEX3EADWApZBV62NFSzCMAv?= =?iso-8859-1?q?jniJbj17cFUoQDttHKt/RXnqsYXn0AaTrZAaPdtn72qYP/rYOF1SPHmtcMgA?= =?iso-8859-1?q?HYJLw8XjSD8pR3JRoY6uQwnC2ymOCd5i3nOACgvcvyibhxD/ofcGOMPW+Vev?= =?iso-8859-1?q?48KbIVjrqxQbnvIU9JS0T2SAUxbXbmSUVTLLLx08SshqBDQD/OTiX0PQfMMR?= =?iso-8859-1?q?RhxBXcIHChKG/dDDxTDUPghKQGGil4HTSz1GcnZlBEwlEKsqBonnKfgwaObY?= =?iso-8859-1?q?PwvXEXS3M4i7aBnM2nrPOpQuQ8d/+xBHXXIBwufwvkB4Vh37s9KjeATDSXd8?= =?iso-8859-1?q?P3gw366p8oNobOq1CcOEh9QAZ/em4axAOhzAtp0OzRnJSXq8ZSztRQosL8Hz?= =?iso-8859-1?q?uP2vzRhEnR7fUhkq7rAAIMF4lACvYpPEr2pnu1QP/I5Mk3FE8GoZ9+Pc4I3M?= =?iso-8859-1?q?kd+cTZOz/pkAW1a0ii7IWrk/wDYqXgKt61BTzrAjN47Pau8Tbuooc3RCbZLy?= =?iso-8859-1?q?KEYPAsT5fIS3gZyn24WQdRaoMKRuS4Yt8JrJCtsqVDgwmekwgk4fZ6hS2/UT?= =?iso-8859-1?q?ZZKYv6U4mgbqFGXZtKLnAJYYQekjIcwFlYGiIvIwruAf+CGur5dR2hjfSSBp?= =?iso-8859-1?q?JuYKQ7hkzprE+sPQ4SZ+Dt6LUs1pPQLq3+Bhm7HtnunL3ID9yzZPxYzYcuH1?= =?iso-8859-1?q?Us2QyKm8cULGUjwMxvYxKSC4D+Dz/4VRCnA+ZSd0AUN3qAFxAGpGUIuCPzM7?= =?iso-8859-1?q?XYRi2O6ffLaJIBi61ZxZ3InRmvd2InsVKIafQplsgoC+hK+43+B/oSRSLFuJ?= =?iso-8859-1?q?i7uV7x5R6BC6ABdWneFhUyqnCnsxomQ+CQP79WC+KqikwpVMztwWf2FXp1Se?= =?iso-8859-1?q?P27QCuUWviHYEpLPLwGABO1Y1sEeVO2f8tTbW0LHNL2ihv1ZxDLoeIfl20Cz?= =?iso-8859-1?q?xJqcnCdf1ElgsLr8/HDuGBxZRsru9uyLGdARenFI2Zax7k816Nk9XsKUcUm5?= =?iso-8859-1?q?/MYJNYAzPaSWm+v6Pd8C6ueOPKGnLIpFQN8Je2UlzMPgXuFVP/gchPmZ7V3e?= =?iso-8859-1?q?ppR0hGTM/ZUz/pUpSvLKP88MlcwcjnjrW0SHUFmj6dl26uOpVapH3xfTyfdp?= =?iso-8859-1?q?fn4qZy1TLcU1WxaBP9UztSHrM2c8Ie5TqqAagJxlzcOYXbQoB5F3OXqs2rEx?= =?iso-8859-1?q?igtysWykI1jZ/q5pxJdTrb7n63yOByOpNegfeOZsbkz5+mRW2Wfnc3bBel/c?= =?iso-8859-1?q?FUF5XUPDoP/uM8JAx4NhAepLSxuseXQMBBv4/EBjYDxbgzF60RRQgwZa8SvR?= =?iso-8859-1?q?Lpl0F2pJuDg6KOP9XmBvTXp2dVbJYIOLEcLG1SkfTLqhKoQ7QpGnkXuHYYNy?= =?iso-8859-1?q?a3RPw1VvP9nwgO97SDj7ta4DDuzih2gOV0utwSKNn3bBeV29sWnWREvoMQd9?= =?iso-8859-1?q?AXVeLbiHIjLTovdBiwVMPxy3w39Tky2cnylyEgLoP9ZqC2hyP/C3TlpYAkeA?= =?iso-8859-1?q?rSENip5CHtqgqkEIhnDi2N0iXk3V94dH18LTOVg=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: a5077c81-2d02-472c-9e8e-08dd54b430d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2025 09:18:24.6687 (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: JolKrYjr4h5iCwgGmlxT+2pPl79lg0SHaAf2OoRRmX6pd2CLOjtEOQVPY5JOwEz4Pwbn547hteC6+ukdPMCmcg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8859 From: Oleksandr Andrushchenko Some of the PCI host bridges require additional processing during the probe phase. For that they need to access struct bridge of the probed host, so return pointer to the new bridge from pci_host_common_probe. Signed-off-by: Oleksandr Andrushchenko Signed-off-by: Mykyta Poturai --- xen/arch/arm/include/asm/pci.h | 8 +++++--- xen/arch/arm/pci/pci-host-common.c | 12 ++++++------ xen/arch/arm/pci/pci-host-generic.c | 2 +- xen/arch/arm/pci/pci-host-zynqmp.c | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h index 44344ac8c1..e1f63d75e3 100644 --- a/xen/arch/arm/include/asm/pci.h +++ b/xen/arch/arm/include/asm/pci.h @@ -17,6 +17,8 @@ #ifdef CONFIG_HAS_PCI +#include + #include #define pci_to_dev(pcidev) (&(pcidev)->arch.dev) @@ -95,9 +97,9 @@ struct pci_ecam_ops { /* Default ECAM ops */ extern const struct pci_ecam_ops pci_generic_ecam_ops; -int pci_host_common_probe(struct dt_device_node *dev, - const struct pci_ecam_ops *ops, - size_t priv_sz); +struct pci_host_bridge *pci_host_common_probe(struct dt_device_node *dev, + const struct pci_ecam_ops *ops, + size_t priv_sz); int pci_generic_config_read(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, uint32_t reg, uint32_t len, uint32_t *value); int pci_generic_config_write(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, diff --git a/xen/arch/arm/pci/pci-host-common.c b/xen/arch/arm/pci/pci-host-common.c index be7e6c3510..e4e05d1176 100644 --- a/xen/arch/arm/pci/pci-host-common.c +++ b/xen/arch/arm/pci/pci-host-common.c @@ -208,9 +208,9 @@ static int pci_bus_find_domain_nr(struct dt_device_node *dev) return domain; } -int pci_host_common_probe(struct dt_device_node *dev, - const struct pci_ecam_ops *ops, - size_t priv_sz) +struct pci_host_bridge *pci_host_common_probe(struct dt_device_node *dev, + const struct pci_ecam_ops *ops, + size_t priv_sz) { struct pci_host_bridge *bridge; struct pci_config_window *cfg; @@ -222,7 +222,7 @@ int pci_host_common_probe(struct dt_device_node *dev, bridge = pci_alloc_host_bridge(); if ( !bridge ) - return -ENOMEM; + return ERR_PTR(-ENOMEM); /* Parse and map our Configuration Space windows */ cfg = gen_pci_init(dev, ops); @@ -257,7 +257,7 @@ int pci_host_common_probe(struct dt_device_node *dev, pci_add_host_bridge(bridge); - return 0; + return bridge; err_priv: xfree(bridge->priv); @@ -265,7 +265,7 @@ err_priv: err_exit: xfree(bridge); - return err; + return ERR_PTR(err); } /* diff --git a/xen/arch/arm/pci/pci-host-generic.c b/xen/arch/arm/pci/pci-host-generic.c index cc4bc70684..dde6a79a8e 100644 --- a/xen/arch/arm/pci/pci-host-generic.c +++ b/xen/arch/arm/pci/pci-host-generic.c @@ -29,7 +29,7 @@ static const struct dt_device_match __initconstrel gen_pci_dt_match[] = static int __init pci_host_generic_probe(struct dt_device_node *dev, const void *data) { - return pci_host_common_probe(dev, &pci_generic_ecam_ops, 0); + return PTR_RET(pci_host_common_probe(dev, &pci_generic_ecam_ops, 0)); } DT_DEVICE_START(pci_gen, "PCI HOST GENERIC", DEVICE_PCI_HOSTBRIDGE) diff --git a/xen/arch/arm/pci/pci-host-zynqmp.c b/xen/arch/arm/pci/pci-host-zynqmp.c index 985a43c516..c796447ac4 100644 --- a/xen/arch/arm/pci/pci-host-zynqmp.c +++ b/xen/arch/arm/pci/pci-host-zynqmp.c @@ -47,7 +47,7 @@ static const struct dt_device_match __initconstrel nwl_pcie_dt_match[] = static int __init pci_host_generic_probe(struct dt_device_node *dev, const void *data) { - return pci_host_common_probe(dev, &nwl_pcie_ops, 0); + return PTR_RET(pci_host_common_probe(dev, &nwl_pcie_ops, 0)); } DT_DEVICE_START(pci_gen, "PCI HOST ZYNQMP", DEVICE_PCI_HOSTBRIDGE)