From patchwork Thu Feb 27 10:54:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994092 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 10BA3C1B087 for ; Thu, 27 Feb 2025 10:55:56 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXU-0004Mq-GE; Thu, 27 Feb 2025 05:54:48 -0500 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 1tnbXS-0004HG-Fe for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:46 -0500 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 1tnbXP-0005oQ-Kv for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653684; x=1772189684; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tQ4ZD/jVqFaAa80Rd9aB0joY7YkHKhzqxvXOWS3zxO8=; b=XA/xO2hneW3hgS8K1OM4Q0tAnf+e4vDte1suQZrbaj+E+FuCUXMWnGVi ezpPKIs88v777Wu26YFbaFxmA5rRC5qwJOm3pO4Macl0KVuCBpjMucdKB fbALEJ6hl9+MWpGHQnupw3XgSlScjkpU3UpW3zZjj85cnn2XrGaYSCWGu DYLbZ0+desO+JJrTtAfzijWPSvTe+c120HIMgGHzyIDlxz6YbhSxTn0WJ oJSNiME0S+a6f9Tp+qXoIysuOt80wOMllEkmiLALoaLdp/id76fb1tjJI GwRDiydZhehn2ZNhA99tmC9svxe3SlI5G8MFo7C91I8FEx/1WNlkyk0XW Q==; X-CSE-ConnectionGUID: hxdLEg5YQzy4MnTQu2uLZw== X-CSE-MsgGUID: 0vQU+eZpSk+0O7a0ow2Gcg== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331822" X-MGA-submission: MDH1rnFtvIUVNnUsXf1jaXVnkStTa78odlHZw+ez/Mz+zZu1rv81BZq+5Fm27J3wlaHGE2F+a86EZs20xTvDBNs5vns37vq61m+S+BCAh/xVxIdM+rE6Lk02omkF+ioyJPGx3dx/ioT6WDo3HSfyrlgUtutnMpLQHsHVMrpXPEQeyQ== Received: from mail-db5eur02lp2107.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.107]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:40 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Uk9Q7hE/hLODOtyZ4mGj4W35k/+hdaKlEbjFTAShybmZQQZz9Q4C7TJlKIgEubrXmPt73c9U9W5HyxmXG1qb3IJWNNJ5zZ/T7qRU/3IeGBFrQHhGhWlCDuf2vXS1ZZp6zr2TuHJ5/0XzpKJCu8C9h+sIWh/W25H+ftKTI8NAMgCW97hcZVb0AVlsjmJP30QYW7VmR1g5IHK/sFe9XAhG3qFrSSQdXx6pyIlTdxI/csujvYLun6rTYWdpinNe4EiXdUlH3eLez52Y0VpKBiqKNTDJzMD35YYZMz0BxQporcORECJhK9IgIHUffbjL60NhM1eM3ueYEhsaxfpiQMKOng== 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=Y7CTr+Rb2R1zqg2bmxcnsAs7xBENi9tcDM1WAW1bfKA=; b=d4gaVJx4qxkbzz6n0eIWMdqFYgYRweyFrsjCPlu9L9SR+Enbbf+OjKCVRuPXZRNMMM3Ka7POTS9AUxyJHvqZNGhXgo0OKLJUiJoD+saH9nIm2ZIQ2QYd/EwOpieyxU5cRRlSvKySznofYAuTpzN3Nk+TnqHcgcn8V7Cc5bZuFzHVkGmvpGv5YLH8SkvSi5JwUBBBoNsgq8Z5qHTvCDRfx9dQCElN8+HtKcKvkF6y77h9gCPc0GnAbdjHjOtcjZsUeJUKFiuSbG21ZClX3kTcZs2DZmjKyGKNVdFJJO8bCER42PCUzdaSYkBYM+W5et/VPVMPJ5qSulw8Vr5qp1TfGw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y7CTr+Rb2R1zqg2bmxcnsAs7xBENi9tcDM1WAW1bfKA=; b=r/t3SSdl5nLA9a0GGTquAuWGxJMFAWnrL77QWWcnwwsOFvfpIIpt9J/0GXPS8FPdCj43ckzi9zbVDB2uAFrxaayQiAeHYOthFn5nNy+uW3iLvTtcnuQFbm2b9yBNUXGXCh4dou3olfP3pNemdmPrhs9kZ3gSAcwhnQpTuzEw87mS/IAs2/3siHvD/3z8i1ZaJNYdSbZ3lguxPRvuU4h2ihwia46JvWDA8tjdCi6C6UlZ8xNc0Oi+aQ4oeaqgJZsDTWpVSdYAj84UN0Ymbr1GRjGYTcYaxrhB1jXT8i7qbz+aX6IS7ULTyFY/KkMS3IvmKG/q7rixPz28hM2Cscz0hQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:38 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:38 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 01/19] memory: Add permissions in IOMMUAccessFlags Thread-Topic: [PATCH v4 01/19] memory: Add permissions in IOMMUAccessFlags Thread-Index: AQHbiQX+k4wfw2jwrUuxWYSRoffAiA== Date: Thu, 27 Feb 2025 10:54:38 +0000 Message-ID: <20250227105339.388598-2-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: dd32985b-52b4-4c6c-5f28-08dd571d2172 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?srZoRJHo3aS05chNz8SYlph8TC?= =?iso-8859-1?q?pd35gdYtdVZj6uL+o8VAvPTgfYmYpMq1G8ADkN3N2S77ZXpdc1uL8jOXonGv?= =?iso-8859-1?q?T5GKKiRRdceeH7PNN5VRpwMTwt6T4Fn1HbZLxXN7L7RD1J0l1cWt40DDdTqf?= =?iso-8859-1?q?w93+4WMBPF49k9Ymv8txqO1HiBtgSz0f9nDNpD+QvZvolUL+ILo2jau9hmvK?= =?iso-8859-1?q?sI3/m9568LI5szLyDlPZaZo752sXpnPS4WPPeTJwLU8oB0JieuK5+MQFzWr1?= =?iso-8859-1?q?97GsnBh/zYrMSqEXPrdMy09Tl8vYaowazzpSUcxuCGkxPuYa4pWUCPI7W52w?= =?iso-8859-1?q?3AVY1O8wmZqAssbZ+K3qLKxQT8x9DI3WH+0Ycpzeb/4sHeV44HMZ0k0G8mzo?= =?iso-8859-1?q?0lV+MaMEw8Sad+RS10VSI+VhoRaxcgI/RWBiwPW9kYxNfbrWVv1XKEjWBBxe?= =?iso-8859-1?q?FZ7hEP1dA0oyyXE5vgUnBskZEXyojkFehZA09ShOqstd8csydXLVPpIKTZZG?= =?iso-8859-1?q?x41DPGj20f1ZwK0GKTC6cHu38utTSTm1tVTH2MGFtgrlIe+UV503JZd45Uly?= =?iso-8859-1?q?IBcjryZ2suU2LFFpgONJDhHEx9onVUoFTEtM6a42RYOit85mhZLbRAyFHSrE?= =?iso-8859-1?q?rKvQHdnXchTLe9L0eS0MqXSPOJhLG23Vxw+Rs043ZWCfO+SOpN4tDXG72/T1?= =?iso-8859-1?q?3ok637/zdbNNwzlJkW/ne8KIV6oHBrA8iSPuCF4wgTUm2oWBDuq431tqDuDf?= =?iso-8859-1?q?cyzPB62C6G/dkGMiN97mso0CTGfmO/W8QGXadp0+PTjVihBlgndVkiJvF7wa?= =?iso-8859-1?q?LXU7Dj7ksrasGuUE+yemtZHWWuNPQlIgRI+w0MwoJBFeE9JWVUXZbIfEasl3?= =?iso-8859-1?q?ZWFx4QL3KOP+HhJ4/E+wvA9PYcPVyDfoO+KB6S4Xgfq12kzCgugmD9Oj73Rk?= =?iso-8859-1?q?9kaXwOAc4cU5TI52HVyKbu1YPkC5ax4hx3cTfv2uZ97GjmipDx2UO2F3x94s?= =?iso-8859-1?q?SecFk09P/83Fp0C3CFePL2d4KPpENt3PVaPHK0Xn+cF3NMgejf+rvWLFO+8B?= =?iso-8859-1?q?e5/YZ2wBDhqYPXyPt19x7n3eLqJutC6k97xfWYIG2bTHtgJPzfObLTbMGPHI?= =?iso-8859-1?q?2vZnHCp4838O4pbIIg+sXYuZ/Txcl2uwuDVH3IsosGewefLkptoqlixy9tFS?= =?iso-8859-1?q?lkV3SK9s6MzkaqxGDsNbgxbEi3uJqE7MiTYp9V9xRoeWQjG0eJBNOPnOdjv/?= =?iso-8859-1?q?7yZ0ca1JGjgW9p8l6BATPsmDfP7I4NSVoO9APRKToaKTy5V7FUt4jQRLBmEp?= =?iso-8859-1?q?1yxT/DFaooXW0RWW9PlsqXwGJeloQJCc+VTsC4OdVPrFI+9QuMCKrWevFwpo?= =?iso-8859-1?q?3+mSAqqJbR51wi7wn+V//hDV/k/OlLNCBmKHWAcfON1+qsXKXIULLuSEuOnh?= =?iso-8859-1?q?LDS0INAaquh96tndbQxUxOZXIEfWt/V3g7DMPsCn7aljSJuFpR3S/Gb+3UgH?= =?iso-8859-1?q?NndXOi?= 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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?b2ueXif96zIap6y/AhL0LeO?= =?iso-8859-1?q?V16sSgPPxJliNYcrdB8iFRpilqanGaomkSAjN17neh69rp8g4xOv/C4RkA+6?= =?iso-8859-1?q?AT0XyZ9fmshfU5/10wAOsXBotHgopMMhyx1lrlmalmvc70FQXf8N3qbYS1vD?= =?iso-8859-1?q?ItWo5AgHWvIYl8mFTad6l9jvGCUcLovlfHcRDJtAZ/mAYEcusZZDtp+hFAa+?= =?iso-8859-1?q?p4nmUEY2itPIPURM5PD0UK6k5fzI6eqIep4txe41En9p1j9dpedu21llQJU9?= =?iso-8859-1?q?xT7OOljxiOo2lLXO7hVSZKfLSWLXnI54eKpBv4IeFqF+OFNJ9T8i1zlGH35G?= =?iso-8859-1?q?4FE1mcWLMrE/YK84moUonUBOqFEhHhuu395tLQGPYl8F2q841FIyj0Pdp+ln?= =?iso-8859-1?q?P643/F2GuKO+UHmX5cmLLp4JS/5P3kWiTGRKeo98r5FC7+5FCOO+YGOwdjRE?= =?iso-8859-1?q?rl62SVSFXHKlAxjKQx363gJCKGteiqTWv8sxVpKENKd/yhWij7TTOznxMBYj?= =?iso-8859-1?q?1dvDXhhy9yb59CfsLvKZHBzRXVh65ueQ5RyXlDsdFEDkJyQiLMntLfesWihf?= =?iso-8859-1?q?uN8L7TF6o2qYogS7YHOiGEXXlj0JVMp3kpzzDU6iHPvLggp0W2WmzNBkVxpV?= =?iso-8859-1?q?WJY/iKdWD8e0hxdqY85KZUZZH27ExVGrxzupBoCbKGEUfOi0ejfppTy9zWzo?= =?iso-8859-1?q?QpkwkFCtUf29T2wdxrJXrPBk0kuoxLOUQrIxdUmLF9zmeJADzoJTXOQ38jdj?= =?iso-8859-1?q?afpNya1BD/P9VlZKe3n+82/Ix/BYBDV8PcMAg77ykYcUEm8cGuDILpmalAtO?= =?iso-8859-1?q?FuRdWCtACuUxGzwABaCjMBN0sVJ2uvp6yjZ8XZazhav4UvcGaPeIZGGCwgBv?= =?iso-8859-1?q?BaaqfSiB26Q1lpG8zfdm2vlqaTJ8EBESiRh26O9wVnXPeAZLDIwb9DDszy1T?= =?iso-8859-1?q?703/ph3wiDpaDWYOw8TjOdAL/M8GcwiP+xvyktCAMt04cRWH+KYOS8J85vRg?= =?iso-8859-1?q?uGqlmKUVpUF1kDweQEgHjn4k+sLDGyH3kcTFDjDwEHKwtQITBq49GVKn64Ut?= =?iso-8859-1?q?16oyIzQiCNqDO7cA7x9dM6YtCtgJ6UR4RlX/uCfXakHE6tOumA9kKHGhpNzM?= =?iso-8859-1?q?eUkz/mneHBnPdIImdsdmp0wpcJaIRJKi2RArCLCubSGcvp7QIlDoF7VTiThu?= =?iso-8859-1?q?QZQBayvXate1yuhJNAOuwa8Ba9WL+G1fOF7M3lMqYWpEYwuHDsCQuAv1j64q?= =?iso-8859-1?q?NL7prww1qX00/MfWEIzhXggU0GdY/rGs4IY28/jcjlDw/NnkzN5oZQXMHAU2?= =?iso-8859-1?q?9gi1y+zEAnAK/3JgujM/d0ojM3t/Z0hY4F5TVNnlc1UThjQgphz1zJ6qkaMu?= =?iso-8859-1?q?Gny5YGhbSzfH289qIZ/ZZi7TKja/2YOBPt/XsCvLnQy94osjaELuTUZQuren?= =?iso-8859-1?q?TW8/FwGt7ivv76UtkvpUwd5+1BpnAe0XHO5jhRqjBAIcfQ7rjbECnX8zf6hw?= =?iso-8859-1?q?tku80rSL9IL0k4x9isHkSr42X8aLXTMfdpgihCDrHrfrEPEAUxrWqlNUPZ7z?= =?iso-8859-1?q?YMtMOsoTCqKYIY7ArYiE6F/Az8HDQsFJ2XmSiEHgccZ3NP7xr/5cf3/mc5N9?= =?iso-8859-1?q?320onoqVH1dZmUbjFOTjA7qbRR6b9wazTbkL/k6DrkNJC4BUVhHUQk9NljCU?= =?iso-8859-1?q?=3D?= 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: dd32985b-52b4-4c6c-5f28-08dd571d2172 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:38.3092 (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: QRGXKAwbxO3cEhlDQQZzQrEQ3iff4c9zfcjYVbZr20vcmbgV6oAlQdxaeAWLdmN54jQ9qtdokwBVmbKFQvFvhMpWsJ4Ke49AjRWrEyS8xU7G9tOwEhx8BNFuFNAAnRyI X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif This will be necessary for devices implementing ATS. We also define a new macro IOMMU_ACCESS_FLAG_FULL in addition to IOMMU_ACCESS_FLAG to support more access flags. IOMMU_ACCESS_FLAG is kept for convenience and backward compatibility. Here are the flags added (defined by the PCIe 5 specification) : - Execute Requested - Privileged Mode Requested - Global - Untranslated Only IOMMU_ACCESS_FLAG sets the additional flags to 0 Signed-off-by: Clement Mathieu--Drif --- include/exec/memory.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 78c4e0aec8..29f5d31eef 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -110,15 +110,34 @@ struct MemoryRegionSection { typedef struct IOMMUTLBEntry IOMMUTLBEntry; -/* See address_space_translate: bit 0 is read, bit 1 is write. */ +/* + * See address_space_translate: + * - bit 0 : read + * - bit 1 : write + * - bit 2 : exec + * - bit 3 : priv + * - bit 4 : global + * - bit 5 : untranslated only + */ typedef enum { IOMMU_NONE = 0, IOMMU_RO = 1, IOMMU_WO = 2, IOMMU_RW = 3, + IOMMU_EXEC = 4, + IOMMU_PRIV = 8, + IOMMU_GLOBAL = 16, + IOMMU_UNTRANSLATED_ONLY = 32, } IOMMUAccessFlags; -#define IOMMU_ACCESS_FLAG(r, w) (((r) ? IOMMU_RO : 0) | ((w) ? IOMMU_WO : 0)) +#define IOMMU_ACCESS_FLAG(r, w) (((r) ? IOMMU_RO : 0) | \ + ((w) ? IOMMU_WO : 0)) +#define IOMMU_ACCESS_FLAG_FULL(r, w, x, p, g, uo) \ + (IOMMU_ACCESS_FLAG(r, w) | \ + ((x) ? IOMMU_EXEC : 0) | \ + ((p) ? IOMMU_PRIV : 0) | \ + ((g) ? IOMMU_GLOBAL : 0) | \ + ((uo) ? IOMMU_UNTRANSLATED_ONLY : 0)) struct IOMMUTLBEntry { AddressSpace *target_as; From patchwork Thu Feb 27 10:54:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994105 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 2D61DC021BE for ; Thu, 27 Feb 2025 10:58:16 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXW-0004RM-E7; Thu, 27 Feb 2025 05:54:50 -0500 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 1tnbXU-0004O3-PL for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:48 -0500 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 1tnbXS-0005oQ-Pz for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653687; x=1772189687; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=uJlqSs57TInsB3tqU25LwXRqfzPv1aIxe7YNYeKhHCg=; b=B4oo8sBve8WSXinmL55BQUwy9be168x6etuRkQNaSFvm0gBHsTLOKCOB j1xtMndbpJwFqgO7dg9liNxE5bnKWaJ/s88g77SobkPxrNk7/Yb35wJWh p0RnPJT/KtBgidwNGYIYfXq+Ag21DRXc9S64v8n1RwC8WhPlh22+e0Hqu 8lVJnFXxDcLbJPhBaZcrURomxovsjDk9c0EnN3apYzoUsrw4lER2XgRFs FpGla6JUT1i0SmAhOje9q05gQBy755znMA0sxrWbE9+G4WZcAYGFtECO0 oUItzP3wBkj7b7lkEiRywWkenNk96zqULgwik0dq2+5zNmYVJCPvqbjj+ g==; X-CSE-ConnectionGUID: dOGnd4qaSTGoirVkyNPjgg== X-CSE-MsgGUID: MMwO2DUwS9aZDOmhfAf7aQ== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331823" X-MGA-submission: MDGG3lP86Eo77XeRQH4/ETnsNrpH9Z0rxNc+ddS1jFpTZMxPSiZopQCqLZZ1QIzqr1a8MaNKSHYWOPMQosYI39Y4r2HopJvCF39FGwK9ROWfh6Q1Vagi+09OlWUP5fyNlA6wP3XC1tIPjlNNtU3unrfahgVmIi/MNTRwPiSYHG2/TQ== Received: from mail-db5eur02lp2107.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.107]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:41 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FFrwRnfsbDMdbvbRSOB8e/TYC4ZIHZNztOkfRhLwMZkchucMDKxFsfvqMjn9RqhfqZuU9BGM6T7VbwBmRA6dhNdOzPoa1+TxGslTzrrEKQIvXqDjYEZxX6x1ZB1OeZqnfP0EpuNXQiQ+e1PThqefVrXYBM7CnFWwMDsTVNiS9C7PFVAEgzIhtm1kIH4wq8a1w2wOJmLW49FEx9fI8U4Q2oajqEgnuTilbORGIs03ZR+lK29Z4MNJvVtRLA4N2Osf9L+7xSwdnAjlmAbhx8NkSTGI6nqaMS1sL6Q5ys6U21y/xhIaXp2ghwd/zl3ekGFt5KDdFio2qIQaI92k9dU8yQ== 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=qIT6AiwY3yFCcHWXpCPT56LF2YCfuC6fJtGxDNZQlvg=; b=WkatrCxwncU4gx9TXU7d9/6fR0cK4tT0quj6GZh2pKtfv0glsv//qkmbCE09SgfcGBYMGsctbtJy3sN4HHIFzj6Od7Qde54PRDyzVHxXQRxlIJkPEo2f9awa1dz4Ya0vfW5kw3lpfCDs4Lr5rdhYZONGbUY/Yay/vGmXaTj1T4+2qG1RUZ881F3VKd5WGmVBziAuUVYl+yLxvMCZLZJvS5ZLp9ECBAKOviwQO+ywCVvLA35lF5RmWu2AZtkMGaH311+Bbs9eNkL6wlzhhaU8n5EE71FZjZq7W5sf+izhXrCIwfNDSOi41+LiG4PT0fYGo+sTxV0w43sJngRlCsDLmA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qIT6AiwY3yFCcHWXpCPT56LF2YCfuC6fJtGxDNZQlvg=; b=ruzA9U4MhlFoOSCOAaGsP8VZen+dHMC3ZyawV1SfBb36pysfGFwkoTD2uvfqZim8HoU3qvqL6YiFGxTsoR6ziFY5Zs058ad4Xe4IQMQ/4PEPObUq/+7MvA+K4mWLlTxY7dCSFdOLSNZsLty5LGh5x365qyHklC5Hh8La9cs6l2hTalqwhQ01MXu9YhKzk5R9JGDwJnrVLaXBbjAuW+24RinFHCNsrVwQeJaLTUkXBKgdM5/rBKO+xrCTZpmWRrx31K3xQlubzB+XieXDgzaBYH5arV2BOnN9+A9eK4L73Tm8ZQNe4UPAsd7IQ0roS0GeHEdrR0t3b3w/3SmAmC7Gxw== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:39 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:39 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 02/19] intel_iommu: Declare supported PASID size Thread-Topic: [PATCH v4 02/19] intel_iommu: Declare supported PASID size Thread-Index: AQHbiQX/o8yYX3jsPkeXKn52+RonVw== Date: Thu, 27 Feb 2025 10:54:39 +0000 Message-ID: <20250227105339.388598-3-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: 45df9744-c6ff-479b-6e98-08dd571d21e7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?QjmrrSOvdyCi/IHLqelhwvlQ+N?= =?iso-8859-1?q?iN8P1bOwTS8EZso1VzHcPJEbcdSq6Al3xxzSY+bzXB9jV0BwfjpQ2w7s/trF?= =?iso-8859-1?q?WfINUb2txlJLvSQqrp24h4kQW5CpWm8nZ0WnBSwmOspRPpmY4Tnb2m8GPyeu?= =?iso-8859-1?q?YPVh/EaMwxPZKd9+ltvAc0LasgjMFU4wFCkaG5hHej5JoOKc4DMHj7Ekh3y1?= =?iso-8859-1?q?Wo9HUh8jtwFRJJicnpME0X4mheL1cFlIzx57XB+cdWorxzBKWSz41aa5+Scg?= =?iso-8859-1?q?zFtbQ4i7jZp6/McexabSN5YsUqtj6De8rx2H0f2MZqdChtFNO3rC9c/keCSa?= =?iso-8859-1?q?xDrHd4MksZOsJvGdJpdA2odGBKAfa9eHtonXX8nS+S7oJqSmZ7IRaFQ7no3C?= =?iso-8859-1?q?lCiWZi0+u87hOowv7Uc2Efb6PtmSTs8ktNqciUfaW6FKORqDikqSlKze688X?= =?iso-8859-1?q?/t+1PPgE8dTstMBg0iVL0WooBNaXSy7e2DQ1ZWqE/fi+3TT036qD/OLsR7oD?= =?iso-8859-1?q?XG6+F44JoQoFS8BXT1A4D1KaAgYPzEqOF3B3IOzMs48pOjptoblmANwnZk3t?= =?iso-8859-1?q?2fObNx9fPKb3CqAmqkoHavSMZ/xIlym/K9wWnTKnXi+QYjBVcTy3sKiEnWcg?= =?iso-8859-1?q?LPqQ7C5sMzkXFJBWCwj3CFxyGg3HJH7MaNGHGuBNTqNzGAU9tMY0WzlJfpLp?= =?iso-8859-1?q?/fJz6EQ67u+VJJfLNnFba5UbHMXAab7mBqU6fI4/i1gBHyrlskQZA8PSW6Cj?= =?iso-8859-1?q?E/EQ4Hzb2tPIe9MFZ3h5rs7XHr/fJBgVeQkyrylM4pGX0Tys7wu6r7+SWCrF?= =?iso-8859-1?q?QQJvf7n1vJKjEtsrTGtIwAeTTP/pobsXbXpGVdjQVXNeTlYw8kGxFMR8PdqQ?= =?iso-8859-1?q?R4E2gxmy5zuhxkczty+noPguEcNzqkPySrwP2wEZznt1WTF9dilsjgWdeFVJ?= =?iso-8859-1?q?7MK4CG0oyYypBlLhdEZpLv3VHKPotm9Bf+CT+16BzNt9H6i1Ymv0iUz6gGTA?= =?iso-8859-1?q?mTxWhQhYClVwKapIivWzb6MgTg3eLm107aNF2QdupjmoGmZTnruUlxMzrhow?= =?iso-8859-1?q?nOS5AaWg/NngrwXfxsAXFzXbB8FgV5hWxnandyUXVsKXMnk9iTc8rQwUublT?= =?iso-8859-1?q?sIU8DkpyCl5wMQwX8CzgEz9NI+C9w7tM9DdQGaHQRy4F2xToIkOoPj3CD7n2?= =?iso-8859-1?q?lPePFzLMVPA/80Ry8NN+Z0VvV0O8mc/81Ep2lMqyu0O8Ske+JnJAVJsp7K2J?= =?iso-8859-1?q?isvaPcz9+p6K+XlbOXIm8fenS6xMjfZns/8AkyaXW+47fhezOKh7JgLiaKmL?= =?iso-8859-1?q?Sdq5e6pmPDJE48kHl7N2pk7GIp0uPyMUcW7WxKfblxZbE8Pzy87iP7aemg9w?= =?iso-8859-1?q?/nOWQYzAG20gcJzTRTqX1pa9BxkkSBL7shST9YPNhe0qAF4u6BTwTKhSRDxb?= =?iso-8859-1?q?hIG+2RHGpk21G8EJHjSRVCngNgOMQ30IEIkmw1kwtyhwM=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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?r+CYblrJtol3Iu3mVDrj7pB?= =?iso-8859-1?q?HOYwkeMm5U7io8VPAXk6T5RGh8hpbC4XTMvRo+5NTg2Vk14FPeR3ey++ZwGV?= =?iso-8859-1?q?I43AsjlkkxFiNhO+Hqnq2LImSIvndOAnTfnTkNry1E+zGB3sp99EHzzzzz/P?= =?iso-8859-1?q?pa4B2gGwCHAmRDDYN5v3xgRWCYbuMDIEey9cCbxeG9wZ2KnFEDeMGgn9Fs1n?= =?iso-8859-1?q?ZtYlLNVRDjubi9Ug2tEjdZeMkMMZPWYriJEtzwD3cnAyoeuAVGc7bo+n286D?= =?iso-8859-1?q?JnI9IPOzWjluRjDw4J5Wu5Q5ZsksY+3Ot4cz3ZvLtjI0YeUDA3cEnNOjFSRV?= =?iso-8859-1?q?xNgszENniGu5NHU4vm4q3QWqopZSNByMlhFf0Wk8nxIDX8JbEZWr+lfOmEli?= =?iso-8859-1?q?uZpdm/Q+jWHy7AvaPlwg+TTh88ZsRsNHd8Pn5MyT7fNDNvOC6527KwGY0W9W?= =?iso-8859-1?q?Z7XpCLGxW4aoXcG39tPsNP9TT2Yz/XEuphkqXDiOLlWayj5qfxXIUuPAjLij?= =?iso-8859-1?q?/QFaxxp4DSIGnoYT+CjvDqLg8/ftJ1niR0fc03TsB6ygvigTtfHT2dqeoC49?= =?iso-8859-1?q?djv4/cr/J4KJNkjeXnrqtwBhaZZv+gGaX+m899LzA8HQxlZZdTaFDbxfCXRg?= =?iso-8859-1?q?kzNhiTLYtvoSpOLdFbrAOu7pDnRi0og0aMimtcOhgSCfARbGOhKCApmCQoEn?= =?iso-8859-1?q?FR6PG4nlDi5XylAD/lEbt5vMHPpo5euRop6j7NiX+4eXfWIwnN3RP3tx2p5N?= =?iso-8859-1?q?ZSUCApRNLuXS907IiJXOkBtbMT1PlDwZ1hHfdqhkIk/49wSKcCIPehzD3W9X?= =?iso-8859-1?q?c3Qq8gM8HrzJPemMcR2dnmKQauu03mKfYPR04TUneuUh+xRIbSaZZrBhr39d?= =?iso-8859-1?q?mYeHf2YdbGsq9mOiE0BJvGGBO/TeEhSS2OVHbN/M7Z6TyQPOIigPH55Jqp4b?= =?iso-8859-1?q?bUKWv/Sd3B/3tK+xvKg2G2xTnRMitC1fjqlzEKgEBJKOCK4LnH7obNwQlw6Z?= =?iso-8859-1?q?gzG4D0SEI6do1NA9+CKjv6N7VStSEbKS1bbHrGAOfEJeJ0P8j2h/IZ2l4Dq1?= =?iso-8859-1?q?jW2q/2wd8Bhv70ouRgH783cBuxsXudTQNg3wltrtPhk+sTn27JPRlvfpgHJu?= =?iso-8859-1?q?GqO+Su+6YAQI5BANvGn/pkt7YyqFsqX6bfNK4qHSf982zieXEWG+XesRsjjT?= =?iso-8859-1?q?ZWhIv26dypwkH9QTUGoByxiMCVne5VIPDa4U+8Ac9WApU/+d6BsJ+HKP/o0v?= =?iso-8859-1?q?DoIvjacRNdxF2mXgpeNCjsysPCzsOhDjDGVtGAvVvR9adKINE33RuYCV3jXd?= =?iso-8859-1?q?bgXYyIHtenzKrAuLmdKAatLbyK+RAaY6ZOru/JmyzIdeUKjVB+h/w2WG8oAz?= =?iso-8859-1?q?wBTcCW62c+YH1gxvvY6XkNS6pvSuit5yM8zhSn0RE0c0qp1l7hrOhNDkxDH7?= =?iso-8859-1?q?7Rbro+f7FevChK16zolj+yFX5rvHo1mFbns0nj+4IthPxM1Nu6zLAttSb8VE?= =?iso-8859-1?q?2xmS18xJlJgd5jYclNG0jynLilRCaXwEU1/fKJzWSevHih1JoudYjwwQVG5B?= =?iso-8859-1?q?wWgjPTm1qhboLZno8R2uqq8QHDa38Hew4wIx6ffLg6dFvTgmwA/7/zQIemlm?= =?iso-8859-1?q?ZV0XyAxSiBiAjsaX/L0G0gyv7ctuyLSJfbbVAwZlQ+zYJTZzblVls4VUcsa8?= =?iso-8859-1?q?=3D?= 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: 45df9744-c6ff-479b-6e98-08dd571d21e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:39.0547 (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: +9T3B68asy/jpmCdamHkSuwePzHraTfP5+u55f4dmsEnsczZESUzxPBjMufm1SLPLNLLMFfXO0EWV//4JbEWHo942GmGKZAY68YPS7FrQR2vfjOEdGqtVFl2rg1+GD+/ X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif PSS field of the ecap register stores the supported PASID size minus 1. Thus, this commit adds support for 20bits PASIDs. Signed-off-by: Clement Mathieu--Drif --- hw/i386/intel_iommu.c | 2 +- hw/i386/intel_iommu_internal.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 7fde0603bf..1b4aaffedc 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4574,7 +4574,7 @@ static void vtd_cap_init(IntelIOMMUState *s) } if (s->pasid) { - s->ecap |= VTD_ECAP_PASID; + s->ecap |= VTD_ECAP_PASID | VTD_ECAP_PSS; } } diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index e8b211e8b0..238f1f443f 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -192,6 +192,7 @@ #define VTD_ECAP_SC (1ULL << 7) #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) +#define VTD_ECAP_PSS (19ULL << 35) #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_SMTS (1ULL << 43) #define VTD_ECAP_SLTS (1ULL << 46) From patchwork Thu Feb 27 10:54:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994090 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 13C8BC021BE for ; Thu, 27 Feb 2025 10:55:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXZ-0004aV-W3; Thu, 27 Feb 2025 05:54:54 -0500 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 1tnbXV-0004Pw-Ls for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:49 -0500 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 1tnbXT-0005o1-DU for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653687; x=1772189687; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=w64iDFlh2Vz60cutAFr32ZTAug7hSDs8iVKBYK9r9f4=; b=rxPAaF8++mOHbsTDYxo3NevC6df0z2VsQVNHz2rsR/H8cejMYrhVwoAD RInvL0DwO2mmjg9BpdRpmniyi4q1URDxlqULfwgNvTUMn1SFlN+ky5rkU mFaGoDa3rdcYTTpERelYssshHCIdd9bl0/SqACRa8AShUeyFRw7yiFGCU nqqDtgjG8DYGpLFPLEXcqSswwz5XRJI7kLL0nnsWgGyTD22B/4czrRE7I Sd9OHLz/gjkjl0wJpY8icKTGsyZErPEe7fy2sUt6a91sFps2BckQBSNDC LsotweMBzdrNtU82pgO7+p0yg4qd3bzXKUzvQTDGwGFUwFtSIUpJYpROt g==; X-CSE-ConnectionGUID: vFnG0ccfRemIvrLRI+mG0g== X-CSE-MsgGUID: sMaCV3u8R42paAlSFs7y1Q== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331824" X-MGA-submission: MDEB1ZH4u+mMjnEHOHgD+Y6+nfawvMHGdGCYbIRHYN18cHDgw7b2s2XJ45ggU5z7KrnweJgymhq9kChzSUQY/g4bkH7dqY9MpeCeR3A/zT23eSd6ssMJUns1gCTRHp0YzWuNhaagLkq4nENCewJzVhwSlt0VaBPa/h2JsGh8OJnBbg== Received: from mail-db5eur02lp2107.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.107]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:42 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qIP7PsJrUS45pz1QLIZAemBRzwrG3sNkX2b5qHhwvvxFhdlBOSZ4bDMOPKRFW7n5DHB3evIl5g1QW4HuB+DDKyvPG6skz2LoS9R5+xAVVYf79V4sHiyg/xVPdoYrWv253FqHbvbnqrW77oOvVCkXZUWYbfIrFQK1AARjnSJ5QVoPuGyzbGYmYb8NKLxOkUL2toyjdJCnQubpxhNt7tWdV/tP0PF2IVbbQEQMt8SSco6q/VdxecKTsLDgvPskr30orGuLQlzwFJQgizIJrV7wUzt7OL80mfZ/wuLBrUS02HTzbJW+DLocj/VAtKNnfx48Ff30VKU4h0loE5DpnHprDQ== 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=QyEO3euh9AoZSwkw7yqOQrDjpjZ5hlUtxnMlEg/EquM=; b=lMXcKFPcB6wHP9++bANz39CEBY/0IXazF0iSWaFdZwTIe7pvEN1NwPdaHuLtEXPt6sD1gWF/LAxM5J2Fb+DKzFq4DtAq9mJu3lilLd7K4KTGk+NXDeo4CfAJMzjYfripHasVnsc4UU+4WYOPZVIma3BbJ5pms53AV05fJB9qOwcmIBThR00Y4M+ifejqos4WMur4CXvGLvWLeHQKeq7D6WMeFHiTFan+IJaFtvOxFwNGwgakgRp16F99n3VkZxS+4imNUOrFwgZaiLPZj1gxAtVbAZR+V82o3yp81AF3P2vsMYLkn/prn4NCefm8P4f2oFLNC2hvhhwuoHRH6cARVQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QyEO3euh9AoZSwkw7yqOQrDjpjZ5hlUtxnMlEg/EquM=; b=seas2OoyIA3o59oswz4YEhtMslcSe5h9oWGYU9njbwSEPOqMU+imemGQoUpQGxU3Y6RszWmDljed7wRXk4lWy61bZkFoSfwaPs6i5wVjDs2RunnU5F1NUTGVb+0DSp1Cf56H3JUugIBvatzvnl8gIn82t+OHpUhBHodIkYeFN8CeNbwJbTRkDf00J7wXTX/V+R55dypYj3vWvdZYR45UEmTy7VYj3FzwvVzHZWBIzq5hceAWuoUXNqEG2/Ho6lRN69rVhWVRzGFqi2vzLQnh3lTsAaQF0NNsFtBtSwdBlWxSPNWcsIrqWiS3HUOlH0V1fN2dqp+LA0ncbrTB1dpigA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:40 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:39 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 03/19] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Topic: [PATCH v4 03/19] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Index: AQHbiQX/97budXCOW0OVa06qd5R3iw== Date: Thu, 27 Feb 2025 10:54:39 +0000 Message-ID: <20250227105339.388598-4-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: 05a00447-4084-4bd4-5b4e-08dd571d2263 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?W0TQArn8FW8oTD5AEMZ4x4Ed0e?= =?iso-8859-1?q?AZyy5nRQ3cub9P7ONyNOYw2aiSgnM/FuSbB0x9hyUUd5TyxaQ8uP1h5OlODv?= =?iso-8859-1?q?xp4bvZtLqe8BG01CAQAKWCDJii36WQcj7yWmeHXVJWspaVD1lybpxTVgwhWc?= =?iso-8859-1?q?0MMs2KHzlxk8BNs4w7nMTHZQo0rQbRUC6JlOzL/bfGXPuZ4Jcgb6shp4AIR+?= =?iso-8859-1?q?8ts58dE8WDOVCW8s7UfqT34R7az9oIKFiHDaz2TlXq4WeTn+KfgPJIwqem2/?= =?iso-8859-1?q?gPBpLWidIlDmv8bWNZYHdwS41h4hFUjP2MryAqrV0oJ7fMa9z812tFjdP7V1?= =?iso-8859-1?q?NWIu43ljLT2Bb0m8WHK1RB5988mB4KVWpDUfUrl8+kjNMfGie2zJyD/wFcaU?= =?iso-8859-1?q?XhO8D7Z56auhvYbOR79YsIqoZaiCPm+7fIHa7cCI8Glaq6kfdy8DyEwFUywi?= =?iso-8859-1?q?zfzhl4c60EB6UlqOPwEHfczOT6KH+yqtQ8F9JKEFWF/EQWALs4ChyS3ee3Xy?= =?iso-8859-1?q?Ac6bQHyMv0gKfjBgFN2ecjGhjW/tbnrUhzcH1RDRpnG2DfkKZiTp5P81k3ZL?= =?iso-8859-1?q?UGHWRXc1pqV3mVlGOTCp4n5ZJ2IXv4Cj/pCD06RiwxuMS6W82Njls4hOhVIn?= =?iso-8859-1?q?YOvsM48db0uAv8CkOfm8Tq2LwPGbWAufjxqb345xpbcSYIW1hs2TOOsvWwCo?= =?iso-8859-1?q?y9P/xBrUlaUkzK2g9gaY/nChIbviCj1yA9LfB2jF7yiY282fzB4cPaMEZqdK?= =?iso-8859-1?q?q2ZtoLla+72fchRkQJbOYp/FfaJMLwNVgfy1aCQxVDyI8zm7pVzbImUXVIPA?= =?iso-8859-1?q?VF3KzZhyXxKFWUoiXAOpUY9P+jpK5cm/O4tFGY72sIOfyxTESealgKfzkK6v?= =?iso-8859-1?q?ciVGPHwdLEZIjDINPUqZoP60s41X5zGJoZThqB0GvFy1vQbTGwfo2zG9WW7A?= =?iso-8859-1?q?TEI8NnttMb+WRiiaF1E60ADI2D5SeBYZjPCDfE2BDpcA+MUwCyXrD/G7eZ7C?= =?iso-8859-1?q?3z6ZC8WVOX0v8gTNOh6B+8fU+Ad49hEeBLLrsOWQIS4KjUzHdJZRQUV19K5o?= =?iso-8859-1?q?FuGEvlkjGpGI1p8mRqkSP5dPm4WdJT5CGvXOkdt6JzGoGoz3RCHx6nQOeuoG?= =?iso-8859-1?q?ovfnKP9W2GM5BNVxe5a/XGRXgg30EOR3AFX3NeuyhoI1wqkuTCZYysUp3LN9?= =?iso-8859-1?q?XBluy9xbHnN5Mxm1xyMc7/JNr1kOoNmvxJQk2t0wMS617elh5CmAtevljYE9?= =?iso-8859-1?q?UrxvR/wG+pltQ16OtQLd+ounBMoIRP7XrXRRuMn+72BAIxi+KEJD+uhfDX6b?= =?iso-8859-1?q?vfgwTUKbuGqboE/vHLyodM7bDafonYi6aO7eimGJOfKloPHNVFkEH9MEfU23?= =?iso-8859-1?q?vZ/1mfDG1u2mjj9EBO8bQ1N6Ybxw73tNBBgcLRd0SMz9kIwlpi9njpUPqsB7?= =?iso-8859-1?q?fnszzzP7C5NHtx4JmgGAF3ipX8Kye3fsWfMaLA8ZStf2d4o2r+dToKZXfFcX?= =?iso-8859-1?q?tNNLmV?= 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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?AwRXBSohoodMn3sghSfwdoI?= =?iso-8859-1?q?bjfVRpSwgmfVBRycIXiM7ulNt5sZanLwCwkgxoqzC6fkg7mmVAk9Iyfi4Jh0?= =?iso-8859-1?q?ZWUW3i0mslHf9L4DRhVOaxvHNuYLGdJPDmF6mLA2mtojfTY1PG5b251nvJeu?= =?iso-8859-1?q?fn2Z6wj38kUWGB7XfDftBMWNY8S/cQpSr4ZtlWkxBe/bVII7ygLRYOPS6cyV?= =?iso-8859-1?q?iyr46B8TOfNT3yziYGjVmBcdj+9UjuCUzh3OsDEhut/AQrutaxNCJyqp/kDo?= =?iso-8859-1?q?caX5+hl3GyOjiJJ0fcM6UZu7Zd5d/ofiJAL4eZaVldUXCp+BiFBZ86ZrpAcz?= =?iso-8859-1?q?ovyXiNBQ4rJ1NJ/zedAqHCwugv/e+JHb8bwsVH79YWcqvcmJLehE0rxCd8SR?= =?iso-8859-1?q?ERYuE/zGAsneyGcG7Kw7LPpAu7NcX+UrUd5ZTs34qGCyi6dmeNE1xY7eDL6d?= =?iso-8859-1?q?5/uIr9uDjSfIVETcqqfVdEYGhHcxJ+ggNHlCmzPojnLO3F0BO4fAhju2/y4Q?= =?iso-8859-1?q?HG2h2fwA5wEn3lOrorZH9BD3WbHlzD8YDIMT2KF1048vvobXUM7/V4rj/Vb6?= =?iso-8859-1?q?BmQj6AQSM49iqQE7bR+aAW5o51YwFoI8YDAatB07WOczdGc2nUMGXjaShqZl?= =?iso-8859-1?q?NgtOUgO02GvygVW82Dec7hZNztPK9gNBKE2KnL/QOhbgletuFxIFI+/YqIjq?= =?iso-8859-1?q?porYMW5bptgzAtZDJT8nxW95jQMSHlYjer0VsCZ74gQNlRuawRyq83D9VtIs?= =?iso-8859-1?q?d9lTrZNVj8EIcUrQ+F0dU7Ii5ZXEvCHZIHtEYGf70+av5/9PCpkA6QoIiqg6?= =?iso-8859-1?q?FyMwaDStrMV2IvvUf8pBU3p2fTIWHnH6gL95ZOpRUY8XfTZp2T4kcVWyCxnA?= =?iso-8859-1?q?y/p+ISFUBEbLu2wg8XJ1KSVgFb9u4C9fBbbK+bBsTeLsaVesYZfXHoqlqchc?= =?iso-8859-1?q?k5TsdwbgY5Po+Ire2oUfnJ1HJcGG9Eb/qLE3acgVMB6Bo1R3372mf9iHKJwL?= =?iso-8859-1?q?z1PD31qmFphQm+fk5AcZAseNEfkbKY9PIG1gewgwzmlUcutHdZ2YOH2y1Xo5?= =?iso-8859-1?q?KQiC+7TfuB7QSIviDE9cjM8UG+JGE2iRBJwpXOGJ75ewqtWNiHD5Kn/GIFeY?= =?iso-8859-1?q?W0/L3EK0T29uMNOUEd3nDkjQ52uIA7lK16bYH1m5iRIUEfeO1DGWIbvNIs4U?= =?iso-8859-1?q?GxW6jWwR/bBHITZJHYzJUmdXDPBSjsVlanH1Kz/XzGLA2AyvvzUD5f5Qn3Tq?= =?iso-8859-1?q?AAzxOjrwUrG0GbidUPo3Ea+KfQlsHXyypcN3kyjdOtjW25eO6EBbkwFfdM6x?= =?iso-8859-1?q?TM8i+dfawo8hWNQ4fzMBX4R2s73sEtaLX3XucZFZHc/9BTNISThT1XTghMpO?= =?iso-8859-1?q?yBxThufJIAwLyA+/VqNBEQCjN6HLF5pxMyclRDOu3prQnL+eLR90RCu9rQ2f?= =?iso-8859-1?q?ddu97LHuAY8qKKs9HNaJ71ZJ7NixvDawUGOH8RnGP7oksP203We1FOmlYpC2?= =?iso-8859-1?q?vilREwC93liyG0xWyaPqwj2T5M3JzBB3OH/PteAdyA3YnmJ3DXvyo0EtMtBK?= =?iso-8859-1?q?kEM49f9z6hd59J+ihsBOJwxXRxusvhX6TEmcLbeKqnsfp2bDbqEx+0bfgfVN?= =?iso-8859-1?q?rzCYa1oA1V4IEvhacE3ZhA+ZbjrB4SR/d2fL9VIqFKQoI6QjY8fo3efU1N44?= =?iso-8859-1?q?=3D?= 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: 05a00447-4084-4bd4-5b4e-08dd571d2263 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:39.8840 (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: 59MtSbk+3oZr1ml7Pb6B25FyxvR3USerK8f9og/YJcAW7ZRSi3ATAMIpmU6UlCdC8j9aUedLYijUhrs33x9oW7SBDM7ck/9fMTDa9npLMsuYOhh9SPYaK5F0q1xtUMux X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif This will be useful for devices that support ATS and need to store entries in an ATC (device IOTLB). Signed-off-by: Clement Mathieu--Drif --- include/exec/memory.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 29f5d31eef..eee625a9c6 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -145,6 +145,7 @@ struct IOMMUTLBEntry { hwaddr translated_addr; hwaddr addr_mask; /* 0xfff = 4k translation */ IOMMUAccessFlags perm; + uint32_t pasid; }; /* From patchwork Thu Feb 27 10:54:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994089 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 DA02EC19F2E for ; Thu, 27 Feb 2025 10:55:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXY-0004XL-Ce; Thu, 27 Feb 2025 05:54:53 -0500 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 1tnbXW-0004RL-Aq for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:50 -0500 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 1tnbXU-0005pC-DW for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653688; x=1772189688; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZMxFNyn4oXeMGzshPyBmqXxSzbY8yZSu5H9uG1CqPCs=; b=SSqLOCd/gHXzF9fdFCEpjmwJNTXk8Ss202Kr0R95+Iw3k53F2eJZWDnI HPvTD0MPG/G9MUlsxVguUHIcM8Oi53VWS3o1CgwPWDB/S3TRBnBPhGdES xuzTopGf7z13JkfzvI6aeodFWioHN+IuzeowTIiXkVVETOhjbHrc+WWpD LYG1VyiI0VMm/qzlPUBluZrDTujBbqc1OjVjK5kxnoIcsWBV9PcdNSWp5 6YRppkPXW5ObWDBRgGwpimHFio1DdIOd7zeIHM01BjQ/sMzVJKh0/pn81 57dKJ3IxxK1QwCjp/io0nDlAxyVyV12BysvyUoNYlucBLjQ1Z/iorK/EE A==; X-CSE-ConnectionGUID: Fc6bzjGZTs+zE9vGfET5lw== X-CSE-MsgGUID: TOvAJdLiRNarXPC16qrP0Q== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331826" X-MGA-submission: MDGrNni8qNpt8wvcHSa7MBnd3RKq4o4UNFkj6MJCX5SBqWo3DyKDWM4ApTN+DK0mMzg8HK7tWjSwno2xIg0/vMDbnCNoqTKXN97kKInSbDUiChVivpJUYw02wwHwyBTcWxSZLtl0f6Zp28xrlpOaZkQgZuQ5bX41H69LA6OeLZv5hw== Received: from mail-db5eur02lp2107.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.107]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:42 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rZLBzZbBYskwJDpt45sm+80mcZXZU5xGCFKciBFqziIk+JwrrWLs2YWfGmn+VZmgHuRfpS9KYopNt0cOZzVv0uLOACXmC8+jtxhYjKfwhMMKLdTznilR7FTWxcZT9MwcarZTAKLaxRDYOgn7ujnGPF26feq1bMM0fNwpAhzEnKgBCPm0zKH0a885zjpC8jxhnj+YjSaCeHR+c3I3scAdJm6IKO2iyD6SDEVDeZz/5JYhFY38GIgu0UB5bLs7+SG8Wz7om0YLZPIPJ6MgAYFQZ2HfdlqOjbb2kuBx33fpOnvQTMMhZMm9wP+B2T4UIbm413pHjUQaRiiw2sESpRmd+g== 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=hoZrbtGYuHsZPQVh6qQr/BjRYamm9IIebfREKOYlZWw=; b=HgUgZHnAEAP+ATH15t+MiQ29jOZbyKT0heOMNsR4bPkPNWbWi8T2CoCi7/IGgf1A0kSzXUMbY59Dss9w7kvATX/dubRoFy35W9Q0QX78d1dZN9c37+0ZlszOKKFbBEEPmsprQlT0Ei9UuniHFj4WxFmzBB5J3TA7jpdHOOtnk6PlI8nyw+dnSELEQaK5+9E5QF6QljFOPWHCZtG5/WjBgLizD47rs1a+Dljth3n+PIusqtTrMhNkqLRtqQk3zUQAOZL7XHZ8rZiJZtcDdc7b2lwRavcZu7qfK3ddJsU8itrpupRqcpEcwIKtNckHCKsUOOAWPM4s5uViZkaGSjXfLg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hoZrbtGYuHsZPQVh6qQr/BjRYamm9IIebfREKOYlZWw=; b=gG++oukmySyi0s9DUgb5OQsvbKibrdHPVh7ccb1ggmPH9NwLoGzTW5YrhCbW4BMAwzqNgNZr7R0VX8TeamF4vDqD1egXJ7SGXU/YhcBi4P4dwfJXJLGnURNWEK507tn4Y+xXrUMC5ELYvxbq52tB42E4At8Me6PDthCaBj/N1PZTYo1LgDQB8QthHW+9JXwHNhZUfsZ7moQaX6p/h2umO2puk2Cxv/O5dKnwlvk1OGBFI4Gz7CqcTCGM37UWYCHjJiQ0munkgzZJ+UcATtQRyDpw4U755EKKm2ZgxO+Sn1gYd08DlP9TMLKdAPGxhc+7P1Pep+j5tjVUJNlWOSmAlw== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:40 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:40 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 04/19] intel_iommu: Fill the PASID field when creating an IOMMUTLBEntry Thread-Topic: [PATCH v4 04/19] intel_iommu: Fill the PASID field when creating an IOMMUTLBEntry Thread-Index: AQHbiQYAJAMnrNAMAkyZSDpfP8PREQ== Date: Thu, 27 Feb 2025 10:54:40 +0000 Message-ID: <20250227105339.388598-5-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: d580c19c-2da4-4bbd-3f5f-08dd571d22cc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?/ZuGm98GWlmnd5zVvuRuodRYTk?= =?iso-8859-1?q?Hkd2FN/cEfO+uciMJJfyIK1sdwVrn9d8sF6Se93mmyWwnZ47JUJ0EkMQwiNl?= =?iso-8859-1?q?v8znU5kKUSXYuD02/xq9Xm6Fh5mch1o4bjopCeatYoZYHBH21VW6C5nMUkot?= =?iso-8859-1?q?M8luJ5tmFM6tnGYqbQys7y5JBLhug8x3v70zniCsYIUfMOqipKfsO4NK4Tiw?= =?iso-8859-1?q?/JPVkZODRx9zXl1Y0RP9I+2D9+XZblVvZoz92ebu++n5O5G+r6WxS6rxROtS?= =?iso-8859-1?q?5NIStpSUtE5F13hGwTUgSn0jQkZaQOryjeHzN59xK+cOHCubuXc75YkSfwLA?= =?iso-8859-1?q?xhYJjtl1Eknz28EBXgtvd+IRKEwUlSXQTLKf6p2eX3U8j+QnhDJT1H41FTNj?= =?iso-8859-1?q?7A55PLthB2AGtPytO+tUnoVuWm0dZPKMuflUDFpGf4k7INuAWx2zluL6vhBu?= =?iso-8859-1?q?xzzoxXYf4Wrs08HAuZvm8Pk5+aT+a7JoMEWvHyjZ7MA2OlnSnP1OeKvKOMJf?= =?iso-8859-1?q?CJTBPtBkP1Jmta61eWe6qeJ1QdAncVY+lE8/qkDEakorBhd/CL+cKkDp0syz?= =?iso-8859-1?q?adTPHCi/fRpBTwE/kg++pgrZ6p5UtxWJ8svZeuVe3Gxyn7uD+1KSt/uj/bcG?= =?iso-8859-1?q?xtZgtPit10+B5K7o1VYjNVrCaUMVfcQOitHCcqbRctrgfJtksa7Y0H4HIHgu?= =?iso-8859-1?q?5WKE/ggB8KJ92tk+XZbi0buq1Muy+s14yP0DoIWEuRtx20eMyA7R3Q5EadkF?= =?iso-8859-1?q?fkrmMD0eOnVlf5JMbyZASH4x3D3lIS0qQA/qu4/Yz4faIyqOnMGqmuqmB0CH?= =?iso-8859-1?q?n5Kv2lyAHYhKgfI0AifE80eJMmvkkpfV2lygNuMoFrYyC+eAxTOlQ+8krn5k?= =?iso-8859-1?q?D1/2Sc1MlK/GaaHeKrWXZTeYAk+cVCwHvzKq2Hz6eNKdSiqy3EHA57XU9DRI?= =?iso-8859-1?q?exuCYba6hGs0cz1edw35MVSNPsx2v4NTvNGAIIIRo+WwONkw5E0KMV1rJgVb?= =?iso-8859-1?q?RBoEhlh/UOpqJ7BKegzQpdyVFRBpH3bXF7hZBQkj4B+rOUkbhxEAJrGBCa6B?= =?iso-8859-1?q?abSTkMVlo5WChmoNEdL9ehuP889YbO9/xDLrYEeP5VaFdvEBjw0y7XAx7Dvi?= =?iso-8859-1?q?B0ykAwFRqo6PlUmRR5HNm3HiLBIhVEEO+af2Lsa8Hii7PT5JrujQ45m59BDV?= =?iso-8859-1?q?9EwAtfVeyQz/iNG+jOlLaFxRoZzVbQxoJiG9O69sHWGlYLaTp4gXJHoLygVN?= =?iso-8859-1?q?Sfic9YVEPDViGEcrzy+Td7gOdIhtpufI5b9iKbT92PTc+YIJ+1L2mVMV8UMg?= =?iso-8859-1?q?xS1CAhf2Wt5oM/AbZ2U3w3Az0Qqe4AdY2O/KLiUcFNifZ/g+EBMIkkr0o3hO?= =?iso-8859-1?q?X4PJvJU6liwzlUMWEZwxfUVyY2xl5kmsbHOtFbbyG4XXkQ+vsFh8xQN1ljDb?= =?iso-8859-1?q?G6eLp+8O5hI4QM0FkMakGopzbi5pStDGqlsWaJo9KG4TSsyI/vPA+/6LlDmc?= =?iso-8859-1?q?fKmLn2?= 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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?dZgzYV07Hlg4VxgRe++MU5B?= =?iso-8859-1?q?5e92N9/a4pok5Y7M662ZTXRNTSXW8UUGzZee8Zcgzs7DwYdTg2YoINFcPsco?= =?iso-8859-1?q?Qc1eCUWtWd9TreQLSgEID+80DdQxEw8oWYo36+Hp++v1depPMoT0J9dITXUv?= =?iso-8859-1?q?IIQYFEOae5RQKXoqdMfjfWRe+7T20i/YM25OYO2msBDPZsllfQdnJlCTsCMm?= =?iso-8859-1?q?toM4j4l+ZDmQgMqr9UxsKGsP6AiB6yITCf6DHR3PvceivwVpZIWY5dTA02at?= =?iso-8859-1?q?4mnh0Og4XzLE7qMT0gYkBSbDBuFE/OY4zeMIGkobo7BCxejONqVNjKe9u05W?= =?iso-8859-1?q?ZyP2rEk7oyo7FdJ+h+m4HEGTRi/gpObR+LT+oD0P1hcvWSGINZvh4jzTUOlG?= =?iso-8859-1?q?r/3xYm3Ay5j3JKUjrrN2wkWqxaMqPSRPYNpKOw97zd25+vYHtkhRAWv9n5sc?= =?iso-8859-1?q?3v8h/+CMreA+fgIidjZJ5VONx+nza71Q2j0ZAEqBKXiclL3kh7nUavazpA3r?= =?iso-8859-1?q?xQBd8WlKnV66Tp5NnaEV8fe0kSGfJkDtljTiBJJGEemPxOjjcrpHqZyppid3?= =?iso-8859-1?q?7E+uYl5adq/eiq9pToYQXTBdsHW4Dkx6OIpvqeziAKNAxcsI4ji+6fR0cp2e?= =?iso-8859-1?q?zSbRp5HXS4BJDBoEJ0jiEDrbWg0j5qCSMAfMx8KGi8r65RL9pmMEm60my5F3?= =?iso-8859-1?q?wJuTXMr5F1pR1Wwq5WikWUUmfQd1ZQvQvOa15OvQ55ZbKSPwsOqqJuh3KoD9?= =?iso-8859-1?q?H5WLQb72EfR+QCD1qFXZX16RLEnnuyvNHGw3rSAzkobD7usWaSs8RabwLqc7?= =?iso-8859-1?q?XV3ucdaR90qO+EFKyK+hb/tow6WzwRba49cd4Qbos+zW8K/IkBqswsirZXRF?= =?iso-8859-1?q?ng/nEojjpddRT6n8ZH58nsFyZdt5MLjnI3Q/kcq9qUZ4CGGNxDcsTFgpcfcG?= =?iso-8859-1?q?I67XtNEW7W78GjvZ70kSkgXnzTRDTMQAyyXGQF5lUSPYqL6GbWFT4ooCQc6j?= =?iso-8859-1?q?35HmFpp34aZJFEQLaEiam9KcJbfFecvP3+G9SPFDVNHHqhtiUiAyz4eOutf1?= =?iso-8859-1?q?ioNk6RDvOXzOkz9IGXerYuA7lsGTtaiVOrYOX+5lo5Zgnoa0XE54nb5HcB54?= =?iso-8859-1?q?2OLUb+obestTyxtM3eqlKYimRD+9zMgQO68Fw4RU+HdQLnjdASbTonKPPS06?= =?iso-8859-1?q?9NTrkxMGBm/wx9sfAHOX5dAcKflYkuRqOhsYKaTjecYHbicqTvlR1sWi0z0X?= =?iso-8859-1?q?PpzEcyW7C8ogwlriQ3P5JIqGr94Z4VpDeXawAWChPWXkjSt8CqvnH/nazBHL?= =?iso-8859-1?q?yKlPRIEfzvVgtQJb4feqHcp0h8i4tJ5xdshujrLq9dGn9NipeVKneVLP8p6+?= =?iso-8859-1?q?T0DpEYabm5MWe9upUGHRfz/X/9xcHt1mq5WJhKRb6RddtvGSidgqBIra7A9+?= =?iso-8859-1?q?4UHnOhVmEcxTd9U/YCqqEWOIFkcb08JI2ACarKSEqfYBSDhV37tJKIy8i/k7?= =?iso-8859-1?q?aVDPXeWaPDyayzdsy9k+8Jx60DO9jF2GCfxxQqEBy4FhqpiqaFclF9JQ6VyA?= =?iso-8859-1?q?mxIblxe/IWvGORrtfL3WTBHgns/Hm4rcgu6FIH16vrhkQ90MgXvs31kngVD/?= =?iso-8859-1?q?j+aRZn8eVzoUmxOGszv7QnhmALrmp47fMSgzc7GlOhwZNx/WO//EVtLIYirc?= =?iso-8859-1?q?=3D?= 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: d580c19c-2da4-4bbd-3f5f-08dd571d22cc X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:40.5935 (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: Z+7LlPP6/n5jDTVYzdArfwZtpAaAE3PfYBvLxP95RU1QScw3Fi4UHGVoP/0l9KiVdHNaNA7ZXvfFTrikKY5CzvcETryo8zmDb5jOaekfgElhWno2mrR+uqs0m6lZyoSh X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif PASID value must be used by devices as a key (or part of a key) when populating their ATC with the IOTLB entries returned by the IOMMU. Signed-off-by: Clement Mathieu--Drif --- hw/i386/intel_iommu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 1b4aaffedc..a360119fbe 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2511,6 +2511,7 @@ static void vtd_iotlb_page_invalidate_notify(IntelIOMMUState *s, .translated_addr = 0, .addr_mask = size - 1, .perm = IOMMU_NONE, + .pasid = vtd_as->pasid, }, }; memory_region_notify_iommu(&vtd_as->iommu, 0, event); @@ -3098,6 +3099,7 @@ static void do_invalidate_device_tlb(VTDAddressSpace *vtd_dev_as, event.entry.iova = addr; event.entry.perm = IOMMU_NONE; event.entry.translated_addr = 0; + event.entry.pasid = vtd_dev_as->pasid; memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); } @@ -3680,6 +3682,7 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryRegion *iommu, hwaddr addr, IOMMUTLBEntry iotlb = { /* We'll fill in the rest later. */ .target_as = &address_space_memory, + .pasid = vtd_as->pasid, }; bool success; From patchwork Thu Feb 27 10:54:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994107 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 DBA44C19F2E for ; Thu, 27 Feb 2025 10:58:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXX-0004Us-9E; Thu, 27 Feb 2025 05:54:51 -0500 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 1tnbXU-0004OJ-Sp for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:49 -0500 Received: from smarthost3.eviden.com ([80.78.11.84]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tnbXS-0005or-Sq for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653687; x=1772189687; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=gmC1JlYF6t5JaGSPliSMZn93aRINn/nUgSe42q/FwD0=; b=LFN1ffssY82oO8JiWrI5/1Tr14PkF4mjyn+TiJP+ROGk/FMMVDByyfFR 390sTJ78R05Kj/dM5NWLFAhTZjn+AxB86BXEJrmc5m10/VP9E5SNVVF/P x6BYQ5QgDmordrp58Y6+hodm+UOZNEFuY3zEWLLriyuNtCOxKTksCsM5U hr+Wcm/d7m6Rr1LkvCXTiUezQgF/FcKRqWzUO7TMjTsb2T4QqtG15UrbT /vb/sdlcX9VFvCSXEQ33IHpqKlB81LDE99g47JH28G3bY3KukrDVPLWGK rFJPPrzKFYvS54ugZmpQdtDqDogGtNXqES1D5TUJQNevCrnDFoEFixS9v A==; X-CSE-ConnectionGUID: ujDtuLv5S+e82kOQz7nFRA== X-CSE-MsgGUID: RZfXyC+9SkesebpOyA3czg== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="31822960" X-MGA-submission: MDHh/2yR55RgxmtPk1nPqZrn8rwRQTSXhmIQhzTLlgbnfAUwjFOg+3T16wUoOigFz/sJUTtu41JMVhUQxpNY2QylegSdERslvfZSt6b0kfeNOxz0Sw5++mPGKfzoKIo1kBS9HHNzUwepPC/tLIHl41ojgjvev4k7NZyO4I2qb+pFkg== Received: from mail-db5eur02lp2106.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.106]) by smarthost3.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:43 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hFzQs7rZw62T0C60Dr+LsHNYQODqRMCdG+SjXwpibteK71/HjOX1JotDEi81/z43M/lmUn8Q5EnyLMtbL0M8OOGYF0WhwP2b3kPW6jOX6nA9Y2Kr2XP5nqDzc5CEwXsJGXGQs6KrhGxmf0+WfGJCokmt9sLISt+FLiEPaqZmFlzXYM6OviB5PWo/tdIgNE/F5OEifn0QIw6+KAdOiP2Hjlh7WTbDDSS12QBR053ylKbhmBUCaKRxRKWo9pOUBiOyq1/Ag3gWg5wBXiuyWCTE7gzErDK1evXbtKXH2LCjdgKf7Aeg3N36OJso/2gVkcheB3OK5Z3ApQJQYRbmhzdm9g== 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=JC5gvyzHnNALcmu6oa0dIRG6EFpxKL5QQ5nZEiae0zI=; b=iaK6ThikcK87AoT6MDzxHqicIXx7e+BNMvt0O37yKkoV27Y1AeUVbLnbFglMrxfuQlkqBm+e9cogb7Js2nM7/HxOhUJeFF0L5YDonVws/n9RwAYazgiS04CiislfS242tr2rEiq/CzZ+X0b6M/AnjPw0Ep7idA11v0qto+Ga/YQ63I/6uoEiStsSYK1pO0ToyyAQ5XrI9JM8Z0tslI86gdroIFr3C9zmtlJ5rtdG9F+OpDLFU7j9hpvJGLne+uNJ2Dh+bNiRHTuEF7HQdQzFfPRoSrKI565AsQfoCOYVs75Bb/C3FvCPKZNx7Hl1ZMiZx+noWK4G2BDn+m08ZZawzg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JC5gvyzHnNALcmu6oa0dIRG6EFpxKL5QQ5nZEiae0zI=; b=RRiurOaaknXkVxSdb3gqwmWFr4NODKxD9KnUQLkLcQ5aoj5YAEeFifBxumjx5AXm/ZYYIQBRPdz4Fz0Gn3NpaLv6Tf1HPI6V88ZiTojvsN76MoWUMpoXlVgd0yYWB3Oyi5XBA02ms7ABkxpn9jCFb+qcHuojjPNFDviOIR40VltvhCkPtUDHTVQP5cnkxRXCRTFUb6RHuwIDDLfd+oqx7WoKxDe9ktfoaUxgOvA4GxTutZwoZ2prCuNYgV/CGr8Zn0tbHwAIylUl3mPjUZYS5Y47iaH5DSiJg7eBxoAfpKHjXirDLZ3beb/SMuPxEIwsz7eN+Oor3lF4u3nMe1V60w== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:41 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:41 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 05/19] pcie: Add helper to declare PASID capability for a pcie device Thread-Topic: [PATCH v4 05/19] pcie: Add helper to declare PASID capability for a pcie device Thread-Index: AQHbiQYApMsalteVY0KUnADHFo/SOw== Date: Thu, 27 Feb 2025 10:54:41 +0000 Message-ID: <20250227105339.388598-6-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: 19beba93-488a-43d6-1279-08dd571d2339 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?s0OeSESZ5j9uz7IP+Joc31/1Ig?= =?iso-8859-1?q?PmRkkvVndADfFtWnskV3jiXTXj5l5Ot1qW3XZLU101pAYS+9R7HzaSfHgAeN?= =?iso-8859-1?q?pgwSKGTxTMVmCZmcoGiZUGo7HdVNdiW8HRzP1+W7Odyyg51YRzC8k9tl32bD?= =?iso-8859-1?q?bgIanc9Kl2jEB784cvgpmV9019b5cbraTTeMyez54fpywwXu4eCFJ/JXA468?= =?iso-8859-1?q?wDUGBnbqFpIxRNal8WvLMepZm6DWdQJP0uOWWAeLXlgvvnthq208BIPbf7Fq?= =?iso-8859-1?q?JTL1eIsLbU4tsG8SuQ+kkJ1vsbYEd4qjAAzKd2KggEoES9PJdKeTj916DXmI?= =?iso-8859-1?q?whoo0eYXCnCFp4OzXf5oAcU4YZ+LFrQHrJ0ZK6Za6HqNrAG7dToLirqF0bfD?= =?iso-8859-1?q?9LeXJV6ugn+YqLX159NZ9MZDgMk+Y3vqEta227xHKJ+8meFPlUSD4mdWXigV?= =?iso-8859-1?q?4ZfnQkuW3RkEWNJIvFDETDC101Y2B884l3mMrOMeiUGpIianLlVPzq1pJew3?= =?iso-8859-1?q?/Pis+jxjQxwwLFqgoisyzUmtDFB5jW1X+ottEev/U2CN8aK4knct4VmGqPWO?= =?iso-8859-1?q?Kcl/vWYykdZJsSD54qBPGGAxQgfrRIWNPuBkv+Fd9fq3gTqnV76dN2//zjeG?= =?iso-8859-1?q?QPYWbbUjkf8TmigWQh4V8sVJWJPOPNhVGgxzt0XPxOhy+dXCIWSxTzQBi4Nh?= =?iso-8859-1?q?5BrFH1+pLj9AeCUM3MDmipTHlKl4lRjGYXYbBUnMugPrsierDi9fvwFzFzYh?= =?iso-8859-1?q?15/6NMeBcFc9Y4mpru7fw21XLd8XnWK0Z+tlb5N/pzoDEpdJCagA9JpNUXpu?= =?iso-8859-1?q?nKgAWGo6K37hgtj9Ny0WxXktH8BR6O4SBhD++YdHso928QD3PBnlD5UQDHrt?= =?iso-8859-1?q?wbm1I4n9Mdj/y2Ue6ReDVYNlxm8Urm3miBCYmXcjLek9k08eCI+Y0bzqmFNl?= =?iso-8859-1?q?IOUinAA5M3UDBM+4DWf0gS/+wZxi/NmXhjinzS+Et9eEgPm1lO6cI/Y3Cu4x?= =?iso-8859-1?q?zltpz2EuC7ntC+Bymqi6r/XMZ/22C/Ex776XnDNB4G/t5YvNOFmqTEau4a7z?= =?iso-8859-1?q?bspFh1vFMfFdwBONQKPIFmeLkQ5f9H4ItfpkHXUqLHZH3zntL095KOAQkjLM?= =?iso-8859-1?q?rfjHiPN3wPSRfgPA2BVwXP4ukSyOVWK32/fgZiXjSufJLJs5X7xTRO+4BArU?= =?iso-8859-1?q?bs1v5Mr5wPkbXyXTQGz8CHFxSiXU5g5xorVsTQsRaq8/fNGgt/e3vZcD4VLZ?= =?iso-8859-1?q?4gvftsPKcCaudco8eL1UppVUY4q8MJsN+Zpn9FuKDoero5NQe3selqETF3yC?= =?iso-8859-1?q?F2eyGCXE7S2BNeZhuHk1Rcoy3zUZQQrCcPQqaL8YGOJE7CL4MVGfddBye5Kk?= =?iso-8859-1?q?HYUnpE0+EqEVAOswzl/xzQ8pfwoP63UxQucSNOVq1USmf3sfGJrEGWpfFhIH?= =?iso-8859-1?q?fuf4U+GtK4WvAUK5tlviEOOYsfRSjTe1lxkkOuiWS5juKq0CPvNkOR8SV1Y/?= =?iso-8859-1?q?iH8DGD?= 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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?+4Paw3cGTR7IbScW4nrTykj?= =?iso-8859-1?q?qRD2Ar45CycXJm/HOpWTuBIAVIA0hZY7+noDdLyNs6TDyFDD5BfXtJqH57M4?= =?iso-8859-1?q?ZSZvVDZIM1C4I+rhwlI2jigQxqka4kDeyHOocY5UDTAPmJXWX/e1UIXLbH+k?= =?iso-8859-1?q?TBhEgfUzpARN65akVkbAAxCg6YdDPcBTPcomQrP30SQWIH7bAOzTps04WUq7?= =?iso-8859-1?q?FafiFFEa8E6I8bVgOmPghMQMPaC9Q9fL7uwupCU4JcBAM9zQJRbPqZiZgulk?= =?iso-8859-1?q?jf7VoHj+6HJnulDYeLxdFaPp93x/yHPtpunLnln5kmuk0DJMGboCJcmm/Dda?= =?iso-8859-1?q?U4mrLbdziERT/qLdMBog+WR78Y4Ul9EOMSkA/PRnmrPhIWU/Krcmbz3SmuiO?= =?iso-8859-1?q?v6jRUpq8my00f9kMgikDpD07bcGzOCMKjkTylI9jZTnlpHvvhk3yJ+NRpNb1?= =?iso-8859-1?q?68w1SNfeLPMm4nNMSH82aRvyfWNqXvor0/SmxOIfkDWXX8exxVIrFXRs9qen?= =?iso-8859-1?q?rrBI6uD9yR53f402MLzgRBIQ4AUH9uJbzV0EnQbvg9wQf22blKSe73uR7A7X?= =?iso-8859-1?q?UZJs6Yg+de3X0UZid3E/yCoMV3F7BZTSSgxI/wKGlrjhmSEIbFDWOOqQ5Axk?= =?iso-8859-1?q?Ip587uCHY29zXhD9ewBCFPrsd31a1PgHNwKfvsBcR+na+RMpXd8O1wmnEzhr?= =?iso-8859-1?q?+IEZmuK+hDBCkmxFBTMtQRYUs7qpyYV871GUuC8zyEzHBH0ae9uRKBxpf/5S?= =?iso-8859-1?q?DX/YOueo9yEUj/8VxRaiXN2g/af29MYFhDooWXE5QQB1BCVGoBRpdw4HMBAq?= =?iso-8859-1?q?lhTTTVaVZJwAjRlk0YA2wTR1aqLS/9ZMn2yo1NVFlD08piqr5KxjUrbKrkL0?= =?iso-8859-1?q?C6wu2dmp4MTa9vVE+9UZm0Cf1zmX2uCoMvfnytgY9owwCRJlOzXC3cLKxqsu?= =?iso-8859-1?q?y2CZloqe031nw5Td50v3MlcdNs2hxt+jhbMCxrMWy4FhouTiO2q92ZyGBo0R?= =?iso-8859-1?q?QyRSklhHaZNnXyhyaQiCUWac0d2m4UP8p278gZMUpiy1T9SWdEdi1p1+trAv?= =?iso-8859-1?q?XdXTW45GQUAYnYeRIBWAgWakBfRxLI6sSpege6boi9hwUDnRQI/A6jIut7OG?= =?iso-8859-1?q?Oe9KWu+3ET6CvG2PKmbCTud4abO0DSj2YkOh04S8PEqiauGA8uRfF91RvFxH?= =?iso-8859-1?q?yviaDFzI/dU+HfQ64P/8vZZlJ0RuQeWauyCbZAO7HUvHhijLFCkm7FKgTACr?= =?iso-8859-1?q?3AevR21e74mfaYMnesrsy2gffB6JiX6YqJ0HNj3c+crz88pGJLOBuMaMbW9+?= =?iso-8859-1?q?w6iH0yjAAFJrIe89tV7/2XujGZ6+iBpHMHst6l+WVdVXItlLRjzXPvlm71mL?= =?iso-8859-1?q?Enc0y9F3RMCvtkfgL1DCjLrWTXEiIA+mqr2euiNM9i/XOeA9/8SMHahbv9kZ?= =?iso-8859-1?q?iIZPQODSnjdgi4eEBMSDFs0M0ILgJUDsUKaTLk8a+0KkLqU1YVexeyb9n5V+?= =?iso-8859-1?q?ZR6TZ0BR+0XocsAS1O5lYBew/GN9kwJ86Rlezn8mZMLy222sfUOpJtSUsCxO?= =?iso-8859-1?q?kQag0pd9FugaVNG7CUBCzN/xMvKyPjnz90i1/CdOqutstpiVLJdljngnPjGW?= =?iso-8859-1?q?tTxQkNhQUFMy8hMBvX2E5J+HUw6a96uGutd2koyCeUkvZi2TPhYWlRVnU/Ww?= =?iso-8859-1?q?=3D?= 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: 19beba93-488a-43d6-1279-08dd571d2339 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:41.2423 (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: sTgKpD+PW6by/Qq1ZnNWKXsNgylE3xFOFDV/e0g78lyblAmAr5DnsCyNeFpOu8bQxBGZxYyGcqNxijrfIOldKEJuNyGjq25sbc7nhmAJINzH2fPtMt9117xof+B477zh X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 Received-SPF: pass client-ip=80.78.11.84; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost3.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, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif Signed-off-by: Clement Mathieu--Drif --- hw/pci/pcie.c | 24 ++++++++++++++++++++++++ include/hw/pci/pcie.h | 6 +++++- include/hw/pci/pcie_regs.h | 5 +++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 1b12db6fa2..f42a256f15 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -1214,3 +1214,27 @@ void pcie_acs_reset(PCIDevice *dev) pci_set_word(dev->config + dev->exp.acs_cap + PCI_ACS_CTRL, 0); } } + +/* PASID */ +void pcie_pasid_init(PCIDevice *dev, uint16_t offset, uint8_t pasid_width, + bool exec_perm, bool priv_mod) +{ + assert(pasid_width <= PCI_EXT_CAP_PASID_MAX_WIDTH); + static const uint16_t control_reg_rw_mask = 0x07; + uint16_t capability_reg = pasid_width; + + pcie_add_capability(dev, PCI_EXT_CAP_ID_PASID, PCI_PASID_VER, offset, + PCI_EXT_CAP_PASID_SIZEOF); + + capability_reg <<= PCI_PASID_CAP_WIDTH_SHIFT; + capability_reg |= exec_perm ? PCI_PASID_CAP_EXEC : 0; + capability_reg |= priv_mod ? PCI_PASID_CAP_PRIV : 0; + pci_set_word(dev->config + offset + PCI_PASID_CAP, capability_reg); + + /* Everything is disabled by default */ + pci_set_word(dev->config + offset + PCI_PASID_CTRL, 0); + + pci_set_word(dev->wmask + offset + PCI_PASID_CTRL, control_reg_rw_mask); + + dev->exp.pasid_cap = offset; +} diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index b8d59732bc..aa040c3e97 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -72,8 +72,9 @@ struct PCIExpressDevice { uint16_t aer_cap; PCIEAERLog aer_log; - /* Offset of ATS capability in config space */ + /* Offset of ATS and PASID capabilities in config space */ uint16_t ats_cap; + uint16_t pasid_cap; /* ACS */ uint16_t acs_cap; @@ -152,4 +153,7 @@ void pcie_cap_slot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp); void pcie_cap_slot_unplug_request_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp); + +void pcie_pasid_init(PCIDevice *dev, uint16_t offset, uint8_t pasid_width, + bool exec_perm, bool priv_mod); #endif /* QEMU_PCIE_H */ diff --git a/include/hw/pci/pcie_regs.h b/include/hw/pci/pcie_regs.h index 9d3b6868dc..4d9cf4a29c 100644 --- a/include/hw/pci/pcie_regs.h +++ b/include/hw/pci/pcie_regs.h @@ -86,6 +86,11 @@ typedef enum PCIExpLinkWidth { #define PCI_ARI_VER 1 #define PCI_ARI_SIZEOF 8 +/* PASID */ +#define PCI_PASID_VER 1 +#define PCI_EXT_CAP_PASID_MAX_WIDTH 20 +#define PCI_PASID_CAP_WIDTH_SHIFT 8 + /* AER */ #define PCI_ERR_VER 2 #define PCI_ERR_SIZEOF 0x48 From patchwork Thu Feb 27 10:54:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994108 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 456B3C021BE for ; Thu, 27 Feb 2025 10:58:41 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXa-0004as-5E; Thu, 27 Feb 2025 05:54:54 -0500 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 1tnbXX-0004UT-5B for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:51 -0500 Received: from smarthost3.eviden.com ([80.78.11.84]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tnbXV-0005or-AH for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653689; x=1772189689; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tTPC7x09d/JU2UNVzXQW4tNA/ojv9FQmKpl+PJhHHRY=; b=ptSFEQ0GPjSkx/NmQyfdMlVanWkK/mPDZEHmDbiwgMgY0lgAOhldoDen rJTu2cVZJsSHQhhJvwS0QphSee8SD/jXmvWUwQZM2RqjnnrDkQAr68lHp 74tMkyRB20I7zv69VmPShYI4NrXyLNh/J+bsLtqSUm0r4kW3zqqPUkHjg xhTeFHpXzuRGrPfvWP/rJ4zs4fiZl6HOv6ndGIBqoYFZ8/ybn8zEbS01y um3mMNe3leLRprf1qUh3LtNZwsDqoYoS2ya/RwoalBkQ1ErdkRNE5ngD3 OlD3F2JMb6ptdp91+Bf2P6nTr3bKrhVl4afLzEQYUrkRV0MiA7KN7PtBp w==; X-CSE-ConnectionGUID: OsIcCckPQAyZHjz2F1V6Lg== X-CSE-MsgGUID: qvHSI/rQTfuM0gHQBAzXrw== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="31822962" X-MGA-submission: MDEgvUb7++44MnjbT7aOvMHra4kxKZiLDeoaS+VSq/fCp5vBHfjEDUHK8u3NT5gXTrrDoSx0cIN8XWvImJXUDXkFpE7nBHc/oAEceRLEQ2kmM8dk9nYLqeuIq5J61+impYlpex9Z7KdDbdPFm/eJS2COQ4SgLbHEYGWtYTiqzX10yA== Received: from mail-db5eur02lp2106.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.106]) by smarthost3.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:44 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DgNF4vI5k49AoYdS3k0pipkFMhUetZ6zV+bmMSiZGns0mA2mImE3nwGsXZXxEeXcHDWrP3D+gESG9Ds2kSnke5PxbYDvLTJQcZsnT+bdPQlGiVNNl3W3PC2WnQXvqAbl/vPNie/JANqCXZYixeJt0NJgOyx9g6H5lyWCRo7sO3H/LpmamLkzNq//ue527i5fR7oDbeTyrOtou/Zni1/DALEDFjpmaKhN04HRQRz6z1Wj5l+f3Hp9wXwg+XY90CFuBbqLJ1rCQ8eNZAj4+Ukpdcd+d9f6KocOR/En3Awicz1gnBboNGneogbhw+YKrGdlm+e8s+KA9V3BcPSDeeLxWw== 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=86uCvdGZzOooKIlDZ2DFXfgs7JqKRdpzpFrzYIXH/p0=; b=XeYeEmUnxmrB94jhMP3CL3NVndeqDkwH+xW5QgKVnO4VSshG+vP/1XgyGRR67bFR8dqoiKiD1dKC0qAxbC0zCsYboYFqIhvJ0zO73ANkpRaThfHE8/vo5xUWKBwFTrztZ3/kDFVi3885gwvw+U4ue74qUKIBu/B+txPyi/24O6eafAZnVzbxcl++1qipNirob2z5QlCBtCbp3Qq/IOXS1YullScexf9V5HMlK3W3IAqFURflMo3q8zu/mQp8XbUzXu/0aq3vH1liemEiRpvgqgnIjtUQm50VglQaoQ6l0exKaR6oKxQOBcTe8ITSchL2r72rXAWvMcnIzhaB4xaJwQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=86uCvdGZzOooKIlDZ2DFXfgs7JqKRdpzpFrzYIXH/p0=; b=PkCQvNRv3tNj2NZhDB1et1bwIhorHPOiuqVURmWR+yp20enMKB212EJ+hmmuE5wtqJY0b4291GrPZuhhMIKvgnA5WzmgTtdNhPfKx9DmDin6p8W9nxkhMkTskUUsq7oS6WnXZfxKpDBAmKuSkPFo2qVSYwlvXK7z7alJHaXc9aojNKI5Wsv5Hb3QY38pHUD5cSbKQuLBLAzfZDsvqmpuetpU7xv2nCfdcGPRX0AM+src3Jl4dD9zeumJRwdbxPcB0taRAfe7MfZKPEpA7DLDNcU14R3XKfiHv9VsgEsAg5fRXXx90Uzyx1vSqvCh5vlGdb9V+n4ywcVKybmrCL3WcQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:42 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:42 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 06/19] pcie: Helper functions to check if PASID is enabled Thread-Topic: [PATCH v4 06/19] pcie: Helper functions to check if PASID is enabled Thread-Index: AQHbiQYBznvzjmx4OkaRgAtUXIWv/A== Date: Thu, 27 Feb 2025 10:54:42 +0000 Message-ID: <20250227105339.388598-7-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: ffa7242e-6b72-4260-dce4-08dd571d2402 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?g5ec7PXYveSFPa7B8nb3dta0zY?= =?iso-8859-1?q?qGXaScleZcflhdS6Cu8++4XwRBkoVU0b9IJTBgrbZctexqKVOmauyP5taMJh?= =?iso-8859-1?q?ws0O7PrJDSTIiNmN4ny57gxMMYpI1EY+58HjElVfa80bUxzR/+h3uSz4AZE6?= =?iso-8859-1?q?iOv9VhlfZTYRq6+hfVRGNyHNkKGtsS/jQxV1bX/TX8Nz5J4Fx18HyOwQtZob?= =?iso-8859-1?q?zQ/Tu4/pb1h3TzCqCmQBBh0XyRATuxRZFrc+iJUwBsPcXCw6jk+9PmsGNB5O?= =?iso-8859-1?q?T9OzE6jGNr76kLSKAsGN8VbldQa/Yoxrm6WUqtCk5E9uQjfQor8wWJV5jeFW?= =?iso-8859-1?q?vLZk8pGJlwJFNlgvAn+zrple2iX39GnhSXnH8DWAH63ZNHDjlMj7PpAvfSsj?= =?iso-8859-1?q?uUqDrgUL5CWvc0vjmKcVpSluWXStDmjfOZU3C0Eum+5NAbZRb99R6YYx8/c3?= =?iso-8859-1?q?dnrh41YxwqdHD3jZY9lMlaj/qatrbaoih0n5dnRyIVFaNP80ymFdY8JLAKT/?= =?iso-8859-1?q?vilNolKoYvsGayAOz+xlDjtsma7B2jIRP+xnVDAq2eGXzjr4c5a7rEoRF82D?= =?iso-8859-1?q?65tv3+OOCrxF2djnU6JMU3Ia5vaCXT47A6wff5ldfBZ9ABlY+OFCXEVdhGOX?= =?iso-8859-1?q?LoLbhS+4Q/L3hi3kRS10s8F64w7ZOvBp2wJrXdjQTQmRoBVvMsm/wlGsvpVG?= =?iso-8859-1?q?wpFMNTPqZ+thML2Sp18TDnQ57Ngk041YnFnolGa754kObIowxlsXWBXTFyI/?= =?iso-8859-1?q?mpU81MmmYJmlT9bYIpCCNT2AMzeT1X/8YCfwFr27xBLIvau7rEFFng/0vQGP?= =?iso-8859-1?q?K3LqCgYkjamXOB6tVv8N/9/I0hKE9nqucijsgcakZ6MHaSbQurRuvk0XMjwS?= =?iso-8859-1?q?nUmV77+O1i/gzWs6WsmzbYeQTGz88KW0/ukiBZeqbK3RrjmsV69awX2FNQvn?= =?iso-8859-1?q?MBzRMHggYGv+DWwaCqecD5hc72gVeQhnxAXosTyHoOMAge4q+UMgMe7MSy16?= =?iso-8859-1?q?00m+pDdKrJcSPyeUkjOM+O5oLl8GlEMahYYLxH2dT219nBJTFFCiJXTek4hR?= =?iso-8859-1?q?JSJFxwPkxb8WuzDvsjYXQm+U6ctPakjZOX5TmMFDHs3y8WBrgkA3Sk6D4AW6?= =?iso-8859-1?q?QsYnumwWTGR5+igXS6b3YoPM0mIWslhKTie+ra4YrEAMyo0gv1p4rkXwJRQN?= =?iso-8859-1?q?ZNHiDxXwqRiN6jCYLgk7VAztX8Bww7TG4mI3hXPJzQycQYuX7ZsrBZ/2poHX?= =?iso-8859-1?q?Rc3Ea45LBn6d58FN4UGH5KfuX8WDIXpE/t5wo/nbyLz0uZbN7B1PCXB+wZy+?= =?iso-8859-1?q?EQT8w1922rh1Rut79bh9M0tt6JnVQedHSkhcrufdfbOnAfZQnVsPSOFDRYiP?= =?iso-8859-1?q?ZvyajI3y358apPkgU3GiDBlW+JuytKw2r9rPHJb8G5iTSfCNNJmPJgdopXFE?= =?iso-8859-1?q?8CPfur2IbHWDrJ235xnZvQN24HKdb8FJ1UMyGHb8EqN4QU2kIHaFEzPmWYrr?= =?iso-8859-1?q?yE+Pp0?= 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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?btlsUVujJMbUDuS4NMeA4/G?= =?iso-8859-1?q?XUHKWgXZdx5bGi0cA61O3zBTZJNPiir4g8fYTZIgP4aR8dYwh31KHUs7H6v+?= =?iso-8859-1?q?07dLg62v4OigU54SU/r3L95yqfZAMGYz3nb5YlF6NUFToIRScwwvWfI4JDJ1?= =?iso-8859-1?q?K0mg1rMTJD2fTYbTAPkG4LXdHI9OC7TpP3edpqf4Drt+1gJLvuadTt9y9afY?= =?iso-8859-1?q?7Lurs6hR8vUqNJJjtRtTFfPk6ogK0puN/3B01I5jsNr8AefAWBKpX2ZkSCLi?= =?iso-8859-1?q?BX03U9gz+c9/m8O+PIYOl7DfnBIzyW29L7ow3Q0h9unTyvbXlWr55y91orvR?= =?iso-8859-1?q?4m1BRo4OyaR7iLYv6Eyoadnc+F8xPC3zMZ9/7bk04RuYojcjKErjVfbhPvV5?= =?iso-8859-1?q?fCs71JKjVDuJ9DN5SBNE0wQcLQuiHefcKQhM1kD0Ljo1uzev6Rn+PPS8Y4rK?= =?iso-8859-1?q?4bshUNVC4Vq03embKN6q3AJEb+5aNfBsURVK8heFlwtXj1XMxWv2qwB0MrTH?= =?iso-8859-1?q?rXwnxrZiEee1MrFcg7kmtgsK9RpJybIoQ8PUsg6v04tc1ltwkFu2BtVpqS9p?= =?iso-8859-1?q?4f8dnOE9Sx3oyhD+EV5hqvIkbvBP6vUckS1R+X9b65LqROJWZM+nACaQ1sXM?= =?iso-8859-1?q?FvfMQITiqEaz0PnCCXlOuQO2ggP7QUrHycmiANQBUvlQW65w+zdJk7UMmTfD?= =?iso-8859-1?q?82xCvKgIg08soa8A7INpeeOaNV3wJ6roemKEuAu2u6XI6poQfX44JU/9yf9x?= =?iso-8859-1?q?wjBE1T6Cif+cFEDtA9S9ypC+8QMFFcSfHxtY7y2gaJCNG3PgxLd9W+Og4E/G?= =?iso-8859-1?q?V2L/aBPBoqAo8gP88vlK5WHcVROHe2ukoCh1vY+qTM9/TcsYb5nTrtDjbiNX?= =?iso-8859-1?q?P3s9Jz6aPycjtoviiPUf3Dw69yfm2WkwGr1xeN1YkyavtrviP+ooU+4SXvnK?= =?iso-8859-1?q?tJkFCuPmcp+YiTv4dJUbjzYFtNE2bK0HTLpZYfh4U0Bl+AuCj5cQpkV70xCE?= =?iso-8859-1?q?P5PGF6L5RhuVJrQV+vYKXSp9PtRBsSP6rwGTfI/3eYQiuCGbeyLKIjf6MimS?= =?iso-8859-1?q?PfBRFj4eLgi6Ss/XAgEweRjnWBWdNg6F4HgArmVWnrFWNwDxJEvKgGXiFaAj?= =?iso-8859-1?q?qM6YY2XC0c8gPztBiSu7Pm4BmcIpckQKcby0fUAb+Oi26kvIJ8T/87NDJVwH?= =?iso-8859-1?q?DGF3kcGmD3NzEuql+7WTs6OF5t5lKfL6kMbFLdk2GOHRC/Peh3kcrhJykLO0?= =?iso-8859-1?q?7U2IhMDy73WgaS9bdUmXCnnHCcbTNWLBh/aFRNKV6PcoQD9kl5AeaMcio+9P?= =?iso-8859-1?q?IZaUtBTDlVOjmsyK/EiOI0LKhUi5U0g0RrEsofk3YOyAGw/QKQJscN3Wl76a?= =?iso-8859-1?q?9C3snZIu69zUNUXf4tWkPT6qGa1Y0Jz7v2mNa/KJDa63lgM8Be2/G4csgc+r?= =?iso-8859-1?q?l4iXliWo+fNIs7c7T8LpjCqE0gd6Fn6B/4pv/K5KaTlsuinLsDBztCzm7cTb?= =?iso-8859-1?q?IJnp6eG48AXmZLYSgIyjubfHyATbBnehV9gUWi/8DgE+d0NXRxcaOPwXbrYd?= =?iso-8859-1?q?410sfErNQkl4oQKLWnZ3YRV66uG5aAhjDzrWG0+E5TvRwYhOyYVBI70UI5eo?= =?iso-8859-1?q?zpKEdjeRCzxqPRoBBd2GFLZdIRrNzdrwUofJI3APJEE3F/PwPbZGrPQlb3sA?= =?iso-8859-1?q?=3D?= 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: ffa7242e-6b72-4260-dce4-08dd571d2402 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:42.0688 (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: hiSo8tVJjFa1Wj2xCjOxSKkQxh+Nugvn2IVddUreQXgtCznxf0cHAh/bPtYL4YQ+MpuqiMZd4TtLm88cT9yQfvEjhmZTvkg4cuEEIj9dNiLSugSI5iQvMWolWykJI8XL X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 Received-SPF: pass client-ip=80.78.11.84; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost3.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, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif pasid_enabled checks whether the capability is present or not. If so, we read the configuration space to get the status of the feature (enabled or not). Signed-off-by: Clement Mathieu--Drif --- hw/pci/pcie.c | 9 +++++++++ include/hw/pci/pcie.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index f42a256f15..8186d64234 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -1238,3 +1238,12 @@ void pcie_pasid_init(PCIDevice *dev, uint16_t offset, uint8_t pasid_width, dev->exp.pasid_cap = offset; } + +bool pcie_pasid_enabled(const PCIDevice *dev) +{ + if (!pci_is_express(dev) || !dev->exp.pasid_cap) { + return false; + } + return (pci_get_word(dev->config + dev->exp.pasid_cap + PCI_PASID_CTRL) & + PCI_PASID_CTRL_ENABLE) != 0; +} diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index aa040c3e97..63604ccc6e 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -156,4 +156,6 @@ void pcie_cap_slot_unplug_request_cb(HotplugHandler *hotplug_dev, void pcie_pasid_init(PCIDevice *dev, uint16_t offset, uint8_t pasid_width, bool exec_perm, bool priv_mod); + +bool pcie_pasid_enabled(const PCIDevice *dev); #endif /* QEMU_PCIE_H */ From patchwork Thu Feb 27 10:54:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994102 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 09546C021BE for ; Thu, 27 Feb 2025 10:57:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXb-0004ez-BF; Thu, 27 Feb 2025 05:54:55 -0500 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 1tnbXY-0004Y3-CB for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:53 -0500 Received: from smarthost3.eviden.com ([80.78.11.84]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tnbXW-0005qC-Dg for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653690; x=1772189690; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=fDuNj2e5Z+tVyKsZ9Vl/nMf+ohGdmNjrvRU9Wlq6dmM=; b=PDOpTzQh6ExBqf1H/vyjkpwBUycko+v7aJ6+6/E2N9tzfziJQZyZ8fV7 P+mBUUIXKyQNlKTfGU81XSjlgwkPtY0Eyjcvfsnuu3V64Oq/ztkRyRlDY BOru91Fqexj+JQz0ZtYKk8dTTPrFg1BLI0el6UdyvR2Fx8BoJJNUh2h7t eO9Zegvh7QpWF5lNh0MemXd9AWlXLqp4H8pOGhGC2xNju5H7ESGMxUNt3 gKmZIcj7HuQVyVXRGeh5LbG0SkOBK+LyqHBFgmS+oYS+nm+xVLgNK/+ki Lzof3aGqWokeGLmXGs4Js+vWEkZTCaD/zezVaymKPoNoGAOFlb7PCA2SK A==; X-CSE-ConnectionGUID: Y8r2H4dESNqgShyLgoUIuw== X-CSE-MsgGUID: /KNB5JpOTAmHNLBT3NFIag== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="31822963" X-MGA-submission: MDHawFV+MDl33gxkMWw2KYIyxKcNyrlGFPYy7ej1nXjczrCl/PWfIY1EYZaZQbU0rlVIWHVCtjF3Jxa7Jfh1CTUDEyxF4cYhMefGwGqODHG8C7G7LZxyWZsjrI7V+7HVt0SSmkaUhxBnte6gTzSJ3qiubTisi1YuymnNVDf9JfqOeg== Received: from mail-db5eur02lp2106.outbound.protection.outlook.com (HELO EUR02-DB5-obe.outbound.protection.outlook.com) ([104.47.11.106]) by smarthost3.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:45 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r0cdCun8aPhL5yNFFKxXrpA3+aScIDND1pRrqsNuj0MjHsKUiiTiihU4G9lT76xuWvcUPhxCgpLSb9SUyw94Y3xKFDB9IcNHUW/mq59OKecM1MhKlBZBF3HQPR/a1KeCDJfaQnG7NA3kthti+lMRh5+f22MN/iX5LyIUnzxUI/Ge3yCfN2tPVQGejA/kMrNa0/KhxD6pAN6AFISfqmomh88Petw6uE5poOulvwQcJVuue/Ghx2fCGPZ1vRxmKjYcl1PM0HjO0J1JXkMkrgobB9eOgCdGoRjo/qJe68wUgAH3sMjZSfjli4v+O6/rteVSzj0dEwsHrJwpobhuD7oJ7w== 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=KdmPJO5RPn+KvHUqO9BHrSYOABK1AmuO2QQjcSjxo28=; b=TLPVsxVWBdYmIDsm/G72UKRa8EibyO6paGTr/X0ivV9yFdFqPUZwzOnyLyLVGCff1/akNZSk+si4N82YcG+OD2a5UlqFPnqnmJofOcL8lF9dbg1V1cR3W7lIUYErQLo4jysnyx+UF1rjh/vtDshkjfJZQXXOhFCbXo6nbk994OF7XCYmtE4uQGa5GKbsH0zxlSl/eZeW+68iIZ7smA1463wtulI2DiZK/hLa0YL4ZVOTI8Dmwkh+6Lih+ba0ItPuSLFXraaiiZ/jWJjLNIYubQ/J4IegBdb4zOFo8I0XjKTx9H5pqfBEWm7zBgBc+FkDfD0OegY+m2mcpaCpLJgl6w== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KdmPJO5RPn+KvHUqO9BHrSYOABK1AmuO2QQjcSjxo28=; b=G7n/f+9X81EEAevpNAEBFXcHiR6O7CRQ08fUU8geyfD4TSOoGm1+g05Mf8bvHw7pYe2mLrDgPSMTwizdH3M7MQrBouw1+ICcYYUoEtpKglO/MG4F52jp8Rh4sR+/FJr1p25dEgmYRRvxDhApTksVHLZqJmxrPFQDdVLwyabn+7F+NJjCilOolVa+l/dI8h1lQ9FlK+lYo1cMvCrgW9YAaDOOxyzrA0LnleZ3NIGX3mZxOGtYCTh9Rxi4URTXl7kWX03WY7l9nQWX4DsxrGbJwBZudIgZT0qmlz+ZQW2Bna88JrdhunurJTmBS/Os8Z6beiRQf7kjnAqRAHlJOML6Pw== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB9421.eurprd07.prod.outlook.com (2603:10a6:800:1c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:42 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:42 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 07/19] pcie: Helper function to check if ATS is enabled Thread-Topic: [PATCH v4 07/19] pcie: Helper function to check if ATS is enabled Thread-Index: AQHbiQYBOv1+QKz6XkaWkGVVgEGHEA== Date: Thu, 27 Feb 2025 10:54:42 +0000 Message-ID: <20250227105339.388598-8-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|VI1PR07MB9421:EE_ x-ms-office365-filtering-correlation-id: 67798e8b-414a-4410-c3c1-08dd571d242f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|7416014|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?gnryjlUGax44W5qniX/Rn4j3t+?= =?iso-8859-1?q?CeaXuKtp80mp6EhprSQCy4fxGG3ECHu3uRb45PismCaULfIuf9qjOLraNqO+?= =?iso-8859-1?q?sYC9wnjUmRnzWfMVTugGJEn4pbC+q5i0gejmuxAfdAiccL1EY1Ec3JY26gwJ?= =?iso-8859-1?q?nZN/qfFefMydwRvkTKD9pbwhgQQS/iRgQTHKhd3klEjkyTnwvDn983z43Fn0?= =?iso-8859-1?q?92bN6eLe41+WwkIutaLqKEopKplaWqdWV6uFpKnnwdL7L1qoSPuRRwaV+mtV?= =?iso-8859-1?q?KGH/eIBCA5ach3Ee1VwXzW0AzgNHVLLgmY8nUEiXr7N3Cbf+ho6k8LFCct2u?= =?iso-8859-1?q?hTofj4n0+tHz7gk4Dfj69HKPtUJgNSXbJ7q/WhYvy5QRZKswnTpp7djX4Lrd?= =?iso-8859-1?q?gxEMYkpm5AP3aGKstDY0msJDU/EOOVeLWcaCP7ze7SWpfwUcN/sBalbWYLU6?= =?iso-8859-1?q?gy13gEiI8k/vfkBEKT4MMeXwDWfU1Wm3Sn4y+Wl5oQI9kOVVQJ1diulOK7Tv?= =?iso-8859-1?q?KuSjK5wdhbDYkujs+FYuO0nQZF8PSmTPP5tDkk7JvITd4BS30s/IZMToQ7Tf?= =?iso-8859-1?q?cfjoVru0jh9o6ZWikMmJy1cFzUS8fHE6E5hvqP+KSyE4YSTwQZMhYfFCiGx7?= =?iso-8859-1?q?J059uUSqBJPqq+J2qzQvdGfE9tLSC0Zq0sAUN9/wIkoHeD45PQDKfO5ZbFeW?= =?iso-8859-1?q?vlTtrCnLc0HU58G2PA+LMKSJncKJUdisjjdwSMd/Bfkq5TFb3Zvew5rHtxFw?= =?iso-8859-1?q?NE7w1jgFqVxydtojwq8h7MFP0V3Up7N9yTsFr27JdvKnRsPWR4izF0a6PLEZ?= =?iso-8859-1?q?g3NO3HaUqp+g2DI/ZNOwJUGpGHtA2E5du2pSpF9VaTs6zLeTsnO9ANqesmv8?= =?iso-8859-1?q?KXjv9Lu6GXoLhz4THuTv1f1fs9WH2iYD3UBobAIWt39tHjV2z/fRITA5CEVB?= =?iso-8859-1?q?nMQEphrr6CUAICYfkWUfAWGnzk4klPGsZsPITImLxiQrR2EJ69gkO9Yg5k31?= =?iso-8859-1?q?YsGygmiXPNgSKEB4hE1a+76kJUBEro2PL5B/TWxYalHIhh151O/PgrCKon/L?= =?iso-8859-1?q?bIFk4kcycjFQpP+NjmcyoswFSAvtM1gyp0xg8dx/JkaQV63yWO2dO2hNaPnX?= =?iso-8859-1?q?XV8GSK7bBM6teiq27j/dvtsq2ELsEzrKEx2w5b+tnd7OFE5HzNVveNgLNeUv?= =?iso-8859-1?q?cSvP39XSqc21/sU6hK3hxqfb4MYHbEbyeiDRxuKkg+21cpy29xqVdfQjN9vG?= =?iso-8859-1?q?i0JMAoaTscrwXWi5NC2gYjXatFdfbst8ByruKONJMylpOmK//Dp5+QjC1pbe?= =?iso-8859-1?q?1V44Tlt70SiroiZBeGINt6lIg12UHODQxfuxEyqStCnu67FbMGux1j3Qgcg3?= =?iso-8859-1?q?BkNcI025ekjTiLRex5pDhcU4TZLgKU8G3N6KhNRBf8riBlmcvAT9CkFxc8ht?= =?iso-8859-1?q?jSGkvRf+/LINQiSH+dAZcbxpicUlYPTIqv2zMB32yUsmViDagzckr67dol45?= =?iso-8859-1?q?hXJYFI?= 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:(13230040)(366016)(376014)(7416014)(1800799024)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?qtUnGgYPB2t7tR3tNWm8Juk?= =?iso-8859-1?q?912Q6jq/6Ev5AJvXeA6qiXXdUOnORTbMTSQwcSYArhpAPX8No6aXeC8LvdDn?= =?iso-8859-1?q?nhvLCAxO3SgoZVJDrlOYtlRZtC96P3+Gs6AVAgM9afKxF+EbwA4nso4K5Oae?= =?iso-8859-1?q?S+qrBnKVfZCRzz4vbVYd932OguQkgWiUiJHWxCc21zG4ZjY/07OGES2oVQP5?= =?iso-8859-1?q?eMJKDvhVgxtufjA4EVL4yRnELX5L+SiVZ60lg6p9pADGjCLFWz5+TDtr7JXE?= =?iso-8859-1?q?/vVDXILrCPwCpekRy/PPX7tg4BMTnbwXBiYnADsVj93u4Iiobe6GbDdil8Py?= =?iso-8859-1?q?URqQqRwb7tIQXjO3gN/TVXjU3M8ccCCNeyJafLYNux16ZtMFWnxBD2nNwVsc?= =?iso-8859-1?q?VazBOUDJVdmFWCqf22XUTYgLcvS0pe/EM0DLH7R1jG7sFTriUXN5XMIFhaYr?= =?iso-8859-1?q?pBMk/gu6qDGFJ4HY4lhpf0ROc4j93Bjj7LYmZkZOtbl+b3kJL2e8uNp3wNWs?= =?iso-8859-1?q?ik1cft0h7AuIwjLJoQ5S0VhKaZc+z3F54VB3ywlm5c4p4Vb568aUyTzC57zl?= =?iso-8859-1?q?Ce+ujV6OvIq6ggftAhJp2cTj3CvM+edOor3u7qDpwFaMAes30jKhcTj5p93B?= =?iso-8859-1?q?LYtJylTf1J9ZPznBaEBsgf98G4OPq/5D24VrONGyHer2Xkt3TwKywdHr0pRk?= =?iso-8859-1?q?w5sYGNjnchIAQZwTZELeJEE3J5RYwbXJiz8Hy880YHphXVKJtwcns6l46A94?= =?iso-8859-1?q?zD29tNcM/ztzuIOzRT88WMnOv84pDDR7tiWo9nmvLSTjAgWM7tN9MjsitPAf?= =?iso-8859-1?q?2HBv4y3p3vr5DM9zLrqks+eGuH3IPK80ee8lPHjILhsWkEWOlW0EpTnxKx/e?= =?iso-8859-1?q?t6IrUsbK++otRnbG88D/tFHZ+Aw1SEzF/mGVlh0wSJtgjXceqiQrYwoO0GnJ?= =?iso-8859-1?q?hWOMIov5hMkHXYzIcC/xjRmYX8oRElg3m1QJU4KmwPumjI9l+F243iw/YkVE?= =?iso-8859-1?q?ixYwt9cB4mlBGgL1LDAM5NpQmsTWa0gozkayScWLqqoXTYYKBbVPeDWLzvhc?= =?iso-8859-1?q?Ce58x4x2hqtQSJkwmXtZdttq3h/QYmXBs+IT3ULYacY+T/q32WmVmmx02mI4?= =?iso-8859-1?q?zwvh/k6uGRNxIKMmsTNCjSCjxRIhXiNFUQ+rM1ghn783FJKvu16B4r/ItIOX?= =?iso-8859-1?q?IvlkS4ROnMcfOV60Mk6SjN4JmQxx+HnwS/ow7XvEwcdvzwFlnZGYd9Bvdnbz?= =?iso-8859-1?q?Imfq2G4YC1gz9EpxoIfpRDHHZXCeWd1ciSG5O6uPQRALI+M69Ee9OejuZ1m1?= =?iso-8859-1?q?rxtUbBAQkctovvQyI0GQbS7Sm96zPTQBx641hfOe4jtwXrwek1e6bFW5mXDu?= =?iso-8859-1?q?FOZ7hBtWGt0LVKPx249/2wWAEGUZu2Ea1VOYSAvt1JTuAoofMJSpcZv+Nl6l?= =?iso-8859-1?q?W1LR0QE1GJVUa385WOBaMNA3Yo3/XiD+bUOhncgciHp/Ay0YvntpzcBQ64UT?= =?iso-8859-1?q?r2JAjU7gfz73MeG/Vqdf9trKTfZN4y7IzKrO0plFB1Gsqbpm/KWPjL+rcPo7?= =?iso-8859-1?q?TTEAahUk4n3ijlSLjIl/3gQh/tUewTllQvpvx/xP08nyKwJTTV9UvbECWZoZ?= =?iso-8859-1?q?zjH1JiXgay1Uvh57b9DkGHcuC9/Vdx4Ac2l+rw/qR9hKnI7Nhad0EHnxp3EQ?= =?iso-8859-1?q?=3D?= 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: 67798e8b-414a-4410-c3c1-08dd571d242f X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:42.7470 (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: fPqYCnAHcUK40Eaok3EWByTwv72dsmur0dSqKCwTsrR2CM6qPsIgabvZH+CRinZ8swG/cTyuMR3dDjMwbNMFCvWJbCldW08TexVtJzBXU8GDQrTQeTnO1QW1VsK1gmbC X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB9421 Received-SPF: pass client-ip=80.78.11.84; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost3.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, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif ats_enabled checks whether the capability is present or not. If so, we read the configuration space to get the status of the feature (enabled or not). Signed-off-by: Clement Mathieu--Drif --- hw/pci/pcie.c | 9 +++++++++ include/hw/pci/pcie.h | 1 + 2 files changed, 10 insertions(+) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 8186d64234..3b8fd6f33c 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -1247,3 +1247,12 @@ bool pcie_pasid_enabled(const PCIDevice *dev) return (pci_get_word(dev->config + dev->exp.pasid_cap + PCI_PASID_CTRL) & PCI_PASID_CTRL_ENABLE) != 0; } + +bool pcie_ats_enabled(const PCIDevice *dev) +{ + if (!pci_is_express(dev) || !dev->exp.ats_cap) { + return false; + } + return (pci_get_word(dev->config + dev->exp.ats_cap + PCI_ATS_CTRL) & + PCI_ATS_CTRL_ENABLE) != 0; +} diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index 63604ccc6e..7e7b8baa6e 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -158,4 +158,5 @@ void pcie_pasid_init(PCIDevice *dev, uint16_t offset, uint8_t pasid_width, bool exec_perm, bool priv_mod); bool pcie_pasid_enabled(const PCIDevice *dev); +bool pcie_ats_enabled(const PCIDevice *dev); #endif /* QEMU_PCIE_H */ From patchwork Thu Feb 27 10:54:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994104 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 425C5C19F2E for ; Thu, 27 Feb 2025 10:57:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXb-0004f5-Ca; Thu, 27 Feb 2025 05:54:55 -0500 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 1tnbXY-0004Y0-BC for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:53 -0500 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 1tnbXW-0005o1-4Z for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653690; x=1772189690; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4q+FNgT9HVsk5swidj6jJeI6FoYQL+sITZhOOFRxzsg=; b=ty6HAKfbZWSBoU265FWhBE/GxOkEsVeTUa9efquAG6BfGiLXHi3uJOAE D5KhZzh9GFbnfcoHffS7fHRYZgHr5hnuQGGHTKNxaNnmEBekbUzrrpte/ cVGzhUHnCggsuNHSVkUZ6ejpwk/xGIah3pPzFnmaaguAH8tXu3M1dchps FT9NuQPPvIrjeaiQb8OfAlj6eCHEyFqnprdJWUXdOk9znKDqJzjzD85Ox CkM2fowgPs8C/ONoKFbE0a0Zntk07zchMj3XUY5Kxh3LhPrrlSsvLjtHn 47uA2IfjYNM46M0IcpnYsfndC9MMfK2qCJwkGOa6K1szY+PkLQ/zo7fzN A==; X-CSE-ConnectionGUID: fdpYLv8uSYyYITgu8ymNKg== X-CSE-MsgGUID: R55dHwtSQtiDPFi5wigcXQ== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331839" X-MGA-submission: MDEgcuMEBEExrS1e2varPlpjCvUAjFaSipuTxehDrd/AGidepT4stqOyLpPI5sshvgccEH3RNppBuhCyjPuKT6Dij+Lz0DcolHt+UCwZsokbbxXbf4EtGU47jq0ZJk80WVZP/DXHmN/yDEPfc8R7VPGl/FZ+eKDS4noRt3nNEeW4JA== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:47 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XxOB+xMdxybSnvNKiJ4karfQH8t047GdC9FYevBHE+83guNZsY04RsAebcV6HbpoTdT0wl6snx5hvS6Vg1kNc8dDDhSadVMbGDKvF/ZKR07CV7UWzHSabDkh1PHpzhwK/rT1fY2l9Fm7U/7fe/Eq98O6gw9j/5a0hxD/ZU0Q+pLWV4nGhzd9xhQTHGddbEJIq6VTzHQYpjysKH0AZHz5xOjrTMnmslveDDi3oCK6eIkibDRsCiBi+RfDBv04z4b/dlr3qT/tFPbKIQcV5cDQby6gm7abh7qUq7I2n1VT0qPUNIyfml1Rv7hYN1T4czUsdJebJVjF0ixN3fgB/ER+pQ== 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=MEmwoWOY7veZvqndImfbubbycqeBF+qn+7KqkGGtMWw=; b=nLNd/deJs2kcF+ANA8gh75xXGDtDEJGtP4387Qbj8l9b59wUa21x7DUFV2qUg0GFxlWkzw67PZkeJ/ByUyf2rbkSeCEz9hTXW81al1vrv2OrwssTXR8vNHHaUZCQBWiYDyhiVBb5uND5VZtuyO7JG8fxubMH++45Sq3A0pBb5DkZEYScFUHm5H3HCIbKHY87kCrU5HN/BBeeDb+gVSc7WsSSuMpy5qM9UavoHNFX1JcTVmHy8flG3EhnxzzLonjIvFtEe4Gna21becEkIXLhjAaw4RmAEgTjKIdypOR/1uh7QkLqOEoZBD4ccjKUfU7sQSxhNQvPeQEiW+cW+EiiPA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MEmwoWOY7veZvqndImfbubbycqeBF+qn+7KqkGGtMWw=; b=XJdETQ29jUnSFV5e2sVapWYYymY62Y4bT0Jdz+qouKDoJgfbYpXIDspbiqcSG9XJCoqjYSSqsII3MlmdBuT/YX13UrCTsVRepYATwl5wM1c7xecOn97xx76Wglv2SyaoVl0GyP+xrh4CocZMeSsaDmUwKsfd9/shiPjuUY28fCI5IKzJPWvfM80j157ExIOee0qVOg//nVhAZJCFglnRPGnbPme3bzXxl2mwGtbTWGljDS65Bgg1+t6yTYFlA1E/sm5rszi4U37IimqQUE+hxRFMxG/aIFJZBHcWt4zKfvu9aTWWRvOL/c/Z8MyUyoHAO8nMb9rDwV6fIH0wc/lbJQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:43 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:43 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 08/19] pci: Cache the bus mastering status in the device Thread-Topic: [PATCH v4 08/19] pci: Cache the bus mastering status in the device Thread-Index: AQHbiQYCJoyp/p7SPEiYXiebYwCbpQ== Date: Thu, 27 Feb 2025 10:54:43 +0000 Message-ID: <20250227105339.388598-9-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 4812b146-a9e6-4af4-569c-08dd571d248c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?YWrAy5RkcrxftGVPfoUXWv9LgN?= =?iso-8859-1?q?9OTdAnBupP3sQGKbRBwmLfP1XJu4fSf5GIRhBjbXy6uyOu+MGfBKnPLG635z?= =?iso-8859-1?q?TtU/mLQ7qOvqqT13GncBYWRoBSBH6b4b54fQyqwMcMvy9EzmxthLHZ0AdxeI?= =?iso-8859-1?q?+Mp/3lnasjwPL/qQ0hFvB2zmtZedN6J/4COe8lbsJDYRIqwtVou1vt4HkIVx?= =?iso-8859-1?q?xfHWzj5wZARLv+z8TpGZoijaq9dTtrRpMfa6apGXt7H3R4GHni3Jvdh49t61?= =?iso-8859-1?q?X7VBMoiUAjCVVZaDtv+MdErhCDNXrPaOYXl2yc+g+v1gEMWxa7wK3HCeu6N+?= =?iso-8859-1?q?91nv4FYbRfF84DcPycgF1R/F5qCjJX52OBO85pzFPT/wRdvr9rN9+pXnE/xH?= =?iso-8859-1?q?JNessg5OMeEhvISF10Rij9RRj34WONTyfEXw379FrbdXYUewkZwCoNX6hRxr?= =?iso-8859-1?q?S2rpYVoiYz1InwEnT7cjiodW4BMKkbw79vMNVFh3XhASCUW/qoH0DJ4igP1P?= =?iso-8859-1?q?0j2dfFSdpkU7flBcADJmPZCBazkJvva/wpY1aINkWr06CRg/BsW9z0/tqEJC?= =?iso-8859-1?q?zp0p+BN1du7DSEwNwwgV1v4hRyMaV3k4DxKw0t7Xfv4RhRZFTiRP15ZxH8gB?= =?iso-8859-1?q?d4fQT42XVGUhtOzrXjXyTVqXmBv+LyGkPOqnCz7D69wruus0PTWNTmwTT0ij?= =?iso-8859-1?q?gfmoImCDSjM3lgV8oxlhKL+dGMtD7njrLp2Amr5dbspnHxli6u2cXGquR6Th?= =?iso-8859-1?q?r8Y4u80PF1/wNbcho2bF3Dvgzw6iWEyztgKXKGfFZ+ovw5RucCdxwky2pSQF?= =?iso-8859-1?q?Dvp+sMkC2NV0VR6nyIl9PpJ3fXrxihUSbyfxQm2SZcPbeMRII+uhu6imLzGO?= =?iso-8859-1?q?6Ml67klnd/nGESHwJZXYdsJVq6ZSWoeD3mD5Oml9mgYJhjI/99In5Cvm7Mts?= =?iso-8859-1?q?omg0PuYkeYd5ELnPt6SU7FS8U+gFSrI/6QhBIU0Tl4R0griVw8VjaroPYy1L?= =?iso-8859-1?q?6uzzjoUsOw56351bi4Gui8Ta2rrwFSxOHMyUPvbe5p9oUQ5tbqxrB5f3qHQU?= =?iso-8859-1?q?s9sUHoK1/xfrq00+nDrvaR2SexhfH9p1Ntrs8OBYmZ+iTcyjy9vf2pxrQXqN?= =?iso-8859-1?q?xas71joVvqc0jcbFjmm+seDzyGXbYDUUSyn5/Y+iCln+u7m8FhnqeBtJleLY?= =?iso-8859-1?q?oR/DabCGCWAX2MU7juX2N+D6wEvonknrJUpLVP5yJMcCMyMLi753uSURUHzR?= =?iso-8859-1?q?u8d0bAEAy8MZRU4QuwtriSLncrAWnxIsEmv2EScOjEjV9UgqLcazd5CMJ0y2?= =?iso-8859-1?q?P5s+sYTgOfyqBQeQG1sZPeTWu5H6zeX7weZmDMW7H9sJugsX8tGyyo4u5xH8?= =?iso-8859-1?q?TaLBRLZJy+acVy5tB7toRd+gkxznF8fvHWm0ISWHd2u2JHbEYS6+mq8UzwNE?= =?iso-8859-1?q?D63YP66hysagsWAaKNI2sWtANrlX0MI74K4TVchRu57PHBSaodAjMFhEaV4a?= =?iso-8859-1?q?OTynHT?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?dbA0A2HpiNA9vooSWHiMsE1?= =?iso-8859-1?q?z4j1m+SIi7c+vn+1DLG/8owIorP3P1jXComCnZ4ziDfdZeL4dWZ6Z01REJqG?= =?iso-8859-1?q?ONIULdXb3thMY4RDQj94oBwgXy4Lr/7V19B8SiD4aTAqy/eIo3eq/eN00KrG?= =?iso-8859-1?q?HmGWJzg4wNjsmJrUwJaYpWH5iz8LVvTrEU2KrOSYf8umtjJg8huZm0C32xnc?= =?iso-8859-1?q?B+2sLWpSgRgKb6sXg5MZqKQ8MjKlWPFvAFcAryGIblXpFz3ZJGNxIT7V5JUF?= =?iso-8859-1?q?R32DiW9nf4vDloYffZ4H2HtHq7RU5JHE6Ohp/1fcnGJAIHpHFMFXJxgcl7Zh?= =?iso-8859-1?q?YltF6LXvCJ3wbRjADVFSMNWwRCrqhds0maNSq538dg0H5qPg4EayZ7Of0T0D?= =?iso-8859-1?q?8x7xaxYGdc8iJeTEfVkBaGf5t1qO3AMwihcNpcsWLQM0gI8JjT+BJ913eL0v?= =?iso-8859-1?q?0XG52Daxpmy5Cj1d7KwYoUR2KadJAFbbOOBtXt4Z74tSY6k2GDVF8W1jdDdX?= =?iso-8859-1?q?FeQ1xm/kvYvCh7M92NU1/2qlHvJ4mfjsZeGDfmUS44sB4jsiwftxYipjKL25?= =?iso-8859-1?q?lAUsMsMLqtQhhjYIFtJMArwBTgB77p6cpFAZ0z1rGDaMwTU7rusVAm7RkRGw?= =?iso-8859-1?q?+KIA0W/NLP8OMiG7pCpSidJ9maeLxGLZEEVEOdvIB4suG1MKfzsXcEfak7vt?= =?iso-8859-1?q?PlMfx2wt2IvuGKkk7ohXnhNxcSfq0QS0Hl1c450HfI8g74wo5gYLGNv4YCKe?= =?iso-8859-1?q?9XGD+Gy/Dx+ti9EEfBO621pQmHWn9TnMqYr1sHOtRWrE0+A0WVJEeM6iYczd?= =?iso-8859-1?q?5rOGc10qECtVV5SSNQgt3Pps6P43mUC2vbei+mgbyzxOPamJgd8NycMrBqHb?= =?iso-8859-1?q?Lu1Y7jPp18tjFE/yy45VicVi4n6FYyhqxCnpsf69FWF/BF1M/1ALXdvQqZvA?= =?iso-8859-1?q?ArnZiP3PXoXmsYpc1cy4PxHuxOwMTIFkWpeBT8pDB0ra3AsZLyNf3sik/ffo?= =?iso-8859-1?q?mrqr35Jh3VRFsnRNgowaX2xI+RjhG1m/tb+jU5kuOipip/+1qy4CfLLVNkTu?= =?iso-8859-1?q?9Ka2h25ZVfHk+Lv5L6eML/lS7zjLoAMh50Z4TzPQGZPjSvVALG7AGsw1shnK?= =?iso-8859-1?q?vYEqtbx3DXP95r6Pw4aMSKEXbfnGQwZx9+oRjMJOqQzRXMxEZf0YlKMPHddX?= =?iso-8859-1?q?1Dy6pGybTMcoMjYwRb+XijT5TpvKRiVGaxqJgAQxH5n+mpvfzQ+A9gXfFmm3?= =?iso-8859-1?q?/HFVPza3nvfbxx93+2P4RMqOMyrbL4mPCRafjuCEosOn0dCpsPAvJzSG2WLl?= =?iso-8859-1?q?RjkpWWmNzDmr+kmlh0nXfEr++fL00SGM2q83EWKrqugc+wwDjksn13+PrW/Q?= =?iso-8859-1?q?SIaGt2NGsQ+4coCXVhHXpHJAUt3BSL3Ht3jcIGlMjDPAziEI0uvfyq2on1aN?= =?iso-8859-1?q?yLSFZrLG8Y6YgAcleg9CKEplQG9zz9pWdr9H/alHtslPayb0jB678WsN5GAp?= =?iso-8859-1?q?o+wdu0bIwGUsPlKAZqSW5CwOYq6SqtBmjn54NVlgXdg/9fVfJGAbgoPTEudQ?= =?iso-8859-1?q?l6YOAaZQ33lxqVtzq4ZkYcfFvBxwtmvlgoKlqvLKljBD7f5fVzuGtvusQBSu?= =?iso-8859-1?q?oXMWXdNBBVHnBVjUxkp6SehqKz2hVnSCBYOnat50dpNybyneicoqr71hK5yU?= =?iso-8859-1?q?=3D?= 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: 4812b146-a9e6-4af4-569c-08dd571d248c X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:43.4866 (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: dlliWUBdsUOVdA1p5rqeCqAd/X0xKSyaMF1bDsn/02ogi5hgqqjaFvfRUBJeMAy6qlKXVfkAciSbRluwpRVFlJnJ7oE/iwSwFHex3eSUrrKKQkywNwq6oTqAj1elSmQY X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif The cached is_master value is necessary to know if a device is allowed to issue ATS requests or not. This behavior is implemented in an upcoming patch. Signed-off-by: Clement Mathieu--Drif --- hw/pci/pci.c | 25 +++++++++++++++---------- include/hw/pci/pci_device.h | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2afa423925..164bb22e05 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -134,6 +134,12 @@ static GSequence *pci_acpi_index_list(void) return used_acpi_index_list; } +static void pci_set_master(PCIDevice *d, bool enable) +{ + memory_region_set_enabled(&d->bus_master_enable_region, enable); + d->is_master = enable; /* cache the status */ +} + static void pci_init_bus_master(PCIDevice *pci_dev) { AddressSpace *dma_as = pci_device_iommu_address_space(pci_dev); @@ -141,7 +147,7 @@ static void pci_init_bus_master(PCIDevice *pci_dev) memory_region_init_alias(&pci_dev->bus_master_enable_region, OBJECT(pci_dev), "bus master", dma_as->root, 0, memory_region_size(dma_as->root)); - memory_region_set_enabled(&pci_dev->bus_master_enable_region, false); + pci_set_master(pci_dev, false); memory_region_add_subregion(&pci_dev->bus_master_container_region, 0, &pci_dev->bus_master_enable_region); } @@ -727,9 +733,8 @@ static int get_pci_config_device(QEMUFile *f, void *pv, size_t size, pci_bridge_update_mappings(PCI_BRIDGE(s)); } - memory_region_set_enabled(&s->bus_master_enable_region, - pci_get_word(s->config + PCI_COMMAND) - & PCI_COMMAND_MASTER); + pci_set_master(s, pci_get_word(s->config + PCI_COMMAND) + & PCI_COMMAND_MASTER); g_free(config); return 0; @@ -1684,9 +1689,10 @@ void pci_default_write_config(PCIDevice *d, uint32_t addr, uint32_t val_in, int if (ranges_overlap(addr, l, PCI_COMMAND, 2)) { pci_update_irq_disabled(d, was_irq_disabled); - memory_region_set_enabled(&d->bus_master_enable_region, - (pci_get_word(d->config + PCI_COMMAND) - & PCI_COMMAND_MASTER) && d->enabled); + pci_set_master(d, + (pci_get_word(d->config + PCI_COMMAND) & + PCI_COMMAND_MASTER) && + d->enabled); } msi_write_config(d, addr, val_in, l); @@ -2974,9 +2980,8 @@ void pci_set_enabled(PCIDevice *d, bool state) d->enabled = state; pci_update_mappings(d); - memory_region_set_enabled(&d->bus_master_enable_region, - (pci_get_word(d->config + PCI_COMMAND) - & PCI_COMMAND_MASTER) && d->enabled); + pci_set_master(d, (pci_get_word(d->config + PCI_COMMAND) + & PCI_COMMAND_MASTER) && d->enabled); if (!d->enabled) { pci_device_reset(d); } diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h index add208edfa..40606baa5d 100644 --- a/include/hw/pci/pci_device.h +++ b/include/hw/pci/pci_device.h @@ -88,6 +88,7 @@ struct PCIDevice { char name[64]; PCIIORegion io_regions[PCI_NUM_REGIONS]; AddressSpace bus_master_as; + bool is_master; MemoryRegion bus_master_container_region; MemoryRegion bus_master_enable_region; From patchwork Thu Feb 27 10:54:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994106 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 41CEAC021BE for ; Thu, 27 Feb 2025 10:58:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXX-0004Wy-To; Thu, 27 Feb 2025 05:54:51 -0500 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 1tnbXW-0004TD-S0 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:50 -0500 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 1tnbXV-0005oQ-3a for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653689; x=1772189689; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=XhwWxkxj+r+rx/BdxYfbt+I91UI6Lq8eWKoAUnza1aI=; b=VmFSfnXvoAkHEs8qctvne1y8DfYDcBh7z9KszMgweYvSoBfeutSjkx/u dQlokYOlX8sgy7ezAs7iVrYrK5Gex9/D7V1sfnmeD/j0CjJUIbpIDtCFw j0IevLqdPROkD0cFhpR6HfVhUJzD3Oy30a/STmDuNcSr4HocHWm+bmdzT 8EmG+DLz35EXCHAyqQp8gC0dY6IBnDmi1Qjx45jMTYO2ZvI9XKv55KAV8 T5lSCsFuy2KNJlfFtVAG9scO7i0ryOqPn+XhbxOvP3ndEcmhg70Obx8U8 5a7BwLfKHz7ro3r0smKxvQk7TTX/5wkAaor4HLK1FuT//AzC8ZQ2xTDGe Q==; X-CSE-ConnectionGUID: AipoGuUsQM23ZODy2HoA7g== X-CSE-MsgGUID: 5Kmz0VzkT3qKSPTa1+U0jA== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331836" X-MGA-submission: MDFMn7zxU2kL7e00rol4JjG11BwMjOpq2uVE7lYzIrWn+F6HVkvWs3nDsg0TxCrqG0FvyxMxOpGXDzVa05gA/eQInCrFbi2iXzzWKjzk7S+HNk8bp+LuQNc1dqfse2mroB1/RptcrhCtFF070pbod8YD40WpRBnaRCAc6VURIpQeJA== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:46 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ar4JRn89qkDkRlL+rTf1LccD891Z07DFpgFWVH1gp0idyNKcV8dckmR3iLcSJmX0H0ENxwQeUhcYlYSQXvm+mTRedMB4d1ooG/Fxx4pHsvC6MDBaTsqAgncXSHUoWFBv4QEci+lqzTL6EQ1I4PEKMv0QzTOjxCnheeKXlfGX0Uo2Op+3rmrEazC6lCak0XjavirY+i7wkYuGncJmHY2qhm6S4VFG2XTwDMahaH0HiXG646bVUxpcHMKkuhVPadlbmw8UaMrooFiId0WSrLeVaBHFPgdb1PuLp7M6ZqWcJcfG9FxsAAqRukw9s0zm/eeOfig9iKfoiAdtkRbZduo05w== 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=w6V3J9Voz0NXho2p4lgx9KAMBt+ze0a2/WvfE+49IGI=; b=MtudFh5ZWSSsESxs5RqyEm7Wx/8XUT8eW+vzRJ0jAy5BTYoUVM39I6uvk7XA7x0y+tFo71WqeINqu9PlAzXesh7qoQQEjGmlkfM50fUfRDYAK8WFMFMIqD3YrPZqnLcFfvjqbG33TjEdRPrhYqekhdRjUXXPcw1Ef03uLl+K8LzxV6wuJNz1ORMoKobJuDty/Xm2viLo5Qgx1IAqRN6qJzS2qHp3QbMIA1yN4OaCrp9U4qfto7wTjaso4vkS/y+r+oby7pX/+3zg454TymlZXMBbPegjyuyINY9h17CiBG4PPZf+yqVhacxwbFYBJMe9sH7bAfzTM9aj1qgYPQ4DLw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w6V3J9Voz0NXho2p4lgx9KAMBt+ze0a2/WvfE+49IGI=; b=TUKKBGNZOnYA4obMLykxkp0J1dTalVdDkFJGtr9T14Fv/jA0/spjDHwTNyKd11GVdlhLHlQzNz8KXxusHLuhe/DVau6eLl8egJuNs2RoqvwJDg8wyFKdYUeMGq80eHnltt4HbHzexWtydIxQ8UEjz/PeJU7gntyUklrJjRqFu3NpSC0YgJtmGil1nBVlwX7NSijtUTU8zDo6lQ7bXhuZHvPgvcvUiHuzPbapaP220I/0JjhDMgBeYYQOBu2yEx7Nv9TJM7GQ4RKH/d9/FZP36ksKxUhHORcwTg9YqxIQOUL2s44B4OW5zuEkoGecK0KqGEH7+MUfGlqgX9q0hYcyOg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:44 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:44 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 09/19] pci: Add IOMMU operations to get memory regions with PASID Thread-Topic: [PATCH v4 09/19] pci: Add IOMMU operations to get memory regions with PASID Thread-Index: AQHbiQYCyRbkJwmwD0ajNXH4GYw/sw== Date: Thu, 27 Feb 2025 10:54:44 +0000 Message-ID: <20250227105339.388598-10-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 47d85f34-f083-408c-c9fd-08dd571d24e3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?U3YlacnYl/ip60bHjxeP1BgH7h?= =?iso-8859-1?q?19w2s3yr5PQ+JuOIJU5fljpIZB13bXCI95BCVBV7pLklQgu9BhC6moOtuCVx?= =?iso-8859-1?q?lnZxyYJxv+xrycIL6a5pph8nQv6nQmoEtGNHTGhGCx9dYIe3bo3tb7RsBIea?= =?iso-8859-1?q?HwmH770QYSADTE2IlZowj/2b3mhtucXoesQgASp83yrxcQ95U6jMB+AVKMeH?= =?iso-8859-1?q?P84OHABKSfuiGw0WAE3Lz6q+/cSe2aoUrRQeM1HTPCwa18h3tTapnqnCCfCX?= =?iso-8859-1?q?vgf2P5l2ma+DNa9nIjD9vUdFM3IKReqVlBrxcw3x4pWbNTh//2FH71CIAxOV?= =?iso-8859-1?q?kxfznWUFTCKsjbMFo/9lKql3WqBLG4q3DxK9iWD7uNTFGEowMBZRq5sGceGu?= =?iso-8859-1?q?OOMk6sha/goDFaff14/D9vO42kKsSUXfiWT7LOmm+ySX7kbJsvnB7sRst6wx?= =?iso-8859-1?q?DVOEUfVqylvmqIOvEgxEO7XLZVurz5ui5hAkp0HfxHNweJXE798eZm5vUniH?= =?iso-8859-1?q?QRAxlNQE+qMCdySd2xCT4Mn7RpCxmqpcaNQhlvqp0II1jiiFa9Y3ci0zktz2?= =?iso-8859-1?q?q0TBjvQKmShC1kUbx9Y6+Ozt1VLQld22GwBZntOLbS69ocAFxW73KSx0o5D2?= =?iso-8859-1?q?ZZ6Ex6yRWu9iVI3drPkqF3pgTgj7k3tElOz02A+SNk06JgVGSNdkHae97RM1?= =?iso-8859-1?q?gacrAf2XeywJE69rAu2MOEAwxuKlZlDvkdaiUHy4B1ZefMiolaT3omf79MIk?= =?iso-8859-1?q?8tG0OpGm7o0QZE2g7/Cu15+rx9QWfaqgc5/hKDTi97NPHHfR120thgg7NIbI?= =?iso-8859-1?q?9MvOkxFi01lknCr99Zz3a4TqYIdntq6lLFJZQieHI/4mh1fP5YDVgSu7m8ZT?= =?iso-8859-1?q?jHqRll/ysZEwW1dAqN4fCo8XdDoYK0VhKz778BehUyfJ93sDVh4neA6jTra0?= =?iso-8859-1?q?b1h7FSrZ6gSO9Cz1emSquThkYoRm8xIzFpclFofvbZ/Gm8eCSmp/l5GNd51M?= =?iso-8859-1?q?QOjwbRpwZA0sQWt+TTwzijWNCXRlDGypN+Rtijrn0tTlqLFX2lChKFd46/oz?= =?iso-8859-1?q?Ond5OrIIUSHHsvQ6vNoRL+ovrt9qdCYPUJzRjoXJXlAPQMJxF7u3YalS+VUj?= =?iso-8859-1?q?2Rvuosc4DgvKFC7H5M7U9B6oJiQrH7pVcNbMQO0QLE9G40mZitbSl9nmjGm3?= =?iso-8859-1?q?8/xT4St6wPVabdzCkRGjhXCekuXwDVgFBnqVdixGD/zrbyrYIRe0cwqmQz4p?= =?iso-8859-1?q?U8QtHpCt49AitPgZkdZTQAbzkNG0nzgm663tpFHmCepRMg4kbcYhQUneSGE3?= =?iso-8859-1?q?aTfK72hGt2ZZM+4S6tJXT+f0i+74mOKniXNuwT3eE/JJecHfW7WtpOl76l6s?= =?iso-8859-1?q?PTCAn4A6Bv1Lh0C1AIAYacXu/p8aKHWBNtRiukRoCUDpmxpkUeqZUCb4ua6C?= =?iso-8859-1?q?REuIOdEEbfzou1T+D+rygyvouvHltuWl6w+HtBPXwn1GKqGpnK9+ydVfn3pX?= =?iso-8859-1?q?U/ISru?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?mRqa4+GGXqqXXHZQ1+kXqnx?= =?iso-8859-1?q?mOq9hyU85J9IQySruPSSsIXrAE3hlgEPSZ8iMHmWTzcFCEn04LIqxs3UsJI1?= =?iso-8859-1?q?9x93BKWHnYUWAeJMSFjlmkIOjA4lVN8LCEQnr7tj/hcG/7ZilRcQf6xw7ltC?= =?iso-8859-1?q?mbPN5Z794VpPkE8x2KxH9TEBR+UxO3XE7PazV/KewIt8xEJVH1+FyORELUSD?= =?iso-8859-1?q?OINqoIb2JLGF1PupnRPiUBlqlB1JEGW6G261Is2i4yuhnLrfB1GalNPdMpuD?= =?iso-8859-1?q?03tx5Sa6WMBnVvDNmgetr1NROm9Y7QClwb7H75Uq+N8FdPlfDrlvYqGLwvIs?= =?iso-8859-1?q?5GlP3Cm1ihpfzTPWmXiob8SRDv8vnQJbRoVe0mC0fcCaIfe8w3TA6x+TTjZ6?= =?iso-8859-1?q?8NtSK+sRcwmLwJtFMgWxIagEUOok6tchbS1gGYAdrfVAAn4ww/FXrfopGx9B?= =?iso-8859-1?q?4XZogRebtNsXXAwDYnW404qJIbrH0vudrBVErPxJcaRKcl+8re90qIiUUvro?= =?iso-8859-1?q?BhSMhuXk9UVc5TZdEQYit8XEfjTuua75fHZgJSXLH+PcsW+0nVhctJEFjPYG?= =?iso-8859-1?q?n0CT8wMzijpnhApzCQslggi293vsKvxFaZorOWPLBVp2EgykUFlNKKPYobyE?= =?iso-8859-1?q?aYsXHhd+NOFanq03KJ2UyMfqk0UyknuR6L+/O2bjznX3eE/I4f4RbOtLSC8K?= =?iso-8859-1?q?+/YXdnE/L4AZsBnd8NrG1DRfdE3ov60HQmB6TNOtXw1FgcafbWhJBk4OXVo+?= =?iso-8859-1?q?tfBSEktmKAt97iGx+3KaPlCYcAaRWXq2kBEdCd3dS72Jn90FF5x6nZoSNVkt?= =?iso-8859-1?q?0O8A5/zBrTctoan5RkMm560W3pb4JsjdIaY5ys3sXkleiIjDaJ6+GF37fm67?= =?iso-8859-1?q?TaxefzhyXsuNZcnZpH2wL0UTmTW881XUi9bgjbtVTlz+peub+BgAiNuLJYOw?= =?iso-8859-1?q?moUBNU4ItCypePcR2vRyBZT298n8Y8h1fmtlQqRIBDE8otuV5yegym+bZbs1?= =?iso-8859-1?q?Hi54LI5YmCkx/Gr0CUtjsCToUOC2fuKFfLkPMxoZLPHhHTJaXwo/IWFAZzI9?= =?iso-8859-1?q?UU4NA6mdnFr4PwcpTPC3DUZK7A0c6hZBEaQNIme/f/Chk8GebdJqN6DBW/Aj?= =?iso-8859-1?q?DLIAUIglwl92XlAseY1Ce4kytoY0fQa2egFPqr6fvJH4Oi3myUbrkyI2khrv?= =?iso-8859-1?q?mN96XA8HScsG533V/moPclRtoL8DYjhZ8QvmNQr52fsKJdIDMrrN6QaltVWV?= =?iso-8859-1?q?ILTSH2l2R+fc1k7NIpT4cRUAOTN0O06NJBTdLnEJDM1OpQ62Yf/5r+2yZzFn?= =?iso-8859-1?q?NGRzgQ1ukg7Is7zkV7u5H0fDewiflks0iBsKbMfqi9eshl5WfqViYDonlmtF?= =?iso-8859-1?q?nCO16lUgGmHtpokjw7ycmShiofxVvPp04r9WbjtxvJfwg96rtSo0jd3uLE/N?= =?iso-8859-1?q?VR0/LR9Ge3YPbKQcmAVxxKmbepbG6BzXz7wotrvQFn00QP/PneAjPnWbFUct?= =?iso-8859-1?q?bn65FbXT8WdJVyEdGNOEX9rxALmt4RkmwS9xC/0UZox96RPPkmmrAXSfigHG?= =?iso-8859-1?q?mMlioQXy41qRoJci3pQS7Kqcb37P17hvb7RDciBrGLOMa2+V24LDu8Axj6LU?= =?iso-8859-1?q?02+PvWFzCg3KHowQ3jzc+COOehPcyfTD+3d2FCYMHfXWz32Ofs2hsRjDCCI4?= =?iso-8859-1?q?=3D?= 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: 47d85f34-f083-408c-c9fd-08dd571d24e3 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:44.0526 (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: vozy7G07VnV72BrU5Gwm6gc34geFhbF4DiIqVtM40xcN3s8EFP1XwULnEMMdKMqxM/2AMTJuWEdYgDEPNuxY3ZMKlpycnIumgzpjLNZ0NPpMnlHVi/4dFYuzJdw059Eg X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif The region returned by this operation will be used as the input region for ATS. Signed-off-by: Clement Mathieu--Drif --- include/hw/pci/pci.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 4002bbeebd..644551550b 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -391,6 +391,22 @@ typedef struct PCIIOMMUOps { * @devfn: device and function number */ AddressSpace * (*get_address_space)(PCIBus *bus, void *opaque, int devfn); + /** + * @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 * From patchwork Thu Feb 27 10:54:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994109 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 E776FC021BE for ; Thu, 27 Feb 2025 10:59:07 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXa-0004bL-8Z; Thu, 27 Feb 2025 05:54:54 -0500 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 1tnbXY-0004YK-KQ for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:53 -0500 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 1tnbXW-0005pC-N2 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653691; x=1772189691; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=MFzdMfJRvzeRB8KN3cYhlmgFrM88PNKvAD0/WZFjBos=; b=BkMfzQ+aAf9ovwvfd/UOCplD3QpexGoMwgmJiOpTDBdlFmUDeNqSM4sA 1ReQb7V/8ZWlaCrPkgZrmdwBRToNcGnf+G/StxLnFgbOiSETFehmNtf2Y GsYLTvZnpcqOPqd0xcy7+zn2y8Htg3PQ2Q/aC9AfxQpNYZSFkHtZIa1lx 0ms93CbYGLSdZrfvh+mgWjFXlAUDW8pZsV8wKtTMesRPH8FmAvTL/1p+i uz2g2jM3WEwg9tS/VuJwl5eUWO15ufBOcLR6nX1Rb46goeOAXnAQNXkuN 46/airXTNqIug/KWXHs6HAKN3IuwQHo/cCoFkPwuUAJUjIcRniuY2UTCw w==; X-CSE-ConnectionGUID: 6LNfxTgnSo+PJtr9gtz/jw== X-CSE-MsgGUID: hPWD7/qjTmSu7tQ0fQnnBQ== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331842" X-MGA-submission: MDFSuJsID7FS2o5yFRpzQrqqYq4QdsUi/ozObKVvvEc67lDlPHYoVgRbuoL7gIyi90GIrx0mc7Z48TrHptNKbNcypdAf1G2HknOVwsE9LYRxWr0tYmKoxkkSHT/aoM2RGfei0aL89mE0ttFguTAbj2Kan937t93jZVvSvVc9lEHrbw== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:47 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jwSShu8ikxIXDoyhP7UWUfk0g7mwRY1/Sxlv7ZTCSfirObUPPrlbRc6bSX+tca06LHeU5ie6Eat2JBCW5fUeJtpF4/zhXWrZkPj2lU8MIoyIThFJwzfKGpApl/nvM1xqjgE0R+Z3+39ok7S/7AXIsnmpMDH0hL2zsTsNBYY2BRjlHWXS2W+zDxCwPNXxcAV1sxZqARxOZ4b9F0iQVIoLcAQriHFNz8K1+UNy85amj/vNTyxgrmck8cPsHMjqqM8sC9rEzVzMb9rRNwl9s3YkBe4SwuUn83EacWgxwftmJE42Q/5Ayg2yL12bvJG/FHG09BaBQpxho/AUdqQHV9LYZg== 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=o2iXVLFV52LhyndbqvldJ6WUjzWPJC+MCtn8QEwVLZg=; b=VTKyIbnRejOjbtjel5N97ETGYh4kAr+0vo6+YssFd2FdRH2Ym0D9dFfqaycpHXE8MZa+TdJZNTBfxWGI2CF+MPpXfJ3DP43ABV9BbmyZbJowNHGbzmJau0EKK8g/6tPDbjrJlwxqQ7pkpcNHO1/6RAQQjN+Ow1vWowqhKiVAopLKW3DFK0+A4cM2A3AoJz+yLrE+mczGFx3sV+6ZgQQqbjo6pkNHJ1wlXtqXzb/PzDCyCp+OblPIi9gropDR/BoMfuwVT5moWSOu62+YWH8o0FldkZ4qVLY1PbtFEIn4RtPoGC8eCgeV7zNqcntcfWEKtGqHNR6Ci8Zhzdqsm1L3yQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o2iXVLFV52LhyndbqvldJ6WUjzWPJC+MCtn8QEwVLZg=; b=Som5GbyzqVb38tts5RAuRWbgeLjk7/TsSDoFNTA8TCXxwNIJtnG6x3aQXqHC9fJnFf6wkAenNhlCHY7d1vGzbwwZJftJqkS9HTZeOAlP0M2OeaB2WK26wdAd/RIAMyw6pghMPd//6YmrCJjdqokAFlrWomkEaVUcvn4oceOHzIQeCMeJ8owoDSHGoCxqCX0VjGjEgyXI8Nw0q5TFg3JN0Zy/WjNi6VMKVlm3GZP3tqgu1oMBgNAR4Y/sb9ZjdcTqlD4DVOEzBwmNGLhtz1AwkHgV9ql/PCKGQbVeJO0Rxc+zBIiePfSRR+4+P7d+AohP24AI07UmKfja4ZxJK3yCpg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:44 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:44 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 10/19] intel_iommu: Implement the get_memory_region_pasid iommu operation Thread-Topic: [PATCH v4 10/19] intel_iommu: Implement the get_memory_region_pasid iommu operation Thread-Index: AQHbiQYCkIzSXfWcU0GCACeeqhivIw== Date: Thu, 27 Feb 2025 10:54:44 +0000 Message-ID: <20250227105339.388598-11-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 45a3a1dd-301a-457a-3b3c-08dd571d253f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?8wc9tj2PIZiJqPr+SoiaZQhAhg?= =?iso-8859-1?q?Tf/VjvPeTRXPVct9uDFFlmGd36+7eXNeYssHvkV/iuAXQNKq8G8ws5vZ0mDi?= =?iso-8859-1?q?RGlLnAmAURKVaE2Vi6eDCSuI9hvTJxP2zzrd2HT2c0HTVrzeS14+7wvnZg5j?= =?iso-8859-1?q?ALmY6D0aezCyX6NQgqqCeNEBgDS4oqyovRvmt+DWWZt0AaZ7GGBK6W4zE6+0?= =?iso-8859-1?q?G6aIKSnc7MslO/lDkTLkjFVtXez+kYF/p5kPQjVAfCuhRU00+xVe+k9IVkBL?= =?iso-8859-1?q?euHgYC/81S4+VMv8IVfLeEZjLwVPQVk5XZakEZ9h1jcOYW/+qY09jLPTfyce?= =?iso-8859-1?q?kNwk6RHNqG6E2TX4xl3s4CIUUW1y90PjrhuR+bzpQpe1wmkusTjVrz0yPv3d?= =?iso-8859-1?q?IvDXdfOVQGtQAMvkz9EMO0Y0oAeSmpgQ0wKsxf/a08JsTclZle1LqQvhGBrE?= =?iso-8859-1?q?WZtZpuUs8/xVUNvwSTWsCef1njbOouJ7bkPFooyLuyiAaLmX4orz7Xx0x82S?= =?iso-8859-1?q?34/ZTnjw5uiYzHCfkZbpIFk/BEk1DKAopQjkvf4kHEe5O69DFTK6Te3r5jBU?= =?iso-8859-1?q?pHdFNaiIfuB4k/GBjqOsNWZzhdwIOGouN3nYAalPSlaqalqZAhwNx9sIgK7J?= =?iso-8859-1?q?4Kfrq5FUC8CALe+lQLZOZxd8WoP9feJBhLusqJPt7n1zVwqEVKq185mdZq2B?= =?iso-8859-1?q?bTyeOnOUvxsZGQ6mMGQZg2qv5wwJXF+QL6zdyY2JETlAAvFY7qnP5FNjFmFd?= =?iso-8859-1?q?e3Ybg6At5IbevnfLx5I85KfNOV/CY0EAO79++nTbWXuTtA8fdyo83UvKduJQ?= =?iso-8859-1?q?ARVbZnj/hT3Jg7f6eOci7+dFI907WHJY18YzXkQEF3fbtM9r4PlHsFlflPNz?= =?iso-8859-1?q?1dG4rLXbqgzlDRw1cOo4s84f+V4EQDmF9usD8ypzDDvbpiStl2hzw3OnI76U?= =?iso-8859-1?q?NUYReNy1L4tQh9Ys4k/SQpIGxfoP/HKzuV8/zKMj4YbZfiBEhRRsVOVYQpgq?= =?iso-8859-1?q?nef5Mh2F0p6V+QYMjAsbaZSEao1KaxWBJmXLDsdfqG/Q6/YanHL1eC6kQQfl?= =?iso-8859-1?q?LBaT7Wa/efflPf+Re1S7CRO1oixla2DhvNH/YSKe2tJ1qY/s/TKJP71KhZRh?= =?iso-8859-1?q?JxosHFT8UdoBfrKcuNAOd3WMBW4WuDI20xqWQmpzaCo9az1pfienHJbR9IKI?= =?iso-8859-1?q?JNDrdF8Yz60MNrHfHx83FwtUUiG37X+KD92PQtxBriD4qSb8vK/YOrpsrEsW?= =?iso-8859-1?q?VP9V2cq97eUQp031uLMnLO+hJRqsIz64ha9BWYy++XfgjdxDUa2NLVxcm3lM?= =?iso-8859-1?q?YHc3m9spGO2LzUMZ+OXSkSZ15ZQWnuMnHY+MaiYn+6f4/JwZkyadK7z0IC6S?= =?iso-8859-1?q?bQZaH2SkiYhsasor2NONCHDKE5ml5XzLPpxYD4QBwltr4QFd0QgqwRR1dxug?= =?iso-8859-1?q?f3HLJR4rNh+P9rjUZu9GL3VTysfQHRTpOPRlJzhPy3X9nfg9IUbhp2gBHdtB?= =?iso-8859-1?q?Kc8/Eo?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?Zdvwjddvyc6Gb/JD2TUCwOZ?= =?iso-8859-1?q?fIKnQzO9EpapHzP/qjnYK4oUBjpt0yzWeZXIa7+l9eT9Z7OI64wAjbF/dU1F?= =?iso-8859-1?q?34JT69Ww6ZjoeA7QoyYT/Z5RfndXp2iPKLuUU7Z4f+PH0oVSkWIfsNenejA3?= =?iso-8859-1?q?Y7au+GnMxDFJ2BiRZAQoCSjj69UyCd1J/oNERZ94KM7zWswuAgbZgSc0uTH9?= =?iso-8859-1?q?nkjG/3GrEYaQm30aVtWvHNqzvgU/WUgWd5YWAcCsEjy6ifnR+Wxei8IyGICy?= =?iso-8859-1?q?i8AqsMjOBVLQVhhVunVP9jE2XAqgKGV8f6KUWHote7ey+7Yu+UrplnpznJDD?= =?iso-8859-1?q?R558CqQb+cjg54ByTQ8Ywn9afpWpbt+8jwRDPr6Z2iAMNAwZcDFoi2I7XaA2?= =?iso-8859-1?q?rh/PZCUNfcbBe8sJsNBekifu2t/XhyQBgQhMHshKv82VMxsOlRvef7nmgUZn?= =?iso-8859-1?q?D89NQB7zSPSgq5A6qBpyWRHxtcXg8B1Sq8bBwdMO8RdUzlKrMnBqqpIadMTm?= =?iso-8859-1?q?XzRhm3owh91gHa6XuHLzrF9KSZf7jqSPIJLwZMvll19OAVc5G57zIV2iTB24?= =?iso-8859-1?q?IprV3JtFYTKcKARlizvdx14gFlhIqnKCH+uI5IUYWZfYQMhyvTsDbgppE57g?= =?iso-8859-1?q?ZUMxKlJZ0EB/NUMPDvBE4PcglrwUBuC4fLm/VP0NuFj8dGvn8D70C2VNlDw4?= =?iso-8859-1?q?0anpUUFc7y9+jzioD6tUSGn/mOFKEzSoEBHft+KSTd7ePqzThgU+xt19Jk9J?= =?iso-8859-1?q?c3qHaEj7ybI+wHRYShfddimSYcmfTiETT4gwYVHvQEjrVPMh6wFuoLLcE2rb?= =?iso-8859-1?q?0qghL/1ivVCSBkAL7DqPYkSGh8UlPj+ZGGYpbw4p9HkAsPN6jZWPOGxhsEOA?= =?iso-8859-1?q?hoQADh2t3hCnAzckmjAzRab4UF+9puv8uJxaKq73RwPwHekFwEbk7JxLVixy?= =?iso-8859-1?q?v4JuEgVW10bciL81OI1BMMTTypfI5Uwneg0sROEUUGlpXWg8+ol8Wwcr//sZ?= =?iso-8859-1?q?wEcicmhkCxG4RiopAcIejh+YE2ukEtQVbRbLegg/sA3Si+SGBQNH01NIv8ls?= =?iso-8859-1?q?xIC+dcvaHQahL6U0ZApJVRqsKIx9ItsdlMNfzw93gqoy8bQKN5/js4yj/ppl?= =?iso-8859-1?q?aK9EgTMWUQuo+SmntDu3z5UsAoua5hKzEzp5NkUyYuwjWGczj+vAYSZAaCR+?= =?iso-8859-1?q?RdMJspRRnJvfJ1ORDbc+VtEdof+NYZY2OrVCz/6d2Kte1goiQ7TiryJkSgOH?= =?iso-8859-1?q?VFk7YDdv6H1+q2olYCP2yYtGLyPAKxafMNagU/zubcWK2sENdiMGmjs8/Lhq?= =?iso-8859-1?q?7CDwfLgMu8hGnp55Y27ifz7xajGD5N+q2a7Jfd2x0TGEB0LvF8KE2Cc8bCOg?= =?iso-8859-1?q?v2Dlpj8rqHlCTIEIAGj6cV2gY6SMweiTvJ/dyXwyXxyZzYSJF3ND/sFSs3CW?= =?iso-8859-1?q?B39QZRFYwKyqdBJrKVD1b4sP3ZFcGae82t01cEgApFjSVTJE5kt1ylRBBna7?= =?iso-8859-1?q?8KWKeQJ1IjjePy8tvEZ0Ak0IDgbxkbk/zAIX26MbUrMhx7Ho5QLNebSWcc+Z?= =?iso-8859-1?q?hUx2aPAT2utWo68MRMR/MJMTCr6XFzBSRw+cpo4dyAykldau3KkMXszX7Xq+?= =?iso-8859-1?q?E8NKDg5bn2fWdp5KtmZnILOAwrbtePUj4aMnF0VY9Oeif3p7u7K+b5C+6rCw?= =?iso-8859-1?q?=3D?= 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: 45a3a1dd-301a-457a-3b3c-08dd571d253f X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:44.6789 (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: FzssABBRmKMeemdzsHCJ9J64B3AIHbQrY7Rb9cRAFD4fQpyFUy/jFNWQhG2UJAjNbE0OJBgK/d5RwdN3Ya69+PpPjwYSoU2AqM2/3gxfBanYBe4feq52zS9RJOiUL7r4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif Signed-off-by: Clement Mathieu--Drif --- hw/i386/intel_iommu.c | 17 ++++++++++++++++- include/hw/i386/intel_iommu.h | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index a360119fbe..d3772d8902 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4202,7 +4202,7 @@ static const MemoryRegionOps vtd_mem_ir_fault_ops = { }; VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, - int devfn, unsigned int pasid) + int devfn, uint32_t pasid) { /* * We can't simply use sid here since the bus number might not be @@ -4719,8 +4719,23 @@ static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void *opaque, int devfn) return &vtd_as->as; } +static IOMMUMemoryRegion *vtd_get_memory_region_pasid(PCIBus *bus, + void *opaque, + int devfn, + uint32_t pasid) +{ + IntelIOMMUState *s = opaque; + VTDAddressSpace *vtd_as; + + assert(0 <= devfn && devfn < PCI_DEVFN_MAX); + + vtd_as = vtd_find_add_as(s, bus, devfn, pasid); + return &vtd_as->iommu; +} + static PCIIOMMUOps vtd_iommu_ops = { .get_address_space = vtd_host_dma_iommu, + .get_memory_region_pasid = vtd_get_memory_region_pasid, .set_iommu_device = vtd_dev_set_iommu_device, .unset_iommu_device = vtd_dev_unset_iommu_device, }; diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index e95477e855..08f71c262e 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -324,6 +324,6 @@ struct IntelIOMMUState { * create a new one if none exists */ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, - int devfn, unsigned int pasid); + int devfn, uint32_t pasid); #endif From patchwork Thu Feb 27 10:54:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994103 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 31DD0C021BE for ; Thu, 27 Feb 2025 10:57:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXb-0004f6-Cf; Thu, 27 Feb 2025 05:54:55 -0500 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 1tnbXY-0004YL-UK for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:53 -0500 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 1tnbXX-0005oQ-90 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653691; x=1772189691; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=V223gIkaKR30sNUdnEml5N4wlPmNOlUUGNe6oZ+paVM=; b=C4gQERwxPDuJQUwDXVuib5HeEC/my/pWzYEsz0XY/IPbMn24wmPqKHpd Ow5VkreNMjUQ08DHoTCif2IaWEGpgIZ5C0uWhDzoTCfzykbJ7U1qVMaUc 8cyhMLCI8lET9NnpapI+I4X1RhKrj/A5MTHpDztJ2Iz/tkVhZCNtslOhq R/ydl2CKInoxCMIX5hSWGU5CCK3IUaegxHGjGE46+zdEqw3IwLocLvWnI 4YbBztbNCfbozvNiNOamx5Yt5SuizBxM60FR3Qtlr7NZTfQ1sV2Ju/dGh dmvG/NJFCwOzRMGzg4rUtUJf4Cj/u4yBt1drVscTKyzZDQ/8/I/aDTJrZ g==; X-CSE-ConnectionGUID: cN6UGbkDRbmj5rZeyTfvGg== X-CSE-MsgGUID: S9nL0AnWT++j/kU4D1KUaQ== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331844" X-MGA-submission: MDErWGch/tb7NIQ25pullphBvH1UcSXz14d8kzTSi4hDqlmnjoNhFDXm3ORH1RVuxmmPH1oQt37dlLREItND1oYpP8hr3KLrTP4953QEeYkFZOeHTYHU27jnZwf/kC/blKzBK53dffO9YlNIYgoNLcNMAnmet//VRuELJP8AKeyukw== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:48 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w3wkWvTYkBjIUnmMljZcJwrCzlqkIHriFvZbd2NYj2/dHJ7IleZiqutdGCGK+W6zaudpI/STeEuHu0KL36GFBHPmwl8NylOuVaBOghjP27BxhRtqQaa96188hbGmVGChLv5EsCF7aczkdaAATT3oTLPICMM0RGapynynHuPNFDRVtHdyLLbwZHfqiCRUST73+ttfTRKeUnZwL/Va7rmqI6DnSHfH64XAswClSqOzYuqLYfFtmYI+oKOS8lp7WunvPRQht1RTDEhX6t6XnrMpuoPIcDtRzlyL1HeFgkjVwIVJPqegsXiH1M2dL1RA1toBAI/x47aT1pvafd5NSTAVDg== 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=4UxSyr3l4O0MfvKh7SI51WYPvr2HNFpIRSV5MiiWeWY=; b=uc2N/i9xzrYnBxM146yjkPoi5er1asTdCneMShnzNsfivyOYbzDx4GeYW+CK46hqpPMDiUqvHoNE+UozdPP8exHM4k6SjYGrRfJ8CPp9LlKat3iHTcqyB7Mtl5Ul39LjnLYsiSMuwKEw736bFiRVuqaE9O3IOPk9LvsT5Bn4boqeAUBukW+FFs2Qz59ZA6iNSD5UuQxpQlr4D8Gjd8YMViYfg6I8lmnJXXc2cVcnry3MFz9Pqed5lK4YdB6tI/JxCphVo3ndmxYZlGjGvjznO99efYRxQ0NPUIDxb1ZeYFEoW1sMpxTeN3DQt20OcaPq3BDj0GTFuFIvB8ijReDpeQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4UxSyr3l4O0MfvKh7SI51WYPvr2HNFpIRSV5MiiWeWY=; b=RXDIRUHw5tYgcuhlpycACnWhNudn3nnF2nBvn1WRpQSuxg/OUAMA8V5F5jS1icjstu8b7q+Va2pdd8ZXGpPwTm9UDxhvYz5eaQJGxwqxcYIPuoFC/4iyiUKO5D6GkRB5f+eFA5CuFNOweqhrXHRq8je2rWGjaVpH5g7u92eYEcGB/aZwt3kk8oiv08lT6o+u2mK7JjCRj3+qnU9yyfjYDAmltPbNZEio1Lpk8egrZ9eA7ibSNBm9xDwUlfjI6uFlKEsgYEnwSRba1WGXzybmom6D/Po+53NLmDKGiVH/mxxayhqWJAOTgzZGehoJ/LMw253PGfrJ0MAk3jk4z38Xgg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:46 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:45 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 11/19] memory: Store user data pointer in the IOMMU notifiers Thread-Topic: [PATCH v4 11/19] memory: Store user data pointer in the IOMMU notifiers Thread-Index: AQHbiQYDSAyUVSLpHk2eNfYAP59Y8A== Date: Thu, 27 Feb 2025 10:54:45 +0000 Message-ID: <20250227105339.388598-12-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 82669fd4-553a-4d7c-2a7b-08dd571d25a8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?lwKYKBrMwdsb1eJrPBudDp1MbN?= =?iso-8859-1?q?bMIfRRyDsmAvVkfBzA4H0o/XQDsufvorHl8NIqyn6cUcKSOXKmHCE1ds2lom?= =?iso-8859-1?q?FtWPKQZtiLCKrEl+WeQ0iBf/Y6F5RebAV/1kYQvte0AdFVJM4yPP01eg6SXF?= =?iso-8859-1?q?K/0BQQcnGAk4wjGGNXFaXGg++zhXzYRiFHe71foEuWc+zQWkt3plqmp/3zWO?= =?iso-8859-1?q?Dtvs5zgV5XJ0grj0W1G4jguYRExq2J9N2U4aZgUQRQ5lLxaBFkwVtso9W/oN?= =?iso-8859-1?q?LcPu3POsRUoYVAQ/KcsK4XXAYMOkb4r1CWjxzijplLbcNylGe8fg43biVDPD?= =?iso-8859-1?q?UX2Wz+f5tw1nv6jfei6dWRkjGUIoX+oQ+cwgbKf/JfhJv2IKmmucdpQzeIas?= =?iso-8859-1?q?b8CSkJ99RyKyCKaz07bPflnOx8eY2wr0kEpFcBcBV5fZ+n6Suw5tNqBlayYo?= =?iso-8859-1?q?qgMCB8ir9QcvYl1p5h4cuYkn4VyEWsz5QVofeYOsFwexe9k7HoL5U6bqN3WI?= =?iso-8859-1?q?24K1uZRdVEtQPLAUoTIX6GSDw3oR+iWq1gLg2dvoMD/pwOLXYRqAK/lKl/FL?= =?iso-8859-1?q?Ft4b2WuHghUCtzk/Uf7luyTXPhjOhtGF3wcS6/PyY2bd3YsCvGyvv04ZIq8N?= =?iso-8859-1?q?qUv/tOcK2pGk4Qi1niHQD9RmEX+ZJjj+KdzorNSLnY1xpU2bNDOhZLLf1cjk?= =?iso-8859-1?q?uj8uEZKGX1sWxc/1Hh2+Pe8aietBEkiv9gilptq7K98JEs9DkhEKR/V94OQu?= =?iso-8859-1?q?k3zJ9BkSoAttmwLzIhAw8DulhURRu41Pp5gQbXqt2oxOb/Q0d24Ko4X5PAcH?= =?iso-8859-1?q?qGScWTtH81dUmAmhA+QejvfadhLvKsNCSGZn2AzIitGmhGNLNU8grYLTErbY?= =?iso-8859-1?q?zep39eDgkn9o7uKOARKfbx9GR5tryFFu/VSSDt5lNGNlz2A/Ojhx5X3DQ9VU?= =?iso-8859-1?q?h5IOGpXPeKskporvAKYira1cGgfhgCtwNbxX3BeM7/985nSQ8rcyNS0xQUjI?= =?iso-8859-1?q?BHIlyaJQO+vw2d5Zk1GqOAdFoe7z7/i+Jb1RnlcKuYzaLWCEOk7gGdkt6ze6?= =?iso-8859-1?q?1toRi3aeuVt19v0J0k/UhCBwT+2Hn6sAs+cqCgWLFAWJKawkJqNWI+KEpVax?= =?iso-8859-1?q?4qlejXN8w/hqKGDe7XwkBwi+As5jkcEgEXc32LJx+q5oi8Yzfr511IHoR7fk?= =?iso-8859-1?q?yI+jG1SPH2Mo+EVenr+qiYXhJQY5Ynzr8v+uRZp9w/1O9eGv4Dnt46nStJMy?= =?iso-8859-1?q?cTMMwNKyvoIaSWD2DJxkrRBvaUGQFQk5a7dNuIJlnnEIpHUw4RyYLUw5NDi7?= =?iso-8859-1?q?F5vDE21QVk+MvIIyTgJshdHy0KDpTbP3QSQ/NFMxdeo1yLtjcpSEsZK9Sp77?= =?iso-8859-1?q?u7HX628dcsgaibLUw/Pip9cT+y1+PMbeDPAHfl3SoGg+BBD0l14dT8ltJDk9?= =?iso-8859-1?q?0J6BZR2u8eax65UneR/Lzbgsw4HUHJsjCkM6CGZloBU+zO+g4hzWPWXV/qI7?= =?iso-8859-1?q?nwKXeA?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?XIoqn5Wd3tdIyVqRes2lVPg?= =?iso-8859-1?q?0X92SmrT1b/BnZq2iE0LkcMV4QoPBPzYKjGPQZUcj1njmAoW87Bpz5now3dy?= =?iso-8859-1?q?vIecaXhNSj4pjtAhgRnj1Gsp+0nUXKfSqkn9dJbYyhro8d7MY0mtL8Dg6JMw?= =?iso-8859-1?q?/885xUlGoZfYW77UwrFycNGE+r7kqz16nKlhdXQ+WA9tnF/1IYRMNb4VbzbO?= =?iso-8859-1?q?mOiEj7YCfxlqT4vDVEPQyZDIl1P2MD+vpnFA2JuVOj+7TG6c/SMR2ZWU+R2S?= =?iso-8859-1?q?L5J9YSSw24Wcs2Ig0DYYGdCQsRwD/QgiOXLIAu1MKJ7nf21KU9NYzewDVyAj?= =?iso-8859-1?q?qql4pAlxxV0y3zKWit03zStgsrH2UD879Or8fSil6oFyeKxeI/T5vrjR5BtS?= =?iso-8859-1?q?NuMyLuEnSy9dzJRVBKYvSM1wW0G6leJS1op4bBpMFiQTsfirWyKlHHM334db?= =?iso-8859-1?q?3vwKX5pNIPYumwewocLD2tIBu0csA3oRfhsLntBPUxwTegEdiP+jVsEelg3E?= =?iso-8859-1?q?tjJfiTHb2WL5YY18SFapn7W7GA3+3WBet3JXJOb5qXGGRUpQB3bhGyWN9AHx?= =?iso-8859-1?q?KKDLn+yWecx6LBw8q7ZipSwvqdQJmNcR7E8fNbshx/6DaMXZuw0BOp8ZVhqF?= =?iso-8859-1?q?XViOjoxTUlezbsU5AvyYVEYY806+3yesASgBlFKBSUqjqpPgoE8zgSX1614U?= =?iso-8859-1?q?DMnkYnRoDM++68mNSBQ5hsBJBvb1FaW+cri+/2mcOItaO0QYv675NxNu4hA/?= =?iso-8859-1?q?xYvPZB0+u5tJRisywSe8cYBGlNBU8svM8IZWTwlkoTX2xFZSOLzhSK47bpVI?= =?iso-8859-1?q?7fb5Uih0EL67OWj8oHQ+L2IvObpwQttUirVTUw17YRGTHw9PfzKE+JvvopOW?= =?iso-8859-1?q?mJUpyLsP6ecQ8lwZmWeEsEJU8vPvdZiHZknKVbnPtkZQR3dIjiQtGlEFiywX?= =?iso-8859-1?q?QNsYotYIRJDwmW3ZYqgOD0kT620VWsmelCjcwPoAPw+DkKIIfCkUw69UupsY?= =?iso-8859-1?q?FI863nVTi4l+3O1JEGaMUYZHZPgDa4ElqMNAto/gg499Z+FYh2d78N9BHebY?= =?iso-8859-1?q?sKTe6xR8HrX5Audlcxh6qtA8fZe5k7U7Mmsv8f0KlZIo/2P8YctQRCzBO6Ce?= =?iso-8859-1?q?/VLlLjd+2w8pAfcSX4whxXkYrCHCD3x+wNbMSgwPmjx8eWy6nW9d6DOdRXBr?= =?iso-8859-1?q?Lwj71szJdNIOvTCRKsEKdMBQmIl3GBN5Oy/KjqLRZS+X4GdXRRlQQEmu2SAi?= =?iso-8859-1?q?H+22aGWaEEQPmqBDtqBoVxj2Ouha/scjaPLskzB+9x++LNmQ4Meda5g5ija1?= =?iso-8859-1?q?Ew03UU+DlBsjHt2gqIVKHSL/VhEreFXoVO4uJ4nFrc1ZChovTFG03++7lopD?= =?iso-8859-1?q?ES3GUiz+CFFcE0JYilZzcaq0cd5HKjMIHv5uB6oyXG6XtKjVz60TcYtQV9Ve?= =?iso-8859-1?q?/N59vd2gZPSOkcUdLymk/hXtF5RYYheXt4+aSHMZ5zAYmJD1YU4ucou3vsZ2?= =?iso-8859-1?q?eS/obCx2SEbt0YjIYbvqcboWplRCePeNL4CUc9KvllStmzh8zvlgpwl/qsh6?= =?iso-8859-1?q?1BHCulI3vpKv4tAfiXp2Y4tYThyVjbptsJHgCcqRfLFG3XzlWuIGvRKuP06F?= =?iso-8859-1?q?noDn4a43h44fsWGnol5ynmGcI6jt5opHOqGGkVUNbvMjhj98ftRSSd0caBWw?= =?iso-8859-1?q?=3D?= 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: 82669fd4-553a-4d7c-2a7b-08dd571d25a8 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:45.3367 (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: 0/SLqz3kvRSiepFsVSNC9AyjK+EPki7zIpRJi2FnJ9qEmJ9M7HZZ/OY1xeoGKG4Q3zOoxDZpeGSuQ2acuPbrrVBEK1TC+rtHRUUCoOEVPlqaeT+lcCyO2k/Qz9SyDCAE X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif This will help developers of svm devices to track a state Signed-off-by: Clement Mathieu--Drif --- include/exec/memory.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index eee625a9c6..4d240cad1c 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -204,6 +204,7 @@ struct IOMMUNotifier { hwaddr start; hwaddr end; int iommu_idx; + void *opaque; QLIST_ENTRY(IOMMUNotifier) node; }; typedef struct IOMMUNotifier IOMMUNotifier; From patchwork Thu Feb 27 10:54:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994101 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 45A45C021BE for ; Thu, 27 Feb 2025 10:57:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXc-0004h6-Pp; Thu, 27 Feb 2025 05:54:56 -0500 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 1tnbXa-0004cN-K1 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:54 -0500 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 1tnbXY-0005o1-M4 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653693; x=1772189693; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=PiyTkK6hdM98UWkbkeuE8WtZivWls1Pdx4DsUKcW/KM=; b=hEnjO1kK+b6eVmmpWY+QrBJp2JScFYJCNRdUTYgekrZmC0GKGaVS+EN+ IjrVCJy5EzIk4W6XB/7xdCUdUwzBdtBXL+j0k+slfJQNmkdTcuMqJVGaP 2bVSUqU5kpd/ylDUZinooNZMYZy8DUTEAeFJezzdq4mwNl/drSJqkeIwC opQBk1mSz/qc0k+vOn84GXeUcUq6VrFBDCpEcTTe6R0nKJPRClqGWo8Ek dGnj17UuT/sOgxBuF35+Jb24iV/Rv9p5nUDifO56HuCd6GvCO3qNW52iZ k+eTHNLG8MYDfyPH1CN55cZv55PYI4BGuyOKhdOQkU00m1lajJ0BhG3G9 g==; X-CSE-ConnectionGUID: kBBLYQpuSMy4kFsXOx259g== X-CSE-MsgGUID: FCl89dMdQPWAy7HDGFBU2g== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331845" X-MGA-submission: MDG8kUYEK5jbB2TkgYNF2zots/lMNnKzH0AZN03Q/Hu1SaiXLoyJWSFuZEhN6rnXL2MaKp0YGo0jgmxKZyroEKv3vba2gcJrfTGu2l8tAndy55jUxGjo3rCafJb12+nf+7iFo9r4gq6z1Ra66n381ghVCRsh8kVulvYfvk6QYnT5SQ== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:48 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eNNXoWFJIfDOjiYzSErc/vrt83oS6oLHWywYOajdtW4E7nVX49QxE5+423K4ehO8WSmdO5O/rp9PLcwNAPMpYMUv/HqcM/fNjtRaDrJ3xZsoTS6bR52YAG7DDgVT/ZGXP+PU8pumI8WG65tiU3yFXOvtsIat7XleV+MchqHupiR8d6yP4nf/zdNRNmghL4DTwZ3TrAAANQY6KXYMq6ALcd8XQ4mw32k+Q+/zwGF88cLmC1NY+MmWJ5rM7B9yRcaPFb7KDTYb4DADIAn31nJkEohV4sL3nqDzQukcus7qTVFyjNv6frdU35KCV96ajPBBh8s74R2bvnzYCgAEu5NGFA== 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=3EcOu+TOcfbfDadm1pZd77Y5A6tl5Nr6dRcZJCVh2AY=; b=j9FgwrZlY//mpkjt2n2P4EKGhakujCyWvDy1WsCdWOP97HYo0Z4deJnFUZjlMPsU5TW5s5btFy85j7GaWrGWmIDD5t5jKGW4WtLSsiUeHtPhefUHCwGA/XwdM7AJHr/WOXLi5DcvxdydGYBQ8no7gEvwj6RMTxb75KRNUE7BB1nHs7BiHmk2b4D7i8/+nbaHqZhH6Kktm78jhMMVaCaJmvEw75U7pW9IlTqZPIXHZ8Xuj76VtJ63RmI24TQenRx7ijZhx3hepN9sScKumMxVSxT/4lijk7Wl9oH4olfL2ep9UfWZC74CN+EDM/Qmx9C3d6KZ3x6w+pjTxJMrc38FKA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3EcOu+TOcfbfDadm1pZd77Y5A6tl5Nr6dRcZJCVh2AY=; b=Qz06hx1/bAUqL/qOezbjEj7bbwQdjobMUmlEcBCKGCupUvmUxpzKMqINH4m2UQNB7gML4uPJqvT8KoFBpOIBbSwU7PRh7a1RZRD7XsnjzFehB6TIc1Ygy3hzCBJy2YMCIkv9kSFeVVMMvfUXg9g8oUROBgMDr6xmcO2PrK/QBVYVOwyEdbcXNxalmssfOapnhWJ4JIy9ZZHDvIClsizihYMqwpHjZlAzkqAYsJz7Xjx5pNuUtlIwB8TxzOHkEOH2W9zi2kPQnZyHwi0CtsdU7du82xoDxbSVDl4TWdQLkrJGofB0w+LjBzXnBk71wS4Qwl3zp6MY7y9xx1m9O+pDAA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:46 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:46 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 12/19] pci: Add a pci-level initialization function for iommu notifiers Thread-Topic: [PATCH v4 12/19] pci: Add a pci-level initialization function for iommu notifiers Thread-Index: AQHbiQYDp5Ri8/0j4Uey1wj09Ce2TQ== Date: Thu, 27 Feb 2025 10:54:45 +0000 Message-ID: <20250227105339.388598-13-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: cf5a4072-52af-40f8-eb9a-08dd571d2670 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?/gGQXpcct+t1VmjW7GNgesqZHb?= =?iso-8859-1?q?5TLk2xKEEIfOHi27J0512GONeO1RAot+AuG62abB47dgwgzixD/QfHijTOiS?= =?iso-8859-1?q?cLmWEfjn3YubBbvLCXxmMlitrQYFr8z3h2LDWhR4gvz7cu/8UVDeTwZAY+Bv?= =?iso-8859-1?q?o08DfCRyCN20h9XLe40Gx8tMwL5YJkUC2KnFLT7Y3mwXG17ImAPEQWPy8F3+?= =?iso-8859-1?q?UoFAGfObwiRKiMtOP+yzfMBdw2CtW8NQsXlY0XUC6uTocrH41S95H34McfjB?= =?iso-8859-1?q?VeWiTDnTAfVAeCQ2CcrTfpHFQ/u8RMCGGvfo5zzGJSKF2GSoRxfhXV2c4xcZ?= =?iso-8859-1?q?5z97eYtGC/JrTmBnG2rTl8jwFk4poGJXGKXj4ZES0Dv7+08B6RjTQ3W0uQ75?= =?iso-8859-1?q?8vYWnm9LRJ5/oT3Jtl3/C1CJnwgQe/QX0hRkx6QIxexCKpDJN1N8wZY+TY2Z?= =?iso-8859-1?q?h9hZkd1BewHZaqAmGwATt0Ni6KAxYZ6gb2+jhK5pXys4BuLYAem5T2RtYv9c?= =?iso-8859-1?q?OYxzCpDWZIY88006UJeRQHJWmwZHixHGSBtcathIfnLW54vNyqbyQhlZuXPH?= =?iso-8859-1?q?J+M9t2F59U+3y+zsGAncukxuv6/2nBstedsw3IAWu9xmOSe67gAb+iDikBVZ?= =?iso-8859-1?q?DKviZn9qASouLZ1Ta2eMC6xnDRJryj1xrVoUsZRItP26+r6NjuwS9t5WCVn1?= =?iso-8859-1?q?WUpuI2G2ekfsmXRHxGQHLZB847k9Os5E/dfHLISxGR/HdTPNA+cRcYQ94Sok?= =?iso-8859-1?q?zcuGg+iJMd3G1Cjhot9dL0Eup0gwkcBTcVchrwwBTGgXHubfjJsfFPYI/4c+?= =?iso-8859-1?q?ACPfVA5qsj+1mCTfSb2QlJfcMPaTSZxlPbNKz0h48lo4wL6XqpxuVrNiAnTg?= =?iso-8859-1?q?O6u5NCU4MUh6OOmXKMTCTuDGsb7B+vdYEFve4CPo8yW/hpJZu2Qj0sQr8GuB?= =?iso-8859-1?q?ptJT3NtPcCCFASTp/uOGmXk86oR2ZK8SNkVOWTj9qnBgvxVpqKZA7EvOxqgn?= =?iso-8859-1?q?BFDuoHq8VzqbWeagTH5Zb4WOP10AYBvK1to9JqxnPRUdVniWER90e2dqxJlP?= =?iso-8859-1?q?DkDcwvgX2+E4D/Bf3u5gRhBYwf6DaOgD0ayAtMsnZUUMwNLUv4b8QmTVO1Un?= =?iso-8859-1?q?YBTgjDMYu4JSun7qOL9BnQAAX1v14Km30xn6bmbJWnk2bIVKogBamzVUHOSR?= =?iso-8859-1?q?OLvXXDGgwXKpzaYmtffD+gNS5BbEqbN7wSs1BiIvL95hNg2eGrVkbaoL6SCK?= =?iso-8859-1?q?CXAD8yw3smvyqK8nQZwDRTbbxhGTsPEHoScqVQOhk/xu2H4k8W4FHRbN1cwL?= =?iso-8859-1?q?Slea96MMulHuOsEI/2J0fMV7M//XnajbOPxDkDW5I6x4EwnErgCcph48V3cA?= =?iso-8859-1?q?oblxgrGl/rQYc/+B3/ukaEu/pOePtyt6I7jy3JZBqTPQ8HZD6DWHJeRb7VnG?= =?iso-8859-1?q?wfkU0zd/kYU2euu0pfpEK/3wA4n2yrCkRE46HJ0wJ+Eo2BjJuOqdkSj1a10f?= =?iso-8859-1?q?Ot7+M9?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?PVeldNkfW+QpQ7Eps+i4MQ1?= =?iso-8859-1?q?X0UCl/upZMLEQ6ikh9oLwH/YpwbTc9mt7/dCkle4iljdvgZfeydKB1fvZrOO?= =?iso-8859-1?q?GeHojwwoH4qO8RpnPZ/vJmNSkITwyqlcsgfokZPV3zHNxilApD7Q4zrAuBIs?= =?iso-8859-1?q?qBx7k26lp/0nSFlQcPxmWfidxGapXbpyaNkWK1pBpv1kEecjiPl7k7iZJSWc?= =?iso-8859-1?q?aBZF8QNXkfnnat8IUB/5hMRij4a6ArgasLq8YORzNb/pHYJ2lnMkfPq0crIp?= =?iso-8859-1?q?E7LJ8Xy0yNYgDXBE6ieAUEGXeI1pWQp/6GhFyZQqruPOscjN6pKZuH2h+P5O?= =?iso-8859-1?q?rP+0P8Z2wt56xv6eqfPusYSE7UMYcS48hf+AI2EgRK5ExiZT6yFtwsf6mDfY?= =?iso-8859-1?q?VNYtrevMxQFeOCLjhhShXcG+Q3wCvihfUIq8B2oUJ9thz8q3bNrHmfiaKoqT?= =?iso-8859-1?q?47S9YqOfyDwO0Y0myg1Nc3sVVhWX7XMYTWfUEtKC78UgkCXcsvqJEdoohK4m?= =?iso-8859-1?q?kcaaAnCVOT1JECJ/xoir5AslRRzIS9+hduWsEM/Vj42GCqXAwwdlFvbBm8zE?= =?iso-8859-1?q?zq4pNec5FOKVerjiiJD33PSppFGduQLcbxv4PFUFSJ6yVOXmeuFSM1AEjPo2?= =?iso-8859-1?q?fnz5JuL7/JOZracsjCh1D8fpwL97Rwfm4bs5NWJQGXhUUDkctopm/EIRx9na?= =?iso-8859-1?q?ozgKlPvv98GBOlyii0B2YEN4PstFa9diJrss2w4eXaD0e/9dYucuBTUtNzsB?= =?iso-8859-1?q?7Lg/j5LHnKlawouFNLVGrAdy0lhXiaWqsNgls8zaYzieXoAQ9qRy8qyzvs7h?= =?iso-8859-1?q?tex4iYNGryauGMY5vVut7o2W+q4hO3EeGkcmjHoY8gqN2IVsG26rJQHYpQ/T?= =?iso-8859-1?q?kN3R8qpsI+g/G8TGpCWHSxsA4u/qOHuyxAPs3e3Cu6RE8OlPLdNi68MW2kWN?= =?iso-8859-1?q?+MHVvWhE/ina12sf+ztzukdjYC1aWRql4Sjet3DzQoq3Z1mY94yBXExvrX7x?= =?iso-8859-1?q?qYOWu3Ldvb+FjhFkfNAn+0XVHnP5ok+ctpTVBiK3GCeLOch86R3M6vjedU0a?= =?iso-8859-1?q?f/cdSE5XXiYCZhiZS0vM5fYW5+IYlodzCc+Ao45H7Oo0ELYe1qVcrm+npDyp?= =?iso-8859-1?q?p28DGwG5XZl6vgewmyQKcV/9oyZQxo7JRN7JO2U4rualDQVUDRFQyGaZ36wW?= =?iso-8859-1?q?/BWbUhl3//VtI6goKFr9NY+PUaRGAEoxjXud/uxr61KdxCxO9BkYdqxGXdMA?= =?iso-8859-1?q?vJSAnMrZSrHwMETEBpkjDmItpAwQ3tTYnwInAvs54f6MB3wVGPzgnjDeLte6?= =?iso-8859-1?q?/jWFRBOdLFSanPWrZ1W9aeoMYTTjhI2jHhtuC6GakAH7PnG+pu64G2IYdBrz?= =?iso-8859-1?q?Yk0AGwlGM8M+XeX4wOhwBftWqakNqbRQBc0vIYz+MeNugSGBe3r4cZLSKn5p?= =?iso-8859-1?q?uZGamz/INgcOTb6o2ke/VZ+zhuCuhBRFE/GPDItm2o7SZB5RCOA8v7dMvB5Q?= =?iso-8859-1?q?eaj/1+72JoUPgUn33Bm8GZOujdONKrNXzCy5C1YZRlBz1DHvuu+qsKcBckcL?= =?iso-8859-1?q?bJyoC0h3gEMPufMqtt6iLf921nYBGa50HYf+66LNMcrzF4VEbZDN3kfS9GzS?= =?iso-8859-1?q?YVLwkzVF0T7exyJvCfbLIxNbSVUpOfaF4Erp21WcfbRpD3rA0Hl/Zb6jQxBE?= =?iso-8859-1?q?=3D?= 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: cf5a4072-52af-40f8-eb9a-08dd571d2670 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:45.9890 (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: UcBh7ORwigPRDEdNeW1PGa0ViPlZLSNn8YxLS7yaB7kK+Uc1uHcbQIlTA0/B6qT+ZyCyx4vypH+xRUCwE3TlJxwhBkAe7o0/85UlSvKA+mZhBdXogvbVN/V4z6N6cX8K X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif We add a convenient way to initialize an device-iotlb notifier. This is meant to be used by ATS-capable devices. pci_device_iommu_memory_region_pasid is introduces in this commit and will be used in several other SVM-related functions exposed in the PCI API. Signed-off-by: Clement Mathieu--Drif --- hw/pci/pci.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/hw/pci/pci.h | 15 +++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 164bb22e05..be29c0375f 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2825,6 +2825,46 @@ AddressSpace *pci_device_iommu_address_space(PCIDevice *dev) return &address_space_memory; } +static IOMMUMemoryRegion *pci_device_iommu_memory_region_pasid(PCIDevice *dev, + uint32_t pasid) +{ + PCIBus *bus; + PCIBus *iommu_bus; + int devfn; + + /* + * This function is for internal use in the module, + * we can call it with PCI_NO_PASID + */ + if (!dev->is_master || + ((pasid != PCI_NO_PASID) && !pcie_pasid_enabled(dev))) { + return NULL; + } + + pci_device_get_iommu_bus_devfn(dev, &bus, &iommu_bus, &devfn); + if (iommu_bus && iommu_bus->iommu_ops->get_memory_region_pasid) { + return iommu_bus->iommu_ops->get_memory_region_pasid(bus, + iommu_bus->iommu_opaque, devfn, pasid); + } + return NULL; +} + +bool pci_iommu_init_iotlb_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n, IOMMUNotify fn, + void *opaque) +{ + IOMMUMemoryRegion *iommu_mr = pci_device_iommu_memory_region_pasid(dev, + pasid); + if (!iommu_mr) { + return false; + } + iommu_notifier_init(n, fn, IOMMU_NOTIFIER_DEVIOTLB_EVENTS, 0, HWADDR_MAX, + memory_region_iommu_attrs_to_index(iommu_mr, + MEMTXATTRS_UNSPECIFIED)); + n->opaque = opaque; + return true; +} + bool 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 644551550b..a11366e08d 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -446,6 +446,21 @@ bool pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod, Error **errp); void pci_device_unset_iommu_device(PCIDevice *dev); +/** + * pci_iommu_init_iotlb_notifier: initialize an IOMMU notifier + * + * This function is used by devices before registering an IOTLB notifier + * + * @dev: the device + * @pasid: the pasid of the address space to watch + * @n: the notifier to initialize + * @fn: the callback to be installed + * @opaque: user pointer that can be used to store a state + */ +bool pci_iommu_init_iotlb_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n, IOMMUNotify fn, + void *opaque); + /** * pci_setup_iommu: Initialize specific IOMMU handlers for a PCIBus * From patchwork Thu Feb 27 10:54:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994096 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 6BF5BC021BE for ; Thu, 27 Feb 2025 10:56:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXn-00053U-Nj; Thu, 27 Feb 2025 05:55:07 -0500 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 1tnbXm-0004xX-2Z for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:06 -0500 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 1tnbXi-0005pC-Vw for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653703; x=1772189703; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=93DPdh46cLzZN/H4SIAXi99N43vLB8BDQmTdIJflg/U=; b=wH0LVVIFjkSXP9MoZUlHuwJmUi/1gcVXMgAJH4JcB/7n0vkF0sDkepFH TLqix0ulKa3omHDPQSucZaVW/KDAzRGt00VRtTb4IEcolWqbShlFUofGd 5/wDl2vHsHYXmBlEaK2f1g2aEAlv9FT8Lg9pvmu8vO6ft8KR3ClX0jl9F NFtr6+YDnJENlsOBED0sO9E+4pUwUJwDc185/ODY23705S6AFH0aPHq0S nYGZ31A9EJKlFgmI+pmfErqfCDLzL1dwglHeUt0udat0miYnuC5Ml2tTZ jkQ+SOK8Wut0TNCVcknSqOn9UPDND8n5B9xmWFBhB1wP81IH8hFrTQJsN g==; X-CSE-ConnectionGUID: qHwjQ/MiRsCjpd3Xfk0hkA== X-CSE-MsgGUID: 6L/+7zHCSi6gFYAv4PYtOQ== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331846" X-MGA-submission: MDFWjuXsEDunYHr/HTDP38RtzypBRAetvtOVcmdOGsmKOGat8VvKbD1ToST3hdGGTKC0WqVzKNvzmZQ+ioHlY6/vEBK+bl/VXXqV/xBfBzC54N7mH3l5c8IcL0shQmLKSw9FVGjYTigwvhKlatheLtfLx2KA/BJ/ZtwrBIIgpy9xkQ== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:49 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i5KBlAL3wa7LNxmac2Np25/rNBEzldZNWx4JcY1qGoHz8hyBkQTsTpWVM+hAaKyVQEHHN8JOK2LpBol4g+H+RL/X8vSRLJV+A4zEcPuONv8NDPJBa03fa8XHFq9y2fhvF7YfYd7GGedf6JC8+nJhcI4y4KFIAhbjPlJgWNz2/xG9KYlXs5tOfOq/J8NUTU0vh2AMeP6K2H6lQcdCZdacUTat1WROBnHytkrWe0YYAldHwRolA9DuyOv2PF7AqqApFYRMm7YVIq3e61i++wGJRh7uJ2Zi4ABorLaDjd57dHgfQE7kkYnKl63mpdV0NMTHd5pWC4yzRAiWEXy7Sw/1Ow== 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=yVNdNxN1Kzl6NpH3QHUnyPEPBmv8L7Yr/HO9NfaAAhs=; b=GpgXOcVAc6Dbob45u3AHSF3dmnZhRAvIbOx3n6GBwBMJpxunBnJsqvgrgA1BmHC1PzFvXZ1IsFpzNI7SFbDtcupHw5VIhD8xl5NYqn31w8LBGW5evQyHnjlRfyxqUYrdPaXWJR/p09cyIgtLAw1mrxiHmAV04cru/1mCkO4bfTn/E/xP1SInTEM8Tlm/iGVLuJwPXd2E51jvGqpFtvM31lh/5bL9pKtd3Vj8n6RNd0nn80qrqgpNWcz4MUvus8NFCPVZgRI1m9ZvEjxscN6wYA8bp+DCs5oFR3+KZVhfm3gna7rBEce4Oo977vOfs8uippByyLHHRg1KgdOibDCYNA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yVNdNxN1Kzl6NpH3QHUnyPEPBmv8L7Yr/HO9NfaAAhs=; b=WMDgYZtlTH4Y8KgXNjRpSdGg8f0SohhbcSSGMA+iV1NvE6xRYpwojIFE0AISUHejeZAd5XbkcvEImqqBM3ABbRH1/hBrblZj+q+62crFJVmLwd+zskdR3GyWKg69sWB7l8OHe6ET+1hnbMxjV9DhtriC50flOJcTZnPyfftP0Lw462o6oeZEHvrlD+q/1J5ITlrp9RaVBnjadmc0TnPuBYUAN4PRoudN8PI9O8LvMHEHRkVtcDmVtyp1WVJB1IHUIaCUzw8awuqsmj0ZQ+TEW6f0KLpwT7J9A4klkjc91G/gTxSVhVA8vksqTZ66z3arJnEAEP2xBMzxLkwvcmo2zg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:46 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:46 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 13/19] atc: Generic ATC that can be used by PCIe devices that support SVM Thread-Topic: [PATCH v4 13/19] atc: Generic ATC that can be used by PCIe devices that support SVM Thread-Index: AQHbiQYDqF0Aw28mhEmJoFUeCXHL/A== Date: Thu, 27 Feb 2025 10:54:46 +0000 Message-ID: <20250227105339.388598-14-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 9cce7e6b-1416-478b-4504-08dd571d268d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|13003099007|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?RI32GePygr7xDBE2ev4qO6D3Mi?= =?iso-8859-1?q?hhO4ewxbG4r1QOJQ/3ksQhUQ76pkoI17CsY+NteBnc2c75tifz5p0GiWijZS?= =?iso-8859-1?q?0Vio5hb+1wav25Kt7pi3YRdFrujUpC0Gd8IUSoKVB1imVRHrBU4ZclEPKO1j?= =?iso-8859-1?q?xOnCZ9YAvMv4lBejOhpIN3oncg5rS1SbXQ0e4EENHgWwVCKlOmhGJlf72oU2?= =?iso-8859-1?q?gcXlxEKx3CqYYZRkuLQOkCIedoeNRclT2sRD8HWXqIXJAjiESpbenKssmbp/?= =?iso-8859-1?q?InFPMLo1Pen9Xa0UtpmUVdKyU8RuWbl+mb+9HCscahf47cnyaLflP3DQb6xx?= =?iso-8859-1?q?TTyIAJhSFiBc1V1zOcgylvdT/lpfa5GuXVe+FYICKPGirPyrWfz1pNRQV0eq?= =?iso-8859-1?q?Htgu065Zgt6H6OQqGo1916mLe3sWEKKgolH8bRM3Dc/m9mfDj/FfPdaHFyqo?= =?iso-8859-1?q?Bo68JaTajWAAi64yuBWgo0CR/dMg0/BiNTcvT28z+qefwvAOlWJKhIyPOgT2?= =?iso-8859-1?q?p+rM8vQhelWoIq7dZf5X0a9yFYfKX+eCH/PsGXlkxA2UMK+pAINdpA4nwc7+?= =?iso-8859-1?q?nLGk7ZNht5TL60dXNEo9ri4kcjXFoJBZN2SMRzI126Luuxw9wC+Gwy+LpMS5?= =?iso-8859-1?q?70do9bAM8ao7CcUa7n3ZExyDqXViC4Neknf6ZczxEq54HuEJa3ObT8ro5XxF?= =?iso-8859-1?q?U6R5f3ICcKnuIz7p+kOlfhmRXpqxA/3iMhYPS9o6Yr+oapqCU1mo7G8dBs24?= =?iso-8859-1?q?fp8gB3YWA6iFQEks9/F2uP+uHgMykuSqmNiSAJ2694u6vcfoqx7Tkj/HnXQU?= =?iso-8859-1?q?qtp8QbSPS1ia53FQgrNoeSxKvPYmaxnwDnKqD6YYgej+TPVMfjeyLcRbOE12?= =?iso-8859-1?q?sUzi+fm0g82Fmi9xbSZs0rTNSMUO09TzdCy1d3+ZJmUBLciQAPp3ATRCIlyY?= =?iso-8859-1?q?ig9Y1AHMKJFJ1javezVZVloOEMtzgsHsM3HNBUgWcQSiVumnX2uw5zsdoBNv?= =?iso-8859-1?q?s0vvoIipj74/QtQUS5bEC59eht2tgKstlty8X/vFhYLg/rAGanKHpEEjOYGA?= =?iso-8859-1?q?NzpXh42rlvsRdDYWkFVN/TaNAC3r23s3fg5/rBlT1vncVivu8wncERNBoCvk?= =?iso-8859-1?q?2xsqmZ3692OPNQnJO4DcPltgj7d/ZSx4B83hozNVRXmjqo2BMhkC6Fx+kUTk?= =?iso-8859-1?q?nEqpglvwFZBOWvWz5OmDYIW2TJYzz72iCiGePj+29nb0lZdgWxctDMCcQD/v?= =?iso-8859-1?q?AUgNtZxnhDluNMrqJrRah75H/F47RCCfyPT9EeUeTT4+is37XBm4QjeF6Ci3?= =?iso-8859-1?q?rtIFaqu5izzQX4mx88S9N92h9Kc25lnmuWpgNJvz62acofu8JujYEqWWs071?= =?iso-8859-1?q?5LjpU67C7D0f+Yd1ec57S/0fzZjs/INJU7TeYNvsYE4ZIlnmJtLvFxty2Gwn?= =?iso-8859-1?q?FqjwUIIHZBSASS5orCYsLp1g=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:(13230040)(1800799024)(7416014)(376014)(366016)(13003099007)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?vPH/la5EL/WXnX4HiujBCcg?= =?iso-8859-1?q?lOdJHcilJ2zY8jxQVz8qIVU2Y93P8Bm48L9ObGSr3P7nAIVNYDi2rVyirIEV?= =?iso-8859-1?q?Fh3xKwcC55mqw7mfkIimSSyo6m1VF0ni11LxGYcfLpG1Dt7iNmqUiULr3D+a?= =?iso-8859-1?q?JTvz+Q/ecG9Ce3VVG8P6weeYYSvWr694qQzSnieJymusiBTcs6yh7Tai5tP6?= =?iso-8859-1?q?g58tu7MBy/G311b8GVIseBRIUJ1G11eEvXN4F2VnDePaoGGhYtNkBp0+0aTy?= =?iso-8859-1?q?f3RsQPZvY5eqEDMuz2WSxxnfFBR4nSLAog2/ROx0v+yOq5Q9fpDIqXqe9sJB?= =?iso-8859-1?q?LQnCBmV9oUgyeMyIHLtwICyMM0lvIpa8O9h5hTONhQjTkPWa7siXQLPwTeGp?= =?iso-8859-1?q?h+5WRYOWVipXQogWffsjXFTezEh+C2GvEXNR0W6uEEfIquoPYMmgjJt0eVW5?= =?iso-8859-1?q?JgQs8oKVd100GwtryQqFnwbmKItf+dPO3/XS66zFzfPwAFtt/JQPYBllUt7s?= =?iso-8859-1?q?/fnNPh+B1LP77uKsPXdxwD0uauUyoReojQFDC+kPGqyK2QcdBvoy4oCDGT9q?= =?iso-8859-1?q?eUSHIwfq6gfGMZJwdRaYVbb8tMXVH0tpOOOan1EhpBScrK4Ccomq2zGSObfm?= =?iso-8859-1?q?/7rwIy8XjgvpIiVUyO9tClQjeR4S4BnAjaveXELuGlF1wlMW3jgCNIydPjJM?= =?iso-8859-1?q?fe5ruqWYr2JqHi/Uo2NaQHN6KRZgKASR2PiW4XYqR0FfOX2TpJx0BrgB3wLr?= =?iso-8859-1?q?Gc0z/jYNAPeFq9IvoV5e+fVFJAQwEX29tzWF/nyp5PGErgPUZwRiWhuVowan?= =?iso-8859-1?q?gql1qnH4lx+73r/qx+5FlEeSO4qivVAQU4qNFXHDrMMz4fQp+FoivDof6owa?= =?iso-8859-1?q?qPZzx6AcT06Ztn9zhCGcA4EU8yycNyNi37MSMHQRd8kBzCtQFQSO0KHW63z+?= =?iso-8859-1?q?SYgawZGqfIa8b2TYOhfL7N1pHR8/wcNGtwvtGT3TRiPHaT21ipBxP8mu+HAs?= =?iso-8859-1?q?2IzopmF6H1BzeG8kw7UTulKK6u/F6ZPpPGZfmYJJdPM/2ovDb6w0/I8kSJRr?= =?iso-8859-1?q?4GV7x2U+VWhLKLVtx1gGJFGekSdGunvxNnHTbWGtsG3+TdpRGRtdeI98XeLe?= =?iso-8859-1?q?VHKrRilARpxp4pHEW6ywFCHvkzNkyrWzb09nKGTdVudqIw2T8XtvLonog+Pf?= =?iso-8859-1?q?D+PbhrJhvyWPdc5IAzdeEanG2pOg9SZj8xxdo9+SbvrPeHP11i/0g3B9ApVn?= =?iso-8859-1?q?Iqu0sGEleZFEuRZVKkXyuw8nkH05oIQilcJvn/D6dBooC+N8aEUqfzwJB82B?= =?iso-8859-1?q?F2nnrwCYQ6o43/dHtxdjqFcGd76UfhJoD2BFsv9y/l+c0VZoJriAIDvaIYWH?= =?iso-8859-1?q?XMGbMHe78Mfwuu3/41hSebTX00WhcymjNfOJVIwWLMtG5g0CnQKV2moRqf58?= =?iso-8859-1?q?dhNVheCUYMQOnt+1sQOfB4pPmUQ3usxPMipZ3icMnWs9WdMLe6fYG9egoYE9?= =?iso-8859-1?q?LPZpLeoLqgPwVjIy1FwK8ZOM1bLuVA7DkIFOJT2asaPV3qLwppfUgWOSbUp4?= =?iso-8859-1?q?Oy6M1aPMfx/j86i6nNLh/y0QEYT8Vaokcm+0Us/wfI0qhqI28Ktgfrmm7QI2?= =?iso-8859-1?q?SyeP+SpfBpqvK/nGQH+0xbscmFUv9R0SlsrQ/c/zwzpcTgm2QSJqF41ifmeo?= =?iso-8859-1?q?=3D?= 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: 9cce7e6b-1416-478b-4504-08dd571d268d X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:46.6093 (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: jXjzH8riGveULQkGpOTr7vKRGyG1vP/uImeOlhhjedpZNSmdCuM3nz+nKJ9H+aaTr4aAEQTXsggeliQf/bCFuG7rHOxR3AQIExurdyhzWLfzkwoNnm1hrEdHHw8FcKvB X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif As the SVM-capable devices will need to cache translations, we provide an first implementation. This cache uses a two-level design based on hash tables. The first level is indexed by a PASID and the second by a virtual addresse. Signed-off-by: Clement Mathieu--Drif --- util/atc.c | 211 +++++++++++++++++++++++++++++++++++++++++++++++ util/atc.h | 117 ++++++++++++++++++++++++++ util/meson.build | 1 + 3 files changed, 329 insertions(+) create mode 100644 util/atc.c create mode 100644 util/atc.h diff --git a/util/atc.c b/util/atc.c new file mode 100644 index 0000000000..7cd5c7abea --- /dev/null +++ b/util/atc.c @@ -0,0 +1,211 @@ +/* + * QEMU emulation of an ATC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "util/atc.h" + + +#define PAGE_TABLE_ENTRY_SIZE 8 + +/* a pasid is hashed using the identity function */ +static guint atc_pasid_key_hash(gconstpointer v) +{ + return (guint)(uintptr_t)v; /* pasid */ +} + +/* pasid equality */ +static gboolean atc_pasid_key_equal(gconstpointer v1, gconstpointer v2) +{ + return v1 == v2; +} + +/* Hash function for IOTLB entries */ +static guint atc_addr_key_hash(gconstpointer v) +{ + hwaddr addr = (hwaddr)(uintptr_t)v; + return (guint)((addr >> 32) ^ (addr & 0xffffffffU)); +} + +/* Equality test for IOTLB entries */ +static gboolean atc_addr_key_equal(gconstpointer v1, gconstpointer v2) +{ + return (hwaddr)(uintptr_t)v1 == (hwaddr)(uintptr_t)v2; +} + +static void atc_address_space_free(void *as) +{ + g_hash_table_unref(as); +} + +/* return log2(val), or UINT8_MAX if val is not a power of 2 */ +static uint8_t ilog2(uint64_t val) +{ + uint8_t result = 0; + while (val != 1) { + if (val & 1) { + return UINT8_MAX; + } + + val >>= 1; + result += 1; + } + return result; +} + +ATC *atc_new(uint64_t page_size, uint8_t address_width) +{ + ATC *atc; + uint8_t log_page_size = ilog2(page_size); + /* number of bits each used to store all the intermediate indexes */ + uint64_t addr_lookup_indexes_size; + + if (log_page_size == UINT8_MAX) { + return NULL; + } + /* + * We only support page table entries of 8 (PAGE_TABLE_ENTRY_SIZE) bytes + * log2(page_size / 8) = log2(page_size) - 3 + * is the level offset + */ + if (log_page_size <= 3) { + return NULL; + } + + atc = g_new0(ATC, 1); + atc->address_spaces = g_hash_table_new_full(atc_pasid_key_hash, + atc_pasid_key_equal, + NULL, atc_address_space_free); + atc->level_offset = log_page_size - 3; + /* at this point, we know that page_size is a power of 2 */ + atc->min_addr_mask = page_size - 1; + addr_lookup_indexes_size = address_width - log_page_size; + if ((addr_lookup_indexes_size % atc->level_offset) != 0) { + goto error; + } + atc->levels = addr_lookup_indexes_size / atc->level_offset; + atc->page_size = page_size; + return atc; + +error: + g_free(atc); + return NULL; +} + +static inline GHashTable *atc_get_address_space_cache(ATC *atc, uint32_t pasid) +{ + return g_hash_table_lookup(atc->address_spaces, + (gconstpointer)(uintptr_t)pasid); +} + +void atc_create_address_space_cache(ATC *atc, uint32_t pasid) +{ + GHashTable *as_cache; + + as_cache = atc_get_address_space_cache(atc, pasid); + if (!as_cache) { + as_cache = g_hash_table_new_full(atc_addr_key_hash, + atc_addr_key_equal, + NULL, g_free); + g_hash_table_replace(atc->address_spaces, + (gpointer)(uintptr_t)pasid, as_cache); + } +} + +void atc_delete_address_space_cache(ATC *atc, uint32_t pasid) +{ + g_hash_table_remove(atc->address_spaces, (gpointer)(uintptr_t)pasid); +} + +int atc_update(ATC *atc, IOMMUTLBEntry *entry) +{ + IOMMUTLBEntry *value; + GHashTable *as_cache = atc_get_address_space_cache(atc, entry->pasid); + if (!as_cache) { + return -ENODEV; + } + value = g_memdup2(entry, sizeof(*value)); + g_hash_table_replace(as_cache, (gpointer)(uintptr_t)(entry->iova), value); + return 0; +} + +IOMMUTLBEntry *atc_lookup(ATC *atc, uint32_t pasid, hwaddr addr) +{ + IOMMUTLBEntry *entry; + hwaddr mask = atc->min_addr_mask; + hwaddr key = addr & (~mask); + GHashTable *as_cache = atc_get_address_space_cache(atc, pasid); + + if (!as_cache) { + return NULL; + } + + /* + * Iterate over the possible page sizes and try to find a hit + */ + for (uint8_t level = 0; level < atc->levels; ++level) { + entry = g_hash_table_lookup(as_cache, (gconstpointer)(uintptr_t)key); + if (entry && (mask == entry->addr_mask)) { + return entry; + } + mask = (mask << atc->level_offset) | ((1 << atc->level_offset) - 1); + key = addr & (~mask); + } + + return NULL; +} + +static gboolean atc_invalidate_entry_predicate(gpointer key, gpointer value, + gpointer user_data) +{ + IOMMUTLBEntry *entry = (IOMMUTLBEntry *)value; + IOMMUTLBEntry *target = (IOMMUTLBEntry *)user_data; + hwaddr target_mask = ~target->addr_mask; + hwaddr entry_mask = ~entry->addr_mask; + return ((target->iova & target_mask) == (entry->iova & target_mask)) || + ((target->iova & entry_mask) == (entry->iova & entry_mask)); +} + +void atc_invalidate(ATC *atc, IOMMUTLBEntry *entry) +{ + GHashTable *as_cache = atc_get_address_space_cache(atc, entry->pasid); + if (!as_cache) { + return; + } + g_hash_table_foreach_remove(as_cache, + atc_invalidate_entry_predicate, + entry); +} + +void atc_destroy(ATC *atc) +{ + g_hash_table_unref(atc->address_spaces); +} + +size_t atc_get_max_number_of_pages(ATC *atc, hwaddr addr, size_t length) +{ + hwaddr page_mask = ~(atc->min_addr_mask); + size_t result = (length / atc->page_size); + if ((((addr & page_mask) + length - 1) & page_mask) != + ((addr + length - 1) & page_mask)) { + result += 1; + } + return result + (length % atc->page_size != 0 ? 1 : 0); +} + +void atc_reset(ATC *atc) +{ + g_hash_table_remove_all(atc->address_spaces); +} diff --git a/util/atc.h b/util/atc.h new file mode 100644 index 0000000000..8be95f5cca --- /dev/null +++ b/util/atc.h @@ -0,0 +1,117 @@ +/* + * QEMU emulation of an ATC + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#ifndef UTIL_ATC_H +#define UTIL_ATC_H + +#include "qemu/osdep.h" +#include "exec/memory.h" + +typedef struct ATC { + GHashTable *address_spaces; /* Key : pasid, value : GHashTable */ + hwaddr min_addr_mask; + uint64_t page_size; + uint8_t levels; + uint8_t level_offset; +} ATC; + +/* + * atc_new: Create an ATC. + * + * Return an ATC or NULL if the creation failed + * + * @page_size: #PCIDevice doing the memory access + * @address_width: width of the virtual addresses used by the IOMMU (in bits) + */ +ATC *atc_new(uint64_t page_size, uint8_t address_width); + +/* + * atc_update: Insert or update an entry in the cache + * + * Return 0 if the operation succeeds, a negative error code otherwise + * + * The insertion will fail if the address space associated with this pasid + * has not been created with atc_create_address_space_cache + * + * @atc: the ATC to update + * @entry: the tlb entry to insert into the cache + */ +int atc_update(ATC *atc, IOMMUTLBEntry *entry); + +/* + * atc_create_address_space_cache: delare a new address space + * identified by a PASID + * + * @atc: the ATC to update + * @pasid: the pasid of the address space to be created + */ +void atc_create_address_space_cache(ATC *atc, uint32_t pasid); + +/* + * atc_delete_address_space_cache: delete an address space + * identified by a PASID + * + * @atc: the ATC to update + * @pasid: the pasid of the address space to be deleted + */ +void atc_delete_address_space_cache(ATC *atc, uint32_t pasid); + +/* + * atc_lookup: query the cache in a given address space + * + * @atc: the ATC to query + * @pasid: the pasid of the address space to query + * @addr: the virtual address to translate + */ +IOMMUTLBEntry *atc_lookup(ATC *atc, uint32_t pasid, hwaddr addr); + +/* + * atc_invalidate: invalidate an entry in the cache + * + * @atc: the ATC to update + * @entry: the entry to invalidate + */ +void atc_invalidate(ATC *atc, IOMMUTLBEntry *entry); + +/* + * atc_destroy: delete an ATC + * + * @atc: the cache to be deleted + */ +void atc_destroy(ATC *atc); + +/* + * atc_get_max_number_of_pages: get the number of pages a memory operation + * will access if all the pages concerned have the minimum size. + * + * This function can be used to determine the size of the result array to be + * allocated when issuing an ATS request. + * + * @atc: the cache + * @addr: start address + * @length: number of bytes accessed from addr + */ +size_t atc_get_max_number_of_pages(ATC *atc, hwaddr addr, size_t length); + +/* + * atc_reset: invalidates all the entries stored in the ATC + * + * @atc: the cache + */ +void atc_reset(ATC *atc); + +#endif diff --git a/util/meson.build b/util/meson.build index 780b5977a8..5e175ca665 100644 --- a/util/meson.build +++ b/util/meson.build @@ -95,6 +95,7 @@ if have_block util_ss.add(files('hbitmap.c')) util_ss.add(files('hexdump.c')) util_ss.add(files('iova-tree.c')) + util_ss.add(files('atc.c')) util_ss.add(files('iov.c')) util_ss.add(files('nvdimm-utils.c')) util_ss.add(files('block-helpers.c')) From patchwork Thu Feb 27 10:54:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994093 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 466D4C021BE for ; Thu, 27 Feb 2025 10:56:10 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXq-00054w-Nb; Thu, 27 Feb 2025 05:55:11 -0500 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 1tnbXm-000516-N0 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:06 -0500 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 1tnbXj-0005oQ-Gv for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653703; x=1772189703; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=oA3KYmbSWy/K+XMLDvDgQtpvoImsgYm3m1tPp4EH2n0=; b=Nnwkfzg4UGYs4Ih7auP8UiSoKShb5FgEBT0kRAmMyCd6Kmoh66JZbeo/ NFYXEQh2b+1ayIIYwwBxPUGqzsb0Kj9wAW1bwhDzSupqWB53cXz3JH2Rc dKt/f75ohXkJFL0COifeg8ub/kL267b/Kxdzwz/53h6y2mnS7oBnHI8Iv ao048MTCYciANH3qx9xEzbv4gXB5a8ayHImsKe80VioRNFcEN1W1VyOC9 HIzuOJQ5iMqpnpEDtbfNnRg/fEL7HhVF+udhiSbkC0NQaLwt1exggzCLQ Ymd8WH2le5UJOdIbIsO2sp6/OLeb+UNSZcz4sxzdSP6RuvtuDr8amhERA Q==; X-CSE-ConnectionGUID: WLwAKLMqQa+AXxXvmFJ5Kw== X-CSE-MsgGUID: BhZ3qGjJRa6pghaOULGrAg== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331852" X-MGA-submission: MDFdPtEXHFb66mmsNMUjBE1/scu8kv3sH408KsFH/XDGmitWl+YnNhFwdY3tBfH5UWIMwa57uvKlu+Bv8BuLuhmeN7Yu7aZQdQXdsljSEkhC0dTOuYnVPSWuTM1fvqIcRzVZGEqNLNjxh7M+J6gEIotTaOjPESMDCjXOsxQ/sZ7SHw== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:49 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xnEUnKqar/rt/165/X/HoTzzNECVtFM65K2WyWFYdZaUY1VYLCDxdw2zgv8BJ2V1TDwcRx7+XwJgXy2opl184zb/Be0+njIBl2HQnfQeQs4SD3t9jZ0x1Ue2ubW+L+HsqXmc4NulGBw6vyWuAbYef1lA0rQmZNDQ7ywdKMKLW+cQ9slYrW9gBrR9Xv2phKCIdYTw2NkhqNlGDGzXWKVXU24gmONoVv4cY1uCkLxtf59hgi07MNuH/ee9JuThruPA6LRRFpqiBH0qR8JLPodeTim5xg8wvu5BPuUA8slKuL/tRZ0UZC38RlfRBaJw3C7inYSZzFW3KSLXBDaRMDByPA== 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=/agh/ytGu+2jrSulAJnbz0Adp579Lwlc/FfbJbH4Qww=; b=ccsgFXXenY+DgibOApV6ddkQ6VhPHigxUupqPlD830ZXi4rkCcjMpugMON0YKs7vd6zG3QdskuSUQUjFV8CbaDr5EWg4VVa5qISkoW7+/GtzmqUMvOkj3jcoT72wuu0mK1Hxm+Tu6ndN7JpQ0djNkWBUDOOZcrkWXlx3HF5yiR1KYTqfZoX3Cq/wb2D3Vwl8rZ9t28SKgsZC8PJBGyJgUf8DOcIo0p9GyAtVSFiDtR87UMlqZXZ4+O6p2KR2e70huig4Qkiycu2g1c2ahMEKgP1S7FurggZ5ptKg8Xhg9Ux39slMbRk2P6sjk6KnpuuFELWbsgGQEafdKQqN7hEhQg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/agh/ytGu+2jrSulAJnbz0Adp579Lwlc/FfbJbH4Qww=; b=Sj+AEwog4fsxip2oOV/zRB/Pp9IOwfW2tVb9qxiCwxwkEbyTR9vgH+dptmld+4GhJdRC4NE7b+6AV08+vwlL6vtYdduWJL962mqALqgwzvuQhKWMNTToiP82DPZi9+8inQwkRWGM169FIrOydE7J35Uhr/kyHriWC0hkJYxeWs0o//17IAql2wxKiIQTOhl6+cEn9ScLnQ9RBgvPPnnv31v/aNvhrCxjx62JlB10xNAdGNxL4ZupG6W+zsrIHJuoMz0VUcOa5NU3McY0yfu+JrsgXmIj27bwcf80JJyu5XvJOYxl7TE5n9A8atZ+O/wf+AhT4/gMuuUBZ5x5tmLE9A== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:47 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:47 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 14/19] atc: Add unit tests Thread-Topic: [PATCH v4 14/19] atc: Add unit tests Thread-Index: AQHbiQYEzW3T+ip9y06dN7PkBU3udQ== Date: Thu, 27 Feb 2025 10:54:47 +0000 Message-ID: <20250227105339.388598-15-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: c023d0d1-cd4f-47be-ba6a-08dd571d26db x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?7U4LyySH5rznrmXjAnIoxTri/U?= =?iso-8859-1?q?7RxNtGkgBHNkgck/pknGxpswFGGxb5gCkd2xSCNCbFaqtfGXHsVN58NlRHTt?= =?iso-8859-1?q?po19pqU19sM8wrT+mcdnW5/HQ+zsxTJJWYBysFftBURp+WdfyAUg4WGEKNar?= =?iso-8859-1?q?+acVxyDjJXaVT6VAyKSiV3svuRQj3MUXYMxo/lQg2oj+ey4eTbvNNn8hA2sJ?= =?iso-8859-1?q?Aj6X9FQeb3vtC93wjLowWYfZvg5ILwRQJzDKR1Rm6H/6fieU5NBb7qSvlhuB?= =?iso-8859-1?q?L3v/Fj3uF2L0UpRMj9fRzObWnVUjhEoBqgwYy4d2J4EVydv2YbSnfuvBh9gR?= =?iso-8859-1?q?M11EuLDaCpLMwbHB/PE2afR2xFws0FQ59T0EqUfKQEYt+LmFnPnYb/WPedDv?= =?iso-8859-1?q?ux02B45annyA7XZ662ihnMxZa7Hc9SQTW97eBiVJFZXjD3jMpXNVchwKeHGb?= =?iso-8859-1?q?xrbRKEtPKHjNJiLPdor2FBagvuUgmD3NbqUImSlYpQB9zWJH/zLBnQuYun7I?= =?iso-8859-1?q?GewsRxmHUoFg8/7S+xMaqGtRwaQcSWiuE+LgwxgD4jFMx0ZnNl1MQqioWn8N?= =?iso-8859-1?q?uHBsg/qC944uWqc96YOtXqtNdwmAtXhf5pywbsKjV3dKpR8UkRZz60KMnjuf?= =?iso-8859-1?q?mCARgEfFtvilvF/chTidh5BRMlDAFOLnaiv37nCuEJSEzXr7MPjwHXLbl3pp?= =?iso-8859-1?q?udNblOGuoba8UTtXlKNdXF75vS8xLkR29BYnJhRMgx9I9KNnSI9VTsRsjcNl?= =?iso-8859-1?q?DDG3m2q5zvwYDcOy/TS1AWOzo9Lr0FYxYO9ZGxJ9YN7KuxzE/66oe5dE09/6?= =?iso-8859-1?q?Erweomoc7k03xrPOUVH10kmR82GhvLjCfnIS/vXJyokk3eiFTYbGjWRzNLkk?= =?iso-8859-1?q?mqHVEFT3O9XnDC8ZY/M+lCeY1FhZAgxRiyjIwEoe/wHF8THVReGO2Yd2C6/I?= =?iso-8859-1?q?tOlpUg6vDrzdb8X/sQwTyrsE7+Ls4Q0k29MD+k9PNd3xX56Vpy1NTyuBBtmY?= =?iso-8859-1?q?l6g2Uz6WzDevpmnk3kD7DwUyW8wfW+6T+Ure0fFR044WlnDA/x1ZIce5m9p6?= =?iso-8859-1?q?t2OtyUa5tDOUv+A2baKl/wRlO3RjrwBrKG5oCkYKuA3mDPE11QWUJTCjlMPo?= =?iso-8859-1?q?IbTiZWzi0iUrik8X20n+m1uMFnFecbQsRdsunM2dpDEyguU4Ktq8M3PswUsw?= =?iso-8859-1?q?04hnAqDHj1Sj7ssBuOD7B1f/uQLx/YM8N27DSRqUuxCFtfqLJZ4J3XWr/z3G?= =?iso-8859-1?q?F4XLg0f3FSXPG1V76Iyx6+CYk7v7PaV0QtS2xzDKV4aGmsESWgrXIH4lfgXG?= =?iso-8859-1?q?HwmlNjkoeb1+La7wMdmUE3tJSuvTg9bvw9zasij2turlN2aMxMlLYNuhzp8B?= =?iso-8859-1?q?9T/miWeC5ytg6rEotrJv+5HtQV+J61HQtWIb4cD0TNV5+XDWzsP6QC3VxDe2?= =?iso-8859-1?q?D5dMeTb3ObTtmdRBmp5y8BvA=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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?D/GKQiI1zsiKiVikQLG2p5v?= =?iso-8859-1?q?2NwihCive9C0CUJNUYAw/5Pem/ozPt5U7fBSMmu2SA/3cz5IzKSzP+hEDrpX?= =?iso-8859-1?q?BS6AVTaNdSpER8eULS9E849M5UWFmXJW2Tm1rhL8Y4Ey9FUdGFf6IGUc99V5?= =?iso-8859-1?q?/4hd+cjIwjdhCp9jbeXXV7+JJmlkbnrFE91dOWTztLmTmB0U73Dr0/pjRPuJ?= =?iso-8859-1?q?tQ/eH0fIXqHBUztHQqXsqqOGuYmwPxwAPFpovG8wbll5SBoFJSZM97K8dPhQ?= =?iso-8859-1?q?XbmsKKgXGQMw5hQQqmBIlbHFKfJV1n01jaNqRz170UYipJSnnis7nBSeGTVi?= =?iso-8859-1?q?2lINeFBqkkX9vP/8x7dp583E6qaM4epm/7gLU+RVYL2js7uIzGhIvapQUH28?= =?iso-8859-1?q?Mb9ICehIT5xXtjRE40fsetCSQhOiu9DHqshjcX3CptjngYWE3cOxPDR+tvae?= =?iso-8859-1?q?AG4aNKc26x8xkqpL0xH8wIQR5G+uxYXC7e+C4919R2zs3VoSLiFWH05rEqTm?= =?iso-8859-1?q?ED6k0N2KRMz/3r8uV1J92pGiIuEmgoKfOrqSxPC9dTtQq0TAxqALPOwuNaXJ?= =?iso-8859-1?q?5wfCJEij5ZYcqi+T9/opeMxsGCK3/HX48tG5+BQ1U/doZ3AziFLL/7Y1Bm/0?= =?iso-8859-1?q?wh3EjIMnxRQLeWnuPsHO7gzXxHXuMQi1O4PUBaP82D300nsM32MfvagiekaK?= =?iso-8859-1?q?j156Svsijw1k2+CNap5TaRNWldf3mLbg6qs0Tf8oUfVX6DVBBDrIms9eMIk2?= =?iso-8859-1?q?MZycLIkNk6jfYgf4uXfcZMpQjpHngqiX5/dLbtM8/hAW8DHHkqddoNh/8sDX?= =?iso-8859-1?q?uAxlmBtCE6XPBBXZg8f1eQiN3++Gen/Fe8xHwUCu+TgJ8J4OsVdcpHkrWDKP?= =?iso-8859-1?q?WuY6clkjX87RYqFlyFLVIGadBclVRlMkyddmZsRITyq5by3NykMoJYMCnq0k?= =?iso-8859-1?q?vwrBYqZ64AcqKBaR0Z8G9hXY8LUjWllmrhMuacoOSZ15lL+SsjqwGZWL/F8O?= =?iso-8859-1?q?U20Dg/DsQB084OFlBtf22936mUBItVuu24PDG5oNss4q3N8GDf5e/qr1g5K+?= =?iso-8859-1?q?fA9cBVJk93Rvx80tIydemf3lzLL3pYMjmYQRB7x3y0Bn4Hcw40RUaoWE2J4M?= =?iso-8859-1?q?3g81CNF8apU1r1im+/qAxsfFq0gdaw/JKbZ7BULDtuszYsRgXyAB9OUfcCeP?= =?iso-8859-1?q?VLSsyr0vcc2rfnugfChPZR566MUQDuEMiDnqVTw0SKXWZFmk0fK1BkU+vR22?= =?iso-8859-1?q?2tue6fCj/60V4MMHYEPzMOTKqCYeotOyeF7KMgsT1Hiv1rAeRVb3Iy/P+C+g?= =?iso-8859-1?q?isSQKJFNOyxTOxsFp2WRnoYnDsIWxelVTvopTOg3S7usWFmLezYnmKkMDUy/?= =?iso-8859-1?q?kLQMbmxuikN0tyThHnPL2928ti/E4TZocaNQPn0+Xck2UL0+sua6mR35/7tD?= =?iso-8859-1?q?b+C0ee7KZ6EmE4JtwMvHMkVUexUEyn6uS3ARTBchIr4dOJeQU2cBlHz8jbNu?= =?iso-8859-1?q?XI6t53wrQihts5udR97WHCeNJN6+9h0Z6OtvXGkZ/3ah+aWPeIZJWWvqvWxK?= =?iso-8859-1?q?BX1GWOyP2yRkEsuVTUpwH8eAKTsBPJgr47qZjsoLvpsuzzQK2KJGvhLy2L7/?= =?iso-8859-1?q?qL7+9q820EqeM5rw8WOJQetJ2lY5mPQ478ZLc55wsngVSfjcCmGZ9eirjGHU?= =?iso-8859-1?q?=3D?= 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: c023d0d1-cd4f-47be-ba6a-08dd571d26db X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:47.3516 (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: FvvXnRWALPwCwfHH0t7/Oy6bGBjI8Af4O/soC2TXT9K1xgEFdiimg172tFCxQanruj5rToULhwpzyPlxhp7rcVjYWiCv1YrG5CEIRqW5rfzRTIl/iqTnR6Ahp2XqXBeK X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif Signed-off-by: Clement Mathieu--Drif --- tests/unit/meson.build | 1 + tests/unit/test-atc.c | 527 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 528 insertions(+) create mode 100644 tests/unit/test-atc.c diff --git a/tests/unit/meson.build b/tests/unit/meson.build index d5248ae51d..810197d5e1 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -48,6 +48,7 @@ tests = { 'test-qapi-util': [], 'test-interval-tree': [], 'test-fifo': [], + 'test-atc': [], } if have_system or have_tools diff --git a/tests/unit/test-atc.c b/tests/unit/test-atc.c new file mode 100644 index 0000000000..0d1c1b7ca7 --- /dev/null +++ b/tests/unit/test-atc.c @@ -0,0 +1,527 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, see . + */ + +#include "util/atc.h" + +static inline bool tlb_entry_equal(IOMMUTLBEntry *e1, IOMMUTLBEntry *e2) +{ + if (!e1 || !e2) { + return !e1 && !e2; + } + return e1->iova == e2->iova && + e1->addr_mask == e2->addr_mask && + e1->pasid == e2->pasid && + e1->perm == e2->perm && + e1->target_as == e2->target_as && + e1->translated_addr == e2->translated_addr; +} + +static void assert_lookup_equals(ATC *atc, IOMMUTLBEntry *target, + uint32_t pasid, hwaddr iova) +{ + IOMMUTLBEntry *result; + result = atc_lookup(atc, pasid, iova); + g_assert(tlb_entry_equal(result, target)); +} + +static void check_creation(uint64_t page_size, uint8_t address_width, + uint8_t levels, uint8_t level_offset, + bool should_work) { + ATC *atc = atc_new(page_size, address_width); + if (atc) { + g_assert(atc->levels == levels); + g_assert(atc->level_offset == level_offset); + + atc_destroy(atc); + g_assert(should_work); + } else { + g_assert(!should_work); + } +} + +static void test_creation_parameters(void) +{ + check_creation(8, 39, 3, 9, false); + check_creation(4095, 39, 3, 9, false); + check_creation(4097, 39, 3, 9, false); + check_creation(8192, 48, 0, 0, false); + + check_creation(4096, 38, 0, 0, false); + check_creation(4096, 39, 3, 9, true); + check_creation(4096, 40, 0, 0, false); + check_creation(4096, 47, 0, 0, false); + check_creation(4096, 48, 4, 9, true); + check_creation(4096, 49, 0, 0, false); + check_creation(4096, 56, 0, 0, false); + check_creation(4096, 57, 5, 9, true); + check_creation(4096, 58, 0, 0, false); + + check_creation(16384, 35, 0, 0, false); + check_creation(16384, 36, 2, 11, true); + check_creation(16384, 37, 0, 0, false); + check_creation(16384, 46, 0, 0, false); + check_creation(16384, 47, 3, 11, true); + check_creation(16384, 48, 0, 0, false); + check_creation(16384, 57, 0, 0, false); + check_creation(16384, 58, 4, 11, true); + check_creation(16384, 59, 0, 0, false); +} + +static void test_single_entry(void) +{ + IOMMUTLBEntry entry = { + .iova = 0x123456789000ULL, + .addr_mask = 0xfffULL, + .pasid = 5, + .perm = IOMMU_RW, + .translated_addr = 0xdeadbeefULL, + }; + + ATC *atc = atc_new(4096, 48); + g_assert(atc); + + assert_lookup_equals(atc, NULL, entry.pasid, + entry.iova + (entry.addr_mask / 2)); + + atc_create_address_space_cache(atc, entry.pasid); + g_assert(atc_update(atc, &entry) == 0); + + assert_lookup_equals(atc, NULL, entry.pasid + 1, + entry.iova + (entry.addr_mask / 2)); + assert_lookup_equals(atc, &entry, entry.pasid, + entry.iova + (entry.addr_mask / 2)); + + atc_destroy(atc); +} + +static void test_single_entry_2(void) +{ + static uint64_t page_size = 4096; + IOMMUTLBEntry e1 = { + .iova = 0xabcdef200000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eedULL, + }; + + ATC *atc = atc_new(page_size , 48); + atc_create_address_space_cache(atc, e1.pasid); + atc_update(atc, &e1); + + assert_lookup_equals(atc, NULL, e1.pasid, 0xabcdef201000ULL); + + atc_destroy(atc); +} + +static void test_page_boundaries(void) +{ + static const uint32_t pasid = 5; + static const hwaddr page_size = 4096; + + /* 2 consecutive entries */ + IOMMUTLBEntry e1 = { + .iova = 0x123456789000ULL, + .addr_mask = page_size - 1, + .pasid = pasid, + .perm = IOMMU_RW, + .translated_addr = 0xdeadbeefULL, + }; + IOMMUTLBEntry e2 = { + .iova = e1.iova + page_size, + .addr_mask = page_size - 1, + .pasid = pasid, + .perm = IOMMU_RW, + .translated_addr = 0x900df00dULL, + }; + + ATC *atc = atc_new(page_size, 48); + + atc_create_address_space_cache(atc, e1.pasid); + /* creating the address space twice should not be a problem */ + atc_create_address_space_cache(atc, e1.pasid); + + atc_update(atc, &e1); + atc_update(atc, &e2); + + assert_lookup_equals(atc, NULL, e1.pasid, e1.iova - 1); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova + e1.addr_mask); + g_assert((e1.iova + e1.addr_mask + 1) == e2.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova + e2.addr_mask); + assert_lookup_equals(atc, NULL, e2.pasid, e2.iova + e2.addr_mask + 1); + + assert_lookup_equals(atc, NULL, e1.pasid + 10, e1.iova); + assert_lookup_equals(atc, NULL, e2.pasid + 10, e2.iova); + atc_destroy(atc); +} + +static void test_huge_page(void) +{ + static const uint32_t pasid = 5; + static const hwaddr page_size = 4096; + IOMMUTLBEntry e1 = { + .iova = 0x123456600000ULL, + .addr_mask = 0x1fffffULL, + .pasid = pasid, + .perm = IOMMU_RW, + .translated_addr = 0xdeadbeefULL, + }; + hwaddr addr; + + ATC *atc = atc_new(page_size, 48); + + atc_create_address_space_cache(atc, e1.pasid); + atc_update(atc, &e1); + + for (addr = e1.iova; addr <= e1.iova + e1.addr_mask; addr += page_size) { + assert_lookup_equals(atc, &e1, e1.pasid, addr); + } + /* addr is now out of the huge page */ + assert_lookup_equals(atc, NULL, e1.pasid, addr); + atc_destroy(atc); +} + +static void test_pasid(void) +{ + hwaddr addr = 0xaaaaaaaaa000ULL; + IOMMUTLBEntry e1 = { + .iova = addr, + .addr_mask = 0xfffULL, + .pasid = 8, + .perm = IOMMU_RW, + .translated_addr = 0xdeadbeefULL, + }; + IOMMUTLBEntry e2 = { + .iova = addr, + .addr_mask = 0xfffULL, + .pasid = 2, + .perm = IOMMU_RW, + .translated_addr = 0xb001ULL, + }; + uint16_t i; + + ATC *atc = atc_new(4096, 48); + + atc_create_address_space_cache(atc, e1.pasid); + atc_create_address_space_cache(atc, e2.pasid); + atc_update(atc, &e1); + atc_update(atc, &e2); + + for (i = 0; i <= MAX(e1.pasid, e2.pasid) + 1; ++i) { + if (i == e1.pasid || i == e2.pasid) { + continue; + } + assert_lookup_equals(atc, NULL, i, addr); + } + assert_lookup_equals(atc, &e1, e1.pasid, addr); + assert_lookup_equals(atc, &e1, e1.pasid, addr); + atc_destroy(atc); +} + +static void test_large_address(void) +{ + IOMMUTLBEntry e1 = { + .iova = 0xaaaaaaaaa000ULL, + .addr_mask = 0xfffULL, + .pasid = 8, + .perm = IOMMU_RW, + .translated_addr = 0x5eeeeeedULL, + }; + IOMMUTLBEntry e2 = { + .iova = 0x1f00baaaaabf000ULL, + .addr_mask = 0xfffULL, + .pasid = e1.pasid, + .perm = IOMMU_RW, + .translated_addr = 0xdeadbeefULL, + }; + + ATC *atc = atc_new(4096, 57); + + atc_create_address_space_cache(atc, e1.pasid); + atc_update(atc, &e1); + atc_update(atc, &e2); + + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + atc_destroy(atc); +} + +static void test_bigger_page(void) +{ + IOMMUTLBEntry e1 = { + .iova = 0xaabbccdde000ULL, + .addr_mask = 0x1fffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eeeeeedULL, + }; + hwaddr i; + + ATC *atc = atc_new(8192, 43); + + atc_create_address_space_cache(atc, e1.pasid); + atc_update(atc, &e1); + + i = e1.iova & (~e1.addr_mask); + assert_lookup_equals(atc, NULL, e1.pasid, i - 1); + while (i <= e1.iova + e1.addr_mask) { + assert_lookup_equals(atc, &e1, e1.pasid, i); + ++i; + } + assert_lookup_equals(atc, NULL, e1.pasid, i); + atc_destroy(atc); +} + +static void test_unknown_pasid(void) +{ + IOMMUTLBEntry e1 = { + .iova = 0xaabbccfff000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eeeeeedULL, + }; + + ATC *atc = atc_new(4096, 48); + g_assert(atc_update(atc, &e1) != 0); + assert_lookup_equals(atc, NULL, e1.pasid, e1.iova); + atc_destroy(atc); +} + +static void test_invalidation(void) +{ + static uint64_t page_size = 4096; + IOMMUTLBEntry e1 = { + .iova = 0xaabbccddf000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eeeeeedULL, + }; + IOMMUTLBEntry e2 = { + .iova = 0xffe00000ULL, + .addr_mask = 0x1fffffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0xb000001ULL, + }; + IOMMUTLBEntry e3; + + ATC *atc = atc_new(page_size , 48); + atc_create_address_space_cache(atc, e1.pasid); + + atc_update(atc, &e1); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + atc_invalidate(atc, &e1); + assert_lookup_equals(atc, NULL, e1.pasid, e1.iova); + + atc_update(atc, &e1); + atc_update(atc, &e2); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + atc_invalidate(atc, &e2); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, NULL, e2.pasid, e2.iova); + + /* invalidate a huge page by invalidating a small region */ + for (hwaddr addr = e2.iova; addr <= (e2.iova + e2.addr_mask); + addr += page_size) { + atc_update(atc, &e2); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + e3 = (IOMMUTLBEntry){ + .iova = addr, + .addr_mask = page_size - 1, + .pasid = e2.pasid, + .perm = IOMMU_RW, + .translated_addr = 0, + }; + atc_invalidate(atc, &e3); + assert_lookup_equals(atc, NULL, e2.pasid, e2.iova); + } + atc_destroy(atc); +} + +static void test_delete_address_space_cache(void) +{ + static uint64_t page_size = 4096; + IOMMUTLBEntry e1 = { + .iova = 0xaabbccddf000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eeeeeedULL, + }; + IOMMUTLBEntry e2 = { + .iova = e1.iova, + .addr_mask = 0xfffULL, + .pasid = 2, + .perm = IOMMU_RW, + .translated_addr = 0x5eeeeeedULL, + }; + + ATC *atc = atc_new(page_size , 48); + atc_create_address_space_cache(atc, e1.pasid); + + atc_update(atc, &e1); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + atc_invalidate(atc, &e2); /* unkown pasid : is a nop*/ + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + + atc_create_address_space_cache(atc, e2.pasid); + atc_update(atc, &e2); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + atc_invalidate(atc, &e1); + /* e1 has been removed but e2 is still there */ + assert_lookup_equals(atc, NULL, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + + atc_update(atc, &e1); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + + atc_delete_address_space_cache(atc, e2.pasid); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, NULL, e2.pasid, e2.iova); + atc_destroy(atc); +} + +static void test_invalidate_entire_address_space(void) +{ + static uint64_t page_size = 4096; + IOMMUTLBEntry e1 = { + .iova = 0x1000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eedULL, + }; + IOMMUTLBEntry e2 = { + .iova = 0xfffffffff000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0xbeefULL, + }; + IOMMUTLBEntry e3 = { + .iova = 0, + .addr_mask = 0xffffffffffffffffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0, + }; + + ATC *atc = atc_new(page_size , 48); + atc_create_address_space_cache(atc, e1.pasid); + + atc_update(atc, &e1); + atc_update(atc, &e2); + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + atc_invalidate(atc, &e3); + /* e1 has been removed but e2 is still there */ + assert_lookup_equals(atc, NULL, e1.pasid, e1.iova); + assert_lookup_equals(atc, NULL, e2.pasid, e2.iova); + + atc_destroy(atc); +} + +static void test_reset(void) +{ + static uint64_t page_size = 4096; + IOMMUTLBEntry e1 = { + .iova = 0x1000ULL, + .addr_mask = 0xfffULL, + .pasid = 1, + .perm = IOMMU_RW, + .translated_addr = 0x5eedULL, + }; + IOMMUTLBEntry e2 = { + .iova = 0xfffffffff000ULL, + .addr_mask = 0xfffULL, + .pasid = 2, + .perm = IOMMU_RW, + .translated_addr = 0xbeefULL, + }; + + ATC *atc = atc_new(page_size , 48); + atc_create_address_space_cache(atc, e1.pasid); + atc_create_address_space_cache(atc, e2.pasid); + atc_update(atc, &e1); + atc_update(atc, &e2); + + assert_lookup_equals(atc, &e1, e1.pasid, e1.iova); + assert_lookup_equals(atc, &e2, e2.pasid, e2.iova); + + atc_reset(atc); + + assert_lookup_equals(atc, NULL, e1.pasid, e1.iova); + assert_lookup_equals(atc, NULL, e2.pasid, e2.iova); + atc_destroy(atc); +} + +static void test_get_max_number_of_pages(void) +{ + static uint64_t page_size = 4096; + hwaddr base = 0xc0fee000; /* aligned */ + ATC *atc = atc_new(page_size , 48); + g_assert(atc_get_max_number_of_pages(atc, base, page_size / 2) == 1); + g_assert(atc_get_max_number_of_pages(atc, base, page_size) == 1); + g_assert(atc_get_max_number_of_pages(atc, base, page_size + 1) == 2); + + g_assert(atc_get_max_number_of_pages(atc, base + 10, 1) == 1); + g_assert(atc_get_max_number_of_pages(atc, base + 10, page_size - 10) == 1); + g_assert(atc_get_max_number_of_pages(atc, base + 10, + page_size - 10 + 1) == 2); + g_assert(atc_get_max_number_of_pages(atc, base + 10, + page_size - 10 + 2) == 2); + + g_assert(atc_get_max_number_of_pages(atc, base + page_size - 1, 1) == 1); + g_assert(atc_get_max_number_of_pages(atc, base + page_size - 1, 2) == 2); + g_assert(atc_get_max_number_of_pages(atc, base + page_size - 1, 3) == 2); + + g_assert(atc_get_max_number_of_pages(atc, base + 10, page_size * 20) == 21); + g_assert(atc_get_max_number_of_pages(atc, base + 10, + (page_size * 20) + (page_size - 10)) + == 21); + g_assert(atc_get_max_number_of_pages(atc, base + 10, + (page_size * 20) + + (page_size - 10 + 1)) == 22); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/atc/test_creation_parameters", test_creation_parameters); + g_test_add_func("/atc/test_single_entry", test_single_entry); + g_test_add_func("/atc/test_single_entry_2", test_single_entry_2); + g_test_add_func("/atc/test_page_boundaries", test_page_boundaries); + g_test_add_func("/atc/test_huge_page", test_huge_page); + g_test_add_func("/atc/test_pasid", test_pasid); + g_test_add_func("/atc/test_large_address", test_large_address); + g_test_add_func("/atc/test_bigger_page", test_bigger_page); + g_test_add_func("/atc/test_unknown_pasid", test_unknown_pasid); + g_test_add_func("/atc/test_invalidation", test_invalidation); + g_test_add_func("/atc/test_delete_address_space_cache", + test_delete_address_space_cache); + g_test_add_func("/atc/test_invalidate_entire_address_space", + test_invalidate_entire_address_space); + g_test_add_func("/atc/test_reset", test_reset); + g_test_add_func("/atc/test_get_max_number_of_pages", + test_get_max_number_of_pages); + return g_test_run(); +} From patchwork Thu Feb 27 10:54:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994094 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 20F74C1B087 for ; Thu, 27 Feb 2025 10:56:12 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXu-0005Bh-Lw; Thu, 27 Feb 2025 05:55:14 -0500 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 1tnbXn-00052I-3h for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:07 -0500 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 1tnbXk-0005o1-W6 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653705; x=1772189705; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=L+qfiCqDv/FvxxOldZORUEjs2F9iRklyEARtcbtk2HM=; b=v+tjLdcclykausmCv7vzwGTDPQy2Mdr9edZMwv7rK/N90DUeTvIofv75 hRnuH5M9V+AG8bvKLprcrVbW7D2bo1EvjxbHOTKVffM3oN6gMMlv3QoVS RnkAYOIuT0UNGclrNwG29PU2vBHevpnd0Gv2QMly4hokrdbLeVw6dL5Kg NpALYn7uUXhTJrDy3OOqv/Y0W+HU+FO2bK2AkfclcNcFwsjdR5fGDzExS ZvGqUDomH9okUu71rRXVH8G5Nthn2QebG+hQduWBSYxCk5zSZGb2q5VSW KvNPrrdCnWu8zGIhVyNLlK+/IY2qgSz6ocE5eCybpeW9CXsphJN6FC1It w==; X-CSE-ConnectionGUID: C+RDtWRdRme8ZWSewEBHag== X-CSE-MsgGUID: 5aPUJKp8Q12q3kOqfdRmDg== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331856" X-MGA-submission: MDGyf9621O0n+gR25HSLjzaylgnq+IflCTDqGpOFY7PHyWqQPFvkAt9dgUL6MacODUdulWxKWtiVSKM1t6c8eZc5GHq2+Nh+cX0Xtqx3VX108saZpSl/PcqsqBxrDrQpIthcFIUDtXUhbnG82vGfU761o3pXeSBr1Y41xAPR+fYkBQ== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:50 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gzpUkcXxzTumeUMQ1bPFjIborRpB0JA5gUdvngvh+B0Q3naC9GoDGrlRvispFjHxcLqthPG2qAKOmA6jgywQ0Wy3BM7nNer1e8exJ4EgirJEwb06m36sP+D+xhCfHwrb+x12CuJ7wPAsh9+O0ZmKbbA+pBoYyMp4lSNzMMS8nPBxvHuJCleaPYPqfm7T/9wH0+Ml6v0gw8uWl/YTWMLuZG8S64DCrkmiSgSz38Tv4VBXCqsEDUMNZi1q1fnlrMP5AFMzhWK+fMRaeZ7hFAaZjUKgha1eyYxCJ4EzBh9+OgtEPRaJzT91hsT7KNFq51Fg23eSTCvOsO98MmRm2EJovg== 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=Quf2k86fFz0ZYXnqnyMCqldIOYG9IMWVRxd9aH7T6rw=; b=STRn7DGEFkBp2rUAdCJ+x1SdSeIbEcwJvqtNbm0ArD7zZro0S649Y9CxWsz+PhNindzu/iyHmpefSWcIkcknbrre9tr2dJDpRiF3TepvjdLpVf1PuqJBQXnBqK0f/nL1l648ynDwbomuwpmv21Xx+wrQWmWtxPYxOYaxKZn0sLv6JjABP25e+eyQRsnyMFtJPvC4qfFL6uJ7E3eXQkrrYtbYGqFI4zXYTO95Qa/5F6/2T18jVIz9Kiml/N4DL77KzSt0Rugdt1DASDwpqWTLwCONqzvyxwFmo7KG6fUfzD/LqitaKSSl9m6MHUpRTYzI92F+xykfrDN8aaIWmn80BA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Quf2k86fFz0ZYXnqnyMCqldIOYG9IMWVRxd9aH7T6rw=; b=sXv8krICGbrzlrIwI4yp0YO/LkYkiM8wcqumXVNR240tT1Ma/OzxCZnQpmAn1XSCyZ5+B1VxGetweuYqqBFk1N8+yoSR96HTwUwqeW3kF1XnUgbJFKOWF+xsFyUIkGwh1l44zbm7+XxzbpLsNzkdoKbru92T69Q2Zb/8B6h/l9bkfpwd1JfEQVC3HbNw2cBEteWApTggQBwzMd+XdHv/Cn1zmq5I01RlBJAxLBQzClI7ER+e1+qNi1myWeqf1ohPblhstZniGWiDPRrCZk+PYSgvCCG/ajGiEEUMfDNOSW7uxcuRAv8c5FmU1DSlFpNSxbQho9A/8zE+Br1rJHSIVQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:48 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:48 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 15/19] memory: Add an API for ATS support Thread-Topic: [PATCH v4 15/19] memory: Add an API for ATS support Thread-Index: AQHbiQYERBOBlG/ExkqAjrzlMtbyBw== Date: Thu, 27 Feb 2025 10:54:47 +0000 Message-ID: <20250227105339.388598-16-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 7398f958-16e4-481c-933e-08dd571d2731 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?0XTVT4W+5XRAnWS10kB47Z0wUH?= =?iso-8859-1?q?SnurPrIw2N0YWWrPEPhVXzXkW+negwvnyxAC4228fdnfJ8mAKQDBGMQ/TYMr?= =?iso-8859-1?q?of6vapvynl28U8IVKPSdCueDBOywvH3+h27CXl1pAem2cg0Vu43rGTazbM2A?= =?iso-8859-1?q?0jRcHYPcmxcym7p5YU8cbuZrwk7CKT1dXStERyUkcqhClzVuZd8fOxY46N8N?= =?iso-8859-1?q?tSXyDzEbqGeKKYUX7JGDPBQcfA/S2ASQ+AeHN4Zn0aTf6RJniWgfcH2PNFxy?= =?iso-8859-1?q?/4YUWF2AfQgi8KtneJ2EZgbDqPShlC/zPkAruDTdnA3uAbnvYNURSfVM82my?= =?iso-8859-1?q?ntiewIoRMAXZmQlCtwQ7gHT+7OiV5zrkzOFl/p2OtO1n9YJxGy7kI6YqKmmm?= =?iso-8859-1?q?XvzeMk6GI9PIsAooOAsqmdLDYFAC7yrwW2omaQIJcdXfc+GJTuXnYr/aJrXc?= =?iso-8859-1?q?td0K/X0+zXv4AI69bBwpRlpyuJ2cmBfT1ehTHg7yEHqn/uFzi9LURf4iMo00?= =?iso-8859-1?q?/dHgxI1LEFoeV9WadrF2Ie+3or/h4GPOkQNX3FyelAObrrXS2GbsQ2C5/XHX?= =?iso-8859-1?q?i2GQpjL8T5ftI0LIqIM+Hm6NzWipsN3q5fGNIMZdgw/pPXCQC+GaHRLU1/c9?= =?iso-8859-1?q?xustZgSwxKLbtDH/n+20J50l2DuDcWRrEEafbYW7ky4RtztU+Id69TUm3YLo?= =?iso-8859-1?q?4LWM2sh1hfkjt4+4TXIyDUwE4htBDQBvCt/1zwe9m5KZz7Oen6vfshNXQhxI?= =?iso-8859-1?q?87SCGfpUx4yBJJxkzw8phKQQJRUzKbVnDSDXNajZEznxd4ppkX8KbEA6ppk+?= =?iso-8859-1?q?G+/ITPiFGwySnpTl2nnv8ZQAc3R01ClnnYBI81CH6BTcgAi1aCVvijYG2EXP?= =?iso-8859-1?q?ySYOdLt/WifAmVLl1NVdrbTQJgZZCIHZhxSX4JdAaMiJcmTEcEOjswavUIbR?= =?iso-8859-1?q?J0ORJ0nGGG8mrYAPq6zOtmxf/DLMByR1IybUb05Mv8sXca216dm5dAyaUFiN?= =?iso-8859-1?q?A6dROdR0hfR4Ipzkc0G/UoN0CYOZT5VJJgzHlwlLd+uqxFWwam9inIxsce8G?= =?iso-8859-1?q?MzYNgriQjQH2W+jpKSOiijtC+d4jMBuISyaiLN3rKSqQNrkghkUFvlLAk3KP?= =?iso-8859-1?q?hriMSbOoeS3hSoq3dMeX0qxKl4invjKn7KzqJbHtBBHt+gSF4mHOhwcsMRY3?= =?iso-8859-1?q?rZu8JDxeR4dF3zd9Z9quiBwOxjoJsYRX5oV6vOhSFIFgAiBKTIf5TN2xGhJ0?= =?iso-8859-1?q?laXjmY37eq3Wl4fvPTD9QCFnwdZwOf51JCq1t6jtgwaSAvsEgw+mt0uI3WA/?= =?iso-8859-1?q?JT7FYBng+mKht9kGebWnX9uvVwTTp1fTuZoQRSx6HZqoEhxsrAmXwwqXQU3u?= =?iso-8859-1?q?wXsVqV0+3adrijiLOXLezyCaamc/+iWeslwAjPRdPrrlWX9jiuOPCIdBnIjz?= =?iso-8859-1?q?NxRk0GiKsY9x7PhM7Uv99fWM0TWRFjhROtwq1B41411TDpCCWDIHWPur0Zuk?= =?iso-8859-1?q?XA4btO?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?MuOmQNM8H+Rk2nduFqO1sux?= =?iso-8859-1?q?eMemWJ0DeK1C4FhDiyKFlGyxdWF8oYmT7aUVyTR18mvk9NS6HIXlyj+alrRf?= =?iso-8859-1?q?fDJ+arF0Se9Q6AwvrdW1CZSEvMgtKj+oGJIVbdSnhFj0yIRl95AgFF5r40Pc?= =?iso-8859-1?q?EYSXqjnCrH/i0I6c62rl38oJGG9yUdqQwSAWcowN6dzD5Ga0M1sNULKs4eEn?= =?iso-8859-1?q?RcSeywDouF6ktSNjZhDJuIfeuI0sDycBaAmrJh2CNordi+oVI+M7ByXO8B7x?= =?iso-8859-1?q?O+Pso8xakV5Hp4gaHj/l1v3zqO9hFRPSSyMtFAkB15UqHuKa7oTNDBjLYzmN?= =?iso-8859-1?q?mUob1omA513CQoirPmi9/UuOUEkHP+WcurM0nqCAcwa3E5yup3OhijRfMeTY?= =?iso-8859-1?q?aYX/1NVPe2QRzERK4aN/AYG6iZCh3qsGRX1fBiqAEp75z6Bn6uC3NIdQgdNw?= =?iso-8859-1?q?0t0Cfd4qePhQPE6BhUpKSvijP1qj0XaNpKKkDHEuC+jZudlHXMBPSTkZKMkp?= =?iso-8859-1?q?lNhZIigSUta4ZxVruK67glvV56F0LTIx+nL99cuSo0zWEInWcyua89q7/jc2?= =?iso-8859-1?q?XRicL2xaXVqpMoPZ2IFXh77p6pScLBpQ3mfgbODVf38D4hRsvd8XYw38/sNZ?= =?iso-8859-1?q?VpfVVyQnbZq8Q+lNdYuZVqVRBnZq5hMQN/GZzRg3EF9hPW1jnW58+oNo2BjK?= =?iso-8859-1?q?coCGRFtQ8ocviZmIwwlh+2qlt59RMcNQj8tqFzHuRb/EkTUmEYDqEDcxH+/o?= =?iso-8859-1?q?YjGCpZ/KR004XFw/o/FCVkB9s1tc+229PZRSLVmr0yvGVfyU82DZeBg5Y3RF?= =?iso-8859-1?q?KNHWbg+1sGyQLPY0Wj0W//BFCctNTXH+ZRtx6g9rPcb7oIb8y76LiNT0RA38?= =?iso-8859-1?q?Wf8LBA5sDUTgyITTjBpP68D28t/N8HAj0OPSjjtF7zbr9ASnRrQ8SrUrdo2w?= =?iso-8859-1?q?/HetBgF6myn9KaaNqZao4yDI46jqqP7QCNCqalcB6Sxi3hWkoo6+CZy1ovlG?= =?iso-8859-1?q?h6L7lJ4UHV05IIHPAdcdDTawIhYCZHZqVI/D0Xzs+cNJv5BSzbQ6QWYPMWLe?= =?iso-8859-1?q?9TSy9+tGwKsSEcR3HkBSict3bj64VlYPaFarKa4ye7+Ai4TDDTbuKfVmcQer?= =?iso-8859-1?q?Uz5ylC+Es9oXdUYxAaec/2aOMu32fJUkW8zV7F3YOIJ6cKCgEtRrNwk0v4cP?= =?iso-8859-1?q?jlOoReHPQOxk6v+12Z3AMcH32+WWGJISXLT5Ebv258dp7SDtrb76Xo8q1B6U?= =?iso-8859-1?q?bGDij7dDAn+o2SV09IDkb9h7psoZIFkR44gGDNK4M4Vm9qm/ciB/lgCNRMHS?= =?iso-8859-1?q?KAoFalxZjClSf0z3tDJardIcxhlCF/5qZgXG27eq6/0hG3XO/BvxCkgAE8IK?= =?iso-8859-1?q?UbTr1tlVApTvevE10/5nceOB+sXgGvA25Y0phoLajVkAeI4hl+sFHJ1oa1EV?= =?iso-8859-1?q?8HHlZg7nfIVTYJxgObZDmcGn4+ddIdWWwR/lVfSYjjNqJ1pup6HdEPey4IxR?= =?iso-8859-1?q?GAyadozN5VwxblOP8YZEt17E8++MmbSD4zre8r57B7145ytq49AL14baHtPl?= =?iso-8859-1?q?7xwvTeiK/A5T8BAd+T7j79j8tRY7j36Q15i7xXoaixDeGvwxGiy7JkPtxEFu?= =?iso-8859-1?q?xebISjRs8bftQ6JHgt4KBuEh9ZBywh4KrO5B5kcXtrFLaQvw861l1dfrMKfs?= =?iso-8859-1?q?=3D?= 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: 7398f958-16e4-481c-933e-08dd571d2731 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:47.9388 (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: lY+BJX/p1z7n26mBrOelW7G0w9tcP/7KjJmcAAxM4n/J5zN11fzAIBcRST2fUVll3I4b4EAakDDN3z51TqmaFKB7VxH8UFcLzgVvHgqbXnAeWbFso5sJA068D+Fr4guw X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif IOMMU have to implement iommu_ats_request_translation to support ATS. Devices can use IOMMU_TLB_ENTRY_TRANSLATION_ERROR to check the tlb entries returned by a translation request. We decided not to use the existing translation operation for 2 reasons. First, ATS is designed to translate ranges and not isolated addresses. Second, we need ATS-specific parameters. Signed-off-by: Clement Mathieu--Drif --- include/exec/memory.h | 26 ++++++++++++++++++++++++++ system/memory.c | 21 +++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 4d240cad1c..9a8e765909 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -148,6 +148,10 @@ struct IOMMUTLBEntry { uint32_t pasid; }; +/* Check if an IOMMU TLB entry indicates a translation error */ +#define IOMMU_TLB_ENTRY_TRANSLATION_ERROR(entry) ((((entry)->perm) & IOMMU_RW) \ + == IOMMU_NONE) + /* * Bitmap for different IOMMUNotifier capabilities. Each notifier can * register with one or multiple IOMMU Notifier capability bit(s). @@ -535,6 +539,20 @@ struct IOMMUMemoryRegionClass { * @iommu: the IOMMUMemoryRegion */ int (*num_indexes)(IOMMUMemoryRegion *iommu); + + /** + * @iommu_ats_request_translation: + * This method must be implemented if the IOMMU has ATS enabled + * + * @see pci_ats_request_translation_pasid + */ + ssize_t (*iommu_ats_request_translation)(IOMMUMemoryRegion *iommu, + bool priv_req, bool exec_req, + hwaddr addr, size_t length, + bool no_write, + IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count); }; typedef struct RamDiscardListener RamDiscardListener; @@ -1892,6 +1910,14 @@ void memory_region_iommu_replay(IOMMUMemoryRegion *iommu_mr, IOMMUNotifier *n); void memory_region_unregister_iommu_notifier(MemoryRegion *mr, IOMMUNotifier *n); +ssize_t memory_region_iommu_ats_request_translation(IOMMUMemoryRegion *iommu_mr, + bool priv_req, bool exec_req, + hwaddr addr, size_t length, + bool no_write, + IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count); + /** * memory_region_iommu_get_attr: return an IOMMU attr if get_attr() is * defined on the IOMMU. diff --git a/system/memory.c b/system/memory.c index 4c829793a0..f95c602a46 100644 --- a/system/memory.c +++ b/system/memory.c @@ -2011,6 +2011,27 @@ void memory_region_unregister_iommu_notifier(MemoryRegion *mr, memory_region_update_iommu_notify_flags(iommu_mr, NULL); } +ssize_t memory_region_iommu_ats_request_translation(IOMMUMemoryRegion *iommu_mr, + bool priv_req, + bool exec_req, + hwaddr addr, size_t length, + bool no_write, + IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count) +{ + IOMMUMemoryRegionClass *imrc = + memory_region_get_iommu_class_nocheck(iommu_mr); + + if (!imrc->iommu_ats_request_translation) { + return -ENODEV; + } + + return imrc->iommu_ats_request_translation(iommu_mr, priv_req, exec_req, + addr, length, no_write, result, + result_length, err_count); +} + void memory_region_notify_iommu_one(IOMMUNotifier *notifier, const IOMMUTLBEvent *event) { From patchwork Thu Feb 27 10:54:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994097 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 CAB05C1B0D9 for ; Thu, 27 Feb 2025 10:56:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbY2-0005Gy-Nk; Thu, 27 Feb 2025 05:55:22 -0500 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 1tnbXy-0005Eo-NI for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:18 -0500 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 1tnbXw-0005pC-Ik for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653716; x=1772189716; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=thx/EhaMFSpCXXIfgOfxU1JCplMe9WF6IcJG11lYnsQ=; b=JmO/5LMbJ3bxz7RjvVBgtnoa0M7qVR1zzHrcfc90/pmwBZhfSRqt/yEz 2sqU396X8A716HlcdK0V0VD0IF4iMdrHMEfKh/lwOvmg+RPphEqAoaPun aOJBoF12O7JK87PWQQsvdI0OjEm4O5kvUFBDc3tGcICLYRHQksNBnI1Bw NTW7fvdJybkIl7pWZrdI5pWbgMGHkoH0yzP86HIUCsrIGlmlxo9sV3igU TFec/o4I6UfntNnrEEYkruMRIBEEnfzTZnLtzSd9d5MXTRF6GdeVklWxB WXwLbia/ZB0NS7Hr21DMTuEZx78IB31UiWPkvWYWN7GFGp0cA1IncR/2P A==; X-CSE-ConnectionGUID: EFL1yFbGS72W5JCF5Nw9UA== X-CSE-MsgGUID: 7kwR1EsBSJ+aGXaMmpCJVw== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331859" X-MGA-submission: MDG6/5DQTOC9L9s+HN24DSB3hjKWtjD3E/kW11K9aOBD8toS1wjcdWqUoDSt2fLIzx9ndCDRVAzQi9cSC5k1wMQZpcHJQrWacfZf20XOhRb8OdPgUdmIL+7nu9J9fFMTUDxPbNzQIzJHeTNRhiIYBrHFd5VP/zXEvHrnXfApV8Cjow== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:50 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=URSFqHlTCUCvajhA8rMvLD5DeEG09N+p8jDNsI8nVVcP8cDvNF65Yy8E0ba5GQ40HBLigUxXtc/fPet3iz2KkZ1aXFl1nu7Ul6K806dPHET9F2BSCIc1sZo7DSfBN6oCjY6iPvafD8FLUc4Gty9PvSQ99DM1jOx8hU4bmnbUfa5KoUVfM856xXbbbTHyT2z6+8caeHblnK3kc9idYLbsmq6vvvqISHpwTr5DmBoiYXTnctUODCbsIxjeO3N6kH7/Rf6EMadwTDwIG2ttyx5i34ApqJYHAWuSzSpvB6HtoBZGfUv7+cIBAdKn4sMcCyEwnLW048xbaj7gB0iaBFG8WQ== 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=QfhltBH6apxt4PKk/fiqX0GKuSvhqsHT/xupMPVyhFk=; b=p3BhEyLoeXUoSqxYP5NmVkLMqRZe/Puy2t2sFr778b/vvUEI0pEw5TGibLysJKdHbUoaQDHUe175NRwGFde4nJ7aquCW2Wt4eiBZ8fL3PCxZi3qrdz6cwD++ftDJzYlYrAaACEouh8yg+gG6wwXtcdfWFvhbsH20k//2ZDGpIZKDyBfP8Qi646AwsbSK3aywV2MrzhWm93MJbbWzhEICFEF1YKqlRSWpPRrVL4W5NP+zND7MnuGYFDhP3pYCy9OvNitiSsLgur1R8SVcDUaw4Jvxqyel9g/+U9h95fLX3ZmoKjsBc+rh8Hb3l7fScFvxffODGC83OCQPvbNeIbjuKQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QfhltBH6apxt4PKk/fiqX0GKuSvhqsHT/xupMPVyhFk=; b=iN01uTmH3A5yBfDJkwZ0NuW3p+GJ6FAjyyZHQ7/aNEueJjPcbbEc4EescT8zw5vT8/96NZmJsyt7HXpn4vmihSpguv9pWfKEGwM/M/zrgB6eHYmM9rWaYxt7EU1vc6oeyZDFlIjqKUfpCSmibExhcf8EQNtghdTin8xSdBODq6HgFzF7RKySYar6X1X+1Gphe4a40wq8fxX8VZDH7W+5Djwsz4G77LO77zPbFfKzI4bgZhYLZofDCk8OhvttqW5Xf0WiXv0+o6gmETJnoTIrdZofuE0lzLoATxihF7ksoSCLG5TrfvKfYu6hUrVd8ctR4C5vJxHRtpksIgGQQ+25dg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:49 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:49 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 16/19] pci: Add a pci-level API for ATS Thread-Topic: [PATCH v4 16/19] pci: Add a pci-level API for ATS Thread-Index: AQHbiQYF4FT+hHV2UUmgrPufKTOtXw== Date: Thu, 27 Feb 2025 10:54:48 +0000 Message-ID: <20250227105339.388598-17-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 1a383428-57fe-47a1-7d27-08dd571d27df x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|4022899009|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?lBB6EmQzqd2mg1DuymH6DKV0L3?= =?iso-8859-1?q?okg62+utV3agc5uaeOyHCIxU+DpSxfTtXLfbgbDyrS5uwZQOuYzrTrTpsm3c?= =?iso-8859-1?q?xOX/+O/LXpRezzt6nEbOI9hO/S+/dhaAy4y/laLVoNBoPfg/Ll2N5dtwvAW6?= =?iso-8859-1?q?0vJDeGw0TF3ZcKtQw6bDe6tet9JfcWqISjpqFntUqqrdt7ylU8FEVsqRTYNR?= =?iso-8859-1?q?c+xdHamr6rsTiJBx0h7lSl0HJiStqXmmJA15ZrS2WZ2nVoj8VmdGE/lT7XXd?= =?iso-8859-1?q?eqgmlA2HWL970SlBIYTAtPRb/StL9JB+ZxfIuCgzHrIpH36QgUxYvbwQOqac?= =?iso-8859-1?q?DPpAGzfScqIkoBgNowJAcfU6COxKpQkpG6zpNm4CxcpFDvrTVSrUw6YImZfO?= =?iso-8859-1?q?mzEWvZDmH+AaUu0Ts8BVOYchJGpUDrnXp+NjL54h3I5O/JvUQPwD2yFEqI4A?= =?iso-8859-1?q?Jzx1mJWFERHOHuONj9+iLLIBuCGZ3y0UbPqDilRuxg/WyPqlemjXexd3ap0G?= =?iso-8859-1?q?nknTN/H/FuSl4zQKWXaGgJQ/lq+8UCXbPKVlkiEy+VWXztmuj9xiBBBOm2pj?= =?iso-8859-1?q?ETFfis44NlWa+cKw/nTnwqkoRr+yc12jve3lbXFs3PoZOPrIyHnqvaahWaGN?= =?iso-8859-1?q?HgMWaglIP0msBreLK3Iue2DflXEsmss8uimBOKr+vlq47uAkqQWRfhSVAdgn?= =?iso-8859-1?q?A4L+r3vQkkjwLncyza+MuAOQqr0GsJLvDvdx6K21F1q2Cr1FGP22Hs99QRlX?= =?iso-8859-1?q?BflQs0Y+BMtXE4TyFynfFh+5Z29Xt/pBuzG4LwIG0SjE3UOl2bKuzAFpUhhK?= =?iso-8859-1?q?9/pjqpc6Sw3ZTNDNlqAV2UUO1qHxJcZsGXFhX8Pgv0MEwj7baVr5Z3v+8ikO?= =?iso-8859-1?q?6f/kD2G63eIrdPHFbbz+jpvIh/LarcamOOgb17JQX345tt2QZqtX72NFZLW1?= =?iso-8859-1?q?ay+mrfRuoe2kB0X7U97lctRUXrEINn0A+HUos6ETteji1QWVeyE/ZR+848mc?= =?iso-8859-1?q?9PNFO+80V/1MlvhBEgt9Gzpiv8DK5UyDFAwDbINKR6Iu0mYULc3QVLT+swMn?= =?iso-8859-1?q?BTJ9XeNuv3n0BO5/UGBG73P1o+jIGylWyTPrCHeZqClTAg7/1Nz1O9b/Bfu+?= =?iso-8859-1?q?vV7rlohCam0ovVQ68zS8zr3m7vnBZ22wY5vO6wZ+IIYmVSyH7idzVEaWLFCx?= =?iso-8859-1?q?HH2uqXHVABEdFeOeksvbA81AW6YZr5yvU7wmxFNWbmPj8NnTYz7vxupuF5IK?= =?iso-8859-1?q?1KzNHc1CIfXvTKjuF60RooDjDBd+7q1caUn4vGDN4PmnFxM6HihDh6+7Trqc?= =?iso-8859-1?q?Tger2SpPG6cTRXizfn0fbryDS8pBXDHXG5/CD9VdOpmTyqhVHHcBHsGeCgRn?= =?iso-8859-1?q?cXU2GC509eCb/2mseEaQ87iZBNn7ACoWYQHC3o09I32+Y5Eid7FfIUGWYhHr?= =?iso-8859-1?q?i+GhbyyiiQnOyYH7ymPFFCqTNfLpdM2x7BHmfeDLlJdn4ZJ2hrwUVaLDLO4t?= =?iso-8859-1?q?iMaDEF?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(4022899009)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?JFFc2Rs43leQuUsmxWXCpGf?= =?iso-8859-1?q?5xLy8nmfVSAjBZkT9XjmpL8AykwrOmcGFnnoOhtxpVzYYowZa7/X7j4I+bzS?= =?iso-8859-1?q?/tfkxJY9NFbJ+JIVvuLRI0spn4rSFmBQus/r1i+GwK0cXpLzF5lG5GLlnRui?= =?iso-8859-1?q?mwEgcW6dUgTUmOefc1/6Di7WwE8FTqNy4e3ZPQNiAszgZxbVmrhUc/6uP6Sg?= =?iso-8859-1?q?mi7F/XHsA5SkO60ouEh2COTqRD0/0lefHugsEQVdUubu6bIUpl9xOpNhlI5R?= =?iso-8859-1?q?2HZgWQWDhyHZOy9N8f7acB8rCeg537kAcHd2RGSiBrJUoWJaxdjdnOglPE1n?= =?iso-8859-1?q?WklUNTqd1FVfYe++7cOnJDTKfYV6liRc7jNkPx/ocPSSgTSwvCipFxszYVPk?= =?iso-8859-1?q?DB7LkmoDEii9hHFzgTh/A60qD/+cAmYS1qybA1udPGMrRNGir98iL9rP/4xH?= =?iso-8859-1?q?naqUkSzKKAvb0rDcpPLnGA3bjZTUfr56flMY3ipJeE1JmEnIA9rsJymU1YEf?= =?iso-8859-1?q?yzrm10q1rCoi7INDvGyRVUftJs1h00rF8+QdOkvvjHewN3bIjMCsQMK11sw5?= =?iso-8859-1?q?3JSAfz8DgsoysA4XAmUUUueI1xd+NsGnkoSzEz76GVbQ1jb4DqFhiIpfxJvl?= =?iso-8859-1?q?5slBifxt5YMt/HbxYKp5LG+eeX0SmJrfo5Sm+SEXfUsTzBqW+sAwF7QvQjiV?= =?iso-8859-1?q?aO28PirEuTa36h6uaAQNrlyRl3Ma830UbaOOmzBSgp6Ogwfo9sPaLL5ARZdM?= =?iso-8859-1?q?cRqqYkGIk8YmUIulNaMcRR3NuR104JO10T0bbdgSFxeOsOsr1ZismCKei46s?= =?iso-8859-1?q?VGAXgF9HWYdgHbo/+AUydG0GCBMBGD+TfHOs+UMhR4bj8ViaKptGP72TNsuZ?= =?iso-8859-1?q?O7u+rxWs7dUW1CGaGZPHh7OF+6i0uB06XWuK56Chsgw3J+MGAXikTxMSkhbq?= =?iso-8859-1?q?Ytj4DcTf7oVHeo+aL9+ipRkzmbMdAZU5UOomQWnqm3WSKcHgoRJZBFr8bPBE?= =?iso-8859-1?q?hoTNde5oEH7xlnjfXUw31B0W8Rc3hU1YQSulsgIsWvcEnke+Uf/g1iqlB7/+?= =?iso-8859-1?q?3v/MBjOqTqO54eXAT9ooRJErVTvVK/BiQaeVVWftnqFF1noHHoTOj1iZi0Im?= =?iso-8859-1?q?AhUd9X/LufXwYAotW2xzPMeaplfleRjxJEyu/O3xMMELADOXwing/ab1Bh7I?= =?iso-8859-1?q?siUy960Kf9WfXK6UzSfyZTu/XiCQK8j7UdrnYsani6cWLiB98/oyyHSlNVlr?= =?iso-8859-1?q?T0ut5wu2uQoZA7r0FkaK00C0Oi4V5Aj9lXrHHgH441ZuJ/soN4IJ6ZU+Va/1?= =?iso-8859-1?q?0HauDNjD+RKFagSCpIzCWYyXCvQ1qAB3YpaB2/ZkC+w5C/iUFGUk/4EMW2Gc?= =?iso-8859-1?q?s8bXdQMOctrBBgXdGOMF/FtJ0mVbWyV+7FdVEfRjzWqmJGiZUE3VSh0Rr83D?= =?iso-8859-1?q?ROJFEUzeK2r9WLWPtf3aY1TTszyZLKlwkU/WsEwZsOZo/SCFc9/yPEJw2zSR?= =?iso-8859-1?q?HeXkL5fZUNcuaziXh4dG23SeYbgSdm5xAnPd4UqM4Rn5hrtQQ9x5Ccjeq1K4?= =?iso-8859-1?q?G8P1epokCiwmEOWCXfhVaoOAuH6zIGy1t9MISAURxRhyslxts/gNnKC2t53m?= =?iso-8859-1?q?h/ZVHnLop7utBiMWeOEXOWHD2kmdxNikLb0wxi8jmMSOFNiF7TFgxF5Br7Dc?= =?iso-8859-1?q?=3D?= 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: 1a383428-57fe-47a1-7d27-08dd571d27df X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:48.5725 (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: nIsKsO0D3GuZxKYz6qvBoMScOYblO9F23pogNVzmtY+Y9Bvd+EGt8dHB2wy27nq0nGiWumiaGScrAGgWV9RqtINN7xOjWeD2q2BxoJHzZJM4aplV8pi2dya94Ww1sfmG X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif Devices implementing ATS can send translation requests using pci_ats_request_translation_pasid. The invalidation events are sent back to the device using the iommu notifier managed with pci_register_iommu_tlb_event_notifier and pci_unregister_iommu_tlb_event_notifier Signed-off-by: Clement Mathieu--Drif --- hw/pci/pci.c | 46 +++++++++++++++++++++++++++++++++++++++ include/hw/pci/pci.h | 52 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index be29c0375f..0ccd0656b7 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2896,6 +2896,52 @@ void pci_device_unset_iommu_device(PCIDevice *dev) } } +ssize_t pci_ats_request_translation_pasid(PCIDevice *dev, uint32_t pasid, + bool priv_req, bool exec_req, + hwaddr addr, size_t length, + bool no_write, IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count) +{ + IOMMUMemoryRegion *iommu_mr = pci_device_iommu_memory_region_pasid(dev, + pasid); + + assert(result_length); + + if (!iommu_mr || !pcie_ats_enabled(dev)) { + return -EPERM; + } + return memory_region_iommu_ats_request_translation(iommu_mr, priv_req, + exec_req, addr, length, + no_write, result, + result_length, + err_count); +} + +int pci_register_iommu_tlb_event_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n) +{ + IOMMUMemoryRegion *iommu_mr = pci_device_iommu_memory_region_pasid(dev, + pasid); + if (!iommu_mr) { + return -EPERM; + } + return memory_region_register_iommu_notifier(MEMORY_REGION(iommu_mr), n, + &error_fatal); +} + +int pci_unregister_iommu_tlb_event_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n) +{ + IOMMUMemoryRegion *iommu_mr = pci_device_iommu_memory_region_pasid(dev, + pasid); + if (!iommu_mr) { + return -EPERM; + } + memory_region_unregister_iommu_notifier(MEMORY_REGION(iommu_mr), n); + return 0; +} + void pci_setup_iommu(PCIBus *bus, const PCIIOMMUOps *ops, void *opaque) { /* diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index a11366e08d..592e72aee9 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -461,6 +461,58 @@ bool pci_iommu_init_iotlb_notifier(PCIDevice *dev, uint32_t pasid, IOMMUNotifier *n, IOMMUNotify fn, void *opaque); +/** + * pci_ats_request_translation_pasid: perform an ATS request + * + * Return the number of translations stored in @result in case of success, + * a negative error code otherwise. + * -ENOMEM is returned when the result buffer is not large enough to store + * all the translations + * + * @dev: the ATS-capable PCI device + * @pasid: the pasid of the address space in which the translation will be made + * @priv_req: privileged mode bit (PASID TLP) + * @exec_req: execute request bit (PASID TLP) + * @addr: start address of the memory range to be translated + * @length: length of the memory range in bytes + * @no_write: request a read-only access translation (if supported by the IOMMU) + * @result: buffer in which the TLB entries will be stored + * @result_length: result buffer length + * @err_count: number of untranslated subregions + */ +ssize_t pci_ats_request_translation_pasid(PCIDevice *dev, uint32_t pasid, + bool priv_req, bool exec_req, + hwaddr addr, size_t length, + bool no_write, IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count); + +/** + * pci_register_iommu_tlb_event_notifier: register a notifier for changes to + * IOMMU translation entries in a specific address space. + * + * Returns 0 on success, or a negative errno otherwise. + * + * @dev: the device that wants to get notified + * @pasid: the pasid of the address space to track + * @n: the notifier to register + */ +int pci_register_iommu_tlb_event_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n); + +/** + * pci_unregister_iommu_tlb_event_notifier: unregister a notifier that has been + * registerd with pci_register_iommu_tlb_event_notifier + * + * Returns 0 on success, or a negative errno otherwise. + * + * @dev: the device that wants to unsubscribe + * @pasid: the pasid of the address space to be untracked + * @n: the notifier to unregister + */ +int pci_unregister_iommu_tlb_event_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n); + /** * pci_setup_iommu: Initialize specific IOMMU handlers for a PCIBus * From patchwork Thu Feb 27 10:54:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994095 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 2C475C19F2E for ; Thu, 27 Feb 2025 10:56:13 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbY2-0005H9-Nl; Thu, 27 Feb 2025 05:55:22 -0500 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 1tnbXz-0005Ez-1F for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:20 -0500 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 1tnbXx-0005oQ-2R for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653717; x=1772189717; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=BrG4y3xDgUJOKdvWUgQWbXUTo2tp+lMrO+qSWDscVRo=; b=OpWoC74lmR6x2lNYv0deQ5gMd0vrpPUAtzLXhtS+8Fkr/LT9JfauvuOi GsTAPEm87e//rG+WoBq4eE8s47g5cATCFiPFy4qax/gnwfjw1U2ZWbsfm wt9LEP2v8Sw9tr5iZWB/DFM2m/ZJrfz/jW5s3iHZiqbCN8BWablkXuTLM BUcNyd1jBHb+l/7bWqbKZ1EaJ+M8gj+Luv1kIo17YE22UMfiHhthSj9BS CXBx6qEYjC62V3BHAPAWDYAt4g0F+VBt21KRtG5FmUT/Ba0H+D5j3r1/j AiW/80KmKP2ssWbWxccWIDQpLevI1DSX2ubiMQi3sn4pVQZnZXNf4eJSy A==; X-CSE-ConnectionGUID: HS1SXabVSfmRXLWQPjiYVQ== X-CSE-MsgGUID: l2w9vF3uS42KCyPi6pYecQ== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331860" X-MGA-submission: MDFZ7LokZ0RlQ5fkn1Sq1dSTE2S7HOHsBW5VRrQXtT4LzungtCjHgPvN54DDYFvgeBhwO9ulkl2K7jT5+kxRpfiokwGSJ6w5DfbIbzucN/V+i9Pzy2AYwYLBjFUR469sRjebZAONvkzjRNnC83ZN98oYV867/NR/b1Gb51FNDZrDfg== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:51 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a7Rhsl791lsAKqn52lgftHd8rjX5wvDM2U7lnrqYW3OceX36iUC/O7I4guGhNa1mL/cKA/Lb8q0O1glgnLsBojArzjeMc3DcoJcndSiXI67l89WkMmOTPnK963VURo+jhNgEGy5IyecIP7pfwKYG395VYl2sDNS3WafKBe7rzKMQ1vM2vjtwtbZLUwYcFuwQLBYvx58MKvaJZSshHens5HLD0vo7VqTv6HvpMS68hjtdBjeRu6421XOIvUmUtJ2ppjYvgvA6NaIJSii5tOAOaBSmG9akHJkc0Cz2O2iZByO+O7NfTblAlT97sBkniZtPDXLPLoPtieE+E6ysfTB9cQ== 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=srhIn/WpdlVpAE2cNticNNYMCyk2sH0vssLZt9U3Azs=; b=hBh0AOWNPbDo4BKEOV2kpckLZ2ShF91mUEu914fpq4Wp06VVb37C1FpajEBfVmfzTbIyfpToxiICCZ83rm1qe2aPPkPeTYkWBgK1yZFPspPlxoKOg82mzsc3Q36pHqTHvM3T23X3UioUbgIRdY51EFIs+2XX9xgv1DiJQ7n22jMnQJSeq33Wb0eRc1S++jiu+FDBROBsgqzlNy/s2AotEBRP5ujQVxWakLu4cpDoiH8iHOIygOXQTHZbkNZYyAa5wtqCTVc3Ct9cTHdmOvkjf4MFXpsaDsStPRZK0lOKegp/WmyPCG8lgxIOmMd21MdkZlyrlDZgb2LcGYci1gGK+A== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=srhIn/WpdlVpAE2cNticNNYMCyk2sH0vssLZt9U3Azs=; b=RrK405ssbvZE2J4J7bGPDScMa9+StkrIqyNeOawjrx6B6TpciKj3QC6x8YOJ2k4o5e2qtjZrIx8Fsl8bJz6M3hYPauBb0SpdPh1Ph+YIF3wxFNfdWukXu0m+ueSAB7uHDMU9NIOPQrJidRI02Kj9l2sEqKgok475Z+GecfjoT9nRCCK4LYsx2sIVd2bwvzESAp5bir1Tr+Lo1ppqax6bUrXd6jGCtcePFFLJ7m6oDNjocdk70WxS5ipzfY50trbHiCkY5TJHcLQ2GO+pGfHXodyjA8lxq9FX6E9SATV5aY/wlSdN8980LSOX1IAqUehDfTbYarAp5gbuQ3fH8uKdKA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:49 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:49 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 17/19] intel_iommu: Set address mask when a translation fails and adjust W permission Thread-Topic: [PATCH v4 17/19] intel_iommu: Set address mask when a translation fails and adjust W permission Thread-Index: AQHbiQYF4tPCUB0tOUKNEerhRLF4GQ== Date: Thu, 27 Feb 2025 10:54:49 +0000 Message-ID: <20250227105339.388598-18-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: d4a16d1d-521f-4509-1903-08dd571d280b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?PUQHtrxqCJEEXcVV0lvCCqtVzB?= =?iso-8859-1?q?MOtdd5r+9jxlYnHw9MYE5JOtHcZ1modFGcK2GW3QWfYm84thwxSNEL4Zd2ea?= =?iso-8859-1?q?5ABSJRg+vXk65XhbhGr9U9spaG1dmj1ZgPQ7VxsVm0KKEV/1alo4RhYXpanV?= =?iso-8859-1?q?Tft1mpPthLYHMChE9LtebU8byiveh2xXcwWAF7CWWmVUfsc0wC/CKBqT27NS?= =?iso-8859-1?q?one21gS9c1fQ3fTXq2BUSxHditM3Lj5hbU3DdC/cM5tgRfhtgShtDuG011Jn?= =?iso-8859-1?q?fiqYsEYcEbaQS3yX3cDl0G4pZ/9EWpg+Gv2gn9WSdrTTLxdAhUgVmv3O1XIT?= =?iso-8859-1?q?ZJNyz/S6OrbU4TE4mN2hOaElOXvwgW2kHxOqfBqqCsM7i3e8rZodtNIXNGtx?= =?iso-8859-1?q?HFyrimRldmujxFop/62sXfhdTHz2Nzg/vmZVhzvAG0tTcmQj/Ln2OCviMt6o?= =?iso-8859-1?q?2nbfMWMLYIFGOLAyy14aF4Rsg5imj7m9P1xmw1Gay0eezI98TsBBuUY7cq/B?= =?iso-8859-1?q?STbnZUl+qtOnXFN9qdwf487lhSAWJcTfeFWI3QX4bvXWvW+NLDeoD2d/BJfw?= =?iso-8859-1?q?g3agmEm1S/C7X6PC/7FyM6bj17dDjoiO1j3PiiHpeJxMCIk9MP+k8gut9fV+?= =?iso-8859-1?q?d1l+5lM6ht0A+U6gPRmi8RmUpsXTiT0JETLT9d4vT92wq7LsP0LjRAGdj4T8?= =?iso-8859-1?q?9p2SbNKBFGJyJYM+sSubuhtvMymcc+N/MA4/J7asMb6m+xLQPoWaPCJJZ0Sz?= =?iso-8859-1?q?r6V0EaC4dundkS3HgpImAd1MYp5lOpfpHAVMqqGl3nZOGeBj/EvnEyKlJ9yg?= =?iso-8859-1?q?f4YmD5Q+DTn+6T/SI7mkbL4jP3bU72IG+zotlvwrAgjQ+TBMiDyGRasie4yy?= =?iso-8859-1?q?W+t6Wjr2EkTr68XTJpwpGEY8NvKSOa57FsFztBfg9izUQOgH7WUV3i+3RmXo?= =?iso-8859-1?q?TMrdRQ8skDrKraeK7dxP2lwpKcpN3jBUHzWQU87wgGnALmQ0LOHeNkI3EWGt?= =?iso-8859-1?q?Vu87n9JdEQu9EaWWfqc2qTAWnL+v5nN9xJIC4iXfhch+woARAhvlIk0z1xOK?= =?iso-8859-1?q?96vUBTe2OV++Mu0DXdFoPMZEwr3iOiD+DkSxsVimAgSPNIaNFebIYpWgZEeC?= =?iso-8859-1?q?iFVHeogU866o1VQXegEQ+vY/zEJ4qPWD551ef3jfCtCvXOJ78QmC1i/VC+4R?= =?iso-8859-1?q?O5FQ7N1POFyDFrjPHwwW0HtBI4ICfk0JLfHmt0PGg70+jNYG5HAXEhmc8ScJ?= =?iso-8859-1?q?5u1PrNaFjyLJJJ6R5NC5qJF9SOjKEh5fxOYpuY2iLUnvl+YGaQg/nMGWLege?= =?iso-8859-1?q?OseYmqChjq2iMq4QfkT6zQ8E35Dp7J46zHoxWnH+1cqXpB3noV4DQMBkQh5m?= =?iso-8859-1?q?Cz9ZUzu/WjGmWxvWN1slgkJsfwecVzML9M8g5Y4Stm+vmt37V9MD5AlyArTu?= =?iso-8859-1?q?2nTmz8myzI1GtlcGuB2NBQv+Fqs49KBVjdAU6lIf3E2OOmkXW/metmsNGp4Y?= =?iso-8859-1?q?wx5O6v?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?Dxgb/zHpk/OAFBeSrHTKpIa?= =?iso-8859-1?q?/zk09JqMjYvGEAXXhA2VAPUAF1IB3vZ+ZCUjvf6Bm4XocB1fB6MfraiOXmLL?= =?iso-8859-1?q?uAbGUKcEmwF/oZK69LdINCtCTUPDJhjcnzjtoCzWG3zbYbXBo7AMrXLui09o?= =?iso-8859-1?q?7TsoXQf+xbDj+8ABhNW88pe1nqCGOTAoKQl9EENc4wkHXHofsjLC7NnxlPsm?= =?iso-8859-1?q?Lq++XEzZdjBPx5cbFuiDT7U1Yif1H3fS1gPAxJKsvJD8v+qarVHuCawKiyc8?= =?iso-8859-1?q?9XrWTbEsXuNA2Jrvf72/SAuEspUNjplgkLj8eMi9kaX5wknuOYcNMEoE37dO?= =?iso-8859-1?q?/gchFAdBmNjgTkC9KIil0K6xJkYBS96CUuPBeSOSGCFM6ORxGFzg0gm8ihUn?= =?iso-8859-1?q?lcCWdxeEONAZfyhYgAXzVbR7VIAOKMXIzCEzfdoYCCP19wOkzZXqaMLOso4u?= =?iso-8859-1?q?HYyw1r14cXQykcguOht1z8Cp6wPM20pSEaThOz1VUOYck2HUyRfkUGClqcWk?= =?iso-8859-1?q?Gd7XP5uNa5eLvN4AEYH1zSPP80LSPGqYqLEmSo3jQKOsB4NnSxIPHUHiOFi7?= =?iso-8859-1?q?j0/JgQqcEerhZSdFLtEkQQ/05Bq2KJUidibQBQlHSnHcJzMzUA2MdQXPGsgt?= =?iso-8859-1?q?smA1159r+tLyUR/R6VL8uQN3TbnPkdjJLbsWt0G7BqUlow/364tUkztXR+3L?= =?iso-8859-1?q?KhIeevrU/CK/5oqyXnZoY9tN+T+vUwUZS/xvmRk7TBq8O9oUwLAPs10QvNvr?= =?iso-8859-1?q?QUBJbcFXbrsEEyKiPKYcDTl5GdFrq1nNKY3iP7XeZ3lM8jxFCtLwlfxwtTgg?= =?iso-8859-1?q?UI3C+IP/yoj75MEddqLhfXd8cZA/ECt3CizzOtU6YyH/rbK/OD0az63owfhq?= =?iso-8859-1?q?9+4OIxwyy1ogMqM/PWwAwyZXU8WcUfpoWEIoH/FOC/RMQCwjkfheGSgDUFty?= =?iso-8859-1?q?MgdtQ3rW1ynQhWmikv6p9qrk2dDmOFUF0YIR9qVwxwTWZOpp5nkc+knhIeR3?= =?iso-8859-1?q?e6ZrHuzmX3rSma/qdeLtiH8uxtkwfcolg49BE6HpyT+IlcBiWf8Vt8RTG+h8?= =?iso-8859-1?q?39eRew2G4bBzIKXI0/p3xCLXykC9tOBjKslhnJUKRzqlUWtCbWA3plRxhuxt?= =?iso-8859-1?q?kMMBqOCluxuabYnzWMsACFJi/Hy2jxYb8XT6DekkhknxOxmou035rd+L1Gk0?= =?iso-8859-1?q?nkx2oVUZoUNMbKj+aL2vDOwUf0Qfy9MHWs/UHLME/Tv5iCxFnmAOrcAHUrBN?= =?iso-8859-1?q?2fPhFITtAHSB8jl8XcnQk/1vJZsXJxPUAX5L8VNKWT6sa4EIBP6sQZHm/8gh?= =?iso-8859-1?q?VC4J4/Qfoetp7p/IGgxijBGUD3Yc9YXrLW45H/IJfWRBlsDFSBRLZbwBigKp?= =?iso-8859-1?q?KtnyBsMUjLbmT6V7wA14ulPzgN5mjCN5d3ICTtwh/4lVKqGK3fCflMJcAopF?= =?iso-8859-1?q?NYgP2rp6M6KBjBL3L8sshxYAbEL4ovYU3ubgVKrXsdxEtOgPwPDFKTQ3q8of?= =?iso-8859-1?q?OfOJkJ5kbVs9ERo6rlJc/lAfOx70aTWTfbnZIUmRN2bsBp2RP2RgRoqaQ//U?= =?iso-8859-1?q?6Pq1nWLBzQDf9WMdKG1vssL+ILmOHn5Kn5XunBRnayHzt2b9Na7fBShkz1qQ?= =?iso-8859-1?q?utSBV2NRinwcCw0DqTJd9wx/7ye4FOwt3rkbzmF7d4opAoRiTC3QYgPWUVk4?= =?iso-8859-1?q?=3D?= 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: d4a16d1d-521f-4509-1903-08dd571d280b X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:49.2137 (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: aIDuSq7FbstnAiIY7vkXXLLE/c/9rgZa69ymNlrv5Wapbkm+p1ZAfCNKtQkvZu3Rb1fSPsIgmaloiLQIe7zV/Xz0+GytaGDLNY45LcrJ5Rky9V6V/kh6oj+FE+j9zsBu X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif Implements the behavior defined in section 10.2.3.5 of PCIe spec rev 5. This is needed by devices that support ATS. Signed-off-by: Clement Mathieu--Drif --- hw/i386/intel_iommu.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index d3772d8902..b9b5d492f5 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2100,7 +2100,8 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *vtd_as, PCIBus *bus, uint8_t bus_num = pci_bus_num(bus); VTDContextCacheEntry *cc_entry; uint64_t pte, page_mask; - uint32_t level, pasid = vtd_as->pasid; + uint32_t level = UINT32_MAX; + uint32_t pasid = vtd_as->pasid; uint16_t source_id = PCI_BUILD_BDF(bus_num, devfn); int ret_fr; bool is_fpd_set = false; @@ -2259,14 +2260,19 @@ out: entry->iova = addr & page_mask; entry->translated_addr = vtd_get_pte_addr(pte, s->aw_bits) & page_mask; entry->addr_mask = ~page_mask; - entry->perm = access_flags; + entry->perm = (is_write ? access_flags : (access_flags & (~IOMMU_WO))); return true; error: vtd_iommu_unlock(s); entry->iova = 0; entry->translated_addr = 0; - entry->addr_mask = 0; + /* + * Set the mask for ATS (the range must be present even when the + * translation fails : PCIe rev 5 10.2.3.5) + */ + entry->addr_mask = (level != UINT32_MAX) ? + (~vtd_pt_level_page_mask(level)) : (~VTD_PAGE_MASK_4K); entry->perm = IOMMU_NONE; return false; } From patchwork Thu Feb 27 10:54:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994100 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 8ECD9C021BE for ; Thu, 27 Feb 2025 10:57:11 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbY2-0005Gd-9L; Thu, 27 Feb 2025 05:55:22 -0500 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 1tnbY0-0005F5-49 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:20 -0500 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 1tnbXx-0005o1-Fk for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:55:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653717; x=1772189717; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=m5wBA/DKT2nuLCzYeyNMgxFYfXCnhkVt7sDapOAU8cc=; b=ONa/V0HAFlPG4XSt9RPXXmQK6MGoKfmdeLIPKfFZPUmegdEYmlV6QQRN n577lGdRV/XhdHseu/XxSQAm5x4Zv7AHYs8HauEGUXGn14/szifc418mf h8tuUZC4ZmqdZ+S/lG+Ej3EjBbO7okNyv3gKynpVu+/5CBvbU6hajHvW9 J4xv6IVcCzTT+AYEfn6Q3HfQetSFQSNyUwN5zoIUJ1S7oeJPs3x8yh6Tq pd6dPDaqjXo6Ce7RNgDX8J74pGzlqRx0wHSOdnBD1tF9DFbtpSuTWtQgs r9UUfy1rocKNlyUBaz/ylpIFBXtfLjDPKoLpehVAK//Z/HBzZWNAuxI6f A==; X-CSE-ConnectionGUID: vAicnbXgTAicd4doYnoxZw== X-CSE-MsgGUID: TJSQbYstSLaons8+2OPVeA== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="33331862" X-MGA-submission: MDHkR2FPGDsvQcBl9Qq7/acCJs8ILOvSxNe9r+yNe0TN836V4+It1NjCauDHcykPF8S3EUIFmuijkyil0YRm0Ym7PVSoNureHvaLEBrfEl9MXDNKHx+Q7s5mY+tsi1uQek/7tKnOUyXh5k1ovrfG2UHy+qu3pxkteYX43aJ9KeVImg== Received: from mail-db8eur05lp2110.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.110]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:51 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yAeyMB5VXcYKIbGy3s5EAHUbbt/GCkViBmsKq85BzH+ULGwys7KX9UMs/oBxcWgJVrBFCQgPj0mEfTmRWFsJaz5Y9RC72b/8t/T3F7MS3iNYgH5YZqAJmbm8uP70A1VQBu+BwaZp0eLZ62mZ80MjVfDa6UCfM5OABLhuoiJ+xZ6iEBYoa5ddCrpYBPm95g8jgCQpA5VCBiWZLXE/3MKjso4Eu89i7O3W/EuGE3A4ek9egKVE2ukFrs8tmI9gjAE1+ns4jN61Gsms2+5lp542YE8Yp14R6CGUmeM2bVnbfb4i4Uocmffu4rePLjQa11+NfdKEd2ZK3apE1W542kgpZg== 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=ptdj9NpRDTE1Jdjyv9AgOzOvidnvjV1MSr75mHV7AxY=; b=roRIHifcoIqljA/E2lBa8RZrGHQDUYtt/LbP0IEK+0kgZ54lUmLt8b9pxT8PbXfUMPYsXE/dFeOzca0rVcCK957Ay2LoxMdAFHH03CaLwdOoGRSHLMuirBr+hggBsisJOGZRd2Xq5zIRtMD4ZZT4pRSgsPSfmLJpOhSLgjgCmjRAs2/XFlb7yGYpoL3o0kyDcFC/6L6k2BueoeFKQCsZZeE2tzGWRws3IOpRgfz0m3NDIaJKpTlJOXlum1CIQAnHBKdRigTmBZ/61WKdDCzIxcNitPAOEh5udHvtmQNSZfxudRh/9viTNU+Pg0Lb3hB2sRCmA2cDLfSijSXZxnQ/iQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ptdj9NpRDTE1Jdjyv9AgOzOvidnvjV1MSr75mHV7AxY=; b=Q4HzAyyIxV8Ta3ScQYPR9jUc2b6QuwlX/r+SxbtgyvOpsHIM/x5996uFFxd4H6dOE8OHBJ/EPvS3ytFYg8TpPvmIuFrlMbJECGrgF3SJZapPEcoTguVRickRyCE/fNiyJrJFUK0keUn9LZeNOGixYK1nJgdzdyAKGMMdNlEr7e5R3tQomS6ZYzJPFnYd7n/VUy0h9PiwX6tu7PSBW1TwNXT5Kv4DV2UaEjCgKeDPG0fAjsiVPwJWqcVhOWMaeIuHWAlJfdsww6bAgoY0R2IlkKVnn8SgxkZIjP1QqN69Is9rlyElWcm4bGVtm6WM9jtqb90/WPaytdCGdeawb/4M2g== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:50 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:50 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 18/19] intel_iommu: Return page walk level even when the translation fails Thread-Topic: [PATCH v4 18/19] intel_iommu: Return page walk level even when the translation fails Thread-Index: AQHbiQYF47bBqYuATkaQbMxdaWNCbA== Date: Thu, 27 Feb 2025 10:54:49 +0000 Message-ID: <20250227105339.388598-19-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 2008729d-66ec-4a70-2a61-08dd571d2865 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?aG4bfca6LoxC0nVk0qn8KCByAY?= =?iso-8859-1?q?AK2d82mJUxEOQHBymVwD5bEp3g3mDjdvSaOtWG37JcORyl2nhgID0jYO4SWA?= =?iso-8859-1?q?UHnV/hD8hn6VvMtii+7hC0Om9DiqEBthru+KEkPh2p24jvceCzyEBam7dKkI?= =?iso-8859-1?q?kWsGusjvhEvWVvxj3zowTqNh5/+uY3xgOyPoJUJ8dfPnqp/pLKuWRyeMvXKG?= =?iso-8859-1?q?Tk6+IpFHphau4CEMTZeXaqseon1p4GdBdj0tNfZ5EevwQS4t7gEJ5/DGBpFD?= =?iso-8859-1?q?0luAYjxWt/SMrPAivrLugtZ9uSiWoDJZ6kfS16GqkAv3p8xCmeP+7ASnCFa8?= =?iso-8859-1?q?lCiHvRAltjRB4AwGZLSTo707wyBP1kywO7J7kWo4w/bn1o1d3GHo/v+ngy+y?= =?iso-8859-1?q?QIPR+2/DEstcLIMfE/+tmgdJT0e6mynjftAUp5xOFybDj/OWdJ/etpK+8kZ1?= =?iso-8859-1?q?ZSl+9Z7ulWaVOMLiWt3s/bF6AdaxPVwyYPfD7LwAi9OMzdcdkmAhZEjIGz79?= =?iso-8859-1?q?JP33gHvAlnHx9m/nOvJ3Lb42VNZuWUmkrLoTNQYPOIRZVFYB4mlKFaUCKQcM?= =?iso-8859-1?q?rjhPUCzOhjDUUdK2klwiScKbOmGmFDRqsuK/yFxteEkMSfcSnffa5ggTFH7J?= =?iso-8859-1?q?0aMqgo5ei2oGVqcJv2O9TycI8q66xUkHOUye67/X1uCIT8oFouIPPSPOUjPj?= =?iso-8859-1?q?UeujrlquMwhDtDip4XZAQDp0pU8AFRKK1MpiaQQHz9ZtNEF8BrsFYOh64lTL?= =?iso-8859-1?q?/rQ5GIUlz/IQJYGnmw7LXwiskRTltDvvoyzsiHRQSOBuJYpzBm7F2+C94gf4?= =?iso-8859-1?q?zr9hpZvNIprxFr73AAzdS6FgVn4sCyOj0kJU8wkJl4p7NQ14Id0ExKL76+Cs?= =?iso-8859-1?q?5hhtbYxPG0O473Oq792cjTZwncxWh0TYWVpOCUjMmf4Dm4TNx67V8FK85m7b?= =?iso-8859-1?q?UwR5NgDFRtk3gGN7x+nSIeBZ4RVAiYV9fgG43+kS3rAtC5zDR/WAzMzH+qLR?= =?iso-8859-1?q?lAXpX4aKii20tmGvsEvNOIQ5wrJqBnsIMZ//z/To3swIV4b0NZ3KUnzLCPvK?= =?iso-8859-1?q?DP/Xk3nQBq89pFpDcZuXk658VuDktry3A8bq4k/7NHk8abQf4ShJlJxHa/fR?= =?iso-8859-1?q?FbwLSq05+/VQPR6d/+Y7l7cuiKv4LEDsjRofhicl6YomA+rvBqKGcEcXoMvE?= =?iso-8859-1?q?PD0GGFQIq0V6aGWXiRPjZZ/wbvingT3Om8O4G0Y+fyPksVKaaei44BM8Txzt?= =?iso-8859-1?q?mjDXPQjdTw8sbZLav8OOyK70KwzEmeuCqhJPTztz9BzVZz1axq5PhthOdPP6?= =?iso-8859-1?q?eikgS94rEpMihl93zELQYgmbKG+Bs3mBJKsDa5gFjxKm4bO+jVo9/IrK6Tvo?= =?iso-8859-1?q?HtJc3kbZ32YJZgcrDd4dRcSIP/Wh9A0FMFwx/aqP7tJomiGiqqroOcGT+Bu1?= =?iso-8859-1?q?NK88GtStFTcoPWV9oYs40A8K0L3VR1TeUKiUE+K+53P8udWwbaVgtyQXqBHF?= =?iso-8859-1?q?OCLgT2?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?5Pgz7DZ/lYYj1pf0Vxm2gsQ?= =?iso-8859-1?q?guVB4OJwhuEECduYgQ9rZAVAefiEridOrRXqbA/wOPHV9oSvzOi+Co+iDb9G?= =?iso-8859-1?q?TnLRaRIpV4U+aa++IqUp2EHs/em4HK5AawBSuc6+LrjJWq3OKc50Zt6bbMqN?= =?iso-8859-1?q?cnvNtjo84m2E2ORcSPYzsbd3ZZKQ4042KHQ8BFQOzbrx8wKqv5Dz9p6W3bXf?= =?iso-8859-1?q?mxg7qc1waHyNcOTM+K8NVmDNq1sDYAspcSF8DH687nQgDuDcF/m5ZFF+esEA?= =?iso-8859-1?q?rKSkZ6WKUxz1pNisUfOjOsDNQ3FzwHbxi/NBPJY7+Ln7Gf3JlZng67JSe+Lk?= =?iso-8859-1?q?dVTKIp+vT71cG2UMt+BfWFQcxAQiHawoZcd+4S6Gc6+M+iM6ZUVGecwV9JeT?= =?iso-8859-1?q?XuKU4Gddsy81TBSOW07zvJ3HzyE8N4PUrrSzbQAAA84dA5HlSSwBMqiyKoVf?= =?iso-8859-1?q?jFgLiUdRdEl/m2HI8AECBsGPr36jOteL35jMrboQdUYUmJpjY3PZ8wm/a/As?= =?iso-8859-1?q?/Ehhr+QWUpF78v+9iUtW92fb8y7knSmnP98134kfo08ksWU3vYpZHgeB0s61?= =?iso-8859-1?q?JqePPH9Qzp3tJW6jDPCAppeJXgm42MnDxbs0lR0BgeXdApaIATrAXt3ZlnNG?= =?iso-8859-1?q?57RPKT9qmvvs+L8f0RJjzlyfRojt72uF+2HmN+xJI7qs2fCK2PGwWOixVgXW?= =?iso-8859-1?q?GecMM18TzblJUUtg+nFhD8R37HXG9DJjjECt+3rBJquqaW4U8sS0WdqWM4zF?= =?iso-8859-1?q?/8HoLDvpxYUvEhiZW6Kkzv9Q3ZTZE7yxCDeLy1q5GXjnFQa3iyma2FJcxMx1?= =?iso-8859-1?q?YdizWXwGFyOEG0TfBK/D44ciDXthIKl4trzUmy0Cjs9cjWasWf2A8Pr5CCRl?= =?iso-8859-1?q?g9O9V6aiegFLNB4oMxZSEOQOpyH4fsfdkMicLY8kHGRlbl3opSf3DHVG4H3l?= =?iso-8859-1?q?Rq3DV0N3d6ys5RtbsEWXi9G0xqSoZs9BUVt3FK94LJATgutoI4pk/TQ4iatQ?= =?iso-8859-1?q?qBKpovrp83aBquiCMJQ/bN97KRu8jcW5FWAlnyZY9pOdFcWZKLPkL1VA3U7Y?= =?iso-8859-1?q?99Dh9naHSFgTm8qrPNfzOsvpOYg0SYrjm19AYIxdfDEgiPo1mYNSosdSvJTJ?= =?iso-8859-1?q?0FrEMYilz+a7FI7In22fI2jFwz3F+jGAblm4Sh3SjTJrFpQgbueDTg9GPjKG?= =?iso-8859-1?q?bOqnYZOOxPePUlsn+zj8bHF34wVhgvOvWrXU4Lq+trrIY/wtGwa8Zrc0BORl?= =?iso-8859-1?q?KOc8MaCAr4uKgI6DBtJafhk62fRmiJuAhKJk7qtidy1sm7fqmKyp7jFDsmV8?= =?iso-8859-1?q?spMqr/SGYgPIb9s5LH06OaifN3/e2+KmDF+PJ91is+OzESZ6gGeNpA4B3wYT?= =?iso-8859-1?q?iBfuRLT7qJhSC9rqm/hXHPNneu1F8ZbSMjDqS4l9b0HEZ7ztqwOShvRJVCkX?= =?iso-8859-1?q?03gylBFGAn54RtF/6GeEPwQGkj64YmnvU5HA6Iejn8QOyv7ATI/0UnJ4yuSV?= =?iso-8859-1?q?nQGLraVjtjHe2VElt4oFafCLSwdbGpbtXWhTMdufU1K7aZlk2F9ibsXibslb?= =?iso-8859-1?q?SJGbsC2OoH29e+Cl5ombteWfaeODJ+OAksFd1piKRtek4phWFfMkMxFlkUUI?= =?iso-8859-1?q?VKOcT1+NBAYIyj6lfdzK78h6UuezlM8YB0JoPR6xDZn9Wzo4A6KfATjp7daU?= =?iso-8859-1?q?=3D?= 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: 2008729d-66ec-4a70-2a61-08dd571d2865 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:49.9542 (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: CNQmyzqLf28F7Wf+jiul625AIzpOUAZ2K66SQBdDUTrcUimOPsSI6H6iaTr8nzAfYXJWM2+xxA1X+p4fgyqrQqtV/sAKl30wzNypAFSb/5GzEb1+jPYZu9a7crA89zZf X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif We use this information in vtd_do_iommu_translate to populate the IOMMUTLBEntry and indicate the correct page mask. This prevents ATS devices from sending many useless translation requests when a megapage or gigapage iova is not mapped to a physical address. Signed-off-by: Clement Mathieu--Drif --- hw/i386/intel_iommu.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index b9b5d492f5..9daf8025cc 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -1995,9 +1995,9 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, uint32_t pasid) { dma_addr_t addr = vtd_get_iova_pgtbl_base(s, ce, pasid); - uint32_t level = vtd_get_iova_level(s, ce, pasid); uint32_t offset; uint64_t flpte, flag_ad = VTD_FL_A; + *flpte_level = vtd_get_iova_level(s, ce, pasid); if (!vtd_iova_fl_check_canonical(s, iova, ce, pasid)) { error_report_once("%s: detected non canonical IOVA (iova=0x%" PRIx64 "," @@ -2006,11 +2006,11 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, } while (true) { - offset = vtd_iova_level_offset(iova, level); + offset = vtd_iova_level_offset(iova, *flpte_level); flpte = vtd_get_pte(addr, offset); if (flpte == (uint64_t)-1) { - if (level == vtd_get_iova_level(s, ce, pasid)) { + if (*flpte_level == vtd_get_iova_level(s, ce, pasid)) { /* Invalid programming of pasid-entry */ return -VTD_FR_PASID_ENTRY_FSPTPTR_INV; } else { @@ -2036,15 +2036,15 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, if (is_write && !(flpte & VTD_FL_RW)) { return -VTD_FR_SM_WRITE; } - if (vtd_flpte_nonzero_rsvd(flpte, level)) { + if (vtd_flpte_nonzero_rsvd(flpte, *flpte_level)) { error_report_once("%s: detected flpte reserved non-zero " "iova=0x%" PRIx64 ", level=0x%" PRIx32 "flpte=0x%" PRIx64 ", pasid=0x%" PRIX32 ")", - __func__, iova, level, flpte, pasid); + __func__, iova, *flpte_level, flpte, pasid); return -VTD_FR_FS_PAGING_ENTRY_RSVD; } - if (vtd_is_last_pte(flpte, level) && is_write) { + if (vtd_is_last_pte(flpte, *flpte_level) && is_write) { flag_ad |= VTD_FL_D; } @@ -2052,14 +2052,13 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, return -VTD_FR_FS_BIT_UPDATE_FAILED; } - if (vtd_is_last_pte(flpte, level)) { + if (vtd_is_last_pte(flpte, *flpte_level)) { *flptep = flpte; - *flpte_level = level; return 0; } addr = vtd_get_pte_addr(flpte, aw_bits); - level--; + (*flpte_level)--; } } From patchwork Thu Feb 27 10:54:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13994098 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 B0C0BC19F2E for ; Thu, 27 Feb 2025 10:56:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tnbXf-0004mJ-1G; Thu, 27 Feb 2025 05:54:59 -0500 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 1tnbXd-0004iX-82 for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:57 -0500 Received: from smarthost2.eviden.com ([80.78.11.83]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tnbXb-0005rq-4U for qemu-devel@nongnu.org; Thu, 27 Feb 2025 05:54:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740653695; x=1772189695; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KHmNcLQuspPA0tQxBlqqLb1prhzBBBLWPp+69jOVVMM=; b=UjFGuU8LJ1Y9KHBm07nluGQyrav1IbpKAUsfYSw8v28aZqOwIZuaERCw b2+MtVKm/l/Hus9aYylZ/CkmhanW9V6Gn8zKapTZHRgaJf+JKM0mjY/zO CNkfKL6+POqJkO6Dew5GklKPwb5AhFN55Uc6S6A2MlEb4KSG3i/4ZuVZs JxXCvLYlHFnzZa7koYglZpZH2tiR49UPDDmHGR5T7NKUFXtQw7Z81ak8c ow9BhYRRkhxQzzj+qCbuVegcb20WQE80jUPdgjwbsK42xnBWYufJPxka3 WzYIIFR1Yj54hvGozRrRjhM/6mZ59MM+7vgNyAr2LrqNAZMBAc+WzZYKf A==; X-CSE-ConnectionGUID: 9fP/aPLHQ3y/OITZPFK8JQ== X-CSE-MsgGUID: Ia/ARBOwRM2fDGF3i3vmfg== X-IronPort-AV: E=Sophos;i="6.13,319,1732575600"; d="scan'208";a="31820749" X-MGA-submission: MDFG9YMZ0PlWcFzStPSwpeJKlKgk8JyYgsdZelhmbQFARAoYHi5HAgZvqS67daMCPb53KLpHo4IOUQYkWPi7Bx/8HE1o4oHTQV2TsKvcsgGH4NsOurAC/yGhOewaYcA00HVs4t7R/eECDvMBNQeEIkxFlcWvb9TEscyfOZ8rfuZ96g== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost2.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 27 Feb 2025 11:54:52 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S3jKhOnU5ZC2NZChiwvk9KlO049r8raKuOavU0K2uLNSwDQSfRgKYG+imSObZqQaJFc8pBnuKTXWAWc5al6RyKwh4qkQYF3ztTwrBKtO9fsvNdWxcAjrFzYz5aj3Gdh9EFGJyJzARTC14qvCl9OXljs4uppM7otnxzralO89mPdR6zFrBU8r0EyiBriHgYTodfR0TQBTKqocZcSHApS/8lEqAcYV0lgPfE+K20IeI1aawnM25FLiDpoveKodEefsNWQD2owhopzj3kJlQ56NbzI1sKdJsj49akqIXUaDxlgrg48vnhx5YTqixA2Z1tAiMyeXlEi9Rsn3QKYEVVhuWg== 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=v+ubVhNTRgk5dT7AxWnjpgCltzcIrfiIgdWhE8OQaus=; b=KhNpIjYazJNHHJdpWDHqhmkG4Ywz4o+WpIt0aGdNVMO3H1u8cYXbRwYPqtwH06rM5riKzBjFGAH0gZaqi0nYnyGcXoDhMshVFdn4vQq5rwRLQAjefWt7dt9tAtjb9Gwkxj6L2yaC5tka0LCmzlADBxCu26t3emnZ5PDM05vX4C9EohDq926jgDOfWY4MohR2vFpD+6dfpuI3SLU1xFDW9RHUTGkuttYZ8k93FOrgI0gItdk5/I+xc4WgcqIaRIYgkMx6k7gM+Z2fj6TkxTGTRDatDi5AgmNG4LS4B+8/N8mBuJZuPWh8118AbDqfZDLGrzWAl4JRThdpnEYrdA0VlA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Eviden.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v+ubVhNTRgk5dT7AxWnjpgCltzcIrfiIgdWhE8OQaus=; b=V43zOU/6R5KaDRaltIO/8BYQLAgZ3NgGq4HB8zDifN2xmS4+Tft5KHosWUjFPuqPEzDpXpRO2vSWiJt0XsziqyN6AZv8WoJRv9Ox284la26vHiIwQGQ8twDRxJ4s95zO62se+0d1Iz95Wif1k4URtH/Zf9gyUXEukMHQCWkELvjTHZca4AZpWfkJFy9ItBv3D7KEteqE1qWA/0xvq5ivPEbNjyfm6+oElIHJcW8RkbZEMWMZPBEfKIyVudd1mCXGMuA5GXkm4IK4DkkAYZCi666AI3Ty3kXqw4gLrEHnl2EDyKV++JeW1F43PDEB+6meP3WFHLJDSBvTYshcdCFnKg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS2PR07MB9097.eurprd07.prod.outlook.com (2603:10a6:20b:558::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Thu, 27 Feb 2025 10:54:51 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%7]) with mapi id 15.20.8445.017; Thu, 27 Feb 2025 10:54:51 +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" , "mst@redhat.com" , "tjeznach@rivosinc.com" , "minwoo.im@samsung.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH v4 19/19] intel_iommu: Add support for ATS Thread-Topic: [PATCH v4 19/19] intel_iommu: Add support for ATS Thread-Index: AQHbiQYGlwF8m46GsE2rkhzmNVJnWQ== Date: Thu, 27 Feb 2025 10:54:51 +0000 Message-ID: <20250227105339.388598-20-clement.mathieu--drif@eviden.com> References: <20250227105339.388598-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250227105339.388598-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_|AS2PR07MB9097:EE_ x-ms-office365-filtering-correlation-id: 86c24931-688c-45c3-454b-08dd571d2907 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?yfyrVtlDwDrhWrslpUs+e5Emxk?= =?iso-8859-1?q?umRpF+9ow03ekQ3XldeJYo6l7Fnksn1DRgoxp0Qk2MfN9fNXqwj8iSEGGBMD?= =?iso-8859-1?q?SyO4WVdkTPYrVDgpbJ2K1yJjxp0AsvXK62Ebeg5PDE/Wne+qcCAvuuDdK3O5?= =?iso-8859-1?q?Yl/s6rba4j0QskkfQvL5+auCfNHnar3up49HQI7vWJZJrwjMuhGofjeElmRc?= =?iso-8859-1?q?dQumr4gJXV36mM3By5eCJoovlw1lbWxwnyiQcFrPyNuX9CsbSBitaftsBgEZ?= =?iso-8859-1?q?nFFwsYsOeLcG/klzvORhHRTjyFjQBwUc3iaRQc4h37XNOsYFbQ6iZfZ+y2Xu?= =?iso-8859-1?q?zKDa4SWSn4flOVOjaL6+45PH+ZQDFBRuqtoA7TiWxsUtQ896fakIBG/qO4nh?= =?iso-8859-1?q?5LDP8YcKx/5/5B5BPLMsN5MKL4tyzra77CuIUTrjzD3Q3U+3tPLF+m861uqj?= =?iso-8859-1?q?mP/s4Vw96pIjY+64iKC31vD5rK19RW2KPqkZOeLri4rFlahsUMHpwVMYBswX?= =?iso-8859-1?q?Wk99sb9u7fC+ldLUqEtDZWos2iuX0ig0rzhi7p2WEDd1Y1uwgp7MlTbF5q+b?= =?iso-8859-1?q?YKQwHERz8mHc5PuA3A0tPMmmzDGhtTVUznptkVUJlDusZ4ikmTUSujttSkUu?= =?iso-8859-1?q?H3TVrWD9fVdLptZjjfbB8dSSXm8JZLkfDpwDJ1fdox/MaSaosOBxTS+x6nTp?= =?iso-8859-1?q?IuFmj377+W5ZCLAdpra1gZUPbzfiYubUhrHd72NgQgzAYzwHLPvvZc9VyJ/w?= =?iso-8859-1?q?35tZtjnKXM7g8XOXhp9QJTw5RVCQXzHCZASCVpfU+mMEM0LPCo/f98pMOsz1?= =?iso-8859-1?q?lZLTdLSbxpz6L4kGdZbSMWOmx8ECa7d42kmHOnCmOoVkPfSLl9TVDz98QV0E?= =?iso-8859-1?q?l2+3lbYHpgN1dY252vJJS+puMoIllIghR2J7zzafJLwzHEtVAVivYO9vU2zV?= =?iso-8859-1?q?vTKjSxVhF5JYAJxsz81ZLnr4au/DZlGKdMD5UJ5axSJO+4OuVTcmENCX3+oz?= =?iso-8859-1?q?/HNpiBX6nOS6FHFcVceClaQJzcUF7Tg7W9FDgZUKNVQUIxGew5BmOQoGyQI5?= =?iso-8859-1?q?fmM4eMVgmGbPS0Kip2RDDO6s9o+0dbvbGfnkQnOJX9qFRrAWgebYWrix8UKz?= =?iso-8859-1?q?+8fSeaKNqnwuCEgvRJRWlyCzdJiQPNqyjAFleMV1oSLSghIgo3Zu/+Ol1RV6?= =?iso-8859-1?q?mQ98/YFOYEWA9yH/uK6AiKWhg/8cSncx1lYyyG7RuVcBoA4dl8y2UxtcuIVZ?= =?iso-8859-1?q?qbCmXITYvApKwTjNsfyEvhBkwEKy01joeevpqAn1fSJc+oneXxwjXMLvmGNW?= =?iso-8859-1?q?f16AForvchBzQ+8PBvwqkpP+Qw+v4o+f4rd5AHqQ96LdEHq5/Cigy3MptSjP?= =?iso-8859-1?q?l4Q1t4CZ4QJZys4PR75ilmoNUpfX3Gc7/ua9Ik8VYzwWt4vsgWFVLP4J/xjq?= =?iso-8859-1?q?vyVlDS/FFhAxes/6T1qX5tzAF/hnwfhZIaFp+BGuOTTx+fc+rj1C+2gIzW0g?= =?iso-8859-1?q?mKkhUo?= 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:(13230040)(1800799024)(7416014)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?buKAJ3kmIgF95C8VS/Zsbzy?= =?iso-8859-1?q?fI8sJEht+7q4IWZV7x36FP4zPDGdfrmlW5dG7BEIog6L+97trftIwQE0FGvC?= =?iso-8859-1?q?yIbEJT0MUIYvbkz71aPDk5RK3kPpSaqbrpzmYnB4L/aAuugW8np8l88Ti0ai?= =?iso-8859-1?q?zyYHmP2fiTVjrKbWQN1+q/nyB+AmraICaYSygGeEMU+oqWiT4lby8UG2dPp5?= =?iso-8859-1?q?jD7ttNY6jmubTOdpDzNmT/GumqJNi9zuWdGKt3ejQ1WIBGIiSwFmYj2nJ7T3?= =?iso-8859-1?q?dbghd+Z1/MwH0QXYCfrORKn+hFTqNRLC365dHknZkTQ86E6B2JZ6nccaMLGa?= =?iso-8859-1?q?Vyrw+EAbG2GKgf2f0Yy/z1+qfMukOyQMmKPWwh9rbESlKqf3VEIn6RkDLbnO?= =?iso-8859-1?q?9/zG1t5E36zop8ds+hxYlynPJTiwZj7FqI4kSgOV3l9C/CcL9btht/34vUE6?= =?iso-8859-1?q?BJlnPuwZejOfdLvy4VwZ1GaCblOXAzwH9ZaBz/Uwgi5vUoiQKRN3gv5+Y3Pi?= =?iso-8859-1?q?zu+bH8j90v5V75brzq6m+WJpKnDodmdg0B1IQ5t9h0ivjJKmUsbH7YpHR1aE?= =?iso-8859-1?q?5MZEU2i6VI+W3JVuy6HDavyEQCqBug1NbTn38eo5vbaT1MDQgyv+DtVo0OY+?= =?iso-8859-1?q?MTYjrRssYlimXJr4l09/neEEzSj0Ohpxy70i2iWB/MCHJnDPeHmkNUA1px8d?= =?iso-8859-1?q?IzT9nR+V7QK1KvZCruFtrM8tkH0z/0xpwwav9hkLZPlV7YzLddLr+t0o7R8q?= =?iso-8859-1?q?91WNt8ETBEFjqZjXRZWQ8RAtjusAEW5hGQ1XPlrSanjO6nJzHXjPlq+OD1JR?= =?iso-8859-1?q?iWtxkMyTecJHWHjqa0zMrHoUvWiX/Yzi/T1xOjkZ+9YgE5pi6BC9H+8ZEjmj?= =?iso-8859-1?q?HMqyJsrw2bkS/DhAzbsVQ8EMU2HgCebw6OA4wC3Ht37xKdYOVGn4PmA6iVVP?= =?iso-8859-1?q?ysKYNIJHbqHr0/hQbYf3DqdYAo55iqadHjGi/iGEuoAjRGWefuU5LGiHWr5g?= =?iso-8859-1?q?K817RC6ti63BPgFGHQWIb/CE6pPwest1m+OTUhLnEFRsoxzZ+Dmf+Phd8OrR?= =?iso-8859-1?q?OZKJMDLcQaDHkBcWRnQNdpJ+VGT5EhFddETV2EQpZWvVqzUFT836uYW0pPWk?= =?iso-8859-1?q?q2BOzHVdVj9LNmv27lO8RQ4wcrVWTfmCs0hUY+rvj5xmwKKskkM7e/XukhUJ?= =?iso-8859-1?q?SrjzAWWWRRNIk6E2OgSghD6RmtHnZRNzdg2E8aPtiLyA9EEpdVQbQFg0PbUo?= =?iso-8859-1?q?WU9QzI08W5fwMh/p2KGInTJhHndFbrHTu9vVDhRC3/6e4dcgYZQg9wSkG9pS?= =?iso-8859-1?q?uJUBm7JFiAWo2760F6vQ+jgTHQdmqDwkW65+z5gsEtXN1pAdDQBYB5xEHl88?= =?iso-8859-1?q?6jJ9KWugGkZhr3GbIG+Tu6D3zLL7GQv0yxBVrsDF7/khewrLWoe1KJZor6CR?= =?iso-8859-1?q?FowLAUFZNscUi2/YYuliUhOLccjp9N6vCJ6lB6Yd3X/WTE+FuSZg1Dp4xzCE?= =?iso-8859-1?q?lCFJB2SC11P/23TMjTilfHTWcMdG0jrgxd2ZRY8Bl58zyqMm1qQvvi0UdJdC?= =?iso-8859-1?q?iiuYvIXGRfj7Y904mWA/RhjgLU0Ih/0cksPXe1Tx5L8dcYOYagiZDjElMAkr?= =?iso-8859-1?q?y0YYo+Xz0fQM4lLZ21BQT5kEEGrJoGroBDsHSEEiPgFIxqUH+eHWcTLzI0bE?= =?iso-8859-1?q?=3D?= 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: 86c24931-688c-45c3-454b-08dd571d2907 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2025 10:54:51.0219 (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: wlvWaqbnWqhY+OCKvCxBtn6gJv3cq5vV8oDXgvUCT41yd5brajUKGJRJXBr/QNRfvowJ1a2U/giCMCdDjLlZgqGSBqF8boBgW0gHNq8ET2D0g2j31XjF/wPzsnHxYoXz X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR07MB9097 Received-SPF: pass client-ip=80.78.11.83; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost2.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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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 From: Clement Mathieu--Drif Signed-off-by: Clement Mathieu--Drif --- hw/i386/intel_iommu.c | 74 ++++++++++++++++++++++++++++++++-- hw/i386/intel_iommu_internal.h | 1 + 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 9daf8025cc..2b1c733d86 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4159,12 +4159,10 @@ static void vtd_report_ir_illegal_access(VTDAddressSpace *vtd_as, bool is_fpd_set = false; VTDContextEntry ce; - assert(vtd_as->pasid != PCI_NO_PASID); - /* Try out best to fetch FPD, we can't do anything more */ if (vtd_dev_to_context_entry(s, bus_n, vtd_as->devfn, &ce) == 0) { is_fpd_set = ce.lo & VTD_CONTEXT_ENTRY_FPD; - if (!is_fpd_set && s->root_scalable) { + if (!is_fpd_set && s->root_scalable && vtd_as->pasid != PCI_NO_PASID) { vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, vtd_as->pasid); } } @@ -4738,6 +4736,74 @@ static IOMMUMemoryRegion *vtd_get_memory_region_pasid(PCIBus *bus, return &vtd_as->iommu; } +static IOMMUTLBEntry vtd_iommu_ats_do_translate(IOMMUMemoryRegion *iommu, + hwaddr addr, + IOMMUAccessFlags flags, + int iommu_idx) +{ + IOMMUTLBEntry entry; + VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu); + + if (vtd_is_interrupt_addr(addr)) { + vtd_report_ir_illegal_access(vtd_as, addr, flags & IOMMU_WO); + entry.target_as = &address_space_memory; + entry.iova = 0; + entry.translated_addr = 0; + entry.addr_mask = ~VTD_PAGE_MASK_4K; + entry.perm = IOMMU_NONE; + entry.pasid = PCI_NO_PASID; + } else { + entry = vtd_iommu_translate(iommu, addr, flags, iommu_idx); + } + + return entry; +} + +static ssize_t vtd_iommu_ats_request_translation(IOMMUMemoryRegion *iommu, + bool priv_req, bool exec_req, + hwaddr addr, size_t length, + bool no_write, + IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count) +{ + IOMMUAccessFlags flags = IOMMU_ACCESS_FLAG_FULL(true, !no_write, exec_req, + priv_req, false, false); + ssize_t res_index = 0; + hwaddr target_address = addr + length; + IOMMUTLBEntry entry; + + *err_count = 0; + + while ((addr < target_address) && (res_index < result_length)) { + entry = vtd_iommu_ats_do_translate(iommu, addr, flags, 0); + if (!IOMMU_TLB_ENTRY_TRANSLATION_ERROR(&entry)) { /* Translation done */ + /* + * 4.1.2 : Global Mapping (G) : Remapping hardware provides a value + * of 0 in this field + */ + entry.perm &= ~IOMMU_GLOBAL; + } else { + *err_count += 1; + } + result[res_index] = entry; + res_index += 1; + addr = (addr & (~entry.addr_mask)) + (entry.addr_mask + 1); + } + + /* Buffer too small */ + if (addr < target_address) { + return -ENOMEM; + } + + return res_index; +} + +static uint64_t vtd_get_min_page_size(IOMMUMemoryRegion *iommu) +{ + return VTD_PAGE_SIZE; +} + static PCIIOMMUOps vtd_iommu_ops = { .get_address_space = vtd_host_dma_iommu, .get_memory_region_pasid = vtd_get_memory_region_pasid, @@ -4913,6 +4979,8 @@ static void vtd_iommu_memory_region_class_init(ObjectClass *klass, imrc->translate = vtd_iommu_translate; imrc->notify_flag_changed = vtd_iommu_notify_flag_changed; imrc->replay = vtd_iommu_replay; + imrc->iommu_ats_request_translation = vtd_iommu_ats_request_translation; + imrc->get_min_page_size = vtd_get_min_page_size; } static const TypeInfo vtd_iommu_memory_region_info = { diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 238f1f443f..7e2071cd4d 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -192,6 +192,7 @@ #define VTD_ECAP_SC (1ULL << 7) #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) +#define VTD_ECAP_NWFS (1ULL << 33) #define VTD_ECAP_PSS (19ULL << 35) #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_SMTS (1ULL << 43)