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: 13987647 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 A5AECC021B5 for ; Mon, 24 Feb 2025 09:18:56 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.894979.1303603 (Exim 4.92) (envelope-from ) id 1tmUbf-0004LG-Bf; Mon, 24 Feb 2025 09:18:31 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 894979.1303603; Mon, 24 Feb 2025 09:18:31 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tmUbf-0004K5-6r; Mon, 24 Feb 2025 09:18:31 +0000 Received: by outflank-mailman (input) for mailman id 894979; Mon, 24 Feb 2025 09:18:30 +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 1tmUbd-0003pb-WA for xen-devel@lists.xenproject.org; Mon, 24 Feb 2025 09:18:30 +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 4f4df01f-f290-11ef-9aae-95dc52dad729; Mon, 24 Feb 2025 10:18:29 +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: 4f4df01f-f290-11ef-9aae-95dc52dad729 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=caBCYmK4UepmA73npYJqH5zIM3aql7FUj5iPWONqoT6FgmVob9Cl54AUsCg/rrGMU5AgGuJACIJb8dGtTJhtRY2tBZL5Jk48jsvWTTJdKFWqFPduBJ2QrYug0CvgdAjLGgf4U1kWOZkXy19SsSdiSEcN4lIKsCMJQyw/Li+IBjGuU8wen0Dlh5d7FwNjRoic5MNlqgMMM7LhMQu2EijkzcsFGerFqbV9somRmeMTuhqMIYUKaQj9+CbVaxVk9pl092zdNT2aB3JbKaHtCnV+IM/H9iAk/PT2oj0URNYUSn1dAu7yIftvkcq0wKt4whC7xHM9gtVKxyPcGykiGQPF8g== 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=JSi0MD6oXxZ7uBC7xTOyeBE4Fqcf0g3bSjWr9PLSTjU=; b=qq3RfAJwaxPgIrxbCu1gXLhxqjW2HE5CeZOIojZLv8nV+iMkIy1LcRaVUtwXhjXxJCW0Z2bP7aSuv69LNqYPwh/TUcmhYI/5KYr4v//eHZmTOWA7Eg9xzazs7ksS/kC5oJWNWnv4LsCbgMvMUG8RJBsmfEGUWCrSxxb2b8sPUKJfSKHA6VaWTZUNrO1bhZAJygsNEeBA2iLe1letnECxYIb/hjhFVSSxo29Q6XXZi7b/WhFrTI6aq8drXrTAbNE8QxjGWdAxqHAnFJXwVD+1L4MB/QRg3yXo02UNGabdO166RR/IQ6iLxOiNoxdmQxGIhZUw9Ip3vaYu1VrBecBUNQ== 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=JSi0MD6oXxZ7uBC7xTOyeBE4Fqcf0g3bSjWr9PLSTjU=; b=TQntVCVWFJ/LpF/K48OKC6/gYSLXcMS7OMkszdwVdCIChpVAZhFX6qEqabsM4G1tcvd5D1FWhEoq/aZ38J+cuhnttVjRZFhdaPWcXEc0NTtjp/EXGNK44Xti4sDMOEgDpUlZT+9vil4LVFch2JKTOJArrXbQiHvqx5B6Gb3t5kZ6CoI+WnK1cF00HYiOxdogalM9Fa0knfBYpk93hyxKtcjfdNgKcxisDd3ftuWrg4N/zDWbbe+8KTkQ5JpCl0kOpbadbTKBxE0/H5VP0pm5dp3SkewpW5+BsMMmUgxFgEeeShsMrtNKRjHnoBJXWFQH8SNyN8+ffRrOnb94TKjXsA== 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 1/7] xen/arm: allow PCI host bridge to have private data Thread-Topic: [PATCH 1/7] xen/arm: allow PCI host bridge to have private data Thread-Index: AQHbhp0ONBPLb/SsAUOQ1aj0su174A== Date: Mon, 24 Feb 2025 09:18:24 +0000 Message-ID: <4a09aafdb34784340c426c0199f8a290c0d204cd.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: a80e7b87-1b9f-42d1-3acc-08dd54b4308d 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?4ONhxi+pfJw5stFxW1VCIVlzPt?= =?iso-8859-1?q?nPzdo3D/J9qcvkjAU9Q6NVvynT7Hvh2TSF4vF5dLy9xwE76JDHGU8bdXs0b+?= =?iso-8859-1?q?aIBvBomt0xlalo+5zWgG+SvfzsVo5p3ggbatBpsfAagvBA6YXFf33RKdgbrO?= =?iso-8859-1?q?+Bf88WkZ5ShCDkhIfRR4hBuCjO3DkSepElGAAdh8SeIoKNIdb91FlNMWPr5e?= =?iso-8859-1?q?GPDhB4+TNz6NzV5ds5ISZBXqe4RfQIkwQSr1WSONEcggsy27U3Lp1VamlqJV?= =?iso-8859-1?q?0rujGNPeFqqCiNKL0dJrAkfCXaLUI2F3/ck1lzJsEucC+NaJMpdPfLjzt5KN?= =?iso-8859-1?q?Ci8mZ4vB7e1ggqpnYd4wImy0oJm9fgCXilF3d5CqebaNBZ9NXWj8ZvmnCsDu?= =?iso-8859-1?q?LXV8iuZNUQDWm/iT5mR+jVY9yFMfpYXLwVejDX8dw8CQWgv/OiE7ozSP6n6q?= =?iso-8859-1?q?O6r5l18hNeBjsOs4DxlA3IWJlUD0nXFXzc9IPlhLUn/lEgUpo8O17V33vyFn?= =?iso-8859-1?q?K5qFf8UACuqqlOBi5lIcGOkuNmGZBubheE11Yt2eItbHUao/j0WqrG0vhSmM?= =?iso-8859-1?q?8ZdPwKvkrRReIKsoztafHLgXFesWa9u4ihMS/1m9PKkIbzf/xOFxYNsi0g0t?= =?iso-8859-1?q?CEgJI67fL6FSCAUeOuEkAqvApDzJNRQ/eYXIKrdAcZH8SamOu2s5hfBkMWDj?= =?iso-8859-1?q?H4Tc21csvCc1ZhGLVIC+Uk7c4KDe37nO55ir6M78fBgdHuRP0kP9rjkNPuVh?= =?iso-8859-1?q?Hkn8hWr/TUL0p1l3R1Z1BN655fUH2su8RXhJ/3/rKsJyKnVdmsK4wApeOB3A?= =?iso-8859-1?q?RUq358QIqeNNuYdEBtgEDJykn0B0UXb6x3Qs/xza4zbezJcDYw6obTADcWXU?= =?iso-8859-1?q?m4f85vWRF6pj/HbdNR7hrPGtziOpe9P/jXHg4BSfJqQQ4vWGGRc2iW9IUsMh?= =?iso-8859-1?q?WDHUMG6DU7MHa+j0GB/C6dLpQhJ7ze4kgG9yDAK3VJb+kiEQLrAbz5LF4uXf?= =?iso-8859-1?q?Lzi6r/Lx+gro3A4E5zKpo6DH31G+ul8Z1sllvVgk2LQW+LVcMyv6TakJjwVG?= =?iso-8859-1?q?YMnxn6QwrEeKNVLeh2Hsi9iVrquxGx+Yff1EvuIhhOHJ52qjVe4l2rt6GtFA?= =?iso-8859-1?q?au80/XqSlYl7g+RmMFqzJb4PwIgnrBolpp8kJDZN1g3GLgJfmmLaWc6GlkXK?= =?iso-8859-1?q?pnWWMHw7gA0GkmP4HFthGCFuEOL5HKgMSf4gzCRW5ll1WmMc+lfZ//hy9wMU?= =?iso-8859-1?q?dc6EoF5WBT6No+Lmu2th07npUaL9C4tlX1VwouK2WVqi2XGF0vNC272I2FZN?= =?iso-8859-1?q?CXsFnAqRU+E/jYFAZAr0KlO5xTcuBfK5UlM0nZK+dRBxSX3TXSchLMrDQ89+?= =?iso-8859-1?q?v5+JHjvac4rc9dEaC2/Wf1HkAIpD+4thmn1gly+/rk3h4csz4BvQHxVr//4n?= =?iso-8859-1?q?vqDV2zoljzB+XjA5a0Uwglj0y5KPpShTBKS7T/xxnE7VvXUhc0kxj52J/Wp8?= =?iso-8859-1?q?N3IqDR?= 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?ydB7NXBDJR2VEMA13leul8Z?= =?iso-8859-1?q?mGLEQ8p8S3cCDPnW+g4D74jigcmPsVEJUweLQOvm1OoZXfdk1rmEAHHc877p?= =?iso-8859-1?q?KHR9XeDgMdLmM4OGYet+fJmsV3tbcGGBNiw1QMcXrLecdR2oUccYl23hu5F3?= =?iso-8859-1?q?nylm1Nk1tTV19R8Py6fyDU5z+Ekl9oO04fj5Chmd9a2a0NIpOHoETtc+Djzm?= =?iso-8859-1?q?xTmm9MlGAf0K/RjvxF1zrsE9X3qvDDrHGKnOrjhKysLNjYAE04vJp93EMFV/?= =?iso-8859-1?q?tZAk5qWVB+OYN492Oo8pt4TGEqkZ6xnP1pKKm8fo2CD0ZjD3Es1GYT5Im/T2?= =?iso-8859-1?q?GSjJ3fn65oes1vanOUAKXauPvSW2pR+cRqWzHdsRj4u8/gxA0ALSMGHkZV0X?= =?iso-8859-1?q?ol0UsIrxh5+XHUNHbP6W/aMvwstTTqP70IFf6mfgFXrXxUKy6sA/gUuuJfvO?= =?iso-8859-1?q?c2FOpybcIy/e3V9MhAhJ3p5LQ9lH+en1IX6Oo/B9xh6RkDTmJq9SGLrcEDXx?= =?iso-8859-1?q?qu5J5SA+03x+L5wYAqKYsor39jUbEmTapgi1lj5pOv0R2IMh0cglXiHWQi1Z?= =?iso-8859-1?q?HfavH3Iw7pRUhfXWzhJWXOgA/u3WjFyfVt8gp/EamSfDiIE+KUuKkS7j9SSI?= =?iso-8859-1?q?3laKLsUbG26W9OsMbuWluUUjoGdD9LIZnJTKHeGKEmSFHA66uLN3m2AIM5HJ?= =?iso-8859-1?q?VDh32bL0JmhfCYlIYHD+XCcRLuSpo1KYvVwPBWJswj6WAnn+X8McKro2AxQ4?= =?iso-8859-1?q?B4z/zbLdE+5l1rktR8mEV/M1hhEadW51znXYsr/FHTm4q3nV/A/RWz6Y5N7k?= =?iso-8859-1?q?wNgTX1MdhVUUCEfm2qT1DwmLq6K4gp602tGxWvaf+1OuJhIWO1fYiHXLuwC1?= =?iso-8859-1?q?En1D+RlxtsZD88vOqmW+f9cYHPevrcBc9qUw6y94t5FBth1xiV2lfrS9bVTK?= =?iso-8859-1?q?QNuF7K3ibyDjH75TTwFwY3Ip9rseSG6PD78L11/jvnT7SdXvYf4yEFMdIUwo?= =?iso-8859-1?q?ksxf40L+bNP8KMgv8yRLLH7KWVu7ItNwR/yDtHLnQWwIi/Fb57a46QEKGx4S?= =?iso-8859-1?q?oavpkOeMoayo+FBNsjjQZrmOkrVCU+JDof7WxH/xmZDM6MaWL2ql2AGLhLSn?= =?iso-8859-1?q?0GfqGgm7Xj1WqQpStjpAnL/D7e7yev3yLOi3VERqPKAmAvWOoZmjTGB3hD7/?= =?iso-8859-1?q?KWpTS6Abi4UeaaQRBGddxlfy+K+aGDmqEIbsVDpAw/9dOU8nU3rpgd2zQFMQ?= =?iso-8859-1?q?iVXGo4XLKUdyGuX/V7q91sAoOAwP3aX1Cvxa+TnDBZdPg+uSUoX3mH6hoZr5?= =?iso-8859-1?q?tUzY1ouxOe377UjarZUcN3qlatcTcBYNcs4MXKHK9wHW00EdZG0dPywlDJEs?= =?iso-8859-1?q?jOQRTKfzXGj9BNqmg39GPNK85jagmOkYNxNt2UKjhJBYlCjmPU7Cjrax1hee?= =?iso-8859-1?q?pE2kcRikuT8upnGTnBkYk+ryTTnqOxxJJWsdGJlNsGlJj4OozQvSABxbX6v8?= =?iso-8859-1?q?HCj+38yUUTgR+NqTFL/rSHoeMQnxUpFCNKZ/hdl10kKDSZKHFqgNpjBQsB4X?= =?iso-8859-1?q?SLcouIL8tK8lw8mhTEmHrKv0ZPXaL5J/LvA+rAIA9z+FhvfRRAWlD20pGP6x?= =?iso-8859-1?q?DEhlpZnULQKh5725f6ekJ3ZvDWeNXFYge9HahIg=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: a80e7b87-1b9f-42d1-3acc-08dd54b4308d X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2025 09:18:24.1778 (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: G8FHnXhDm6ndViyB1N7ykzBB2K5juWqH2o/m/6pnw+iDVpEK8Gn50Hg4pS51Rp/QmHFzvm0j6JNTSnKrnhY8yA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8859 From: Oleksandr Andrushchenko Some of the PCI host bridges require private data. Create a generic approach for that, so such bridges may request the private data to be allocated during initialization. Signed-off-by: Oleksandr Andrushchenko Signed-off-by: Mykyta Poturai --- xen/arch/arm/include/asm/pci.h | 4 +++- xen/arch/arm/pci/pci-host-common.c | 18 +++++++++++++++++- xen/arch/arm/pci/pci-host-generic.c | 2 +- xen/arch/arm/pci/pci-host-zynqmp.c | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h index 7f77226c9b..44344ac8c1 100644 --- a/xen/arch/arm/include/asm/pci.h +++ b/xen/arch/arm/include/asm/pci.h @@ -66,6 +66,7 @@ struct pci_host_bridge { uint16_t segment; /* Segment number */ struct pci_config_window* cfg; /* Pointer to the bridge config window */ const struct pci_ops *ops; + void *priv; /* Private data of the bridge. */ }; struct pci_ops { @@ -95,7 +96,8 @@ struct pci_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); + 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 c0faf0f436..be7e6c3510 100644 --- a/xen/arch/arm/pci/pci-host-common.c +++ b/xen/arch/arm/pci/pci-host-common.c @@ -209,7 +209,8 @@ static int pci_bus_find_domain_nr(struct dt_device_node *dev) } int pci_host_common_probe(struct dt_device_node *dev, - const struct pci_ecam_ops *ops) + const struct pci_ecam_ops *ops, + size_t priv_sz) { struct pci_host_bridge *bridge; struct pci_config_window *cfg; @@ -241,11 +242,26 @@ int pci_host_common_probe(struct dt_device_node *dev, printk(XENLOG_ERR "Inconsistent \"linux,pci-domain\" property in DT\n"); BUG(); } + bridge->segment = domain; + + if ( priv_sz ) + { + bridge->priv = xzalloc_bytes(priv_sz); + if ( !bridge->priv ) + { + err = -ENOMEM; + goto err_priv; + } + } + pci_add_host_bridge(bridge); return 0; +err_priv: + xfree(bridge->priv); + err_exit: xfree(bridge); diff --git a/xen/arch/arm/pci/pci-host-generic.c b/xen/arch/arm/pci/pci-host-generic.c index 46de6e43cc..cc4bc70684 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); + return 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 101edb8593..985a43c516 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); + return pci_host_common_probe(dev, &nwl_pcie_ops, 0); } DT_DEVICE_START(pci_gen, "PCI HOST ZYNQMP", DEVICE_PCI_HOSTBRIDGE)