From patchwork Tue Feb 4 13:54:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mykyta Poturai X-Patchwork-Id: 13959281 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 1D95AC02197 for ; Tue, 4 Feb 2025 13:54:18 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.881482.1291650 (Exim 4.92) (envelope-from ) id 1tfJNR-00088G-Nq; Tue, 04 Feb 2025 13:54:09 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 881482.1291650; Tue, 04 Feb 2025 13:54:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tfJNR-00087w-J4; Tue, 04 Feb 2025 13:54:09 +0000 Received: by outflank-mailman (input) for mailman id 881482; Tue, 04 Feb 2025 13:54:08 +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 1tfJNP-0007bp-Ti for xen-devel@lists.xenproject.org; Tue, 04 Feb 2025 13:54:07 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on20630.outbound.protection.outlook.com [2a01:111:f403:260d::630]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7f97726e-e2ff-11ef-99a4-01e77a169b0f; Tue, 04 Feb 2025 14:54:06 +0100 (CET) Received: from PAVPR03MB10102.eurprd03.prod.outlook.com (2603:10a6:102:30d::12) by AS8PR03MB10120.eurprd03.prod.outlook.com (2603:10a6:20b:57f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Tue, 4 Feb 2025 13:54:04 +0000 Received: from PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::35ac:8893:c31c:b971]) by PAVPR03MB10102.eurprd03.prod.outlook.com ([fe80::35ac:8893:c31c:b971%7]) with mapi id 15.20.8398.021; Tue, 4 Feb 2025 13:54:03 +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: 7f97726e-e2ff-11ef-99a4-01e77a169b0f ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cGZL0ZMd3bsoeEyN70EuVVLItPh8YH+wsxE/mSwL/Ri1eGUr8VBcKQ2g5Nxh3DFF64bM5O2bvTGdsWOdvFweOAuyeBPLFn4izZ57Uwe2Q31ryS5Y/VXHFrxei5OsoHFulyeXxT8eGTViiZXHZvioZJruW3fLEHUJ8PeOmzYFaZpeHpFhSfO9RPjcnu1/yWzcyVw8pA8S6W1r49g4dmI6anhDTf6Mt1UT5P7EC52AD/qVStucRCbd115vE3x8DVbbXwkPSV5IOUiBjfdc/y2sXpF+Mw1esJMajhXBkG5B5rLs2PAG6l4YW/meRkGT2m53k+XHmqcAsFNSC7dqlO2GEw== 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=xKTBm2RZE0pMVnRAxDCvI2tXHKoAe5L9tuqQ8B6N5H4=; b=p0bDjq3LrenkrAlWLwXxUvW3JnroixD/en0rBZzpaRIznwbhxlEwD+tFeOvRzhK4pf5wAfwlIGerCGWRuiDP4cZxiaR4JGXZSG8qgISmUGpyvast56oFAF/k8BYTVd8tNBBCH4pu2PIZjzF1xXnsLkS2snscrhP7gnKmR307csKhK9IoqcWoSdXA84R+BC/sE7jofExesVQQ7qq/rd9ssupeHQsZUa1UgyC8GwZPlB7m9x13EYnLdWZDGHV9jHaWINBFUYE1SJa/Czr7aLoiq7JByKBHBpPfe71XMJta0V3peECYjic0MC+XQGV2EMnTZ1XmoE9NWhPFQYF6Vd+fuw== 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=xKTBm2RZE0pMVnRAxDCvI2tXHKoAe5L9tuqQ8B6N5H4=; b=Mcpy4rHY46EVMe4DndCtPrElFeLJoUZUPjTWwhxBKAkIdYDXUaV4l8crGWmX+VrsZFjbYWMi6BDV8HvjeGoGrMbOA1x+Dt7PqQdzQQ+Ca2U3qaMpo4KPFFVU6z/VmQZDs7H6TNW15yyrKFdJulVBpSNZua1uVFhYDUC87pdit2bsE9CCPEs/sMhYfPqlPdNPu5aJHs3JwsB/B/4kLUuazM4kMd1TYrQ1DZ3yFiz0HCeQtzYzXuGko8M5EUmtH3B2H8OS2VKFKZdB808go08gP7OYpnPYS21bWm/w1moUHAJwhXX64Hblc3ua1VR8OH2BSUWG2vhk75qiodWeWHCxew== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Stewart Hildebrand , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel Subject: [PATCH v7 3/8] iommu/arm: iommu_add_dt_pci_sideband_ids phantom handling Thread-Topic: [PATCH v7 3/8] iommu/arm: iommu_add_dt_pci_sideband_ids phantom handling Thread-Index: AQHbdww/vF8UEX8f+Eqe/gBBXDD4hg== Date: Tue, 4 Feb 2025 13:54:03 +0000 Message-ID: <67c485e674b2828e15660baf1d4c050e734cbb59.1738665272.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_|AS8PR03MB10120:EE_ x-ms-office365-filtering-correlation-id: 4f585b5f-d899-4515-ca54-08dd45236262 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|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?T+t9j3eoZ5J9lmsMNEOnXqup79?= =?iso-8859-1?q?TMFx5jfsalao0P1fOxm9dAF0qSBNq2LqhlNGmZkLh0n5vU8NVashPV5y9yi6?= =?iso-8859-1?q?QSAFbMPPsIkM9aTu7uCKdmwFDT5AfPr8XdfRYrJhoXDp8BAMZTd0gjoKPtGU?= =?iso-8859-1?q?RSeJmdOZ3ywtPjMhBMJz+EGMBDCIGDo+FYIkbEi8lb65QwgqOVFsICbEn3z1?= =?iso-8859-1?q?fDFPsZ8r3V7+pIDm/RV1GxgPL90UYDs7unT39ABXKYkmbGaV0MC4gKFWzMqG?= =?iso-8859-1?q?4gNHwEpCzlTz8uZX8oUljvf4AoMK/798tThpYvJRzJhy4klPmRY+7Hwc9x7B?= =?iso-8859-1?q?bP6deDSYr9akv2qep8RC+FtJJiw4LBsWibpJfVl8ZLDUEfkTakijFRbmjs1U?= =?iso-8859-1?q?vCLC2rabT3/ZZB1LzmqWYSwtfg86vOq14wO/h39kereXxEt/D/f+AUGo1cGB?= =?iso-8859-1?q?rdkeeOp5m8XGZPqoM8Y0uIJHFwiEGKvYyVnTnXcIRnMT48Vy6+YnsCRf+DlP?= =?iso-8859-1?q?O/KgeKzqYdA0RP4ZsIfeMmFsDp6TlgAOEcPSu6vWONepygPc1NcyyUk5NphY?= =?iso-8859-1?q?ZMzClJU90WJqda96QxkSSO5w3OZ9uRqfwqtWem3dvLsGYL0iyAGHj7VsmGnN?= =?iso-8859-1?q?JI4yrwowsd9wdVuzPYkh9oTB/uCkYjXHT96J0AuBDHawJ0/3mhDxU913YVMe?= =?iso-8859-1?q?BntVq6PKwinZp6AoUdB6Q/nwhoCd1Y/+ryLK0sQ2ZuOv4C4GvG8st+56FD0h?= =?iso-8859-1?q?SMZBl/TwP2kCCQmR+3dcUShe5w0FNxYS8RHoq1OfTW3biA7uyxXMl/PewWOl?= =?iso-8859-1?q?4GkgRZqWyEH2sy1xl1zUQk5pKiQ7jQC2C0iCJ6Xvw7e0RpHOutfK7EZMC2lE?= =?iso-8859-1?q?XodvKaothDAHLlVeGyNzqmz8vGOa1bBGA3jZWsl2yjYUAA3QM++qcgAoB+QZ?= =?iso-8859-1?q?33Ettu9AOPAKebdaxMGLIbYdQErCLZ+9BowisQ6jqn3qw9R/IzQnXLI2h4Qp?= =?iso-8859-1?q?QZtg2IvjtbGRzzjhPtx/H9aRNvlmKlgpFdc4GcjENVIN38/jP3jK7hqPvysy?= =?iso-8859-1?q?m/2GDmcz0629v3iWh8yor2xj9oo93w2JDL9NS6Nau53e95C6Or57aSxHHiU1?= =?iso-8859-1?q?92hifQmWKe+paS1V/srhGAxwF5IL2V6zocGn5AjzTNPbBczcJ+lEv98H7+Hr?= =?iso-8859-1?q?M0HX3P4UIpOpWwmoGvgtsGDI5eyybWWyWI5mG0KHzv4irTPS1TSqm5zn1ufG?= =?iso-8859-1?q?6zowqxGkZjDWCKjD+NnFphQhJS2qpELH0CUvBhCwQucLgTNwh1yi752+6MLv?= =?iso-8859-1?q?aFBI8EDBb4NEgj/2w/TYBS/wmQt05ZPTVn2GQEWCK0Xo4ooFeZZo/t6RntLA?= =?iso-8859-1?q?J5m0ulM9rb02Ua4iGgFpF3R2lab06qtpLaJjTl+9EaTydsTidhriTst/X46j?= =?iso-8859-1?q?X8X3KF9uk/eXkIXYY7M4L6KBRWVtEiO3K9GBBB1K6eDTgKeF0GXdaMfnv342?= =?iso-8859-1?q?O+dwlW?= 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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?T4RrpF9CRnxIbPei6iKNWcG?= =?iso-8859-1?q?+dggk37AzldAwUHX4H1YZIctfJmwnOV6RRKgWS56tTFllAoqz7lMLcATM4tH?= =?iso-8859-1?q?EPO22yeKoRNBZscVMMW871RVEvGrvDhgkcL00HRPSSFH9CowEOF7P85vxpC1?= =?iso-8859-1?q?MD2NUouHeUUc5T/dlhtGXxFAW4CPEx+RWer1nzxzS8w09qAF+GUNVUMFMjTE?= =?iso-8859-1?q?vpnj8AV4NaZbapLIvEL245l8T05RuwWQKWbc3P4MAhc0tX4bymO90Vf77HBE?= =?iso-8859-1?q?4fVlrYh4R9pYRzzSgWFOkTpM+DKPKe/Jp0LT3SCMbJhpgilf898WzDTKdybY?= =?iso-8859-1?q?oWiDi5AA+CXQbPQBJFrtK9HGAFFgJaB2iKSgJDm2FL2KGpiM0pCuSTFVQIEI?= =?iso-8859-1?q?OOxrQzEzr4pOQV75wRwptz+szTOUxiYG45GrvLG3W2Es4rXfWDA0bL1Y1WIW?= =?iso-8859-1?q?nZEexAE+JXcHgc+Mdz1WqtLemlTkcia+VyusZ3M7xsAxAb4SYCEAcZrhZ7ZU?= =?iso-8859-1?q?Mevyqikno72pdSYEi7wMoHo+jCjMTsnQi0i+MdwubNOInxP7JPhz8/nAiycE?= =?iso-8859-1?q?i9i/mrQYuRz4PMRuKvhXDYKDCY3hvU8end9nokKSj5oMaNshTMH5OEUmFF/G?= =?iso-8859-1?q?3vhCc9u9DD/RrzlNmBBMIWbMuyhow/o5ZhCZmFMS9c+Ql0WBbiX/3qrzhe9s?= =?iso-8859-1?q?66f1Xr3aXeiHXRqlyB7X0D2FXQ17gjw3KqiAAspTtxrsAln4FCPFgFt6uiEZ?= =?iso-8859-1?q?o8n4IuiMRqElQLfy5xIT13gta51Kd+vpsWIkNhHm6u6K0h2przWvK8XYAWy0?= =?iso-8859-1?q?ij7eF7S4uhTyLDD8SaJCoO2xBo2Rwf4RL226N+2g/fJ381SfqHYlvCTLoOti?= =?iso-8859-1?q?pRuGGuo0E/ZLTcqYSEa4TnjlWEZcu03TgxpMssax89jtE4AXCqplPJyoyeI8?= =?iso-8859-1?q?/CqrPpiRr4/m+M3zn7cMKJOIjHhOx/+5IYRKYvWZ+4273oSa2sOKk87saKq0?= =?iso-8859-1?q?PJblLeBS5vTdY1YCKgFm/+huOoX/Q8y+qT9LyKjj8O/wn4sO9NSZLyKQB7Dj?= =?iso-8859-1?q?40QB0eXXK39Of6/S3PfOv/E/B3wEFApdoIM/caeFho51XiWripho969mPVou?= =?iso-8859-1?q?LP0TBmSds+Q8H6h2xdNDv6Igm2R9xqKD95MWXAKjh5YCoIF64PRGT7PxRbX4?= =?iso-8859-1?q?vtpItHzxj1aUKtZzJFNt+Y5LvGg/fVYbLTMszURzH2mEbjVAlZ2Ly7LZYsfR?= =?iso-8859-1?q?e0/UUBWylm956UW2gs7me5LahikXqoAiFswFshwLNBRPYzHAfOhoCOsNEvkO?= =?iso-8859-1?q?IDZnQSWzlvib0DUa7Ozot9VA6hELW6PDvKuv0IZdZ3G6CS2O8nelmJSJMm5U?= =?iso-8859-1?q?Hr+a13bMycea/hDAusqBEp9BvioJ+2B8guU9fJsj9Hd2sHuJpF70xbIKK5An?= =?iso-8859-1?q?vbCTBxdxnZqY7+B6yRFFt5wGCisy69oUwKLlLIKlvSFx7WV9TBzarji1m0zh?= =?iso-8859-1?q?3vKz9jKUHIHjGTxTFK+6bhipFKJ/RMx6h1sSeu75ffq7hzaUkYcfIRTzCU77?= =?iso-8859-1?q?bDWTV07Vug3bMcbgv1Mu843m9/qgE0VpVXCPvwUslUiq7u+nIEHfg/RkP1LR?= =?iso-8859-1?q?ZTUYvxAL4Yz+OyoWKkenLXYOLbduX07qBSFSp9Q=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: 4f585b5f-d899-4515-ca54-08dd45236262 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2025 13:54:03.2790 (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: 4o3AlzrRC0EbagDZqj9WFgHxfSJOd647BuUWtDleX85OXECdjduCf+NP/wcUwlucW2WD7t3PpW9h291gwrtRJw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB10120 From: Stewart Hildebrand Handle phantom functions in iommu_add_dt_pci_sideband_ids(). Each phantom function will have a unique requestor ID (RID)/BDF. On ARM, we need to map/translate the RID/BDF to an AXI stream ID for each phantom function according to the pci-iommu device tree mapping [1]. The RID/BDF -> AXI stream ID mapping in DT could allow phantom devices (i.e. devices with phantom functions) to use different AXI stream IDs based on the (phantom) function. [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/pci/pci-iommu.txt Signed-off-by: Stewart Hildebrand --- v6->v7: * no change v5->v6: * no change v4->v5: * no change v3->v4: * s/iommu_dt_pci_map_id/dt_map_id/ v2->v3: * new patch title (was: iommu/arm: iommu_add_dt_pci_device phantom handling) * rework loop to reduce duplication * s/iommu_fwspec_free(pci_to_dev(pdev))/iommu_fwspec_free(dev)/ v1->v2: * new patch --- TODO: investigate Jan's comment [2] [2] https://lore.kernel.org/xen-devel/806a2978-19fb-4d31-ab6a-35ea7317c8de@suse.com/ --- xen/drivers/passthrough/device_tree.c | 33 ++++++++++++++++----------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/xen/drivers/passthrough/device_tree.c b/xen/drivers/passthrough/device_tree.c index edbd3f17ad..eba1a5bac7 100644 --- a/xen/drivers/passthrough/device_tree.c +++ b/xen/drivers/passthrough/device_tree.c @@ -169,6 +169,7 @@ int iommu_add_dt_pci_sideband_ids(struct pci_dev *pdev) struct device *dev = pci_to_dev(pdev); const struct dt_device_node *np; int rc; + unsigned int devfn = pdev->devfn; if ( !iommu_enabled ) return NO_IOMMU; @@ -183,21 +184,27 @@ int iommu_add_dt_pci_sideband_ids(struct pci_dev *pdev) if ( !np ) return -ENODEV; - /* - * According to the Documentation/devicetree/bindings/pci/pci-iommu.txt - * from Linux. - */ - rc = dt_map_id(np, PCI_BDF(pdev->bus, pdev->devfn), "iommu-map", - "iommu-map-mask", &iommu_spec.np, iommu_spec.args); - if ( rc ) - return (rc == -ENODEV) ? NO_IOMMU : rc; + do { + /* + * According to the Documentation/devicetree/bindings/pci/pci-iommu.txt + * from Linux. + */ + rc = dt_map_id(np, PCI_BDF(pdev->bus, devfn), "iommu-map", + "iommu-map-mask", &iommu_spec.np, iommu_spec.args); + if ( rc ) + return (rc == -ENODEV) ? NO_IOMMU : rc; - rc = iommu_dt_xlate(dev, &iommu_spec, ops); - if ( rc < 0 ) - { - iommu_fwspec_free(dev); - return -EINVAL; + rc = iommu_dt_xlate(dev, &iommu_spec, ops); + if ( rc < 0 ) + { + iommu_fwspec_free(dev); + return -EINVAL; + } + + devfn += pdev->phantom_stride; } + while ( (devfn != pdev->devfn) && + (PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn)) ); return rc; }