From patchwork Thu May 2 15:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13651818 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.gnu.org (lists.gnu.org [209.51.188.17]) (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 04CEEC25B5C for ; Thu, 2 May 2024 15:33:03 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YOO-0004SO-Ax; Thu, 02 May 2024 11:30:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YO5-0004EF-6S for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:24 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNt-0005ys-QA for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663809; x=1746199809; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+UqGxNkmEEVK9qOUIr81H5+0nzmF7R37bpPM1v81DI0=; b=dDZywA9dgOl4Y29stv6ExFskigt8htP6GnBy/d5iK7NIMhrkwQ9m2sqk gv9QaF4jhnGfWHODP2DCilb7TrOaha5eqyO3PxdBx2G9vzqUSxMfN4PhD NkvlOcSAuG1WwXHkVVaU636CRGJ3uS1ucxJP6uQWBU2gK68DyoOryQG2u 1l5XSpkra1HVZ/mGLO84k1Hl6B9i2pxc8cWUvwFZc+QPjsoW10TrwMcZ2 T2mz/XtaEvo4iNTiprb8GRzptu8hSF6t0Wy7OzYS3gH6FZtEpGokYrjSR 8UK/eUGWDUsV0ObXFnymqiYrKm6qKTKPYy35/oVNSJbRZI0FjPUqwWtS2 A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785888" X-MGA-submission: MDGLwFYRyRSZnQWf8tLjkjOymNtqXk/1rh0DYSrjB6salSYBs8ONmvj33F4B6+2p0OmE6Z4qIXgZ58ZNoaOoydT+RovQmen+P8uVh0+VwhM2BLQchPL61xEBznbyh6mvE+08ktWANTazvgBsrym+EXy/B5mUd+8bJl0ace9xP7wEag== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PAtC6Pxg45LAQ9kUh+TF24As8CKhDgBAjC5MylKvzkPIw6tahBbhgxTe6Ziu2RhR+1kcFGgZ34ZILzEEVy6I49ICO2AAax8Iu60dctK6sJqUlVw3T/cNs4CKRXOFWJhN0wvj+VYsQkzrXE2+/Qg3H+XLut5pU9jUGs3gDOX50HYyhathHgf7vpnUrOAa/sENxu0DE5A+JyEXtt/eAdTyI9rsOf5GAp0iA046gu9AJNNT2rmsH7wQQC5/SbYJB5xnBZsUUeb+cjsvZQ83lf+c139EMuVnJW6ToAto5t8aBK5yEJnEeSWzVzceNDd4oBr5nxZPoZAtuDOyjBJzS89x2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=+UqGxNkmEEVK9qOUIr81H5+0nzmF7R37bpPM1v81DI0=; b=IPAVQQhn3aTLGZEjm+VGK7e/o9QQ/T9WzJx7gNA4X4bcEGTjHXG4A1Fg86Z/qjpPPyIqDAaSJkg+qVFX1TrCMK2nvHeIvWlqKcS3dfnCgC0rR+GhlpUEUqMBpMJP9Gamg3STxh1oo2E5T5nReIutYjha3g10f1eU/R7D4AqiPwmRoF4C0cPrvqD/tTgwTfNUxRrhRZnmNsBy9xN26Y2PcnbgUdcnZLnqI8jJeAahG3501uUQvMkqAKtGUMqNHFWAEL/K8o8aB0Cxxa97PMVAxbAYWgXvBSC/1R8CWYCycvoq/THHF3H8ArctTzlRfsC33PTePphRMvXIQni8p1C3NA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 14/24] pci: add IOMMU operations to get address spaces and memory regions with PASID Thread-Topic: [PATCH ats_vtd v1 14/24] pci: add IOMMU operations to get address spaces and memory regions with PASID Thread-Index: AQHanKWAsBsGY5rV/UyOtoHHEEzYSw== Date: Thu, 2 May 2024 15:29:19 +0000 Message-ID: <20240502152810.187492-15-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, 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=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: f8641a4a-ed32-4d9a-3bd7-08dc6abca2e1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?zbThAkYhn7VWPC12WLthSQqcx2Mhf2o?= =?utf-8?q?tYX50eRb8pwejcpd3Ct9orDTMoFasq35plSqJWiBD9NZR5aS0RwR4iKHGiyOMtGGP?= =?utf-8?q?fBiBnbSpdoGzRgBNkWA0zlByRRCIH6sMsx7+4XtqzIblmU1SkSSrtr7m6V6/nC5Kd?= =?utf-8?q?N4n8V6psWfm+w+jqfkYANP3NBT4JeIYwGnfLT61IEeLc72K/s1UqraZDP/UtGk6t7?= =?utf-8?q?Gh5HPdn6raK6hjBzN33TR34k+i3YvwmE2HVDOrNAFJgwN2V9T28A+plad1YSeU6wp?= =?utf-8?q?abMe6G/SKpc4ciD6SMTOsqdzpiO0b4gylTWWkAaCuYuZyByOY4mZodKRiY/o2Gido?= =?utf-8?q?Xwq3DCtkWJVLEqvUVsIMwXkHXE9xWrr+FSOP8FbGS0jL4qCb00SjItcKabe96wx4W?= =?utf-8?q?IHLx3Ev7Zy8XypFJAFqpQGaL3fdfgDxcoJ/d+S/qJp7cVQ0+d6Q+A9yTbQNRF4vvn?= =?utf-8?q?33Vol6AUJWfwOTlV7tz2cK5kk8TJ9t9xXcTRn+Xo2tmN+KfrfyV/xmHvgwREG93Zd?= =?utf-8?q?xTLe01wV6dyTet0WD2n3V9j5NOuYcA8oc69EHft9HAVKlsa4ifaAHMtNhZDI7zUeH?= =?utf-8?q?O+lUf9AfwNRW4tY/tUbuLBhK1d0Js8iyPT4sregNAph7sp7Tk0PK3MctpiRFW05kZ?= =?utf-8?q?IU6r1TBzgRXfTcb9I7xJrRS80csP223xg2hFdYvOn6RNzGMVxWJ052zmK23wIrnW8?= =?utf-8?q?ltkdwHQSrfdUOwqrrO+Q6MO94zQUaQHCRNnEbsZ/6Duw3HxvV+9R1IGLhTN0fNgDI?= =?utf-8?q?djZk3KzOYKqi9Bhy4g4qfWjM7xNa8iI0dcHPnlV3N32ZWng37wcXUSKWIRt7h0NCB?= =?utf-8?q?Hoq6dGBbN9lyT6SnqFWFG+1btoaM3UsdPHBlBv7qRb1JqvGLB9hKiiBSwZYkgogjq?= =?utf-8?q?EVG9YlZK0XJzGhEYvxxP3EOHNGNrNXXWkNb6Wyt6dM3fnrkzzG7QnJCGiMcutuV3s?= =?utf-8?q?K2odO7Pj2mq1ayEhQ/NNZWHNvYt49y1paEpzLu7HdK4FN4RowEpp6upaz9+s8I0vj?= =?utf-8?q?Bf5qVrcQX58VkJR+ilAgHGuBdaMYccQse7qHreAiQJWjNufl6T6x43s3eLE9Q2tga?= =?utf-8?q?bGV5afmXDdR5Iuon1C+4JzTyZrPuGxD5QCfe/DYCqATP8mWTYn48E5gKywrvvnfUb?= =?utf-8?q?iCCXB8n+Bmr0f8v6LmDVVPWjsmcplGcvKO3pTDARzOofYsc1cy04oMWOR/rvY6x+p?= =?utf-8?q?xybAiwC4mQnaOX/1ZzIF4okJ2vGOYPWPmquCPyXnyuMN46KDteCn2g+E2ZVdrZcxi?= =?utf-8?q?qdVQr9qM527qbkKCTY1w05V5L/y6cq+L5jw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?/p+IlbM4+v11V9l5dF3LniMO7XAY?= =?utf-8?q?7trKhEDWIhclDuT2LMCyGlmrM1tobKaSgsH4SDmJDG5ArzmWK2timHjb//LkHqO4L?= =?utf-8?q?1kaLf5/UmPmCj9d6pv8eSzTE8QULWpPJxd+kKX8OK+dx3d3VrNYgV1BBqVW5Hl5mo?= =?utf-8?q?3+zghxuQ7pJKxzSR4IJxlo0HnlOb7WNDwzhlIjO72qxnZb4sDWdvBSjJE8It88IaG?= =?utf-8?q?HUxlVXwYzsp0AXQPAPd20fofKzCAvJaRLOx73Tf0+wlGbW3M3rrMtR2jB3iDknuHN?= =?utf-8?q?Fr+e7sy1K7NDgBnQjKE89u8LCl1IXqxcI2mCMZN6TRN8F6oGdeCz9yLVOGMbzUlD5?= =?utf-8?q?iw7fL6lA6yMRIs3JvCQSbdjkxmyG99hJ91W9+B5cHwcIAgowSpMz4g192v2+9qibG?= =?utf-8?q?t6v19twK/aH58MDNDZZ6YO4TALyFJ2EFw/sQH7cjRxAJcomC+d5CkHC5+/u84Mrl1?= =?utf-8?q?EnQQbmcti7JdkcvimjYEsWX7R1xhcEfLwSgcn47yZX+kOr+ria2XTJiIjujLN82l5?= =?utf-8?q?F2UPc0jpd7L9IYwQcSchWRxDQwbqz9z1wR0M9JIpClUkpy4fo0sINM0FQjJprT4Z/?= =?utf-8?q?DczrWAPqlEFuMmxCjaDa3cEvUQbFerxwJtfqrznGE42EvZtAtE0VYHQSxXbgbvZZQ?= =?utf-8?q?xCcuCFQ7PFOn23hj6ZUzT+Bl9uk+DUx4BlkSTZJzQ0uEvtHdTN11GYLk5TJ4aPCM1?= =?utf-8?q?VFsCSkMiPKoodSeoiajuBRC6nVGy/3Kl0F4ChYS88P78wdpIP1XdtrqM603JTBSgl?= =?utf-8?q?zwRAUIiMADLaiVafbY3GXRbfLOIXwHGKp2+IWuZdzZry/1A2XEfC68goPsDg0f1Nr?= =?utf-8?q?v+qVx7mQ5l42hQeP7Iye2ocOQH/55FoeY5EahzBI00pMeNyBA73fCjT06a/KMovTC?= =?utf-8?q?FbIpNFS4JZ8BQlv+M+6DzunZWw5OoEaJ3DfA42cmY6ynuRbXz0UyYqexNFLpp6/mk?= =?utf-8?q?Q5wNgxgDso76RZuECrDubpqzv5p8FxfeGldEGcI/hHLV9PuDAc0jxU6tXiKkgpJ03?= =?utf-8?q?dtWqIyKK5vx5F/h51NLAQFuH8sHw/sAOwU8cq/4s0vTuQG5/MWlUT5APm5bYSu1Ag?= =?utf-8?q?oaHnaC9QSeHpiqFp9xbxg5bydVd0bFk8/4ni3SS2n1ZzQEQcIcC+/C4ZY8im0HyjC?= =?utf-8?q?RbY9Oej4EmQlpSlA+5P+c/toP8iTIJ6Xso8m08XzsPD44Kyh3t4o9BSgSG3ouHX0g?= =?utf-8?q?KYz3lzRRBgwg8OKCsez4zPtByaZEUBLlu2nE3PB2AmfmKUVbY8pufL+9KQMxW3+w4?= =?utf-8?q?l7D+nYBorj5cq5ysXhM/KaAQPdmTi8NsKC3dqUGQ16e7zF/sk8c24eOTtE20oKRLU?= =?utf-8?q?h9l0edMfA+3FR3xjXenUk0Wn9hdHo46jB1hz8vwaSxpVcAyRLOu7905+FFbXPq/PQ?= =?utf-8?q?Sc4aVA9DGBHu3wt4j8b8ZrDTvzi4og6b1aQXUawdmwU5WtUbeF5RpptpE89LOjZIB?= =?utf-8?q?9XhkZ/LjynUdPaiCFBN8T4uD65TtBGAh8So8ZH2Wk/gtuWwXJ6F+kp7/GCGN9v3K2?= =?utf-8?q?/V3Pnx+6yWDR8ycBAcEgdY5ihEIGeYXX3PEcAQn0WqIZwkwDftiTVfE=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8641a4a-ed32-4d9a-3bd7-08dc6abca2e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:19.8588 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7d1c7785-2d8a-437d-b842-1ed5d8fbe00a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jYVUGmHRwXIdlTHFwvTWOH0J+BzrWmkaqy0plkezD+zdTRODVq7Uk5hRDAKP6bTw61dBh82Jb0iVQ49vB0gRWPc36GxapavZ3xGkw/FIE+k8y12gX0fbLm1I9GjpV4ja X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pci.c | 20 ++++++++++++++++++++ include/hw/pci/pci.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index e5f72f9f1d..9ed788c95d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2747,6 +2747,26 @@ AddressSpace *pci_device_iommu_address_space(PCIDevice *dev) return &address_space_memory; } +AddressSpace *pci_device_iommu_address_space_pasid(PCIDevice *dev, + uint32_t pasid) +{ + PCIBus *bus; + PCIBus *iommu_bus; + int devfn; + + if (!dev->is_master || !pcie_pasid_enabled(dev) || pasid == PCI_NO_PASID) { + return NULL; + } + + pci_device_get_iommu_bus_devfn(dev, &bus, &iommu_bus, &devfn); + if (!pci_bus_bypass_iommu(bus) && iommu_bus->iommu_ops && + iommu_bus->iommu_ops->get_address_space_pasid) { + return iommu_bus->iommu_ops->get_address_space_pasid(bus, + iommu_bus->iommu_opaque, devfn, pasid); + } + return NULL; +} + int pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod, Error **errp) { diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 849e391813..0c532c563c 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -385,6 +385,38 @@ typedef struct PCIIOMMUOps { * @devfn: device and function number */ AddressSpace * (*get_address_space)(PCIBus *bus, void *opaque, int devfn); + /** + * @get_address_space_pasid: same as get_address_space but returns an + * address space with the requested PASID + * + * This callback is required for PASID-based operations + * + * @bus: the #PCIBus being accessed. + * + * @opaque: the data passed to pci_setup_iommu(). + * + * @devfn: device and function number + * + * @pasid: the pasid associated with the requested memory region + */ + AddressSpace * (*get_address_space_pasid)(PCIBus *bus, void *opaque, + int devfn, uint32_t pasid); + /** + * @get_memory_region_pasid: get the iommu memory region for a given + * device and pasid + * + * @bus: the #PCIBus being accessed. + * + * @opaque: the data passed to pci_setup_iommu(). + * + * @devfn: device and function number + * + * @pasid: the pasid associated with the requested memory region + */ + IOMMUMemoryRegion * (*get_memory_region_pasid)(PCIBus *bus, + void *opaque, + int devfn, + uint32_t pasid); /** * @set_iommu_device: attach a HostIOMMUDevice to a vIOMMU * @@ -420,6 +452,8 @@ typedef struct PCIIOMMUOps { } PCIIOMMUOps; AddressSpace *pci_device_iommu_address_space(PCIDevice *dev); +AddressSpace *pci_device_iommu_address_space_pasid(PCIDevice *dev, + uint32_t pasid); int pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod, Error **errp); void pci_device_unset_iommu_device(PCIDevice *dev);