From patchwork Fri Feb 21 08:07:30 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: 13984953 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 19222C021AA for ; Fri, 21 Feb 2025 08:08:24 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4P-0004SB-G3; Fri, 21 Feb 2025 03:07:37 -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 1tlO4O-0004Rx-5b for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:36 -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 1tlO4M-0005im-Bk for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125254; x=1771661254; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tQ4ZD/jVqFaAa80Rd9aB0joY7YkHKhzqxvXOWS3zxO8=; b=lwTOUVWmce6jJR+o18bPNKlNs77ek6dj2+KnxEyn9WBsPv9weGW+Na+h yPFtw/JMZybHdThwgOa+WYVKIuwhYoS649tyqpeLxLuUQCFMk+HFD7oDL thU9jhTTDg18vJCj9ZZjoMvPJUeW/Lzzo3w6uNm0XfJ4+CLWP8kLsGaGG GwXQli74EInopSx57nSuR3K6t+krgAaP48amdARof3FfiGXprvjT81TWD HdfTiplyeKbY2tR8wMTo1o8hbgnsYdQI7KJvTA/Bun7Pe1O2KPWyt8Rjl l0JMJnbMEvc/ZS8N2DtrPmZtfl21oToeI+VP4X6GambQ+2izflWYac3Wg w==; X-CSE-ConnectionGUID: RMmJhISlSR2vrPv0C9vx5w== X-CSE-MsgGUID: tpaTDNRlQweHwdUckI3GZg== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836633" X-MGA-submission: MDG3gb+MQlXwotH0jsL3z3D2KHls9SeTAATDBI+XSUWdVXKEERj0TB+5uC4fEbJYZvXRfM+4xdTX0MR6qb7DHfvUDdfUjc07H6Tsl4pCR4mPW30+z2O4gMnHs4tibGz6LSy++sfT957kfRF+WfNz7JSU9QaCR79s16xglzOc8yaZHg== Received: from mail-db8eur05lp2106.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.106]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:31 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ouphA0KQVrKEEDTPuWHiKmGYSK+Hh88CoHpz+x7eTObpQXUZXmWQLJEO4zl/mYdq3nvElMbiwBagkeR4Nzm4QZh+kz9v7USIInJOcwHIr9Gnj0ZMMRBUaVw0pfm8w42OwpvQE1nE8sf0nBBCF7Px7v+7utPI+DEWYm7bhq/Ai6Pcop2wiqPl3UlFTTTkmyORgZ2UgXlucbJoQWpBVKgKAxz4RtFhlEVgw7/w2UeMXNQtQrvLIpIyY+9C+x9I55wh4jaE2yxyYFrVCMQ4g5hUt4Rh7tww6iuVi2uMwzrp0/mHprqw5UpwYAmIOn968N8gKaE1BnaNzw/Il0UQkTUDIg== 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=tVEjeAHuZ9LkoM60QHs+dX8ysYcEkPGnIcVUdt47dOdOVz6sJHcEOI+2prw9zoMtoyWssETUtKpjCcigX7hDAvAY2zocWYpvJ8K+qHX1HrbTqHYCL0DD8QUvWln4SqjQDp13ZoPbZg5c1i0PsSRZstEqQOfGNO5p6HCEdtyPcF0MjLXhPFcbsiTamt5P5gWYid/NYvpS0dGrMxK8rSWxhHoby1PLJ8lkeyVU9jOpYl+y0LsDysGE16fIbUHury9A/O9XuVNbTaJg2muBzAjj/gjVLqsP/8rBNcFngbPDJ0cEO418KdRGY0uIugyqgUJ+gHxprWtd2jduv/y0/y6jiQ== 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=FPOB1tN9hCVWtcWNLuLPV5tRXEQQK+MdcwmX1tTbfqEXwVBYnXoZIo2sDKAUCfrfFx24Ti26r6Bs1U5jLQLehzWvEECoGb6UyVnPxT0U4DSv+DJps8eK+PaHiWSESGqCeUoG/29+NpdXc61/1Kt1l98tnBLPHM62/igAFb9CVhuIZ1nfhn+d1aKNBqSPea1o/N/t5xQ6XhGvukeQmQ2Yp/WZK5Hbdu5mavj86q6QgK91bdHlW1a6XS6bIuwARRknrjp0pcfzvUvfax42qB4HrW1gB8QnrSQpQ6AYx/iiVtobo+SEXXJCqwlF6+T6qgkWVw8zVnbZy45kK0OWRcGrJg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:30 +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; Fri, 21 Feb 2025 08:07:30 +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 v3 01/19] memory: Add permissions in IOMMUAccessFlags Thread-Topic: [PATCH v3 01/19] memory: Add permissions in IOMMUAccessFlags Thread-Index: AQHbhDeng2anJ60rSkqnEuIWTEDQ7A== Date: Fri, 21 Feb 2025 08:07:30 +0000 Message-ID: <20250221080331.186285-2-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 9590c01c-cf27-4ece-4a73-08dd524eca0d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?EJ2hNfGQ+UOuABOzDz9q3Zc6ZW?= =?iso-8859-1?q?760/Xuk0ciU6qmtVIeqHZ+Dvd8SMmYYnM789vR5m25FFf++sTAfB9UeQy46m?= =?iso-8859-1?q?Vh5SwoelmhidgmCZCRJsex1P+5ZGvZjlIy3N0W6iV1fst9+Nw7zBmCkbDO5z?= =?iso-8859-1?q?//i6NVE/Zqss7hwXtWzjixpYBsIwwD7Qx6hk0YRGJask7aGqH+TIx5Y2s5Z8?= =?iso-8859-1?q?2HqUf4RCVr8tGVRG5OtDE6bA81WJpIwYKqHUtzFj7B4w1mcSn1e3g0t9i3pV?= =?iso-8859-1?q?skEUopEhaCEDcQiLC1BCVfPf6cDqP9K2g2Dr2G0HoVT2TxtsXWZ/IW0yMSJd?= =?iso-8859-1?q?hkEgNelBaquYgzB3MB4NCrMotLMZNxptp8THOX+haSVFhDpy2nYcDlzz3q49?= =?iso-8859-1?q?OnP7eAhLWDberAVyGJ6oBXXz9zjK0JqJ4AizEeWDNbOlz546zXjzuzeeJEh4?= =?iso-8859-1?q?RL3zI15y2SaMA3LFLHALkSZLR+6fkbeahKX4jwXgGjrQWmTXglDSmzNSQI/4?= =?iso-8859-1?q?5ej6N3rmx/W5eWwG/kWijR5YXK6l+cSQpZ8K6uBi2QBlTmeFX1vHhargesEj?= =?iso-8859-1?q?1zapf4Q0WnRPWpiqiGwoVxwTfVMp4GOxPiN6CbcU9PC05BUn+kWoUUx2oeDX?= =?iso-8859-1?q?YaZOJbsv9pBHDiFOTuaakDIYujh5wb12MR1HMzzRh3v0kuA3rNgdiA2d8zsW?= =?iso-8859-1?q?to9z2zrECSSLzpHxk7/SqC+hLQ65Pu5K3/mFRB8rP/wU/m0JbBmWePRVaayo?= =?iso-8859-1?q?Nl5DLQh4LcTpC1zN57UhP0Je+r4GAlEdK3Vh2NWt9YMMKOTydzIDX1kQtdp1?= =?iso-8859-1?q?NSiZkjLQmprMd0E8b7vsF1nQLurhs3k/ZDmQcUqpcXn89cVi2u0uyKjyjoUL?= =?iso-8859-1?q?Hip60cp7XZEDx46zyznyeA8OOnotOci4a3tsZ+oDE54+3ntSVttznuMz8C8c?= =?iso-8859-1?q?GPgk0xWxbmVRKLj7OUijawo2IC3KJc7dGm49HnPCsL9z2yXVwCs8D54qoFhs?= =?iso-8859-1?q?7DED9veUiv288g+JWsQeR2+3HqC/pn3NkkFmbAtQmkKdfKiZyIlwJgREwb6i?= =?iso-8859-1?q?RUTpC3vmSpIKJMPlczPgdpoHS4RswUafNOtPqvxMMqDDyvoiPuo2Lrgou7Fy?= =?iso-8859-1?q?9jngAbDdQ9GDxc8dW4GlFFuCwqUAaUD/UDcU3onLRWQX6ZRfUbCf4RviyE7m?= =?iso-8859-1?q?D/h5U/nsdwH2sDomRPjj+0cuH3IZ1SwTcfRo2d07+f2CNb6A5wwudZkyQaRq?= =?iso-8859-1?q?SQTmJF6GBmZR22EnxaquwvkXH3Uo6GssjPD40HQxCkTnkCtjwVEEIuM0IQtK?= =?iso-8859-1?q?VOPogzv2dBLuA9IqT23ppxz5Q1iJM3Pz/RmD3ziXA275I1mbEsWU/xKjSNQs?= =?iso-8859-1?q?f8u/I173W3FWQgoRhBcjWher2YSeR2m3AmPQACcbR99lvj8VzTSLScHsyJv2?= =?iso-8859-1?q?xvjzScw7g3OIJhvv+q6XxqgwcRl9q7qOTNVSQV9JWO2YOQTeraoUxeHTnZUh?= =?iso-8859-1?q?bE+PoE?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?r3kymrEcMkxkXIk/QxNLgYa?= =?iso-8859-1?q?Kw3bifiG7y4T9tNmHNaM8rcoj2h0/43JwnWmw0RQ1KkzZtmn2tlIQC3BL+jF?= =?iso-8859-1?q?NkH6WlHEhOCRSqzo5aLO/qN6757vVNXQFKk1tU094bNGQt7p1sk1CvcJ6CnG?= =?iso-8859-1?q?KO+wlv42DQtYr3qaMmVJwQDeTKpB23k1UjdO8e4fQb6S6yudPy+JRZjpEOZI?= =?iso-8859-1?q?8UhdK/wgjOqDymqAFfyJ0yC/uZFosmrwSNX40tMQdzRHC8RUC7ctbx+xMRwu?= =?iso-8859-1?q?2mvtmCVsnGziAErJPTiEcxJSzdhLOgEokdGOW5kDHwdCogn4DBYJTbCJ1zzA?= =?iso-8859-1?q?m4cUmpcPRWu4RS/p6WpishnX9RsjVqtoGahzr7l9JX0YCpHCqS+7gBgwnbkN?= =?iso-8859-1?q?AKNlzM0Lrp+YRZaccEWvpDUzNr17gCmYCjnPdTuaqEFcJQRn4WCmSCgHUlTM?= =?iso-8859-1?q?mJAjAyG+NllPPhxAWaZSJnlb5IpeAUyR+1CZTPWqUiJc30eECQenzRcwBFuR?= =?iso-8859-1?q?HXPmiZfDuF9vkCBVfm6N6gRcFfLoxlTdCPD5/q76HsloYqTkIF8fPW9iz77s?= =?iso-8859-1?q?SPRPbnuO00dtkN5hQwpNe/DMsBC7q0qoV8F+bVKDM0cKyIuAE1LfurOSZedl?= =?iso-8859-1?q?lHxvdXp7nhFxV474KRFJ22g/Y611LM1F1eMPi2mCvRW53+H5fy0JbzAz8twS?= =?iso-8859-1?q?kXHWyu6F0ek0i9Ozl5p63Ls1zS8rbSG6qa3VpR/3AVFLwFrJW1Xf7VlJMoJu?= =?iso-8859-1?q?4E+XznKFM/1h7jYPcQdgYf7nvMcls4B2eRxGd1HIcrfrfKUpqF/26egc4twp?= =?iso-8859-1?q?vHvg4cMHygljZjiOqznixGFch70GjVwp/thNGkTckBtdvZDzcQoGhcktr99+?= =?iso-8859-1?q?nB2v46dlSK0GdVwP51Ma179pXpA0FibzSoFeaqnya+aHLklkIZ6ZG1G/thGz?= =?iso-8859-1?q?CBNU5v0R8mmcz0U+x/vVRbF5XKqGxomTOccwgaqPoK/WwrXWOX2sWFAXXQw0?= =?iso-8859-1?q?fRdOqC5zJluNL5Ray+9fGJG/pznADMUY7cCZE919acrk4S/e4tSIW+WuyRgn?= =?iso-8859-1?q?CrZtC0jjkZRCzeupmeMW+C1JH0vtWwgKm13U5e6NZCUhgedfYeiRRwXPT/rV?= =?iso-8859-1?q?mIBbVAgJcBQgBPXa654946EhWX+AD/XXNPvgDe2m2qJ7IY/+dUlFgQ6VUld/?= =?iso-8859-1?q?35YyEZXaXzcYYKlDG6nht2jsqRsfe5zuvBHxoQ2V4XbMhc1Lja9zpZOrGO0+?= =?iso-8859-1?q?AdSCfq6qLGK31pmqQCa+iR/GoH9Q5RF3l5zhTcpOabfvt1Phi/aaSGXIzBMA?= =?iso-8859-1?q?+YS9cO60yCEo6+eS38fCyNKCgUREfvSbg137WMfUnjRS22M5OiGTL8O3pbk4?= =?iso-8859-1?q?F6N/YFWq30+/5eXYL0tppx/z2WkHYYTRIbZq1Y9dsC2oqqMe3+oitRJ1wqo9?= =?iso-8859-1?q?aFjzRLvxHU1LDBah+Je+7+TQ7Dk9xiRKx+FjUj76RMgFoDV1xlTFn745/s0R?= =?iso-8859-1?q?kwnsVGPBRt8c+xRPbIqRANqgombT8UGXDs2EKBY58vmwRLYKS47F95e3M84S?= =?iso-8859-1?q?ABJkHf4vluk5b4PRETmSc7U3Ci7DTzcQmJpuKza33tfREl29ItKSDQOOl9hS?= =?iso-8859-1?q?U0rlj6LtqM7tgbKnnik1sgttqVTewI3cwQ3UjplpVF9Dzq+h/tjLOt9blSdU?= =?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: 9590c01c-cf27-4ece-4a73-08dd524eca0d X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:30.6985 (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: CKyqHA63sbAGWAZN6rBW8ykvmP3JGabtDh2V08dwY/i0rBOepzgMNAL5NQhOL3djgfSZ7f70I9NpbNJAIxFxka6O90EP/I/8qNw0wgzzrmP6IqgLRPyRMBCCWbCrmB7l X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07:31 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: 13984962 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 9847AC021B3 for ; Fri, 21 Feb 2025 08:09:35 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4T-0004WR-8Q; Fri, 21 Feb 2025 03:07:41 -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 1tlO4R-0004UT-34 for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:39 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4P-0005j1-0I for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125257; x=1771661257; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=uJlqSs57TInsB3tqU25LwXRqfzPv1aIxe7YNYeKhHCg=; b=PC7H7/z7M0qqof0J788liU/QwDyxSMNltzXgeq6TvXajEjLiiwfjk5nT NTpTCMFY4oH0+uXcuGXZ7qgLgQznueCN7TXywuBaBEw96nuWsXsGiW5xd ST3XSz9Mpfl8AjHIwgcNVVrlDrbXsXoiHYvYWpgmDHKMhfPGv9qhtksEk RjD2CRrfEYbdjcEF23wE/rQvUOrGHEuSXPx0TXVoe7lDxQNrWoipOb1bk 3vyGMRlKCCHr1dxbN3IFcZt4/47Emi4ZwZG3aZLxw0SVSHu05Q/38Q0mw 5g1kHuxQaCx+eF78J0lOyZyi0BFZStGpqnQVBBWLmgn/8kAkcy6m9geoD A==; X-CSE-ConnectionGUID: Aa/kJQnyRr6ok8JBABN14A== X-CSE-MsgGUID: Nk9EXkZmSqa9oVUquvZAUA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394121" X-MGA-submission: MDGS21pRw7xvuObjDLnjVMH4eEXuWpMrVF5DJoi0VZ2hv1/4pYWPbQMKxV2K3/GiQI3eRDQl8nF4LSWbXONd607gcUdvpgfti88HxxG4K1zKgj8vRiMUW1zIDjsvloPKGZtH9kf2r7PnTzQrtJlWlg4VZ5ucYTuDlcY1ZQXU11qb3Q== Received: from mail-db8eur05lp2113.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.113]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:32 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a2UPtTCcu8yLIAarIyerJoufRqbDQTSxLzY/lPo7MBogdhA8qG/ocXH80jJo7/vPUTEnWAhy/EgtW2xa4as0VgUFJeQtI4eEE6qUpqtbb7Uj3j9xSXWvYYprmE7ztH9br2pZUPwFlAlTGBcD9y39JYNu2/AqxBTpxKQNx/ZoPaKZpxzzVjruidjBvSlYvu3ljyTuPxIjtCS0KPgTbpuQmAX8rI+2MOaDHFA4nH6FcKWjUN/BKsu1Qmc3gDZcT6uixGQPMQJhW2aReeW8auNLqFiZp7CtwM//T6yx+GdDmLH+T9O36QRv+J87MkR0JxV/u4zgRrVA0ronLqXOtW1lyQ== 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=GIO8eZHe9gEWB/6WcFze6IREh7ylnYez/tFwrdOXZ/1l/05Tnz3UfgHgGo7c1lQzKdLVDk+NiRTZwiP5osevV52rvqI717rbClrjb7ZE8Ys61idnzvUYpeNkQh+6rN/VjPrzNu+PSdD9nbvRjF6nX4V9Z0gDz/GMT9qd6+p06hKsFEnqzvBq8exd8Dfpwe/yzMVxh2FNODFe002aW9YeEd3fJk+9z4et2QvbYvP4IC3aYBCPjPnmTznGknWNphvlOs/vf6kzD4ZxhwQzhNR8+0l9OVZjWdt1xl0942CYh8ZlU44jjtFc1CPTVM2lDs0vZ5cbAGtRHUBQ5fr+OwiLdg== 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=kr/DZzJFarn52nsxtHuH4UJ0omCKzW7fQycnorGUeTbDEPkBBLdybnIgV23LV1JB6IVwFlW50enHMODBBtocRCYhjXxayHdBd1xDTtLXoYzEBJu843CGaHyhyhS7lwrKZNoVFLurM14QkVkGp07VCzb7Gc/uWLSG1KGYUmZnoHcWcm69QCpw23V0Q43Xvu5U2BzPsjyGdUZqlN1KDmz8UR7kBLrpJ5buuneEKo+epynweNOlLa19/NxlSyKrlBv1jLfOIf3aaup3WRJwi51djrDzopDur0Ppbil7gXF+wCgSitE9BQ/J+wKRe7vqWUKm8LcEp2kG0AVfhSXCFeYwcQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:31 +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; Fri, 21 Feb 2025 08:07:31 +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 v3 02/19] intel_iommu: Declare supported PASID size Thread-Topic: [PATCH v3 02/19] intel_iommu: Declare supported PASID size Thread-Index: AQHbhDeo75NPWXjMt0eB1wluCkUGww== Date: Fri, 21 Feb 2025 08:07:31 +0000 Message-ID: <20250221080331.186285-3-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 389bdce0-29e0-43f1-e511-08dd524eca86 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?2v1PdIfZw5w/bBHWzVVSQvA6Sw?= =?iso-8859-1?q?s+TFHpJh7igsJEgAz/2qskcgnNt/mbQ4O+Vd6lpt3qoeISOVjvvjHghtgqpy?= =?iso-8859-1?q?Br/ZBCk41efS0n1sGu81pcOPrKlyhbxWx2mW7WXjmkhjwX9KnFOU9I2aR8ep?= =?iso-8859-1?q?Uy1zgO4eZwn3sOoQ0NcJFEgZS+GBNISQDpTxcTFWlu8cnp8+eUAJrq0qs6RE?= =?iso-8859-1?q?ID0+WNnATzZWsjD9I4oqTYw9MU0g0p8y9hmsa36ngh6qGXp378PpU7IN6Omz?= =?iso-8859-1?q?wMXM4bLXmWz9aTbHsJRQ/XWnI3A7OHqkmf+nVBSbAcuIBQp4JNIM7lgVG9b/?= =?iso-8859-1?q?Zr6LA36P51KPDL/fz/ZqTNaYWaYNhZ8UrCpO184sakSbQ/PemdxHsDhKzQiz?= =?iso-8859-1?q?1mVvdba4VxHR9AORaZNP2toPWXiDiST6um+fcGo672Dkaocc6Uexto5By+a3?= =?iso-8859-1?q?mqPWCvsZD9s50tR2JnliOyOKIhWbuljyjnFTMnRO705xMVcy0b8GVKBZkYK4?= =?iso-8859-1?q?65OrnDGdTLJjl2z3YMz97Wzwt5VFvHi5G27MhCzzFcxJ93GgvVEqWeGfiP6N?= =?iso-8859-1?q?IkpcPNc91RwfKlxy0njPmcos7vrAoMSiqBX65kWPMJVIS6GHV6mnzxlqMy+A?= =?iso-8859-1?q?VN/o/UnY3WkQ4xGgsYPG72XwV58xkDjgPuskx47Do9DXcNOh5svXsu+DsaSA?= =?iso-8859-1?q?tYL9K+HMsyWxFc5+szStiNIMRuST4oKvEj0i36pinXvQO2jAGuVzjZz5FYsH?= =?iso-8859-1?q?rDktL937o1IyulSqIzGr35N0RiHZVvjVgRIjtCA78ImWmtk/f6pj9A+9fpI5?= =?iso-8859-1?q?+3w2ynFALE236ttlK1fPGuMJg4XwYNmEHAvPqkdQamz6L+3SOEh/6pUTHNtx?= =?iso-8859-1?q?dY3WdckhGZ11b/+iIepcVC+8kFmoVbZ/Xi9e/Wrp5c4v7x6I9dvYqJnjBmtY?= =?iso-8859-1?q?D8aI2eDy4EBt6iCIOBe2mThAM6lMJfiIrxAElrdT/kaEKFBaCV6EwrppOTsz?= =?iso-8859-1?q?APUpQ9LIv3RsfgtRZ4pkPBPFzyXK8iZBAElz86bFdWdr96kAfsOb1Iu0h8Nc?= =?iso-8859-1?q?55993IzpHz9+hu/xdkAPktJFytikxP+ZLDBwyXKOR6Wph83bPjDB+nkLAUP7?= =?iso-8859-1?q?fJFPJ0azosdJIdid53m16aKVd9tz6GknVogktrO74t4CKRpVbB+SWf2kjo5C?= =?iso-8859-1?q?GoQ0QVx1Gwcz/u+dqs0jfYn6YILSPnwCNV1m1NqbWgnnc+RQFsSQj8QkruwT?= =?iso-8859-1?q?80uczGrlI8XkGsJZKHwxY9aASaNtPIlzoE9Dj8bUiPGP63qeVT2wN9Zhosxi?= =?iso-8859-1?q?o4+RrPJaokPz67ET63X6QubjXr4XKNawXwOlBC5M+OoKc/JcsVXA/UWjIQaV?= =?iso-8859-1?q?0afpu0mABXndK1B+9pbQ90SKwLpjmHhF/GXdaVLsIhdAbUq0C0NGRJ/wRgT/?= =?iso-8859-1?q?iBWZFAzvXEqQMNGGYk/LoDfyFdFahr2rzZUynB4MChJ4w=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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?MahtzD1NaacrFrxhc139K3u?= =?iso-8859-1?q?YKKaVbb1J+konL1XEuv+d44FdXE7y2PlwumagFV1ApBqlxK/H2Fnmj+wfA7I?= =?iso-8859-1?q?Ur/2oYNIA3qBRpiBNHdIDMQjHOTGKGbWGAjLkhmtcwGE9pSee/L8iFTOQqaJ?= =?iso-8859-1?q?4Gireh5F02Aqq5rKTa8D7w1jBuyxSptZRJGqsMXDf7WrnC4YANoRdKV08a3o?= =?iso-8859-1?q?GpnQvOfUwlLSUNF11vShMw0+S1H32Ful1R/XeG2GOrIm8f256ww4WIkchpAy?= =?iso-8859-1?q?MSJ0vJUmKBv9sowyrS5zpUG53+qc2Ts5rzrAIF4jAc28SM5H2fsdZmBkOlRV?= =?iso-8859-1?q?6LNSuWub0mJT+jU4OoDHGOIwLtYKvpVwRvmH0bpJuCecRWdr3Zu/WBPzh0Ha?= =?iso-8859-1?q?hUZkoD2VdEMSk7XjBd1bsab+fieC5NbF5Xxni50tPkl842ypU7gZorJNpTrY?= =?iso-8859-1?q?eIoXeQquvUFK7Z1xAxdU2bDeBOCszSWOqw03yUKaBCI2TE1suaUsl3ToRlHW?= =?iso-8859-1?q?U6SgUn1oQ0vXiiRCXkrSqeM5zwLj5yGp91+K8KcsKVVkNDj6fUVR+R1bghya?= =?iso-8859-1?q?62OJQMMd90ZRNza23cE30SXS9/k2fY3clGQgsz4EUEbJ6fxqHvmTAO1jBxn4?= =?iso-8859-1?q?xMKLerrYGBoyHy+8qvZhLyztJWms1MzqnmZisyQstm9qFLuZZahgsITG3Djs?= =?iso-8859-1?q?UUYg5jVRtgJoMTGL8i5+LMRKZzdadKDH5cVSOVyHCl2QDDv+KG4UfFYAQvpD?= =?iso-8859-1?q?q+p66t3/x+eO7Nl5J5Q0ptpUCT66REhuVA9iOfG3xWoxdaWTxWRrDUWuhIhD?= =?iso-8859-1?q?xIZHnmo87RYr3OxiwsHDQHyhLB6T+PSBqr/b53qjdZ2USb7IV+zDkDjyN+OE?= =?iso-8859-1?q?YiAs3iHqPHkx7S1pVd7Ey7/w6a8PSAjqnhLv5BuLaixfzopdjd3LZV7hwTh/?= =?iso-8859-1?q?tPFfrYny+SlYRWNmpRb00BYkkXZOE+pCKgWJW5DLO36NXwt+vp+aK5zvI2o+?= =?iso-8859-1?q?WQ2MeJOTbPBISqJxYaz6pojN0qwCvfYt3sB5aY50IjBaIW+NE9oFo8KSrT0E?= =?iso-8859-1?q?QBIDQ98mhZFnb+aDhaDdyJqxj+ZrfmVtnDkTkjEwkmS4BODfltKYJuqLrRDN?= =?iso-8859-1?q?GOsMi8odIsF2FLOBNGYx6JfY5QYqeg8Xf3+u7b7xdRjIC83IirtEyBCi8KOi?= =?iso-8859-1?q?GtgLU5cPCsPqhiDUYH9cHhJUcpfDhBNOrNGIMOJ/iAjSBW6XGZPAeb84uuXp?= =?iso-8859-1?q?7mmqSeKVmKn7E8InKqTCrTUo50WqUYeD5CdsK/FC3mChAK3/FtJ1BMdaYNDc?= =?iso-8859-1?q?NmzzJ/X+YP10vLCh6IV5Lu4JwYQC67TrnxQne+2DodSrXa9C989ElqmAoRHn?= =?iso-8859-1?q?UAiw8XNUH0i8Pl0Ef4sKfgYCAEGttcHk9qjwpshEs4+sGk2IweVNdWROEyIr?= =?iso-8859-1?q?HJ3PO8MfzhdHcRU+luNHaN1mHj3vMld0NalVr7s5276dw9nq1nZxROm/JaDz?= =?iso-8859-1?q?K1GrgWHEt+k0kpJ7Jdepcuu4iEUnoWgxFZ2M/OzxqhHJoqbdNBgVQS8xBSj/?= =?iso-8859-1?q?3g0ggHThjm7zY6/qItcG4FXzlIHM2rmKlWnLApjBiC0cD4dcUEDobQjgubUw?= =?iso-8859-1?q?tzqlJB9euBi5n6qKudBJHB4f21V5LHVyckeS27XXtRjywyfolZL7xpqNRXkw?= =?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: 389bdce0-29e0-43f1-e511-08dd524eca86 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:31.5181 (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: zoUjm5f2HjvwuSK6eTFTOq+nJTfUman3mQw762QJ4ujUj7N6WhtiTeTywdmnGKnF7aKz4vCeJJiLQdp/x3+JI1oEUyFif989es1QdjOTHvrcabOnZdfPcqC3bDV0AocN X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07:32 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: 13984954 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 2BAAFC021B5 for ; Fri, 21 Feb 2025 08:08:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4U-0004XI-N7; Fri, 21 Feb 2025 03:07:42 -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 1tlO4Q-0004UJ-PZ for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:38 -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 1tlO4O-0005iz-JQ for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125256; x=1771661256; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=w64iDFlh2Vz60cutAFr32ZTAug7hSDs8iVKBYK9r9f4=; b=Coi1J5jjc+IvrcZFd2hasl+e5t0I/HIs0Jwu+bkjZpqwju+FPFS9mMfh N+atWC0NUrmz+ttNQF+TuVtrYihf2BdyihBlwqB7Pg8lR42Or7mQ0jDag uBlGvPe1pVwKqLs17GJk65qR0QTTwgu/Z1snJLl1K4bDB7gqul6iP6VEC exZWQ8HF3DEsH/3H80HwVRkpg/AfWgK6KXDOm52A/zHQH1oSrpHIcNMBx PRvxvMXQpVj1qVXgYLaH24Ih6fBtB4Y5KVAenZ0s6SyFAjk9xW+pqOw5m k2p1qpfXofqj0CAPUiGZkHv+gBtFRZAhAdnGa6dXHs6fr0oKiCWdLJ2Ca w==; X-CSE-ConnectionGUID: /f5uTNVYQ8u1gQVeQ6uffQ== X-CSE-MsgGUID: /BxQbDuFRPaXGQv3fE3pJg== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836639" X-MGA-submission: MDHNXY1GDZoRGV+OnAXq83qWQnJxCzDlguRgPG23ITnU5BM/lVB2ENHQrcL6pnCwMH2xyBDbtr6MZo9+685+zbmq4jcCTTWYjEAvvkIaqaRL+aCy/waHsic5TYBip9yyEwCKoKMiVCqobLDj/hTGlwuWVtTmpJM8IEK+81uzuv9RhA== Received: from mail-db8eur05lp2107.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.107]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:34 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FXXKVCqU56Ma12JfXxj9qCc2pW0KBJ4aDFZBy+MIdZxAUnR+fau58xuskMQj4bcCwoFeoUQFZJN0IPzePBscShVlQZ/PpMQNgRRnB7wOpJa9UxEPD5G9PHHuUn8i7E8sn6wY3U0YUVeCPXs47SOWb7M0BGOznBeLHVfe5B5VLB1MWzFgbZ6OBddScayOJqcUFkmdZ+W62VwPRZCTNC1wsz+W/L7H4tWXKu6Fa8pXAy6ae1GSp632vSGej//9LY8BUVfROeryIC+ZBWNowIp/gVwG6HWmAId/yVRNQhkGB7XLJb1dg8rSx0obE4vzTAGTGARylaGa/SdryHHP1ZR5zg== 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=aIt/JKbNzzYoM3Kh01ajyde4GLuhwfsd0pzECgQMhEzSQ1NUo4KmBTmPupV+AIgRkQcO5F9KksuC1LqmxRkEzghnNtCTZEgLo1nXVPBvn7iLgT7QD/tgHTW/EqIfs/h0dJ6OO4sNTn2VafD2XNYBFjTzkd9kAa9C9CrfhJ5b7gghxl8KlkCkpSsrjGCB364/uYEtxic9rtGOqIYYtLf8VRopD8stTVqx/A4BekmIedz9z81ttxasIjfbd2XhrfLBKNFaas2BtvinjFsRp0DUmGGZSz+PR3NM0eok4n0hAZUmyEer0x3FYjT1fpOzQgORAXbmzRKUJR0Nr36buyWQHw== 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=HSr3vQC3kMM7OGesbMkRGzD+x7D1ok9WffYPsPIJbFmlp7ZhkwzmwL3Y1Chssh6RHRe1v1i58pv6mraeQtS4MC1L7FeAFklH1+UqCsTTatleiUCveDBF3sp50AKklAqvr6fjiv8aTq3rdhgFWob//XAIVYNjBsym/4U0OotnlDLVXqEHzVzFZnxrn5Rzw+NlChhpb4sUt/IEPgzXRWkKPSs6e6Ee/TmeCFunuAuY8Xwp8wfLLI6eeKgltpX2IhCEArmEEzQ/SOBJ040HYezJJP9QDMkwomAmwf3ltnTjEjb8XPib4aO3sUHYK4i+LjIWu+cnftWGt6p7YsvwMAlIeQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:32 +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; Fri, 21 Feb 2025 08:07:32 +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 v3 03/19] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Topic: [PATCH v3 03/19] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Index: AQHbhDeoL7xim+sjokSBg2RXG5LmDA== Date: Fri, 21 Feb 2025 08:07:32 +0000 Message-ID: <20250221080331.186285-4-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 18eec6d8-e1ff-4788-36d1-08dd524ecb06 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?0lBnrwvGk6nVpmsaOEzCZbyAQA?= =?iso-8859-1?q?LREc90pkhh3L8MnkMBJ0Fl44w/RLCKTVz0i8jJ9SRpIVXnhZtO25RneCw6uc?= =?iso-8859-1?q?n0fyWThwFbhMaXGtJLndQaNvpLzUPajtV96g3Lh8CkldV5irjXaVkC7IwexF?= =?iso-8859-1?q?8aPoe03DKPx6OoOKq5Y2ImOkZEFCDySe0OfP8yGDQA0iqH2mFZ4h1SgmbHc8?= =?iso-8859-1?q?oKbGk1rEOJJ3TtQkBKOKRreWLnccIcvMdGbo/cgqTUH19qJUKTmmEsPOa3IM?= =?iso-8859-1?q?ZND6jPQ20HfMPfHu4LCzSKO/rHnokKEMHyNLLg9no96QAr5NIdMVs9kTTqf6?= =?iso-8859-1?q?nIdbd38FuWf8yzgBAM900085L3sZler3Wvu8O50WdNmuLyy8akO3/BQEz1e1?= =?iso-8859-1?q?1qA++LWeCO78N1YR0/YN7YBTyrKuuB6MEIIU2HP8cbuXB1K9bn/kRHQ25vHW?= =?iso-8859-1?q?dV4SUpi4N+fw64S+pGZ8lL1eSxxXa45bwwW8vZK3ZVHUYutnLsR7qImaDOh/?= =?iso-8859-1?q?QQtAW/SXUIJQlY/lpdGEdSRSTI9lLDTsUE8/i0dX6KWb8h/BlIoIgsoN2Amw?= =?iso-8859-1?q?UQkC5sAuj0C9BtAS9eeej4bXSsSee86rP8zus3Cjbok8OzCLULXm3lGjo/6V?= =?iso-8859-1?q?lfQd//dPHft1VwhqcqVaRy1QVvPBPlaCMd/I80CwjQb6oVXiJhkF1NlXgZ5A?= =?iso-8859-1?q?dkAP58vvFyU3aXjlPVz3Q6smdz4xrgCAqLsjGLPC7NVjEz6Kc5YAYrILO5L/?= =?iso-8859-1?q?yFrPyBwxqyF3lbeqOkjJohHz78tHqTW0ZhIt5qoJ4YlrZVbMwJXNh4oOOlKS?= =?iso-8859-1?q?V7duGcrxlwow6fYEUSbXzEQpZftMZTENR7dMJIjRJYJB0iBS8V0F0HLuLjla?= =?iso-8859-1?q?N2FIuI2JFn7st5r6wVCJt63+mLPwyIuPYJR2qHC1GORLYuqBoVmuVrbl22Hl?= =?iso-8859-1?q?unBve5ztXb0Y01C14+s6RZl5c3Zszw4goPnKnxC5qwfkgkFpkvC6E/C8TmfR?= =?iso-8859-1?q?TzvdX0EmXKhYuIbIRYGtl+Pbb6gDcvldoSpo4i0msNy4ChtMGg2fjg1VBqfi?= =?iso-8859-1?q?xWwBrvVh+r9jnPpdbRsJxWpD5yNpN5R7+2BuTpirGapLeauC4i72K3Tk5pfP?= =?iso-8859-1?q?IOPBBxEUlDh+kl8HguhBSg7u/qe6yYliyGzruBpPELC/4sR0sP7ZgjPMv0bG?= =?iso-8859-1?q?dIG5gWt746m9YTpKuzVGGsTOuMXWUUNIvHRBqqKxRLsRgxMoCQ9s+RxCS3sT?= =?iso-8859-1?q?rpgom+o4ufs4/XD9FyNvnjHFQbSIFGoLdY4h7QorZw1X5mXjg7tOLt8BY/hY?= =?iso-8859-1?q?3qpqgCQTHELwedUqw9yivGUeaog/LyZv/zW3BuMq68Nygy1a0XEe8c5vIo5l?= =?iso-8859-1?q?u9bi+rdkN03FJIWd9WAmBxzxcYgLoCTxH30WUjU3StqmEJFfHTRcAPf+X6Pc?= =?iso-8859-1?q?Q9bKyUnIoEAUX0D1eby/26slOmG1e3Dt/VDxrC5cDVrQ4QHDo6NR9SNBfsy1?= =?iso-8859-1?q?uDC2NZ?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?rb8NIDKaYok070ygsXIibTI?= =?iso-8859-1?q?qpbaWi0G4kN/pH2hGhmFG/Dt3PfPvWOIYdWKATrM+wzdm3KYb+/xDvXTxwjv?= =?iso-8859-1?q?byhr4pWRPG50O7YSGfFDa7e6rtHOvfx0DlICuFYxKjbCvG8nPkGlb6DE2VbL?= =?iso-8859-1?q?fK/QcIF2c0cgNJmpT+OQVSS5yxjfTY0ZataGqQdbvHq5FcgO508b3nV7LHTa?= =?iso-8859-1?q?y1XVUWNo3m2qW54jUjU+7eidjkQANf/OQ/Fr7Rp0jbtNYl+pe6vEhdLk53qs?= =?iso-8859-1?q?VpeaPNBDyg9GjC3MumHGfv5Pot1lA/JZq5l/SLeR7RhVRqmihd70+i788J53?= =?iso-8859-1?q?xxd1YHjgw6HrNuVRDGTt7VOeIX4OZ+wBd5aVItCDFzV4YvNaPZeVm+zkG1Pr?= =?iso-8859-1?q?xto0ahWFyrflNwZqAR1/3rh5LVBQGTBx0KLHxUduLrcvWfIHZaX3AdMniH2v?= =?iso-8859-1?q?hjxxfx591asx9YTkxpsn32mNwWfFpFfXE47sjzU5sjkkxpA3xR3Vxd7am84e?= =?iso-8859-1?q?+6muaV3lgjosGMJYPcsrfkQbXfXglZ/D+AbhE7kALne+YmpAh4UbCRQ244TK?= =?iso-8859-1?q?Gsasb+4RkMrB8PJn4xXNO2DCLcKP0Qz0/NrJVEKZ7BEzUS7Fic0gfoXB8xSM?= =?iso-8859-1?q?JZF4KQHueJJAXzp1WyazjmJBZIdTXZIZYIfPYww5bSGuEjrxVR270qSzVAwM?= =?iso-8859-1?q?+Jw5ADPXnRPs2s+LqI+0aTA8gCcPyfkb0qXcqDNKijkbrrUiZ9gol0s9+54o?= =?iso-8859-1?q?qSfe2pFQIpGKzu/rDgIGIAf7zwUZU1KG8tD8S+zJYwk541oUSix1cJL658Jk?= =?iso-8859-1?q?dgVrLyLTARvxsNZ/1HLiJybwtXo0B6VGL/gJ+OQS2vLIABWH85lpjiBK91hn?= =?iso-8859-1?q?Boj11p8XFMZDvIhd5K6h9ahB+dxVYnKLY9W5gnEmjAmM0Kyh7C21R9bD8HvV?= =?iso-8859-1?q?wi/9zffKsHMpCqtNMlluPbiHc/MYf/xWXEoKXKniHvkE2LbCyAJ/cQ/VzISW?= =?iso-8859-1?q?GEF3YXG7++tMOyikdRRYvlWak5V27lw5gp7S5bFzw/deiBkHyk1EJWBy3w9q?= =?iso-8859-1?q?+N3iVh7RcUb7B4GXRtYsPadc0335nWOoumSiZQUvyqXPVz1hOYMqHGR5lsls?= =?iso-8859-1?q?iiO4wmPoQNjuszfIOxjV82bkwB1AI5f+/Ny8jUWmLK+jOAvIlfh3sXH+7GSS?= =?iso-8859-1?q?GuTkpvhONG7JlGHmpe3g2i6e465oQeadwzZ6MKe29j7AkApMjLhVaPQTqv/j?= =?iso-8859-1?q?ITTrWIEDh+0X504hjnJWEaas/4LJB71QsmZyjg9/JvqGXuEajcF75RzCGDFw?= =?iso-8859-1?q?UbLqYjooJNLpA4riooZmfLxvXFqrY4bnNE3RxsgU9q4zjEG4W0TahhnkZGuV?= =?iso-8859-1?q?aG1hGB432hyUusFiWwFpuq6pUe4dV6MK8ZEJbdnz2bvgMtdwIIUkSHSNw+vf?= =?iso-8859-1?q?wlZAc+3VAI6BlPMoIGKJcTOH1zJEyVSxyE7nCAAR4QrpYXoSovYy1fIHNHN4?= =?iso-8859-1?q?cfALWT5zr5Em+VQ1rQd/qzGIzHMGooZoTXcKYbtAojBVxgdCh/T+9do0wJfH?= =?iso-8859-1?q?LNFvsLtzb+Dm3LDesw+v65Jfj6MJ3M1UVS5FgB7eRxo/hxLJQY8YfcsaGP3r?= =?iso-8859-1?q?6Hclyz82kcoagPKyjMQzEvWFMDBVBkrIP8K2IH7qMQLQkk1j8z9MrnO/bDtE?= =?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: 18eec6d8-e1ff-4788-36d1-08dd524ecb06 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:32.3566 (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: pYCgSKcYs+8ObTbOqffyaW9bbYsBYb5cMDNjOe9NbG33aGvkBYAjzd7xt9/OSB0rgqIEfTnBho/SGzRVIyurU+9NcWjGIMo/q+JnCj541fXKSA1/Kp0rSCRzs+suvpZW X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07:33 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: 13984959 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 6489FC021B3 for ; Fri, 21 Feb 2025 08:09:07 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4S-0004VL-Gh; Fri, 21 Feb 2025 03:07:40 -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 1tlO4Q-0004Sf-8H for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:38 -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 1tlO4O-0005im-Go for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125256; x=1771661256; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZMxFNyn4oXeMGzshPyBmqXxSzbY8yZSu5H9uG1CqPCs=; b=fIvdF6ECJmFVn4PWxheAbzCYuz7/sw4iL9+CjEKHOkN+iYY8vZeG1U1J wftXyIDSx5M50VuWf8eoCUKAl9pRhouhbjNsffIrGN8xH2tcCVM8BhMLL QX4SfzQQiAocDLjFLsJHEYcZ8RrtRhOO6PbWUhikj7xJxG9jQtXHo0th2 Sdnsu7sFDjXU1Pxi5jj1DrN00JinUUw+II6X9jG0K84xbxv2/MYeL+D1v Arzx+ygSsH3O8jxxqO2UYK7jUNylhlBv/aWyb9dOOKq10VROwadQsD2Gk d1ZPfF6BIWVfXxCNLRNOZQhPGI+5kpm5ylWoYajjdsvty6dpr6funx4Fp A==; X-CSE-ConnectionGUID: 3LtoQZzoQT6ToRmd/HL5Yw== X-CSE-MsgGUID: d+MCsQJPSdq0W6LgHjDkoQ== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836640" X-MGA-submission: MDGn29/tOF6aBCGooyBxZBeQuD0Z3fgieZmr0DHy0IIi9LuoryWX8wU9srOvR7ozM8lA8ZpWOtwnwq7lO8XuVfYqwMZ7cPj3cGrjGW8pMmMqBk6cbQCuLBQuG/xn3c9PsrUBeCanhuEHS9UPC3XDFj1Wx+Mpr+JxWwmL+4hio/swHQ== Received: from mail-db8eur05lp2107.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.107]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:34 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UC658r0biGLVw+aJmd7NBqjJs31Q+KH4IQrs4E19DakYn/NrKJEn5x7xwgWgnw+y+Gv78tguPFal9ikQ4sJQUVUStbH/UNgyAM78NrPK63W0sGN1plOjHWv8VA99qTnrnQJW2QQWaRO7bsjY7FwzMCcNESedWJFCjdYMBd+jy3pmMboZTvfAxbo+f85Oy0G4Nu5Gb9K61TCV5VhOepwQ/HRNIEGVQnIKSdoj45gi6VUFw4MVI3X29IwX//cI5I70TDkhhYOFG9oJiTcImr0aYaCbHG7veo3QQsUcUlhoEebUawzpAcNh2NzAiH07dJQQjrZdjGvW/y4HnYa1OXmVKA== 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=WPuNSfnDd+5AaTBhT8T6zPUEvGadY4f5Bw5GZBRKtP2E3M2v8xEJk+/Zwq9XYIhGbPaywbnRyMd0s5SMkaPUMu1TEVSc13MuqzF+IryHQ8KpDTW30sYYlohFBDY0EH7Dz0hzTn4unhQj2DFUe16TJ2l1Dk6fs7KrATbqLZP3Iy7HTf3Rj7WL3MFEna8yLkb7z4r21G6QUQ/6b2sSFdlkENJtKxBdrFLehR8XjyEhgWJGBVBrXNF7pqiLF7g+j9XyDO2lCJrfggnJkX9N1WAyxlPStOD9JHjOl066WUA1Ech2KG0NIM+RUHpig/0LjXQPz1l4EED0Pwr9FfVHp7wDrQ== 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=KRdd1Ve2V47IMxawlj9R+8A0lEyRAQLooZGvCuFicv2sx3NtiCwKqo/w9j+BNMPupBEVHMNbDijN1XKNspLR9MMdjLEAcp2Ra6k3kybZnjo3qvcc9Msr4eIqzJkRoC+08UgobayTyPsCn90oGBgw4PeFP+7sLdnjtUWNsKtDK4WcokclXhrx0xsrCRZeq3GC8NZDiopCPjY0RAxoSof1pgEIJV5LvXHiGfN0pm+44knjuwedL2AwCng3weytPzj+vGz46m7Bzx/jRnqP8DlTzN4ephBLKEwLkaFh6JV7osYJqaysFjpzUWQBxnWFL/wO3YMRkqmy1zfh4kA5YL3OYw== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:33 +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; Fri, 21 Feb 2025 08:07:33 +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 v3 04/19] intel_iommu: Fill the PASID field when creating an IOMMUTLBEntry Thread-Topic: [PATCH v3 04/19] intel_iommu: Fill the PASID field when creating an IOMMUTLBEntry Thread-Index: AQHbhDeo2oCEPdpJvU+FmhuYREVi+A== Date: Fri, 21 Feb 2025 08:07:33 +0000 Message-ID: <20250221080331.186285-5-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 29c6638d-f168-496a-cf22-08dd524ecb7e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?YdZ7qN7yveVMAhxVf2x7F4R5AC?= =?iso-8859-1?q?CIlmgabJXlx21jZokbjKAi4lT8OFgpCCGDqKsMyZXYcuYWDkh9b2SFVmjpop?= =?iso-8859-1?q?XU7slIYSwKab62CLrVQjeA9rQ1PKEo5QpzjmtVSyyuhMx+MaE0Lc3m3eJx9H?= =?iso-8859-1?q?WfmPMPe5U+AiZJXK8ShS31KU9/kgMfZtfBzIHhp1xf6jGaY5agJCPx7fWxYV?= =?iso-8859-1?q?44FQyzku3KAjMG6N2M+N5ct5Xh1pvsc5DpdXYVu+Ey3vNdzPGBZ4UFdMpg3J?= =?iso-8859-1?q?vzlKsF+wH7sauEl4RNGboIQdFn5AWCUrAdTJQPpXXCMRbcnv9ifIfuI6aepg?= =?iso-8859-1?q?mm1QkD6TZmUBPDfLuCmSO6JO8LSjzucG+b9vmSEQAXxMNsauvGuJyp0RtQDT?= =?iso-8859-1?q?zvX2XmksUNmkcGHgh14xUqzXdXTiG2Ipf6K6jNRx5/Bhs2YHyt+t1JSFdtxW?= =?iso-8859-1?q?xLM1bX6fNxaHMNJOA0vtNgioLIDSEVYXsJvfiP68usl4b8uQz64xjK9U9xVg?= =?iso-8859-1?q?ahqE6Pp1f6RRe/inM8CripQeGOCTNnm2Ih6RxAaRwLG1Ji4A2lqatrij9EyA?= =?iso-8859-1?q?aPIKRN2vJrLa4gYzq8QiGedd1dk5dzizhlxvAqmgDCUE079muITaPEBp5HcE?= =?iso-8859-1?q?QBiiWDaj/8fj3adMPph34WG2t4SwOGIKCib2gDW4pbGUEeAAwxRVmGzwhBQ+?= =?iso-8859-1?q?le4TWfHhyzPDT6Tk+46ztVlg40LvPXZQ+xanGrMU3/NJhzIAAdh0jJkFgd5P?= =?iso-8859-1?q?GnaetZaEW4P7XMm37TffTRfDaCA46XUMFd3qN9noDXYPqPzKWc4EXDc9LGlu?= =?iso-8859-1?q?TEgZSelE3y3QEb76j/8/+B0HqhyDPjVecp8/ra3ep0jG+ayUH76vZe9jK1Du?= =?iso-8859-1?q?tgSOLQGKLCDh0WXKSxsQc8/5l/Ql5nG62Wl/FF5P+Uchb+7LzOwTC6jThsJW?= =?iso-8859-1?q?sTZpdWuJfNAsy88z4juSSWFbzTa50cdy7Il/5xquPbAV5SsSHyuk4QUXyeUl?= =?iso-8859-1?q?tEjtkEWC3hN7sNY93wAX3ns8iDRtuMEVBRR7HcBLOtKrgRpEREdAhpKpAzGX?= =?iso-8859-1?q?2lWWF8pyvNliN7zcgBT8rIYxVDDR5tpA1h6o/exotMyEFSMLlVkDbaF/Dd31?= =?iso-8859-1?q?A43kjKdZqSVooLS8L4HjS1EF09TKfvVXsnQtewgKQ32ebsBFBiZ8Qd1iRCmL?= =?iso-8859-1?q?ecHgWVUZpDHIJfFbMkXscL7jDV+f9tvYdGYuHwb42V13FvrYsr/j9roecJXA?= =?iso-8859-1?q?PYP7RGBB8PI+jY+lMZvMu7JmPOdK3LcqHlCW2Y+pOsx3/nc33W2bEHGe1Sfg?= =?iso-8859-1?q?cuscwViDaHvfCdT+XiHE/rXG6JUZ7ujWB4kxgMSZZH772U6V2xwr69OLk6ZH?= =?iso-8859-1?q?i5Ik2eF5Zhowjco9+Wu2WdILX3sLQBrTGdI0Oy4pTanYziunMPCBzv25Ux2W?= =?iso-8859-1?q?iC3A3FyGsN9yC2rCMooXpdsrblWanrEOkGTLdPwGFptZRm22ggJQaCRFhY11?= =?iso-8859-1?q?F/7FJX?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?hj2eMN7OJOuppLfewyEwPab?= =?iso-8859-1?q?Am52qTa6CY6S1nHEIXtemr0LLvNJv11on5A6kn+gVVSxFiYNkLjn0+8dka8C?= =?iso-8859-1?q?tZn2dmPZEkGv6KY3VndJoa8vuo6r516kSjqV0zpfpmNtrSMJHgY7wUr/yyZc?= =?iso-8859-1?q?ScwCX70Y++CxbjoVaoa+w3L526UDM0MyYtZa7kZtsKId9+e4kDOgp81gvOcO?= =?iso-8859-1?q?2QH/P0eE8/LCpydd0YQrK8/vu7HfIXjOWVkhePi2SsZ2stnYbiE/i+ZsGbSx?= =?iso-8859-1?q?ng8zNKZnIvX+LzVkp6WfDqzQWaFVJH0+qZU52xjXM/Llt/7L2/VVne64f8tp?= =?iso-8859-1?q?NcZNbum0yRxdA0q/Gl4d7qoLQTAQB+BoMwNMEQJKL9beM/TT9Erdw4jepHQw?= =?iso-8859-1?q?sOCfpYlxpAKZSQulWPW93hlmrRn72Q7fFmvNwoFT66Swmcr8n9nCLslcrii6?= =?iso-8859-1?q?iZZSIk3lIDmyYjfHdC2FFQvkUrHMiiu+rwPoIkV7IT7dilEAXVh3oDAAyIfD?= =?iso-8859-1?q?2JejDemTnokMGC+/+tu6Lk/bKhjF4cDIa51RI/+OZiAMSfLO+ZZU3RfgXS2h?= =?iso-8859-1?q?cuncVUpEA4x7WgJds4jbGQKExwF6Sd+N/JCfJQK1F4wxt5rd86o7mB0O/dXg?= =?iso-8859-1?q?3dVhSZMaDurHI3uXqIBUHVu/36QYrLmp5mG0NBzBNRH02WRzF903ghNBKIDy?= =?iso-8859-1?q?xX30rHqkVxU2kMHsjau1j7TdjMn1WQvfh02B32WCxTcXT3SCny1ZCN3q8yeD?= =?iso-8859-1?q?g4lE1guUuAaNLyaQPwRTo5hvU3f+0zdagb2gowne4UIlRSRFAVzAKzCIrsfE?= =?iso-8859-1?q?Qo+EIFLJQekVY00Yp2O9LPCmTnIaAJVTp6uR3GN5z377Fy9RUqr/ejrqJBg7?= =?iso-8859-1?q?PoTTEmfgfAxkTScggiFFe/0EX2vafQS1SWAuTA6bNgOyxRcoUv+dLMYb+nvy?= =?iso-8859-1?q?AXzezRjEtn9fb0CDk5ipD/fGAhHo4UKVgYRGGxCvI97RP0Ms0m238wv/MUlU?= =?iso-8859-1?q?He8ov4jendUgnOS0zRHBIuPcU2MtRMK8U5eUwIJQA9Be8qagV7pCJk1C0v20?= =?iso-8859-1?q?S19V8Q9ehmvkOh8muBWPrcfGjIh+SHmbbzCpKvYK52eEd4r2z/6DJKRIrd/C?= =?iso-8859-1?q?Ql5xQadk1pPIAzhns5Nz6lLztHEXI17ZaRuVxS9Lv0f8TfGFkAaHYSbAU3s9?= =?iso-8859-1?q?9fJgkeLfYRyUkY6vhGzVpEoiZ/80xNIT9b9Mn+3vQfQUYeiDrDwntLNyPNQp?= =?iso-8859-1?q?hBVJKNCVEYWfpUIlaT4gyV5+Oi1R5kYjAA+CEjRvPXWZqpSvM+EDVTqzTJdP?= =?iso-8859-1?q?wEPDAXRKB2IaVEenqfedPxDT2JvmTPFgdHgn7eThEwZAZ2mSAKcmTZllzFo/?= =?iso-8859-1?q?i5wOtBAwhZ286+fBnlkOPVVJP1qhovRb1xSmNmOpIObJlJm4WJ1qfiR2Crfk?= =?iso-8859-1?q?+yuHorCrJhtoPMHV0Ic6KBi/znPYATHgcfSngqSiNrX8+IG5umQjazYwldd2?= =?iso-8859-1?q?9Mf85LEa1u5Zgq79R9VNBVTtMgl+CLqQrx+VKHr21IAqVUU6U46yhfOErkuy?= =?iso-8859-1?q?nd7fe0kbNJI+bbrj+E9Ouht8QTnhX1tSYjVZe2X19QQJ6MppAr1HZQK9dYZu?= =?iso-8859-1?q?YJ5c0k+tiTJ7jXUeHfSrlqCOu6cdB+xNmeh0n9Uk7dXHv+9ZKpIoeu6F8QE4?= =?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: 29c6638d-f168-496a-cf22-08dd524ecb7e X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:33.1131 (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: dKt3QEIaX7kZGn3seez/KavFXwn65a3gXMStPBtcqpDXz5Vrsa4CxFIaQFDJqtDF9VSw5lC4er8cTDZ+8SDsHIhmuAixeQrMiNMmlywUcVWsIwrSi0gIJJihsmjn5kDC X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07:33 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: 13984955 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 6981DC021B3 for ; Fri, 21 Feb 2025 08:08:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4S-0004W7-MR; Fri, 21 Feb 2025 03:07:40 -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 1tlO4Q-0004Se-5A for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:38 -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 1tlO4O-0005id-6n for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125256; x=1771661256; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=gmC1JlYF6t5JaGSPliSMZn93aRINn/nUgSe42q/FwD0=; b=rYlFWMgB5qmS2WUavPp75Io+3+aMMP8YOwR3HbwtgkJmhgBbd51byZLO zPjkBGg/tk5S+Y8eJiGYZQaJhIv7D1ETLfBiVpMAAw2ORrhg3Ibl6JeAJ MUv6SNyZFgjVlOX870HJzWofClpoM+RYINl88B9CXSyF/heaJlnVBTryq Ekzu/D9Tzn++xTD3VmaYSu0ujYhQM7SP2Ng7NIeVDulQ2s9j0LyHNdpFL xecA9SRjsSiD1HevVCY2FcxwouWAXeybv7/LJxx6t2UbwFSbn4ODGfHWE ezD6Ev40htm7HK6feMQpoPC9+aBy5DUwNNXfhr+PGxWlib9Od0EOTJYEu Q==; X-CSE-ConnectionGUID: 4txGmODhQx2fhcY1SnuDCA== X-CSE-MsgGUID: 08HDXLR5TESoRorwrfQBoA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31385158" X-MGA-submission: MDFnjdA5QK4FinHT+dJ0TXDot2pZWS26yN1Is9VqGSpVD45+kU1tGxomAzuJkBNcf8zFA5hSR73mPYH3zkGBO7XVrvM08zsvkZ+gnQwAp/R7AxSHhcHfl7uUXQjriv+I44b7KpTl5Bog81+mCJHl2MOpUx6mehZijJsy/3gPFydKxA== Received: from mail-db8eur05lp2112.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.112]) by smarthost3.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:35 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bneGwJ9RRmHhrLPwfAay1AOKyo2h36Exvb3AEkolRlWw723n6A6oytniiX4BXh8lhM0kiexXt7wtdWZwX/U/GS6YchYu+rAYgaa5jcqo3xo97R9oCQTTP0i2rEde2yRkESYJwhuMHnmKHdXyqp3Vhq30fxFd9jc3LLUiKy6/FXM2atOY4CSMC4EaWloD+404YUSxtEySRB1Kodp4/KbEhsaVkfqLTME5m9vGwUsjG5rGcFfhDPioPxx2mA3VDd0EPAfJ7twApVNrDoSDsnxOsXEo79Q0k0V0FaFQ4YZEy6rCfzHbCYqeIi7s+clx6aTURNXAkvd+UDyTXEunENyw0Q== 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=Y6FWNBQf/fYJYqgyWdoHAdVeRMMYj/jquJxaUNtbMQ6EztRjXnHjbyA4ai4/BkujZpJu1EaRVtxBv+5AI7l2qmV/Uv3HfrFlxnDncDJSjXwVtJejTbA50y0F5bycJaEiYhmhtU9ssuCI+9P3kkuMSo3MZ/ubmttNgJXGVaEC0d/tcNYzgq6SdccN/arSHqYsXZjKv215uZ0SQaBijb8YwrRxwiEMaY2qlnG6xdJY8oGvVWtF8/vwCd14NJQahVwrk1FaPmhnAw8ZoEAAo+jg+5xf4rYZFIOgHM9H4/T+lxDBba7MPL2+V6eSvtl4E12Pzg0TMqi30F3pfZLbybdnUQ== 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=jm8s94yB95fcqQwv4usH4qL2mFz1p4eZwFpoLI61HCGyC7KfMTm/0YYzGFq+WEbnJrUfFzYbn19uxf/luuSrSAjZpv2h/pQAkg39oBtOY43ymYKlrWqmTJw5X4b9D29ym8ZG1YJWRCSdPCcRWG+gCsA0Jw2nMB2eQXv1q5dEiBYpo9sJzryNgpgQcMIQLvALzW2N0kKMyHUUTh2soRMAobObTpbG2EsezwL5DdkN1QOzHjU7gfrxMADDD28RREpzKxFBC7OqxVSEwrL2gtfsd9zmEmzCAC9H5Q6sRkvu3PmlGkz6xULLrd/CAbLKR2vMgBj4Gi6IvRFJosDsFGWwSA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:33 +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; Fri, 21 Feb 2025 08:07:33 +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 v3 05/19] pcie: Add helper to declare PASID capability for a pcie device Thread-Topic: [PATCH v3 05/19] pcie: Add helper to declare PASID capability for a pcie device Thread-Index: AQHbhDeps3ab2H4yXUuuV+QovT1t3Q== Date: Fri, 21 Feb 2025 08:07:33 +0000 Message-ID: <20250221080331.186285-6-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 5a642110-4bab-47a6-8a97-08dd524ecbec x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?MeDtEjZ/vAf+a+6ZVlzYYUW9/5?= =?iso-8859-1?q?rtTv0sF/l4xBdmWA7WyT5YEqZDQTk6ihQcSleXF6rGAQNAI5G3QbsRVlWafs?= =?iso-8859-1?q?LsIKj6BY2NILEV+bCudGGWLxESBzKgzsXGPX4sJ5unYp0WJfV6E4ftM8bfup?= =?iso-8859-1?q?6L7S5OkmIswvsEo6QyP5p4OrQq6SxhdfwROF6aqMqQGFj7Q1lz419a49hWHE?= =?iso-8859-1?q?BiW9t09eKH2klymOKmjItAl4LnVKsBaHJuz2Kb/gnjaxARs6I94dIE+XPdms?= =?iso-8859-1?q?t88fE3+Qcu3/QPQBvcpdJFXcrltezsnPWEY0XRV0Ig4TnAjoETOrdvTstsnU?= =?iso-8859-1?q?DSiGpxEI9ZCp5fIqDhvehzWACg8u9HN4H7Irx7m6o88lnVgw0Z6KvPEwxMM0?= =?iso-8859-1?q?IgYT8C6evxSEL46FVzFmieBDqhh3XQE+RSI0Xj53UohW2b2Qy5YRbqBEc8RE?= =?iso-8859-1?q?ccUnLpOITSKEmA9KLDPq0H6MsWZEwfD99irrX/0aq7hv008lmRvWQaOLl9ee?= =?iso-8859-1?q?LCOP7Owe6tRGwIMpRgOpIOPfityGCtYO4TflkS/KXIODsNbWtMHrWRsge7PB?= =?iso-8859-1?q?F8kDdlBxgwwQtJQZCLS/Jx5+uxnLtwXP3tRrl51nVvZQl1bqiBw9tos3y623?= =?iso-8859-1?q?e7dC81lCEXYBNP3vo8+ofD9c0TXa5SxZVFK8IwVtt76TWYz7kPHLkxFJLYai?= =?iso-8859-1?q?hyCx26yy0oKH8uMKyRqJz7GqJcWRKhIMyZtWAEa+9OMbg2q28A2lPp9zYWAW?= =?iso-8859-1?q?zx9rgYTHesahhYwClB16SWbJ9fo3x2uj6Vw/uFeXAw+8TLTmIqwkHIW0u7mM?= =?iso-8859-1?q?3NW8Yw0ejdZWxcuQVOd4BQPYr/X5uvAaYo4hYEYaZr908wEE+QByaeK1o4EY?= =?iso-8859-1?q?i8AMYotJdCBRN52qzWizBwv/uVw7pX97RorhUsVqYfjN3eXZ6jYCtcVw5Jg/?= =?iso-8859-1?q?1NJYxKdXoiabq8/k11nrJvjjwsfEfQAzulhEEAlsoYGxgI56IbnIpVUpHJ4m?= =?iso-8859-1?q?hHAXEKovEi2JMJU6vMw5054REw299cGBG74bvj2ybcIP6dFV7E8jvapk2co3?= =?iso-8859-1?q?x8/zDVybEizxDg9vcC8dIjoSV+tHKrxPX46ElqyHQbomKpQxPzlQKqIatKo8?= =?iso-8859-1?q?1JheSrKgn5A1uhzPHKKSxppGHCjnGrZy8rtATpJxIBMOtRFKUPjIjWzsQve7?= =?iso-8859-1?q?fzs7lFA/PCh+NIH7sloT+UKr57mKPbgL6zzdyblFEdxaOG5QisCOMykZH0qo?= =?iso-8859-1?q?p2DWTpgafbXoetGetWX3GXraJa3coS9TXo+sdhTZRTrTz4MUYqYAQpEvP/Uk?= =?iso-8859-1?q?Tg78xXT+ngQZkCkLdLH3sT3IUxvPLWfpDwGugJ6Exv8f1BHuOg7AwwZ8NWSN?= =?iso-8859-1?q?OpfixeWV2+QPZ38Fe+JC8Pzy4s1xJwPXXRmJfeeZD/PlbrTWBc/IQo1TyP2c?= =?iso-8859-1?q?81rZV/MTGzKlv+bizwGSoa9ltg7c2Z6yHtgkOk+Y5deE50Q7mEItdobE3I7z?= =?iso-8859-1?q?l9ZQtl?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?qG4JyRY+VLtSThx9kAxQRXP?= =?iso-8859-1?q?zQRawykubTo0E50TVILTlbJcJ57CAeZyK35UTDanZEE2P5Z8JGPyqOFo1s/v?= =?iso-8859-1?q?Mx1dN3XVTH2SgMLlEHyaaj6+feNYzG0mhPJRWpPo7ezVlqt5tpvj/8guoByR?= =?iso-8859-1?q?jY5qkjP0ygeFB2hE8KQHgYzcUlcRS7u8qRUV94XoxRyvSr6STY4HAHuozMOP?= =?iso-8859-1?q?XZ6+Jm2MTDpcZDxusLhfFEnFRKkBdUJ0n4TWdMlmRIMwh7rRJ5Xp4pe9/tnP?= =?iso-8859-1?q?45Gu/WqbL7adtHOcs/8maoex2EwcVuFN2jZj1aAyREwoCKEjVKs465IKMR/f?= =?iso-8859-1?q?uwzHrhSZ3nU6IieucVWf6c3IsD/IJwO+IouXbKsd0E54PiYCx3m20lSuyDIF?= =?iso-8859-1?q?tTBBmcroBNmcHcEYLVENyBDWMAAHTi2PyNkxaIyRo5XM2vB1a+77E6Vragq/?= =?iso-8859-1?q?vf/3XgttRoaOvR+tYGsRDKT8wKUUB33Y8orR1FBDQx+8RUHeFMB9VToNzie8?= =?iso-8859-1?q?xl66k4P4X5b3D7VzQvKkEgw6eRaJu5JmRD89iUgwbAkMhPEB/3V/8x5ydElT?= =?iso-8859-1?q?voKDNotapxtF+rvzjLszVa3VcXn2UcN6A9ZlxvT2HmPrZ2xI3aIvMECQ16p6?= =?iso-8859-1?q?Ame6vc4RqwM//8QbsI8T2LnqQbLjkmrAMOmF3SOsm7Sfy3ePuC6laVRtS5Ec?= =?iso-8859-1?q?WihIbIm22t61Z9pqgXV30nseeVBBmo6d0KTG1qTelUPW8KQxhyQ/Z41cKrs0?= =?iso-8859-1?q?CQ89skxQQwk+OfcRJ+/Viz3AkVwTHou1uStntYSaTgXfK2JhggAV/Pko/Y62?= =?iso-8859-1?q?/wsc2wLRswXvWWRYGuk6ktUimGbiD2HiHoUqGCu6WzGq6RjU2pCXEgWQQzQV?= =?iso-8859-1?q?sMggBVQwlz4chNtIl+hTosi3adft3GxGNQtyLAIwAmi2nlcIh4RchRWHgQ3n?= =?iso-8859-1?q?AAvY3v5ZBqcqIvesQPE5qUOI0zAFlra0/liqmM57kS8BeFCwTMKBUiGYMFZC?= =?iso-8859-1?q?Wg6SjCr1yxncfOYk51lCGSTNLwa/2Mb7JQBllrpYoNHaWpeENsDRqMELYy/Y?= =?iso-8859-1?q?hILZ0BcF35jbUZ9rE+GYOhyIUiVpvuF3N3Q6TbzXXS3qAKZV00o8jmQKD+Eh?= =?iso-8859-1?q?/Sv2R28ul7hACkdmCa60OzAR/ih3i1KpznakpDoLFULqriyzx59QXXYv7+oL?= =?iso-8859-1?q?DSXamKnXhmZdzTyUlImgtSF4R8b4C/sKkreug1BXiTT2L5WY0suWLjp6EeYg?= =?iso-8859-1?q?kfdJ3ZO52chLpIjf/zYj2PkGj0gEG2SC8Jv6YJd5+1jPdbiLdK6wg+y/AE/j?= =?iso-8859-1?q?7X6MNg4xkNuv/Rbd5iZwV/vMLFs8ZAl0dpi9XHsFL/dxucYuy0Ts/lIPm01o?= =?iso-8859-1?q?OlXA5lNtU7vDje4hdw+m+NmIRq22tsN1oRW7GVA/hvRI6bohrSLAF6y1msLO?= =?iso-8859-1?q?mcCnBUAp2Bsgtiaki9ex5w4r1kU/ycvr+MrtLvGhjmiOvqqe2kXOl1x6yxEv?= =?iso-8859-1?q?EKgS/w4+X0tC17D4D40X9vL2r2meVkQFPzwMk2k72Jbp/SOPp7UdsZol+4Gu?= =?iso-8859-1?q?rF6x7XPVhWqxmzvU7N8IzJxnfNHopJd+uSIIEtmg8r+aU7uKuo8pkBofU7+G?= =?iso-8859-1?q?X0hNr3ZFoUNogDmZAuRZjAPN0OaggPEA8hePeQQRpGEZHHSay4HFOOwoGRqE?= =?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: 5a642110-4bab-47a6-8a97-08dd524ecbec X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:33.8607 (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: XIvJYK08/Tjmve8hYTvymX8hJhJ3nHVvHS6Ywy5j/XEW87YUptlAWi0owrKeXF8SdTOU292aELsE0IaPjgAiIWSYwZIsOnJQ08H4JWvcKQvUNoVseeO4PGzrI8YblTZ4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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_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 Fri Feb 21 08:07:34 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: 13984958 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 2A005C021AA for ; Fri, 21 Feb 2025 08:09:05 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4V-0004Xo-Er; Fri, 21 Feb 2025 03:07:43 -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 1tlO4S-0004W5-Jz for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:40 -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 1tlO4Q-0005jR-Qx for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125259; x=1771661259; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tTPC7x09d/JU2UNVzXQW4tNA/ojv9FQmKpl+PJhHHRY=; b=MaGDsiMUwiXYykv7ZwHQAT3/3taYymT7JbnngXPftm8jcslc2qmSrLKx aFFCfpQFjiqqeJCYkOPgCi+q3ys0fEIkUXzMVItXxrw6BZ4e+EOBWGlw6 X1E/xtwy4mhWlEqeoqJ79UG8p+ZjN4HD8oQBhO6xbh9mhjc7X8UfosAlr 0Nd2A2yD3nTfaLTl+mDr45Kd+JGa4Z6JasGK4TnNgSKwdD6O4bOZewwgq wn+qKygB98wDLD2htZGRMS0XHvYrW0sllkDl13QFor+SZVBH9VAxVmS/d adEDrxXf/F4KzxMkBmFJSjB5JLawA03hzLQBf2CNVqP6vDc9cZ8omH/J3 Q==; X-CSE-ConnectionGUID: KBDQSR6GSkCIFVDo0S5+KQ== X-CSE-MsgGUID: TF7yqZ9OQ8axFTpgKo66KQ== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31382209" X-MGA-submission: MDF7IGBJPUif0Fizoe1Mk4i6p/Xl0OEizrZgH9dHZ+W2LxlYsKBhj6FheXC5mnE21z8fL69Ut1/wxoEQs0lfuEhBmmWc90zacGf2y2ZV0ZBEtSyjtoCp4E/UHQVxlZjL+w6RWs4UcPzE81vFbEsjXYQgACY1kp+doTHDCzcUY20SBQ== Received: from mail-db8eur05lp2106.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.106]) by smarthost2.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:36 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TN/7Gkw+nVSFsk4kavc/+zun9QKSyMoBrc3U80LOzVTFyIJZIBUr/0i3Xgswn95KJkHafpHN/CMysJXVfbnc/8Kphz7/zAKtWedL60j2JWLvFt0PCuF8Mu1pAhfqVonvAh31IssRhYfQpa0oy1cChHvWEZPrj8dbWG5VyIotewmyqiF6V840e2wAznF46iCe4VXIR20IFfrXlGEXHNmVta6if0nFVB8G5vvDeWqiylvR0Se9SWD/oi/AuXEdDDaTbbHjlHT4AubiFXWIWEOibd8FMI7zTUXlFXgtmCV1GmSFuwraQFdEf+YkWL8ASi04SqirHksydbYezV/SlDWN3w== 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=Ebc28O9519uStdl56c8GR21PFfprRyzXow7y52/h6fDaBAbmseI83iJpgU1h2LIA6/UH010r31jlzZg8VJMSQphutmIqeXeZuQi4zjQc3PQk1JbONEv7eFNWJ9P2JTmRilatexrUGRdzp3SmLJxrniBadQO+I66T6Kvia9t9JsZruvcJNN/zG3BI2OKTpwUGSVOmZ63dscAp3GdqBmX1mJpXOC7sBD3kJYcfc5i3yXyvJ9ncZWgZgmRAKiAsXa60rgjHhkrNN/olua/kU1bW/atbYpnUjgjmuXMHXvoqFDEzRhqLVi8kqX2XfP7/PDzMIYwr9UYBW+xafm9pYFgGBQ== 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=TXwoBxzXnbYvrRPj1HSKS61SuP1No+AAmFac56xK8V2VCyaqoymp448NnhWVoOF91PIPQwnwMLemNedb1Oybaer2pcRx4GiqcOfyv8UJMnwxmc81tepFP6KkhUXNFHAFC2h92nU3y4X54LIUPvvsnE3fzOBlJFYWQPbtd2ipKEx02nhRjb04gxs/Vfx2G/ZPVOauvnxtY/WfKFSwvdDTnuecEPuefAAO6GYv9HRAYqukwg8hInWYZjOL4uPxykJmSZoViwD5+Rp8tbwPRjYiE2J4w/IGDyLns6gmAuxt2nBOsqR+aBNRh2JsSrdDPQ5m2/Yu+H98TqOjMIWcy7341g== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:34 +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; Fri, 21 Feb 2025 08:07:34 +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 v3 06/19] pcie: Helper functions to check if PASID is enabled Thread-Topic: [PATCH v3 06/19] pcie: Helper functions to check if PASID is enabled Thread-Index: AQHbhDepdMqBvKBdQkOQrrksc1y1yg== Date: Fri, 21 Feb 2025 08:07:34 +0000 Message-ID: <20250221080331.186285-7-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: fa3303e5-7028-4a7a-0d20-08dd524ecc72 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?brd2A3IvSLU7utKG+v5JBPqk7V?= =?iso-8859-1?q?0Co6rCektlPVwUvYHg2/ypZ/N+ApJIylEKP0Q1QMiY+ZXMYWeZ2G8RB83g4r?= =?iso-8859-1?q?iRwVkYXWvtY2h2UAE6cb/U0NJCbTvu+ZkmpiqOT3hbWQAeVa/6q43XuMrvGN?= =?iso-8859-1?q?1rOtY8AU3WXIxbeO1IDGep0pdfBe8HBXnp429T8l/FuGt6zp74ibQea/Q6Yh?= =?iso-8859-1?q?sgLe9PPYu/CMHN2gEjVLTCRF0Rz6ElwD6BbqZ/ICrK+yO29gf44WqC5ihp9c?= =?iso-8859-1?q?qzkWk1dLUnE7uLOxVeghAsW7ue9RX4ImQk4/CPFb4rN5M12hbhjTRx4/8Ry5?= =?iso-8859-1?q?KHUunKuslhPGRD1Y2367wQRwf2vhO+wjirG2HJXUOHgaE7KRTg53rlHJBbmv?= =?iso-8859-1?q?IIRF/8RfYzL9TvcblDtWOiJOBpcsKZJM0gKgsHQUtS9MywkVU0hrdsO6jc14?= =?iso-8859-1?q?FoL+VMv3hvMuMP9w2j61YebwHFMbEV463T4urP1Xg9duvi3F8CuITEPRIf9u?= =?iso-8859-1?q?npxZYpQEuQX/XDaSpcx93PPT7JMqw3gAOaqS5maSnTshiZCJjD+x4FW/Lr6p?= =?iso-8859-1?q?8Knw2jMGy6RHSfMieQTeulNeFEtsBO3jFOrRU5HfuWDmN8AUs6lTnPHGKVMx?= =?iso-8859-1?q?j3l7JlmZH5WXXYEeb4yVMcEkcal/JvW4aHJtYn0dk3RU6i/N+SR8X9Agognp?= =?iso-8859-1?q?56tLK5TGk7OpRvc2f1vwXI3YkDGtSUF+b/mRIb9iyrUB1E6a4SovlHxbiLRY?= =?iso-8859-1?q?RwFNuXXVxa7otppOvYY7fYQcXxLLEggKcaoYOCbFMoPEZsQXWOZAUt17sM+Q?= =?iso-8859-1?q?RC0yh3l0XKaRTv8YBVSa/FtCAEDLiATDCK+tJvFX2kag0s9MRKg77NWaLAxr?= =?iso-8859-1?q?uPoCkwylomJlslH1OAGmi4VhQ9yXFbUbn1qctGaGXJXj+Xl6oejT+ZnYuuBN?= =?iso-8859-1?q?4gwXR3o5wmJCkvhzzpOnxlcorTHHqP4DIypAxlXNccSDQgckJ4AAQaZgnqTa?= =?iso-8859-1?q?uZzA4aBhd0GaulAYDPU8O0Q2aCOgOd/f4xL5qcWZVPv+In3nnSwOTmuk4P/e?= =?iso-8859-1?q?FDEmCY3rfBVpRyjtu/vxKML8KduzQ0aHbO9ocXQfsNw+yxrkRN3Cs46jm4Qt?= =?iso-8859-1?q?pVslwf5OX321P4cA3TO+tKRwkXN5YLuLfiCQnCSFtYwc4n3VWTmgaDsQJUwd?= =?iso-8859-1?q?CVTWZnhzbDzRBrT8S/70bt0vQvPJ6lQR5TfOz8D4paQ4IPUnkvsECub1NoZY?= =?iso-8859-1?q?//19RJTAzH7xrQ9AG92KEH7xB3xQ4zpaWDWYlbdPR94VMaCowrcAr3jvMB+O?= =?iso-8859-1?q?jBN3ohyOxgvemUhlPYZ4NuGVg2tjK0ZwG2HYwwZcpWfRn7g7ujojUUy8E7M9?= =?iso-8859-1?q?Ua5/JNTmBEIOuvRp4qwlK/7JJ6opka4fLEJwHXv8ZuIzMCIc1b0jEgCztvqX?= =?iso-8859-1?q?bi3oKw72mzMzTY1hILaolQZWaErD8jPtlxs5wkG4VPBo8mfLGNjcAVNWpFfU?= =?iso-8859-1?q?TSNMjR?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?xSHV2JLmGVzjFhF4j8XE72d?= =?iso-8859-1?q?qv7BBtOUweRE3sNbihivQIJAIwVP37o6dCckD+/1q0wRgl3q7ohXF9t2Z2YV?= =?iso-8859-1?q?2gTo+KFWlgFef5SJnV5QNVoFT1L6aO+RhRD2PiRS2c4YJdggCDOTlZQydGTS?= =?iso-8859-1?q?BS7SC7NJpjFcQX6Hwh/k0E4mFuskanF5Asmk7CXioGS4hOQz5hzW3b7fz+BK?= =?iso-8859-1?q?n3vNPqqGc/EFL8CZIFH5GGmGr6tR4t8gsi0CmWaOnM2RSX08r6Yq9qj5rKGw?= =?iso-8859-1?q?Iz0ZLRAMRP5aWocMWDKlz77Sn0dZtUGUve4KpyDCQ7TZzORFQ9Co8PBQcZZw?= =?iso-8859-1?q?op1x+rLLwAi65O2WIamoKaOR2ggEfkE18jby9t0blKkxbuVZWi15DfeNHZ/p?= =?iso-8859-1?q?zZgueMJtqZoar5QScijJPb8PQ+Dx5Z5a/QVQua1ebGLbu8RmlmsiJBjuqbl5?= =?iso-8859-1?q?2RpkoFlwWIuR6YlTdNBygqnf4yJn5rsxK7DT/U4xQHmVhKTj3BWOvC/BDrGP?= =?iso-8859-1?q?4CKE9U7t35BfFhKbkEOF0cMTi/bBvxVj25qfzWkibGN7rsiPxXZKbj2zIbnp?= =?iso-8859-1?q?jepqHVqSz03kJqYE0MIHoHY2i11fSF8kXTVxGvXgTDQUfL4a8d6YK7e2OqBS?= =?iso-8859-1?q?APKKZwxQ4+DD70OX7UJaSu+vcTSPpyxBCkcOQqSTOPlwPdfxd8mfx0ASHfkM?= =?iso-8859-1?q?eEL2xw8rOvi/i4YlpaYuUyKALAc4zBAwaC9beKJnvU5jztjC6s32i8LeO4xh?= =?iso-8859-1?q?B6wCjlpK8/10p2/ksZdMYh6DHsMUz+BsWy+enILbLzHTTKkqMbON5c6h4qwv?= =?iso-8859-1?q?2i1aOyIaHgLJcAhn+S5ZTgi40KFMzqLcKBa2ayKo/8aB9FXNBe8mp/r7nLCS?= =?iso-8859-1?q?QvQAcYV2POKAPN+Al53DLF/AwmhJ84kAOmOY2K545gDWbGnS9mMOXvBZy+PJ?= =?iso-8859-1?q?987Qjfjs0eua8Jpl0PIfpmhnO5IdJ26wh9fa+f6NouZ6N8kSZZSqyBx8v3nV?= =?iso-8859-1?q?dbxG4fcpsheZ1kyCom8PmyPaWLMPiWmlzx70bYfAC6YW0f1IsALkn70sUQ5W?= =?iso-8859-1?q?cWilayt1s1bQtFd7GZVxamJHlfQAXi1AxJ9KR2gx9TLESRzOcrPgJ4v5pGh+?= =?iso-8859-1?q?Se4fqtg2+Vf3U0mm/hVeR5JqWiD901jsJBSEwWw4hZgUWDCn4Gsc8sH1K0Kj?= =?iso-8859-1?q?SBYkqs8xyIQ09EAvMOuoULgdyCf9spnSxjzvLq4TCPKE6LMp9u1T6aRvFRbR?= =?iso-8859-1?q?cgNkVIzKE4khiUOySFiS5m3IWp4WFY1RVXUMssIL+YGXp+Om3MBR9kdPqxwz?= =?iso-8859-1?q?lPOVz1UgdRPU1oQ6uX8ufgmuEs2RbFasAWZzExludSzEaf316A9K6zQ9H7Ou?= =?iso-8859-1?q?tjPVBm6LoxlzrsMvWI66lmIXvHI//VZljxWBqh0Im337h9+O9nqKPvHdUrWX?= =?iso-8859-1?q?Ra2JN/iHIdAakHj0SKnzmYMz4Tiy4L8vJQukRwnWJPw+YW4wxNbxHPkPHVh6?= =?iso-8859-1?q?WfeXBIS/R+83Hkrsu4E37LyHpBeBrSTeap3HKrFRdihqcaVeckKNqpfOfDlP?= =?iso-8859-1?q?x+VPPu69AqBfJbPzoVFdDRYQohV9L+565PJPgm2hR/d5nHLZkq9cQmGE9ope?= =?iso-8859-1?q?Z4u0an2M0YJC5n/l3M9iyqCHBc5lWihK55gILXYJZN9GEl+kPXgO2Z2Nlkts?= =?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: fa3303e5-7028-4a7a-0d20-08dd524ecc72 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:34.7287 (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: xy7Wx4Htg6spwueWgR+YNLmgXAuoO7rSl1WVfLnUS8RA5CE/swL03aHdPVdz3ZZUsfD+B92p0VpD7DJpFuDRg+7owUDFG4wN2UDsInEFBrBEGVCTJcI2X/et3s3axWyD X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 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 Fri Feb 21 08:07:35 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: 13984957 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 D91B7C021B3 for ; Fri, 21 Feb 2025 08:08:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4V-0004YA-SV; Fri, 21 Feb 2025 03:07:43 -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 1tlO4T-0004Wa-MO for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:41 -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 1tlO4R-0005ju-Ty for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125260; x=1771661260; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=fDuNj2e5Z+tVyKsZ9Vl/nMf+ohGdmNjrvRU9Wlq6dmM=; b=MUdOySWSyHF7i36a/9jkK6cNZfhp5w+5c2xwlNT8oCOKKnofyOxSUA/Q KplnkjV0rJgMbRyk/msurJtchEkc2w3Sir/kix47CS2NDZBE3iVLF0NJb MP80wGj1hikHWrTHlTkdnAvXDEDu49wQRm/JRqFqadPVt3Qd5hRBDcGYf XFnh+pMvTcvk9Woy4fXegfpDTXAO0zbqmPUT7uH1+ml/Np0z9qh7IXnXZ 81tYlUJBiG0aoUbFEit73JOlhaFuQegepYCQB3z6xq8tnGDSoWQQ3YstW 5t9NEq2SMSxV3zg7rAiUU11ilFiJxvrZi4xRdE3bFmoZGQgXQF7IiAeim w==; X-CSE-ConnectionGUID: Z8Qj1T+YQ9iJvElmxhwyjw== X-CSE-MsgGUID: 51dmisD7Q9WvvfrFcIdbZA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31382212" X-MGA-submission: MDESfvArCfJuLcS5YjbSMALBgpmKcXgYwUZAPLTvkTWMO+ulqfYzio2dKLMwFseSN+3JJAnsTKQOSRel3b/crvalEr+I5c6sriaoS8l7t+/hd1NtW7AZriMKnpkpQ/Y9O0Hog/z8NRIAFcQmyMGExoPqaDKKgADJcIZJCDaMoT5j8A== Received: from mail-db8eur05lp2107.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.107]) by smarthost2.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:38 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lX4KEaPi6Sqr9NYrsHch4Tkc4u2FvpjSv3Jf94eT4DQmydW3SvUOuoCl4RZxQPBtl2GHEwB8qiy8HWhl0nLvQqdXuYpZ9hfsihLgCEaCg6k82hSY1jpUkFhxIBdrtl3wYazRI53QCTub7v8ZDL/sXddLqKs9IqCbswlLbsJYRxeHiRqVx7K6GH105IMf8Mvdf9GT/Zdy1qDLWslBjT+aC0ltmQ+HU3aOWea5W0iHrNQarLDibLtvt1Ekb6XJgwOzbuDJP1SGpsw/UB9UJUN+d2PO4y0r7555CyIS/96xUxOKtp6Zn9vKhCCRKMoxrv6lNy+NTnFlgUQQTBN1Zm2JYQ== 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=gxygNHBnLTR3MGN4iFgYZQN82WDQg74oRV4NKKr59RN3iuRHD8a8QLXlRjkDMwoq7N61gthH3dZuOeeYfrr/bIH7ylyfA9Pt16ABiIgGETAhLPZBJ3zmPa0/a4ZuL5t0/wXaNQ8AqiW+KIHyOnCj+PFRlvn2Kbv4Di77CRO7LX5+15kT5hXSpfnqaC1wuhh/snyZ8bTuJgQyi7jvgqECvB8T3ULsiwt+ZMQCCm0zSxQG2MofJvkzGRYeoIBroM3YXQi7Kw6Wnw1UDM7LJdmX80HhMA8feoWmEome2ZL2eCnOYMPhBYkqOiF3r5jGEL/mJ8qNshL7K2rXdupnyCO7ig== 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=PDgrDCAwbMGQlxPqMRzmeNkC0uxo4M+IMyz7IcM5ZGGoBHh8ZFhxSfuuFUqGU4br81sQGQMlvi6AjoNcPKi5OjIi0Qub9RikTNkHq2zJbdrpYZe/qyzpRTWVBJknIaOmF28olWJiE8GdVCSrmgahit27WLBh9He9ZUmo+Au/4mUPW6nSxFbTi7dRqcJDWQWlrD2JCdEFS90bnUwokAGxZbdkg0yDcKL7yIRHyzREd5WJansWxEnPO3RwaESTipCY4w474ftbl4FeX3tZlz/gCqcT7NJUUg8n8fiScA1Hegn5LHK+/PYvr8q6bcCqjKTjAhPCejdSOnz0jiA/hGrC5Q== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:35 +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; Fri, 21 Feb 2025 08:07:35 +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 v3 07/19] pcie: Helper function to check if ATS is enabled Thread-Topic: [PATCH v3 07/19] pcie: Helper function to check if ATS is enabled Thread-Index: AQHbhDeqYRRb4SwEMEG8rwue64flsw== Date: Fri, 21 Feb 2025 08:07:35 +0000 Message-ID: <20250221080331.186285-8-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 41e9f999-4b7e-49ed-910e-08dd524eccf7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?iXh2YjoDGgVoVG06UNu8TYz6Ly?= =?iso-8859-1?q?HMTry0sELl3YdoaKijhG11qnMcUQV34Pmbn3en7HT/iyCw74F3U8McyLyqta?= =?iso-8859-1?q?+y7s0//GF4h9hl96S/2+0Zgfyi9dsGjTE3ATv7eV7fxuVQKl3WgXW7ep9SRe?= =?iso-8859-1?q?eYD13S2/vq6LgCmzGqoYf+breYggVR3CuqIfVTxVBqgxwtRXX1cuG9NqvlwS?= =?iso-8859-1?q?hRT4SGpa087875VI9Rj90ckp9Ilfj7qp1ghH3o0pRr6HT3Qu5HCvkWzodzZM?= =?iso-8859-1?q?G9rJnT4/KXkDgbGMBgEq+pnvpcV+pGbnleIVhYxZHuyw0wItcy6NpX/vnU60?= =?iso-8859-1?q?9eauPln5YqSCjhwjbsgu8/9s0+ScG9YccFrkK+tIaFnGAcD1AzgqBYA05At7?= =?iso-8859-1?q?1Avf1M+BHWf/oyrr169y37vrGsoxTDg3pc9avKRLVJFefyn+qzV4IMV6fJxo?= =?iso-8859-1?q?7yg2h8N0Zkg9Kh3G2y+c3pZb7Z1KgkZQd3FebjAf0RfMSiIy/PugNGL+qnTj?= =?iso-8859-1?q?Cut0aRmnGH3cloqTniH8HDdJJLJb8c6wlW44vMNsge1fdH3ZZYPk9TnHI+AS?= =?iso-8859-1?q?vdumJmgquqnEfzCH+hxDJQ4cXea4DL8KQJA67lQnItfJ8dMWwrXgPBorj7Hj?= =?iso-8859-1?q?gZ4agqvW0NdWcQyQYRH3WQjhFMRPgp7CIuddRaIk3x7LRlMpGC8Bhe0LXo2P?= =?iso-8859-1?q?gSQSp4qULOujg7d8P6mSGbImUfXyoje3oRKD4j2mfxeDuvntJhfYO+41FYBL?= =?iso-8859-1?q?dmCqSiN3AJqTWAWQ0gQM20/Tlo/kU7QKbWTFhXsoZH0ys0amzk9p0S0aXNq4?= =?iso-8859-1?q?OtEyKuOU3rxlpj6NU3sUQ2OnJv2W0P8Vg9T5PMxysl6m1KnL2gqLFC6dK3CK?= =?iso-8859-1?q?4XkU6hjGqgNIK0T6w6R4enIhg8l2S9wnK4jORPSpnoWLQCjZUpI4aKcOUiHU?= =?iso-8859-1?q?hjVTexK5pkCmrBnxeO+Kht9Z/hWaaYoz73Or7k5PeCDA+U5YJCYAoVrsbxcp?= =?iso-8859-1?q?/TMrC/ZxvU8SmVSqQsHrN8f4OXi3cpIzLkK3bPPbv2u8WUDS4fCZgGb+Pnba?= =?iso-8859-1?q?zqt1vc/euZPXSqQwJlItvDcRNCRuZUAUOAHCV8E6Dm6KcvLG57qafIHORYYN?= =?iso-8859-1?q?oUGdDqGl0yJq0sKHIKApO6yR1SstZ0YOXm57SyAiD+SmmIUf0RX8EZMkzsAA?= =?iso-8859-1?q?xicSM95RjEab7hRS9xcWTws/gX7h5GAl0Ikk3DCSZOknV+1+JEh8AVkNmY3C?= =?iso-8859-1?q?hzZ8fNxuRhb90+K03uTfDkWwCE1cF30oSc9x2Mq1UemdR6vCgaGbFinFxSjz?= =?iso-8859-1?q?JMy8jygfyLvB/0pvnkU6IazLfX29cSuvO46wYhxV/yXImgXUyvyYGXAWRX13?= =?iso-8859-1?q?CkQa3nubbEvMLil3Me4JDEZMNB85QYDUMiQsXaAr3bfGpazeRBkxP7hEaAlF?= =?iso-8859-1?q?Uuww2V8lt7Fk5gBezKaYpkWyS/KUcfJbL40r0XMb5EV0eB4UtjaWXEDkaCIm?= =?iso-8859-1?q?f5iHDN?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?JWhfaLsDpXrte3uPh1ryXg3?= =?iso-8859-1?q?5NYjEBoe4CGG9ImWvs25RSKbLM4CcTADfXO0DQtYeNlW8IDo9IGrUZhzASR3?= =?iso-8859-1?q?JPxqEtxuOPHvb8TGki0TbiSn62PyQ6QuU9KNkpPt++7HRe7Yzmjl3cf5lux3?= =?iso-8859-1?q?LymB2hLusiDx3WLiFXta/ofE8IGjH/OZvW9PTxiVG1wnig2HTakBYqVkkKQg?= =?iso-8859-1?q?ZEjxzqQT6FOX7hkSti3PkMmNI5ZZFfFLv0bobU6zp5poUVr7U6PZMSLsQE27?= =?iso-8859-1?q?+hm9i3zURNG9YLYOjJXiv2ctWONi0jpFsOIWhoULbZt8OqXwyOON8ak0Bjah?= =?iso-8859-1?q?XEVVup5eQXnYYBDMlAS6lIujkN2yFIzLYPi0y8GKbvADHv6KzlAWWGZTXfl2?= =?iso-8859-1?q?laDqhqNDUUiobwStQ+xbhXmbmurqaM1dw6mFWrAC3oy5px0fQHwVe8VqFhyl?= =?iso-8859-1?q?yiCmIFDTOnV2UVnuiwuNwIT3E4yTfPI2rOaMYgBFQoDr9iasYxQ5HoY8U/e5?= =?iso-8859-1?q?1V0MU/tCK0GcKkkTyOOXlD9x68uD4sI9gsb5+YH3hzHa8u7E4WlBC8q7yF5x?= =?iso-8859-1?q?jEfVtFWCCfb9CaZBrJFYg/zrDe+jXL5IDutVMrk0G5Hmywql1q5XAgsvRPOf?= =?iso-8859-1?q?k0Ta/hjeMvPjfR3FT0qpWs1flKtz4D78M+sz189GMi/+O0Ub9tWaaGwJbbP3?= =?iso-8859-1?q?T9hwGY7bHD3Ext0pC4zx2ULaBbbEtD9weP0v5/IE0WWuKiVDmkFUe8I6fkfI?= =?iso-8859-1?q?jPsXGpnz/cUajknJkyD9lrvb6qAG7qierKGLh+cfkNSWHudvr/iIgrJfLJSV?= =?iso-8859-1?q?husV3F1/JAWG3s4WUn/OrJk74LeWPlyYiem2V4pyxr4vt9SEasax+fASNtus?= =?iso-8859-1?q?SGdCpIAph500K6HlmAj3zqyaA2tiOjjHw6oh0kksUv/kNbUPQEFZff90YVrA?= =?iso-8859-1?q?qcn2FooFeT2CmwNvQlYwGreDtCoa9hB2zsDeh7hy+VKHRo153Jc8rSesPCXO?= =?iso-8859-1?q?Nj57R9X0a2XvT260N2EjdRKaIXQJb9uhqB1Pc+UZ/8fMoxvzCStxFhABwpgb?= =?iso-8859-1?q?cELDqputEozZrfMTRERakQleRwGV2bo0wcvJeNjSG62sVrpSeNcjpFJLszcv?= =?iso-8859-1?q?Nv+WUWT/nU02pXWygszblBSjwlBLAMZdEmu5lvysF3b5KAtQYktRA6wEVFlc?= =?iso-8859-1?q?uVhVeQXw9Bm4W30J6HK0SI0LhZ1n+8TkTCjIONJw0uM728Pe+yW9Mtgyz7At?= =?iso-8859-1?q?fhed5kgvN2ND97mets9u4zRXp+Hi2ezRZc1M1LJBo0GkEVTgu6Z95DlHITvh?= =?iso-8859-1?q?D9gJDsw13k8Gqv7VGCzfOZY1GC7DPzzol4Eaq9UT84W1fJOGf7bLVKIoiAMn?= =?iso-8859-1?q?gVDJ3GBiWMhjJ7tJdLxtpTcvqO6xCbl7MGZVXJgwAtCXF7ka2CqinRx92iQ/?= =?iso-8859-1?q?z0yVaZDztPW9xHKX7Wm4/Cz9RPo5L5XQQRLmp0K3Ult8How7efGcHaMOqnk/?= =?iso-8859-1?q?cFNwkBddVQzCQYLrQyish6A/lQLZ9GcMqiyO51frS4cmU6SmXNODuzf6I7co?= =?iso-8859-1?q?kL7pbPmvf6iZUCxH8JZPt/1p1dF5dRuC43gvmkeJbCLY6CLDlgxgVTdcMJeF?= =?iso-8859-1?q?N+Int3/AG3EUXIOqAwRFW/Q8kPMF1d3QqkORI+dgryzMQ6Q2mmjT51wrUtcY?= =?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: 41e9f999-4b7e-49ed-910e-08dd524eccf7 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:35.5902 (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: HNzzyro3TasEnNdrjEOwtCazW7vPoR9goIMjONCqHrPOn1CKyA86E1rfA8JcLp26kYmHvaCdiIygVLf0SD030RdQVZw9z7nTHW2w1uwlk++1yZq/vG71/uRt04/mrE+x X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 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 Fri Feb 21 08:07:36 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: 13984966 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 D6220C021AA for ; Fri, 21 Feb 2025 08:09:49 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4Z-0004ZT-EQ; Fri, 21 Feb 2025 03:07:47 -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 1tlO4U-0004Ww-3o for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:42 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4S-0005j1-74 for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125260; x=1771661260; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4q+FNgT9HVsk5swidj6jJeI6FoYQL+sITZhOOFRxzsg=; b=mx1ZRS586zUMbJqHZZ/iP2z/CpcVhKZRF1Nw9z5/KbqP+JD0kgl0GX5s FD4MQyPasCH/9rbl5STJ83SLpCX48ejrH2K14sQiNHHlTYSoBeO3ek9aI XMSzx4j2fxFrBVBqoN7GZ2W+JGD/XCaAsRNh8w4XYF16/SYER9toWC5qC Qw2wwPoHF5a2vfJVSGOGFRx80rdWtU1H4n9ai/Qjb1QTxZag6g/UMl4oM 02grqmXn9lcPEb93th1TWFOjx55QLywtXlp/17Pf+YQaJrSy9tZ1cCkac 3GcDxmUE86QUv3OJV+tHkv5T+ys5YSflcsCnF1vjjMyFvZiDnzAA/j0JQ Q==; X-CSE-ConnectionGUID: YLsvwXuZRmq83KijIZl2Ug== X-CSE-MsgGUID: Hjw5MI5bT4GRZGLQ9inNjw== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394134" X-MGA-submission: MDEbh+Jbs1DblYRiT1T26lelfA5oOsJSLTpXCLTgpSkxQL7FV/AKy3dlfmzMR1LdtHQNh2/hWkzUeoqsslFgyAv+hGlpD6pCm4xj+bNxU4+c0ZHvVwxnYsdpAAOPEOPcrp3D3wbNsvNx0o7j6W8R+WQaj9hqSOqtTwx4PRRImZ0z0A== Received: from mail-db8eur05lp2111.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.111]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:39 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XxRH4jIoK2v3R/Iz5KNywhx3P1NF42TF+X82CphmJ+lJpTlw+3ewen8DHxVulGwQUMVCoy2LQl40rqgR8a4WoP350n34wpqzDglZ6pao3RC7jhvsnfIbVA4f18WSQ/0igK4qgLjoSJB3A8IrCJYJ+J8/sSOdlq7nA6NQEC0zkDvG15cbrqGiAtZ2UUGXUMBNVFlTMr/2zozm3MDAR0+qsT4/8osc/SC7J3qqao6i09ThF/lRrsBncDpfqkD3jJ9ROgLRgdeLArOOzRGYHFHBYV6nsWDvb4H7mr6F/L0DgVJ9PjNaGqnnZWnWhohgIm2dn7/pahbQOs5icCTy5v0AZA== 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=bLh10glC8Z4+/FwAPaa5ZlDUZhMFUpR4Ofh06jR9Y++IZuJPjY7bs6N3a9962xM1elz7Wl6dA0ScPzRikDTtjZbdiUVpl+4AiimUUFmwtJbOlODS8/p0SjPoOrup3kODJOC0KLt9Qqvs1fKiW6n1Bw02fz7pJEaGeHtaFkHLZvAD0gEP9LJWjlN7NOL8jXUy8gvad68IuLOshOjK09f02OSmG9n1qPsK/La+2K7EL7rzLbnoC8fEgJt+XM820V0zYLtc49i1NBTIwuhTwIaxoFthn7ui7R/ncp9cEY82nDOTRcyFVXwygYaCs3q3JQbh73L7yn6Q0zfHApxGlIXGog== 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=YMFSVcXAGAv5CjEtLO/flfWEOGfWxJkojL4Epk+jW2QL8t+Jzd8+W/mT1Rxjm9YZj3pSwcO2FaLIDKRfkE5V/qppE0Hw1yvEyNhFfTwPiDNYs2Nd4jMFm43ZIjOxWB/2V/bnGYH/CvAn4osAY9pz54zEkec2vs72UxpK9fGDMGWBFPjV0rkFz+C8AyWgadXsgpPmsb5LXdUn0c6Ctqxa7CHmbcf+gTxQWfB4j/BOD14CxtmZkxeSkrZAlxxq1rNcKRAyOP+ZFIpUTzFh1tYSZuJfEyCXdlFn7RsuwUkXg0u6tbJsFS4nrg6Tce47B+aj5YobjRkIetT4cUN8AgWMUA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07:37 +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; Fri, 21 Feb 2025 08:07:36 +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 v3 08/19] pci: Cache the bus mastering status in the device Thread-Topic: [PATCH v3 08/19] pci: Cache the bus mastering status in the device Thread-Index: AQHbhDeryfK2GuqB9kmdnlUzetIV/A== Date: Fri, 21 Feb 2025 08:07:36 +0000 Message-ID: <20250221080331.186285-9-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: d4ce08e2-ebb6-4e8a-90da-08dd524ecd7f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?bCdK67h27PZpBMcLGTP82WKhFj?= =?iso-8859-1?q?vrgku4fWh61P5k3OyZZOFMjqcjpZISaR75wByER6Zgg12i3AtQJUYdxGNAi/?= =?iso-8859-1?q?Rba2a38dpnBdtcy7/RECdLO4HlFrf1Iw1JIJLUhdMbITvz6++ur8blc5vWXf?= =?iso-8859-1?q?J/G9p8KfQuPBe99x7o5ZykV4J0P+1KCSo+lLotddmUUuhaaDqXQLCrzKPUEM?= =?iso-8859-1?q?MdCd1GFnnoU8Ki3V8YJF+/DE6ULb4iwDKyPPApIf4ysIlbD1GSfQuQsyHFZ+?= =?iso-8859-1?q?a9nFMFNHanJI7KIyBLRHaDDFB9Jy+T4ypHxI7L+kvIi/cWPcPXfHAyM0CTyj?= =?iso-8859-1?q?8Nw3FLpYDoJ9do7nUFlY4M7fWUWLkLFcsLlAtZc6ljrFaR20PljhaHFcKGmH?= =?iso-8859-1?q?uNx9coXZwNDN5u9Em8zCALYK5cgpah1bKvimCJEF7ffwv4eqMCzoZPTwfAJc?= =?iso-8859-1?q?vNRQ+xWaJdfBQBEtxyyTiNg4W3tWZK7AEGOmbiSTrryoWz98FtdHriNnQkxf?= =?iso-8859-1?q?HzUsKwVKZA5v/f/qPK20DJPn9SZq0yxrQjmhEdY3xihnyaRym4Mww9xoy8ay?= =?iso-8859-1?q?Y8svbHwLQ4wuFojv4Psr9gzbwbdrxzwjLbJmMGK97MxwyaG5hxO5SnKvLYFg?= =?iso-8859-1?q?j/ypcmEMh00RY3N86dfOuKHMyKJTRNLcOZz205jEXwmW0IbYDx01z7N/14Pz?= =?iso-8859-1?q?i8AkDSTqEb/Kba2FpceIf4naKq4mNROQ591AqmzIzAFK7aKMxS0hT/Jb11gl?= =?iso-8859-1?q?JuawefEEBfIanWAQRl9+3xVdEJFIV6CDW7f4VJZT0WVd4RXuzpWi0C5zle3/?= =?iso-8859-1?q?mS/dObr3eQ/dfqS+Z3KCxsH4z2rZeH0Io8EC8W+EwmLnjYu6ptPH23/i3bsj?= =?iso-8859-1?q?T8z7t7qp5LBNh/vnSozjZzgGTVKmcSD9+VSFEWktTXYHrlEqYoVR9ZKagcqZ?= =?iso-8859-1?q?wJQ12TkHLdenBw1lRLGTzMydBYqbtMvM/xKgcllgya7+Mja9n0sAIbA+uGCk?= =?iso-8859-1?q?/LyiY/ehkfQFFDKNueHJ96ZTvrmBBgYBZ9hpOuIpF8eV1p3CSHMZTSvRUiv7?= =?iso-8859-1?q?1BS1u3jzuhLOPDQftLec85rKrH8tujmVabSHmwsXQgpSOs1Sq0y6iS31eRJp?= =?iso-8859-1?q?xxcJFzcYQHuzXOf6gcn8y7jxZSXy44rNO1BCOFyMR/MA2Hl1vgdkOK9jc24U?= =?iso-8859-1?q?SYdGPAAfHJG0tXOHWhl+pLqNhSdYVP2Uh8o+46LZJzLui7MXk83Ti2GlBqWc?= =?iso-8859-1?q?H2GTJZliIgcfktjBd68w5C3KZUKmqYo6FN9IhscbMLm7g7TeJeWOUdUjmN+/?= =?iso-8859-1?q?oF/q5c+mlYRPHzf9TTZgeZaeov+RWisUpjbxiOq22LQttXsv+IyK5r2pRGxg?= =?iso-8859-1?q?+0Rg+FWr9Vwaw2PesZwFPEi9zVcOuYDzwESjNXzPzLErDW2dIQHygdhskTqC?= =?iso-8859-1?q?dGs705XiMQRqpm9672oeJnsC716pJARi1f8GlJgsPeHxsTFoCxZUmlaNszjo?= =?iso-8859-1?q?JbII8n?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?hPnis01xy6wuuWtsRqU2pR/?= =?iso-8859-1?q?6XH2oK3OmuooQc3Dq1qYmbuyoSrOz+V9vmgLoHDjrwrW6Z83Q/mPgDxzMRbm?= =?iso-8859-1?q?2ZPKzIr/fExsSzXGZ7oNMM2E1nERL1dnZJMFxIHGnyS0DW71Nohz44OBTRsB?= =?iso-8859-1?q?FLmpkFYAeanbqtqrS+iY53EymoEBnZLK0ZVUeDQRUYnH+t3TANo22yLzS8QP?= =?iso-8859-1?q?tqFEMEVf0TPXzcOYG7U2NNySP5ycYsv7+5ivDHTtz5f2W3jtG6S/AQW9NOdZ?= =?iso-8859-1?q?69i1jEZ8Dccr+ZCOXC1P/qVxDeOsv1idV2iuV5EIMs5goFK6YYKbZXAMYxxt?= =?iso-8859-1?q?irpGrwXLk6MSai3e6CL4cOSyGaQzE+f1bCjIJpTKVa7qS2RiMeD4Hhu7jSaU?= =?iso-8859-1?q?3j6HMZTYg5g8MRDpOIEdQ7KC8p+bxxByeMkfneB3o3PgtHPfwxR9XGiZAADt?= =?iso-8859-1?q?QLMk9G8/1RTroTlmDla50aOAQp0/uMdNvvKodKVrMIb9ZINdsBJLGQuf0JfO?= =?iso-8859-1?q?ah7Uc1zxfsJnZiZHCAo/PqRqj9sJqC64Gbtm+9WITUF73KcN5iiKnGE/PqxE?= =?iso-8859-1?q?pnXyu8LVmpVubETsl3hYRdaQPiDKp9KAeNUslaE1h5bj7HtZeQRJwADUUoGB?= =?iso-8859-1?q?l8ASvVyNIA0t+Ul3cP/7lJKb2zfyCGb9AEhISb/BrNxHfTgVjalEou7tRwgz?= =?iso-8859-1?q?8oM98m+zRCiL1OYSPdCe57ClmO6WtCTkyrlfbqc40HrMQOSloUYefw12n4VN?= =?iso-8859-1?q?RfDGu0YL1eaL0LIHzZCCv2z3pIftyEn9mvlATrI/FOqscoLHPwMx2bCoq278?= =?iso-8859-1?q?mLI0Xe+9MCfnl65ipzc6RWMcMnWK92wBN8e4NGouNGxfWa2t65z/E7fyfmT6?= =?iso-8859-1?q?XKxNn4iXo8tjATHAtexPeHFxY0Z1NTCZ/CSUOJvMsGRFmWxORsmg35ln4SyD?= =?iso-8859-1?q?W2DvlJQ2amR8+4pwN5G7NEB/xG9QSgMJnaOZLHLMfi1VSxf3g2OruuKjcCoU?= =?iso-8859-1?q?prBsi5SFsCOcmigwydwgJtHQ9MmnRfizHwtJCtFpiI6Mr+pZdjvlesJMx6W0?= =?iso-8859-1?q?z/6KI+yJyXbKOv9nZ32Tz7ODl+uZYbgN7wYAdKThax37FUB+fucyHHj/itpo?= =?iso-8859-1?q?eRvnUt3x6d4erENEBQ9s/bcSbfWxbVa9/vsHGJ/yGB1uw+jwgG9Ch61hwxI5?= =?iso-8859-1?q?Af/wzIAY1whBCBzFigkm9tVOeB6BjuVpDveVPt00cXSEYCigRMA5WL/nqzr7?= =?iso-8859-1?q?AVIMiS8+H0byfNZqxFEP1E53p9AxSlSExpPUY7X1Q5JVyLxyoLQv5a0+YOKM?= =?iso-8859-1?q?MDMz2EHiQiSDeVDLp7Cy/8hR0RZGdiyvzALkp039x3TZvXCuzWnjZBcLNBvU?= =?iso-8859-1?q?BHJnZhCq0HOFecQmtHRP516d4byLxlVw2SH4C0j9jdW6XcgVlJdyGcj6oLc2?= =?iso-8859-1?q?t6eMXpv3RIngU6gsP5Km84CdEJbQFNS6ksEdJ/fGyFWRMy2hjvIapaIsztOn?= =?iso-8859-1?q?MFx4BOcayBg0QYnJuOc1JcLt46kyKsyu+a16Eaq4Kt0sQQuhcwcLlKXFig5w?= =?iso-8859-1?q?xo550az2rJFix7QSIv4m3rj+rBhKUTbsWM2+wrAoQdEppyZNXPSw0/0Ur2pW?= =?iso-8859-1?q?1R6ghFbiV7bn/f7Ra88cL3+G6ZpLFFUege0IKkgsKVJVv5/84kpvQEQufVZ0?= =?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: d4ce08e2-ebb6-4e8a-90da-08dd524ecd7f X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:36.4768 (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: lh5VYBDJ308vhF8eyADQZgGuOfYN82FNrmbHOZogN4PtwfHVRYtchQNP/PZ4YoRvtv9vSJjpayocRD1ZGZrUwvSeDY4MEVty8BQuFv0qdUmB7undgASO3F7rW8I/QnUz X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07:37 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: 13984964 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 3EC2EC021AA for ; Fri, 21 Feb 2025 08:09:42 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4X-0004Ye-R3; Fri, 21 Feb 2025 03:07:45 -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 1tlO4V-0004Xv-Mg for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:43 -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 1tlO4U-0005kF-0T for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125262; x=1771661262; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=XhwWxkxj+r+rx/BdxYfbt+I91UI6Lq8eWKoAUnza1aI=; b=iC6qcTsG5nCKB/dmfoXk1vtTjXNOwiQ6kv8XtieKE6Eu1OtMhkLGSX15 /I4A3x/uNGzts73aXS5JJPog4SpoCICO9Nv+I5muqcw8VUm7cz0HZFPrP DvkuCUUsjoQrQPN03QLtTq2RWNC9EMJa90euFUUi5qwDpRckQnV1EYfgj LTSVhT1QtPoWKGymVgZwlbY2eJ8fiaqVOcGzqCmy/zplw00BEHhZtUiYB nP9jJZ+BirylzSxEMj5/ueqCNqnfqBwuepS82xl1GVl/8u/SroQlquogs Vlym6jTuXCtStES4btvE+B4OtfSm8cRAmY0F/YWCdOoGjsdggVi4IaXsm Q==; X-CSE-ConnectionGUID: aKPf1IpZRw2nzwnD8NV4UA== X-CSE-MsgGUID: zPIO3IfaTTO3H03S735UlQ== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836648" X-MGA-submission: MDGvXXpR3xqiy8YIk/FGbTxlEa96OWPOShFQ+oOcWOmA7HGuKvjIwNByQVwc9gf2ndgMpBJTl3NkRAjqSPqugANXrHLIwrEra5rf2zpKOuPYy7pj66l8+Krtplh80w7zIhFMpON1WPl7iuVjnYyGNQLiZL3JppfgZQihDI8n8OYOdQ== Received: from mail-vi1eur05lp2172.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.172]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:40 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LpdMrxV906jP7rm3nETl0d55VQUl5p0xDW75fK73l79yeEfCl0r0QzZt3f5lUS27Sds6ZMX8aNRl8HYO9fQjUdiZ8QXs0kkzMjAVMVKKwX0sLaB1uo+ox3Q2NewVPeZZG/RU1GXebfV8FvCb/9ChXGFBca5Dk+t0779gqzKr31YsYT+GSTeMWHU/C4ccSs795u2HshDR5cmvlx0bn5GvvuN4lN8r69q/MWJ2niWCMwHGppOitQhyP/aARYuI5KFKO92Yc7hMIsgIofg8WUluUJVaxFCkvHkbyKUwXjgDHB0Hfb1pDypeBI3ZtOUINryHH8i5LHVU0Ao7MNTndy38xQ== 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=M0gc+qrv9eEOwfASx8DRpecv1gY5bVEMDFa0ekvZYcaUNUdhf6DsTgn36cGnN1dL24eDx2lztDE0dwqyUH/hldsufJuPGP1ShelRB4XklpLm3JB8sOnE4OU3qhOLvVSPoT2G0oq8haplVhXd2qFM6pa3z60oeH5EvJ+zBrf6o2hElukKbmsjdbaWklqUa9x86dADk0808KsDxWr7ECB8efsXF0SrEsBL9b7JPxu9XhdstEH6hN4YWU0OV2abinRUPSag/SjJsX0kumkopeL+UsmqKfh9iWMd1NcA/bB2Nm+TbRBn0S5kadwMpR/68g2qyISEp/qDmkfNofYRTRSWLg== 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=rWOnsM4ANUCWnRv6rEUKqYwDkSfrm4U5RLUw9bOFFLjDXeCDg12KAu8OauIBbr9dnx6hMoEenulPLAibYwBKSQugPewM7fJUpXlxm1EtsQvSEcmOrqa/syIttEcRPnBkDZsO7Xpk1chzFOkJV6yyQw4bg26RLP7P4WLdJ3xWK5hpinKj9rlsWngMqmlDGIF3zZPpo3+gbpZHRmu09T6uUZtrt20LURgp6WCwxIMtsEJSJ1OknaOdVZb/SZHSS//+gfzKqnmnUTP36Q0ogN8D7Y5RpOP/o0XSFsDVd6LDBiyBY5DUfsFkvYQx3NjbjB5WglMNujv18xSXjPn3j4FHjQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07:37 +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 v3 09/19] pci: Add IOMMU operations to get memory regions with PASID Thread-Topic: [PATCH v3 09/19] pci: Add IOMMU operations to get memory regions with PASID Thread-Index: AQHbhDerWrLlxqejqU6iqmu50TquXw== Date: Fri, 21 Feb 2025 08:07:37 +0000 Message-ID: <20250221080331.186285-10-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 0cc42c02-1b9c-4411-aa86-08dd524ece42 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?yCdjXvLG1V2/eVhGwDzeLWn+QJ?= =?iso-8859-1?q?hvP85wn6Qc/SziYs7P4ZzLLPz7iHcaWTi8Qxv5FrbVKZaboH3qpzYq3guPAP?= =?iso-8859-1?q?KoLhv34DsEk97yKNbrvsxChVWBKe0kiMvqswq7vCu1HGWnPG47yIlpvWq1CQ?= =?iso-8859-1?q?KnP3JKyX1x2kog3d3nO599Qp144In8h+qiw0lFGcXGUi9widZUUdJrg3yLi9?= =?iso-8859-1?q?NGbyoNDDLL/lnFL9srr0c+t7342KXJN/ziqVa9jL2STylENHCr2vcmzpXAfb?= =?iso-8859-1?q?Cm+3M6wx4JkPBZ7VS8k5vDh/W9hM+LHXBTYpWq1Oy/Qx27kjdvPLelIL6O4X?= =?iso-8859-1?q?TV2tehLf/qoGU1tceFK9mU7pDAUOMoeG0yaEHEXJE3C26qohvcmjXSOUP8ci?= =?iso-8859-1?q?bJoq8pkwuN6NWiKPE6YKtKERtISlV4klB1a4ikMk+fGe7ELaD039ZquAjg/q?= =?iso-8859-1?q?B/21EwcwNEiQjiVpVWkD+CBzVDuBathMBS1DoO0zvUjA80eaHG7K7i/qqpSn?= =?iso-8859-1?q?5jqP6mwRHYQKpdyXbs7StgStMPMq0axSMMJjWOUJFZ90kLt0EVteIoLLDU7j?= =?iso-8859-1?q?6JIAeEs6KbDP8LvMSjYv1IyR762kMOQMI1TzHoKjjiuN4ovDxE8zDG0+10/a?= =?iso-8859-1?q?tAgGk3ThSsZYVRKCAtPIMsYTlobgt3aVLptAIDhDC8JvPCqYzcq6mjgh8d7C?= =?iso-8859-1?q?o+/vmTnnfmyLZDdwCExmGyafkw5lqYuKG4JbMDzzPzhXse20p62CjSkQUv4W?= =?iso-8859-1?q?d9Q6J+WRVK23DOyE6HAwHy1vtFRo0oL7EJRvVPWGjmIirEMttAfi+j29N1tP?= =?iso-8859-1?q?fwLO4vN2rb5v/gGUJtdT3iTlcwqu/25R4c4g6bf5fUFRxjsY1CiJhfFQB6wR?= =?iso-8859-1?q?Y3ONLeiPM+CCTpwV8B5JQFOWpWiFemmTLl8WqNo/FeyCO3ceiZ3wkD/JDzjy?= =?iso-8859-1?q?8OqFAynxB9m8QNydO4f5wCn70G8VN297oTFl4hPew89JcGjfgqt7nJh/xsrq?= =?iso-8859-1?q?mxNrQX+xhPcvxYoK6zqhqblHvIh0Fw574y7I7tGoG4SFloq8J+R1viZ3iKiu?= =?iso-8859-1?q?q4RRr77YIoh2EdARmhTfz1Vfi1EOqmpMqsqhAeVcqRXm/eoFXwLzaw7W1321?= =?iso-8859-1?q?97LpmV1E/FPKWt/dZqnmDoSR7l0pkawOslQ3L0yRpE2LhZ8ZRX6QEnm5OqR2?= =?iso-8859-1?q?YjZs5b2AyKiORTzYmgkANXZpPyureDsqeJAbieImAviOsQ1cpfS+fa6A6qAT?= =?iso-8859-1?q?kOBsrJTfW+lot1KeeyD2fDEjULD7a7aJ92EvzCXEpt21Y59gAfruSPSRZqHa?= =?iso-8859-1?q?t9MeLOn0AdfwW+/wlx5Pn9neeLMV7gzt7YaGcs5bcUF9q4t5pw70g89QH636?= =?iso-8859-1?q?f1LAcN1m1RuhySsWz93z5CYu5OAUkfaK+Ks8LslAbTi7BA4GBF7PAAEQ/pF2?= =?iso-8859-1?q?ExP6RLbndI3yBTVNPKNYVBYcywht+QtmSJFK90tVvO8dHmhxoUPtKXJh4LDA?= =?iso-8859-1?q?c8lxZS?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?H4l9e1s/U3/bQsGVSpPjUXA?= =?iso-8859-1?q?0kVi7u5N0kanCeuOw0w8JCrxta45kaaqykRhirriQe6+eWVQGj1yn8kf1dRm?= =?iso-8859-1?q?wOOBmTwFfIHwWga595NVtd+mMHvKlNOg1Eby0zNc8Opje8/3wJT1RUfLi//1?= =?iso-8859-1?q?8niKMe7bcMOdaVpbAyBYWSVoPAvDlAMyTG/atAVq1Ymx5gGXkmANmERq+N+e?= =?iso-8859-1?q?6pdUMUxvBKUUykL7DCAe43rtriCy/XjVnQH0ES79KrP95QlSPFuXNhh1uwRr?= =?iso-8859-1?q?b8nNkyaT4J30co4YDzrt01jWO5zukESFRqaaSoY8fKqY6c6qq4zBBebjOG/1?= =?iso-8859-1?q?9jyMNdhbDNkWf7s2vRdoDw17gMcMc0YUuhgaK1boMGW+vJ9cHOWiqOML2DTO?= =?iso-8859-1?q?XS1bbbn14UY77vcAXHtGwaeOk4J78tsVHb5LyLhIxxesbfUpnMuLHaBrpyT3?= =?iso-8859-1?q?qZ2/BvNtcjDJi0GPtMI392Ewqg1BbTtF6TS8d9GNT0iShYVb5meFJDMU+trZ?= =?iso-8859-1?q?PVd/Vj74h8+Zk0yj1i17Sa9nw5EEallM3DiOitZKXDFKdkMXhg7OCxVKz+12?= =?iso-8859-1?q?BCsveACmsuGGcaUa9tIqCs5e0sdW4Zy4wVzcBsaKiZDOh8xTbgAF4smxnWXm?= =?iso-8859-1?q?///qFwe2pISDSX33+TajB5fIqOApphEjtNbsRP9MRX3s+9XgKDd21rva1Rlp?= =?iso-8859-1?q?NA7T7ClnjWIeOdWv+t3ZA7950O3ueeVb9RIsF87D9jKwzjMn2U8+jnPRXJ7D?= =?iso-8859-1?q?548x4ZD8/cSMe+6soUovHEWoPOPZ3eEQvINm0HFL17rSIlaG5g+gaNUvE5NJ?= =?iso-8859-1?q?DnXt8zzmcW/MrUbOCZODTdhQMhZvosmn1fjvu/fg6rQ2t8fdlwd0VGvDT8DR?= =?iso-8859-1?q?tJBdNVyyN5887aEj8LXSyt+f3PVX5GVvobtKWvdU1AmQYF9BjMFhNTmxqqY+?= =?iso-8859-1?q?wSnjamtHd9us3YWrBDgkirM3nixcT0VckSyLOstYDiFW3qr9zdef742e0XnK?= =?iso-8859-1?q?HzdEjH+dl6YhYYZ3dKUv7sXM55BoaNc9XE2KdTdQhndFSIamAlxjP2TJNwkp?= =?iso-8859-1?q?ZffEFhNorWJb0ObRQhOXRGVkB/HosoNcnqCgBnqxaUL4aq0eBLVtRmOwDbZO?= =?iso-8859-1?q?SchzVK3eF+MvfQP3FLjMn3OpYtilkrnxCIqanVsEtatT5XMedyS7q5Dvp6dE?= =?iso-8859-1?q?FK1n0/df5Fkt+FP8LWZOe8pVx32mThhl6Ny0wz3yZVrhDd+FTakjGiILJ5xi?= =?iso-8859-1?q?oIuSgEOSTN3Llftb6wRekr6sUV7/MUfIu8wmQR4/n1JPeBaGt9Gjm1j75wOg?= =?iso-8859-1?q?/BzeQ5xWPITFndMU+gceTFgyVlShMzDJUl9ne30dLuYyIPaQpec33jS1r/5z?= =?iso-8859-1?q?HGVQe2ED3wtJS+k1E60neFH8+45qkM6tVgTlUWwz4AgZrhCl/BctZSacsU5A?= =?iso-8859-1?q?r2N+ymSAnskur8mFOL1Kx0HHnc3TVUpdOPNdMQSBLHKO03CNeFCCj/Z9xbsg?= =?iso-8859-1?q?OM3BmwIBJ7rKevJd/WHBk29VCFlGmQramaVryvxf6BNpv9n9E9JDZNkCxQcO?= =?iso-8859-1?q?+kfXuM9PjMs+c1aRsopFo8GwpbKNQgi7lbA1MdZGre37AiBrr1RvYseZAKa9?= =?iso-8859-1?q?YpATIrpr4hnlF850oPGonraF00GaVlH4TKR1KE7p0I/ct5iig1Sv+GuWNMYQ?= =?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: 0cc42c02-1b9c-4411-aa86-08dd524ece42 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:37.0635 (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: aHMnMAse38LLLNiFgXiimYUmzhZDO3GdpBoRS2beBQjXhrL0i7HBIdWuuBfypVdYnW+Deb0d7q8WVHV0PfjqObjtkHQ8uopi3IPVBpNdzmqoOjpjzuDrms7txejfeFez X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07:37 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: 13984971 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 D9028C021AA for ; Fri, 21 Feb 2025 08:10:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4d-0004b7-1t; Fri, 21 Feb 2025 03:07: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 1tlO4Z-0004Zd-HV for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:47 -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 1tlO4V-0005kU-AI for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125263; x=1771661263; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=MFzdMfJRvzeRB8KN3cYhlmgFrM88PNKvAD0/WZFjBos=; b=WJLRIW8fxMNGxMBKbfQYFfhJ/uGymRBQrIyX2/83qH/ksa04lvyjrEc0 Aqoz0Sbff+jbGZHR0kPoUHaNcMPAWNs5z2pftESSQO25VmaCGRSpRwGvy FOhrP7Cd+8TDus/MPZAxVnkPmRt1ddXH8QlNIZFwByvO5n+N9vE2HGBbl q1xweZBW/RsJ5Nuu/2hMY7utmVfBb8739aUB5baLsTJ4NXGEYYWOXZoRu 7dUH8mgyFEO4k7wo6UTGvBXSmMWU0xT0jmmc1R/gngKYU8atRBUTTeTqc eHo/C5Q6CmqjFIX69DIChT1x1akmA87OyO+kUyrD4xAHcQUi5hD4gr4R3 w==; X-CSE-ConnectionGUID: urKhIuXQT6yNVDOcETfqUg== X-CSE-MsgGUID: p4yP/Cy7QEiZuNgpJKlP+A== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836650" X-MGA-submission: MDGV11rUnxbRr4AjKH0BQQ7OgEdqymvcbaIDAO9OoQRctBk4EKWx2vsVx8MZqW8qLfEe+ttx8jSLZoFCQWcnZeEv4ZFu/Ex+jyvQsrg2XTNpFSsMLAcWs+TKnGA7vLT0rMx/TP07sR6joiG4YTyzU81t5VJfTJQt6mxeIVRo2hM0iw== Received: from mail-vi1eur05lp2172.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.172]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:41 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dLqjK8moKMnB7hIw92k/WYhW+EreWTGbZqhuLZ64wV/KsBDfMrzljaDhF0rOTfJXwpjcbEG4N0oldfMZRB2DOMTETRz1MubxdbhCgk6lTx27IQFxU2G2jUuiCcXBGKKhbUf8CXOpKS9IoZyRgjwhnVcPIGtCm5CmCf3DpiZq4ZqBPn7RKx4j2OWoKRX0HPbjGOh5gNMtY6Qu31adt1E/uB8fiU5cacfAc0FEyTsUGX1Nwbg7V70JOQHN3oASE/sVEYPNrieX7wgRNjltBeOGJlXUdvbuTLozM6XwacQPXrs3LEDqksoVjYAAkSE7AuMf8fWBT4ojdXjwLkcavrFqiA== 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=ZtdngYJ31kE2Yg0mOM4qPHRYDI8qa0KQDh3xLiIWfqtAS3qCUBXbPzoqt4/6GK3erU0oXWzSzIJ/9Qiq0sloFKvuBvKtGwlxlDKdiVuPlyDK0AI9XXtY+wXNs/pHbca+euVBfBNuOuMI83ZADwyKCGTE8wvYYclDodIgyNwdYNUu7WIquyKo8n7gxV2BMDjon3My3bWXhhsLVpMlPrdDUQMPfRELNGGACXT9B9qtFgJhsVZblMsS/p7vXJNc/EtkCBDX4Eim+pOGMvd+hc4kg65XzM38F34NZ5rzzdL80/SzGd/ctZbshDfhYy5btIxPbyy9FxYSPzJLXzYHMqCLZg== 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=IYdEyLIwl/eD4051wmCRhDV/QhR5zP+HV8NwHaKjtpI9mK6b49+l8JwbuWwimxTFGFsW9EHcf6AG+0uUF2LcMy5Y8Nmj//IfKd6FWyFDW5uPMoeRG03el7TN8PcU0YVWMouZNVjZn1k7GGlXJQnjfng2jloh7EjhCfiZlvXkh/N2FZnTKqYPWNd3Vb7Krp5EO7V2T45R//EnxIdc0JX/gvAAENVvI6LhU8Z+LQUsecNiR71AIIAE+iYwJdn57IVJEF4j5SuRBYQBlWR+QnsLlZRsjG0vKa6egDi3EQPJmOacQgrdoLkrxUPR9ItyBq2MZE6NN619I6QwiH5LzYnJIA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 10/19] intel_iommu: Implement the get_memory_region_pasid iommu operation Thread-Topic: [PATCH v3 10/19] intel_iommu: Implement the get_memory_region_pasid iommu operation Thread-Index: AQHbhDerjHspUf9T3kODDE5uSoKcSQ== Date: Fri, 21 Feb 2025 08:07:37 +0000 Message-ID: <20250221080331.186285-11-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 48c5f938-b504-4661-96e2-08dd524eceff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?b98AflzcGX98hn+9Q3xYSoXxTs?= =?iso-8859-1?q?X09NSYCM7o97uvBwaslNkRDxbmtYHoquTMmLg/ZqxSzj5jV6upZ3kqg8CtEP?= =?iso-8859-1?q?uqA/3pwYArMm1JqU2ODOQv9FqN2Smv6zcKUIaBWd+khSWPtsi0m2ctwjt9Xt?= =?iso-8859-1?q?3FXYBDqoJaCqRsPTOSaSC7t6Sq9xdhYgxjA7oSugH5TfedUey84+kRodOHgG?= =?iso-8859-1?q?BCejYtm/ZEftqzebRcYufzh57k6r2wAArNOTGm13NMKQpwNmwjkjvZnespSM?= =?iso-8859-1?q?qQriAsGgFt72alh3kvyOpwNxdfgtYBA1uelL1GcT32uDQPhDAf6Qh/XtSl+2?= =?iso-8859-1?q?D7pKufWx4EkV1RaBihkOeDLuW2wnGMcwpEl3xVN8HXrHiMI9tv1EcXdCrHsO?= =?iso-8859-1?q?aT8qGl0xP3n3ebv+/4DtCmD5WrDqdr9dmxPSD22yu+pRgIc1QoRyRYsGwta+?= =?iso-8859-1?q?W5hPtGtfi12O14nSA2ydGakdBSiUcu1SjwoOwTLcYCMUkHd858dLhuDmOR78?= =?iso-8859-1?q?YkGFfSv+qH+1T3mBPXs5CFqfcHl0lgn7HDe7UpG7djjJkRAec04Jdy27PO3f?= =?iso-8859-1?q?fYiPLY7MhBxPjeLE+dHyRPbInaJly+VAcqVzW884uPeJTP4BlDG6PiKjRleG?= =?iso-8859-1?q?1RiOZTL8xl8SSeOtFTG+Hn7M+YtP/UYZcsxnXj9Bg6fvgoS/C+PYqWnjujSF?= =?iso-8859-1?q?ecdvtYRpu0DiJJS8q9LpTmUcVKn6Fqy2Cb5vJ6lmF1atow2bv+7y0LjFh+ml?= =?iso-8859-1?q?2053zl0BTGmpF3tqXI7dhKWYu0Be2FQMZXPxrXuaTidG0sYSAeR2qAk+i3Ey?= =?iso-8859-1?q?o6LaN5fZaHrnfwaUungu2Nr7waY1/aZ6tDUsSPIQa2TiYXIQTQl20aORGJtf?= =?iso-8859-1?q?LdEGbg0HvIli1XTzkmqvU9G9uX6DZTvtsq4Cv81bf36u5Gm1SciuvNV3rpro?= =?iso-8859-1?q?RoNPVpZSGFCyME0YZfQP8YT5wFKUfyL+Q+SrGz6gm6cgsbb1pivA64ePye24?= =?iso-8859-1?q?T3J40NJunc6ELFdYqLBSnM1gh0/Ijkr908hDbSeFKChv2gZbHaYDYfmrsOdR?= =?iso-8859-1?q?QKDIBB5SXVPKjbz9IGnQleoEIRD+S7BWLSM5Xpllim7x//oLazzYjYbY5FQm?= =?iso-8859-1?q?V12LPEhovLR7BaWQ4dFyWEr5tp5M9yuSlFsUmALUb06DprxLf7TRpnMQ5xxk?= =?iso-8859-1?q?kL0g+tCDTmMOpX/A0Xs/CLddxPxSwnWf39ItR4TUntVOZZ2rs8GI9FpSSwgZ?= =?iso-8859-1?q?XnYau3jiSZ5uwaQ3hvIF++KqbZ7MZdSmXcmiQcCA5Gh0imEmTlxO/6SOfjes?= =?iso-8859-1?q?VwcTH5LGjpvUFETIdPNIXZxT4ZT45ygDft2Z5GGRB7GITI1d3VaTHi8vMGIJ?= =?iso-8859-1?q?6q1C5OGu9bVOYLjdc9uw4vCbIhzKSRZBTDn5ADpjLYuIAjw/aqD+QuTU4Bpt?= =?iso-8859-1?q?Dwc6HDw5YWSzVix6IKUKy1f5B+l6914Dk5NUIUDhF+t7ZaHuZfOjAqJozDgB?= =?iso-8859-1?q?6MIbmH?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?SLNRSbpj1tUzrEIsqsXSiVA?= =?iso-8859-1?q?AuWGZNn67ytWgbhOaE5eZDonTxBnVtRHYtMyDlLfj6mhzie9g12Mfgujx02I?= =?iso-8859-1?q?xVgmTdTpeKwBzo7fGKk+Q/DhMTFVNtwqngnFmAREKXyEjfkeItI2aPPbTxfP?= =?iso-8859-1?q?HbVeYQ3PxvJna9olR75b6riOCPp7boKt4IDV3Pneml2q83dpMVa6rtcve14+?= =?iso-8859-1?q?Y2reAxtJrLg6xrBxEEFOUdfnUnNS4wTuFd3/hDj2r1D8AxiMS4c1WUxaxDX+?= =?iso-8859-1?q?xh91Qg6QnK3Q6dPaoBTDxoN0d08nFtt6MUvoWDA2CkhdHl7D5sdKIFPie5Ul?= =?iso-8859-1?q?4yi0S2DfITlr38IWfmYQnVMXiuMZ54JWiIWPvJ5fimpODGSwn/2yKWEZa9Bc?= =?iso-8859-1?q?If7pE5spqpbgrQrEo0jLWTxmUZ6QuZmaDeHaLlxDP8o5iJnbes3qkFNGAAry?= =?iso-8859-1?q?zk6r0MRgSjv/CCt4s/8kQuqjK/Vd+SLT4Ec1NjqafguaIAoByKvRPdfg3rBP?= =?iso-8859-1?q?gKa24dgBakYrQSRbwVMwTYo64WnuIkgHJ2ggP2M2YFeYHBf9TXys61oIR3m7?= =?iso-8859-1?q?m9NTgVz9yGP9/AWmPYil5nTNgJSy5FnPHOHgh6hKMavPjVrI37WLTVuyu4ca?= =?iso-8859-1?q?FCLQxlAJ++E9JME/8ZeppLmo49OiPb/lGLGayaDnBmOGc9qZgZ5tCYGoV2vm?= =?iso-8859-1?q?aqWGY6DdmgYjI+Rd0bKKFFLfOYu9dYkSfvQHyLl+F0NpgZxHcv255f45X7uK?= =?iso-8859-1?q?zzCAHVjSLec/L22qNvxgMxUVzRQU9frQRb3uIp5v3T8UnAVZPHbuKACLijy0?= =?iso-8859-1?q?sMxKX5OyDSolAcsMn8+NquG0Vv913DIIvJLh4zID5pFfbX9HkNXmj29EF/HI?= =?iso-8859-1?q?JPB9ncxO10gcq4xl9a8kBgIkA8Grn9V0MGHUV9NIN5hyNwaJYXMRzojPyGCf?= =?iso-8859-1?q?9zSEE6Tb7xBlc8SEg3ZFdr/Y1Rq3hZr8UIwgB9Pj7xOPQylf/ia48qhXJFa/?= =?iso-8859-1?q?LUB4R/sUWM3XiEWbD1YflRr4CmH0mkXRSsqxKgre8S3vEGaIhbeIMeFIoPc4?= =?iso-8859-1?q?B7CaWynmVHnIK4QI6ixkO9WN3xGM1qwa2PDziOHyZQlVbvS9AI8oscKyXUww?= =?iso-8859-1?q?y7bIXHwdjKjGem6VAL53Fj4qqqfPBg+bYRHifCvrfaOJ5E4Hl9VQc9AwuTgg?= =?iso-8859-1?q?g0Gfp0GE3VzbxuvEsHVawV1SdMhtCquF1m0BQ5EFBXHvnao5hfh4r+Jkb7we?= =?iso-8859-1?q?4wLadH7cT4N+KTAyh4pmhWN8qr/AHjAS4Bx0iRYEvtdengccDl0DOV8clmwN?= =?iso-8859-1?q?fhtRlM+M82A8dR/wpM+xJ34jBhx+lk7FvXaIGNP4fg9p5ftrIrZZgMdi3kKK?= =?iso-8859-1?q?vC+xhFdOP/sfCMoF0syoXsN+PPY3iLxCXCZ6WPAk3tJEud3NwBwTFLOZs1N5?= =?iso-8859-1?q?Vbgs2ouIFfjI+wd4nO0EBT7Kl6wKsGJxcV1rwB/39+ahj36LLwE4FAOqw9Bk?= =?iso-8859-1?q?RMiJEW4vBd9Rbz+d6/AD717X4pP/mUcSAsS5HVMwlkDP1JWBhzcZkbssqAXm?= =?iso-8859-1?q?7UZSOzXRzuM34ZIcm/2CGmTSpwimkX4+gf/susKSuBcXDUVDBvZCFIdDOJJj?= =?iso-8859-1?q?tFcR4HgjjeY5huZfuPWpRxdcJ3MUWImhacUAUpWB5Sg8eFOhg8XQz/Eyo1GE?= =?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: 48c5f938-b504-4661-96e2-08dd524eceff X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:37.7599 (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: FvUGmR8IqFVj396tvD4vbU2L2pgkM1huAHA2TRwHuIDvsOnXXvC/HWTrfgBwuh/MvDqZNWSXqOyG+OdQkW+Z8zEnEoukssw8sDVcR2Wvpl74gIVWvCIxUMZFELKhj14n X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07: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: 13984965 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 2F340C021AA for ; Fri, 21 Feb 2025 08:09:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4Z-0004ZQ-CO; Fri, 21 Feb 2025 03:07:47 -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 1tlO4X-0004Yd-M7 for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:45 -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 1tlO4W-0005kF-1d for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125264; x=1771661264; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=V223gIkaKR30sNUdnEml5N4wlPmNOlUUGNe6oZ+paVM=; b=eZp4dZhk3U7XBUpLl071utHNiP6u0opaR9iT1DG9gjBq0l+wCJdMdnWC YitvyztbeJBBtAO8Ri/Mot7vNhfAbBR6I0a3alD3GAzN+uoRjnSK0StCd XbLRdO/mfkxXNUVYyGIhTVK+24UFei+A/D6BMQbZjvcV5W2zHpkEGFxD4 dA8b+n+j+Pe7e+4vVQEaJfGfCD+al+bUd+2dTtKdsQAiqrpFsJT7QzECO cu0DXkOzBD3xCBvRGJOJbIunAy5Q6afvtnUQhfemrPZxciMuvSNQGD9km ZOzJ4LBbxNGkAvFN2mLyX1HwyZ1WqWpg4XkjQAaYOrlYi/LIbYm8oBQId A==; X-CSE-ConnectionGUID: 0PYWi60MSsutqnSDXW4sYw== X-CSE-MsgGUID: NkdQhLKMTJue42aLwtW2nA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836651" X-MGA-submission: MDHOVzXGxDUSe7RDM8CN5yxuTbWF1BgHrO/EcWgwjWTVsDaswVipfBerERInkdMbnuwM0a4et7sE7azWu/wlHZhzdpPZng9iV+KO0Kk4jmlSjNcB6stMsFy59DVLGlM3UDafwommc/BD6v3k8d305MleHOscLJvgvOqGD7Jf1Y53+Q== Received: from mail-vi1eur05lp2172.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.172]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:41 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RknoAxTUKknUkJIXYRanzkzjPN2tA+WiJczJBkyX8FWM9h3CVfdRyOovOvr+VVmo4All4ewTKkeojlSDxZM6yBccIRX8tcZb2bGIU2pAvv/RyKpKBvfa6pLug9O51YbU4wIkPS1OmgmMyRMqCQJ1lXWG9gV5rZJc4VfIn1QKx4+39sDAxi3XiZEo9CW2+JiwS+KdjntIykMBqmCbWxDmNhmXi7T27yVlX0CPJ4zfS3eVhqIznsTBjasgBDpGlQFZcvV6gKKXG6FSbadCNhnZAeOnC1bwQD878dTVuF5SdCmVXNVNGJyDIf/Z2WYIhKRi9diMPZvS2KPXTravnRdtyw== 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=Gk8GDhYB8B/eOBgkcGEIMCu8O3uQcValaigNfEzcKDAe7TNuit71ZnZ8dNiPvd6zPcOBP/8MdRsxm8VEHFpyllaOgmDj0cM1nYGAPynM1aXIoeazq+GN9e0hi54QbOate/YwSbUAXt0MojTT6w1Kdb39ff0w/vrK9r3EgRN+NdG4y2oQpVDyhvVSVx9fkPXJqP+Q36eMsDZA82fOgkujQpc4aj+0eI1nN33xj5V2DHfrL2ac++UM5NpALvQ1t+8WNoWYFfbz5s4mMNM/1yfP//K3G2FNjBxc/J8mvrPPQiKfEjrWBqcWS29nZtW4sB3DCWa8F8XpKpXM7tra7+Y0Dg== 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=m8y2fjwldsLgY6vhTnaMtVGMEeFbAms/TIrWM+naIGhGEGHwCP6M+ptkYG0PaP+YhXvQM7XrzKI5PVW3/4R3oNMEbzOQgymFEvsvKYLoHrHdJsnAuGnA+hAwxuADuUegAQiFCPqTtuA4dQWMiHY9mVQnWOpP8EEL35J/sOg8Y/268R949CEkbjA2k/BhRgqZzpGNyTYwtXKAS3K7dwFykVWkzRitb3BhFNy/eS0YcNwwGQOyTrGnzqDWt8kiO/SrvRSeybZhegLN7YOTYNlsFGjl+4UykWDU5l50oTH3c0cYmSBjaFNsHjJ91hcja5GxnEuyblkGRm+7NFqhjvP3vg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 11/19] memory: Store user data pointer in the IOMMU notifiers Thread-Topic: [PATCH v3 11/19] memory: Store user data pointer in the IOMMU notifiers Thread-Index: AQHbhDesMr1WaksI3ka62I38Wp6M0A== Date: Fri, 21 Feb 2025 08:07:38 +0000 Message-ID: <20250221080331.186285-12-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 74763b64-5195-45b8-2316-08dd524ecf23 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?VbjkcH3bYfbDsjyUXSM/WnJbUw?= =?iso-8859-1?q?pCKTsTmHG7yifSSQUhmtOxgEwOAaLkxi3NYTyCkHIkEF56qce43xLU3AG6dB?= =?iso-8859-1?q?vJOMYYC5p0Mh8pl3eqWeR/hmSp3ojZZfnI5DcJluJnGLM0togEqO/ixgMlPZ?= =?iso-8859-1?q?8pJEbc8NA3HGis63QxUUZwBGfucW5IfLmTXC8wLPG2/Ngz2OHPJAGuJVvhrP?= =?iso-8859-1?q?z5wM9ZfCVj77pVWnbIflJHIiwubG1y46fnNDY2fMOd1xhp7qMouyWO4+HGFM?= =?iso-8859-1?q?O7wkBflAbo2RPP8JMoxkI26TPJAJNrYXd2D9A8PVQwtwigMrl7PqpU03pOIP?= =?iso-8859-1?q?10K5FDvCSaS/6fg/Vkui8jiGfi8VkIZ9T/MCxDg6jUi1Gpcb16NqNB14wX61?= =?iso-8859-1?q?BR3JeT7WC98Xto5JA+htzvlwR+qtdX4d2ypCqVY+txUjtBUMF6Yhemv8Yv91?= =?iso-8859-1?q?N9U7mVrsJXJyLTLSdjo1PfNwLFw5dWhLgzbCQIu05gWFQPSL/QLkJZSXueF7?= =?iso-8859-1?q?sEz0dLEyW+jUl27C++I+hNuxe9KvZQcadhD4iZBnA3HT+BNzQ0R6lNl0cqa+?= =?iso-8859-1?q?9E1sWMlet0prHb6T1fJJTGe7IZ/IXYZdKJADfdHSpOW3lGaBSuJYcAVbuJdQ?= =?iso-8859-1?q?NaxAb+pr/aBX9RibQk3BrUtg7V4rs8jBJw0+dh1dp5aG7y6UEOZrLfx3EzBL?= =?iso-8859-1?q?dWeoj7JW3Ucef4foKljo6r0NW1me3sHkxmeqLST+Wd3vC2xKM3wD9Sn2L0CT?= =?iso-8859-1?q?fCyyZo77V2QYkoFq3axpsKwM9HATHCHCQrX+KdGNQO+7LTc1v995yX3Wrfin?= =?iso-8859-1?q?OSkQM9XRwSDi4AnDzEga6wuWyKIXXCI2PAtwP698zZgdzdtKVSTPGCIdMdaS?= =?iso-8859-1?q?IrdPHZwikAL+PCHjzin6QL0CkJEedbu2PRceqwJ38W+XzQNr6vwopW3b6iwM?= =?iso-8859-1?q?PpdtBMdQsaKSPm59OVxfrppYKRNFSuYIadUsoYlpYdkDKbgzOYtSjpOFi8jF?= =?iso-8859-1?q?KMwhQEd2BnnZ/xLQ9l9brt/VW9pVQ0nW7UF8YPacinu9pDkJo598rvz1RVdK?= =?iso-8859-1?q?YXdNgvXJkv3rw1p9DkfLG1tVjd/9Kz6IeIcuNQhCee4D1uRKDKO9Sj1CunMV?= =?iso-8859-1?q?Z4Hz0UdsPCtTm1ZqNtRwGtV7B7PRrkvxjAiDoA4JzojVGvaAk23gqrr/G1TY?= =?iso-8859-1?q?jYtB0yDvY0fJ94aTMgl8i/Wl9zOfvPmaXfyV7ZqM63fUzDAut0eh+vXvD1CT?= =?iso-8859-1?q?kkaBx5ZvUuS64ZE/usZ7SciiewgQ0zGV8UhuUu70A0N+Sw0k4W7Wa09Ty+Ea?= =?iso-8859-1?q?8sz8rA4SaKGp2kxCecW70bbkD4D3HVn0qA22HFJMiUBit+N1yT26W0PQyYp4?= =?iso-8859-1?q?0wEP6491obUU93VDcLQoUZWnyiCkuijNHChrkDvjNlJYefwY80S5nU3sr8xe?= =?iso-8859-1?q?KgkSHfz6qXnBZybv6OoTSbSDbGfwXwVM3QCWEi+wEfX42hVCMWx6eWlU39bW?= =?iso-8859-1?q?ARzDFS?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?9ffT6nC/4wLN9c9Q4VPCpt9?= =?iso-8859-1?q?AdmhejR1Gtt5Y7KRoKmyj9HMCJD7JQCPBejgSYCdwmqgAHFkCdTiwCddXmAM?= =?iso-8859-1?q?imMFDQNEuyBjXjUMGVsHWOksoVHcUik8RW402OX26WVLmtc46zfc3glfkiqV?= =?iso-8859-1?q?kNz3qaMewWO7r7oayrN49spjW6JrdPt7YFC+5f+WEcQMZ7JLBEx5P6KbHyhh?= =?iso-8859-1?q?+XxIOAUzPdtowYV+YtSXpRxHCCz4GE4H2Qt1jgCqi3KGgTRJDMehNDjdO9Qu?= =?iso-8859-1?q?TswGKD3Mbum9qdMINf661l4GpV1ST3mXx5PjhDCm1zRwuZXRZ0z49ZDYR+DB?= =?iso-8859-1?q?9d0S+yVBWvxZAmqlI/Z02JMdWiBJ53hh5oRWhZH5/mkQnLr4SIz2UoKLBy3I?= =?iso-8859-1?q?4MO4804E7J5/O+4sb7pClHg2rAFsLYkZuJXu94NLckD+aeo/a5GV5qxw8Ebu?= =?iso-8859-1?q?vOg4irzGkv3rfh7D7WMWgImaWQgTD0BCI368SDKsyttSE+5p16vDqgq28HVP?= =?iso-8859-1?q?KRX0WOcmgChkY6lX3H1drQbld4f0LGLKGYEil9ALOysx1tmlRy+YmGbSV1Nl?= =?iso-8859-1?q?RIvGuwFnF4yo+2nun5vG43Fa5YQmedF+njFZ5RU6TVhpexMV5ksGJkftjiIX?= =?iso-8859-1?q?sZ9kGs6TUhnziaBSMPmuRfXP5RHr4ifusSCLnYLTN4/LvWUXvWKrBle2K5Bb?= =?iso-8859-1?q?HHZjTLCPvHUQ35/ZN/lMCD2zjgq90D9VzeO7t7rbbPLH1pgHsaGLrqfU2hct?= =?iso-8859-1?q?dNQ3plq6rYXBi6X+eogYHq8w1TQQDbjmgAmFvXiB2omFi37WKYkMRSxWCTsM?= =?iso-8859-1?q?kC04Qsi3CsTqV3bXrLhQr9Rf4etcIt2DtdAwzl1EHBiuPdr59yKy2ubHwueQ?= =?iso-8859-1?q?0zVtakKLAqfasjfHmrF1L7G6z0IYxf5YP9CQkZf8QHCQ3n7R2adQrbI7zBsj?= =?iso-8859-1?q?7QODQAKcdSGpIPkczNRmmr/N4m13l+ytCCCjvyEueK5YabJR4qFBbN2s45ry?= =?iso-8859-1?q?ujKBINaOcfGZ23HDPY0yma2H56ac7f6ZMePuzvRU/ly9wUemd9S03gTP/m0M?= =?iso-8859-1?q?vte+AxzBTZxP8fgM9qKdUVmnHVdSTFYjzoXPYXUt5IWfZRzN4j6wHD57XQzD?= =?iso-8859-1?q?4Y7FLWu6/2Z+9vlstDgxOAc1ZKUpkEEDCXEKD3n0v/t1oPR87+EynsQj5s84?= =?iso-8859-1?q?3YmYm+wSPepjNySuu/3+rMGLpuoTt/FJ/fPvRR4lyuYJGqIV97l9F0kCedUR?= =?iso-8859-1?q?40UHgto8mA6L1CnVR1F3TXrDyBlXP7llEXVjXp5j/Jj3tfvZoQywIGfyv5z4?= =?iso-8859-1?q?Pi/DhfapZdHJbFY//LB0LJuF9SwOSsfiTb/vAakc1wfUpy5xw9Ew6Arb/DHn?= =?iso-8859-1?q?gFjmxkUba+DCuXOBATPJM2POvVNv1Li3RSfN36qGZg/m4kTsQj93UzZmaLT3?= =?iso-8859-1?q?8UBJZTX9qk5e4ggBQgEmE+3nucy6f+xJ2wsmleIFpmlg3iQBBP5zXBVtB/Co?= =?iso-8859-1?q?srEH7jP82zxVCwNFqYjBfJoSCSzqm8f+EdESVXGtzK6FchX+j4TolK1cPa45?= =?iso-8859-1?q?78lLJ/Zng1BiftzufWCyGygqOajP1cFJTIoYxiwWisMS8EC392fKN/vJZma0?= =?iso-8859-1?q?mOZVHouLLuD7RgXTAnaoNxsj9o7S+1f6ceNUJ1NuyKPv2zKes02kD1BkcAEM?= =?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: 74763b64-5195-45b8-2316-08dd524ecf23 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:38.4654 (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: Llfpxm0q9P/FGGEFo46yU1NmW2kSdWq6x5gl1PgrHcJimrgl08NjuMPzHxJUTWm6HsXSHF66OcWjdJoFWW9eNkcSXx920Eb/0AQkCUWZats/IZpY+7BdNnNsMRlAC4Qt X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07: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: 13984969 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 74689C021AA for ; Fri, 21 Feb 2025 08:10:12 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4b-0004aJ-2u; Fri, 21 Feb 2025 03:07:49 -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 1tlO4Z-0004ZP-AX for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:47 -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 1tlO4W-0005ke-Md for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125264; x=1771661264; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=PiyTkK6hdM98UWkbkeuE8WtZivWls1Pdx4DsUKcW/KM=; b=w07vAlrBr70Cp3quNQbDe2oiCkh2g1UGt6gCdAEX3u3lkiJMsQ4qQNVU 7GRhGzBWkmXyWsxWV6wT2B4cHtiCZ4gAAQZKUZIqA7kR0bmXzpBW5W8mH 12NVYWIX3dlgdpwSbhfiIyL/X8gVR2tLT2MbPTgGqWgrQ/q/zrxoKHJYX 8QCvoV8lfbzUnQrWmrZARo90Gn5FHna7yAyHo+7K901UK33uiVBr0qGdI Gtj05ogPwJd63UcYzeXnyW0M9Xn8gw9N5NP6lg5pfkT7M2c5AwR604fXF db4/PV9N6BvYbjU2U9XJITEwcq03FcnUS41oGTFIBwapZPvq6GEbzxfdK Q==; X-CSE-ConnectionGUID: RUNfYzbrRuuRgshl69j4xQ== X-CSE-MsgGUID: 8IuULMadSRKAHG+cqmue/A== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="32836652" X-MGA-submission: MDFu6qCHClwEPa1/3MExJdE0ghoVtztjk5A4RKAEbPchmxYincLyugEpacCVlCMFUZNa8XZmFBEYHQi9MozGcfWd4GqMq+Hdd2a1vqyoN4bVuCq+T0TSY+C9wyP2Rr+vv8xql0a1wr+NWOCClAwWH0pa4X+9e5llaIe99VHtHWiMAQ== Received: from mail-vi1eur05lp2172.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.172]) by smarthost4.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:42 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UHs/9FjWLM0xxWY8kc1y3sAR6WcqFsoFLPKBjMhT7qfFivT15zfzEFWFH4WtUB2Y0KzgQC5vCjpslwlEji0xs9EUSBbilGqEXiZX6ybrpkbfllqwAsd7xuonLIPkd6FZC1bw8Ef86c9VTU8+bK7xIH0u8YOx/fuYngaggJpdEczJOrW+xBfAr5fGDn56gEktpaetcsENtCu6yk5sn5yArIlpU37WT8vVqw3rl97yMDzM0oHEUFwybUYRijB9Ski4TaaOh2IqyZ7PqwqSiixSUscQz3fnLOvuiJVw2MTnvWVGhuGh2k/VvriZAOlI+TgS7qh+v/f9YO3fn3sMhaE2NA== 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=Nw+OREfvwP7Tn+ItlQvwIEFPeojuRlmxvQiQokrpmyInc2w7RwsHy63arcyG4VJjtiO8dLoAa6J9Y03tLmjB18yVsm/JLxU8lZUUodXTnrhtMDaq1CR6UvW2phYLNKBhRSaTW0c4/rCE0ZjT+Mva3ixej9JGt9Gihnw3PkP15IdCkI5pkNtYRsqtIgXiHgjHoLayShEyymOL+lEORk6CF3Li/QEINfyaoPZu5mGz1+CtOsV/8Pw6J/aeftyc3raukVGxoU/aCXPSe5lFoFYsdGAJ2dY5TqIiUJXs/ZLGMSjmI/BinmvFR9y50bxogM9zN9u9IS+NDFMmIOgMiywgIQ== 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=lTl6j3+kMg3wY4Wo93NY7s2R9n4iSazz5d5T/GQeB65j09UT3wvNvD8PRtLOp8YbpwuaKpa75/BBSyGIqFhKCkHW7oNh6xOSeSzLYIgLRP+4ScVduqoHqVH+5w1lMefpiK/KtMNNhUL7aPmTr58zgYICaEMSf7LrNIkuyVevfbeiFYx2pFangJzgRC7VAiOiBO74yvrzJabWrp8H81ELlWzbCq26QpXbB6vaTLcGjJ32HDZIFE3XvKqqrThiXeDJx6FpJOnfrLDVl6MvYQtSsDVoLxD/Y5Jxlpi+kFYvuqgoqd60I4oyyHXWpUUeTlo2+koZHtuW6O7xJMkSQejd7w== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PR3PR07MB8162.eurprd07.prod.outlook.com (2603:10a6:102:175::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.15; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 12/19] pci: Add a pci-level initialization function for iommu notifiers Thread-Topic: [PATCH v3 12/19] pci: Add a pci-level initialization function for iommu notifiers Thread-Index: AQHbhDesmnxqhE6Hj0uBJ8Jm1MOagA== Date: Fri, 21 Feb 2025 08:07:39 +0000 Message-ID: <20250221080331.186285-13-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|PR3PR07MB8162:EE_ x-ms-office365-filtering-correlation-id: 72c11ab8-4089-464a-b85e-08dd524ecf53 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?wgx98kWnlZtJSI9fYaTV5wC2Sp?= =?iso-8859-1?q?+T6ga0UKGMzP0i57tsO7TyuiK9gJuqtTAZlxgtWweLDwdUCOmGZ4CjsXbfe4?= =?iso-8859-1?q?6+ykRSNw1q5jBhK0XEA/X2DASjH7q/xjhPusVv9rxDX+t6ELMxd+p2ce0g9W?= =?iso-8859-1?q?xEjnA7HpV901bnZuz7rMTpDRMoMCqj3HbvF3jpxAHRYWIv7P1sdzNK+4Fgx5?= =?iso-8859-1?q?rt+3JelMXesFoUXtqiNaNPxnbxnML+6e9tpe3v4u1WbXBaal7voe7S+9PqbV?= =?iso-8859-1?q?25OtyBPlngTRiblKaVc4r9IPnZThjIQ6ZD9wlKo6nhgyr/J2RrUCBtWKeX9Q?= =?iso-8859-1?q?9Uwn57UaUwN6VPy5RMxY1Mvr+fU5/tnYbg4Ub+p0cRLiGRoYbmoJ5FcdZWwE?= =?iso-8859-1?q?xEZ5onRnQ1w4R3Nfqz9SsVNqHnf50BiYZFomOO9x67I3tYDJFAG54DsyUJq2?= =?iso-8859-1?q?cOoFFEXnjzzheZwjOi/iI53QffcP3vkM+8R7cTMw6iYdVYlf9/fGqp+jETcn?= =?iso-8859-1?q?8GKv/GY01R5A3EmxvwLpjSyzCYSa0F/15BeTkpYbjSWyohgj+rRk6R3vBUYu?= =?iso-8859-1?q?zacvWX4++NqZi3izYYmi71XBqG4alTqHD6Z6BHr+UIGJPwg3Ef+9p0nJt8DE?= =?iso-8859-1?q?VISUtl43cdyywpBr2XD01pZHmupIlXMcETHvJc9MEoA47gLrE1zKLG7VswAT?= =?iso-8859-1?q?/c0Pz0fuoJYVmEImv3mmGOXVwFwohCfr8ZiubpU0JkNGaSCpQwo86iASj0Cw?= =?iso-8859-1?q?9SHxGuzM/kE+qscgQB32TTf0SEGCSoWL8uDz0cwZqZdurBIUqrzlLQQRe6fi?= =?iso-8859-1?q?zk5fX1lpnJEoPX7NOxfD3aw2YZ44Z6lA5REAHfit4a69BOg7Apn6tOtMxlUf?= =?iso-8859-1?q?GLFc+3D7M1vLxUR4PSwxCnIuJ2QjAUjtmLlgvox+Q5QC0rpRqqAZfMWKATrS?= =?iso-8859-1?q?mQFN9B3X2sMKNw8S5OTlYuYtZgIWqZ9/55focSpHq0ypmhwmCsH+cDcc/jsU?= =?iso-8859-1?q?+ir/VnON4PesSWjmpt074YFYIihG3Bw0q06CCKk+NvWce6RDuFjyRqytGWGi?= =?iso-8859-1?q?DQ+RmD/+uk/IvCcUot/rkaBKueVsQb+XUMvXvaDQbtCcp5MaINDa0ppv/iM8?= =?iso-8859-1?q?1CivkH9Z5u1u4cb7lkTqvhwpaSCEpjmJFEKPyXX/c48WwGq1OnKwH52HtK1u?= =?iso-8859-1?q?SrsaJrMsNX2nDSdrJpk7+t+epmwX2Gg2DS14R0yXHHgiu/UF3V/HlmDhPS13?= =?iso-8859-1?q?ATEIjsAxmUYvGPlaZR51Dtk0obc/5bxLr4ff7QwpHaIQzrUd9DAu2Df7XG46?= =?iso-8859-1?q?a7FtSqa5upvZxXEPg3IjArPdn29yWs3JKXuN0Kol7oVXryfu5lGIoMmyhpe0?= =?iso-8859-1?q?0+JZ1HBlnTb1zuaoyF9CrId6kBIISJF4gkrdwgh9J8YO/dIXHOZgVqnDKZy5?= =?iso-8859-1?q?zhpTHMnwmBetiJFKvbeKb3e19Q/ONiQt6O54gQlcA+X6PLaWEsQ8J7ZVmSJY?= =?iso-8859-1?q?O0y0F+?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?gR6OEA9oBbz1JayLyaa2R0m?= =?iso-8859-1?q?OULJosfwj3fAUJXFHFJ5AwtWNB/TaN33jZPf0tF8QMWplkrT10VGSehjpiy2?= =?iso-8859-1?q?MAmWnc2OtlwJ24Fd+UWgQvbZg19rWMXRJqIWZVy/LKyE/njwULcCXLvoZ5gk?= =?iso-8859-1?q?2a90FUARzCJrieVPt91r5AJtrwNQQ6AmXqh0pfXi/ioJmfJHTJsqOHNKqRyN?= =?iso-8859-1?q?a/lj3WgPC72HmipiNEnqkQFCToMXHaA9OviuBl2sC4HstP48CxLFGN/bQUqS?= =?iso-8859-1?q?h/4Nb0pV/7BNE1eeFF80rG7lrETPh7AybYpIoumh/WkQgr+4WFhyn7Tcmlf2?= =?iso-8859-1?q?brjRs0sCDgVo+Nr8UkCsod1VqkoIJIPNtQdGPuGg1ZJq8Hjbp7lH/HL+87/b?= =?iso-8859-1?q?LUHwQBbgfqepFDuLaYcYr44GAokA85TNuZCx0gnhFFXqpbWiYtvPJGBMno8b?= =?iso-8859-1?q?Xy68hysfGAHIhybgQwQwWyh6274NfH5nze+wDahhhYEuj14Kyhim9dVzce+z?= =?iso-8859-1?q?aNZuhpTSKRhn/Ck2IOJBF26Sl1nbFC84msVkpyEFDe+khQ71Q1JR8NYg1S/c?= =?iso-8859-1?q?zLHFnS4IMTOPl//Y62IM1VP6AIPm1C6+78pxPwatrLdzIz3d12rjblMt+TvU?= =?iso-8859-1?q?rXvc0ye6ezzOERXRQshzKqIifvK1MvROISP3Cxj0i44pxDvO0jAaaDd48YfV?= =?iso-8859-1?q?8Qb9HRUahkpYPlFSBQptKM+NK47msduRab9e9A7Ozq5VPg9tS9feaqI5nIMv?= =?iso-8859-1?q?WXB8P8g5DXW6clfL02+SEdiTQIJq9ZrMp2JkClvl/IFBK/G+75A7z8cVTFio?= =?iso-8859-1?q?WQIs3Iac27VXduwOXIDtmF9e+4wO2VqgJwglWAychMmeQCs3jSzpwvc4SUGR?= =?iso-8859-1?q?xraEqRiBZajOrnX9shML1igTXYT/Kz4wZEx4OUGACKq+1zzPOd8U+mKfKaUX?= =?iso-8859-1?q?xqE7jRGPLyqacNKnX2gPl5jF4gL9IvRBxEtk7OE+9mNVeRY4eQaUSp09eMSY?= =?iso-8859-1?q?CbeN2xF5Rz1H7u/5v17N5b3/T0tiEYnnpqpS3VUhVEbv1rPZcCdlUw8o5seP?= =?iso-8859-1?q?JQcceEZymgelPbSZhK3yxvJP/Iaw2bfAXHaXW9O50XRuHzMOVkjEMkge2AK4?= =?iso-8859-1?q?BpEdQWLK42CKodfaghn6PMf+D1BL/pCJtpYg1cDu0LBDYmkXa2jHigOp7qyh?= =?iso-8859-1?q?rt5XSjT6y/J0N9nYeCHXKAqr+5YBdn87D6XBuealP/TRG8QrWwxkKB6Lf4Ia?= =?iso-8859-1?q?NvkAUi37QaajnQfMkqHRflRfqZjyan3pGNG6OBkpPknOriZJXZSUzQ+7wB0n?= =?iso-8859-1?q?6wjL1juMPpw0Xdouxp3A/bEse1AMbm70HekeWq+3SVhxpxKf1yhOLuLFkQz6?= =?iso-8859-1?q?ypLIsZXPs9M6ywmC1VBXiyuhpLrLlsjRXRJhdbUdVvHTtuMQFpNQQzRSAo1C?= =?iso-8859-1?q?aQsvPk8LXkgNmTgECebAnig6LMVjFxbHINfU5bQ26J4ys+c1+9KYZe3NTRsD?= =?iso-8859-1?q?oH6MHYBsiyPa4/7KQhvSI/YV5aRZoU6inSxqDMsPb9F4ZaAUBAJjMZwiCyAg?= =?iso-8859-1?q?4Y5U3vUiWXnbAP3OY202UahmygJGe+7yeW15fVifZtbWPePt5y8OKwFUOxtA?= =?iso-8859-1?q?17jXZ2dnDtJ2Tn2JLrNFxfhEOSpMRomJBRFGvLbr64YobTB9iMhPLSKmF7mU?= =?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: 72c11ab8-4089-464a-b85e-08dd524ecf53 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:39.1652 (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: sxYVyasIsEZt4OdpijGTbKxSvv6cOogdNNxJehbsuKGQpT4oRJ6mq9OKpi/02IAzkU2LRxKPrDGj9BuhjEL6x/08H93Xq8PAL/Gp1n45DEduuYZq/Q/jcF8QjRdv5TTM X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR07MB8162 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 Fri Feb 21 08:07: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: 13984956 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 A0055C021AA for ; Fri, 21 Feb 2025 08:08:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4a-0004a9-Op; Fri, 21 Feb 2025 03:07: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 1tlO4Z-0004Zq-Lq for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:47 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4W-0005j1-8g for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125264; x=1771661264; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=jQBJo+yodEbohtpqnyWk2sHs6jgPdWVxFPw+yZeCewM=; b=DHM7chZ5JfqoXHNaBX4SXgBf+KBEfIJaHX3lZGRtY0Kqw+Iim5ELF0dy iqY0fp94qK4t7MDLe7mpRmrSJoBwd9exqGJ6wK+KeFTWcDL81AOKhAWi0 Em4VKES4Fcj00sgUeHCxCZE6G+szn04Ef0DszZtMKHaO8kR1czZVF4/XP SyogS5o8BRxtsvH/KA/szFD9WPoxY5erHjSbzSQx+3qL280C0YiR57GJk B3XO/iwxJTMXvgNPPUMhKoVhPGKmwG7+nkl7luxYngrbLYfmWzDMfP/d1 X0q5Yf6PPWL3ORFKBeSkJoQkZVycXP6WOQbXYFN6bFbYvI9ILQSFlVEvm A==; X-CSE-ConnectionGUID: dgkE/Qh0R7OR9c1FMiCtUQ== X-CSE-MsgGUID: zytwl0OpTE6oCBD05NxAQQ== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394138" X-MGA-submission: MDEFDkH2bT6SarVQZ+WBcdNP97hKHLrditVSx4H6/J2ZcdeIiQJ8DnDl08M+ds4X0xNvg3E365DzJfWPdvBYw8IlT9m1Hk8IwzJoSkHZcSS+DHauiEftGvftV0sn63gTnw8MGUFTNNpXR0EdDQBan93JpBTl3au/1uKl3ivS1UqorQ== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:43 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RjvQD4lKerZxMPLZFw1FF2a634B4bZy13kA0kT/wmm0ZBJJ0H3pislgW3/2uFRCFcgpzDZ0LuHT6XuSBnXoz5nzn6v4uc2x5Mx4cO6RpjwedwwFYvjSKfVUv2DkQcktWX3As3jj166mWGwgxmhmoLzZAvfbKHGqcOsyYfrPUEtL6ENPzaT1hkNcwEU6cuRlbSe9QQBfEPlbPAkPWb5V4jfYSvCEdKWE6S6GYTt6Ecq9Ff8rJgvS8wwRFpL2odootWvubBQmZ9VaUbPBsI9a4QRVwiVvT1OkfMJBj1HTd7yn1KKm50wpTZZSanjvfPZAASDUIHbiSoQ6rk4P5H5Wmwg== 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=tEwTGR66dPbEcMAYnzlzJKlqMePdzrFYyuhV0CQRePs=; b=imXAl70k4qXKyzgoLFf5H8xsvxv7FnFn2ukXwKZQnKg2jxmYaGUKVD2EiytaA5Zb7AbUMQ80hZmACEIupiXe+ilra5hqTQWKJv+iZ3m0GWy1JTYsdPHCCZzKWqXSQCg/Nztu+DCAirH3pRykTLfljy1pfG4Jy5/lNzYYYo5jnY/cZ21mGbUT+BjUXZvrp7pbsAHQaMDnEtbPb/y0agCQcW4WCbbR0KYj6EdVTNhBdJpqeZn98VK4lzZWafmlN2O2XvDfE/Ff4fwEt1RtH5RUR+ofQeLvAHTAkHuH4uXXg1kQARcAVQssvoE2nPY2E0eMLzXVd97GfsrmZAWKKBqFPg== 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=tEwTGR66dPbEcMAYnzlzJKlqMePdzrFYyuhV0CQRePs=; b=H5lqou58CEkFWEGC/sVE/I1f72O4+kMC8tBG2oIEYJ+Kwr1GEyuYAzOgaP/PyEwQCIRUX6ukBYgb6VnUqfIrnUA5RbjN6yH2K0Arys8NIXCB4I/aUbRAZ7ZPUhjTzyYt0FN9e9EVz45BpN/wPJQSuu18LucbWt5bWwGQKclRajl1jeQVI+d1HQ4BEFTUG9fusi68Dxe1mh7p+Pw+oVQRAd+Z3Wk2a34awwTmNc9p7MfAzWyfHHd4kPvTF4U6+t4kdmyxq06L30baRKrahsBfUwGnUvzFYBQciU3k6PzNORfvWuQKDA6g7btiYMNmBwIf1R9GAb7wHpaLtpbOUeUDnQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 13/19] atc: Generic ATC that can be used by PCIe devices that support SVM Thread-Topic: [PATCH v3 13/19] atc: Generic ATC that can be used by PCIe devices that support SVM Thread-Index: AQHbhDetZKXTRy7Vike9FBTg/yfIrw== Date: Fri, 21 Feb 2025 08:07:39 +0000 Message-ID: <20250221080331.186285-14-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: b7e971e6-edeb-4ecc-ae1a-08dd524ecf89 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018|13003099007; x-microsoft-antispam-message-info: =?iso-8859-1?q?giXOulIDIkhiWb1TO7h5XMSGS5?= =?iso-8859-1?q?xgT77DwMKokM/vZ4pvIj5KYqx+HtRoc2Po+W59L8CZKzMU3TxgPLfxJVgOPW?= =?iso-8859-1?q?aCYQuekB0xYMc/3S/mQBGSve1jqaDsHjnyzZe7Q+SBMJF0JBtTCRnQefPNoe?= =?iso-8859-1?q?ogb2Ey/PhJuFemUaHZgqkXkji/HPHj9DMOvEalCZ+dwKB52mrtxjOVxVaQfZ?= =?iso-8859-1?q?X3QcgLZ5yX8yc9vGwV9OkcsyczK4/FmWo/3CVK41pWZElB/Gk4N45iDBZKjk?= =?iso-8859-1?q?6PyEi9xXmfnRms0136soBJzS7i40NwTJj4Q0q8joX9lcn7MEQIBawOaRmuid?= =?iso-8859-1?q?461QhsBD2Gk6IZ2MkTNwBAqn9T+9EY2RxX7uWWffZXzTD4mAYNx6Ti1R4KVZ?= =?iso-8859-1?q?1WaI8AcTmvPz0C0vU1RtbjkD5PWFhD3MdEzlySNARtbB2WjRZqNEslTMdDzg?= =?iso-8859-1?q?kMoxWPW+2KfGcRxq9g7Iuos9qEfLQ159sEGhRgIF3lAogziBUbnjbQwTkG1w?= =?iso-8859-1?q?dI7ZszxfanR5JKd2kbybzo1H2pgLEid28CQ9NQA8KzLaNRRXgXso2lz5byEJ?= =?iso-8859-1?q?jb77jvql1Yt5JwDYkLSA2OtEJRpIZu0sQki5rYxpf8gz9RifJLClrE0AfXAY?= =?iso-8859-1?q?ua0kVbkN/252ABXlhhGswfl4WnnhTbTIDNCaKT2CdE0lFU0WCHR89SdSPebm?= =?iso-8859-1?q?jsfYEPdx9HBHABqju27TSoP8oUuIHvYBi5Jyi2SfqFZFdmJk1Wa1R+/mB+RY?= =?iso-8859-1?q?qC9l/0uJ7AZssLl416I8GGeunTqAjCH/9/VSr9q2TABFOUBtTOhY0bO/Yyrn?= =?iso-8859-1?q?GnyPKq6jc6GFPkPimN/X8R7if9pK7d+JmUtoWwQdjOhFtmYsYRtP9Ba2VIFW?= =?iso-8859-1?q?xFFvPllBMzW/jfsoWfE68ZTj/1bMCzWa+5U2hsG9Tnge2AONNmIQ8AGJZgo8?= =?iso-8859-1?q?GMEMVD9x0TGZWv8Leymz73fXbDoSooFMxj69Y01O5FgfMwaQHI1LTdDdP3+X?= =?iso-8859-1?q?Uv2SVFACm6gbZRLcboP6/qwRhphyj9jHn9ZZzNNVmzJoKV/f5vFtcCWrp+Hf?= =?iso-8859-1?q?3jcZev3EMHzkLUrZXW5Wga/VaxmWa1iyukshPDnoWPxdDoXiDUqkIoJnNALy?= =?iso-8859-1?q?tA3KDtH6yEKOZ4ujOkAAWHSb6jx8B7Xfc5NkErsa6wyr4HmWq4dQ0WytcWBO?= =?iso-8859-1?q?mU8VkqGlIZtgUfOjeKGQdiWpu+oXx6iQnaxhnOvAZNcV6ARCcD0fQH90TATr?= =?iso-8859-1?q?9QVU8+76hNCPDFhB7Le7w/W6WR39LrCKaz6AoHHIA+82O3DL1rfMW9vZR9F5?= =?iso-8859-1?q?UFeB5ZtQ9Xv01/3AaFLevcEuIt9/TdhaUzQ4MgMr3WPKqdKFHxRmqrbDgbVF?= =?iso-8859-1?q?+n019DT94dQo+pansxdCGRDoRELTPqOOdFkSsAblcIMwqF+OS6WIByX3kOFL?= =?iso-8859-1?q?BLhKs7NEQR/tFhCvsaK/IXCQ=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)(366016)(376014)(7416014)(38070700018)(13003099007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?0Ppy/qKlNch6pqmppkEpbHI?= =?iso-8859-1?q?RehHUUthYAzmJXMtipEg1XhlST11/3IkmgdOc6IssP7GhYQX8i4nwUl/gb4v?= =?iso-8859-1?q?u11WnqtEy/d0tpG38vMM0UhSfyN19419W4PcBdFZIB2ZRVirdLwDGn9R30yz?= =?iso-8859-1?q?80pcPY0KXEzCZFQ7TUgZb4PcneW5Z0Xx09pNFuqg51wgYfoOty9WqMHYHvJi?= =?iso-8859-1?q?v8EvYS5lpZZPtiNRQlRUJNaXfkfncmuczN9PIYwYTl4F/S0OyVzo3hOPXjW9?= =?iso-8859-1?q?kVQm3Vp6blaAtcybBIYyuTzk7UnWR9iq/WmQEpyAqaZrmVtO30p7A79z7/5X?= =?iso-8859-1?q?aAXwDwPloLYre0b9AM2b1UNnF1bEPMrpujcV4D/4KeZp8mmxL0qVG5ELFiHo?= =?iso-8859-1?q?6Q86V/PawT7cXr8KoECoFlDRAXyZpvDltbq1YKcmGp64eYpDuZZSvcZer8QF?= =?iso-8859-1?q?DjKKzb1yIfcJbB8jd9c+4PyqsGnAZ7qQEWJaN6+Bs2t7kB8KRslc97CHeS8/?= =?iso-8859-1?q?6Tpi3G4iX/bkC0cp6VKEya7rP5kZ9DtR5rvTOYaDUwzjZhYgd5eM3gqK6GNx?= =?iso-8859-1?q?nmle+nBY3pXBrA0K0wyucfunsDlg6brZBAB5nkL3iASJmrD3Oi1vggmQoyzx?= =?iso-8859-1?q?o2fAYIVljo/xE+qpkUAmsWhaGH/m0BKf9U+lop0pP1yxrfZFhkHpSZgBoQ1l?= =?iso-8859-1?q?PIfVu6GXMkEWHsSQR+UC2ZyOKeTkjQkLKYOwIqaxDR9G4BzKoopqesG14ihZ?= =?iso-8859-1?q?m4hAlqggdoqeLN5HEiNtqDVOvgSW7lCHaHX/b0ELkUwmuLJc0nmlO1pMONCK?= =?iso-8859-1?q?2GHmVXD9t41d8pVjawZLcExfIAZNMtDmBBGzQgOGKhF8TUk0xFTL8cpB6tRe?= =?iso-8859-1?q?NdL965k625JJ9TQkKpR7nkKNcFw3BC641cqlU00J4tJ6K7o9KBTnO15YkQAo?= =?iso-8859-1?q?WeUl0u+di0V6S7317DHaQ5peCI1PZYst4B98gpPvX5nmNthMxWOnpbmd5FPS?= =?iso-8859-1?q?IS34IOaXj6Lg4hZxqO/DBMhMaB3GQ8BIuWxVLy8tUgTdV+c80OeFv7bDi/q1?= =?iso-8859-1?q?GTbc624a2fZDLNoZoiYdoyiIOzLfewvZsrhazWJzz2fFwSRAfd2gqJbo65kZ?= =?iso-8859-1?q?1OhE168lHwda4XkNi6Kk99AqW6foBAvFISNTrZBLBPgiRa8sKo0BWHBEm4fZ?= =?iso-8859-1?q?KTmyIAQ+NbS2A2TEdqWQ11/Xe0MG3bpSskQLOUh7pg69oHwf0A7jDojB0BTd?= =?iso-8859-1?q?zBwf5O8Gp5fWfeBURisJGfGEETLoKQ1XNh3by28ZLiV9KGpM2jPRCsZAjv+2?= =?iso-8859-1?q?0wmpNuCITD2uV2Bic9a1o05v4yyJqrRGxNkenx6hY9HMm3umsVHwR/Pv/orP?= =?iso-8859-1?q?07D+5GUStSgQjSTP/wnC0vMD/LmoLxVt5g1Xa5KJaRb+guFBobZPV04fJT+A?= =?iso-8859-1?q?BCd6o/ecPjI66M/DfLcl0RRcygN3879qXWi2UJK2JlPdkB0zp3evpLaIujLh?= =?iso-8859-1?q?KfCziHb4yNRowEvkOJ5ShReQNBy7RLpAEji067mSRrnC62uwjRc3QcqhGeGM?= =?iso-8859-1?q?2v0BMAJDX7bpavFfl2meXcn/CXxNyXFLt0GWY2ZaypaDKeXtBtNnYsqK8RuL?= =?iso-8859-1?q?aHMPRvrGX1sXbvm636XcQv2mmAFxIneMilKMf1CQm/W9ttDRV09d6aZ9EA+A?= =?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: b7e971e6-edeb-4ecc-ae1a-08dd524ecf89 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:39.8773 (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: YD2wsi/mprUdWiv8+o24Rh8cJQS1dQLI6EfMhwv+Ti0zcVhaJvqeR5c5pm50KnJBQq8+yrTjwUJmxS1dfRet71Bl4ydZ30ZC4lIfEaIKuicNDd1X8u4AoepHD7vKZbwU X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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..584ce045db --- /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)v; + return (guint)((addr >> 32) ^ (addr & 0xffffffffU)); +} + +/* Equality test for IOTLB entries */ +static gboolean atc_addr_key_equal(gconstpointer v1, gconstpointer v2) +{ + return (hwaddr)v1 == (hwaddr)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)(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)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 Fri Feb 21 08:07: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: 13984960 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 8720AC021AA for ; Fri, 21 Feb 2025 08:09:17 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4e-0004bg-4u; Fri, 21 Feb 2025 03:07:52 -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 1tlO4a-0004a7-JX for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:48 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4X-0005ko-O1 for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125266; x=1771661266; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=oA3KYmbSWy/K+XMLDvDgQtpvoImsgYm3m1tPp4EH2n0=; b=QZHvsRpUfW1ZNbCSIRY5tL8xWQu7tOrQQHNv6DIg8VYofmjlo17kQ88V YeNGSoNfLPhPZ7OIpWASPr9Ia+VpNBpylPZtvCeDEuoV4IIgR/n+4kHQj 86pP6hVZhLyZ08d+PkjQne0DsV6CEh+y1a2e09JUx7DGsyq4jr/r1Ww0Z g49BFpCVoHZ8VuTH+TKy7UeUq8F4PctgXvvt4q17arMnrGQJb4mo+KVUS FHBUQENN/qioRv4kGfTLg941LO21NRJsRQY9jAnNlH/AMIGPRtcNnmKTK KsyAOUMbKd0ELkKmAJv3oVi48hb47ijyK3sWv1C8jeKpdEUG95WtT995V Q==; X-CSE-ConnectionGUID: 55hloPUSTQClcBjDWfJ82g== X-CSE-MsgGUID: ZIT6NtYhScadPcP9j11jzA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394139" X-MGA-submission: MDFW4O0aDTiL9gxNcaIHmRyeclc9yMOUbYDmiisDvvNH39AiPYSgU7yF9euH5lAJAa1FAAHKplK2coB626ygvSkQyArnyRuhSMb128ym2n3rOkrXLOKE70Wz2iIYrqZn0QfY/wCyh46P11r97Borc9Hd3UWKwjzDMVF1DZ2JSOn38Q== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:44 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SJhbVb8//KwnVB6Ktp6IAthOetYTNW1aYIZWnaWogqVZ6g9cyx9QW0gQF0LvO6LCtSpcSG4qOtbku6lbqKsX4hieZNL6tD1Phd1N9KGn8tTcgYjQH++qbbKtWujC/Y48P3VoHp7s4M7QKRhZHGzZ9Hs9mLCBlrs/BrMdAIpIIUv1ILwnOQ6zZRkGfUqTA/zSaAP69imLuqZRPGCi+vA8nlRFfPtE9YJWySKimMhwoklbH42Ux6i8fwDzvU3PBUyc8KmJC3L2vso1Tx8r5hHMGxCMF+W+gaESmH5FPNcyHnRTn0Ky27npyDPynaodiuR4S1ulroxTfRdR1s37S1Jq9A== 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=fGCUwNoyJthXpD4y1MafWKcz1vCA/9Ru/tjsk8Uz2X6ltGLHEuAUAOv7e4Fa8qS0K6lbWA55YfXRFLfqszpVurnFBG2mIN5XZ/egmyu6JhqMQXcoOFP0RLdDq4+MEyKTtS92B1xc5/It3PiTkJeYevym6YZ6NMfXSH54kRQ9BLRdu68M/CNqkHk2oxGlmphzlLVoEvrbeFHEnY3Rn8NzgjyTSbATaouQaZZcnnLCQWPK1OEn8BO52Pebw7F7j4U9RBWItUx+YF83p+FmAeOFtUvY/0hR4ZDlzZGyz12huDHCsYC8fsbK8tz0lt44H/3V/wGVhs9N8J8oRpm6gwPpbA== 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=mwPLx1R1q7etjoYeUgckrqSsI9Ow+9qYVkhl7aX39zSB+n/vz12Nye07mnwyo6n4QS+3N4bPGW0dhiBNCptYKCcfdc2jpVKlT/keBoEIViVH+TzvbRPagfZdNH85dN4/m+sS+Qc2Mait8asEHvHKkfESeCfcNXUTewOygfmgyxc1NltvcSy7dTPcP1gymkG0MRKX00JqkGg8YApCIUQK7/mUK8g4OcpZUpo6v+mDRzdDEJOvsn3DBxjLTdkXZrOtEv5x0sGqvm9p+rW5LGFwfzkey6bZx4t+wPs8beT6nC3COeryLqk8JG57H7oTPfjDRo10C3CTp09xZFy7j9rprA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 14/19] atc: Add unit tests Thread-Topic: [PATCH v3 14/19] atc: Add unit tests Thread-Index: AQHbhDet8wAXEtvxo0evRDLt6giiLg== Date: Fri, 21 Feb 2025 08:07:40 +0000 Message-ID: <20250221080331.186285-15-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: 59c5efbe-d102-40d6-1233-08dd524ed08b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?gfq5nWvLWhLOdEt9IIqpsUS7g/?= =?iso-8859-1?q?1MCybXdTDnZo9Rys05A571xRkWkCtaXqRfOO/fRX5er65P0qBFxxyg/yiJUk?= =?iso-8859-1?q?+qQmjzqLIkLtO/HXDFoB+7E1kGQVoKh2UO1bCEjb6sBuN+n37OBWm5tlSt+g?= =?iso-8859-1?q?+vWFeWRcZI1KeT3Rlk0qcym+ZoxQJphZX9RLpAQoYNdmzyhNskmFf+Bsg4QP?= =?iso-8859-1?q?051XNLWIzSyBdej/gFdGt2jMOvWi6vLHPd/uNFoBVR0Ms9pWS5wan3Anes6e?= =?iso-8859-1?q?aCFAcZwsjDzg7eLhV2+GFi8sS9Yd/L08g/69bX4uaWQVkPeAf1ee7QKPHCnn?= =?iso-8859-1?q?39Ep8OgpQ32W+MbzoBqL/rbH3G4GlVNmGv+f8qTEOFOhLesdTWPyTVrBQysN?= =?iso-8859-1?q?5cIBHeWBUu5Xj4zAlkh6khhthJimnR7XiQEfPNwKhoalH30rzZ866KIqeu/4?= =?iso-8859-1?q?NtrOsy4c9jRDFJxUFO2hZ2YLafmemZqXX1MHQOcHtBfilas5Of6bT1EW6X9q?= =?iso-8859-1?q?xO8dl2V+AxNMeEfNjwdbMBHXHPthe3qQieKffhhs0PY5tncaeAF9hbykWTfz?= =?iso-8859-1?q?qtknitNJbT/aeZM5roil2T3g3uB9DUb/lPeuK3f9Dy8GCagUZOUQ1viOn8fI?= =?iso-8859-1?q?W5Ur0v4+BSMVlTMCgW7Dxr3d4nPJ/av0S0ZWbjJ7xRYNJsDU7F18E8ZxeOx/?= =?iso-8859-1?q?MqGLxj/pdcpN4ejonSWk67+ImNTHIPKNwsXrM3de+1x0TKb3D35BtD/NzvsP?= =?iso-8859-1?q?+dQNRgw6FW3RbDfG4GTaoIdQakL66UxavpSsqI4W3UtPVbieNhoJy+zV0YC8?= =?iso-8859-1?q?mtfMtDM27IuGfaM8iOG49qfzP0pNusqSg506lNII+fdg0gTahCgsBeP5UnZc?= =?iso-8859-1?q?6qIjrdIXc/EVH/xX5IPYpAN2RSAX+0aHY8wF2TWn29ALaTdqZrxWO0wE0avt?= =?iso-8859-1?q?HqFkMNxS8AyJHlBjHheDo8f2VO4yYcQGb24abZibgJ1kuAvG4mZhJDAMhnLi?= =?iso-8859-1?q?SdrK5UgiI6icnmBOAgUDHa2PGNshd7drIo2emxHxGnjer0MuNSLyD8VKnj4p?= =?iso-8859-1?q?gMHGLCt2WlYob0PqOIkHlRUxR8jtny/IqTa/n7FhGkuvOxeuBhe6EaMIPVis?= =?iso-8859-1?q?b60Ndxq7E4XXA90in85yOloMVxIAvDkcZxfjg+QvcVSnw7mT6WBTzDT2AnhA?= =?iso-8859-1?q?ANG9VSm1W7pNs32QRx1EOu+mXnxvghcAbPLR/q6CeQ5TmSYgUpiV8xG+ERgr?= =?iso-8859-1?q?zjQGZkxcP7LGpNoq9ztvBEM0iW06j670wV1Gxrnz3JJovOXlzN9Lc7RhmD2Q?= =?iso-8859-1?q?wL/du7nwsnhx6q70diYKQSIzEoX3Lx4NFKhgEGUpQQGD7XtA8rnxsk15oL6j?= =?iso-8859-1?q?57pGrnAufZR0pHuVp8kO+4tQ0XNrNShEIFeJGxmWVkFy2OSTK+7rXzCi3O5t?= =?iso-8859-1?q?owq8Q/xuclkyK80MzLD/to+g=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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?6jy66aruHy4BjGl/5UzIX/h?= =?iso-8859-1?q?st9ZdNkTx+8bAcuzEDoVOJ8MAKPW1R6EJoj6mOHUa8e/zTPpER6awgHaS8oK?= =?iso-8859-1?q?xjZBuV4NNozx/HvkIZxJHSuo2zcjuvMfmIfJigZ1aTqajUabYHaouKq2qsSN?= =?iso-8859-1?q?UEd3sQuWrbsAQaHhxcOc5rnNB+G4FVLNaZX4Kfvc2Ei9lm/saFbiv8h9JC8i?= =?iso-8859-1?q?p7hMWfA704mpGPcvJTNVWWguX+E+P8YLYJ7nRjdgZ1ySErs0k+wm6RmCztiR?= =?iso-8859-1?q?sWbVC7TE/Qf9/1JQHTG8x4d/D2MkX+Q1lcmCliKXLTAZq2QSZxewXJ+rhe0d?= =?iso-8859-1?q?UhNBXgf/mg7KSIlolNRVRFmSf0mDctGCUyjH85vSxnScD/j5CU4Sq+pDYkl/?= =?iso-8859-1?q?2Uf37Gt0Yw5+ZNL0PKyYA194wyDJENQ0pQtMQQKFytpZ4GDgkCVzj9bIU7Cp?= =?iso-8859-1?q?ExTIcGwZq5UtaScFFGh6MVF/NFehXQtafz88kQ8czPtwMLyIk4xktuShGCfX?= =?iso-8859-1?q?U6QD0wV3Koib4Y/DFAq/sNSq51kKa6v/15hdKaOg2/RT5ryqcw7wkB3Ob7M5?= =?iso-8859-1?q?ItaT2T50wS5OyJiKjR7cai3/xODERpP+XyYPYRKTQdUl5OKJ3IGyo1KtJOlN?= =?iso-8859-1?q?6byUu6+8VHhSBmVWRCUjZfiHV2NqjVG0G3t6cmUnxNcVs5GEcS7Nfj9Je7zw?= =?iso-8859-1?q?uoEryLT1mf6s+uUgGXWKiQ2wFEgHRJpyyOllNs43an27uzcXkcj34jSGgRrl?= =?iso-8859-1?q?zO1m3Tge6lzUp8T/zqkPXYGRy5Uh9zD4AYJNJnrOga7+G+wHqtTLpYqDtiSX?= =?iso-8859-1?q?ftO2gFjYx/wfyNAAQbipbWdfpetNSt0nhIdK931lRIEG3Uf/eOYLghX1jhy1?= =?iso-8859-1?q?cdE68Enqw0Jsa2t09ogdqn112QID3eWGoVJs2qH8cuYRTLm0Mt0R3xt2N2UB?= =?iso-8859-1?q?7WRdy6Lmy/yQ5gVel9OAGQZWD+cIWRgCzgnQflBOMxoEVeimGkGpfFP54NbJ?= =?iso-8859-1?q?VxsmMSX6A33rJD7JfpLn9HK03KQnB2vl5K1ymVUaiUxi9SKuhQVcXs3E9uEZ?= =?iso-8859-1?q?S6DZur9RopnwlzlFbv0vWdTGOyCeQyNlIkVmmymx9ugiIXAT175YGdv/KQzA?= =?iso-8859-1?q?S5jibriDs+HcL8LavaFgYaQDSwu4R9qLJag1W0IT0aBECITy2wsOFRFAzH4y?= =?iso-8859-1?q?067uNnWWUbqKYrjd5oGf2sNBrA+6vUJu2+2gOewofOr6IHiBfJH8yTJxe+0J?= =?iso-8859-1?q?Y61xRRk6Vdm9TLrsv6XJsX6yBpiN+FZzPPlxJIaRLSreluBwV2UrV/b/L9Cu?= =?iso-8859-1?q?u2XAqFV+2F1irJBdKKR10jZdeCXbPfj62azqw8Dce+DgIBvXajr6iUlNnRXh?= =?iso-8859-1?q?0yLVomqDZ627sMX/GHCrHtrDUJNQfn8rb6hpE+0uoxZ82N36jg8fbX4LYYCL?= =?iso-8859-1?q?HQBkoMtUyQt3y+H8nrrjQVoQTMbDaOcEO430YFuTYgZ/DV2ys34QDg1naoNh?= =?iso-8859-1?q?7XWUsa6cGE0k7FrOUdtIlWoOt9itfbiJAjgUqpb1d0WHxuHrcmryyEwHZ81t?= =?iso-8859-1?q?dliQFSDzaMRi4dkm12Cq271WAYiGLRz4qaS0sQoXDayswc5WcjG+hqTQOEEU?= =?iso-8859-1?q?DTliSt+yH/L9PXJ2WT9u4bVWaCJmaMZJoTtnLSSd90DfOYP1rFScozyOheLY?= =?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: 59c5efbe-d102-40d6-1233-08dd524ed08b X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:40.7266 (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: 0gYI4TXqDTIR/BeKHssnE5Fm58s6BVJqxg0W5gkJ9ysO5UxkCRocXA7n6ANp23XHogY7WHS36fhPl6CamkOYFpojWPMLf5+XtpZUmJZQHuWl7+0uI63/tJeZbpPb8I3h X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07: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: 13984972 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 75E6EC021B3 for ; Fri, 21 Feb 2025 08:10:38 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4d-0004bI-I4; Fri, 21 Feb 2025 03:07: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 1tlO4b-0004aa-Vl for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:49 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4a-0005j1-2F for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125268; x=1771661268; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=L+qfiCqDv/FvxxOldZORUEjs2F9iRklyEARtcbtk2HM=; b=URF65CE1xySsucr/Xxp8+pFh5EHmXDhHkT882Z/AK03SgTT48zy/DMHh j4cTxLzcU41AMQRU8Xys83ta+FHdwxKEn0LjGRRKfcUl2a5XIxxkJ/xiZ +puuNBJx59NJ+fCk67Y0Bj1d+LrmXfDvCDJVE18Q5qcyvzr8n/81A0fvN gEv/4Txegvw3IJmErPAGQzcCC9lAz8KP0T2SIKL2OnZrPGzcTPi3GePWn MmXE+CI/ei5cPMUZF/TDZhNJuOY/QDcTAdYmVHUAg1gTkIT2g/HP+3c0V 0987mZoOMGJUskPPnNLThQ8RMw2eYhaW5F62MDIZCMPBL1OP897PcYO1c w==; X-CSE-ConnectionGUID: Wf/yfAdwTCuk2I05uBpjOw== X-CSE-MsgGUID: c0uuOi0zSvy5qzlj9aytxA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394141" X-MGA-submission: MDGZIDiP26ztFt7uBd9Wqr1vW2XC1JFklEdlR18T5Wz9PyVMRUcDhzMsoJBdicjSrnh7CA5poRlPNYNl1hXGD1Vy2JHguV0Uki7Q5yH3wZlfC47YPC4ePjyh0mA2aj0o+/uYHSzgx3mMT5wXq5Grmh9Zg+Mfug4Vj2jkbWkcdBPCHg== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:44 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zSU/HnqJZFt5YOdQSlurdfXEAO7te+0Yp7vGLzK9cNDrJKkvJAWq6QQ05auNO4ohzUk/72seJPfVuAv3aMDMmCZbj2t9BGd/Jw4Wa0wOLiGGvoKDiKcCxq5M8lPGYCF+HEi0861DH0oivv0Vqm4XrvXP48MLz9p+I307AbL0WdqZqEAv6uZ8CBtMzR4CSXymICrN2cU7aUL1b0VE4MCqdAexUSS6OsxGsPeQKrW0zvz+e11AdTFGgug/1wWL9IzrnkZBt90RhD3/kx8Y/Bg4yGOqv4pLsVYc1FczY90EXIN+NZkXTaV5wrdTZUbmEHDs8/PWQCXPCFydk8XY5XAoOA== 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=R4eWAivO6G+RV6LkKkszVAxT/RKxS049nCOv7ct0SLmh7kKKkKXfsVsDHOJHqSlsKiS4rhXvEP9f8Ankv8QTaPHfUDDcS3we390wCPHPoFmSJGjk1XF4d5Gc6hn/fEq4njGol670zavgpStwc29UIHCbHFNSFyYw2JpKA8bHXgZehh+2S7+8cXwPA0IZp8+7fo1n0UAg6q4k5D/pnshVrkeJ1i7IdpEn/ZCyxgq8mzGHYdg8+VATA3PixmFmwoniyecqxBYWvEKyRMGVpta08YSemYZFS7yPvKucJT8AlMF2oEt3EY0wHzGiHEmBb9LA1ma/GHqJ5rfhqbhmgd9fEw== 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=ay733PRMPTMOQnpFpijianmm1Bs/ur/cYCGUfI8uaFEkVp5Xp90TFyhP/nggRk87r5tW/RX+5OP/eC4q1qkUpl8ZR9HdAAS1H4calhrWODO8gvnrCfEnH6otH7ujaPMUy7DRli1b5q9vA/Xhz44nD7Y5DUO3mDdJQREuISu60n5n0B7Xk3ahYHW9UNooxeiD4COR4UXDEk8SeFx5DoQrNnRpO2Ns73JIyiqyKpDri0MSfMbW/Ah8a07YHJSdXU5iKE4KeocNzUr1vDMZc+LKybioDqr5ftXiL3iWC+uqDGjaCLLvOaJBULCoYSq77ZQE/aw4HqfzHHs4/enSiyJ6WA== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 15/19] memory: Add an API for ATS support Thread-Topic: [PATCH v3 15/19] memory: Add an API for ATS support Thread-Index: AQHbhDetiRjXB89bjUaSrra2Zx/Lyw== Date: Fri, 21 Feb 2025 08:07:41 +0000 Message-ID: <20250221080331.186285-16-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: 8f67dd60-2edf-436c-af20-08dd524ed0ab x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?jlUvVhE5BcWhAztUZEqX5hOXai?= =?iso-8859-1?q?6aIbalJwLyWkH/os8GLiTKIODs+2Ei1OaalJvJ97V82/aw98AihA4pkSggDV?= =?iso-8859-1?q?2/RqVPAAztgwP+gU/2u3AsHPS6TvvqNrWYp7NWMpSMNLrhzxt2tL3VWwHgQ9?= =?iso-8859-1?q?JJ+N6RsKd8uVaDgLD7HNcGQoHVcSakiuJqDNWEv/mOZPUlO9Lx48SUjU+IsH?= =?iso-8859-1?q?bv06+NtYA3cLnlL9FM3rcx9uBI+3F4G/ejJg3UANUAa7a1jNtvU1f76/cD2z?= =?iso-8859-1?q?vaxnGfn3ZC4M2jJPqccgtGJCiGgnsn7ywMzBc/U5oMeLnl7+PZwIZx4bBX56?= =?iso-8859-1?q?SBEYDWhXMfhraVLQFh674nUbLIF83YeVaR1+O1WiwuXOIXsbcZiSS4nKAHwZ?= =?iso-8859-1?q?mk0YBV6iRzsOkVWGTxZsW9O8/OV4KpDf4r0DcGwJFjyJ/yqEaiWizevOUZLd?= =?iso-8859-1?q?oZjYwgeijOMpusdpRMiNZEgWQSO1N5tUufuA8CyguOagER3wbXlzFEcszngD?= =?iso-8859-1?q?z/VRx+q9sPTumyniQrAWNmQ6pkj6GJNu9P1t6rvmpaghhCTFpMLcCeCh78Nu?= =?iso-8859-1?q?nfvv6ZqRLtp1ses+79FMH+aBu3j+OO6Bqz21vCXq2GYMhUfjPSNOGh0UyyAt?= =?iso-8859-1?q?ZHsPAqC54RjRGUVKNP5Mifc4kGpLpZssaPFCnq7vT57YoeBc7gSEQ2oygmOM?= =?iso-8859-1?q?hQaYjwqFeqwtmx9yEYesSmtjgRE1tYMhIX3v9ZPz/4ArHwSZmywrvwM/cD+0?= =?iso-8859-1?q?kShIcVRTyk1gpKSma6kW4gDgfqttp+q3a1hKAxif9Ry2BL0R9CDPKQWBSEL2?= =?iso-8859-1?q?88MeANTbBrM/VMURrD+z8gayaHnemQ0CR/Df7sbaGZ3sMrqQCKpceDylav5u?= =?iso-8859-1?q?tTwwy5P+CW6KnJY5Sv6k1rKKZH/Dc4ndy38dg9cA5ByoZTPKAhKLcn0M6YLg?= =?iso-8859-1?q?uZG3+Au+thRkjcq22/ex/S+gVOypW13E87KXZgyxyz++LmvtO1ZM9Z59j28n?= =?iso-8859-1?q?phrDHJdJANlza26Xun/gXK/EDCfjfdfWfSDF60kgCibCpmzZ2dF8fZ0HbI1n?= =?iso-8859-1?q?HJUN6zpfiQY5/Lz4PAO+sUsrFjJ59/CoRpSdSlIs5/ftg4BNVrKeBHTYVMbj?= =?iso-8859-1?q?7clrtHatPE1p8uCJfXVBZ4i4x2lPLSZ1HoFzNHJXd10+/8pNjwZQmNYAkRW7?= =?iso-8859-1?q?aJL39jf7FCPE3zGuPUtmGq9v65jdGGEN2oPkNwT4O+aXnoFyo+YqhBw0eHy8?= =?iso-8859-1?q?Miothzomei1sq58bviP9zk2ZLMxJIRxiihKG6XosdFX0amwssT2RKtEfc1hE?= =?iso-8859-1?q?JTEzNK6Ht+CPiv0SeinnvAapQpyqYX5haWRRdIOQGFs7HRVK6WBjlozXT7He?= =?iso-8859-1?q?LojoxkW30n0KQ/Snfr2KpVjX6IP2nDOVOJOJkQ3c31TS27UOHBp5RlrYgfLw?= =?iso-8859-1?q?lip7KpaUWMO/5KI1WfrtKlJdU6y8sYout43zcYvru1DY0fKzhn2zZy6GIL5u?= =?iso-8859-1?q?Cs3kiA?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?xR3IaUU3Nlp1iFNuxu6/kaq?= =?iso-8859-1?q?zkBASecqLvGZtwj48937F3f0PM9sd7HAmoHQzk7jOQsmxkLp0TysNcBtI9L6?= =?iso-8859-1?q?PHNIlUqMYSQ9wBoKyZrPqo6tG92f4I25pxxRjoa3pvpkSdpSyt2anEqUDc0/?= =?iso-8859-1?q?joIuZFmQJ69znPhJw6puM+bjdedMjXTV2Fw744/+/lWF8zZTznDrOTApZ5Gu?= =?iso-8859-1?q?w/uzAg5a4At9zLwJ2Lt/iZwCUKvZZvLlzWAkF5tefhGbjAQ2P1G2muhwERJM?= =?iso-8859-1?q?o7BJpAh7hN5z84TF9ywmSMPVbCSb9nZsJhyrMASHZNKbWDmQr/KWWuB8k21l?= =?iso-8859-1?q?Yjn89rfXmA3YXJFxUteffy8gUbYglvyez17H9hRlVq1asavj/VAhNvFWGGPb?= =?iso-8859-1?q?rs2vaWhBAEVrEgAKqNFNROyS42W3iwxzv5Dbi1fXu9RXDOv3PPu+OFmdKBav?= =?iso-8859-1?q?9lXVubuLvCfoy/Y7GAw0O7EJj0X49X1dgAf8SzcvqMLoyrTETrL5jVDHCpAW?= =?iso-8859-1?q?HJIxe0/9Alf05RWim46vPHUZ1PdSXbx7VpHYGr1d9URNzceLU3WSQ/nk84jq?= =?iso-8859-1?q?LnmFFz1YFHAAi69GpXsGo3Hqxkq66ao8u2Y/gq/ozCkB6NT0bHqG2sBA6aHh?= =?iso-8859-1?q?FWSMgirnmj9yK1eqmBNR54eBYcVl6OK8EwwFAeq3BRFeEHdrfrqjc7IT+q+e?= =?iso-8859-1?q?uf8TuUQ12DPlc+yp2c71tHmRqwWGp7nKsCoSMkWlWt7HhHeXQaZIlvX4Cj2a?= =?iso-8859-1?q?G/7a0aVXWxT7qof3Wa2y0OU2ZfhtxVWO9wTzcPQEzy2EVXrAsAnJAsWkN3h+?= =?iso-8859-1?q?aWKc4su7ZuRgjQvfag4ddVD134o7iBRm8kYUC1bVkW+lMcchjuJyjIOwOTX+?= =?iso-8859-1?q?6Qq1aV3M5Ok1ozZx150oy3s9rUDV+alkkrU0A9V1/lJJPusfetbJrSrogf0n?= =?iso-8859-1?q?VYVuFfmzlB4VEv/K6vshQk4nDTOtNs5256I58bE9Oprz6iSm9bn9uRt3AlCR?= =?iso-8859-1?q?lH84RuYcs9vHrxsbOhgfFhSrqyBzz8iPoaIoX7tl8pe5mc/CWX9DCy5SD6aN?= =?iso-8859-1?q?pLEm9qOkCbt6BenjMQWtq0tcAXnvCMLRUS8RozkX2WZZKg09YOfcuNtTS1Wl?= =?iso-8859-1?q?ECGfaD6T9k5zeNR23TMx/AhzrJNW8jXTXrWNHiN8LTWXxqjGzcH48icxE9mD?= =?iso-8859-1?q?hwm9XWEg1p3UWkYjERYVyzCoD/T4/vAWlrIX2vTN7cOebwfW6hu1aQIRZ/vw?= =?iso-8859-1?q?+321pdvtd5LXomf4EQnf0iZhyMrkWiXPMD57xcLm/TQ82HaKtQ8X0EHmF5CN?= =?iso-8859-1?q?6ElJfqTL3x9nwZ1Hlse481xH9H7EAPKvcNADtxV6KlBP62v/Nt4AJqmOHN0g?= =?iso-8859-1?q?BeLvkmNwVVx0RUEBsR73Q2oacGddfy/B03cAGuqcA986IP6i3SJs1u/4OyLT?= =?iso-8859-1?q?5n+Rwc1fEkfWWJUpg2GmT0rf9ENxUwtO1xXUCQGs0/bRaPojPZilygxdTRqu?= =?iso-8859-1?q?RcqyK6V+By12O6YB2X/kyx+W+1FXCmhu46HOTvQtWU0aZW7FxYQqQkmfwOw0?= =?iso-8859-1?q?p/v4kA3McBmVN17oS4E+mI39KF4Nm2DlkKZP0Y38W+b4kDiG0SIiiH6DbBQg?= =?iso-8859-1?q?AHJhA5Q1StJYG4ru6WsjeAMkfp+UyahuU81wNu8OkuSm8wGNiMmrEKmYSWr0?= =?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: 8f67dd60-2edf-436c-af20-08dd524ed0ab X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:41.4874 (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: Dnq6yRAl1ttULGq3lYKYu1GOQ6jsz8dtry1sCHXOhnSkbsv955ByCJi54Jj+WCO2qyeAQFlDd0i5d73n+J3H8TbsJ/VhIs4NpLV116BHoyhy6J/N85qpca3dFXbFqOjO X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07: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: 13984968 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 94C08C021AA for ; Fri, 21 Feb 2025 08:09:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4f-0004ci-NR; Fri, 21 Feb 2025 03:07: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 1tlO4c-0004az-NY for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:50 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4a-0005lK-Oi for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125269; x=1771661269; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=thx/EhaMFSpCXXIfgOfxU1JCplMe9WF6IcJG11lYnsQ=; b=gsTtIgggJFjiI/rBm+UEhbttgznTjKf7451CEZfe8124GBwPr0UbAY1C XxrfvswFVEe9+b0szlfoHSfffaX2CD7Rpo6207HXDGGj1LslPxsqkrBFu nBxw3gwqv3Eby/McmdflQZvfIqWuirM/khH8ByQi0h0z6ZJKNvTu/Ijlq wwJlSpzZUfrvpUN9Edeut8zWI6iV28HoRO+iVZCBfGK67p6fp8qF9hJOe 5vAh5x3kADMbSDI8bQWmXn5y1XAT62l2gQyQOxxdSe8JwvKpH70W7izLO MDuQmzk62mtjXH7pPquPbZO8cv12OaLxkfNPzqnUYi4RYGh/oYX5GDveI g==; X-CSE-ConnectionGUID: g2VXE75BSGCFejAUCrrseQ== X-CSE-MsgGUID: UHnVoGz5R0OIdYV30DUUMw== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394143" X-MGA-submission: MDHFzkmhD1qEen6Y+FK5uN/UpVldkOd5F7iswrOL0whmDti5rQ+3TXkCeqWS2UFOQwi4SAsp+7O/syKEoX4acCEnbt+V7wsPzI16rT3auAwR08JaCD4aGKkvytX3qIWuavSYukjHzRTlW22bjFj8xHP3sfoKjEQA4Xt3zHHsy8woKg== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:45 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OjX6e+A1Sc/8tOOqvl3vrX/vVGXfHhsvmuQU3NptiAWXpu7f4TnGQ0gmO3pXnJordKQKl1zYF6t19WazUGaNU35UNYqtut3JsXJtt+esxlrrhoTBQcFgN0d2ixKob2LY5UnnvQQ0EISsR3lTMHicFjgQql4PvEmfZZyqP2Rc3W0gwBKLm4qQaSLTmOlBDvS81cx3J/NciNUCEJ/6sMuZr/08ufoZcV+NTtCsWE8oe9STCVLzp+UB4v5GULy3xKo0f/+B99xZE6JzS4RKbv7KJ8c3Jp9lwtlAJngsOIQ51qKILDutL2yc5RpJ9aE0CrCK05DxArXvavn2X6DAaVCOtA== 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=E22Y3dYCl5AlkILbfo85TzWNFR8RzV75AOnZsKHZM7EFy/rrl57QGO3Kn8xwYm2W3gmB3r6h9pHvLUB5Ypj8VXgxN6peHZfakY7iFLDWAf4rPUtR2vKMp/T27sgxHCKeueFbXN1xTTNw11BLYqBE0ODv04PnnmNJy6SNpy7Itq5MApA6bwEtQ8H4hIkZVvaP20dQpWX2DlmvLlvc/LPz2imgN3iH9jvvjWikHQWtBLnYVav/9SgOChTcreqVCx9BmBpfny+x04/NGQRoDibxDrEeC9mBs92wgLBryIaFbcr3FuN1DQ9wAuy05zbe4KN1DgSKp0xYNytb3uNYylgs+g== 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=P6zMvFqOkrbAWyDOZaGbZS3b1KOe1fLs24SjZUCs38fhzVWa9jN/hMKFBEYboCzKNc6C65mJwCJB9dVOOvt/FvJLcKu26TJbYhdeNrHO+92Er5xr7wf3xV6DL1PgdEY01Jr3nQa0hSCiI+5wmIJtXoeAYqNwelLHktLuKn3vekLdVci0v/Kxen27NBw46lfz0q4zPzmRNjznoGESdKyZXIsdkPcqBUPOA5YGfPShRJZrlnTE9DQaN7UJBov8sEPDFzOuuQYkz+J5mkqdis0nhHGsih257PzlrUaCEArHd03+Vty8FYgEDPi/ErsM3f41AHQepvFUpY+w/XIgr7TdPg== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 16/19] pci: Add a pci-level API for ATS Thread-Topic: [PATCH v3 16/19] pci: Add a pci-level API for ATS Thread-Index: AQHbhDeulsmv/QVTtU2P/5dyiWdZPw== Date: Fri, 21 Feb 2025 08:07:42 +0000 Message-ID: <20250221080331.186285-17-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: 3beef041-818f-406c-5925-08dd524ed0ef x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|4022899009|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?wZ2YKdQ+05YWjJaHwUsSALDfBD?= =?iso-8859-1?q?Vfjo9it+nAaFFeQOtfAmVHL8jxUe48ZlgFAFUZNgjog36x001kqIImRImuyc?= =?iso-8859-1?q?LCEhUyCln2kduYumUzoWkM8GrDU5M9jf3piR3ZqnlT8OVzv8nFi2aK57K15Q?= =?iso-8859-1?q?ZvKX1FAKMTylQPSpALJ1rX2mutg1zWOew7p0HNJQ7Qmqz7PjasZiYlk8t4h0?= =?iso-8859-1?q?Lx8j0kZnAksP/WEI7wWEaPXFiBmoX8Ca1TqtVz11jLvonXWgw6fGa2LxrVf9?= =?iso-8859-1?q?BjCPpnlzsHw4yQxcm46LqGHUcab7qo5DEroCGpuZLtrbai7PR6jPl9shanTC?= =?iso-8859-1?q?EkocekGO45DmzbwC3ZJJqIG+h4+FICrnkyCgelBLijB1iQlWnd9UPhRXOUhH?= =?iso-8859-1?q?ZesgpwXcXU7McPUqWuymL3kiLwPquWefZXC0Fwg5rkfgAn2M5+kwUJ2pjDpP?= =?iso-8859-1?q?9uQnwd1VQKjaRZ+VoqJFzeB7LPDP8fYPKK3mdcVhxfBZbCh/Vo2S8L6TEvXi?= =?iso-8859-1?q?NMxFpS4gnpmCNWoQ6TkoUKSklbp7f+Rn9wEpE9SJK5GeOz2ukMib2Ne4qARE?= =?iso-8859-1?q?iC/Qfq30pDV8PloQoirLPFKMr9j0wJYih3d/pcoFqol7vpgGXnuAULFWMyl7?= =?iso-8859-1?q?6vppYBvN3CgQRCKjxw1rC5fiT2vWZI+tORojrDOvx4MvQIMHcqpWAlF5L6+J?= =?iso-8859-1?q?yufKR9Uc5s9y67mGxC60+2QbAek3urPL+wMeFAHYS99D1SeubfrWwYQSy30A?= =?iso-8859-1?q?BZNJ3huea9Ci6L98zF35t746xCKhQsHA16IDjPzuxbtwFZ+5KaxmTCW/BOVU?= =?iso-8859-1?q?JvHsoJU1PJWv9rPSPnerkpka5IphbrvKwbcGTyIQSAlmHVF3JBlOD7l8dbjj?= =?iso-8859-1?q?9Dj3BsYyDQKz2RBYVr9ZU3gX5Xx1NNovFsG0Gq3Y/E3RdNHf8/IlFL3ILZSW?= =?iso-8859-1?q?9fBcFbJIB+6cNvBfPvaIvGvfIMULzSs6/uun7LSwzyA5vLa6biIaW6DAPoEO?= =?iso-8859-1?q?H3sDmk23VqW4FtE87oW9gWkh9dmozj5FM3aExS875ZxI/N4eLoCLKFY6shzD?= =?iso-8859-1?q?Q04mOTZBA+oP512agbIO/8CuVAE0KRkH7I7JkhCooBmhFFgbN1SqHtk8165A?= =?iso-8859-1?q?qxu2gRzhZEpP1XuiY2n8ENhlqTkAKsTJOCJ0osCdHmjMrKTzUXrul8I26OS3?= =?iso-8859-1?q?y0r9R22s+AzcA0QP+eMZlbIn+uDYobX5ClZL1n7T4XdQ4NJNR+DAO8LShjt5?= =?iso-8859-1?q?df6tDtknMdPUpL0l5he00RBaZGScEmDRiOQHz0eZgi/U8ZM5q00JROtKbQuO?= =?iso-8859-1?q?o4JRCRil9g6UTiKeiYy2zG7zbKEXvQ5HNQRsNLcUV41IrFBm5ssmZWeIwUKM?= =?iso-8859-1?q?e/Tur3t6L0ooaceTJC7xZsEXkalZUO5SuiTP910IkGaSwBhiqSLlRY5xRyjM?= =?iso-8859-1?q?8/n9rQ9RkTqwtx9tzLLIhRdVppTTQtsHwaWU+pmh8uisEB16OdF6RxIwLiDT?= =?iso-8859-1?q?jbPPwz?= 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)(4022899009)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?7DDyYPBzeIC1A3DBFrS4iKK?= =?iso-8859-1?q?hMqXGYdR9AKfrp42Jr226miCqOkaoJLnw2XI598I25NF7i1T3Njplhdtqc4p?= =?iso-8859-1?q?fin9ujQvjymACzxEOKNIzajJNeTrveeXXAmKSmylHNEGoE1SsQUjzTpRb2dU?= =?iso-8859-1?q?OaJbGlBuqUhra5z4eM9AZMS0mBaAj0alVh5GMahNhqPNoNtU0KI6ejVL7E1Q?= =?iso-8859-1?q?GNkJ0bTjfZZKRQbBFUzKB7G5yKBHrV/cMDlJbEHXriq0ZwkX0UmaJG2Y+g8F?= =?iso-8859-1?q?pVYCMHvmn5tCBdWXMH/SyIonr9Ekmr8KVbRBe0T6kxwqCFeRMrcn7zlU3S7w?= =?iso-8859-1?q?8yL8Y8UnFc+hi42NkPfCX+L8O+bmKrwQbCZf85s+nIidmeY5vcHZNx6rEkon?= =?iso-8859-1?q?3rzt1QkjBY94lonqzaztGhknYK2f6iFH2zV6ldBiuRxiVZXgyHg9PqJ/fOBa?= =?iso-8859-1?q?UfgwOm41TIcvRR/fhp1w0HOCrRUnn4xyGuSbqqbpt6tDfHrF37MulSE6jSNL?= =?iso-8859-1?q?81ysoKj8byDK5+lcB+2KUIul75/aECBqXvCLxDwAUVY5xtSew2qLRE9nBCjO?= =?iso-8859-1?q?LJuwiibHqLrlh2SoXP8vBJLy2ssa/aHRpxszuUnCXO1GVKtQPdTYs8+DMZhO?= =?iso-8859-1?q?pDoehk/CoJbpWxNFo8O3vnFhysW6DulnkMHV/Q+W3T6zK5yaN7xTsaGaUmq9?= =?iso-8859-1?q?zhCWcYlI6QWh/z3Es8tD8gksfYE1oHxaIcD1bTVziv5gxZ5LcvwNpSGXDjRd?= =?iso-8859-1?q?R95Uj8Be9eGb+qePK+UndL+GwEfeYNTzqpPmyDBjE3xyOBHKeWWa/aM1l1I1?= =?iso-8859-1?q?TP6dnGcumz7/Cif1gXxav00LnRx7gmBQOCRpbllIxfOHPy0tzWeIcRtcoOCh?= =?iso-8859-1?q?9gBB8/6OK1+LD3q5q9MM9cQIvROqFUNN9Eqiu/l+Vlj1ei+FMkZOqD2ESG0j?= =?iso-8859-1?q?Uko48Sh/PfyUw+9xbfuJJD8Y9fEokPbnIBOikkqqt3EaV0+MRD6Dwy1ewWct?= =?iso-8859-1?q?dSrnxl73uFVgRiEslL3ZcJSCo+HOJj2E9sW2cTjAdsJjHWwTeFGCHnAZyiDv?= =?iso-8859-1?q?BCTS9G36KymJ/zeTIsoUXBdz199s+gBPLFSOGOKIkYPqabLBAQz16Zemi4MX?= =?iso-8859-1?q?evefozUqPExT1t/WFUjtUTveI93NvcvMS/AP/BYUX30ErN5RcEG9SUtQwLcf?= =?iso-8859-1?q?eOtQHas+mtsZpOdpJ/FrHyKSO725pLWEM8stPouhJ3mr8UDnpaaJTEk2VdtS?= =?iso-8859-1?q?SDyg3yqKoA/YFekganHVjn9Sclx89o0yKZg8yrUMwIbYjZMDRRDGt98CeJLN?= =?iso-8859-1?q?fMmMKmNpropXqnKIkaEMP29zAOExoA1olcA2slKcrcRtsrB+P2WDmGBYqXmg?= =?iso-8859-1?q?ToI7dXbSZfk2+52JhLXMCRTWVntceooycUk6hfyb8U8IJf0Ugwmg9CVhwcXl?= =?iso-8859-1?q?goc6AwwYyh9fGkb5gzHuJeCRudOf22n/xHDizo73OdGZY+MGnU7HWq0QUCxn?= =?iso-8859-1?q?PMWEfBRM5+gKaXt0BNislUcimjntc29sUlxezfhXiCAJpA6SJDW6E6CfpMWv?= =?iso-8859-1?q?ag0LawlmrAOcel65TxSRe0PECWlvWr40JrDsXc8WRYHMPlPef6wHIwrUupGI?= =?iso-8859-1?q?QMkCkdrxZuMoKx5TgEdCMe71lOH6UMN6SCrk+VsjS2nZu3LGiWCURXQHSQQk?= =?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: 3beef041-818f-406c-5925-08dd524ed0ef X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:42.2146 (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: GcgMZxudSS5ZBq/r/2RBWKIA8Y/KIR0vNAtyin837ys9cXWnOAu9xopCaYtbeZjCd39BjijrpYEPg9r/crnIiOZ4aaS379FuFNg3i7cZry7+r71vPcaAtl3mhiXIeUUu X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07: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: 13984970 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 A2D8CC021AA for ; Fri, 21 Feb 2025 08:10:15 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4f-0004cG-3s; Fri, 21 Feb 2025 03:07: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 1tlO4c-0004ay-Mm for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:50 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4a-0005ko-WD for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125269; x=1771661269; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=BrG4y3xDgUJOKdvWUgQWbXUTo2tp+lMrO+qSWDscVRo=; b=memZNBwiLKK7AIDte16vo6MnkMVD2fvJ59yC40tzTME8AyHE4OSMNaxW z323FlrF5GQWozkfBidkk40EmxTrwKyk6BgJ2FI/gi9OheRlivPHlRrCo U3zaohaF+qJ7U1uQA+np39q8ewwcAg2BuBnQwWKa+gXd2SYlJlqsjtgkb NXMbAnLST51t0kmruSPWlqkHbYp6fv4P65vl3pNau3Z9t64TG0sX9nXFL EKeFp9uKflcMpDa5sQgxm6WzbYMiqXMpDc/x5ds87VypsfiJAuR7sGuDD vadlDoPup0nb+P+Kk6fk6/BzLlj2pUKqnPvrrWcCdTikRTyitPzIaDOet Q==; X-CSE-ConnectionGUID: vaOXLAvTTTW8m0n1+0fJaQ== X-CSE-MsgGUID: scMsAkXxSeGc6IWWpKbbmA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394146" X-MGA-submission: MDEN2jHDneYqbeae3jxb5kBe0ShaTiDAxS9dzSmXOlxZ0ANpeD+t1B2pKEWIEU1dBG8cviNmR1hvfPdapr4G3iA5HQLN9vwPu75DqjV85/sStT4XHhvOIUR3WzbE5n5ca7sAXq5mO6WyYiBM3WahutAHrYSSvEfzRF9Qx3biLqoYRQ== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:47 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dkMpXL4FvlRUSUYkxW+SQp4OFHLFkWJfWpSUjl5zWfs8V6MTT9M8KXijM3yWR5wo6+SW2/SeeWHY0GiMbi6COr98Ncnv9ocD9QzpWEgqEQRrKtNPnsQvZXx0/GI2w89r1TogkUJ8PFj0fEyLfPm5zjSTPVP6AkN1izUCuJ9Ue/coT0OV1sDR0G72fmN1acKIDltXOX5TXc5PxDUGHYU85vEAZ5Qvn6QtGe2lp9pqqiUDhugmtlUSderapGml5GugJ0/DKfhuQLxlcnAZ/1u2oXxIdg17dHD6oFuR9TfexGKCE9WucQGUQKkdTuFXhxRBY5AaYzSJmlR1PiHvCY/39g== 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=wTKdASl9wIhFYquY/mAMUaet6Tvv0dp2iQAE7obkelAGAQkqfOf6cE9qKjvi3gcTmK7CH0i8srmPoYSjrCVpfvk2AM2UPpxDSu0IkCiuc+dkEcUWCbrUhtaRzIzSPM3TzNEznkZzdYUVgHObhV/aNnuwUVi/MLrtJWKh6bpk3cm9/352yP/ibR5UV8hOYP/6+xfi1Brf6LO3n0q04ITNGZ+CvA6wGYaF7A158vBf4n8TSDJD5602jDLL0kf55gC6nfIbm2E4oQKm+mGW7x2n6RRTBeuktTOXLecX4hI4YrVHepEWcRBjE7SHQrVjT+SKjv7fWQAxaAgpo9XACRghGQ== 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=KQWg7AkaIuFYoGkER52wxSK3hP2Z/CAELR9XkWyi9KQdjQv1fC+6SEZJlfR9bWfhFeCwFwX2I0pBlsrzaCm+ZbYQ5ysitePejOEZd1LVlDjHDVny0yd39XI7/ZHZyM2+0OLHrjsZJ8qkhgIbFwC6gOZrvlSeBAvFeM9L6COD/zIBMlwbkADiFwEKgd/zOW3dxkfWExGhwujkkroMBptUn/zlHxEBBxXePwnPrQGkmjNbESTb0BTJls7sOSIJzPm6bu/a+e+kkxDCBKd0b9R5rn4dmnxu46cxce/swmzKFqNQeIxSiwQT4bkCLAjFuGMcPSPFznpPxLgial6ZTrjkwQ== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 17/19] intel_iommu: Set address mask when a translation fails and adjust W permission Thread-Topic: [PATCH v3 17/19] intel_iommu: Set address mask when a translation fails and adjust W permission Thread-Index: AQHbhDeu169TFxh780WaPeBcIqbPLw== Date: Fri, 21 Feb 2025 08:07:42 +0000 Message-ID: <20250221080331.186285-18-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: 72974e0f-bdbc-43a0-4122-08dd524ed158 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?0YQ3OBIJ3r/cc6Kg7+0rIsBOJ4?= =?iso-8859-1?q?loLNlxIS0MC9owrneG6CLNyUR4oBcOQEdLhPdWY00ZeFtvUazcWQeeBEQgy2?= =?iso-8859-1?q?PSm05KrOwdKskBX57KHHAFq8N8eYE0LXI83bYZcyWnasrMMrgIPab3uhTkMr?= =?iso-8859-1?q?qCuRvDDodKW4WrgeUZY2bOFghA7uOhDl1FQRqHKSe4bQCIk6VQanVNoxk8vq?= =?iso-8859-1?q?MHEul/gjD+SBiXNCaKRkJtGXNcVJSmk1BORR5hP/IE2/nLgd+/9Ll3CUDR7q?= =?iso-8859-1?q?NlrtXlGfB2aUpnpgMKC1HhC6J2i29JfCxxgfzCLZFOFQB9yz3XfLlOl4P+Na?= =?iso-8859-1?q?MygEafuCFDBX2lE0oWL4S+AvPrDNPGKOt1eDS7PkjA2LIqaPmYmUO8byMjys?= =?iso-8859-1?q?CfPJPtOz/4AMiCb3Y7oZuCRXOwKqS2JbZYjv8P/d1Qt4/72gXPnlHnDMrycm?= =?iso-8859-1?q?WI/1a/mhYwylRmdoItgE4jKqDrR9ePWJTCa81gyDbk7hn2FiK6IN+QdS09e8?= =?iso-8859-1?q?twX3MJfrHLclnNkMoGApbWzXhzJMTTIRm1bqec1mhuoCOCkQDAlS+FeSDec5?= =?iso-8859-1?q?zABJwa0oo/yUT04Vn2yyWWaVM8Coawz5ZsjWXVQ9X0mpg/rFMXYZwgSHIuVI?= =?iso-8859-1?q?O7gJgiHtT1o1KfJybMgxQPyv38z4KTvjHoWMHjD29mv06tudijuNSYA4Jobr?= =?iso-8859-1?q?EPgxrWhrWGCWqh29hcgSkrTLAP5ufczdQrZBrh67YJrG/31FTjybihhwt6i4?= =?iso-8859-1?q?Y1HeDWXtlZCIN8FOorTqLeApNaC9ZRUeVJkySofD1YfwcpJk0oiyp22ucf9R?= =?iso-8859-1?q?UPEwDD9xjQvds+JD965aSu4kwknrN4Bz/BnRzEnT06c5wA5q8JBR4sVoT6Pg?= =?iso-8859-1?q?nD+/EAOHNAwIFk5uRyhJSf0GyX+z+RKhymoNsYrQJU3N5TOUHIg+kMmciEfl?= =?iso-8859-1?q?/M0ysHwQL5xoIm/Psj4dgIhVqfnl5gSQ9CTWOA/HYtdtka9NHeSM2fhWQRUV?= =?iso-8859-1?q?4MedrQ/R4JUNgpx6C+smL5k4ne2Yj5il3/oiRCjK/rt95xpFDgBGOzxRWTfm?= =?iso-8859-1?q?g0/n8USfxbqVUwwiUBcwaIFzmQrhbkMqGsIMLScGHn8Q7WgCygrCCAfQDW9l?= =?iso-8859-1?q?tZBoVPDtvcFSml/m2TaSZEjuQg3WtN0i7oDgFMtHDAKmYEdeqz004VjxfMym?= =?iso-8859-1?q?dMEsDgahD0ceis3omsTcZ8xXkVKbAXqNVXhvjQftgB4D4hEjbXWwEMCbT+Ov?= =?iso-8859-1?q?5v/huJHo9qB5jcEKwhXWmXOzujKLQxufQiShPQnZ5rXnG0nlhDbF/eOGLXJ0?= =?iso-8859-1?q?6nklNeFR7lwNNFSpudaImWuCThJQuXAMrIo2kxkfkPZxsYNHUcBO3/2J/tip?= =?iso-8859-1?q?GS6XCYvhn0PhBLXa9jHuBX0oKPL2ykjlmEKtmQD6kHq9Oe6t1/YpcaWCDlE9?= =?iso-8859-1?q?kf6KdJnxWkaVE9JSHe8eYuFLiILZF69M44jRQkDxYeuQrppoLDgkuT67Pbpd?= =?iso-8859-1?q?OuAIoh?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?mGn8lmtpcXtNlrt556d1Kx4?= =?iso-8859-1?q?cNjmIBtEC09gDnEqOJ+7t5d6ULfq8bCbtb+0GjrxIrjHY6EXs8Ie59hJBuoW?= =?iso-8859-1?q?atK5NuzjkMKxa+ryRDmDKlBVoraSV9G+Y7zwtVp3nO2Awp3hB2Y+J1bkU53s?= =?iso-8859-1?q?iaio0KEmm/aH7ZjvnZgJVNZCPik7pacqTkFXsZpN1Xz1E7xsP1gYv/DrwIqC?= =?iso-8859-1?q?9mAh75d26Mm/r3HFJ4D21JUmuyf/M7aEl+HfDp/FE2e0d5mtzlxlXzOmb5On?= =?iso-8859-1?q?Q5TFrxSNuzLh0hYyGON+o29xqhL8aR7c4umzeSAqqlr2Mj6/S5f0RWkmNjpQ?= =?iso-8859-1?q?rkdPNwxb+X7R5C0kuw+paiKO9Ruvj+RVqJqKkOJFv3DPbRI9cXmXisI/xP6P?= =?iso-8859-1?q?XMETwaq9A2I2P9ZzmoHAbscYKeCGQS/FaO3ATWDyRuhO/pB5Fqdh0aocbC8F?= =?iso-8859-1?q?FxqWsv8aGgqgMGU8uXjEB60QF0Ue4LV8N6cnn4FtuWPhoAeif37k2Juyl0En?= =?iso-8859-1?q?5mJM2ZLlGISG/fhd0GP0GELlQ4C+YEOwa6D4DMvUVKlmBV0o4TcYHPMKeNGU?= =?iso-8859-1?q?qYwNImMQTvh9HYxa85tWEop44rQ5U8oNLsxmuqIzesHOqAQrudbtYfmljqIH?= =?iso-8859-1?q?SwaiNrCNKNYisyNIfmF53RuBAMUhUJdg0SZmd+vaf2jUB3rUniruxMDnA3Yu?= =?iso-8859-1?q?fxaaGLFzp7DnMNt8MjuVqWWLujwZygbKk6alJHwFK0MzmHf1UBkedv2p5lo8?= =?iso-8859-1?q?D41DylaGcL4duwZ1ak2foposjOl1EkQ3GFQcjRPsd/YSHraLqqFTrG5QKJew?= =?iso-8859-1?q?25ua4Rq/Wp9c2HZM0NTgU6GY5tNdFwjejn+Rd+1/K/5d9Awnek3gZOrgOTk6?= =?iso-8859-1?q?ZHx2Y+Z6o9XBL1rpO+tNOrM5vjhKtC43EOvOHvxP4bATnHipJaLxWmeA0S/F?= =?iso-8859-1?q?JDSp/9CT3OeKNoiwMhtdC8UKL2dFt+TZFiRbqfcR1hoH0hEyT2lSmfkz1ZV6?= =?iso-8859-1?q?1U3abX+lJAeQ3ZylwnqBZkmJB0p5CgbGrGmF+e89t+pVU8v8m+QQfzRjHAJi?= =?iso-8859-1?q?e6Nwo5lJVMaRq1HPDX6vHihrQV7H9b68xD13Wsv/IbLOuvfSIZeauz6MWe4s?= =?iso-8859-1?q?zE8C8eIZepqZVnMkZtVBneG30VVgi4qCsKw418MkXekqg4SQA3lpDXc6arIp?= =?iso-8859-1?q?OSUH8k6uRPaxSoFc2+6P5x6ZjM53/6mVtonU0HKSlatYt7AP6NqC/gtMcElF?= =?iso-8859-1?q?AnYJl0wmfNY0S8rjKprVvfvF3XwN4GlfO5bcd2ZUj6ESUmlZ8LSwm6DHu2Ec?= =?iso-8859-1?q?rIiGjEoUVR2bCZJAzanb6aQDmGxdNY4f3GqYLRCUQVlFuNrgv9DB3LopflEm?= =?iso-8859-1?q?E4zK09YYxc+wI+OLgCFTPKV+k4o8zCgflYExT5khwEDRVIuRldYo0YkewrBy?= =?iso-8859-1?q?wpmGtjBducgqw9GgUUWn/IE/UlrAi+BTT9dNl3L3G20hDktZqT66PI70T/tm?= =?iso-8859-1?q?MV+/q1o/iK2fDYVzJ58BYi1cA1QqLaTOGtLvObPCDi70fhWagoz17tRgSeXQ?= =?iso-8859-1?q?MXRsdRBmjlXWLtgVpwYZDlufj5dvwJON9e/iw7CcbWVW9wFm481YNdZz+W5s?= =?iso-8859-1?q?1S4hQwfnfbzYXnoKXfuz4tDK2iSGb/+74u6hspgZ85H7YbiYVp+cmXkBHJ9k?= =?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: 72974e0f-bdbc-43a0-4122-08dd524ed158 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:42.9583 (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: dQYzHTkyuE2PiobLm35HuW08jGXa6ON2W9h0a4N2VVzMKqgCVbxnGTWQn94ZLdpBdiWZkTmmUm4fS8uoJPwW7O2p9Z4DTFx7CQRyF7Cs3hhMFzIeOpJBlgbY0QPPdnhb X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07: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: 13984961 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 3EE52C021B5 for ; Fri, 21 Feb 2025 08:09:19 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4g-0004d4-CI; Fri, 21 Feb 2025 03:07: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 1tlO4e-0004bk-6N for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:52 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4c-0005j1-Aa for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125270; x=1771661270; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=m5wBA/DKT2nuLCzYeyNMgxFYfXCnhkVt7sDapOAU8cc=; b=H4F+k/zQWaATeQ4/pzEwVLZQgE+rxHG6oWxj5NEUacOjn5tAHnT8uX4T tF4AA/ZfMxq9RbfkAH5Sh6QY68he76d4aujcwryl52/fhFxmkwWp59fR2 5g0dCdg1mElEwZPntbtUEtLdmvjGVUb5nHdw0aYvih5vrkkdTl1ViDoHt U0KhxJ+I/DY1aWn04n1z0hrhjwQCHLkA7DQbiMg+1sIV91envqaTeU2z/ f3hq0ikB8WAXtj2qQDZyBFrP7EZc3iY2+guCJXMX1ym+HvPB3eyPvCrRQ z2CtvCMkYJt9YMEbDIMYkj4pxR6WgB47zDujpYWJbns6JMuE5xjk3gS96 Q==; X-CSE-ConnectionGUID: ovr82eYpRGK8hvIU7hFzQw== X-CSE-MsgGUID: Uhil7dWUS9+m6ZoUv2DTRA== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394147" X-MGA-submission: MDFlxv8oBtL0NtsO3L41EpXZwsuPoLcqNltVUV+oaw2UwLmj/uVZby+HfMEBCxNCqC2mhZJFbq4IKokBGJvmjcH8YKQd+hpDHLovhY9mlb2FIiE8LBCn48oF0PSag5TGweA5JHSbaGtaYKUOlrTp/eXvwvmfHbFxLH+LHqDbnDxw6A== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:48 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M89eJZrvdsH+vowawWmolNMg0G5sAqOOHzz7pLpc5JIerD0Rt+SfCS4xKgIbpk5AXq60Nnh8EDsWWAf8FuTUQ57GBmFmhBP5ygZ2dJqOCmQnKB4Ctwc5BouzsJFOLYwWLC8Sv52wcOWqn3GdxZZrBYLsVYHHDcAhMpXihU/VU3uzRa9KpwkcD1P1UiBwEFVL+fhSwaW8StDAio2OAwz8/MqoZYnhllFzR3X3t9sUMeqiTW+vcAnI6E/XnQQ4G1wgOxtbnEYzjnu6SgEoQlCy3vc2n6tyzFRm5LBpfV79qbeWGoy5e01G7QeOrHOeGqwo1iCFRp9lVrtOhGBdWUQ4Wg== 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=F926SWoQjAUaScOLn87V9XvUKqvGHMoACR1FJIQiTYFxgshPW2P1fYzvE/Nkyoh39Ogb9m1jb8wbLxlCjm51Frg0/fEXbigdBbrAbhlFQRGBn3Curcg67upIleUpKyufFwmP8XAkB4+6UquTP+17Ar29PXiTIC7EFNTE3voK0uv/GG2FlZMzdPSUmFBEZbNEt6q8kHUM7497w3PJPZJ1wZODUzjCxGBW0nTMrERVQ4RXjf4Sk2wNH+dpQ3H4Ed34K6TQWr+3Eqvf++Zd0if5OGIkzzM/yHmVyXGztzziNCEC5q/b40qRlx2VApWa8MieVf8E++8P/JcVrtTvt3Skiw== 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=XAjZ1J/ZOrLt5LgPKEiHr1+rfUkZcjcgn9ZwhiWRl4uSfVuGMFoLyrsE/PQ6NRnRiY7hKnZ4Uthf8IpWYBwAHP87l7jCCW51xXT1BiMiozdXq9L9daRdlGi99UnscTbM+XYx03RZVHpCl5w4BAumXGl5GyFN6sze0ZvQuMbDmqxwTTV06LaQM2k3fII+q5ohV2SRFsQXrpd6u03pZ99RYWvudOdINrIaokuYVsCuPIGahqXPXWvanJWU+XmjU80FeW80hJMfp1rXNeHtolqGK4AVFxlomOrVoY4CP/tgiYuEljIlYZK9jrVb0HliizTEmTpPvLE7dB8s6V0+WLjh4Q== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 18/19] intel_iommu: Return page walk level even when the translation fails Thread-Topic: [PATCH v3 18/19] intel_iommu: Return page walk level even when the translation fails Thread-Index: AQHbhDevAtMGTD3ASEiAbxvGiKR+qA== Date: Fri, 21 Feb 2025 08:07:43 +0000 Message-ID: <20250221080331.186285-19-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: f6eff158-90ec-420a-cc39-08dd524ed1ca x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?ICRsrooCIwhvUCxmuP67Xxxcul?= =?iso-8859-1?q?Zyllc08NW1qvZGX2aSDJtZr81r+A+xWaChfdo2WEFq5ZatzyMfQ1RlGFVxQn?= =?iso-8859-1?q?jAW1nvUT7c6W994+jaV3VxpF8YWCMclEfTumwcuqM8Nq6oHOcoCPBsdSGkYe?= =?iso-8859-1?q?L4iHyhd7ZzHTx6w4FjvRxbHIPp09vM2HNWzzrTdTaFDC5rmADwBkEpfz9FuY?= =?iso-8859-1?q?CoGZKGKwRNpFDvIcQcfCr/E8e+CcIvuTLGdEBZVA7jkS7xB3gG48Jblu8pfw?= =?iso-8859-1?q?BsMCh44e0pjmlxUso4dB0LtHnlF8hPJLoimUBCHqB21M6wEnKRFWyLaGSqc8?= =?iso-8859-1?q?uvto+sJO3ZTDo4/shxCAsJKPy04SqTKOQS7iXFuMwtcdd5UV28pyP6YpbEpt?= =?iso-8859-1?q?zlpogqDhSQxAghNhp68xfp0TGAE96fcGGLVdRTbdvfGfxQtqHYMcXtYW2sxG?= =?iso-8859-1?q?4Tf9vMsDxgVLViD4NgUiOvMHEIqE8R5NitHX+T55jFmCmbO+8/mZodX163Ew?= =?iso-8859-1?q?sUGFlqSvd6a0Z+T1k+i/iGUPTtmNb8Hih/cmuXBtUZN8DDvAD+tuaxgeDrFD?= =?iso-8859-1?q?P+/x8bokv8jb/dIpy72GoOUyxuTneCR4w72OA1ZAmz2Ek5THy+/lsFM/S1hK?= =?iso-8859-1?q?yJoYb1/WmarE0o3031ZOFg8dxpJZEtYRtrEMckGss6HVwhjxRuqUgJbXtzi5?= =?iso-8859-1?q?lRxXHOCh/fOBsYM67oBbJiHIuPrH00fQ4bFFD8NE4c7/7eCVpt0oexzRCRn2?= =?iso-8859-1?q?UJLrAE5hPesctKf25Zd9SGTdThaswvQth+UZPjDEEKBOG7hV48KmDISPfV7k?= =?iso-8859-1?q?an0d4hk/ACZZ599UTm3wlhVGXBiEm6HUoxfbuDyrEwGvELZPqS323DAiUt79?= =?iso-8859-1?q?0Z5sJImvJmD0DFfp09kzxC8EABHHDs6IfRyE24/XM1DZxj3cXb8qMbtON/vV?= =?iso-8859-1?q?sGFGohY4oU+b64TZZN+/bphywKjP/r4bqJzE1fGVd4upxsn1ArpQ5OlzC3Nl?= =?iso-8859-1?q?HLjVoaQ7zxnr8iPIhB5WBOLi9WS0nOBHX2G6SEvv4+kwMtUn9T5KwWbc9Bu7?= =?iso-8859-1?q?ojwKyi9KS6oAqPz45TqfFE56fva6X2ycWw0p2fqsxnsm4w20E6rqDLj48QV4?= =?iso-8859-1?q?QWSs5eASkcVpQdRRAAXeeIZKzuPY3qhpFY3WVoaIEsR5VSZeyy5maP+nm/+H?= =?iso-8859-1?q?RleTocWU3rH7koDc1L8NYOFgOm6WyF9YO/kg4ZIAsMhj6ffaoTazyREMprOS?= =?iso-8859-1?q?MdKsYQxZYwA6E1Ci3KqmcII5ORUxFiUBt4wIogs4WjLj+/TmUDVcu5VFGB++?= =?iso-8859-1?q?YYAC3jb9+DdUMUQpuIAmPeubJfhGTYlVApUsBMdkesbOwXE4oUA0hBn8XNOC?= =?iso-8859-1?q?p2831r4/FnU7D6lxqqD3bpPfTa0PjPBPDyCgCGdSkorIbmgp2XtoUl3kagZO?= =?iso-8859-1?q?5nnTpr6N8rfdswfoTOg8Gqz/Ns6yOZOEylUyk++saNJiPV0XP5B7B8nUtuRE?= =?iso-8859-1?q?+PcfB4?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?YbPiFVm65eTb9QKHUDPs2fb?= =?iso-8859-1?q?+NCCE8mHkgcoKkkhivQ0tWCEhQneqTAxXv93uzcp4cdXNfPqkEhSRzM6ECFy?= =?iso-8859-1?q?DfNw1gwtEYVPAva1VZrqt45GH3Uf7iCl3YrobUGV3tM4GwED79fqT1tB/lT1?= =?iso-8859-1?q?AhINy39tJI+8uonsyXwyIaBcm+tI+vrJ8eMKcgn/IQTjLbHG4c+tSaxV2JU6?= =?iso-8859-1?q?lwCp+S+QMBJGgE8qvTSjq2UJrJ9KxKYl1p2OoIewvhbyTvO6iF1wuXvlSdIU?= =?iso-8859-1?q?s9cqQeFepvJrQBEphczAN+eag2kO5/7Gre2VpJ/kWLV+Ow7Ux5gCZXZ/aePW?= =?iso-8859-1?q?gT+Fav0lmCxAA/ZuWF0bkFz7rtHL3X+ECnMnE/ywzfkBH0KsbbaeUDDolLOu?= =?iso-8859-1?q?8VVawWgh7yrMIrEzu0XptpdDxWqzWiBk2omFYc7ZWAl+5F2A1f4/JIGlM14t?= =?iso-8859-1?q?qJv4ykyQsgQLHcnzM7/4idRAvm1p7FMlRSf/rhiAm8QN1Qz9dZiSOpZEQDWo?= =?iso-8859-1?q?/W8XXPaVcnkqZ3jl9VZWyNlGjRkh82jmi6DVS3ojWnJySWVq1TiQGR7oBagh?= =?iso-8859-1?q?de/VCo5b94haDg6vEfrRJ5n3ZmMalVtYlf6Fkdflp2d5SV9eOpVqYfT8onrO?= =?iso-8859-1?q?8ZvmLTBfKYAdMHw/fLZ17gVjpkVmyJuEVGNHVD5/GAlwVsMMY6fbTernXI2u?= =?iso-8859-1?q?ALtjcqyj8gTDWFhLd0hG9OZlVzLtD1CQ0XTm02JKqoBA4xQy2vN3zX6DEh8d?= =?iso-8859-1?q?Ahe2CCtRVWhhSlczdMJuQHeWgBf/cR9hd21hS6m66/lzEMqOvgPAeBfXL0FL?= =?iso-8859-1?q?A1dvjYAIVbSJuiA3iEKhJGU+0H42qeQWYYed3ul/o0jYo0BeFBplE++fxfEU?= =?iso-8859-1?q?Xa9f32gdJdN28a+n3cwhD0TeXKRhMNQ08jFCWu2ZaPTXUI/PQ5G+ikPe9ckN?= =?iso-8859-1?q?l71XPBT0IcY1CWpfPlyaOaqWyDAFjg2SAFpiDDC2TLKEaza8ZTjlRXItrqBw?= =?iso-8859-1?q?+3a/Vz5txOF7MVyiWQ4VixnEvhJcV/qXPZWHNC8QxnflUGYvidhOxAIhQjxD?= =?iso-8859-1?q?QoD14gb/AQ4Fy/JhnlSS3aw92bQtTr+8VRzIgHzJXEkSlcVdre2x+d0LBljw?= =?iso-8859-1?q?OHQesaiUV0OQ/qZATQByv0YOGZ1njLj1GxnDcC+gezXSYvYi6htmIA/6T4eN?= =?iso-8859-1?q?aK4cjmtLouEDkVQEgfwOPCzt/1B8WdUc86BKko5+W2CIrmF1sIRNi8klGdbx?= =?iso-8859-1?q?A4qbeORR+IN+xRFvEiCaB5hdMlqJmpOof5GXO+Pze+BGslut3su+lyNp2mQA?= =?iso-8859-1?q?/8Ry9h4d8d4nTf8a9c5J+t09D9m1m+OU6k9hB4AsweKf1Q2TBOf95sevi4mb?= =?iso-8859-1?q?f5Q4w0kEOtNOtXCwmZrFX9+4vDlJpjBj+sTUQAbR48ntBZ1eEXL3PplflWPt?= =?iso-8859-1?q?m/N1yvWHkfp2uquWhySj/39bWtQpRa4ws5a/5/MbFYNVi8taFqm+W4FeqE1t?= =?iso-8859-1?q?t/k2HjJwvPEFm3aL9qEBS6PgwNmx2PUTs3wSYJRYaLYA0tYUwA4zlMxVFQHw?= =?iso-8859-1?q?AaZbjIUVpHAkTXhnFCULc8nTmvYmFNkT8tkBKNxlKTl8QBvlcRW5grk2xoEK?= =?iso-8859-1?q?9bPXKImpR9aKaIrVIDSatvymg4RIMNgSojHSjP+XytNWeSZtC9F9OPlzdsTs?= =?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: f6eff158-90ec-420a-cc39-08dd524ed1ca X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:43.7011 (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: WdraUOMs4pD1GxNBB6uqfL9ZkUCKpXEXBAfzN0S6nhJmKS/XP3vKfyOeOTcpv3LHePjud5rYmHyXEKfc3jI+9lqxZvEyziUTwC0PvpQbkRpoxY3vvZXy8UP2S5nzawmM X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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 Fri Feb 21 08:07: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: 13984967 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 59AF5C021B3 for ; Fri, 21 Feb 2025 08:09:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tlO4g-0004cw-5o; Fri, 21 Feb 2025 03:07: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 1tlO4e-0004cH-U0 for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:53 -0500 Received: from smarthost1.eviden.com ([80.78.11.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tlO4d-0005ko-1P for qemu-devel@nongnu.org; Fri, 21 Feb 2025 03:07:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1740125271; x=1771661271; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KHmNcLQuspPA0tQxBlqqLb1prhzBBBLWPp+69jOVVMM=; b=c5lqeDybkziVXB/I3UmCmZvTIuFZTLq9G3rmmaccRYZbNcbodwH3IJUq +l03qijnq8k0WZneq81eJia8yqspTkEsUfuhgoaP/wJXGH0/zbc8VW65r Dg0sOmk/cLqlZpBvgNEBj2nt6isowzfcyTFdEnLAxf4c/G//8HxY/2jD8 /Y9DraOzrWAbyW0Hf0besEX86FSgVGuVCcD5M6Q6YzSRRD/qYQDKI4T7A 9tf9FTcFrQRdrYoB2/VzWEruqXs+dGJd6C8u2qHRiE0ITDics/Vun1cRC bSNPjxTiWa+CIi5gokInWeFqfZUbZ0uiNXdA3jN1x/9zZKDX3H2ah6cwl g==; X-CSE-ConnectionGUID: qso0zA+OQKuyZuqL2ktcdQ== X-CSE-MsgGUID: RCREXZtIRWK8DlF5G6za+Q== X-IronPort-AV: E=Sophos;i="6.13,304,1732575600"; d="scan'208";a="31394149" X-MGA-submission: MDHA47w/AYhVxtld6njpZh5njzKU0rDEjVX4aQ/HHoeKPxqK7t4TdKvcvu8ekLWWzoiUHk8+CIpbRFW1qkr5sq9bqT1z5ffa+AExpJHpEGcJmtzO099RuLfXt6wCi+vFueirYxhEzCkRukSoAOYuY+aG+FrmXY+cyKsL42QaMo98ww== Received: from mail-vi1eur05lp2170.outbound.protection.outlook.com (HELO EUR05-VI1-obe.outbound.protection.outlook.com) ([104.47.17.170]) by smarthost1.eviden.com with ESMTP/TLS/TLS_AES_256_GCM_SHA384; 21 Feb 2025 09:07:49 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LOA+y09ZwSa3sKm6wrdUdCVrengJCAkzKqDfw/IF5w0beIzyJpsCjKvLDD7wNPyCqGNykP7L1qQjjff1Fj9EjSRSuiY+KK7vvm4oxKSmez1YPbsnIhDfKmmpx5M9D7MAo0pAXKXRgxzgaCSc4SN2aT2fJykkdX0ezX02ZvjH7e/1kcpoEu1QFIoWFereuO5f+Jmj99yqYtMxY+ltabw+8U++RU89IhxXfKZCH/UyZzjwiCoNBT2Iiz8t0bBUtZYU8TUifLmZNgL82OGKtvTI27WDDuq9Qskl/fZlTtsBoxpHvNYeXs/+BpTbG7w5XBDhHli9b7o9zuGYIIO3uyenCw== 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=a26NSut1d52WuWtNqIfRyioNu6Utx5APAMOa9UbHfiSpI+G2tMBHIVEtVhsxsSmAo7vWfFxOZnIQMMiAm0eHZBGFPJLFXKemmSpHVxmq16Sj4T8OLlvxl7HTSmC10YqPg9qgpBX4a1jvJb7F9G5D6unbkOap6e3lClR1uHSG3pfHA3cX0km2LEdQzm1SPG05Cp70ILD0wjUuW4M0tfktebzEkdu8UfRksFGTAoOkpAWLHXf5SoddrNgKdWkVh31JhV82ektz6l4V961HVxOjxAA1+V5iJibRfe0kW2x22v75VFNnlZASVgPxQbgy5g+B1cJuTKiIvrP+TafS76Fy8w== 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=ILOWf/3khkEhoqATVU1meWgJhdJLSYwyslbvAV8XnEdJlveMoU6kU/PsUQiAmLrYi3nSwDQ69S4SMZBx+49aF2FIh0SmB2PGWuRAjGY3BgRuDzkd+lU7UoDvuOefiAkFsAbtX5esoy3Bx/REDGsVIlDwuC8QGNwOmZbGqjKiMH2TSC5+vHZ29FN9VZv5zwStuKJshu/y2f0bicuH27VYobDEAVp/nnxhE0lH2NBUGyo+9FTsNlcU0YF9QyBQkZlZnSYwCe+XY+VqDmehQSvAxlT38b8TqIydRngwjZBR1eBPWtxCb8CsNZ/I8RYZlJ4hC/1oTIeJs8QDPQSkWL54bw== Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by DB8PR07MB6459.eurprd07.prod.outlook.com (2603:10a6:10:142::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 08:07: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; Fri, 21 Feb 2025 08:07: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 v3 19/19] intel_iommu: Add support for ATS Thread-Topic: [PATCH v3 19/19] intel_iommu: Add support for ATS Thread-Index: AQHbhDev8G8UVR0uVECvb25nxR+40Q== Date: Fri, 21 Feb 2025 08:07:44 +0000 Message-ID: <20250221080331.186285-20-clement.mathieu--drif@eviden.com> References: <20250221080331.186285-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20250221080331.186285-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_|DB8PR07MB6459:EE_ x-ms-office365-filtering-correlation-id: 69ffb061-887b-403e-2d97-08dd524ed23d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?elngJkPjZgvKvFe+AlC7oFqW0D?= =?iso-8859-1?q?eE9TGEujveCHzPylBB6iOl9syVDymcQXC1vOp2lxLNsvy54Npv6Ns8TAR+WN?= =?iso-8859-1?q?+Ry+DS4vNLWvi1gpv59H48m3bEobvYYuLYWSldDdgfA85GwlMZmlxl7TAAST?= =?iso-8859-1?q?lyHC5634yZmk8oYKnIgKCVke1u/Fg+VJLGQTBSLY47OfUqyg/FcUo4xZ6aXe?= =?iso-8859-1?q?Q1RyJIPUl5iBaXAxn1MRDd0iR6L1lfzN0vAlNoEHXrDDSDXtT9HZ+6H0nx9h?= =?iso-8859-1?q?ucE8kXP0Og9dPAr1WfLi15gLkMX3Y+YgjqJu6WIAqUMTpN4osI6xYkZZbro/?= =?iso-8859-1?q?nQFcwI07ZtJepeLNNwXR0u2kYK2Lid5Q0QCZ8MRz3htiP9zb4fUBzSiwUCHd?= =?iso-8859-1?q?by+FhwySnMuG++Qu0ibiYfs+AxvIyqxhYPyaz+BvgfJKnvlCbZhibA/+7f4C?= =?iso-8859-1?q?5W0jtThEfu29ixmPenePYAyW+nPkQB/K92I9xZhtEJ7hzH91tbWRYTWgW2Db?= =?iso-8859-1?q?Q2h/Ous6yGRkyctVjkKCdxie1qCvOwsntCC70Mfe8M47v7NHUdVpRkiOnCYV?= =?iso-8859-1?q?7NGZNL3qp1mRAvQDD2m/Gk2rYeI0hgs//QRNTYNXHmdmd3PhLAmb2lTQAOk+?= =?iso-8859-1?q?Fhz1FZwD5uApw2laP0982SUSaJ694ekO8dux6nehym1rOvPMmqeOw50Y6DQc?= =?iso-8859-1?q?liOceXQHqSYELrSzz6onPUNUZ0NjMzWPJ8gzWY7u7TFhwN60ZiBg8x6iFXqz?= =?iso-8859-1?q?Cm3NRm3OBpzIUiXG2eMrGSW2upJ2iTWTKus6K6vFf1cc/u9yM1+qDIHNAmxG?= =?iso-8859-1?q?F+88fMBWuLIV26zYr5HGA73rGYstYGjloCaYm874heRDqJ5cJQ1dl/JHcE7o?= =?iso-8859-1?q?+T4fb38xDC15LDDyXtGOIYZSPDwTRiGmG22k+V7vjSpLraNosy3wlP1GraKt?= =?iso-8859-1?q?48YRo49jgPSSQTT2pbH0SEgMmLcZm7HnVP94AnW71Tf/euJo1pu2DZ58rAnf?= =?iso-8859-1?q?G4La2kB81Eew334zL1o9sgZXZZnjHsq2sy6ABTUC02hUEbsQjZ/ety84Fzok?= =?iso-8859-1?q?G9qP/GdEDbI1RWbQMLd2N8jPn2miTNFRso5Aaeqo7AU9fgWuE+Y+2bqualBt?= =?iso-8859-1?q?EG5FxVuE/ZOh1WYXzZpPHA/ZX3+rXg0uUsTFi18/necBnS3IZHcnx3X5UIJH?= =?iso-8859-1?q?VkJksYNniNx1Ec0e875oQ4COrAjO1dnc0h2y6cACvT+LtrpZuHcwuB4Gbads?= =?iso-8859-1?q?EiUSw4YiRPr2Y9j/EtXHsWnl4JNY0nTjB/wabU5NwIcIRHOZ893Lzqa02fhq?= =?iso-8859-1?q?QSr0Mi/IfjKFuEVJEketlg3+t/QR64l7QFYeyhGwyuk0l01xPrjvcMp0Las/?= =?iso-8859-1?q?TKQuRdQ7Eb0t+4KmngPWCny08KxNrCpXcnEUojB2tEu1zLsIoml/i62AY3+z?= =?iso-8859-1?q?7FrHCc/LyW/F2HToB/9RkD8KF3lWC7GN+7kiHqj1S+ECqs6dumsczXdsO/XQ?= =?iso-8859-1?q?6r1M0v?= 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)(366016)(376014)(7416014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?JUUmdRD+gv/nJKWQxU5iP74?= =?iso-8859-1?q?p+CPZI1P1XweYmdvof8rAori2E3u0m/1aBiKEYzg6JG3Grr09H5UT5yCLaGl?= =?iso-8859-1?q?WlAlexUXUgTrI4U3yKDxD4NwsQNPMubCG4lZqmYy5tP9mChTr38v1GmY2TJq?= =?iso-8859-1?q?efjjgkAOu1v3UOUSv2Mtm87b57b5ibclzDrjxAZ/q6cw+RO6aPUEKGcOcUkO?= =?iso-8859-1?q?3RULW149/QaHeyd/vA1Cum7E6Igy7gzvfjeG6Oj8BKPLjleHx4PIMkY289W/?= =?iso-8859-1?q?FBQh4rL3KIMEtpcygTcbFjEVOG5Al7Dgac4dsu8Vt5PezxDUisTBondC03CW?= =?iso-8859-1?q?lmvVaDCoueIeSE3TN3Ue9QZav9p+RkjJDKQowgmA7wqyJ5m/qGAY+JIPedZK?= =?iso-8859-1?q?7iT2wsW6vavkVJYNr5QUJ7fTcoxzjcoXab2XdBr4J/N1vMSb/QLQvx4uSH/y?= =?iso-8859-1?q?vkExl164pPVtO/z0IWo5YZNoBKIFtxyEKkzESKdYXQ8IenDVZyDedehVvUQo?= =?iso-8859-1?q?YvEFOj65KpyLF3h7UhsSFMO1UWo9gX68NsGu7SB2DJgBqBnyLhIg3imDlraB?= =?iso-8859-1?q?vyQlDqA8VpDA7Sro5rOc9IJ+/nKEWiOLgVRniQl5ViPlOOMtGbZRPIHeu7jp?= =?iso-8859-1?q?RxHcHz2RkBsDpXwciBa9Y/QdNT01L9nZFyvcjfH1AhprWGEJKgpPo8Rn0Cb9?= =?iso-8859-1?q?zRJasEuhRiTH+/Dksi3+73fCvHjH07soZno+Rnko8BlM4t68J7opuDI5pnhO?= =?iso-8859-1?q?qxRMbT1UhRoeE2kNyXtPp4xAN4hUiaHL4NDim/+jtm1B5pIWnn7GptvFZWyo?= =?iso-8859-1?q?MZD+3fzvjfchVWcriAOVX74fv1Y0qNO5VOfEggro1kGMe0YG02U+LnYkzmJ7?= =?iso-8859-1?q?XVYct0/55A2Gvvxtk2DWhGqtvNn2LOEykQ3HmHyDhkgh8VR65Th+GSXgibMe?= =?iso-8859-1?q?0L23DD/DVisVuoakk+O4Z0Al11luIyx3tuEwxdlZ9ocMj8Mi/3M/IU8acn/K?= =?iso-8859-1?q?Il1aSHU9bEfwF8WadehHrCH2WOvQrkLEbrtAM+J7C7ht4NTb4zP8ik7hUtEz?= =?iso-8859-1?q?LQNhuYSPUARnWt49tVU3Kd2C+tPNJXwEtXEesajho+1/Uv8LxSYeEWY+GcPn?= =?iso-8859-1?q?+5W7dnPWiB16BwoA29tbBgMFDDIeFEqIgvTuDVFGKhSPGIBieciyBWFts5ZY?= =?iso-8859-1?q?XiacklmSW7pXNfCSHu9t7dJ6T3LznoN5lDhTAxAAIfHpax6/5qjaEw4r/3AV?= =?iso-8859-1?q?deXibuyDcrBC0gPRSiUzM4ncHaJj0MtA0lkHVHu627rIMz5e8u/aM0jc48dP?= =?iso-8859-1?q?fMHtgQPKKleJGsQ/c/TWd7KzqE5xI7/TIT+ZOw4cHfc9kFkXDa7IJ1gDWFzX?= =?iso-8859-1?q?ZJjiomd9v03Juer3zy4HZ9Uh49g+YtVlRGVMZnDzxJjwzW/l7/DKmcVYtkvT?= =?iso-8859-1?q?/NmSi6mx8IkS2LBa0Y6p7NOolcC+KSoG3vZyWYcc/m5wfx38pGXpJGTGsPF5?= =?iso-8859-1?q?Hrc6bZuUMHwk5IbGi4MoW+ApURF2G02tpuZaNjmaYc8hL9AuSN9ZiwM1a9x/?= =?iso-8859-1?q?4g7NFQGUvMB5fErhMFgrnHTqSZaVs2r5RAATVVXMxyQb05msOhkfksE5DG4Y?= =?iso-8859-1?q?KWRpD6tU7hK+DTnotMMkK43eTDh+GiysFeza1QH04xdRdsAtMhQn/UUr8/Qs?= =?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: 69ffb061-887b-403e-2d97-08dd524ed23d X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 08:07:44.4584 (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: C2OHS2zPcC1p+pGLICnYJHMIFbdSAyY3ToQIjvFuVvX5QvoaSsybXtp7wGxWcDmWKSBZLshM+rp0hQe7Uz7wRWvnpwc4vHR4CWOL2oQ/Qy2tsSLHJf5vs+7fhkY5xhpN X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6459 Received-SPF: pass client-ip=80.78.11.82; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost1.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)