From patchwork Thu May 2 15:29:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930651 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=Ddb6FRHY; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGG3mKYz1ydT for ; Fri, 3 May 2024 01:32:06 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNR-0003jQ-II; Thu, 02 May 2024 11:29:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNO-0003is-UJ for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:38 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YN7-0005yW-IU for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663761; x=1746199761; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=oYY4iC6hjphMuWFvN9OX+COHJCqK87uXfmgSAcUtRSw=; b=Ddb6FRHYZuYx5VUDYe6KkooBN4fbur6fWp6XXmLFMB3lp8j6rE5N9Ai+ 6A5CSHDOPbb4qXCII/58D4lAFFZ7zPPosuL2+vvuQiOgXH2JqILREr7tM FDUt/TYrseouLLX8NhpvhfQYQt0RuXzcmadvydlVXLkTJCDbrrLEQwAga E5iGEa9AyEHqAAI4xP3gCRE8b1tcEXcyNQcMJNd/3Ute/pKnCK9NgomMA jluQHLcYzb47U4s99rxRjdQtOeQbazkn6VacRe8X/NdMEvLMY3c7jeamN X019ejIA1KqvS/pKa/bqQ9pXkUOTkPKfTk49myWqma4CWEP0M/2xIq7Cp Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785873" X-MGA-submission: MDF8Q9DlUIYTKsz+pBjeCGQyjvrr6JjMUajRvq7Y/DbALCLgYUmj9qkm5+DniX0PZrxU6BpJ6AsGzqVuPGwnDyPdIp6POLS7J/3qdvoeL6Q71EX4RcoivuYEuGtffC0i9u6YLBsEY35rlJ6s18nhoFBUcH/WND7rOh/pi9oMe0HaQA== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:18 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mHmDtf0seW53LOY+6dsTfcU7/DD7mAxBozNvm6kgbYPlLsB4Gy//TyDmMa/ADZLYZWOwS6cGYnA8ny7bfU3D1QLvVfoHA1whGv8gKBkk0ayTh/hLXktu2nTizVBGUBPECIea+WE+P05KOnzyaRnbty3hGqOYwKLSMVHjQegJyWMYsfqBZTcOxMY39LrjLQeqIlS3UkalR9bmTOS1AeYAjAxKgs3blIB5eJOwDoedvlBfpkEbD8yAkTT1+eJgcqIjS2SL48XlCQf3oIIOTWPusUm8AFaAlKtR7OUh8SaYHx566VlU1y8rdIDObN9cFetBKja4+ngGFaMeZz/kcAZa0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oYY4iC6hjphMuWFvN9OX+COHJCqK87uXfmgSAcUtRSw=; b=dNkrrwQTPp3AJmHBacvNA0+dl/dqc3O5/fqiqitlQbLz9jASXn8zm2NmqfdFwIwqESO1M71t0dp/17CdU3hTeJX6zBFt+Dwv09mZVWluYk0m8Q3V4QcUjEgWXvpcxJTaRUo8aonaPwkc9whoYbCNGpRnHS1G1VSIYyOPywWs+PfQQJj3WvSeBQs/3SGQd975/V6EFw/b0HsblLU3Y1r2hckqcvhbPW+L1VRh+HOmgtGdSUr/0aiVtHbzMhrUkfv0wbtCasKywQNQjJMD88jDpyNxOixxwXPD62UguRLsdRFxQdXJL+6Xnyl7rGWSWQtTIAqrLp7QHk9CoQxwop8lKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:16 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:16 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 01/24] intel_iommu: fix FRCD construction macro. Thread-Topic: [PATCH ats_vtd v1 01/24] intel_iommu: fix FRCD construction macro. Thread-Index: AQHanKV+0oFxZ/mIHESjydUfkcyb3w== Date: Thu, 2 May 2024 15:29:16 +0000 Message-ID: <20240502152810.187492-2-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 85d91a4d-d423-475c-3ff5-08dc6abca121 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?3YmFv62QyXJXLjiYDghbJ4O72nM+p4S?= =?utf-8?q?eaek/OYlZJFM16m/HTkLQqfrvX6zi9Eb+hw8WQx91jQ6dkQmud1jvG5AAUykh6DNI?= =?utf-8?q?ioTkNqWRKcwdTblbvy4KbIjU0wFjsdihM2Oyvg61zz6vYAtJNy9IlPoCewjqtYBW5?= =?utf-8?q?9KfzjXCiyV+LP0NJ4vnep/9yXY94bWtUXewJ5ZPVhBDJPCrO7FSu7qxddHQl8UQ0y?= =?utf-8?q?rGxPAzf61p+F7FOVXUvY1DMhvC3781bGeo+kJ7tKTucD3W/v0V7GU6JKBsxe3RfHf?= =?utf-8?q?iOag1cPOYZRTM28V3tl097XO3hsmtlDPmdMAOUX6I/7y5K923sMoZ0pwtG+O94A3D?= =?utf-8?q?0VmuF4RdimWgR6/SouRKrFFvN7p2QEUqkV/63KXHNhJss+H8LXKaLa5efYwqlVOEU?= =?utf-8?q?g/a5fkqvEBCFo2zYudgdM9jbHaI8YA60/5vniWvmRXX2S4kZxwqb+/xqCtmUSLPdG?= =?utf-8?q?cFPwavG7Sq4Jg4492ePtTwfO4fygEWGl4SuM9Q+PBckZpDNpXC+FmI0ilBCSxaCKu?= =?utf-8?q?Jk24RZjOE2ISmMHxevHtNCi95EnbxGdnCpWDW/tb8Lj+suyJ3mtRW1ezO3RcYWRxl?= =?utf-8?q?ahz1G6r0ZW5eEFt7g7MP60A5y5347VwiNYef83TNlmz+tBg6sMgqY78H8ANtnLxO+?= =?utf-8?q?Irb3J0Hluvg1BmjRZV5tdaYxHP0u030K+Qx3WrQBnzSFv2iLSw6RYTyoySURMUodh?= =?utf-8?q?LeN/NLvQi792bL1JIvBEpt0zY9Yy3b8Mlym/nqYkzdtKJ+3pYSre1AI1YnkuVhzU+?= =?utf-8?q?UuB5lMXBbwjbT5nBXggV5lpfRz0yHLfAB+4Ac8PP/YGEnacRBtkF1/CtI0sMVeTIe?= =?utf-8?q?1ZvoYL0JIxOZvJh5hmb0YgOt0g4PDvashpe0Z7Qt3Bz9qnULm+6vgUBJ1WCfn7ACm?= =?utf-8?q?qSQrWjhSeLvwUo+x/2czIbFjA2vojohTuIwLLJZBCxlf63YDxpNTLxLLQnOZqwZtG?= =?utf-8?q?v/cS0cIldQi2/MYeXpDyrxA4yfKdnPm3os6goUwrA33BiH4D4vD7H3w83cgbhKOgW?= =?utf-8?q?oyw74FlTU3wq5hg1McwYOCIcc9rYnGMbHJW17iVnellwia6EFq5mNZ0Xu8UeqwshU?= =?utf-8?q?3tdy4PWQKJ1Z+6883w80pxq1O3qCqzrN8+KRZhBFEiQ9rlv4UokdJ5xcQDeugDfta?= =?utf-8?q?8uqI2lRNueYPTKZMIYoXHZnhvejPDNTLwtlKwCSAaVqMg8+nMu0qQkEOnw7t3JU+t?= =?utf-8?q?e/wxT9qNz3wtKYuf3Q6z0LIulUDVz6+C7KicyQ2Wv9cylVUV4R+zIoShi0fRh1qLs?= =?utf-8?q?lVQPmWss5mEI+lryT1SN7JCj0s+XMPMM8Ww=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?dkpJ5rG8ifA210IPzkyBrtjSEDko?= =?utf-8?q?ujKXOSjmVl3bv8mYbOK1N9+JED4OkK45tE+N9FMdTuXfI+aKarOCxsSkH1ZNHbTnK?= =?utf-8?q?fYb0WAAXCm13RbNt//TQMWwmDC08ypQNBIBU2MgWKhS4jaGDkgWBHjRGvymzjaOSb?= =?utf-8?q?vzWzlxW+bwxtk6LfUPWTu5fIVFpMLjvIgxKz7BjBmVHNKv4JrWQ1ybILDI4SJ846Y?= =?utf-8?q?D2s0zXYXTWH6mncLi28du0tdeH2chPcekglEzZZe4BZ2tr5wWywmqXWjLxHcY2jD1?= =?utf-8?q?q7T3EATPYyT7serOWHcdRzU25voPHjOKAsax8o8hJ+4kbV770dMTReVQwBCK9/yGW?= =?utf-8?q?3QxoSzagVQeL/vS9VoyWnuieRS91GEqrbdAtMytEmVSzf9vQqpCsg1t6bfgsOybOx?= =?utf-8?q?7nuvmMMfRg0pe8EvvNSx5Z8fPC9PLl6NveOU3Z18p4TNna1mIL4Fm9pU1m8DdS8O2?= =?utf-8?q?nuGq4hgvNN2gN6buiTO7j9XjNNDET7ftEFgH8weCHfN5PSUkraDNIgHJX3IgY15Ry?= =?utf-8?q?OqNpD5MSRm5ZPpzQq2DIM8Q51lMhrtDmZ9HdMFRF8KpnoWWLjWqJoctffnZWKVBCG?= =?utf-8?q?GKRGQzFnaCzhHxsXGva0hEKH6AJ8MdHzi7IYZWW2f5o3VPwHxaXQuOEFa9KEbIr1I?= =?utf-8?q?NPOU+hbqy6riajpg/CedRwkv9TmRfXdYLZOdXoIoahNOc5Yc7YN3T/zwZFxNus4qi?= =?utf-8?q?jQmimRXLXKpfCC34SQCiXKBp19dvXo5ZwHoSy6xHZ2boE7M7jl++QvHVrgISWxjT/?= =?utf-8?q?Y+l42i2r1I8ttv/ydmTSC+Nxcj+ILg3GYq5mDBiDLiOVCUqI6ixsN94iU4i6ta5kB?= =?utf-8?q?9vR+sBsYECSAGM3rnvOfId4KZg8EV2UwoDnamEeEEjynuj99KKa2luT+5vhs91sD8?= =?utf-8?q?ydOVxszI24b75Q79eG/aVBDFQ2t0YaXGEPUh04hCI6+7/sRFEiemy/t9pnRGA1MrL?= =?utf-8?q?T/Gw/VhHexavVW7J7DftuQO8IO5ih56oFYFPs3rP+bcRAruGcGfI040W9kv5t6CmW?= =?utf-8?q?i2XO26KXomubyENEvFaeZg9uIKDUE1uiRP5UNrltLBsswiVJ78+Rt02RHYNL/HZtd?= =?utf-8?q?nDgYMHRGHsnVsFS5RZ5vegrIrwbMR7xOZ+ueHR93wwtKYux236K4zDlbIOiLEITFY?= =?utf-8?q?pDsgUH44gLhh+3xNyxF5VSIoiiplm+G2rmUYN1dppRmzn0PqyHgE5qaja5MjaQpEq?= =?utf-8?q?d1zw2sMbqep2lJRAFUzcaQMALYtN3zMpWPqD9e4BiL/zw5AzeRF9uK4QxZb/8+2a3?= =?utf-8?q?sSivt19ewdP9+K1W0W9KmO1Vt52yXiD1zKcMF7K77AsNRhDnl+jbRZfh5EjSvIMSL?= =?utf-8?q?6I7Kc7XoIjzj3ZQacEwsMTB7RV9XjGOmApxBAUeSPmw2U6VeKRhT1YN5IUUP5PznK?= =?utf-8?q?UPrwCUopBiGJQD76qp29D4WFEuSEnZFm0EDUUkbpPKSAWHJ2kiz6Cl6x3Xy8zBFbW?= =?utf-8?q?tEe5M3cHi1401hb1FHnN/7yAIP0ft8V18tvaOGXRAHarrq9edqLLZusDWyazj1EkI?= =?utf-8?q?U31yzbDE1F6rc075NORykhZMDyr5p4dm0XofeQzjiBZI+ll+8lTAUTI=3D?= Content-ID: <2B98B1588D36FF47BED2BD79AD3B541A@eurprd07.prod.outlook.com> 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: 85d91a4d-d423-475c-3ff5-08dc6abca121 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:16.8837 (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: Z8DOwWigbMDGLj4xN4StLBfzSumIWQ5LPimZH13ofL3g45AJwzo0TTmlZn3hJfHnL+CwFY/GX+tpIASbi5l/tSaOPj7XPrDh19SHjIqalBHXG5R9y5OCotT5XhLlNmQq X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The constant must be unsigned, otherwise the two's complement overrides the other fields when a PASID is present Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index c5efcff9fd..4f6b0154b5 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -271,7 +271,7 @@ /* For the low 64-bit of 128-bit */ #define VTD_FRCD_FI(val) ((val) & ~0xfffULL) #define VTD_FRCD_PV(val) (((val) & 0xffffULL) << 40) -#define VTD_FRCD_PP(val) (((val) & 0x1) << 31) +#define VTD_FRCD_PP(val) (((val) & 0x1ULL) << 31) #define VTD_FRCD_IR_IDX(val) (((val) & 0xffffULL) << 48) /* DMA Remapping Fault Conditions */ From patchwork Thu May 2 15:29:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930656 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=LfYj3qWU; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGc2mrgz23tb for ; Fri, 3 May 2024 01:32:24 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNI-0003fG-Cy; Thu, 02 May 2024 11:29:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNG-0003db-0G for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:30 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNB-0005z0-Uk for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663766; x=1746199766; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=PMN2/YZ4hr8ioAnlB9SWX5lZ5wPmzGuhK2ljrPklk+8=; b=LfYj3qWUWMQfn8hDwFLQp5aoQFHb8qE3vpOoe1AFMwPIVcCrA37lW4NV +vvHXxZo6ZCY41hk1sKRTYX2jJ5OFhFyDEZCoSM9P36rRu90EqTLVwPW0 2+Hlqz6Mq9YYppWsKTFMI52mG8HouvrVmqzBqKLqJmnRIQ5tUyadBrKcM 4IWvN2dAIsu7ZXNgbcWHX91pOnBVeIywJcmSnB9GvNRzvIErfgXsVOaQX u8bOPFFYLRmu3Za3YX54xvhlYMpr5P59V0aim3KkiKnHFc5QYydBnpDfR AQBEBqzmQuCmA4O9mnt00Wul9jr5FInh2b3JgjJtQUDfsFehJuchHtS1O Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785874" X-MGA-submission: MDEQ6+YV/wSmIPgAVcEG9NT8iFl5dXWIwJMnMkJaFz4GI8QYyM9c9bObEQSf9FRTGeGXQDn/IIPbzwCdfVmnqN20uyfcFxS1gJvR5ZMFJ4gfuPdip0Mub6zRJwPFx9MV03GTETU7e738+JSpGlgx9cdEt/0TjHWUFoPU3UabGmPF/Q== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:18 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O0c5BYN+8d9hJ6wDwoLkxFFRZf+TcXqGypw4BxrGRDQrcEkyz5bn7H2xLysjghagX8U8I3Imm0XmnjxsOypprd5IA9aLAFhjsrtcxDhneytudKDPPj4CtfBYlDXUYIyyeCKP3mFR/KoJyNWcy6KLSJs2lwuSySrwp+qcB3IqPYKgjlUexd6BddYxbLhqOfQKBBU7ZGQ/x56iIC1Jmv1LwzmDJhncM4LxoXkZESFQOEwM1XSk62SQfY2SWfPPt29FI8H5pHOByabIiX+G0l8W+N6X+BQv4oAC+1LyqTscDecVV4gcoN8lNeHMnaQQqPMimYTTlRBE1ExAxi4KF/UBTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PMN2/YZ4hr8ioAnlB9SWX5lZ5wPmzGuhK2ljrPklk+8=; b=DKmf2fCSQtrm+A2eIxj0SNL/9oo4rszlMvSorqfgx/peaK28ZG98YK5gsFu9kjsfIqAZPXhHCrdxThNCOBfGoYwmkiG9M81gTqWBGOZ3B88OQ5+Z3BqzdatbN6Y+MVtFOd4HAC0tJ6rmiKgIvUMPjSEN4xXY7ngA3Xo6UcIZ488V3SCUJhuSyG8yHj2+Cri91z9L0m8j/ec2zhxVoSdTK2eqBm49kBsindgHbec2mjYJestvMUZvPK/Hr3WbwcX/kayPyIZDbBIOEsvrunfvp50u+mrVbhfTbMD6DxyTE/5bgnBMxpykDR7ONa3ooYG2OsNEeXdfeXkihAYkreNyIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:17 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:17 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 02/24] intel_iommu: make types match Thread-Topic: [PATCH ats_vtd v1 02/24] intel_iommu: make types match Thread-Index: AQHanKV+D17/DXjLQk22A8eEISz9PA== Date: Thu, 2 May 2024 15:29:17 +0000 Message-ID: <20240502152810.187492-3-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: f2adef8a-e8a1-4d6b-8da2-08dc6abca13d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?G31HP6dDGmgsp4vj7PkQAN3L890DiFa?= =?utf-8?q?eEswocEIqnxoiO/rd3SQeuYAh6bSY8EwqlG0KSxPsxRw3UhgGM94ayy8L2uNFaZ5j?= =?utf-8?q?izgVB4yjjksVIcGHgukX4k98ii5CE/spLH8yw7Fh5oY09rUzoYFGiMYVI18mLt7Rs?= =?utf-8?q?PQNexTV83cctyYTKsPEiEkHvA89yAvBjAhmg+5dG6GHqT6bBSKc9sZ0GkjCeqANc5?= =?utf-8?q?SwbrsclDoVAK/rWtCrRzft1x369UF/hGxVJTc7nppmgFGLnntSK74SMi9mbm2AXWo?= =?utf-8?q?AIUQF/kafa3XIb3kooAHGw5jk7r9an1XVZ/qoPkxi153jcv7NUCWG3adwK3SJgyrv?= =?utf-8?q?U+csIJFjRZ1bNamaxmO1pTj+m7mlfd9dFd8WUflCUOr5R3e3RpLPn6XKF1exONOiz?= =?utf-8?q?qd0d8M57MeO4cV4tcFRuw+a4qasBQ9yYunJws7gmOemYNFzLF6Y6ZhfAdsnqJHkvR?= =?utf-8?q?5dvUjakMw5sPbAP8Feou+vsKgCI2ngjJ2ZT4qh/NjvUg1chUN0tHBrbdOGelwEc5b?= =?utf-8?q?gGVjDonYU2FBvY5eb136hyAd861yySlgmx/mLEXTnAtCy/ePVr4+y53csMRSURm7P?= =?utf-8?q?3tE/d0/oOCzfNKfVaoHJHJOTU8bZ235qh6/edWxfQoTpDEcIGVwcfTc0ty1HmN2kn?= =?utf-8?q?v9tdV+aawF3Y5WYsVNVhMyP9DzmyNxkJbSt1yOcduQ+YnCnaHzFJ5sihGUTiPgmRG?= =?utf-8?q?W2Bnqhb56q6oGL4uqneH0IeQ7IbnMvHC9cE5IStDb7vF0qEmGyydtR4EHGWj9I2Sx?= =?utf-8?q?W4S2ICrQVnqh71onuEHOOHwvdbxd8WjS5NOIu/SNiK0PCgM55F7n+21oNz2sNfy+u?= =?utf-8?q?0MovzMc0Q4GR4MkBtB+Gq0qHbGax0RmRSBlSBrokyTYHndi7tD1rYW9mNo8CY5iG4?= =?utf-8?q?KT8y9oIbDIVCu3rZ8shnftODTS0+2xg3W5PyFUYuv3lLZfcGh4txqd1hSELwntIHL?= =?utf-8?q?Xhk2tK4n7lR2T4Zgys9M3jZtJesAYdaOO319fogvm7QNkLMwerCDR6nFuQlVcZ5Bn?= =?utf-8?q?cEHIC8Dt/kHGVuR62JQTw3CA2+t1NHRXkSOoxfxuxzu2bV6W1pSSm2X1C20aEOFt7?= =?utf-8?q?zNqmcQ4dJVGVrx9mstgFMmXV8N+WhGWkgjSv4cmM46FUWUkNjPYlA9teH3vl8bgZn?= =?utf-8?q?dCuBPJaSGugDNsAqpgKxHfC4Ugzoc+W6kVMu40JB91Hcby40O7/TxCX5reTbKSZAd?= =?utf-8?q?lQUlJBqo6D9aLMuJ2G53LFJ8oMBGBcT2QdZcFFDL+JCDD2pwleebkT2lOxASkCmVI?= =?utf-8?q?de6ONCaYXz/ahOTkIvjAIxvqgejj5XsXnhg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?tKeqi73rcbz31nYWGazJJonGCjbA?= =?utf-8?q?gbemh3zxqo8hXhpp7R0zO+UAWiZJFa9RxdVHoCQKgw33nSRV1vWrHfdcRruaX662R?= =?utf-8?q?7LS5QS+EHwl2MLKYWY1H6ekNRY2WwR+j0jBSWl94A8BirXEwUTpfBlQX2OVSSJmca?= =?utf-8?q?/lCGmjCONj/jVHGL/+7XleCRef9hGuXlmfGJvodHW3/SaExX7gJQY1+h5l/6vyh0f?= =?utf-8?q?kqrDNYYX4+gSpyrmPskb+kdO8SVmzsKTrl91c2EbqA10WIXNdA8k0CMrCrCRtV1xS?= =?utf-8?q?YQw+4iUS2GivLb3/qIRKS6B/fNUQH9dnvm8/Le5rMHrgB/9eRTLwufvcJCdzhEh2d?= =?utf-8?q?obICs7F9NGG6s1ZnFi7WTzjMV89wDbSZ8vl1QSZ+LSXu3XG23df7iUU/YuA+pMFC8?= =?utf-8?q?evkw2d/MY1jX/6Phxu/e3UdhsJCX+G6fdSgynE7iUhCvrMAGcetii+G2fTwn0qGEe?= =?utf-8?q?dkSE+SvNhcWIl19e5edlDnM8IXy9pVzvi5SMSqaokGPeQRMEw/f3It+spAP4LOqqG?= =?utf-8?q?NS1SiVPrEKAG43o+hivGLJlhO3pxFKf8mtHRCW5Qfv0BS8eEYYn4Fv2oyYy0WJs8A?= =?utf-8?q?bOvnJ54w2H6sJYC7TnqwGoB0c2mHPoeGmDmPMi9un9CGTP3vZyeEkAy9pNWrYu9V2?= =?utf-8?q?QhwRR2aidALI/0gl5KITJT/6n4x/dw91x4MK/b/bM98yzDT83w02qheqBJ5inG9jT?= =?utf-8?q?kCfSKIwPhPI2SjL9nuYmsBJmVRtzoDASW8eazjn1UWfobfmlaZ1Z++tiZMFYJImyT?= =?utf-8?q?Hc6ZWiHEccXkIy5xXjaueN4Mp5xBxEahZ0czM831C/gxjzP38x5QCaqwt6miQpK4G?= =?utf-8?q?5a6OwzP1a2vrjU+uXi6f4y9ngYhNShUGirNn4ZYa9lMoTcUhgUxhJfV+j1eTcO36i?= =?utf-8?q?44AjIKc0mpWTDsaD1FPvuO68dZZuRhy+m9IsJbS0Zpesikpr/vgLHcCH/IN2m4k9V?= =?utf-8?q?CkIhFvwIH2oy88/U5z7y/9Su8dECZH21cnxIqxABR3zhObFcQz7MRzUAnhnxMZi2r?= =?utf-8?q?i3IoxrilFn37Vj7rN7oce8wnBDlGfd7vgBZugaPaY5NmY0spQVpE3VI4JaxxDDqdS?= =?utf-8?q?8KYcB+vhZi6Wr/xrtCouhRBOuV7pL8GIIRH44o1fWWEQvmBpVZxaLpcQOXNR4unh1?= =?utf-8?q?KA5vxCqOen9pcXOPpItFrW/hO27OD3i8ba3JTjiYF9v/wzxgvG6gPuOBMfvIndtm8?= =?utf-8?q?xKCE2w1hQGIWYjIdEK8fO9Wy+jIzEvL2sMqytzb85qfKOCl/mbFqi6qrX2API07A9?= =?utf-8?q?4yuEljvMyysqVax1rmX+ioP5I6obfVm3Ez7/7aEKz/AL0r7GPQJsXQgZ3fKVb3bDX?= =?utf-8?q?9AuQWtRshh/4njBu/zSqs86OKcp5oGRjvheZORAv+DWDHhNZ9TavJxHeEE1U6iCa0?= =?utf-8?q?zddpUDpQjGOLPK7/cB5f1Lm8RQLrOelAulRrz1olqXsItKQhUsesoPedkIkQKHjGl?= =?utf-8?q?N9TY1Vf208rkMsZv8GmJWwu6blhogEBn5Rdq64ktO6cgEnDzzkQGCSbRNnw+sqERJ?= =?utf-8?q?opK+ertxQfQ+1l3zbX4yjdQFSIN3ryqoNWNYJ3eAeKwcDaM/W/90gD0=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2adef8a-e8a1-4d6b-8da2-08dc6abca13d X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:17.1269 (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: jSadikAUYTBJLIvSy1THOxBI9pOmUHSQaVRcEjR9oFWNsvg6+Kv//QrvJ7c0qMFuLPQtABNMcXYOqki/+sdBbs2W6Jo2+f588TDVV27VOZeMRp3xBYugxL5aXFZGy+Zm X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The 'level' field in vtd_iotlb_key is an uint8_t. We don't need to store level as an int in vtd_lookup_iotlb (avoids a 'loosing precision' warning). VTDIOTLBPageInvInfo.mask is used in binary operations with addresses. Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 2 +- hw/i386/intel_iommu_internal.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 70735e2379..80cdf37870 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -386,7 +386,7 @@ static VTDIOTLBEntry *vtd_lookup_iotlb(IntelIOMMUState *s, uint16_t source_id, { struct vtd_iotlb_key key; VTDIOTLBEntry *entry; - int level; + uint8_t level; for (level = VTD_SL_PT_LEVEL; level < VTD_SL_PML4_LEVEL; level++) { key.gfn = vtd_get_iotlb_gfn(addr, level); diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 4f6b0154b5..901691afb9 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -473,7 +473,7 @@ struct VTDIOTLBPageInvInfo { uint16_t domain_id; uint32_t pasid; uint64_t addr; - uint8_t mask; + uint64_t mask; }; typedef struct VTDIOTLBPageInvInfo VTDIOTLBPageInvInfo; From patchwork Thu May 2 15:29:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930655 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=weR+vhKQ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGc0Knsz23hd for ; Fri, 3 May 2024 01:32:24 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNW-0003mu-PJ; Thu, 02 May 2024 11:29:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNU-0003m3-Hc for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:44 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNF-0005ys-Q7 for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663769; x=1746199769; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Bmjrnlq+EsZbqElkWo+w4HVWYLdNhU0hhvoJB34zwx8=; b=weR+vhKQtMAtOkE1TTsbK8u3tWULRlnRWSyvyuG5of2WnJ6egCxT7ZeC eMP19MN6gUbazFqnfG27yCOMdtn7HTLMXpIToUCGcORyHXKmBpBdDrLCW Tq8H25jO43qHA2qUPzUQovQfm1jdcZChlBOkrB5cPvPtXK8iXecZdNc6E yHhajc/wbavadSVbfOuJWvmmNBsIVVtb11lk1psYNyGjm3SQ+o4QDoUvs zu3cYYtRYT9nIqvFIVfVV42sHDE3JmOH0HWT2/RrPpQQv2KGbfE053RVa is0GolTWa7Wl/9s90MuWJDaExyg/aX3iG2eu3z+cK+BbOKqcCmQt+UqmA Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785875" X-MGA-submission: MDGDUPH/ZPG72orzt6m8j73WFtRqr97aS8VOu2xVuIrlNbM0NRBT1i/woOAhBfeXZ20991KAkRq6fEuHinJmPzF6LAJkZZ1Qs69L1N4D1/uRXNmCw0B1d9e75dKRfYsBHw6IsTccfFUTOE3oZDJQdhFP1HHKlWBpFheo9PqfRB9pAQ== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZL2qUok+vOs52EQK4zgK9qkNp+2pG3hQS6pGFl/wRbSxNdpDfntyj9M1mx8SsrXYzn3qE1kvIHYA442NFJMxS0i9+JLvkc6NTFmnTcBRikyF0IHJ4cEFgkAeh6SAdkBXm7DiBHg+qLVYtzPoPG8QbsfYx9GLMBwqK7R6iJdaeDVB1cQTwjwrXFS5QsxLruv2Fou35LGydLUqXLpl6qY3jKnfaLkjwXBJaWkHXpTkSVd/TfCojqnYfOOp65PWkj4KtMLC3Fh+eXQjCmWI+kdcvkIlyHei6LBv51rQPBi5urGS56NvJ0prhhMg9SSmwu5FgcHuCTPauOU2ztZVqXzMbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Bmjrnlq+EsZbqElkWo+w4HVWYLdNhU0hhvoJB34zwx8=; b=UQi4FIcnLGpRKxOv6RU4dX607MVrmYklxFf2J4Quhpcf+TJ9FSIatjPhwPO/xFRUOPwsFN0B7uIcoChkS8b05L+7o9AK6c6b62yuZqW9J3pugMVPdKAcDqJ9lRQ3l5w6oat0fhJghgM1eb2IDcI3N/Bm/f2DAgSVqPfIX4F92JqJNpupNch5Zzepg7Ji8bnbUe62R+qUX6/S/egiVTYZkctSh+4AkbLb7ivatO1Z24BMhhVMTgMG6V1kz0Ikk0OAEZtHDnpZ/yWwHDmG2hjcyVRksfitoM7hKAHIcyNx1/P2FCMLU3YUhAwIoMLuBjsrI8UcgX31TfKz5p6U3I4KpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:17 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:17 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 03/24] intel_iommu: check if the input address is canonical Thread-Topic: [PATCH ats_vtd v1 03/24] intel_iommu: check if the input address is canonical Thread-Index: AQHanKV+UzSPoW8ik0CkQzcjTSZ5Fg== Date: Thu, 2 May 2024 15:29:17 +0000 Message-ID: <20240502152810.187492-4-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 92f60acb-d931-4cbb-b954-08dc6abca163 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?nRmKHI4U/U8f9gPzc/pjBdJJvEyEQwz?= =?utf-8?q?4Sc7U7PWvEhhpHpCF7eIIlykpb5bXIgIbulVRXErCxB0I1PEq1NeUd3u9btpEb8A7?= =?utf-8?q?wa66q1AdkJe/4A51mSzld6tdJyuYeRE2JC0u0nJmUVWvTUckTpKkdlzsAaR0Bv/yJ?= =?utf-8?q?+8OACtqswtfZ30JZEYal8ne3QEgpmfRZ21icna51RlDHxZUmmdw+lWjgQK1IZQw39?= =?utf-8?q?kbcv7kXnyqKUdH/76nQ9xE0cZVWUykDJpzvIF02339psgA3BdE8jaNGUYx9pidqkB?= =?utf-8?q?hPPusRRzVDWT+5t1cggLttgqmrSmDWxHeYcDHiJ+4KWfa//3wZB3Y6/t0C44HsrSd?= =?utf-8?q?wdHeNyRfGPDfQ9hoGbTnq6iL199sxKlQNuG233OgXYN7JPNoZjteFu6o4P9pezqkA?= =?utf-8?q?ngHAPT5viAsLCeeqesdlBmha7A6rLbwcUj3N4H77hlpp3s6WHjh83Ga1/hok5U+Bd?= =?utf-8?q?Sc3oVU9cNYCN4O0j9VlYLvupEvdgxYCrOyeexaDzQ8/G5ogB7sKD9N6+q2fxTZm4G?= =?utf-8?q?TtAVdmyGHGZS/Ln+TQTg+3kkKvehWpqISHml9K1xzj5eSAcolmeHsy2AqwiFnj/kZ?= =?utf-8?q?H8JFzQu9ZsgTRC4ER8Iw4pP+3l9DPaxxllJCpw/428jHzJOknLH3ot/jbbQn1IQuP?= =?utf-8?q?LtQO8Hzf0qY0gOHl3GC1WY9kIfxRxLUEFgK/DG57crRnnY+VHLzECOnAmweQHaRkd?= =?utf-8?q?y4hP3uWDmA0+loAOvX/VGikI8L3o9XNykYXAdlIgmWlHc2eceVQgIOCuSe8DZWYOC?= =?utf-8?q?CTb8aUK2GFp+FnywxH1BOljbFb7Jp4IgMUpf2mRb48lSrtAGZ0XLsFMmZyOle1VY1?= =?utf-8?q?QfAFr1Mze6kLNzJmkKY8GmA2KGgELhaArbfBRd8z1UHU0SX4uHgdq4N0tODLiESg9?= =?utf-8?q?XniE5A0fE+cJ82G+bPbdMdrhMdgUoUqkaU9UESVHx+utJbmqmDIrmVrDGzgEerfo5?= =?utf-8?q?cT4zQ1lag+pjD6Zk4ke5PzkmEskZywEw6TEM7UapG9sOwDkNM0Zb0ZZjItzAEkiFt?= =?utf-8?q?TN6Fwj49mZJ5cbcnM2Ejk9SOjjvISVIkggQg5XRePqMb+0dFIEF0jwqsTjWhZf5s1?= =?utf-8?q?bNQrP37GrvF+Vi4GfHg5O92PhA5VENkPi+bY9cRoeWw84EyOsY2EQRc21N1Nv53cD?= =?utf-8?q?omu1xryf0G4+ZP89N2h6RkgGByZr+qfjffMziAi2TKPNGqOoepayC7FAHUaKib08p?= =?utf-8?q?dctmskFXSAPW3JH97+QXNk25zQnGLcM2UQG6MWzuLqe1j/I0Cwg06kUlfeaeh49X5?= =?utf-8?q?c5/KVgenb3dDJSN3gBeguI2wh9j4P5L/8yw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?3mCL9kacCsp0DrpmzWuLb7ZoClUx?= =?utf-8?q?mYOnK1Wcpsx0OnJm9wg4klTu3gO1MxZMh4FMoA3hCoDlYzHryRa7VvFVCPrU3h1sA?= =?utf-8?q?TT6LMaL0HK9bzbXc9bfH5F1NFD7JBvVQualXcpC80wL3RtegmVc1+P7pGAoZpvmXy?= =?utf-8?q?7XALGF805ZPL0AOD7ghPsn7V70D1CeshmaOI/VzLcU8lnbdXOy1+3DooJ6Avbw07i?= =?utf-8?q?2P/E37MQkE9EHg1Xe/TBgfkugL2beMAynD8QxGKL4MHM88q4DGPWOKZ3ohgeYt2M/?= =?utf-8?q?o+0wFVrAf+ww2AEfaZmzwH1MnooitxAKX+YqHYDprERjK/BdPmMjYMN7BZI8HP1Xg?= =?utf-8?q?0xD5+kETiAA5cox2BDIFCbJm9qs4B/QTFTd2hjr6g+vyRoSPrZ/r2ZzoITVWaGnJq?= =?utf-8?q?/HVwR1HGtnnji4ZDEcEsYzeBZXOmkW5iDfdOoMDkdFmOpAN0LGdGN9VeMsKhJjs2e?= =?utf-8?q?kwgIli4uNhGYe4aHJ5TLtRiCyjTBmTN8tlO+/aUOUDDXNksO2eXJ+GKsT2OgAlaWv?= =?utf-8?q?ANNF7J08wjoRzqLW+ikcqOAbLcJG85oAlFW52/VbE8AcCKXkEaT0EROHAixkhYOCJ?= =?utf-8?q?8Z6uAiPI9Qzd1XgMxUTtEdGENL3TNS55loogMXOgErSE5PAbXVxvvSAFTXI+gquMJ?= =?utf-8?q?aK+O6l3kjB3PVC6OslFO2rjp4g+fBn4jV+1+Ts6e+OjmHIX9FL6wko5nHNyCWQkx1?= =?utf-8?q?Ao8Pc/smvnFVSAN/AoXMr5wNFHMriLPniCbKp4GmSb/Ge377RPrrYdXFTW1/G5+2j?= =?utf-8?q?tYaB0D7L+IATeEuEsmrI+Nn/Mg3i5j+Ivjwpqiz5iOdKtaNIeTv0TkdUnq1yb+rTg?= =?utf-8?q?bV/D9jmTSD/+PZgBi3xwQrXQtkpW8nsfOQTSo4Vpu6f7xzUi533mzsAlyieee7/TX?= =?utf-8?q?J3omWfzGH39OdPcSK6jVyLIsNlENRj/uL3HiL3hAPG0ppQKrfn1u8BsIvVINoslH9?= =?utf-8?q?tCvDY7q9rwpQale+mX9koxS6aa2175cQb+RCTyxYBOfFOWNl7Uce0MOX5eOXgHPKj?= =?utf-8?q?RGR/5qSscnugJiqKpG27EFUmHDnVcQfnxoKUgj1y9WiF5eIrWyKwu+srJ41div3aX?= =?utf-8?q?iHkzHT0U69V+VSxOPc5/GqlfJPEZVD2dBlac7J1Q9eoeQkSIdfhGmRjFwqtROStL1?= =?utf-8?q?Pdn+CiPd7HmE41Sx+J/VkuApNA/CThnMtzAph1h4oecHL6Ja3plWoJk63mdGI1uGw?= =?utf-8?q?PFxeDElRkMhzGTvufYG54KYcIPNtTUcsUV1Jzqlp5XF3Vg9urhKna5quWECEcbMNC?= =?utf-8?q?6kAaaZ5r0OYBUdKreXsiWoMDSdSyewMV5zmjeb9jA+uV385/M3m0qOhoFT58Iv5Br?= =?utf-8?q?D4PXBZH+o+FEEGI6qphzrAHSivr2WuVHDexb/n/v7lN8pQguGyHwgL3p3+2i9e1hx?= =?utf-8?q?vCbHHtQgj2C3g6ZiGWehki+ke7i2rnj5V7U8z8QTTY4zTghTP/8mnx/+Cj/uj0wxN?= =?utf-8?q?r0Ci9LsmXCThHqwMfQom9zje5eRMjgq9ir9qHk20FjL6RXQwCpK80Lm34A9UEcCOi?= =?utf-8?q?bj1JNSQZhYR6kuHbh8ve+txhkX8Ij10ZmSFp7oKh/zxYmb7DEpiczBY=3D?= Content-ID: <6C7B7209A5DD2B498988CE68C26FD393@eurprd07.prod.outlook.com> 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: 92f60acb-d931-4cbb-b954-08dc6abca163 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:17.3490 (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: ou8uIftzPsZfLfGHM5PBkBu4xG2AUNA8WjDdj99c4Qak7zB4X9t1ug829RFx1GazWRo6j6h8UKXldPm4BjdNuDIVEpt/HUc1WL/EXiHiCutuAf4ExLRP/3Jto1jAIpCj X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org First stage translation must fail if the address to translate is not canonical. Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 22 ++++++++++++++++++++++ hw/i386/intel_iommu_internal.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 80cdf37870..240ecb8f72 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -1912,6 +1912,7 @@ static const bool vtd_qualified_faults[] = { [VTD_FR_PASID_ENTRY_P] = true, [VTD_FR_PASID_TABLE_ENTRY_INV] = true, [VTD_FR_SM_INTERRUPT_ADDR] = true, + [VTD_FR_FS_NON_CANONICAL] = true, [VTD_FR_MAX] = false, }; @@ -2023,6 +2024,21 @@ static inline uint64_t vtd_get_flpte_addr(uint64_t flpte, uint8_t aw) return flpte & VTD_FL_PT_BASE_ADDR_MASK(aw); } +/* Return true if IOVA is canonical, otherwise false. */ +static bool vtd_iova_fl_check_canonical(IntelIOMMUState *s, + uint64_t iova, VTDContextEntry *ce, + uint8_t aw, uint32_t pasid) +{ + uint64_t iova_limit = vtd_iova_limit(s, ce, aw, pasid); + uint64_t upper_bits_mask = ~(iova_limit - 1); + uint64_t upper_bits = iova & upper_bits_mask; + bool msb = ((iova & (iova_limit >> 1)) != 0); + return !( + (!msb && (upper_bits != 0)) || + (msb && (upper_bits != upper_bits_mask)) + ); +} + /* * Given the @iova, get relevant @flptep. @flpte_level will be the last level * of the translation, can be used for deciding the size of large page. @@ -2038,6 +2054,12 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, uint32_t offset; uint64_t flpte; + if (!vtd_iova_fl_check_canonical(s, iova, ce, aw_bits, pasid)) { + error_report_once("%s: detected non canonical IOVA (iova=0x%" PRIx64 "," + "pasid=0x%" PRIx32 ")", __func__, iova, pasid); + return -VTD_FR_FS_NON_CANONICAL; + } + while (true) { offset = vtd_iova_fl_level_offset(iova, level); flpte = vtd_get_flpte(addr, offset); diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 901691afb9..e9448291a4 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -324,6 +324,8 @@ typedef enum VTDFaultReason { VTD_FR_PASID_ENTRY_P = 0x59, /* The Present(P) field of pasidt-entry is 0 */ VTD_FR_PASID_TABLE_ENTRY_INV = 0x5b, /*Invalid PASID table entry */ + VTD_FR_FS_NON_CANONICAL = 0x80, /* SNG.1 : Address for FS not canonical.*/ + /* Output address in the interrupt address range for scalable mode */ VTD_FR_SM_INTERRUPT_ADDR = 0x87, VTD_FR_MAX, /* Guard */ From patchwork Thu May 2 15:29:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930666 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=gPsT8bXM; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdHr1dL1z23hd for ; Fri, 3 May 2024 01:33:28 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNY-0003o3-72; Thu, 02 May 2024 11:29:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNW-0003ml-As for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:46 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNG-0005z0-Bv for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663770; x=1746199770; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=gouuSI73YO79A3pxghx3VxnSjCaNE4VgvnGoPug7hsY=; b=gPsT8bXMFMBjLqgHzeAEaS5dqVM+Ij7ftldqAV/qRIHed0TEcjKHlPs9 liZmsyQoHx/f3YO3HZ5vIjITnLXsm9bR82oJtOEE1NAAEkobnaKS0muYY R4c3ovOsVSKgOvVJxT9fgzW+jciXPR6aIB9isij68DQ0GF5dfA0ws4jwr SMAC0v9V/N0MQxMkjp8DZPKa+PzBfpVlRalf4Y7Tk+5lrhCQNETuqS3Ls BR1LNu40DDIqybBOoRmZA61hknOwEbYe6lvcBzRB+BwousOdFgdl9BMLX D8LcIwEc7bldjcXEsr15DCevCazmwOOpHsNSbRDWeotq0kbveeqOfcioo Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785877" X-MGA-submission: MDHNQtB7hKQPhwM+Z9nxgpLMQvBBJkJCDhA5/1ku24GH7I+HEJmd1fpC8RZHTBlWR8qGbzGph4Ux6FSd/uqDw44A+kgizpHogMpNjPa22HyYWcUsizlL6hQ/hVZyNjJki/+3cI4Z7TsqpVMduw2EvnYLXprip315wkUCmG6a6k/p/w== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D6ADbNN6/JcKUadYJWqEhZ8ppvGHFXlPHtorhPAp2fgUkX57ZO1kwUdVUEyf6O9yo6lwIoJxAlLuVxs9dvMFdHkvenC1mQyx4wSYA57gfvUOfpHAqbk3JlwlkFtjk19eRNyTOs8+/H/2jx/1ztTJuM8ecr5L0Unxo+/JqaXJk+nXpVuI1LJffaNglLF+cPT7GfDNkSoMe5ao83DKTjITp+FvwhgnO4jVqD8V/DsuCI325GiEvHfjjQR8LpEd7V1b99jQGOv24GtEDEpG/j01T6JqcfKHeKWqsLGthXVgF9aaofndID6RJ9YAjIZCy3fMoBlaxCRz2Rwdpa3tJEpPqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gouuSI73YO79A3pxghx3VxnSjCaNE4VgvnGoPug7hsY=; b=NvJT7gnnwMIEWJPo4GZXBaSDQF5mkTmaFlijPkbBSJeTs22ZzVL2TcQVfHJmCIOnBwOTfHeGUYJqObPHGzj8RyzsTxDeY8eVZcraLWu/RoHGgbcrGhPt6bZPMobU9lCwLKDViXY03MAeqwn70YOY9M7qmzuF3DC79xA7Tx0UxEAVg2eK6a8vuFDokYtdpTwFU3dbX/NZEyG9CZRJyBOVu3gl0tR0tpxlvg6FWNkoIT+aMXXvlzpwDrximEKbcMTXJ+AI5WC/cssz8LVvCFjfuIkB/effCS7D+4FpMYAnzVSzJ11xMQC095Y1rUJKdaoXJcJ+ZhhUMaPS4Mo0WZfsiw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:17 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:17 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 04/24] intel_iommu: set accessed and dirty bits during first stage translation Thread-Topic: [PATCH ats_vtd v1 04/24] intel_iommu: set accessed and dirty bits during first stage translation Thread-Index: AQHanKV/mhjM4ak/Ekuu9if0HXvkSw== Date: Thu, 2 May 2024 15:29:17 +0000 Message-ID: <20240502152810.187492-5-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: e0a055a6-711e-410b-e5c7-08dc6abca189 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?o76tYTt0muI9HcCoFCX0K3Alftcl0wk?= =?utf-8?q?jhPoLpy3wPMWVhZyZQ3QoISq8wnA67MJLYkh7YNu6QP7JcpxMO2qbmc2r3qxyQ9yT?= =?utf-8?q?ccfvHA1JSIuMnpVu5Na0sV+Vsv1MMLc+rutkYufwRDI+f24TTKimSgYZaMvnIvq/o?= =?utf-8?q?T7alm56ZHzkucatqqcNEXvklCftT1TPeaOSUji03iQqCfwoTZ8/H6BbvQo6y0Iv9r?= =?utf-8?q?QdgvX+8CVQvXTu87LO6JeM0GAYY2UJ1enKQ1v+tqS25kubW1hPNhxnePrUxCJpmCB?= =?utf-8?q?wsU7/CpSQRxcCxV4VCPt8fmtQFIB83QdqVtY0e/uFG1GQkbZDhY6gNxXLxoj0imgA?= =?utf-8?q?odm1mtkh63woNruizOy8yzhO+UnZdu+WDMXsaPCYgAICY71k2Jcf0P0NjV0zNqf8O?= =?utf-8?q?tjSOEnhx3FjpO7qayE3S8gGH4A2A/Smt5o+KmgoJIHd/iuC8vEo7UNCSBYmXTFCxv?= =?utf-8?q?2j3qkkzlVt2PcITzAekUe/oRiP/EnFtfhyiNPl6DOM+agWyl4uqS5oYmWlUyBDrs3?= =?utf-8?q?0O7mpBN58xeWZgWN7ZFfz4skFe5hsEC7mVFkglF68jcvqy3rdmAzyBHFpHPQSufMy?= =?utf-8?q?hrKIRVo44GwvRXHR3hh0HG/bAiw8+wGtQ+IxLIWpIhR6CzxLTimyyHVZkO9onom3g?= =?utf-8?q?O28B+fa3QCNx8N7vjp7ZbgA1D7L7mr3XW+rgeDTnq81j2oHRc8OraXEdotxDm9Ef4?= =?utf-8?q?LwmLLmVzIW4ejL6jYMZMftbPJAimj10Q+G/T6LVkOEgHd3YmbY1Nj4jS+pSVmE7zc?= =?utf-8?q?Mif5tuMrClQf41eUpxQKJrnk3/GyomKMxWsWQ4957n5rBHnXfzjonwYXZatew44x7?= =?utf-8?q?mOTTH/P+ThAHjtbV8/AFX/pyUBvLkYN1VUyO4ENUSfFOlDSxKX7zD5dFm70I59MXp?= =?utf-8?q?IO/ab5PXXnFn3oFA9VrC0/DSmpcvVH3ikbEow2HOptmo/q47trLfISIVtX2UqEO/K?= =?utf-8?q?TRKAUMOYo3GGVFh21A5Ag7d4R768uIwUr46suaqMk6No0CoYDgF7XNnH6DNO4IF+7?= =?utf-8?q?HyNYOHJdJCQ2rwrFihWIqVOsvywOeUrRk0+hk8JK5V307RuxBU5EVbBpmBag20b/c?= =?utf-8?q?RnRJOTlGGOz4BAarrjgkW3Yd+bdlC8/B7omEdVvUyij3MxunBCDuolH56+05ovMx4?= =?utf-8?q?/Or82of8jmAAyxsSDDDn+nHgwAlMKp1ON4JWSA6an/FZEjRC3WcH6R+Yg0g3oDZc4?= =?utf-8?q?bh7f4LeA36rYFJS4aKVNoXEyIIe291omEioIYYrDErTE7I6zW4WpZEnjJI0VugCWy?= =?utf-8?q?5b0+l8uufPeCDRRY0NN/M9ihKgj85scfjeA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?uIYrROi6MCaielZEymABBOrdjJ/r?= =?utf-8?q?hh+GhAUbeFwET2pfD2HAbxcyETI1TpmzRiEs6pgsJ6TqnpYi3fF5R3V4Z6WYWFcYE?= =?utf-8?q?pJOWc4BgjK55HDOvxmhN+E3OTXuHVAikTResqhv9H3TXDl11e3WRVFvb1cgNKszOx?= =?utf-8?q?qfLW2H4iJquX3xlCY70ZKswj/vkW/BMMQMZh3CbX8G4ztNqoqKFo8I1hH5K9d0V/g?= =?utf-8?q?fWiZh341nM6PduD8fkz2tW/mrbnCkwYOFvjzDs8qz3+5a5hNV+OgCKXRKDehvjmMi?= =?utf-8?q?MEP3fuj+smNa4qH9S1C/WT4Cfw0qIorBSnmZDxrQWKAYf6K/UEu25Ch6PSVxctYm+?= =?utf-8?q?wML0zwdSrCGT7A8tj7urTcdx5opqk9gVkz9W68rRO0mc/yaaQA8x4WoFDH0MQb2JI?= =?utf-8?q?NoQbQClUcfCOhCIyje17rKnQv9W/g3VpiZ29kypB2Q3wbEqdirrqSmEM8b+NEVpNX?= =?utf-8?q?4iXlv79dVc9lH7hl3NWr6GF9YajHsNd9vB0dfmSqtYCnDVoxFvpE1QVaxuiQjEErT?= =?utf-8?q?o6FyRf5h2cPN/ZureEGwHY+DQAexMaVYrd7tgiddUSp/TALQXmmzqNrdPPDHV4aDF?= =?utf-8?q?K8I2nJyIoH3zqZFJLmAFDOYPw1TK8YOLbb64PTU3oLsjgx6aaOHEqF9epLO0W+77i?= =?utf-8?q?Saqb1hPIr4Diz96p+hqu1tPMUMkgfIHwUb1mJ9Xl5/z7BAjpZku/F5ZrzJoW38SFk?= =?utf-8?q?H091qGcBEMkXiTw4pxSWHI9IRwe2v0tcsTpwBrhjvJxJ9dErSBeO1zHiT0DSg8K+B?= =?utf-8?q?kAGb13iI97N4MNhzsFCLKQoRO8cPVpypsWnUpqYyq94TQcXle2G9tbP6DjpLo8IRx?= =?utf-8?q?J4Au0OsabKn0wZ9FBqQHnUqijj1JMXVqK+05Rzc+8SQpqoe0i3xguZzqGTve4ydF1?= =?utf-8?q?hUcYTkfjFgNuUIQKs4wM4khX4TqX+bbW+o7/FQKMsoeF80JDv8EOBLnbCJf4pq6Fl?= =?utf-8?q?jYzRSBShjrJ+zOEAoCBWtR+pupkPZU6GG7ILQE5TS2fbOSFbzX1hJ+fYMWsfSxL2s?= =?utf-8?q?Np02whKQdB9rmTUPxRVCtN85bOUOZj8Fzt7VEPgBNVIxBW+VVaKThxLwiGYwXQc5o?= =?utf-8?q?rEZdUfQGLtJkX1lcEV7M16veQijcWmcPfryCNH1CK4hoI/JYlqNB+VKXafPm8POF4?= =?utf-8?q?/u46VL19tCQTs7ujuG/WJ0GIfWIQo3Eit29WJYdFJy0rpczOrtiJIz91s37KuQGOX?= =?utf-8?q?FLpATGbwoDOL8HFl04hcM5uSv/8xPfyQT4Hn3LalcZQz+FOTTSbPmr1iGm5UbcBi8?= =?utf-8?q?UjhNJ04mCrlpQ0Wfn8zYpQNLwByywKe0+g6zJVXWw6doSuVgmb9ZKlg00Rz3ml6ND?= =?utf-8?q?EAmEDeK37NJhnPFrUGLgba4c88Y81myJZKH8jfg+vSrRblyMqWZSZPUnBwFk757Bl?= =?utf-8?q?iGzSeVJmrjPk9ZiVDIwH0n1loLHiWNvp3R1PBd6zynS9f11Y3eM7Al4YHut3uuhoo?= =?utf-8?q?dXqy9BVpYFc3FqZ5Uef31gD2qnNOqtv+YNpxLBzl0RvLzphsN+4kFSu/QMuAOqvNQ?= =?utf-8?q?iAIbWHIvqWo8fyUwJxzxbZ4aukbE1PKlGnGHzTpWQ67fkF4cEoWotlE=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0a055a6-711e-410b-e5c7-08dc6abca189 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:17.5817 (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: eO5s+VL9VErq2nP3qHlVrJgn0mDriQskyfOc4HtB6K89IbiV+6SC4tvBicYwHB5ePqkFsmsYUBBu7cprPGSvBbd/opD4pEPglMtR+K8tRqW9p79ClBPhMUs910KHGmj8 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 26 ++++++++++++++++++++++++++ hw/i386/intel_iommu_internal.h | 3 +++ 2 files changed, 29 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 240ecb8f72..cad70e0d05 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -1913,6 +1913,7 @@ static const bool vtd_qualified_faults[] = { [VTD_FR_PASID_TABLE_ENTRY_INV] = true, [VTD_FR_SM_INTERRUPT_ADDR] = true, [VTD_FR_FS_NON_CANONICAL] = true, + [VTD_FR_FS_BIT_UPDATE_FAILED] = true, [VTD_FR_MAX] = false, }; @@ -2039,6 +2040,20 @@ static bool vtd_iova_fl_check_canonical(IntelIOMMUState *s, ); } +static MemTxResult vtd_set_flag_in_pte(dma_addr_t base_addr, uint32_t index, + uint64_t pte, uint64_t flag) +{ + if (pte & flag) { + return MEMTX_OK; + } + pte |= flag; + pte = cpu_to_le64(pte); + return dma_memory_write(&address_space_memory, + base_addr + index * sizeof(pte), + &pte, sizeof(pte), + MEMTXATTRS_UNSPECIFIED); +} + /* * Given the @iova, get relevant @flptep. @flpte_level will be the last level * of the translation, can be used for deciding the size of large page. @@ -2080,11 +2095,22 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, *reads = true; *writes = (*writes) && (flpte & VTD_FL_RW_MASK); + + if (vtd_set_flag_in_pte(addr, offset, flpte, VTD_FL_PTE_A) + != MEMTX_OK) { + return -VTD_FR_FS_BIT_UPDATE_FAILED; + } + if (is_write && !(flpte & VTD_FL_RW_MASK)) { return -VTD_FR_WRITE; } if (vtd_is_last_flpte(flpte, level)) { + if (is_write && + (vtd_set_flag_in_pte(addr, offset, flpte, VTD_FL_PTE_D) != + MEMTX_OK)) { + return -VTD_FR_FS_BIT_UPDATE_FAILED; + } *flptep = flpte; *flpte_level = level; return 0; diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index e9448291a4..14879d3a58 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -328,6 +328,7 @@ typedef enum VTDFaultReason { /* Output address in the interrupt address range for scalable mode */ VTD_FR_SM_INTERRUPT_ADDR = 0x87, + VTD_FR_FS_BIT_UPDATE_FAILED = 0x91, /* SFS.10 */ VTD_FR_MAX, /* Guard */ } VTDFaultReason; @@ -649,6 +650,8 @@ typedef struct VTDPIOTLBInvInfo { /* First Level Paging Structure */ #define VTD_FL_PT_LEVEL 1 #define VTD_FL_PT_ENTRY_NR 512 +#define VTD_FL_PTE_A 0x20 +#define VTD_FL_PTE_D 0x40 /* Masks for First Level Paging Entry */ #define VTD_FL_RW_MASK (1ULL << 1) From patchwork Thu May 2 15:29:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930649 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=toMgdF56; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdF70117z1ydT for ; Fri, 3 May 2024 01:31:06 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNU-0003lv-2R; Thu, 02 May 2024 11:29:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNR-0003jP-Bu for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:41 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNP-0005yW-9i for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663779; x=1746199779; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=yH5QD3XjZARI9NR7JHkHrpYtjXbw3x4j6DHe+Uk9p34=; b=toMgdF567XjLkFcqXXqv+aabqQrkWROcv71vGfroQ7f84jdPi3zxs4WB Hj+LKn7uoKB42roLCXe/tX2f4/akQFXEdnePAVM1SOhaRFXbEiLmrqPlg IYOORXuuDM5Hl80nfI38cku4h1jixAz7kKEU/0kPdHy0nNJ0i2PnOIcRf UceCYs7j0ykX3NbQKK+808JkSx5ubmqjjDmxpfnsnyPSWfOflqTomqw4I NQHvNNwq36P597RwyZ0+m+7htSyoKpUBYJgsZ8qnv6LSwoB6L8Vjf4F/f 3vj6kOVBLpKKnSghRhbn1YtvnMooWrgEZQ51XhkMwvkA4fgtSZtsUCT56 g==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785878" X-MGA-submission: MDHxsaKT8oGbN/KCLq7J2z77+Md6gV85rvSIofeX0HwGZWvHc30MwDGwm4Rlzio5nuJ1wkOBkTKuuvn3M0H1IWgJZWqbCUUr+yGVt1VBUj61zYhoxlCH4Rg2l5VVRLruYN00vmSZRDmlIXYp3s+pN84yqSl4MheiYEsWOP5HjswBvg== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bKAoig41CblaGdZvQWnJThAYrtNea6rYTWfuOSZqZC9w2Ywai3hoIfFUqUS0k4DS6gQ0Yz+ELkvjKvpgRHhQyl1pJGmkyk9eEBdG9l0qLnw6X0Zc1NKPKfOEbYhNY+1w4bLoG6G7JO9tcVZ1f+u2jG8bblLJP8laiRQZPcnoeYVyeRHcX6+6pcXaAVCPMdjwVHDu9nGlcxgGA2QeHJOeuGfY8+qanKjz6fU1MwRPnuybyES2HVjzvrEcg3BA+8VHdOwN37TjizxTz+1d9TtOReqcYFD+y4fxcVWbhknEnxKM9Cir3+7Do64p3WjH91jjBHSZivfzRZFBe4Mb+nkJlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yH5QD3XjZARI9NR7JHkHrpYtjXbw3x4j6DHe+Uk9p34=; b=CeyVWycabrc67TsChfBm2C44Ap6MogDqU3GITJogJdf+ztTaj27FA7SfsrZbUzZjGxa0cklhIdj7zoDDO7DoQ3mD/TznJ5E6CRO/H/XzVxzHA9oXbHV2QiXr/tUl/rLcOrsT6GyfvlFe4eoOckt5PcAll6Yvj2gmuQGPivgViI9NlvPiRsKzXSCkTFE0UQPeQY9q1IQx1C2lUP+tDsy4268QALfnOnubFnB1X980ktaPVif+HKrP94xmbJeKsdlLn2UWpkFNOAU1iyJzZzjTKCgHAsu/en0YnUWEDVAIiIsjpsZujKjIjdngXqwGV9d1qJJezmkUr5B1BClqM4VKBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:17 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:17 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF , =?utf-8?q?Philipp?= =?utf-8?q?e_Mathieu-Daud=C3=A9?= Subject: [PATCH ats_vtd v1 05/24] intel_iommu: extract device IOTLB invalidation logic Thread-Topic: [PATCH ats_vtd v1 05/24] intel_iommu: extract device IOTLB invalidation logic Thread-Index: AQHanKV/BbmNxN7x/kOFdRktKrBWGg== Date: Thu, 2 May 2024 15:29:17 +0000 Message-ID: <20240502152810.187492-6-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: cc74c998-6551-46c2-83dd-08dc6abca1a6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?2+FgPTNGrhfopb56tbTlCjR+T/8jXgh?= =?utf-8?q?KZFsR6rK38bVRGIaf2LQP38IGfQ3MpVj3IrzrJZMzMHeonWVmSeLicFNn1kuTJh21?= =?utf-8?q?wSCTlB2vSQRPguqlN6aVFnCIjDX/i213wtjlrsJuh+jB9DXiHWMHwBMLnD7CviJoq?= =?utf-8?q?UAWm71s+bUXpqYPnjr80Na9auMSdpd/14P34/QDx4QW2uZdjWWkuyYdpUEBpoCMR3?= =?utf-8?q?Qv9BmCvuQCismd01aV9NPksG//NvYvlLJcg6OaCVbn1XgyLoQFNGIcZhq4UNqO/am?= =?utf-8?q?Q0cdwXQsrHerg6No7YWlpt5Pj/a9EC45Gn0c+v18PeiAfJIBbQSMgk4NMeWcuqQQZ?= =?utf-8?q?60oEGJXpK5txhXCAq6m9fGOpxemG8drqRFFSqmEkzyxO/7OPxiUHEAY1ynzyllgeo?= =?utf-8?q?q72X4qI7k/HCM3OPRndAWuXh2GIaIUypowc6NvItzkRVvMyiFLTL2g7j0rOq0lOHz?= =?utf-8?q?mNeGUx/+z93Cx9ewsBN1vgyzv2HYM8wZLyK5TwY4Jj1u7JcSOVF9Jy+KuR/rU8+fT?= =?utf-8?q?Hvcol5wF6Ec2O7M60dsJsMbgqmSqeZE7XvA9Ol5na02kyr+bqq3aPygvp0TKOk7K7?= =?utf-8?q?NdiUPPjvuXk97xWELQeRYdoM+bKceceiNKTwpSLrCdD17QMW6qUtCOdgjYfqRSKLx?= =?utf-8?q?Zao7Df2G7jT1amhfVghcDr8qMsbMyHFmr82fKBkrYo8bR2Urk87fe35LAv0g8rUVa?= =?utf-8?q?ZJD8o5Zghyd7ECJdXfKIB7LPeX8mxG9G3hqs1+v/DSpIsAxeHH69PvBtKJw+/j5hi?= =?utf-8?q?7CwzhT6yV7S3Hn6BgPfe5oGtoqpJOgdnjWEsKA8xR5HAaXeOkgq/AalDkP2HjrlPm?= =?utf-8?q?fFd20GxbC6UQScnS+5pZSIGGx/uoJsLwVZKidBoQlKGEN2iHubhtlkQ7oH9+whbIC?= =?utf-8?q?/5tANXDw178NxxZUplYK5Vl0u9KIRmJJ/aF4cQOkhms+tG6e8HBgqa2amLeVp2VE3?= =?utf-8?q?/1IeD9bej54q9Z+M3Zx9yAZyb+d4FQaz5kr56/pdI+hX2aUKDMl5EhhYYrrWPjZKf?= =?utf-8?q?ZhFAlK0dpCQ/lCatpaKZQ7q6x0bIMC6REkZc2aJhYskVC++uRzIfGxyxZh7zxI03B?= =?utf-8?q?3+/PRyDRYkbwrfJlJzijIMcoGmZFSOyMhuY4AD/BTxyh62JZYI/K2HKiQGifBGm89?= =?utf-8?q?ukwhafztfJbzOT+vyHkIUq9H1fkufxfEYbLGUc1K5X+OI8xbzh5vsUZJTUyP0QYPJ?= =?utf-8?q?orEt1uamgmh1C2HAtS120mlFfJN8mYUTy8dMoRZ65SCTuichnSKV3AyktbOnSKQOn?= =?utf-8?q?zjt+SI2EtfD3VyMcSiXDRfj1UpmqXz/bF7Q=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Spub8+5wrBQAf4SOnUPGpqa02bNr?= =?utf-8?q?435oQIRffytAEq2I2iEuIhU0bPDdOsSZHnWVC4wyNiI3/ZzNZIaVOFcM8UIk31Oda?= =?utf-8?q?WHKMpL1v4aqtcu2elj+7Pj+cOhwvpqLgEkJqKHAixIeTCYvq9aaIfqFxruIZNyei3?= =?utf-8?q?ffgm0g+/In54+3YRuQww+A1VGR4dTSXEDhMVZbhn7ReiHXLXPv1L6tFYJ9xWZRUXt?= =?utf-8?q?bXWXZhQ6w4N6usGW/iEr2ZRBjXgdPuCCDlWS2oIG8hieOiAtENNA2bsarSN5XwAh0?= =?utf-8?q?ZKpbejBiB1uq2cJY9J/OxkOZZIuOqnUqjyRp3RGM4TsMIrKld85AnkcmZIUqlb4rW?= =?utf-8?q?xgeM+ueQQ5pA56HgPV+DjpRA9oMDp6y4n5I9hx6AV2+95PCIWxtSJunYJ7IjwWEf7?= =?utf-8?q?m2bmII+1KS9/MYUh4yLIwjK+hm8+0IhEoWjaI6HohTbQv7SqXRN+Ug78Jp0aa06M9?= =?utf-8?q?aDnzM/e14ADmrQ2W+/b3PglgRW6cahDaf/p6GkkCCdBajMAZFxEYFcNal6hYIQEOp?= =?utf-8?q?buzcxRoac9skEGEySG+TeBgQdk/LeywQaWE+ty0Hn6cOYXb/zO8OktfdwEsCvdIHi?= =?utf-8?q?VEYf6/LYE4ajMjoZ13KJM85yBZtGybeyCp/0+ejM6Z+LGq873mfQh3qmvVm34i6Nw?= =?utf-8?q?+p3DxAQzodaZ23Q+xLYMZmElZDZJOVxttrfjNUtu3fmbwIS3rSn+pFq0UJHburPps?= =?utf-8?q?aQyYS+XfBl3hNe117tT2bywX+aFfCLOrK4A7mHU7sHFPxGA5CrYse98kreX247w2P?= =?utf-8?q?72ZefoFIe+qI9BQalX+TmPe4Ekx6mdMARJzg5Ob5rNmhuWxcyLnBdmUD1rNAFrREp?= =?utf-8?q?CqUZvxI7ohwDyDu2ha2b0rZXFGSzCLy79/3Pz+GUUQyt07LFqMMakvUlSyVzJ1JMw?= =?utf-8?q?to1A0nTgQoItJrpkd2qvsODPzxP8nZioB5nvcBvw3uKcbcyGqfQbcWLNmS2DNqCzR?= =?utf-8?q?xuANPU/gKnjlkeVxBZ5Ua8RH5/qRdNJeB0u9sT5M5ZwaMOHlKYPk0k0fdx0zKD6+k?= =?utf-8?q?CXP95OKQgKvMl37xi8rrbcrS8yEuNEOqUOYzC6oMVEzNp4jp+fbkuFpCOI63nIk9v?= =?utf-8?q?AwgZ4nF9ssyVZLqKn306/bKvBPqxYZ1gdNxxHrqCN/gq17sPL0PlPO0rwFNVFHJHP?= =?utf-8?q?ezW1jjobHMYVOltzueesFN8foOlT3kTKtru3S2/AwnxbOgb97dxrR+Ijz6N1fS1nt?= =?utf-8?q?YuZDbDtSSf2d27ehZ8F4U5Bo10NvCsuLtaVLvrmosBjF5yu1H6jihdAQ0Z7vZzLLl?= =?utf-8?q?EcOVD/ST6b7+aacZJwr4Ij2yfDAw9kYjUnPqiNzHtm4WTuLRcSaNkIptSGt2VzsUV?= =?utf-8?q?m0H3hm+BD6yXgTcmlgMmy7kfKUYdJn3EzhKJ8U3XYAgXDrBU0Z8ofDpLbOjTojH3Y?= =?utf-8?q?yZWXcrp5wB8YVto3ATtMIKhMZDyVDv1RGvDutNsdtCB/1TyKUshV2ai7BNLN3yzcJ?= =?utf-8?q?namuD9arlzoKEs0drbrYDL3YAuSMPFanxKFWEuXVGkYn1CDbrxIqobTF15MS5Nrow?= =?utf-8?q?4YV5oGUPo9gEjtubrtL5aKNHzLdGjSujE61oMiu1VcFNBSgF1pru9MY=3D?= Content-ID: <6EE70DEDE65071488448D2A2E2150190@eurprd07.prod.outlook.com> 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: cc74c998-6551-46c2-83dd-08dc6abca1a6 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:17.8023 (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: cNm2E0Yw/7BCmVM0/dJCqEN1fNbwR8vh6/Ysws4ba10XueKBgFDeZKBrpawj5yo9esvcu9zhD6re6Aql3xHnXMNpMZLBtGIhSJVPrFjvJXeCdqVxChk5POsDK9gjczMs X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This piece of code can be shared by both IOTLB invalidation and PASID-based IOTLB invalidation Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 57 +++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index cad70e0d05..85a7ebac67 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4295,6 +4295,38 @@ static bool vtd_process_inv_iec_desc(IntelIOMMUState *s, return true; } +static void do_invalidate_device_tlb(VTDAddressSpace *vtd_dev_as, + bool size, hwaddr addr) +{ + /* + * According to ATS spec table 2.4: + * S = 0, bits 15:12 = xxxx range size: 4K + * S = 1, bits 15:12 = xxx0 range size: 8K + * S = 1, bits 15:12 = xx01 range size: 16K + * S = 1, bits 15:12 = x011 range size: 32K + * S = 1, bits 15:12 = 0111 range size: 64K + * ... + */ + + IOMMUTLBEvent event; + uint64_t sz; + + if (size) { + sz = (VTD_PAGE_SIZE * 2) << cto64(addr >> VTD_PAGE_SHIFT); + addr &= ~(sz - 1); + } else { + sz = VTD_PAGE_SIZE; + } + + event.type = IOMMU_NOTIFIER_DEVIOTLB_UNMAP; + event.entry.target_as = &vtd_dev_as->as; + event.entry.addr_mask = sz - 1; + event.entry.iova = addr; + event.entry.perm = IOMMU_NONE; + event.entry.translated_addr = 0; + memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); +} + static bool vtd_process_device_piotlb_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { @@ -4310,9 +4342,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { VTDAddressSpace *vtd_dev_as; - IOMMUTLBEvent event; hwaddr addr; - uint64_t sz; uint16_t sid; bool size; @@ -4337,28 +4367,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s, goto done; } - /* According to ATS spec table 2.4: - * S = 0, bits 15:12 = xxxx range size: 4K - * S = 1, bits 15:12 = xxx0 range size: 8K - * S = 1, bits 15:12 = xx01 range size: 16K - * S = 1, bits 15:12 = x011 range size: 32K - * S = 1, bits 15:12 = 0111 range size: 64K - * ... - */ - if (size) { - sz = (VTD_PAGE_SIZE * 2) << cto64(addr >> VTD_PAGE_SHIFT); - addr &= ~(sz - 1); - } else { - sz = VTD_PAGE_SIZE; - } - - event.type = IOMMU_NOTIFIER_DEVIOTLB_UNMAP; - event.entry.target_as = &vtd_dev_as->as; - event.entry.addr_mask = sz - 1; - event.entry.iova = addr; - event.entry.perm = IOMMU_NONE; - event.entry.translated_addr = 0; - memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); + do_invalidate_device_tlb(vtd_dev_as, size, addr); done: return true; From patchwork Thu May 2 15:29:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930665 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=bW8NTR9U; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdHq5WNFz1ydT for ; Fri, 3 May 2024 01:33:27 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNV-0003mT-Le; Thu, 02 May 2024 11:29:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNU-0003lw-9O for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:44 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNR-0005yW-Nw for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663781; x=1746199781; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=XdRcKz4UzvZ+woWJhI3pztr087NyonzEBAqo9r9/ROk=; b=bW8NTR9UgNqYyzX22Hw3y5BmsUMRlO8godOXixOaok9txhbFcbmputxK 3iXhETOGtfbUrbvX5mYUPOqxhcVFcKO9zBOaUaSySjL08XLEbpj4TQBnJ 1Bh3+j5Ydnrbwpy8dzuOmNmUl2M8WpYJOO9bzXwcSd3mJ9W+QB6Tggbpp /pqdVgy/vpPQzdBYmNl4K3LRUoPVxssyv4u1Hx5+D5EdGiE2OLxjqCaqm wqenQL7RxAdcOLOTEk2Rjdz2r7TmyBfXBo80X8PMa3ZP3D+WXMnSrLpsd g1RcloTMInaPXBQ2bWz09bjoqoRGF4q2B+7CCDEa1ULwTf+Dfcr14mM+t A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785879" X-MGA-submission: MDFYmYZnZ2+CZm+r5o283xyc7GRQXGT9Zpl3xO+Mc16/pfi9PITnBQ1zUNYJk3jGmXfsBPwQuz/6sQ8s2NyZNwbKAEz2zY71W8KtBlbxIsNwQyfAfjLUe+MzrLTVKJhWsma3oGPdV4/R++KStbD9Xk2ACYQ1ERxdO9E1TVVfIvbN2w== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:20 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fka65gef2756AG75BKwb/UeE4lNjWZoeOHwruBMuQ8TSVY67tcxP9IVJLtqExzyDNoB1PB0bu1T9+mwvWJtWR7S2IZaSwyTvuZGpJRJkfpA6sN8fM3D8U449AB5wHHh8WuPa4DNd8H8AKJ+idZvneZYGoVr40Os9UT/ZpAPaOUziHT+lkT/J97gHsn04lD8MVSYTw78GFp8dGKk7ze+vWiod5LIJaQtmFpDO/Ub0daViKz7s0P/7YBKkeG/rJAbYkw12/D0qh6+8OcxtaaJu9ZcxSNls8NfaOy5cfDyTEgKjtUGSLMFPuAkakgeg/U/svKmO7Vc7uf0nd/dW0FHxng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XdRcKz4UzvZ+woWJhI3pztr087NyonzEBAqo9r9/ROk=; b=hE8Azm2pBfZmYQ+pxctKk7kz0xl5MwYiXLGoFmDcQ8f4SvB9BX1fZ1cBpmirPTeomRfrLcPc0QTKy7Knu9Ang7ZpNTP6L8qow1ti5sdRA8Za+lBW9NKqIjvCuTWgb1z38f1RrMilIDx0dGOM75IanYqHObI9lKHBxp0+HQueW4USnt58z9Y9101YzVIxIOxKHhEhVaJLzn1BqrXbVe8GSWO0baaMstFv9QOK6bTnu/0ddAUkcAN+IzX8QQVcxPs1gJ1YkN/anaEmTWiwXHBJGb9GPiygQTi94uidX0wZ8k3GmSVxhexm81bXpFvG05s8FphGOW9y3QO3fUvH+5iueg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:18 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:18 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 06/24] intel_iommu: do not consider wait_desc as an invalid descriptor Thread-Topic: [PATCH ats_vtd v1 06/24] intel_iommu: do not consider wait_desc as an invalid descriptor Thread-Index: AQHanKV/hE21IWhVrEugDPFECrFAVA== Date: Thu, 2 May 2024 15:29:18 +0000 Message-ID: <20240502152810.187492-7-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: afc943eb-b053-4b0c-a9bb-08dc6abca1cc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?KVmYN09m/5+2m7ibnI/sYuRnxtmqhwz?= =?utf-8?q?33rz8BZhdW7GOn8fNMMGBpps27qDyBxjFhuwZnz+7/koR+FIRrBDohhzvwYDFeyE0?= =?utf-8?q?GCaxXrPYICN0vhWopQlShz3gXFHMGjhwUEL03ADtseOuR3GqgeXxu2EcfJctJKbIL?= =?utf-8?q?bb0mCoc1+7R2O17YvQXaJve6pWrkxSf745jGBl21UnWiXx1Lox170OrYnXEmwN2rU?= =?utf-8?q?sIf2hx/s+In4XdDX/tQac5Rr2nMiDhYYrTORvZb+uiAUVRKo/KQV2UPth4xjadzZH?= =?utf-8?q?l+TB5c3U80NdlyUclP1+aTWavp0wYyyThA8XVe9ICD+VaCRskbtUJFNbSvn4ShktX?= =?utf-8?q?b2mSFJdqEkbstKhMrvXzZpf1W5EaOjh0RR7cTu8aeXjQTJHskyoz4SKMHQayDk2uK?= =?utf-8?q?1GkQcjkanGSayZmRWdFR8zj66xNJEFxhpO5CyaczRefJSPNmtOx8lGf1wQY2s4F1F?= =?utf-8?q?GZdy6nirCsTmGjUOAxanyJa8eFWPOUCivqKoGB3jYkZK3Gf9nG9qJuvSq0iW9sVCa?= =?utf-8?q?pI04/cBeBswY41BVrK8WqttE9VUB1JaR8Y6SKiZmXML98x0roa921wp1UCuKaprXI?= =?utf-8?q?ocl9Lec9a3dQfD+0+Lr68L1EYpVPUALiuIMdfvAftge+hrm2sk6397s499zMAvWh6?= =?utf-8?q?oGyvNQHDYUG2cp84wm2zdvCKENhk5zoB8HJUyxG/OuozMX9yxmEGOxvjBTnz3HgzB?= =?utf-8?q?RpGTrb7b0v5RrTryUQYKsE1O4S9qeRPpMjPQa8hwV8PDKc33LhIycVH0gVPPUtSd+?= =?utf-8?q?trtVTUM2tV3PT99mq2wEmhCp8NNXWYbXiQ6JXSzxLQbWhQC27pO1ocIWWQmj0wseS?= =?utf-8?q?bmJiVmUmSilrnIG7nXYYAQ2kLmgZw82lrRhT2vMEne/+xHm8MU4YsovyRvRM4ERb4?= =?utf-8?q?a3FgS16z3DiC4pcmZh5p2Tk/a7DBFxnekFW9VdkKqjZdx7qnT0K0I+l4rOC4zZiH7?= =?utf-8?q?soqXRqt1JvGM5SguGvzIqtx5HSb4u0x4Rpgfdy0fZdPkwh/yZAzmv5dfA22lhTz4m?= =?utf-8?q?HySYoqs1ahgLYAIGfoko4psAsC+ZTGNUAsF0LfJ/AEXM6SrnsenSpL+VhAPFb0LYN?= =?utf-8?q?9qxAl+6ieolwjlVlC3mu7ip1LJJYewe6TgnEr+CsY70p5QLYn6qGEeiwD23TSFtUc?= =?utf-8?q?5UsTMrOkClZ6kNFPtIKI87nmv8u4v0QJuSInb3JrrwUDua0sCbg+l59CRuqVaff6K?= =?utf-8?q?QjHOZKlUXqS4bftWGU+gLAQ6vBOznU2vAbjFarTER9PmlNOcTWn3JabzTa5ZHQr2x?= =?utf-8?q?t3YQqTsWrXWpg?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?LDYC496vyOOS59L0rGQoUU1AfuU1?= =?utf-8?q?3JUGope7H9vqIuSouSKIev9nxpeckYbLKKTtEH0yamLVgH/5eHmLWdUAyr1X+LN9h?= =?utf-8?q?BM1rz45z5AEq5r6TBZWFwHKEmmpzHAmveMHJ6cTgA5+pZO32F05zbtPYucBW+Nh/y?= =?utf-8?q?PcoolfaYJiNGD1BeynYUMrOtaqo7tmVD+Lj6YgsAbr/2+HNJCke3KX0wgnRq1q00g?= =?utf-8?q?MrZscrgFDfQltiPjLevNNxTw8+h+7PIoIVX3KOSriEicpj08mik0TcsPVD+OPx8zF?= =?utf-8?q?pHooLYCh9NopaSzXArXUq35YMn3p5mdfjmHaREHHEt6IkwW4LQdnXu/GHyV7jzq2J?= =?utf-8?q?ySVw3axu4CM5+Fk4BfEst4Q34bHFIuo3fSHA+OdpZxlBcw76yo3GGA+3jyUoMSiE0?= =?utf-8?q?cxnbKGPbifvqX/khqTQKtS0YqypjwuLg3BCnVUwCIrQ5USiN32qiRS5UWXKzWszki?= =?utf-8?q?WEodA9pAhCnO9M2eOazrmQpS0JVpK7A8THiLb1fYsFo5ZSb5li5rGn7z9Ehb65kpN?= =?utf-8?q?04QaX7Pli9MbqtGFK6XYHehd57nHdRkbh1s2Rt0vFC3t/kXLKuZQa3zNvI1qHiGWE?= =?utf-8?q?Ky/jeQuowxoylenabbjj0ou3uJjwI6BpkcVMV0BARWazVrsc4UUFQ01cqkjJynNOK?= =?utf-8?q?noHP+bioLgnD+C5RHOlADjgPZo8/tSWlNYvdJ020JRIMNw/WC+JDW6NgEsc7ZdmGV?= =?utf-8?q?Dx28DABf55j6I9iR2Zg5GxnMjzZHZTqvvAzrkOq4RcTh4h3GmP2tRTBw49/NLB0hu?= =?utf-8?q?Cgkv4py/2ptYdS6mNNYIufVeD6Hrd/Q+ggwaFxxOK4nVtavonUOp6nCoDDn/IQc7g?= =?utf-8?q?vnHjmpbbj6rcN5UT34lG9EZVIwHj0qavcn16KXVUbohxYKy5AXbZJ1fgSgzJNYOE1?= =?utf-8?q?w1b7MOFkGItbdMgaJxYuhuThgeDJ191ARIFf+2gvrqZO78jfVA8GKCWWA91+brVG8?= =?utf-8?q?COLvUW0pgr2HbxdmzkLafhKWct1Bf9SrK6/2+1vLODuiGrADCL2AQk8UbOGW7lroi?= =?utf-8?q?pAbyoXVprq0cZ5Tlm3s3JPQRX6mNfW4k3yAfuuGzUQwYOPHZcvCG+m5UU3/tZudAs?= =?utf-8?q?zvBKTJrNnW39rSI0xie6jGgz81eq5VM1noUWsVQjl1SE/EDf8L23iNHkLqlQDWXNx?= =?utf-8?q?Uqa5y6igx0ppYc2s8TcakPn9cSR1dhCttTdBuSqqzjRaii+CIpoT+LfXf6+Lv+539?= =?utf-8?q?nLNV/x+G+kbmaGZSSxg5QuKxHpvo2kkGbGS0tz8s75B6ZQXnAfuuTs4efIO8Q10kW?= =?utf-8?q?gBQfMMGweW9Vu77z4MfIe8gPImAEMqMcyZ3EbWwv4IcqU2TO9wmLUDg5qXnqtJrBE?= =?utf-8?q?X8KsBEn5kM9dzs5xxe488Z7YxMZlgcpde7QN5luF60cDZKtgFR42B1g6S8+DJXxHA?= =?utf-8?q?7tiU5mphroYA4NlSNhuJA1avsvrYcD5f2d1VtPGwN7ILzjBk4/aPBEIzJ3zLsA9sK?= =?utf-8?q?tvivQF6ZqxiGWeRpY7c11QVodMQQa5uXZKRCDi+59xEpQP/nAHOGhY4Sxs7/ySV7s?= =?utf-8?q?WJyliyV20INoKZXRSZ+JForshUwkY3Or6jMuuv+zrQPnCNHTNZ9Ye2s=3D?= Content-ID: <1150C7861368194F9FDDB4AA94F9EE68@eurprd07.prod.outlook.com> 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: afc943eb-b053-4b0c-a9bb-08dc6abca1cc X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:18.0512 (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: 8OFPuYCEOGtAoipD7JPbbFS95PpytgZVCb1GGjP53Z1icdQurrhES1mrVC19b6FcMwjrMBiqM+o8xE1kon6RNgXdrqGdSOCJLbn5XPYRF0pJH6AKHXA5z8HiXpbuBo0C X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 85a7ebac67..c475a354a0 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3365,6 +3365,11 @@ static bool vtd_process_wait_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) } else if (inv_desc->lo & VTD_INV_DESC_WAIT_IF) { /* Interrupt flag */ vtd_generate_completion_event(s); + } else if (inv_desc->lo & VTD_INV_DESC_WAIT_FN) { + /* + * SW = 0, IF = 0, FN = 1 + * Nothing to do as we process the events sequentially + */ } else { error_report_once("%s: invalid wait desc: hi=%"PRIx64", lo=%"PRIx64 " (unknown type)", __func__, inv_desc->hi, From patchwork Thu May 2 15:29:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930668 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=WV5EC9r7; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdJS2JS6z1ydT for ; Fri, 3 May 2024 01:34:00 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNX-0003nY-Jg; Thu, 02 May 2024 11:29:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNW-0003mn-Gf for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:46 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNU-0005yW-Nb for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663784; x=1746199784; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=jM1EHjhFLT2EkJoFivJljUJFgLUgd0qqSvusSb1EhyE=; b=WV5EC9r7I99sytiMrtXA/K4FOFpKHy/lcwJ70+AUKADv75bywd6ZTOEI 1dShO2YYDRMOkJjV/g01cMLZqvNX9pJ9aotCaguLlP3O25o/YQB5SVrRC ZDznfwOeKLNST2KanVC5W/yGLbeTGXfPm25he+qVjWQfQOaaDyHU6Rv7W KEh22N1VpucqblOSmfhe7yZ4hHDPPxU8IR461/Z64N1DgGwT/EY0tuNQY jGsp5byzMYl9L9HR/SRLUgdC+3K36uGGt4UZhYIEg8OL3RXzc9EGormfu TJX4n2qlY5tF7TehAX8UWhhY7oFG+JeFfPo6C12gRUVWv7UUTPtEuAoJr A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785880" X-MGA-submission: MDHedQyCWxBvme6j69c45I3Xc4XetY9H5xBY8kSfr1uMvRIsLYHTBfXl44jQ0CXGLABIPY9QWOW7oSIWck0iRExaqonP2TYYs1u0AI1l2P2XLrg8hBSLFsvM7Gph6ncSoQvtNjqnAFjPFKsZX472PWMei5I+z30HWnAH+dnOS6VWbg== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:20 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PpC/1Bd3Dsf1yT1rX2EnGOzyVWP6R10KOVvhOegzmDIZ08cVyUjRl7WQFT09f8sZELEBAGz0YsTBrXqmZGO+97JTAXJ4w8stApivkKy83oGl/kzyUThhuqId0VonLYmE8ps2+pb3EvDN2H9Ba7v97faJwvMYQoplfWRPmCfUrFRTBn/JUzG0nVvg5YPAHJmK9VbBtGK9+nz64/0T2MdJVinZSdMc1Dz6peNaOPkU4V8NUr/gNSc5+pJXMbG8KL8Op99VQU+QvO5xMWRC4XeqKAw9PAOUsFo37Tefj0Joh0HXKP5SJUEoR8QxMM6EAMGxshl47t0DncLfaoN08NcItA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jM1EHjhFLT2EkJoFivJljUJFgLUgd0qqSvusSb1EhyE=; b=iWu+Xqx2xAwRWOttzuLuY5ueIdBbcSC73BiTa1iXlVWbPSX+L7ygVM/2wGuYXk4wlqxXCtSsADGRVI33nIdglVxx8zjt9vJ36mU6reVkUAl/bFuH7iX/1vaTPOaw3hYFeErWAjfBBBlO8wFhO3MrZqezroKxsUHQmHpntytYSeBOPQwSBxp1xmRVD/VqYiH83Ep6VlIbCrUW5yLEcX63JQnRLACKn6zr3c+Raqjm7vFmFfucVS8rKJ47GZ+zbe+oZGyCdRTq3lSfcYDGrhowZtOlMdj9spx5E6wisnZ/d/DAoaVw7BTUYFbxcYO1rqjLdOa1tF59aycGOMxWkC6Hqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:18 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:18 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 07/24] memory: add permissions in IOMMUAccessFlags Thread-Topic: [PATCH ats_vtd v1 07/24] memory: add permissions in IOMMUAccessFlags Thread-Index: AQHanKV/BkiYnlnArkGPo2DOdz2MPA== Date: Thu, 2 May 2024 15:29:18 +0000 Message-ID: <20240502152810.187492-8-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 0dda3ad2-c5b3-4776-caaf-08dc6abca1f2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?TQmZymgModJCy81OtQzAgFpHhuUE5n2?= =?utf-8?q?pSXLjI+2P5a9/LBCpwoxPydnL+Z9aQ5u9P+gOVHQu84xYGg9E/S8WtZ5XDbveYdbC?= =?utf-8?q?D/kMmS8WTa8r4RGdNnhHezZZZrDEFF43CCuJt6iFLxom/RTG8ntXi5bYU8FpHzl8x?= =?utf-8?q?qr+97t3OMV9lIZXljUqe2hi1aDwB33AopkDG4BYCpncZY3F5lDtFcq0edUVXHjhGD?= =?utf-8?q?63hWi+sLj+3JJ7bHUDjMDMyUROGqhrvmdUFVWwBWv8ixjbnENYz7dRWvE6vV5LU6N?= =?utf-8?q?2S+EQ55GGUJfdE8Tf75hJTcDxeNDZoAJqHOI8lbWSyvmCD1fltO4yUoC06CxnM7/E?= =?utf-8?q?yGVYzHaeDaJbyIO37a8+sSn4CQWvCFsDBGqSI1kKNsJfCjM4XnGDoXyGB7hrNndkR?= =?utf-8?q?nh+hFcmr81ZNmDWvPQi4SVKg5rpT4auHheKKAEDZMGl1OVvshVUJWxDUHhjdBSxu5?= =?utf-8?q?MhGTTYmWLV4/N4fe0VXAtVVVTB+wO90vbKsDI8/VvRm1QRTrkH/gv9TPvxUQleagD?= =?utf-8?q?CBFA4wF7g7qZfmTJ599Qs0yFIQrWVNS8r3HvyMbbZrHWNtq1gCxt60/3MdzRzHYmi?= =?utf-8?q?9FLGmavF7fJKEZXjbF4CE62EvJ33Fv0js2OwoIwKjBDXg3jfSFkEzrTW56WI0KDEc?= =?utf-8?q?OhZKX6v1wfn/4JAyDPI8HFxG4uT5mY7ExCyNSYotsbbs/FxN17yIpUI9wkPVb/cSG?= =?utf-8?q?9naK6NWcy2wRjraYzZn3bDczgdtn/mIC44DbC55pqgp/3dIOWDnfJOLGwm/azVc76?= =?utf-8?q?T25/ZMoc3iYoNgoehB5AWpBYAhOGsOJx4pkQOQhBVi3jVbuqMZkYHXz0MgbZ6IK0y?= =?utf-8?q?2drCTgyHwgO+DFKFoD9HT7rUsrnQCxMEoMT1NxvZhzlvwd6Wkld2kbSpnmlIFYVg2?= =?utf-8?q?EaD8sim5h60mA6GF7QUqxvoUHOSrgl4ly2F6UIYcAdQWU0CEvmUbobALMyh4BWgtV?= =?utf-8?q?EyLdvV6g7L5dNwhVD4XCEO1wR1x0goxRp93/vVIXgTfCpRdbQSm19PJGhyylaGdXn?= =?utf-8?q?inwP+6KW9m+Dh1XCUWAmHJFIrVgB/43yzM9f7BJldyqW0EoUhDQFLtPIhMU1n5/EL?= =?utf-8?q?jEnpwRfxaq/F/8Pl31SCCvFzG8iPHzhhdDBiLTpnC+yHPajX8Gw15RORq9PljATus?= =?utf-8?q?RgbEhuT8gJiMILA31KbfQZVPTvie46OVOHp5VnfFsAf1qhKUSY43Peoxs5RGp+dh+?= =?utf-8?q?yCFm81z9YpItoZ2Vui+kY5KKgXhHBfSaj0EioKSYcMg1O2aGBpro4F6/XFiaF/eUL?= =?utf-8?q?MO3JKW1bg6Bo6WXh2k9D9nkIv+rkm35VWcw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?OzSZHiGxu2+2rMh0Aulc9BOdINjB?= =?utf-8?q?RsgNlan5W7WCDeF9LRKF4UceXRuB3Awy+Qb0SYpd9ZBjmKeSEvGQLRXkdpFtx7nbE?= =?utf-8?q?GV9mj6C8Yxz3rGA1oWgtFot15rtGHdiusmL8SQVg0MEzTjHHYiXpoZU1UX4U7dFBc?= =?utf-8?q?CKYn2diiguEkpNWZiA9QXLpKXopXf8Jeau07CP6epe8/eCJo9QPHi7LXWq6GHxh5D?= =?utf-8?q?VYBIFWbzDJVkONzUISZ7nn1CMguNSU848/T0Epl0GTYgeHo8OalfICs+/7g0EgHNP?= =?utf-8?q?gQIo/pJYz9tlIb7PWQk/atBqHGYtrvkCWajpbY5kFZZ0Jdjr9vVJf7PlWVLxnIsNc?= =?utf-8?q?dnaccyDA+q+xeLtzuCH6oJYUr4pj/EKmWNyybJNpw1W3YCPSQF/yLZ3d93D7V08/B?= =?utf-8?q?izJLwSrgBHpsHjXUeaucZp5F0lqOQge/gOUHRADA4ob9v+jg357oVcdb88riQJMLl?= =?utf-8?q?tZQHuoeMHo8Uk6iaqvnIXo/YaRq4mZgm7n3ThQ1XDBAHN1t9pF5e4Z1SmQfctdOIE?= =?utf-8?q?zcC5CrsmrSVq4G82AmAdVqmLQWX3A1R5t5MtXScU6V3Wphd6Y659h9WAbkuDparUM?= =?utf-8?q?Fxrl0im5suTjjYiuTB05H4GAJPGuebes6gp0Oth5IcN3Y5TNb3I514za5Q885D+u7?= =?utf-8?q?5YYWuifgnxA+DA+ufFdqwq/qkfKN3i8ZXHpQmn3tp4RMHAyAxJVNo+dx3d7E2FsDo?= =?utf-8?q?4NlH/pyrgcjuYstEtw6NOcxfVr4QQ+HW8HDdm9gpkXBOv88LWyi22oqJkB172ZOHU?= =?utf-8?q?u1XwWKY7ZcOwhTkeibf97by5k2PdK4Fui1sDuoXH67/jPn9CSMxCa/xOn+zwucKW4?= =?utf-8?q?gGlMAz2HT9m9hDo0CaYC8MmLWOX3NXc1ydOs7Uz9O3o147ajAKLc0CGcwsSpizOe3?= =?utf-8?q?gRHylpjCixpuxhf7VtumxTp5SJQZ+6wKImcImd4MGJDkEwzlFG6QIK7VeK5VHwU9y?= =?utf-8?q?dPKYlYpYgHddglDYtZ0JaHmiEnbTUTe22jukTUTrEglopXngm6TmVgMiisbVuybKH?= =?utf-8?q?7G4T4fJznlF6OtTnqMQeLVA/rEH6m5u2RWWLesiiDSjqHf6QRmM04QL7i8VBO1d/c?= =?utf-8?q?r6XJSpBsyV6J/sGz6+YQtILM5eMiPz7NQPwX/YnM9cuw+gSY7bjxE0Qo0u45LDljt?= =?utf-8?q?yknbUP4j3nR3iAWUGOrUfMbZc9tjYo5Ro1YyLOj5weuMu87HVODRtSNMq04RRkF5A?= =?utf-8?q?2rvNTRsjL3RCyzcmPs1Nm9j7lTn5uVJ87orWg/hCoAlnEYeg7yASh+LU3ZlWACtxM?= =?utf-8?q?aVwCyWe4GECOuWviHYOA+GALDbmT9Ekotfi135t8Oh9kTWCnBP2UVYKAivyi9p/KV?= =?utf-8?q?TBICd7XVCPgRuJiOeWGeb0QOTnAXWGHC/gJQ7qMTOOtKUGletolTa2qhyj8GrubG2?= =?utf-8?q?vidEJzH1Q4lNYPvzI17QBHHyQMiezORov29230Q3795bPqUXbetA/NQT2bhU6Z+oh?= =?utf-8?q?WlEj4gyqWy8N1wtm+SckDsJ0f4NwY9eIOUEjRAZnJg8cI7yX/pCoXFzi70bZe+67y?= =?utf-8?q?/QQ4VcSwa/tDXzuVuZwpe+A3i+KuiKkSokubMOLaKasBOjv7e3GGq9k=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0dda3ad2-c5b3-4776-caaf-08dc6abca1f2 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:18.2838 (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: nM2XyIYeT6yRO6/8eV3+SxoRXwiBLj0rtfNfqkgX4P7KqPX7IzL94on+2FYCI1XAaQBRFbqXJ8pSCAmTjrpvqdUhLu7FXHdt2dr3Q3+cCokF8j+zpdgE5ElV3CGNFApG X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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: Clément Mathieu--Drif --- include/exec/memory.h | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 8626a355b3..304504de02 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -110,22 +110,41 @@ 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; - hwaddr iova; - hwaddr translated_addr; - hwaddr addr_mask; /* 0xfff = 4k translation */ - IOMMUAccessFlags perm; + AddressSpace *target_as; + hwaddr iova; + hwaddr translated_addr; + hwaddr addr_mask; /* 0xfff = 4k translation */ + IOMMUAccessFlags perm; }; /* From patchwork Thu May 2 15:29:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930664 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=b16vJBOm; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdHl084Vz23hd for ; Fri, 3 May 2024 01:33:23 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNY-0003oF-Ar; Thu, 02 May 2024 11:29:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNW-0003n1-PW for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:46 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNU-0005ys-UQ for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663785; x=1746199785; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=9FxV2pX7chRK0bdJDSW+G+9YHH7CXug/vkDSNtE3+PE=; b=b16vJBOm5WRvRuG3FoKkAQBiRcdoQIORmpPJ4VkxQLSOlyJW0e9i1zLD Qap56Z7FwEaSJZJmVPcywKmOk2Lx9wuJJVSFLQ97wTXv949gFeJTl6hsu RU5iR4b35dCMHBRsZhYE7LsbK+WlK3OCl+4FHum18w95FGYgqEnUZZmVI UByBbv+Uk6FhmOU0RhscJvOkWq4WzFTR1iH/XLH/R71e48Jvl8JYVvovV TfYM/gp/ii5LGrz4daDxUyPnN+8OVbi+NSIsPbdOUNRtnpY80JIOtUx5M UnvIgyc9h5EVv7nbhJ/edwhqVuDBhEQGZfs9/V9cvmWp1KC5+cPDF+u1P w==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785881" X-MGA-submission: MDE4PCaUBIkpJLsr4UMsDamwzf9UlnKxuQ/fll2Wy2JUwWj2Vqroy4SHbVKDn3bqwBJWs9vQ1v1moN59drvqAQtyIkoi/POQhLHJjWFlO1/hcne83scLVjihzayxK8EJTs1ZAHXLzH/ZnRC05NeeDwJrDUDq04nx0vMD+9Gd/X/oAw== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bn5vAuldfbP+LAIst3Z8c6bfATUo2NTQoVAjVWPItnfZMazQA+IWdQuBlV9I6bGSL1u4jh2z2HTszVmsajjy9hw3Kq4alHQ63WWzYnzhcBhTVn3IiDaCXNX/RWQE2RAu1rGi2F5fOmhbisKaVu619F1WCYszGtTzGk1h/Xi9mADXXnpjeoz3iSzdNllVnukg/+0sEfliD1lGIoTJMzLBveBN7dibRoNRYYkfOIoG6CUXB4bFFMZqYL/AeAk7U6HkB35rNCO6pFjq0GnJD42byXSx3w59MtrXRUCE8syGrTe3GMEhDInCKEj/SZuET1Bbk+qcE4X4dicQI6svkFgM1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9FxV2pX7chRK0bdJDSW+G+9YHH7CXug/vkDSNtE3+PE=; b=ZbFmmZObTOlj69jZKyw0hPOzL568tBVOk23+vsKZsDHBKxO4/SRdN38fQZLXOX7ZKwnhNd1yoauPSTX1Xt8pRSIGhQlGEiRSGrC4LqNLUZdi9xATo9h4xdrClkxiCkQzLGasSPGPXtLlRTEZyQBLrw3Dwsu6lwNr4jFqQj0LBIX3Jlup7G3+aLUHgXeIcz2DgFoq/Xa1vBYUTQpzIaTCjbIwwRW2qD/t+7dxGtgi0bjHNB5mA5WKVLjU0WMWVZ82/WWPPp2y63ouFmSJwty6PPigtDq+QJqmhJRp+c8Ahd2eiIaQSxKfXQECkM8u1TD5xp5A1z0qT2be6pEcQUQSCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:18 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:18 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 08/24] pcie: add helper to declare PASID capability for a pcie device Thread-Topic: [PATCH ats_vtd v1 08/24] pcie: add helper to declare PASID capability for a pcie device Thread-Index: AQHanKV/ZpfW7p59SkGnAmV2rL6amQ== Date: Thu, 2 May 2024 15:29:18 +0000 Message-ID: <20240502152810.187492-9-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 7a3182d0-e6d5-48e2-f6c8-08dc6abca218 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?fyJTLK0Or42BIJoMRK+UhvzQBLetRHp?= =?utf-8?q?OzgoVEvEa5sHDsRQoct/nzmUQAXj6nc6mezlIaJBAoPNvg1HVnhPBpHQpPNLUfzWB?= =?utf-8?q?wdMRJJcZOKPEqjiaToNSXoALoD7kpNtD6bZE95vTWo6QlqihxSizF4l253khe5Pqn?= =?utf-8?q?j79fU5cmvxQfBehVtZRQ7OS5+E8xYHdj/fh1/LSYzVxM1HMEskgHhiSjnz8Ao7ehC?= =?utf-8?q?mCzUmKxOY9Cd5T0+rtV0IKeO09yZ4YMC1gN0xk2OVbyPDXs4I+Wa48u2v2ztjctpQ?= =?utf-8?q?rw8jNeJXy+rjK9qFbRTpP+awT+B639/9KIBbpQQcEGWDvi2rnwgNYB32mjesoqma2?= =?utf-8?q?4wUTUqoN+xF/Am+U6tSw5sSAZbsb+Rdk3xHawlG9rb4tQ6udA4qEIopdvRUFOqKll?= =?utf-8?q?/53VFNcgZgZrK3uKRssKpRoe039n6LTIppV9ZGLr5f1hYxdrieSI7hekCoAzdTon0?= =?utf-8?q?Wgbs/8LWiAy7JRLLpZx+Rsa3z80hxf/odipKCnMPkA9aWGXtVGa8yQ0XfIofu42Z3?= =?utf-8?q?+7yUx4hR1Ftds70whRA7CFu3+/9VlPimRKV5zxJ/fLPKOvsmtffptT5D9mMPhOTJj?= =?utf-8?q?htJpugasWPUfYKgtW7eWa69dmfZQ0DY74udIDbnxYNwKhGSnpcJWsZD8hS3EgDW8I?= =?utf-8?q?jsHeg1Yg4oeube0QCgAcQf25c/+IkhFtfhDDbmnfh01Hxpc8ysS5DPeG2ruIZgOkr?= =?utf-8?q?U96F+5DO/zaP8PT2M9DPpvbN5cAnM1jz3ubxJrI4ue6Vz+NRPVQMZmWb5IdurgafE?= =?utf-8?q?BqfaSyJYT7C4iZk+EKU3sENduUIq37SNcMpS5D2V7sS/ayBN+Bd0BwNppCXVSsGHV?= =?utf-8?q?eRaMDet8Npv5s7f1/vAq3Xd/bF5TBtfee1nFa8ToW9UXUgQJsogUv5DIKICh/rtgS?= =?utf-8?q?hg0QETQthqKCSUjKSXcwIgfyy2a0lY+l5DWnaewOXcqUEv9qsQdoxA37y4gKv3+xP?= =?utf-8?q?r271dO96ZkBNjnmyrSrzEd3TAUpk+2AfJ1pu3SA67iaFepOWzblnAgxJX2uQeEwEC?= =?utf-8?q?15+dae44lgXyNM43ByOdbCU3N8RtvPO7QFldzMUQlkDEI5KO4f3LlQwigvFS4lkzf?= =?utf-8?q?1S2G17tfSlJL6iNSQVm0DaehelqbEiU5wZw6RMNHjSM4AfHsnVANln1Z8SwZKZVRg?= =?utf-8?q?hlA2zStlqdqNP/2dUNovmsxTyzwLmJaqmipEALlpmPvfFNsWhZQIHMAuNZC167msu?= =?utf-8?q?Ld/dFaZkBkkQxaXfdqlb4u0Fz3YAQvaI3XMImZa/1Ekvm+CHDXrZlagMLC9e/gRfs?= =?utf-8?q?wncC3z8jPcIF3zBSI/Qqj/lTOPa0xEJlkVg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?RNFQZsFOy1GVEnLUoLc24PK7ESOg?= =?utf-8?q?Gl2C/67nNezHv7LXboZQPziU/QlIxvscJyR9CfvdoOgHdYwBD5uTpRwVMgZVP4gKb?= =?utf-8?q?tipt9o7plvOMy542oDSCTzgZ+hjvO3tRwBwmT72yTEKRNORriSU/HF3XqUkDaX3Y3?= =?utf-8?q?uFAURMBv0Y1n8+ZFjOx7JO/ed9aGwLA53WJb1jJjNjdEBYDOR2L91BEjUOg+YF9h3?= =?utf-8?q?1eWo1nhIeFaf5QPrg07kauLSypSiCL9nU9zmeo01o5qT/y/f5M/eTsbGgIaHf4EmO?= =?utf-8?q?AyumKZUs7Xn3Mqhh5vr6nMFdCqO9ljSa6YlXlFsIY5sQAcKij0HC95h10bxaiO5tD?= =?utf-8?q?jUO482tuqD8GhyTG2pz9VJtWir9E8IJUE4ANHJoKcd/G6P2sBlNOyuPVwBfH4HV+Q?= =?utf-8?q?Xqj7r5NgTSiOUFBiykSa9AQlv45jQPKWbit/VkRxDNw8qsIM5Ax7VLzBBSAtZLGr9?= =?utf-8?q?6udpwhhELdEUY8SKsn0K8h1EFgXjI9ADf7vvtTrFnsXPbHTX68Iielz5sMB64rlHF?= =?utf-8?q?clHHGiBZrMMZZpAIf2TtJdFfXkbpn/ZDituSLapmHq+Ulj08/mpTIPXsfJ/KlbJ3k?= =?utf-8?q?Cy+w3Lei1lV3LM8cqJS9e8xOitbbn5pOvC2iGlN9d1p3QrveH2f4eNyonZayLOi90?= =?utf-8?q?983E+H0sPb+xX+bYyKJ0fGQN9iXIHkrPMc4qRhaUehY99sVtyeAbRJ6Hfh0iY0l3+?= =?utf-8?q?AbV6ZLF2plZv8aXpaFSFtJJylSVlumiODw1qNI3u01twAzRfoKQHJfqCIZRlJljOr?= =?utf-8?q?Sv+rdLV7YFfXve5lOBLXx13CrYeNI9D7CxFoPb4Zk7q0WLFXJf+3tjjwHNyhiX1ob?= =?utf-8?q?J2XRDFP3kU9jErUPOWflKkpoTolt/gkPXBkf++MtWv8b/T6tJ8T9qUMuur7Xy+uAl?= =?utf-8?q?sJQX0b2PeDEj6rU7N/61w82t2w/lPuFPZhHQtfMNKAtRhhVpPpS8aeelhXWRHsrUN?= =?utf-8?q?G4YyrZmibPWhkTD+0XjnCy8pZ/ra1cN0vRqFKdgT6nv6YKxALRfAhhLPnrVw+XSbL?= =?utf-8?q?sDKmmyV7dWj6vzdQuo+Q6gsDdIOPqGwijy9TTCqRPCFh1TSgRd0M1JcxHTMDUxu5L?= =?utf-8?q?WpMoHCSv/7t1UdGtam/tqo8aUTcb8kejcdgk6klBAgA+6W8kg3UXa3pLfNaQ/6Mso?= =?utf-8?q?2GoNI+a3e6e78POgzFu+kgkgaPCGiOUvUXA8fGnju5kvVi9KmaXGa0IsPDZd1yqHt?= =?utf-8?q?6cJNnVwBYNXXnsU529QzGzwY1MK9pUyXSlKvLvmCi1+ENLot/N1tw8jiabwdIYBCS?= =?utf-8?q?wKRYOmmjpqikvdP77+qHM7Esk7SmYCwwwltNK/6z/cjhnO6j1uFaWRvfMm7HJ3ECG?= =?utf-8?q?LGsaJL8ZhuAJP0xwbsFQWDsp/gVsmBn2vX3n1N7n4e+s1szTmXh8RoBFk69HNWszv?= =?utf-8?q?H6jSZkmJVpu5czSRa0ORd7vyoQA2vtWp1DRZ3y1YUxqVn72m5fZAecKhiIC+BMzgh?= =?utf-8?q?hzgQtqY8t071FQKoJbdF8xRLKBsd7+h9Puz7IjoxnTTBn8ysPQaHdkGkexgGnWQkg?= =?utf-8?q?/jmuOXt2sOuY0+Rt4sEY30jMlM8J6XuWZCiuqS/9QBLXMn31j6I3qfw=3D?= Content-ID: <750248B27314B54590BA69815BB74B75@eurprd07.prod.outlook.com> 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: 7a3182d0-e6d5-48e2-f6c8-08dc6abca218 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:18.5251 (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: l2xVAx4F+S9BZz+OtF2ybYERV0A6uReOqjyYMkvf0jr2BMQKAQCkgbiq5MJ6ooEZBwHR5DUBppuWTfGvFok6XuSY6GiFIcYUFLIVfJHTOHiKq++fixVsiv/OYISc9p5M X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pcie.c | 24 ++++++++++++++++++++++++ include/hw/pci/pcie.h | 6 +++++- include/hw/pci/pcie_regs.h | 3 +++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 4b2f0805c6..c8e9d4c0f7 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -1177,3 +1177,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_EXT_CAP_PASID_SIZEOF; + 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 11f5a91bbb..c59627d556 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -69,8 +69,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; @@ -147,4 +148,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..0a86598f80 100644 --- a/include/hw/pci/pcie_regs.h +++ b/include/hw/pci/pcie_regs.h @@ -86,6 +86,9 @@ 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 /* AER */ #define PCI_ERR_VER 2 #define PCI_ERR_SIZEOF 0x48 From patchwork Thu May 2 15:29:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930650 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=J5pNvBfg; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdFB5dNFz1ydT for ; Fri, 3 May 2024 01:31:10 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNZ-0003oq-Ef; Thu, 02 May 2024 11:29:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNY-0003oK-G6 for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:48 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNW-0005z0-OK for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663786; x=1746199786; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=zqR+oUgPhCm/33BfTla3yWvDsBBPd/qhyF4tDdgXLp4=; b=J5pNvBfgORB1KG4b0iFeiCCD6i1byLAxL0C2cq690EDmY1QWuZecWp9+ ZjI5KgOjzvGyD4FTHUPqdL654H+JeBghhQBbmtfRfpcyRvHI9HKRhVXNd PY546j71P7Pc0OM7JNDGT1FD8I2dLyhWpv+T/Pn17wW2d8EJtLDOJYPiE h9+La1V4ianjpMGPQRx9+btrTdKX0L8QYvupn74ezkdFKESvL4EgWm91D eApFLO96MzGF8MfG2e18TTPXIuLdkLHq9fO+RJ3Wk4jW8lUAHIHJI9hwQ dPIv853L68LmzX2IyZXFCOatpKMK8Cej8Jy1h9xCFk413kqqJ3VKLQor6 w==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785882" X-MGA-submission: MDEi3xao4Kvt3rZqQl4rQRyfQwqymbsETIJfFSAaoA+1VbM3T7iHtqPhbP+zUbYLC/o97e1jUw+fyVau0/Ayt38ApENTFzqxboxWJ7coyKQaSv1JekeL3TQpdpAWKET2CJpPhJWKRFCNBquWGUQ4Cin8p6CdT7PQp9vAU6PaDQMOeg== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BfhgJobScCgThDBrbXxtYrx9BgpCgCm0bT14JFPpdhRiZr7efy5lparmiqvtHY6HuzzbUJmj1ImG6Iw/KufC7pHvevgydS9la9RRTm+xXdz7mbg6HcoNJ4/LcsehQ29z8co68yhq4bXZ5IusVYDjBEGaPgOThtQUi62kXENmNTfuctPUQqff/ek7OUZkR2j4IgELx+JiSDKf4/U+efygVZDZPcso7cSJ6ZeXVJHc8lv0hXhZFPMIti8M76PriVj21nAdRrOSeTrWv4SOXv+9eWzplojQi67wffVqZydw2+kwkrC46FJ2mjXtrd7h0b+oFiy4oG8X+BRMfXKOu5Ti4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zqR+oUgPhCm/33BfTla3yWvDsBBPd/qhyF4tDdgXLp4=; b=ETUIJlqWVCWulWE0lAFJ3O7OQNxrYVm1509sejEMRDtxOCtbCU6eLZ1gigmvOflaCn3TyvF2UKKJeZA9CNK3ltK7r+BlZwegrFC4kEkibde727Te2b34gZAMkcRvxZTyVEgxb567Em9uYrSjxmzxrPYU3qdeXDLUxKDJ1gCYQ0QHarr4CGR7wfAVOEJkWplevA6rgABH1DvyKbg6MRrIzp5lE2DvT2eLKYXsPUAQ+plkF2IxI52L/JDGf6vuk1q7cQIqycEnqPk7bDGYLsfjwTDBBhv/rz9QlxaqfZtWmrqmLNiCcIOPJSR16y5JfZWZH7YP8bquV6mYpwt7ZYDrVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:18 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:18 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 09/24] pcie: helper functions to check if PASID and ATS are enabled Thread-Topic: [PATCH ats_vtd v1 09/24] pcie: helper functions to check if PASID and ATS are enabled Thread-Index: AQHanKV/PXYNdBYXO0q7q3BlD52Syg== Date: Thu, 2 May 2024 15:29:18 +0000 Message-ID: <20240502152810.187492-10-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: bab55448-ca26-4b8a-44eb-08dc6abca239 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?UoCcvHX8hwRdac0rKHig5GlYs0PK+mM?= =?utf-8?q?JdOBD3XPO2CUCUAxLO8DfHlFNcYU9iKM86njqYjV4rbfDnx54OnGp+xTc0j/fn2EQ?= =?utf-8?q?mZT1LIxElv/1JA362epLkyQR86D2QZgCVPvrmpMlR4PsIKT/IXOsgWiqZhxFQ/Xyr?= =?utf-8?q?9W5LgFFHWL9VfJ3kBcUpmmbi0YEyv5eD2VsKtFidHpzB6UcNUmMHaKzVW66ySY2yP?= =?utf-8?q?eKJzhjPIyA62ZX/5ckneQUNkgxyYsKuOyY67D2efuQr/5aiQKAEzxsNMJfaMKTZRP?= =?utf-8?q?kQTntpmKyQuCb+PpjGQRtToazuxRhKf6BqAKUUJgYXy8DFGLQ8fPaNyPjd9WErZxI?= =?utf-8?q?G3FmxHZQ0ynPbi6DPF4jVGTgZAGRmM5PYsfOjI8JYOBms7tgrR6pmb9TJTZaKlc4z?= =?utf-8?q?8icim03y7JD/hfnJ4dw3Y4mnVvFJDCUDaOOAymw035NhEpUb4382Mv0avtvoxFWlE?= =?utf-8?q?1OldKiVjne1gJ+nXRbkQ+bMdjbzdVnVYOWBoaievbULHgPzOzPrWYUojmCZv0NKtg?= =?utf-8?q?EjKmRcinzE0LhqTB2s4rYwY0cczOF3KsNVanwtGlSoKstyDHBZgJEoziIcbiAz/d0?= =?utf-8?q?lP5OhlEKA7Iz0InM7x7mVqfGwjZGR8LH+eDT5Sr7dZyQrMzQQaQRieR+AvT/JrJaj?= =?utf-8?q?gvXvD7oqxRJjNUz+s900L9UrtnhsNb6YX2izD/iASA5iOO5oRc+l3FnYZ4WzHIZ02?= =?utf-8?q?8SNXInGKGudSYvZyCDrBlfgsmf5q/TRQ7W1ZXf30ziUg6P1VPLY+iDJE9hlMzXqNq?= =?utf-8?q?Ag2vr1r0mL1zf/8yC8ne7r9h3s3MwPFkjcjA9gejRz8NOI1SjjRrB2mOShMuEl6hG?= =?utf-8?q?OW34N/OzRM5cro9TZ+UUVvMgNphjH1r9YCYkzyhEB/fj1kAxbYAWH0pKmu+6xZciI?= =?utf-8?q?hYjiTtkKx5k8F1qHA2v2CrTSgdQY3V32oA25oURaGh3GDq02HJJTgqjUEYaxOFfYb?= =?utf-8?q?ysMXhZeAElUMWQ7V8rzW5orix+iygFwuBEu3utf1YZtd5XLBvkEVY0gbjbobmVjmN?= =?utf-8?q?s4RfANtLzkNv2ye4r392AV9iz6wJy6bLtGlm+2+BEpIUSr/3fD/zmS1bM2aP9hcse?= =?utf-8?q?Pghvh2WypTvkWdJEO9KwjqbNHQ0D7aZH0IEJhO0x62FkgzOXaDPQnRFE4CvW06VQn?= =?utf-8?q?5tVOnWpbU/UD9RVH1zd6ppFvUTqO0iUe6q3rGVX5itJxQ/hfl/rvzSe/qROmlBTYl?= =?utf-8?q?RSTxuFUGkz8XE6ETO7ptoUDYQr7XPyr8394Cc6r9wkAdohWyNRJKot0d+8LsqPfRT?= =?utf-8?q?t8OtpQcssXneIrcCXsZXtNwk2WrGGnZQ+gQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?qxxaYBaNjnCUXXev3c+NZi3124eq?= =?utf-8?q?ic3KOIZw0gLveqoo2NPwfuXbUz7pFaxwIbHHOlWLCRhx47dZjihZu7Zi0pZvUlOUf?= =?utf-8?q?cNlV/niObtoGMHewqdivWnE/GRL9g6UAeWUMN80Lp1/oOivP7SOE1pVSQ3VvIy3Jb?= =?utf-8?q?hxZ/ZoNvjf53zC+0p7dxVKe5bZZN0gqkL7POJ4Jio/qk0HtievsV929ztpt17OLCy?= =?utf-8?q?lDg/IUK+adDC/HkfcKFmhIZHK3mKxw4xaoVQi/gFP4mQpWE31ldwWiSzSCTxukPv4?= =?utf-8?q?gejUvX9i13HSBSti5lYNCSf9RjPTdVkacxJyxkabVAR99XILgfy8UZvwCQt4xfxIU?= =?utf-8?q?OXl87M382uCbX8fm3JFUEcYUC2J/p/fg8VhDgY38Bw0FczUJ9hPj9C/CF/I8dtDVZ?= =?utf-8?q?KGsnTKn2e+xKNNeKhL3wf/qEknUZAvmnJEQ8I9GO43uy7LyhhIVoJSLn2zLVHFdkR?= =?utf-8?q?DENB9H5Z8l6whqBTIvXn49oTJ1uQwUYYeqPPlZ4RiruGrGrnIdKfK1nyeWfZQWSAH?= =?utf-8?q?gWzRu5NzAuAlV+20YC37ui9gT4hpOrl8AYzHS2pTk+O5J7UskeOeIms5VQExQLrwo?= =?utf-8?q?0QPzwdsyLyyAmMYVna/F1nypcNOsG4d7s4Yo3IyoYz6wPu1uut4kmkqdAiXOpn392?= =?utf-8?q?5+M9NuxwPlNZUjHls42hcPLHkSD/B8z1Wif9ngkWhSzk2h+UzTqMLbpSLgiyBpM9P?= =?utf-8?q?o2kfWaEne88I1dIwqNsLbPvdWTN+zb+4pnTVCwxIjsdwFztq6zMhKtrcKjikRXstU?= =?utf-8?q?w5ChvKytlcAvzaq6xXRmCLeDGGzidlHCOJh7QYhjSarzV+n4Rl2jPbEpwgA/xUUUA?= =?utf-8?q?g1RR8yT41j6Whe6JGnzrcfaLlF/wlbxjOt2sjQjUNMNyfq70YrBMnLm4J2ZhgA1tj?= =?utf-8?q?fUVMK5BPC6SLKSb97Sj/ssqstxMN5AOBPPGhxsEsFeenwhReRkJfWZR7qd5WQeXp9?= =?utf-8?q?tNAZoP9NaxvgSDJP3brtbwThvRSoGjFBr3T5iFQrA+1d1b6RHrhyLGCc7hY5VyQiD?= =?utf-8?q?05AuUfbN1bMHDi9a+ONChWr62umTAtyAXZp/TYCTXmHz0ZJsuMwiflxvfWLZcJ6Nh?= =?utf-8?q?JZonRZkx6Uh19neZoKnP3h37VuSmsdLzD7v7wL/DHvc2xP+88IjRNII+5uZVPcVan?= =?utf-8?q?BNE4cFDlWz2W7ToOii7sWArPCM7Oohg+2gNMjFFyvH6DmqyyLBKE/inutpXEa4Y+t?= =?utf-8?q?WAmB1Hb+8BdMTgeJJ+aeUviIgAZohb2SsYRWtPV4Vr9qGT+xdjduZQziKMdZgtrbk?= =?utf-8?q?tzPYj6KoWLgCgxWIha6ue3OTAkm0Q31oi/9g44hF5xsmO7p1iAY6v9HkSYgARnCDK?= =?utf-8?q?leHf4TOWDL561EShj8iT7E6omGl57n1AzxZsmL/zup9k5P+2xX7qgQyg7aCX+JCJ5?= =?utf-8?q?Vh2pcWqhaV6armS7k2ECWpdbuSve8ePKSn9puv6Vax1a/XNEnl9A+9gA9pNqJVXOP?= =?utf-8?q?EhegW82+pClBZqa5A72Ifc9izUz7SWxTBXsZ9sV7pEeSPASosMEjU8Z4Sx2pjrWpt?= =?utf-8?q?rMczOhki7On5VUpAwpS7WoiOd8kp+Twefv56zcliX08NclIh2JpmcbM=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bab55448-ca26-4b8a-44eb-08dc6abca239 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:18.7369 (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: CVwWyWk9Isj0OcV1iP7e+HezX01lgg0hI1MolJoIB1eu+1ax8zXspwT+iLBEQ5PHGB/skWR298uMjqNG1DewU2Nt50ZCfdOmhHIUPrhom3eI6wTPSO6ejSl2Phkfz+ft X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org ats_enabled and pasid_enabled check whether the capabilities are present or not. If so, we read the configuration space to get the status of the feature (enabled or not). Signed-off-by: Clément Mathieu--Drif --- hw/pci/pcie.c | 18 ++++++++++++++++++ include/hw/pci/pcie.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index c8e9d4c0f7..2a638a9c3f 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -1201,3 +1201,21 @@ 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; +} + +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 c59627d556..8c222f09da 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -151,4 +151,7 @@ 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); +bool pcie_ats_enabled(const PCIDevice *dev); #endif /* QEMU_PCIE_H */ From patchwork Thu May 2 15:29:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930658 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=nfLq1AJc; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGn2KXQz1ydT for ; Fri, 3 May 2024 01:32:33 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNa-0003p5-Nc; Thu, 02 May 2024 11:29:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNY-0003oY-LM for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:48 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNW-0005yW-Rr for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663786; x=1746199786; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=qP+9tZP//WCtxDabgIyOzTMK4HBwNewfd490piBaCjs=; b=nfLq1AJcQNg3UWKQVdFlIXAFMlRHX6f2sKhfxlgJcp++ofbQ4tmV8Kmc q5LvCRw/fPy1i5ux2vDMv0dhNajEhYYaEw9nrL8VNkgFibSivTI5nX5JW sl81DxHNnjz6MOlzplucFEYA+tYTeti0dZBQfJKyrZCM2+bNt9cfZOuXN 7HPh2V2LYF4hqeBikpsZswFqhQEUQeMMCB3RLfYnkiXz+QAYe5O1oHE1I O+YUzMbPslH4rvI4EqCvFh69t6Rq0RVgZoLS4XZ5DUOSQ1WiedE/YjMvi BapAEy0siEP8e+erbhUYS0/lfL0sxqN3RdljxPZDLqTDWzBP4O2RLbtRf A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785883" X-MGA-submission: MDElbVK/SWpq38mKELSxBuXCPdlgBkTbGZIAu4NGsWnWcLMYG7tkSj7QCECNj4BOCwzwVgT7qjz62ALT1fM5wL/mIwXOvPrBB/kwpgASBOdYhviKQ1kXPOS+iGTkfFSJWub8J6WZSP3HKckQBFmmQ0D5qL6EbmSZhupleL/tDnqdxw== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BG5K9to4zjg5nkhwSoKCrotTNmHkWn5EGjXSYUG4FNoO87g6YnjIfnclmnVNEAtLQTcCqZ3Npj60hmWjA37ma+QnS1PyNRT3z6nkWi4BkeX4lCfY9w8Ry6daNGI8L64X1NMGFw7PyMHwU0YYxglIlSF8mCtOHw6eT6V5fo1ePtG0NxFUZQb2l2Tuv2724yYman3BK2A3hmZX86Lfr89Uawqfp570hNXx0QOBSA7NcjnY3fJsZ9IKPw3MxKUv99bJoE24S/VEDw18WyQLFjALObCQcZsbYOVT9vmkc9oQ45CHcyl1uB9MqGyh+YgLqRp4cXwyZV04qhki66Pt0oqfGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qP+9tZP//WCtxDabgIyOzTMK4HBwNewfd490piBaCjs=; b=F38yPPrsJ+6dpl8/p4FYQqPFwiS27/6Swm5tt+DqT6ArNEBWzDRLFlMSiUAceQUh2rbdeaM9grfvsvPt9R4cu7a3ewY9MakoGXNZxwHRZYZ60wTjYdbasZFZRDfxtBcRV7V/O01Kf83RT0X+ei2mMKhz7hQ6/GH8MtZuoF9n1+EPVMKnIw4CBq1du/J+xMtKS/7AFZ29efw+HcK7TavssF8DSIEYLP0yC8ljUBYa+MvDBlPpz7lHCjss6qU0e49RyCjMXKXfFHdpOb4G7vMExGejTGUApRCbRUnbk8GAVypYzjf8BYIe3gVIdoerPbbz/ry1ztj7D41W30f0uCVmHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 10/24] intel_iommu: declare supported PASID size Thread-Topic: [PATCH ats_vtd v1 10/24] intel_iommu: declare supported PASID size Thread-Index: AQHanKV/VyD4Uc59nUWVMdk2G0UyEg== Date: Thu, 2 May 2024 15:29:18 +0000 Message-ID: <20240502152810.187492-11-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 042051e8-1158-4358-b3c7-08dc6abca25b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?vf2Cwass6c19sZ8cfuYuvMtnc8D8gb3?= =?utf-8?q?QjUce7xG6r1XDRfYLHytScppk3vwyu4h4iVZAuclw+HyH28TM4nMPMGonCxrnotmL?= =?utf-8?q?r7NaaFzlcqMHclzNhe/iIUqIgdKrbit6jOwwxJrAIM/HNRgLNP2B/gtCXm5Rxjuvu?= =?utf-8?q?PNHF7dcBT85rpZBNnZOak8UHm6spX8C2LEMKlgqwCdST5oRTkA33xRFnMnf+6ZCbj?= =?utf-8?q?JRhnGi/RwQ1DBiMv9QI5YD3U/iXW8pR2VuBC6PDE0C54UDePlGIbJZTN/50QURkQ9?= =?utf-8?q?h2FLJRF1pLcaStSc9vBkUgoY7Zr/sWcH1h2rEtK1JyRx3jVq7Uy1+4MwzidTVsRuE?= =?utf-8?q?UfWByE1BIA41fMBNFZflNCGkOLTrPbpSEwXf3AQeGC7W9tinxjSvEMLVy9LHSxQtI?= =?utf-8?q?LqBBADoalzV1Kcwl5AslPgCUKfglpW5OwhhNSp04CPErWpw0kDyvnqvPzEvM/FEIt?= =?utf-8?q?3Z4+sz/RR2xsqwXknHyis8YP/7f509aDjMW15Wedc/VBuRKiKbDLNpYzXapRiUqnu?= =?utf-8?q?mQfqi1JCJ/IYd5L4Vy+apoPi2WylDz8rwqvg47dB9LlA9mnYYmDHwMNFxbepjgiNH?= =?utf-8?q?TMFoG5bJsBPZbMinrOyUZZ3gV4SLoK/iQhdjOOyLT6TkNJeWsgDWzFHjq6A5T6Fnw?= =?utf-8?q?6zn4G/TgFtjN4aE4qW8pPy9B7h2wHJIK3qP984/jdro1urrvwGUUQhnheUGVUdeqU?= =?utf-8?q?yIDqu87Rgedlc42/1+cRwdVWZLKBPDuEVH9R+jP5wGyeTx6i0jILTswgCjOWYH1V/?= =?utf-8?q?7RTqveyw1wNIo0qYba0EmjpbB743qUS3KxHVAWgOk3ILgKcYpNdYUoqLkjZHroyWh?= =?utf-8?q?QWs0e4pnp0nnECmrWRA1YfO8VAB0XiXjzCKDqzNBK7graXT1rbTJn0dD5mlLwtnkD?= =?utf-8?q?V0VgOrwFsxuK7Y0I46IoSuXEpUotC8NK8KouUq9MUAAsOyhsFY2/UIHMs0vxFiwtt?= =?utf-8?q?MorfgOoUKlsvR9K58nQMTnelw03rSwcrtqKpRslURUq+NUthDt2hGBChPchtZpLKV?= =?utf-8?q?GeEAZiAue0V47XkDEoarUu3s7kkf43OY18H29arX8HD38mJ/SMdS5737nf8BYlon+?= =?utf-8?q?bj+Xx62nB87boCBu8YUjX1SyWXjoB35kKCvio2pdb5WwwfCxyjn4eFQC6sBY8gNZD?= =?utf-8?q?kbuX41yVbldfSuqSO9WMM7LtFhnrEexvGJQYcaTq4YXpNiogVxMiSud4Lh88Qk1NJ?= =?utf-8?q?t67JjZn8h+9EwspeoHeN3FrCfvqaPr9sYgp0io7uqw/fkslvVVRybliudwDUn4yld?= =?utf-8?q?5awM6cPSwD/gMv4riEHORoMYi7Rw4wuCGhA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?aERslNL+/SRfJ5u14ENVGYj7oRbC?= =?utf-8?q?MqLWl+boSHGaI+J2vwc1wqMn/J1cRNSJs53at4mto2p4wU4U9QRDRS7G3BGUs4JXN?= =?utf-8?q?nX7ax9SoSpevEC4WnmklmSuIgGUWARQwTl0epuL69/OjB7HZhaSnmrWVhdtc0VOKn?= =?utf-8?q?BJc7bpAltEKK+Y1fZcb8m0fPdn/NRtW6eMGBfD9r4H6P4H9HK2hmSyv8O6uF5n8Id?= =?utf-8?q?C2Cn2vK0BRKBfSqj4m4coXkjQqGP93gB+XoequAmJFs3aoWFSGvqXHmsNtHwfFgF4?= =?utf-8?q?W/6g7UptgS3N2FtOr6zzn9Sbqx++KkUiI7QT0h1jeTb1JT2lAHoiGjwfHX9XNqA89?= =?utf-8?q?HK9b4fZC3zDyVLBKxeWiFfbhxqzOEok0QyYSu4J0PQ3GRWA9jlmH925u1JKfVT0vg?= =?utf-8?q?vZJY8gS5Y5NYSDrqIEaGgKAT1ajyzhJAMlrtw9b5oVNQCDOVSwfs6E8xBFdbT+RCr?= =?utf-8?q?G4ALnBXlnV2KStSRL9LWmizKJZmEWm6TbCLaWZUV4SChhabiUeU2GpTu7sV1eSTil?= =?utf-8?q?lLv/3DoqnUF4ppxEUa0JAM3gSEY9S4CWdAVXm29mYJCjDRWZQCBf//cdvhnczcfOF?= =?utf-8?q?pGwBpgEWeBj98S6MLzOicWSRc+7qo2vUzSbjOoU3E8Cb7XOrvK/R0ki7p4xH6svOY?= =?utf-8?q?YYzXjd6mNYEEuXX07fV0/LkF60wOi8O09OJCL5qq6CgDyQMSzW3WK/Dhr8y5T7imQ?= =?utf-8?q?LErMtwuGpKwoSGm8bJT3sRLW7SOL2qtT76/nDT7gLgpjq+N2UjsEqWpHcSvc8x9kJ?= =?utf-8?q?5XOS4WY6neP+zJLL2FDZf7XOyPoqNlAfAs9U0fWiec1FahYOQyziHJwCKM9vKt53p?= =?utf-8?q?NnbXbth8BqJ4nk8njgP0mN/vzCq+HDhTmL0BbgzEnjDOtXTiJRRFKJKwmMQuVJWVM?= =?utf-8?q?wqTpZlzI2e9FQETTEs1GBFs0GzPqQ6w88t88azU9N3eY6P/k4gD7QD+CqmkCPHwAJ?= =?utf-8?q?8t7xEk0gimedWT3qz4UO2e50EJNIpjslTC8JrE5BG6w7/mwrw6laA380BFGOa9a6M?= =?utf-8?q?/mNApqxXhv1MlLjDsPVewTuGQqZ66uCWnFNoxzH6GorrZgJvOSpIcKZVZ/70PUkTQ?= =?utf-8?q?RVBFSRZXIwJRqPQD6arJgYAFiv0WdLqvbgstDswhHLsp5t7+DGmyZ6yTewowWGG/A?= =?utf-8?q?A1r0X5nlOnEPPU3GlojSAVpTiUP4MQ3VQQhrbUmAZaVHwdMepyCK2Eku9H65KNh/w?= =?utf-8?q?lWbgSc/PNcQnGA02FZmHi8Nbx4IhQnMxNHMlAvATQ34kmLucZSfQECmszW8iCcL0A?= =?utf-8?q?fjl5NPvHpuCUDBu0xu7gPydBhBuMrxhnLwJxdI8rH8g6foX3K2OyKcqYaIrJFFYdX?= =?utf-8?q?Kz32p1pycr1ZfbhwSsUJ51wYaKDPeFzBBpKhGD3rKE2o3UzHRbUf0b9aTfac4oE6d?= =?utf-8?q?ydg02vfelfSojYhCSfJkahnNmptOaobNQIC8tYHSJOkQdyCvd2dasHcNNo36bMAbb?= =?utf-8?q?A4py9Kwxe07L+Zr2s/cJDqc1pYkNW2+e4YtQD4WmVOrWOIlnEZbksyrzHTiC3wZKh?= =?utf-8?q?TDYtSDHMWnurpdi6FKUx7cZEHXwU1pIHy/P0s/UD97rmustIy4lFklE=3D?= Content-ID: <35F96B762E76A742AEFC4261F3672783@eurprd07.prod.outlook.com> 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: 042051e8-1158-4358-b3c7-08dc6abca25b X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:18.9660 (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: oUeqIxn8s0ZYT0TjZw7+Amgh54sJE8TS0ALsd9CP41OyNM8ZzEvugorMwaiM+RzVLtlELuDQQ1uc13009PI+aCu8/pJyx1bz07vwUs0s4iQBaJfmmGYweNFvcqpVjsDu X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément 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 c475a354a0..98c4a70fe0 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5822,7 +5822,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 14879d3a58..d63ff049a7 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -193,6 +193,7 @@ #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_NEST (1ULL << 26) #define VTD_ECAP_SRS (1ULL << 31) +#define VTD_ECAP_PSS (19ULL << 35) #define VTD_ECAP_PASID (1ULL << 40) #define VTD_ECAP_SMTS (1ULL << 43) #define VTD_ECAP_SLTS (1ULL << 46) From patchwork Thu May 2 15:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930657 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=jSdHWi3m; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGn2PMWz23hd for ; Fri, 3 May 2024 01:32:33 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNs-000432-FW; Thu, 02 May 2024 11:30:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNj-0003vv-Bh for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:00 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNh-0005ys-6J for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663797; x=1746199797; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=HqPBv4MByZu0WvDVOh1KhT9RsB1lIMuoLhy+mBu7tCY=; b=jSdHWi3m3X4vLq3ucmyZag02HT0STfwBAGiEerPfNavJQJLk/+ivmcUV lAG7EaoUB0N16wBuuQ9dcXsevNoP3ghYOXrs2EkNoNRoYYQIh5uP76LZJ 8Yab/6lY+/QSWmzXw/anLEPPxy8vgVkIZsjr6/OmhdoHPgUg9MUmqW0YR eDG7Firj32aQnxylYrMKbRF7bcnHW237h4+JnV5vM+u7Uw3rdOFnBk9cQ 0z43mqJQ5Dqy/iBW38F3OME8K3MxMTbaFMQfUdRBAD7ME7vBEgYNoI27F reZrfoXJXMxEXF4KlsDC1Xb1LE8KXkDAicI3Tm6ulSevgOez5hpWMPQQX A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785885" X-MGA-submission: MDH8ClsssreG0UR25H0CWpte79oVApOYudlbCZO/y9Opi4QbVi968rzfgXcR7CfWQ+aAG4CUsbzNorls9nt/BW1Nb9O0wFRKsG6ckqPn4nNjB+uksuB09ZkWOrkLQogoGVt1KDNKbcKicXbTsS5ng9wsUDU9/+rye2fWZLefiZyMxA== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L+IE+9TNGsoCYK5+KLDNYFbzIzHmwHitcf5yJsF430NgOhbIDikvYf2An6NAfaLReKfOSRFOVk/kVWbNxXHOKoFv2Rhre6kkgVxhuE+V4kA9og6xwhssnQhapsT9EOpU2gHXBUrBD/lN5sMZVYBLn/b53JhN/NUuYaGepKwVRnnmP5S2YQ+Kj/rue2uXFPz1wdcQUzzRAfmqqqN0/eCgbUISl4yea2GNYaUTuCttSimheq89+3UVCPYkbiq7QrqQZtaVEtBgxoVXaHYa2ZUo8vhsiC0/5Ji5jt2X01UKWXk2dkXugfdlr5ZbtjgWDZsh+hZR2rceKN9PuHUATwptPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HqPBv4MByZu0WvDVOh1KhT9RsB1lIMuoLhy+mBu7tCY=; b=I6zmWww2imCwV/APp2H2NcggPdb/57BUwcrdKSojwai5AthCjU51AQedNZ1+1ZLXAiTEf/2Fy6oAuJLDfpl9qdk5Q7Lc7zHnF7Yy6n/uJeBIZiXTQwgQiNt8TaE4iPKQnxAU8VvhzgsDqlhMg85jeznFvvHck197COIVOnYoT35GbO0nacALVV9zTawpNNIBApUi96GedL98/vNc2Iwzdkr4GxXf6CSKygrezfkfm6sYpBQ87D7RhsTpQ+ncznNSWA8+3Ekx+sBzKhMxN7PiuNUehhtnZ2dY7pRv/OoYTpeya0T/0uwruUtWVh0ahCE7y/8fGNZ6kP3pH20wc/OaRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 11/24] intel_iommu: add an internal API to find an address space with PASID Thread-Topic: [PATCH ats_vtd v1 11/24] intel_iommu: add an internal API to find an address space with PASID Thread-Index: AQHanKV/Ps259jorIE2wmk52NNnsNQ== Date: Thu, 2 May 2024 15:29:19 +0000 Message-ID: <20240502152810.187492-12-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 8bdee101-becf-4a08-388d-08dc6abca285 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?EUt/pZL5lxJykHmpyPnsiaJxTWxAZwk?= =?utf-8?q?7F92imRJhAU/WOIWleDrXkj6vDGtJbfsAwDS+2+A7p3VSxPVnEwfAptwTnKyuvVMZ?= =?utf-8?q?UeSDPgkRFojW7XbcTv4yWUMK8gKK/wZP0IHgJlUtqAYK4a+nnnfHHc6rT0A1tFXAp?= =?utf-8?q?z83pdC7MnFk0zOu+qh3YDGOls9cTIMRQ0oWxH53yEY3oivGnsZ7LvzP6MdtJQzLrq?= =?utf-8?q?vOv/JOgYUl8KIweI9TAEW7jNhK1O2Ru18zgv4JNZsw+E53sJTPV5alE3B/pLrbfW+?= =?utf-8?q?9ZYFmK7ZbwQitbkQ5Lh8x5VoT/FErlCKOMl/7PTSDz5AzOsm3ydazqZLLb/R/Z8id?= =?utf-8?q?+aaVKz6VTMqEs54zsYgUu9WQKdz0eTb7T4yTqXAyKnkJNzpJa34Li1cUqro1wF+vk?= =?utf-8?q?zHMJDipl5z90vTGuvaBGvtScsC+sjSUIoau/VtXGdcZDYm/NE++advgjeSZNCSU5l?= =?utf-8?q?Um41AYsbGkuZzM1P52XiJ/tFyb6nR2SsqU/OfTi5lOgVCTHIwdUGoOq775/Z5LCfI?= =?utf-8?q?Xx70WTtMYbJnfPkal+AfRaXGsOYqT6nPaiSls4rdxh9nkE4Dxf4VqGAARPbPtfgAO?= =?utf-8?q?BK9mW3TJcrqw9f/YvxAae9iHOIFP0pWJAmKqGb6PX0JhS+iZnTTAkm4CA5KpYTNPd?= =?utf-8?q?vEbGXus84+PFedFz7Wpzb5Q5l+0hJ/UM/i3g7BrtKP2T9I2qpQeD1DsNBqDFMI92x?= =?utf-8?q?e7ujQNjt5WxjDDRWAxWCxc4ZPlUcESgfGwEQLFN3iXYeR2I8sAwrYoDaNnUTG9O1X?= =?utf-8?q?FJVteS3xCnAR4tTQc7cdm3prlmZZeDX3HdDdjklh4c7IPplIEqTT87YTpqv7dzxjV?= =?utf-8?q?oOKwa12jbF92ieK7319MFxYVJ6S2wwo5cELaJMtksDlaI59v1SI2k0vKtE29IwXhh?= =?utf-8?q?i4dBkTyoE4igzEZiWPsgztDx4o29HqG5pTl4fZ7Bn/oSNMtyiFMwwCpaiSh7gJ7jE?= =?utf-8?q?u89dBUtucf5wFB3yyjCdkjwgys4k3ieskVjzkfH6JotTOo2/YCnmytQV1YGK9GAGI?= =?utf-8?q?Qqq+VBzHe2UCY9aZQeXHGmt6oeeL21hrp+oexOetpcshkfQkQ79jm0bwdQzGA3hqr?= =?utf-8?q?B+F6zUjoRNvuzBCKK+cED9qmiAemU45LTfSo/pMpQUGGVFH1uh9c/SngWEcptszaG?= =?utf-8?q?uqtdE4UV6KUJ1jlIxIwzxFglYfVq0yZsOFTUqR+9rQ2Hok0emWJNJjZBKJl3O5OoW?= =?utf-8?q?o0+HaI4jWb2BwhETlxbA6cR13LQTCpQInQJXy/3ra7ik4XqVkQpGU8WHJ3RUVIBfz?= =?utf-8?q?aZH6KNTq8x/lWEOzjeZUxSAZi7QKgkuhJ6A=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Dy6trMJ9/jGY1qiZQW9AK/tNUoFJ?= =?utf-8?q?eDa3VM5Isjtkzp67ndgIIKlMr6rlMpY3yLQKeJAPtjN1uwLarMqhCxITDO8Wllm9+?= =?utf-8?q?i3DoKzI+kgQ+uI2MgoHVxTrk4FKUTemNvPKfjQS+HUCG7yjffIPVj4RSxKDq5U5Pq?= =?utf-8?q?y3ErV1U+jGJsaz7PfMKE/fQhaeHQ6FDzkgxEyvNmBY6UbzsRcGUhWRSVhRHWxJNx7?= =?utf-8?q?py3dkCz8hgDLTjDGKdwKPwPxv7GIj4xpt0zkVPY0t3TF8n3Nc7/t53Lbzm2b4M6db?= =?utf-8?q?NgAfJtZfZmRQviD23pAd+RPXG+TBd0pYggNeMXx8fCGmzHzncAJobxh7IQaTfPnnP?= =?utf-8?q?nkygICMxBehFheClJ9leEZgdgD9ORktGXBz6DK5uQYSPz7DuVz2Y44TpmwVfNrQI9?= =?utf-8?q?rcG0hzKd2ji6w+Nll8gUWZrT20s8jQApgQxym0SXUcEPDwndoATMHZqZf4ev3dTeq?= =?utf-8?q?a1eNCUsOtbVKXwSvQ2pv5rrujOXNe+i+KtbOZiNrs89lXzNsb0tgyIj4P1zfKO616?= =?utf-8?q?lMp7XATRk+Be8M2Gz2Yy564CD4JTb5AQ+5M5KF6JKEt5fzbi78l4IuQ2Pjhm9wi2M?= =?utf-8?q?BljVOFTkqL4H/BWKp6cgXNt3ppbk2bIrpc4C4ZkuvjEyVPxO6t8xdEGg1tAFehBsI?= =?utf-8?q?+t3Nkmj0TGoBMP7EiRMLxQ9LnPlrS9B8FansuzWsmPBocYryrA1ha5C8UebBi/CjQ?= =?utf-8?q?s3EhbAMwaryzKbs3eajJErgklh3FdncN1BxdZ+8DA0VFCvmmx87SKkQcXxtLru2No?= =?utf-8?q?9Nz9GeWCHGSwRgUUmd0y2nyuUaiOnheph9iRmF/TXZn/wlwve21CHJOUiEi5spwHm?= =?utf-8?q?bML6G9uGFrJphku1Qz6/vS2cHr9V7d255o5Y/x7urxAqQ0Ob96grcn5taNeGarzPu?= =?utf-8?q?K3mrWy0thqeJdV2mGZJKCqWySwNa6qf/9cAIkPxIaTnpk/hEVJ0VpRYt4929bKFOU?= =?utf-8?q?pONgW3YHPh9CLhescpucxK5A9V5KT5WFVjL1rE6mwj2oyrMxN6iDdQxcUspHAIKCZ?= =?utf-8?q?Nz6usk7070dIe586DOnh5YXEkCRDJbtxN87SLWYNVgMuJmY138bbN+MEdq5mZ2U1G?= =?utf-8?q?xpQr6w6VZm7vMRNhY4HRVXf9sNj64IrjQN18F9vzPhpTteTOOjEBvG5DbLTqQPVaA?= =?utf-8?q?uZ0A+sSpyopV2olk5FsXW1i+DksKOU7YavqTTbsZkgmUtu/JZkXuiqF0qeZY+BP5L?= =?utf-8?q?Mz75iNllYvpEBxP+UAsfPqDkqV+gi7si7VoVnX/88Sc8EMngl7YCVfvF9Rh6yUo1b?= =?utf-8?q?Nclq+PXe54gQcYtmWrRifa5zFjiBMufIkFJRs4FS9blosB3nIkeaJDpgj7CV5mCeO?= =?utf-8?q?Z2TJLqMlrYk2fyrw5fcOXB+KhivdYy7iXx3Af3GF61dwxtzFQq0qiF9iBeoSYMaMG?= =?utf-8?q?nOh3l9RFFvUo4oMXDXGvKByt2FN8rqaQt0mQ+HJwoTqvVfKJb6bFTepfsCMPDm7cj?= =?utf-8?q?USO2K/nvSW6D0e92aEvEn4R4EkgwL2juoJu7GMif+k0EE0v53g/Crc+aBqMt9gVHk?= =?utf-8?q?NYMF6sRlFy3be0cLRcz5tFouqNn74zxZcgeyISxk0Bi8bri+0VDZuCE=3D?= Content-ID: <5CDCFE5E0FFC314BB30D213F84C6F7B2@eurprd07.prod.outlook.com> 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: 8bdee101-becf-4a08-388d-08dc6abca285 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:19.2063 (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: 1JnPc2ibXG8cOiI2nG5jVrIYTWZE+CIKUuP7vW3uczk94QmJ4GlRIQqJl1PtT712f06lZ/cepAHyOdY1tDPoigcMz896+JdiRqQudj++1zCMKmqat3uYE3BIr4DHvI38 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This will be used to implement the device IOTLB invalidation Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 98c4a70fe0..fe97930774 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -65,6 +65,11 @@ struct vtd_as_key { uint32_t pasid; }; +struct vtd_as_raw_key { + uint16_t sid; + uint32_t pasid; +}; + struct vtd_iotlb_key { uint64_t gfn; uint32_t pasid; @@ -1931,29 +1936,33 @@ static inline bool vtd_is_interrupt_addr(hwaddr addr) return VTD_INTERRUPT_ADDR_FIRST <= addr && addr <= VTD_INTERRUPT_ADDR_LAST; } -static gboolean vtd_find_as_by_sid(gpointer key, gpointer value, - gpointer user_data) +static gboolean vtd_find_as_by_sid_and_pasid(gpointer key, gpointer value, + gpointer user_data) { struct vtd_as_key *as_key = (struct vtd_as_key *)key; - uint16_t target_sid = *(uint16_t *)user_data; + struct vtd_as_raw_key target = *(struct vtd_as_raw_key *)user_data; uint16_t sid = PCI_BUILD_BDF(pci_bus_num(as_key->bus), as_key->devfn); - return sid == target_sid; + + return (as_key->pasid == target.pasid) && + (sid == target.sid); } -static VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid) +static VTDAddressSpace *vtd_get_as_by_sid_and_pasid(IntelIOMMUState *s, + uint16_t sid, + uint32_t pasid) { - uint8_t bus_num = PCI_BUS_NUM(sid); - VTDAddressSpace *vtd_as = s->vtd_as_cache[bus_num]; - - if (vtd_as && - (sid == PCI_BUILD_BDF(pci_bus_num(vtd_as->bus), vtd_as->devfn))) { - return vtd_as; - } + struct vtd_as_raw_key key = { + .sid = sid, + .pasid = pasid + }; - vtd_as = g_hash_table_find(s->vtd_address_spaces, vtd_find_as_by_sid, &sid); - s->vtd_as_cache[bus_num] = vtd_as; + return g_hash_table_find(s->vtd_address_spaces, + vtd_find_as_by_sid_and_pasid, &key); +} - return vtd_as; +static VTDAddressSpace *vtd_get_as_by_sid(IntelIOMMUState *s, uint16_t sid) +{ + return vtd_get_as_by_sid_and_pasid(s, sid, PCI_NO_PASID); } static void vtd_pt_enable_fast_path(IntelIOMMUState *s, uint16_t source_id) From patchwork Thu May 2 15:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930653 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=rEL1F/dA; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGQ0GvLz23hd for ; Fri, 3 May 2024 01:32:14 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNt-000445-NN; Thu, 02 May 2024 11:30:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNl-0003xw-SY for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:01 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNj-0005z0-TW for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663799; x=1746199799; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=utCfpqA582zPDO3rI6/KuwFYiXteNmSye6BL+9lf4fs=; b=rEL1F/dASthvxkmAFIsXLtejVF1w8V6Ylk7zAU55C4U44vNdIxfrgpMI CLEqbc18NdeNyktnd4UKqYO8GUVSQE4YMaQGG9/AWVZq9fS3IIuyztE4z 9Jw3/GVL+yGxFSsryNXrL+T1vQfDIkWvlWYz6tF5UeAaOSIMfhn3oV1NJ zZagEmWw5i8e0VuZOJ2pM/PjtyYKaifppdsKVC+L79RXx0klepJyI5wBB M0dc8rhscagdXA1j6/uMVUd1UenWBg1fO6WX/gJ/Wn7U42R13IvddRkSN FlbBjaeLEZaXSoqx6BD6juvt9P8cmqWULlRpBgBVr5gRoaonCud2wK6Ix w==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785886" X-MGA-submission: MDHgAXYiiHTKaGc0ZQWAV4XE3sg4DQSnWvuU33SWiJM3P2QVUcJYNlD+7BWdz7dP24pjanX0AjmjF0jcwAsfyuxFKPx3iL7QOGqIAA/NXCTjfYdVxsXuGcPGyiiyn66cWXwNqgkP9sVXja7aZC7X0qZUzE2oiDF6h8DfxKyndWeuyQ== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XhH+uahRahSYoO8FehLbyrRTiohKjKg4eRpNVZ8Qeh5bAcvxrT9GH+va8YVaxTKIohS4MJG7UCr3s7qmhqF8TPKa8uLVrPfqWWB/JQWLb/VRXWbvxdCPtjjAe+Uz/gyJFyjDVfNWzfVwNzJbPPdbQFAe7VmtTdjCekv8VG/uPbvqCwKo0GF6VgdeJDIad4BCpnC0ims1RssrA3uXYfsBOBLyDLM/Eg/F847UupPMGYHsIUZ1QWeZAmwUHHRKJaz5looKxMgKSunINplVosIGROqnr2H2ZRzeDjwy8hSv9lLSkJvcElH/VXJFZqqpvdr+pxUnWzlDiv3gLUOLLPCzaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=utCfpqA582zPDO3rI6/KuwFYiXteNmSye6BL+9lf4fs=; b=mS2qGpdM7LMqSu2H4ob2PaLV66/HNeX0ajBvGH4idzTcN+QCkM0WGgr/HM67pKXtBXiEkm6+sXybdIX2D6S/lWmvf2/ihJn3SY1wVxjKow4ia6569DJ1joRSGS+hLaxhPzzMYHKc5Gzk+pyo9tznNM80YcJiigJpE0dhobsQS7BigrhvRaPQyMalDp8npmxsq58RBD3uTAySuVcmpc/hLOhQdRm++TL3ogFi1eJT2svRAKSqB4I7pKgKic/MUYLT/WZWWahflf98zp/i+VI5UpGkY13qPrvuKuZZjjOW98KEgeVDSKESyhD81pgOMY780d774kMr5BJihANfzS8Hsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 12/24] intel_iommu: add support for PASID-based device IOTLB invalidation Thread-Topic: [PATCH ats_vtd v1 12/24] intel_iommu: add support for PASID-based device IOTLB invalidation Thread-Index: AQHanKWAR9D3bMixykiyWgUWFlxu2A== Date: Thu, 2 May 2024 15:29:19 +0000 Message-ID: <20240502152810.187492-13-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 7ca59488-8d39-4054-2f81-08dc6abca2aa x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?E++G3TCNiwZUy5zhXcwlBCy8nPdksFH?= =?utf-8?q?EoGvfu7P/R65s42SMm4mwSFIcD3EuC8N3apVNKSMz/XB6c+3dqtsJ1VS+n03IH65m?= =?utf-8?q?lDgX6YEf9n9uTXwh8Gdjy+tWAop9tvF5x2AuDIhrJyS4r2RT3m+pi1ZH1ihdOzZq1?= =?utf-8?q?Scu6cjx7DbdRjcUHFUyoEeLAIPiAENAxKoYMO7BOmsNntId1HjjjsUyRAJXNjva5v?= =?utf-8?q?9W3w3psiSRd6/vmSAO8dX1CZsHtpEi3XMTKTKpyoKay/bhPo3eZBRy4Shk4gboQZu?= =?utf-8?q?6byg2VXzpQH9v1zrfKfVrO4sQzIaAexUu0H8kZV05ymCyibrzEFWRcTDvsWxneWQQ?= =?utf-8?q?Vv4J/j4lcfhDW192mNJqYMdsSlj+flEAuI60h6lvTwwrdd699hNfTMxt1APbC/78Z?= =?utf-8?q?IXFBO/DeTMg7VoHtbCXh/+4qrjAP7kI2Whf2kteJ6zR526iVNhMPCJjbOkzrxydKU?= =?utf-8?q?i+f0rsaHouNVcxMs+mD1zW5qLC53XTvJK5B9rhFj1WEc4fuHw49u4/m1hVMKHG5cb?= =?utf-8?q?WmZ3OJSplhvSKKJS6BNTcV6bK6oPNSsBP+btAJg1SlMgINLHG5kO1k/McfARP45Vt?= =?utf-8?q?MJDpirTVskpFT5ASmuWoap9zfobOqemcVgF5VWw/4zk9ba8l3WNOWV5qFnjpRR3Zy?= =?utf-8?q?waclrS16lYvUCrLb97m20sVHsXpjGqCpsMDg78JCCFEahiaPQ8b8fNtYWnI+U8vh4?= =?utf-8?q?SuxO+FY2yoyg+ylAW3Hf5sEND4RN6oQ6ErTSSTEPiOG5oRkoWYNtbWJEAR9VUReAx?= =?utf-8?q?9zNUGI6d2O1s/YjzRDQfdsUyPaJBFS//BTDsFurCzo0XZdjAzPDoR8Gu+weJgy7C/?= =?utf-8?q?pBDGSlQ9w2KTxKxZbmBu/e+KUJGk907+X8fsNTzHNxMS2SIPX2hQnJOkJTB62d36z?= =?utf-8?q?SujB/Y0s3BzaycDJm0/ooVilJLtSQMq29ui4ttF5/U1EQiFrTMjC5p7u1TFl4Ejjn?= =?utf-8?q?dtEeGZfXI/e0FsdtwSiDFm+2OdriRW93DEY0kO4ZcTnImMvQr4Sx9i2bbAjF/jOY9?= =?utf-8?q?TsET5i2aV0ccy2NBqTfiL6ATmyLHZP3u3AyCrjfXSh/n1qhGwlJOu0W2suQgVCbct?= =?utf-8?q?1seNKZDP+tC0zxKdzYbwDm0LtoK1AjqsQmb+t+EXmREkQwDK50p+NNBCvLgM6eb+h?= =?utf-8?q?4f+bmG4pPQbuqWmrSNrOG5gyJDSwrTI6lyVbJRCOH8EZkkjtxKEQKzVxY+vbFnOsN?= =?utf-8?q?BEUmyxfojYnBLjlEu6Ru3Tmu9OkbXW/YxgCJliY0FgjCjohU6F08Z/3lGwBYGe0k0?= =?utf-8?q?77ua42xsX5pO7GGbDvb7nUwSUQWllw/JixQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?eFzhaQyVgQRKoGjafdAmVByGyizd?= =?utf-8?q?bR1v7OFBvjw1qsVAHrUiGcmWSnN7CWMxaZDQRqoYwpZBe4J2Eqw5pPalEHu/mabfh?= =?utf-8?q?aA8eKBr8IZoCGDw2TQrs2g5d4wvbPYjFyDVAcF8x+R9VK8uRfMIYizYoCTEgiDYUO?= =?utf-8?q?ZvKmch+btDwL2oN6u2u/QX8JXp60rsaNSOEpcZA/8lXG3NRcEExiuUCQ8TQJPWaMi?= =?utf-8?q?2VK8X9a1do9Q+DRiYTPtX76nNt+jP+sdRx7IRcHGnmHaES6bDTTUrVeMuKevGajFy?= =?utf-8?q?JIRDjMkAkSeZ03nNNd1fTJnH7fCImV+ku/krTucBVrgapVYOBkglvLy6szN6fIOYh?= =?utf-8?q?C1uYzIH74iS1+4IUNWWylUIWykY3wEFCRThwYxS3VZMusgP3OjuyO7cEDEhaauZwC?= =?utf-8?q?fKbugmSB3fr9ReRCNzsMelZg78P25VMZFMr57pH2l2mCA2u46+VTW92ggLwCWBV85?= =?utf-8?q?8v7TdxdjnaVmEyn5dFYLlq/uzjzl3Xsr9NRAefx1PIIeOU5DGZo982DAVyeyugAM/?= =?utf-8?q?a2QSzGUJ/NRe2fYjUpNB0jMpN94UzgV0KcvQYT6UyCcrr9RJt/sdYMnVO+K0v8YFr?= =?utf-8?q?8xa0F3oU3anRJRNWo3tWVFbdYcIUHJsAqit7RFk41qUm+UWAtSZn0qbqhOWqsGBb4?= =?utf-8?q?AAgOTpRIZQRew6/RbrXjfIsN0SFVhK1bl1xltoMdFXece+nr+6r8++Roja1Q/g/ty?= =?utf-8?q?7DQBhV+0Og7vzNzRO5JB5LxDEc2Uw84DJVWzUjxa9yBChYKncd2mbNiQ0EQb2RwPo?= =?utf-8?q?EgJx/FmsDGAfmYgcJSD52o+bYHNJIBIN+nZQZJfWij+FiaZY3j5v/D2Pdu32Yk56g?= =?utf-8?q?PV4VPIA8+YR+d7p7fWU1bQJ+5zg+cPQsfRB+VUpCDbEvURX8x0Xy9JDwTxPEv+PAb?= =?utf-8?q?OBDV5+RVDG8eZr9xYVy2S1pRUrav8HKaeCXZInrVej0RdcSsy/GDgf8It/8ImPZP8?= =?utf-8?q?U+RNbYCXQ7+EPmN8VCKTUsdwngbGmDORnRaTSdoKXrc5RseEXVPCMnqGmSvfYy0FV?= =?utf-8?q?wXiouqnrcRzYRa4RPBesyyolapPHnbkLa4lh10Xl/BIwhJwKQjLEqElZMvudSFUMp?= =?utf-8?q?6qtQNr2tQ90NAG4tgDz1+Gic6r+mk34g9fNgwuTOM+RVFYWuvYetBNy96ipx+DT0i?= =?utf-8?q?xH8y3lcewFupArSo0icbKK2slpNSCfkFoyH3xYEBobd2m/4sjmNcKoAUsl+d0W9TM?= =?utf-8?q?43HRRqvdhJnOz0/Qy0cviidwb3BTw8WC8DHB4DuzY+FRJYerwhJSftkp6xez99c5U?= =?utf-8?q?lYZEorrfWGQOaoUDnj1rzAGWBOKpnSdyR+CW0MRwuhQ9iZc3qv+MzPUsjelD3Z6L2?= =?utf-8?q?+Yh7HPVMX2cs1vWTfPHr4TsbPv0L/pTyztam6BCKvvUSwXnbtNIdApzqE4a+Sose9?= =?utf-8?q?Rcwy7uPQ/rl1IXVoWD4m0Pq0qkltTTb7RlL9kHRdS6HzAsVQGupA50obUqvciRhNC?= =?utf-8?q?P905FbJGQ0oCm1KzteZIu7/rnL9CJNByz/1vSTAzxuMcpAdqeZdO2z6ITwKGMXTMZ?= =?utf-8?q?GlYT9JNOFqQLxVcvgFXGgtO1Z0oZCCfCuL/UaFr4h8HbZgXA30K/kAs=3D?= Content-ID: <4038642DA5248349BEDC0B7947FA5F84@eurprd07.prod.outlook.com> 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: 7ca59488-8d39-4054-2f81-08dc6abca2aa X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:19.4281 (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: GjS89IZwGBRrhrh1aldwS0yoKiLnOpOpXO7RtvVWG+n/9qREPQOcd+hrJEmf9WJmo/Ez9L7Sdd4ocytWSmsUtkTVvSj88GfgS1/JJ3TaGBgxJ8OKYDFRDgmYYI/QU4g4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 42 ++++++++++++++++++++++++++++++---- hw/i386/intel_iommu_internal.h | 10 ++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index fe97930774..e7c1a5582a 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4344,11 +4344,43 @@ static void do_invalidate_device_tlb(VTDAddressSpace *vtd_dev_as, static bool vtd_process_device_piotlb_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { - /* - * no need to handle it for passthru device, for emulated - * devices with device tlb, it may be required, but for now, - * return is enough - */ + uint16_t sid; + VTDAddressSpace *vtd_dev_as; + bool size; + bool global; + hwaddr addr; + uint32_t pasid; + + if ((inv_desc->hi & VTD_INV_DESC_PASID_DEVICE_IOTLB_RSVD_HI) || + (inv_desc->lo & VTD_INV_DESC_PASID_DEVICE_IOTLB_RSVD_LO)) { + error_report_once("%s: invalid pasid-based dev iotlb inv desc:" + "hi=%"PRIx64 "(reserved nonzero)", + __func__, inv_desc->hi); + return false; + } + + global = VTD_INV_DESC_PASID_DEVICE_IOTLB_GLOBAL(inv_desc->hi); + size = VTD_INV_DESC_PASID_DEVICE_IOTLB_SIZE(inv_desc->hi); + addr = VTD_INV_DESC_PASID_DEVICE_IOTLB_ADDR(inv_desc->hi); + sid = VTD_INV_DESC_PASID_DEVICE_IOTLB_SID(inv_desc->lo); + if (global) { + QLIST_FOREACH(vtd_dev_as, &s->vtd_as_with_notifiers, next) { + if ((vtd_dev_as->pasid != PCI_NO_PASID) && + (PCI_BUILD_BDF(pci_bus_num(vtd_dev_as->bus), + vtd_dev_as->devfn) == sid)) { + do_invalidate_device_tlb(vtd_dev_as, size, addr); + } + } + } else { + pasid = VTD_INV_DESC_PASID_DEVICE_IOTLB_PASID(inv_desc->lo); + vtd_dev_as = vtd_get_as_by_sid_and_pasid(s, sid, pasid); + if (!vtd_dev_as) { + return true; + } + + do_invalidate_device_tlb(vtd_dev_as, size, addr); + } + return true; } diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index d63ff049a7..3d59e10488 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -424,6 +424,16 @@ typedef union VTDInvDesc VTDInvDesc; #define VTD_INV_DESC_DEVICE_IOTLB_RSVD_HI 0xffeULL #define VTD_INV_DESC_DEVICE_IOTLB_RSVD_LO 0xffff0000ffe0fff8 +/* Mask for PASID Device IOTLB Invalidate Descriptor */ +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_ADDR(val) ((val) & \ + 0xfffffffffffff000ULL) +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_SIZE(val) ((val >> 11) & 0x1) +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_GLOBAL(val) ((val) & 0x1) +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_SID(val) (((val) >> 16) & 0xffffULL) +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_PASID(val) ((val >> 32) & 0xfffffULL) +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_RSVD_HI 0x7feULL +#define VTD_INV_DESC_PASID_DEVICE_IOTLB_RSVD_LO 0xfff000000000f000ULL + /* Rsvd field masks for spte */ #define VTD_SPTE_SNP 0x800ULL From patchwork Thu May 2 15:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930654 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=mg0A+T+I; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGb4VJvz1ydT for ; Fri, 3 May 2024 01:32:23 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YO4-00048h-Kz; Thu, 02 May 2024 11:30:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNm-0003yB-6R for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:05 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNk-0005yW-1E for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663800; x=1746199800; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=SJ1YCWl5qPAPbgtTpbIIOYagtuq+mMLnpiag2CWvi3Q=; b=mg0A+T+IylR9fP4vGforNWMFYqe5oXywmaND8ek53NPjsUpsVhCyM4ZE YWthMD/Om3CWsgBav3wAH1YLx2G52uvNDOTANk1+ckRM5Uve/H90XUYAa yXDkLidPcdnvWpYxfSVZZg8BxjNUsuc3g7EEtviWjMRS+KFqryus61B/4 yXlGkTlM3YbphzaC7pWJPnp3iRtwvrHUl3hPEwQHLbZehiyi1NaKKBp9R QE4H2lU9GA86F2eCescSRweNxMQUS455tuTvVdix7ep6jdf6VKBbXfAMJ ExDvOufITPTNHIW1QlVeOJswb2mduRW5HOAGy/2a9ScNlLuccMh5bHYWN Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785887" X-MGA-submission: MDHDnbPocZIM7UPS0lgJkGyCQRsFEKCgvg/s5Kgyg3DTBaKXws0NoDkg0XGZhQWWGIOeXVaOlGIPSerfOVfdkIaDIu0CZN5u2QslsTj3BcFtpYqjfwn5cosmXCkxwh4YtI9MCtabNwBvFMMU3fbAYvHJPDj8cz9Ko45StpLae2H85w== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RmgFPK8HSfMHIZyqGGZCuDVb1J86o2ADPyV5MUkdSSDf5qgSL591p6xnb33OEkq4tGl8K393IUHtOemxXel/86N3Z3ykr8UTclr/iujdQz+R+WdfI1adJleFoHh9jaIxaKsotnhedXzp57+mZOGor9THsahvGOSu3BvDplUYPq1ax7z6lUFdALqW0dbAhphaNjvyH4+Tqr4AiXgn0jl9jCoSBJx79Czg7vFVfTiarOMkm71vZp1mPbEIlBCwW3bIAw77o/kSg9Alui1rw/SGGHfNHr99J3tYSh36+YUoMu4HD3Yz8w9QHl1ri2UomkH0YIWNTYxKHMGGPTwe7KNYwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SJ1YCWl5qPAPbgtTpbIIOYagtuq+mMLnpiag2CWvi3Q=; b=irSt+PMEULVP7PKdxA+lLFH5qfZYT5wDcw/f+gdbrdkvPgdGJ5nMdA8pR9IgnWqNJH3RR0XKVcaSFM2k5in9ce2FHrbo8fJ7gciPBiN5zt1njYmGrKRLVlIcRwYL1oxnW8uUTbNSjf+jzexeeYJXJd0wSzjVmUuG2mgbzLEdUryQ5lNrgsv5OjOIlccdhPsivQxNAI0dmqn9rOdErGbdy1BcFEzZ+l34LchzMv2ewjZnMX1Lip2UoJsGBXr5lI0/JNSbHSKjEJyvGpsd8TuC1o9yICODh7ijlO6aSD1bwzjJVov7VJvLR7g3j1vVZdkk48JyquD9guw1r0kvRm/BSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 13/24] pci: cache the bus mastering status in the device Thread-Topic: [PATCH ats_vtd v1 13/24] pci: cache the bus mastering status in the device Thread-Index: AQHanKWAPapiaRw7i0K7512F3ib09w== Date: Thu, 2 May 2024 15:29:19 +0000 Message-ID: <20240502152810.187492-14-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: 16b1bb00-7e21-4991-9e73-08dc6abca2c4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?hCaF3v7TrReLQ/GmbVIKcymIEe0GdbR?= =?utf-8?q?J1cmcamQ4jEgcSqUiDobU3ky2xIyFqVWySNYE74JuYfaW9ekW+1RM6PdC0ZeYeGdQ?= =?utf-8?q?ZI4ddC8bHQEtcDGrq4XKKcCNvIGtBWseOqJo34QhNlC8BBT6zejYsqZcDIWSbNPq4?= =?utf-8?q?3G+9ssFvJCkF0/ZqY0M2rVlEFUU+pD67Il+vAqQgucVt2R0nM0yLW+dD34+/iobw7?= =?utf-8?q?pWHpL/y0mFxO8oP0Jks3loWUjmHnSAXwJWXZ2x4sU/ZIwHiU60a6iHl2i0+klLZxW?= =?utf-8?q?jUuIrKe7tBgTX4hrACka93g4ihWmCM/bHlz/m1FgTSCStRLVffmkrahdATCKy/cZD?= =?utf-8?q?fseA7l0anM9FP3gEcqlQsQhUBR89xIidbTRBhJgv942g44d4cSVt/MV9Iib56wxCO?= =?utf-8?q?Qan+pNvqigK5PrWi1ve0yuB4YB1cGfSx/rkyw/LNiKf4/KiBWjT74oMmALYb0Y1RQ?= =?utf-8?q?PbqHA0xHpQWYN4RMqZzhOputBf6WHEp15/Rhyjye7NzabWBKyaeYM3Yk8Tg3xZpz8?= =?utf-8?q?g05vi2akyatGmzxMSi+KgaX/6C8IZ+jy8ZcG5YUwJCnLY2pXXdigWWerCY62Bpd9y?= =?utf-8?q?oSEeRoE9FtJQHDHpVzmjlzUKjiKuTL7TV0D/uP5wYSyOC/Z2sl0XwCJCv8042wRhQ?= =?utf-8?q?ngfkLvnrxz2HgEpfd234/3tt4pmpOx4a1Cx7zwXreUJbhmPRFYmof7Z8Jz0ZKlRF5?= =?utf-8?q?1ZmdE/yAHCyZvDYof2/26AKLGQFwonaabJba0IzsiCUUk9sIUp+0tbtIU5YZ5hPab?= =?utf-8?q?NYaRVXaeIe0gm4GZ18YRz8E+kxGBhEI1+5+NgcVdmueA4BJf3v/F1qZXv128v2oWm?= =?utf-8?q?jTAxIQnjoAhWxFaPssdr86H4ZeRt4TKPBxLNiid0T+h8z7El6z/0gCaGWhSxvBE7+?= =?utf-8?q?PmKZCYCgyCAAdCIwzX58AtpY4a5BGyJJkzgOpfPK3zw8XYjf9Gc2RrUujN7mfsR2R?= =?utf-8?q?13KqV+Cr4KpvCNEY+jX990ZTBYkpLV3rx4VzAlyrMNQlfzqVPEyBJej2iP31C80Z8?= =?utf-8?q?sA/HpMqhBIy1atX/OMxmBfihDMButWclbb+pSIXkuNUXFdFJI8wfaNDSlmgvZR+bg?= =?utf-8?q?r+P36ZQjswATVzIRccpSFzae2NkBPvU7a0B/2fWh7pnbj4+RapObcd2+U8JaSvXe1?= =?utf-8?q?8T3t7mRJ44eLJ20Ins5WVRzzMc7GdfYU4LRju8IgazLfrjZnUeMF/Eic81z/ZyVdN?= =?utf-8?q?zcR0DDYEIxiVsck8Ovr9Oe6Ds9RUk08mIGRVNCK0lbR1QcMsisxbqAYAmWtdTXfom?= =?utf-8?q?8ATmsN7pIvNbYr/7aPEpYmeQrKI7lAAkLuw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?oUzp1j+mBr/bXEc0O+1KK5bhHpTq?= =?utf-8?q?S1+Kf0k+kbHgFH7BZBHb1ESLfCAa2RJie9773D/WNTxTRizazS0gibPXY2oKHk9Fd?= =?utf-8?q?YVd3iFYvrdx6dl5tDRJj7tKi4fdIhuF532hvUzEOENeaDNoIhf0E/S8g9dTdIDXcN?= =?utf-8?q?Ge8yNqOrzbocLf2JIGqx9KS/w/puqqp8h1GlsAynQrqZM12P+zCINurgjtLigzvOG?= =?utf-8?q?uq3siMT06INHmom4GMIqx4eDHPDJCJT4xG87EpKDDd8ZcFCAegrkCy6oWEdSYmWNp?= =?utf-8?q?Z0qGbmnjCqWLmnmMTtyo/rzUFX1rUniKUtinIyllhtzIJhCWQxiFNoHspzVLuFzv/?= =?utf-8?q?pK6XSPK9ZxBGESgFH1Vh6hVmJP7gxkBTlrtpCEY344ajtYvmQaGuzjsBDikyshVP+?= =?utf-8?q?Ocboj8ZtMB0xCVOycl1Cl2hhfRqc3ExrBSC034vJjmeSv4Jjhi/1nGEfIhbmDENTP?= =?utf-8?q?8mZR2A09ih5qFpSx6VESy4OyP93Gdy3vMwxeGIlvWeWXsq4GS8HhoewuGIOv5dbdw?= =?utf-8?q?ZIHg7parAYMLvjR3mU3fyya+oEaf62G/X0eTKyIYmYve7R+WT1B71uxSe6Zr3Cfls?= =?utf-8?q?6ioOu0MHg1eVCzI26fTzkoJ3MLhaq2nnOloTcjHgD3BZjdENyF7VFW9a7/WtMoasb?= =?utf-8?q?RSI6X6WtPPKHjASew0wE6n2haj43M3t4ndbpzlX6+g0BTy5VOJlF5FG8CuNs+XL8+?= =?utf-8?q?Hmgrlhq7LbaeC2qQiQiS18eTltgBFBmQ8nQ+0bwd0L6Br90ZaW9ftuOlhA0UuLTxA?= =?utf-8?q?bVfKdes6L7rpBvtKak24IYNPzyAd+nFIPmdH31KrzS4hAVHB1SyOxC1ZKCtMoBcZz?= =?utf-8?q?C3OhN6BVZbSKHCixioYRyXbV0LuZ3cpWctPn0gApO1rISzQ/7su+7wleoXqDR/9AM?= =?utf-8?q?RozQmQSw9q2EK+XCZ+Hb9AcZlJha9SNZhTWN/fRbbnKF4QSNOlhyabZc//4IFM6id?= =?utf-8?q?7LiOl3jwXfegqTRQOvk962DQVb76jLPxOILfmzPINQ9+ujViN+0j44bGpLv1fLzUA?= =?utf-8?q?Hslofu/LJ0uyXhOTk/dmy+qmtht7y73jPJTvQqhBZK+soev+dugkcNz+m5/gqP0mN?= =?utf-8?q?gIO/lyOh6aN9FPdN6FahYS+Bl9eO33fvR6CRFtmlWgiS4cN1eL9s3h0lWIJk4fRNi?= =?utf-8?q?YqbKkkfcZj035oMmw7h83/HpFaFI67xT+wrw4ELGB8aKRvALOAt+Cv5fw/VURA89Y?= =?utf-8?q?BJ9hw8i1Lx2JVHW+r+iR1varD0Vb33uJV7TlH0nmUhCBAMXRVfXuyEW7KoeJAMU0G?= =?utf-8?q?CPjXgPmjXzbtsDj4bWkQM2Y0Drc3eYJicKkTzXN6+SHMAWL/OvVOK+wZ6+XeqZuWi?= =?utf-8?q?Wry8uBqoP3jT2/FclaUTabh6UVZr53M2gzffC4CqJ4KCRSDMNmhx4U/ZE7yiQhPTr?= =?utf-8?q?fYOfsmCqg//4H2gEGxPQoSZBU6N+r16J219gHxeZsvvc08SLSxmhL1L7PlxVAZV6f?= =?utf-8?q?H/U9Phpb3xOklvL6yir2jAhD794c2LU5dEZB3Zrq6tVhMfIRMdQ4kGys4jSTYXBYL?= =?utf-8?q?pvV5LwcoSx5ZeVhVk3W4sogV+WmzbtX2qM2YOPa3V92tTAf6plNIr4g=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16b1bb00-7e21-4991-9e73-08dc6abca2c4 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:19.6633 (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: vnKB2hV7eB8qE4c5gJJDGGAFHUdErkL7kwW2E0AICYf/g8MPUYcwBmk66FVfIkdqMytTCHsePIYqV1+H2RQL4bpWkbUxCr2FTX0Ol/VTzRQef7LJ138CQbiipaeBSyBu X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pci.c | 24 ++++++++++++++---------- include/hw/pci/pci_device.h | 1 + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 045d69f4c1..e5f72f9f1d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -116,6 +116,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); @@ -123,7 +129,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); } @@ -657,9 +663,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; @@ -1611,9 +1616,9 @@ 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->has_power); + pci_set_master(d, + (pci_get_word(d->config + PCI_COMMAND) & + PCI_COMMAND_MASTER) && d->has_power); } msi_write_config(d, addr, val_in, l); @@ -2888,9 +2893,8 @@ void pci_set_power(PCIDevice *d, bool state) d->has_power = 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->has_power); + pci_set_master(d, (pci_get_word(d->config + PCI_COMMAND) + & PCI_COMMAND_MASTER) && d->has_power); if (!d->has_power) { pci_device_reset(d); } diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h index d3dd0f64b2..7fa501569a 100644 --- a/include/hw/pci/pci_device.h +++ b/include/hw/pci/pci_device.h @@ -87,6 +87,7 @@ struct PCIDevice { char name[64]; PCIIORegion io_regions[PCI_NUM_REGIONS]; AddressSpace bus_master_as; + bool is_master; MemoryRegion bus_master_container_region; MemoryRegion bus_master_enable_region; From patchwork Thu May 2 15:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930661 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=dDZywA9d; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdHN0hWrz23hd for ; Fri, 3 May 2024 01:33:04 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YOO-0004SO-Ax; Thu, 02 May 2024 11:30:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YO5-0004EF-6S for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:24 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNt-0005ys-QA for qemu-devel@nongnu.org; Thu, 02 May 2024 11:30:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663809; x=1746199809; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+UqGxNkmEEVK9qOUIr81H5+0nzmF7R37bpPM1v81DI0=; b=dDZywA9dgOl4Y29stv6ExFskigt8htP6GnBy/d5iK7NIMhrkwQ9m2sqk gv9QaF4jhnGfWHODP2DCilb7TrOaha5eqyO3PxdBx2G9vzqUSxMfN4PhD NkvlOcSAuG1WwXHkVVaU636CRGJ3uS1ucxJP6uQWBU2gK68DyoOryQG2u 1l5XSpkra1HVZ/mGLO84k1Hl6B9i2pxc8cWUvwFZc+QPjsoW10TrwMcZ2 T2mz/XtaEvo4iNTiprb8GRzptu8hSF6t0Wy7OzYS3gH6FZtEpGokYrjSR 8UK/eUGWDUsV0ObXFnymqiYrKm6qKTKPYy35/oVNSJbRZI0FjPUqwWtS2 A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785888" X-MGA-submission: MDGLwFYRyRSZnQWf8tLjkjOymNtqXk/1rh0DYSrjB6salSYBs8ONmvj33F4B6+2p0OmE6Z4qIXgZ58ZNoaOoydT+RovQmen+P8uVh0+VwhM2BLQchPL61xEBznbyh6mvE+08ktWANTazvgBsrym+EXy/B5mUd+8bJl0ace9xP7wEag== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PAtC6Pxg45LAQ9kUh+TF24As8CKhDgBAjC5MylKvzkPIw6tahBbhgxTe6Ziu2RhR+1kcFGgZ34ZILzEEVy6I49ICO2AAax8Iu60dctK6sJqUlVw3T/cNs4CKRXOFWJhN0wvj+VYsQkzrXE2+/Qg3H+XLut5pU9jUGs3gDOX50HYyhathHgf7vpnUrOAa/sENxu0DE5A+JyEXtt/eAdTyI9rsOf5GAp0iA046gu9AJNNT2rmsH7wQQC5/SbYJB5xnBZsUUeb+cjsvZQ83lf+c139EMuVnJW6ToAto5t8aBK5yEJnEeSWzVzceNDd4oBr5nxZPoZAtuDOyjBJzS89x2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+UqGxNkmEEVK9qOUIr81H5+0nzmF7R37bpPM1v81DI0=; b=IPAVQQhn3aTLGZEjm+VGK7e/o9QQ/T9WzJx7gNA4X4bcEGTjHXG4A1Fg86Z/qjpPPyIqDAaSJkg+qVFX1TrCMK2nvHeIvWlqKcS3dfnCgC0rR+GhlpUEUqMBpMJP9Gamg3STxh1oo2E5T5nReIutYjha3g10f1eU/R7D4AqiPwmRoF4C0cPrvqD/tTgwTfNUxRrhRZnmNsBy9xN26Y2PcnbgUdcnZLnqI8jJeAahG3501uUQvMkqAKtGUMqNHFWAEL/K8o8aB0Cxxa97PMVAxbAYWgXvBSC/1R8CWYCycvoq/THHF3H8ArctTzlRfsC33PTePphRMvXIQni8p1C3NA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:19 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:19 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 14/24] pci: add IOMMU operations to get address spaces and memory regions with PASID Thread-Topic: [PATCH ats_vtd v1 14/24] pci: add IOMMU operations to get address spaces and memory regions with PASID Thread-Index: AQHanKWAsBsGY5rV/UyOtoHHEEzYSw== Date: Thu, 2 May 2024 15:29:19 +0000 Message-ID: <20240502152810.187492-15-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: f8641a4a-ed32-4d9a-3bd7-08dc6abca2e1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?zbThAkYhn7VWPC12WLthSQqcx2Mhf2o?= =?utf-8?q?tYX50eRb8pwejcpd3Ct9orDTMoFasq35plSqJWiBD9NZR5aS0RwR4iKHGiyOMtGGP?= =?utf-8?q?fBiBnbSpdoGzRgBNkWA0zlByRRCIH6sMsx7+4XtqzIblmU1SkSSrtr7m6V6/nC5Kd?= =?utf-8?q?N4n8V6psWfm+w+jqfkYANP3NBT4JeIYwGnfLT61IEeLc72K/s1UqraZDP/UtGk6t7?= =?utf-8?q?Gh5HPdn6raK6hjBzN33TR34k+i3YvwmE2HVDOrNAFJgwN2V9T28A+plad1YSeU6wp?= =?utf-8?q?abMe6G/SKpc4ciD6SMTOsqdzpiO0b4gylTWWkAaCuYuZyByOY4mZodKRiY/o2Gido?= =?utf-8?q?Xwq3DCtkWJVLEqvUVsIMwXkHXE9xWrr+FSOP8FbGS0jL4qCb00SjItcKabe96wx4W?= =?utf-8?q?IHLx3Ev7Zy8XypFJAFqpQGaL3fdfgDxcoJ/d+S/qJp7cVQ0+d6Q+A9yTbQNRF4vvn?= =?utf-8?q?33Vol6AUJWfwOTlV7tz2cK5kk8TJ9t9xXcTRn+Xo2tmN+KfrfyV/xmHvgwREG93Zd?= =?utf-8?q?xTLe01wV6dyTet0WD2n3V9j5NOuYcA8oc69EHft9HAVKlsa4ifaAHMtNhZDI7zUeH?= =?utf-8?q?O+lUf9AfwNRW4tY/tUbuLBhK1d0Js8iyPT4sregNAph7sp7Tk0PK3MctpiRFW05kZ?= =?utf-8?q?IU6r1TBzgRXfTcb9I7xJrRS80csP223xg2hFdYvOn6RNzGMVxWJ052zmK23wIrnW8?= =?utf-8?q?ltkdwHQSrfdUOwqrrO+Q6MO94zQUaQHCRNnEbsZ/6Duw3HxvV+9R1IGLhTN0fNgDI?= =?utf-8?q?djZk3KzOYKqi9Bhy4g4qfWjM7xNa8iI0dcHPnlV3N32ZWng37wcXUSKWIRt7h0NCB?= =?utf-8?q?Hoq6dGBbN9lyT6SnqFWFG+1btoaM3UsdPHBlBv7qRb1JqvGLB9hKiiBSwZYkgogjq?= =?utf-8?q?EVG9YlZK0XJzGhEYvxxP3EOHNGNrNXXWkNb6Wyt6dM3fnrkzzG7QnJCGiMcutuV3s?= =?utf-8?q?K2odO7Pj2mq1ayEhQ/NNZWHNvYt49y1paEpzLu7HdK4FN4RowEpp6upaz9+s8I0vj?= =?utf-8?q?Bf5qVrcQX58VkJR+ilAgHGuBdaMYccQse7qHreAiQJWjNufl6T6x43s3eLE9Q2tga?= =?utf-8?q?bGV5afmXDdR5Iuon1C+4JzTyZrPuGxD5QCfe/DYCqATP8mWTYn48E5gKywrvvnfUb?= =?utf-8?q?iCCXB8n+Bmr0f8v6LmDVVPWjsmcplGcvKO3pTDARzOofYsc1cy04oMWOR/rvY6x+p?= =?utf-8?q?xybAiwC4mQnaOX/1ZzIF4okJ2vGOYPWPmquCPyXnyuMN46KDteCn2g+E2ZVdrZcxi?= =?utf-8?q?qdVQr9qM527qbkKCTY1w05V5L/y6cq+L5jw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?/p+IlbM4+v11V9l5dF3LniMO7XAY?= =?utf-8?q?7trKhEDWIhclDuT2LMCyGlmrM1tobKaSgsH4SDmJDG5ArzmWK2timHjb//LkHqO4L?= =?utf-8?q?1kaLf5/UmPmCj9d6pv8eSzTE8QULWpPJxd+kKX8OK+dx3d3VrNYgV1BBqVW5Hl5mo?= =?utf-8?q?3+zghxuQ7pJKxzSR4IJxlo0HnlOb7WNDwzhlIjO72qxnZb4sDWdvBSjJE8It88IaG?= =?utf-8?q?HUxlVXwYzsp0AXQPAPd20fofKzCAvJaRLOx73Tf0+wlGbW3M3rrMtR2jB3iDknuHN?= =?utf-8?q?Fr+e7sy1K7NDgBnQjKE89u8LCl1IXqxcI2mCMZN6TRN8F6oGdeCz9yLVOGMbzUlD5?= =?utf-8?q?iw7fL6lA6yMRIs3JvCQSbdjkxmyG99hJ91W9+B5cHwcIAgowSpMz4g192v2+9qibG?= =?utf-8?q?t6v19twK/aH58MDNDZZ6YO4TALyFJ2EFw/sQH7cjRxAJcomC+d5CkHC5+/u84Mrl1?= =?utf-8?q?EnQQbmcti7JdkcvimjYEsWX7R1xhcEfLwSgcn47yZX+kOr+ria2XTJiIjujLN82l5?= =?utf-8?q?F2UPc0jpd7L9IYwQcSchWRxDQwbqz9z1wR0M9JIpClUkpy4fo0sINM0FQjJprT4Z/?= =?utf-8?q?DczrWAPqlEFuMmxCjaDa3cEvUQbFerxwJtfqrznGE42EvZtAtE0VYHQSxXbgbvZZQ?= =?utf-8?q?xCcuCFQ7PFOn23hj6ZUzT+Bl9uk+DUx4BlkSTZJzQ0uEvtHdTN11GYLk5TJ4aPCM1?= =?utf-8?q?VFsCSkMiPKoodSeoiajuBRC6nVGy/3Kl0F4ChYS88P78wdpIP1XdtrqM603JTBSgl?= =?utf-8?q?zwRAUIiMADLaiVafbY3GXRbfLOIXwHGKp2+IWuZdzZry/1A2XEfC68goPsDg0f1Nr?= =?utf-8?q?v+qVx7mQ5l42hQeP7Iye2ocOQH/55FoeY5EahzBI00pMeNyBA73fCjT06a/KMovTC?= =?utf-8?q?FbIpNFS4JZ8BQlv+M+6DzunZWw5OoEaJ3DfA42cmY6ynuRbXz0UyYqexNFLpp6/mk?= =?utf-8?q?Q5wNgxgDso76RZuECrDubpqzv5p8FxfeGldEGcI/hHLV9PuDAc0jxU6tXiKkgpJ03?= =?utf-8?q?dtWqIyKK5vx5F/h51NLAQFuH8sHw/sAOwU8cq/4s0vTuQG5/MWlUT5APm5bYSu1Ag?= =?utf-8?q?oaHnaC9QSeHpiqFp9xbxg5bydVd0bFk8/4ni3SS2n1ZzQEQcIcC+/C4ZY8im0HyjC?= =?utf-8?q?RbY9Oej4EmQlpSlA+5P+c/toP8iTIJ6Xso8m08XzsPD44Kyh3t4o9BSgSG3ouHX0g?= =?utf-8?q?KYz3lzRRBgwg8OKCsez4zPtByaZEUBLlu2nE3PB2AmfmKUVbY8pufL+9KQMxW3+w4?= =?utf-8?q?l7D+nYBorj5cq5ysXhM/KaAQPdmTi8NsKC3dqUGQ16e7zF/sk8c24eOTtE20oKRLU?= =?utf-8?q?h9l0edMfA+3FR3xjXenUk0Wn9hdHo46jB1hz8vwaSxpVcAyRLOu7905+FFbXPq/PQ?= =?utf-8?q?Sc4aVA9DGBHu3wt4j8b8ZrDTvzi4og6b1aQXUawdmwU5WtUbeF5RpptpE89LOjZIB?= =?utf-8?q?9XhkZ/LjynUdPaiCFBN8T4uD65TtBGAh8So8ZH2Wk/gtuWwXJ6F+kp7/GCGN9v3K2?= =?utf-8?q?/V3Pnx+6yWDR8ycBAcEgdY5ihEIGeYXX3PEcAQn0WqIZwkwDftiTVfE=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8641a4a-ed32-4d9a-3bd7-08dc6abca2e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:19.8588 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7d1c7785-2d8a-437d-b842-1ed5d8fbe00a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jYVUGmHRwXIdlTHFwvTWOH0J+BzrWmkaqy0plkezD+zdTRODVq7Uk5hRDAKP6bTw61dBh82Jb0iVQ49vB0gRWPc36GxapavZ3xGkw/FIE+k8y12gX0fbLm1I9GjpV4ja X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pci.c | 20 ++++++++++++++++++++ include/hw/pci/pci.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index e5f72f9f1d..9ed788c95d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2747,6 +2747,26 @@ AddressSpace *pci_device_iommu_address_space(PCIDevice *dev) return &address_space_memory; } +AddressSpace *pci_device_iommu_address_space_pasid(PCIDevice *dev, + uint32_t pasid) +{ + PCIBus *bus; + PCIBus *iommu_bus; + int devfn; + + if (!dev->is_master || !pcie_pasid_enabled(dev) || pasid == PCI_NO_PASID) { + return NULL; + } + + pci_device_get_iommu_bus_devfn(dev, &bus, &iommu_bus, &devfn); + if (!pci_bus_bypass_iommu(bus) && iommu_bus->iommu_ops && + iommu_bus->iommu_ops->get_address_space_pasid) { + return iommu_bus->iommu_ops->get_address_space_pasid(bus, + iommu_bus->iommu_opaque, devfn, pasid); + } + return NULL; +} + int pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod, Error **errp) { diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 849e391813..0c532c563c 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -385,6 +385,38 @@ typedef struct PCIIOMMUOps { * @devfn: device and function number */ AddressSpace * (*get_address_space)(PCIBus *bus, void *opaque, int devfn); + /** + * @get_address_space_pasid: same as get_address_space but returns an + * address space with the requested PASID + * + * This callback is required for PASID-based operations + * + * @bus: the #PCIBus being accessed. + * + * @opaque: the data passed to pci_setup_iommu(). + * + * @devfn: device and function number + * + * @pasid: the pasid associated with the requested memory region + */ + AddressSpace * (*get_address_space_pasid)(PCIBus *bus, void *opaque, + int devfn, uint32_t pasid); + /** + * @get_memory_region_pasid: get the iommu memory region for a given + * device and pasid + * + * @bus: the #PCIBus being accessed. + * + * @opaque: the data passed to pci_setup_iommu(). + * + * @devfn: device and function number + * + * @pasid: the pasid associated with the requested memory region + */ + IOMMUMemoryRegion * (*get_memory_region_pasid)(PCIBus *bus, + void *opaque, + int devfn, + uint32_t pasid); /** * @set_iommu_device: attach a HostIOMMUDevice to a vIOMMU * @@ -420,6 +452,8 @@ typedef struct PCIIOMMUOps { } PCIIOMMUOps; AddressSpace *pci_device_iommu_address_space(PCIDevice *dev); +AddressSpace *pci_device_iommu_address_space_pasid(PCIDevice *dev, + uint32_t pasid); int pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod, Error **errp); void pci_device_unset_iommu_device(PCIDevice *dev); From patchwork Thu May 2 15:29:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930652 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=vVU5wqjE; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdGP5hjwz1ydT for ; Fri, 3 May 2024 01:32:13 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNE-0003cv-8v; Thu, 02 May 2024 11:29:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YND-0003cA-Cn for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:27 -0400 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 1s2YNA-0005yz-B6 for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663764; x=1746199764; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=mkr4mAHYujE/VwywrBm3WrIt+MSQrhOwUyjOaK0g24I=; b=vVU5wqjE/kA+b0w+GLGx2rmnLRgWsyjkq89sUazkZyDXbTlDsB+i2/cY XGulaXlI1JGiqbAyUh9UMEIV3RqKVQX0bhNGIi0XOmEU0r/NIzsWdOKsw HdJkWmqY2ZXe31bFGFsgOJDrMA+6QrZthul1NQtsGoZVczoHQHCsqyngk 2D4aWFAkqqRI6iCEPV8A1X5YVtiokYhYqT8Kk/Z/qQ1EvpRgBc8wSe+95 xGXVpgJXU8oo5D0JoPCbraUJezv3S7hAZjdQJYDu01C6s+2+2w5cjJZls Tsw2V+lKy03g0cLJprxT+imucr3bG/teulHoDBP5YyyuFZ9nywAKN6ZIu w==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730664" X-MGA-submission: MDGmGmUp/L1b7zUqzQsNQsjhFjIy7Q13EyTvgUCBKvNiVBUjvSiNo1OYm0OAgydn8LGXh4aww3v3TYaWQUelt+2O7vgq92Xhy2QCC3LJytPREwhksmVzp2JxbWQ6/gI405Jyh3D4UWVQ3JC/nhSGocIasmGlu6jD2oxuwWXOoNf1fQ== Received: from mail-am6eur05lp2104.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ux7jYakCEKLmjBecYrf88QrLFXGHSFtu/VCtZPOJSt/tc9P3qP1nNyg55/tf8LGGmW0G1tR+TFucO5xxa7pimLHLHviYN1vagRAz173Dl9oCaEsuZPNK+OFWCEBJckyVTHdUxcUFrqOWUIO5v6LC6Tg2/DC3tGLAu44KMLPn3atv49p+bph6EUadANWnhjS/WJ38oWYDoX0BYzlbA3ZqCT5gY4ITp8NOA7DuIT1vgWhxsVjukNq/wwOVYCJtZsi9X/b0oLcwgdRHPSmgRxA29Mj/4SPn3V+1Gl8qKclJNEYUbf2FAub/ryUijx1ouPxoz7vLkCIqofPv235HERTC3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mkr4mAHYujE/VwywrBm3WrIt+MSQrhOwUyjOaK0g24I=; b=ccR8W/5lz6fGrksP/zR2sayf5E8A6a27FCLy8itYfFcMtQPVQjaiedMwAJC6WPcpckvHUYXg7SAXrCwbywCGspuKB/JvsK98V4wHfQgnasGkA56prSL5fB5LQqBdJbr9bShRBqfRvq//9Y+8K5SvIIun+2meWEuHz9+FMRstnjUIMksPqIopA65bGoURYxgeAaSWpckBJZf58JjLl4pcKLeThQSGQwe5KU5wC4p7rLuxk780kvG/0gcQX/6oBYo+xPHyCpZ3aV08z5r8zp+aCHyt3w/Dvw6uniG3ew1wnCmS9lkAMGx8j80sWApBGBAz17tHx5RyFHZVpehZviM9cA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:20 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:20 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 15/24] pci: add a pci-level initialization function for iommu notifiers Thread-Topic: [PATCH ats_vtd v1 15/24] pci: add a pci-level initialization function for iommu notifiers Thread-Index: AQHanKWAjSp/SteTZkWYOxoa9suFmw== Date: Thu, 2 May 2024 15:29:20 +0000 Message-ID: <20240502152810.187492-16-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: f9ca77ec-438d-4017-67f0-08dc6abca307 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?rwe+T5KbW8CDln15ct+hqc6snflVYhH?= =?utf-8?q?cMz0mjGZg8GuGxJgRMvUwIlie7JTE+qOXBIsDg2nYNpx0f+xZKQqa7qPOJPKmktkI?= =?utf-8?q?nHj0z/LaOxi3k/5ifgIMO02jgolKP9oW1XdmZ9eqY8bGa6/oh3prRtRsfmINrPZYA?= =?utf-8?q?BkIOCH3n994QAB8Z9eQlo1sFfPWeWwf/DaVjr+Fj1c3rKC6VgxGzDZ89xK6ghbeyD?= =?utf-8?q?vWFBiYJIeQzleJREQ2pGA/s/Qs0UuA0wVpZ/ACeg/cFkWnnJRWtYw1HQO4K0GBfiA?= =?utf-8?q?3Qvr6ZsfXr1HobF/7K3+0UyqusiVWzZKH7dfmi/usP9qXnxdzR8QImMw9MrIyoaGA?= =?utf-8?q?SDhMEa4yIbcj6b3CO/z7jkzyLaEDrFSUuHM7xI7C9mMme1J3CLggOr+Up6cX4atU9?= =?utf-8?q?YqerphvxE8AVwBFO4+oxCVEIeClAuOIATMmCTtBZ0WAJtPi4c6/sv6YUTLFsCWH8a?= =?utf-8?q?h/SVLSCb/mNeuP48wSkz/osfZbfmx0UE673ux4uZwSzDjNOw9rNyqOLPQbHMhx0cD?= =?utf-8?q?DzQ3cLz53tk0PKUJpG1aR/yUjCFz2XqX5UFsnp6rdIc0GbomTZahr8cEBW82p2aVG?= =?utf-8?q?BkTnLggMuAEpJM1A11OtaJIHitbcTjP0S/zATos+J9JLVo5AjDJTCjvyk/bcgtvMB?= =?utf-8?q?odPUOAIogO4RP/ELE10vZ+kx/AvFSplX8FGOneWXpFwcXwFOzf9V38A8Np9ct5KE9?= =?utf-8?q?oo9dlInk4XZuNgqu2w9dMtaSOgj3flKwj+sZMzM7/oWNsFKnfZBLYAnARulwlf3bN?= =?utf-8?q?EjAchdXZ6X5mia37442apgxiCAYu2E/kHBNdlDIh3OpEHdTwrQvaf8OhXvCSBYc+G?= =?utf-8?q?MSYyUyxMRS4ONSDSVNGa2kefjtIRJr06AE7w4XsdRjuav3oUA6owVsVdIS673H3qh?= =?utf-8?q?Cm68O96kf4+LMMXp2zPfJuwk8sfq0gdM/Bv7gaHGf3hjLet9cXdPSoI0CJP3ScRky?= =?utf-8?q?Zq816ZiKz4C+zTRs3pFu2jTykJLbnn7Ern1VXH1zQKgkh0gNRQyxFRRAtGrKppWd1?= =?utf-8?q?DvOREPq5dVW8DcLCbzUmOpnX2NlXm5ERSOW6Q5y+/mI+5GkcMFxDFfpwEWRSwZv+4?= =?utf-8?q?Gp5tubgEq3IxJnoJydoIkPRTRVup4u+tSIEG4X5llAod35c4cUQrfGV6hJkbYqn7R?= =?utf-8?q?uOj04xcxI/agOHNbgiG4oz7+X3X/HSdJJ9at9M5eSDkz2k0bcASP0rVHmYsAj8lx3?= =?utf-8?q?4i36BdlatAXaxVm9Xw7CQzMkcFLnRTBF4V/B0PXJcO84uNvkBnMAi0p40Kw/hd4OP?= =?utf-8?q?ACmN2qo7ckYq4agwNdfIQQsc/IpD8jW/WHg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?4s5y3Ymw852L530IUKUx2T51Tg05?= =?utf-8?q?TghcEEbKQ/1BQyOcsl3Tb4gwV+CjC2iwS033dTFQ/fPDcgBO+pX3aO4yQn7BdRAqD?= =?utf-8?q?GbbSjUh02tkpw3GKrWoof8ep4d6FsHBSHuEAgLpBy/QoInLEVklsGmE6boRIXeCVS?= =?utf-8?q?JkieavBt0jz27wFv07ugAbIE+BRjlvN7NAdEOWeeCYwVb+KpzeZCDkBNTLOU0KH60?= =?utf-8?q?cOEJ7Y5fVDrcqgfa9CzoTw1cb9tkeHlHOd44j/29mtdEJbHgvjLGOKbJ2kVRmDBot?= =?utf-8?q?FLVy991PBCM0ezGJMxN7s0FEeot/Z+rHeo5JVE6T/O0qI774JnLrrtM2T5Yz3UsUV?= =?utf-8?q?npW6cwuwCeCbAAS8fw9em0Nb/LV31GTt1qhLC3iKxxSMtqQr02ADTt/cfPsrJYxXH?= =?utf-8?q?3qW01KXzg0rGOEeoc7C0ALZukEsCVhvKeeqK8wfmmPTkv6aPlCtCZFqXWyOWco2TV?= =?utf-8?q?I4M9g9WdQ+8k1saeQDevyayRHjjS0nk9Lm4do4J75P9UvkMO3dgvW4nggTokRZoNw?= =?utf-8?q?n7AdJKldfPgZHQiYDljVUZKEPbfPTztzKyEQpXHzI91ESFi8orfvTuOVzIcToAdsB?= =?utf-8?q?Jb79PkaJ+KCwRoETntXXFxfZHjhn4u1XZro1x5mTezwsKTw5JkQ0ETgBlYcomkxHY?= =?utf-8?q?j1bk91MA6OfJLv9mjDK/BHqpSxEPAtSAh0B7Z6zosoi8LWGvi3QWY3UjMqJujz4Re?= =?utf-8?q?f+2vgqlM/qHmNmKWoRu+W2zYqY7nPqTfV6aIyxfrc5ZL0oq9QM2nkDmqEwowkZg8W?= =?utf-8?q?Ys/hF4Ous3h85HARHIeMwNdxn6JUwF4afa54a6A2aB+cp5iBijxdc8v3Lp9Tcj6tj?= =?utf-8?q?bYH4IVZ9IDKYXsHwouewAsBuVf9hbwMylGvvHvtV0OtFOiDXK1D7qbFr/h6tJqdBZ?= =?utf-8?q?5fbIK+xNT8itvgB9AmdIEYY9y+d7uppXJ2hkB0WBxpjXlY6qrE1H9d3M6BMn0gmGK?= =?utf-8?q?kMYNh1qkUGfY2ev2dYoo2m9J1Tv9sNMQFFJbf2I1r2kgtLdwjipkyCZYuZUHFLHyh?= =?utf-8?q?kru5Nh+HmU8TsprmX2UeqjQkBzw3o/WmFmk6jNH0hsjLtIgLrg7pWwU9Or52IxTTi?= =?utf-8?q?r3D1NzvnVoQlZ7NKZWPa3OF42M5mVdEsDEdW37ZWdXCFcmSjLzXiZE5s5U0Z2idiG?= =?utf-8?q?WRJ6o4oWS7rwo4Oyvz8QbFeD4pfkHZfVrYDqmWD26uGoKhttO+uDTbaz3fAWZMee5?= =?utf-8?q?MggLWbxJAFK6BTyW9I0+627pdcNOgbF24wqSItlhNbQ1MeTy0VoplBekt10siWUEr?= =?utf-8?q?+eAOQnRAlgusBWtiHLHK5wTqrVywe59naLP0CGOuyfvKn5/3ERIUqpQVczet0micC?= =?utf-8?q?cCmVVMEQWWXQmmjJLl0i1MYiNwE2SuB69DrB4ZssqLjInyw09cSWN+ILsXK/5yVvq?= =?utf-8?q?g0lg/15lRHMYg8R8YVfd85URd7xkB6QLoRLD7bfb8LqoQ0O1auYBB98I3627NAnMU?= =?utf-8?q?1YcPN88pV3ScwQDl0MfFoCOsUQqNgqA4ZGTvEOdZjoKPtjqOCuRrf/TfeFwAkC+z1?= =?utf-8?q?zvrHHwiI545gP3e5BSvo7RKlp+92WG7wOmdYFKh80LISuHWBYH2+lSg=3D?= Content-ID: <38FFA72164AA024BBB0D83A6B9C35348@eurprd07.prod.outlook.com> 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: f9ca77ec-438d-4017-67f0-08dc6abca307 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:20.1081 (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: 1D/5j90V/BTBQmg9tqnGZPy6GMw2LgB1qg/DRsYEUIMxWiAZyM/mGMT5PIr6olNMtm5w5sKe3/D8d3sG7giAUH3vv19bpV28Yx4pyF3KWWkrYJN4LmyrCsyRH2DrODkp X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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: Clément Mathieu--Drif --- hw/pci/pci.c | 39 +++++++++++++++++++++++++++++++++++++++ include/hw/pci/pci.h | 13 +++++++++++++ 2 files changed, 52 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 9ed788c95d..d10cdb3d75 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2747,6 +2747,45 @@ 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 (!pci_bus_bypass_iommu(bus) && iommu_bus->iommu_ops && + 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) +{ + 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)); + return true; +} + AddressSpace *pci_device_iommu_address_space_pasid(PCIDevice *dev, uint32_t pasid) { diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 0c532c563c..1587c18cd9 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -458,6 +458,19 @@ int 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 + */ +bool pci_iommu_init_iotlb_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n, IOMMUNotify fn); + /** * pci_setup_iommu: Initialize specific IOMMU handlers for a PCIBus * From patchwork Thu May 2 15:29:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930667 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=et0dWkf4; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdJH4rWhz1ydT for ; Fri, 3 May 2024 01:33:51 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNI-0003f3-C8; Thu, 02 May 2024 11:29:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNH-0003dr-3n for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:31 -0400 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 1s2YND-0005yz-OD for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663768; x=1746199768; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=E2oyVReCNycO15PF5GywpqRq2wxJJlE+TmbfE5B4/k4=; b=et0dWkf4lh/o5PhG7C3lVEoemB8PCyoYG5kJ15FbQa5UHVOzqgNTb4bL 3ss0g92fsu1mmU+yDPq1KDxXsAAYPD5xi66c9TVTgt2tR/dW42Yfu34Bp F+CheEkUXQ6qYToirBLxkWzWkswVNT4EMQM4s047hKsSITPJpO7QQwUY3 BEMO/xnIjEzywUWLcTMqGbSeVrJxGEpy4lHjLnIj69nG/Ow3DmelimooZ Y6Tdl07gkLMHJ1NlumIua2yMqz6bJUWGdSgCJI+CLtgQ2cu2GapyryGIB 0WyjG8KFc4HxSB5qJ7vCW2Idi11JMKF9o9Dxl0llWJbxhdLioOSnT/Naz Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730667" X-MGA-submission: MDEZqJ8AQz14cuTSg3bDFy0yEtYHFlxnDWtnjyLgn7o5stfxqXUszR6pAsbfyl6ZapwNaA/8uOGN+kpBQkGFYUiCFW72ZsGQouA78b+8Q5EFBTvYxsta4iSv1eJwI0VFfEnpcOxfgoJ7PndXY+3s+dQL3jGGKYSzRXjg7m9YfD7gVw== Received: from mail-am6eur05lp2104.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WTLyFIp8deA+vkuKcl5779Ur+rZiGJ11ZgiV1QtWG8uuhzDiul3c8n84aszfesjIA6kT2Bcg552yz12v6oBuvjziz2sa9kv5gSR2C/soT005xDDaQenIQpONjRXof0FDlWocLmQ6Oxyn17mtmSuC3KoG6JzhKWZrEppI82dckgaPLp/4SHtb0zZBROaKcpSnbceL3CQVHWkba7FckG4YnjqlESoN+1mit65NC1AlwSmroWo+B9dl9JnozYGqOyMyYot9PL0ZXYYDlal6LddrZkcijfLv+uFUfWtiBEml4+VarqE27EJ+w4p95zGyWl/iKg3bqSKXVUSPMHqFGs5VyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=E2oyVReCNycO15PF5GywpqRq2wxJJlE+TmbfE5B4/k4=; b=aIjTf9OTf0ddPSEbxUdNn4sTJMd2YCq9VAazDfXIqU32mmR2AGH2AanUR+SMRbMDGciAeLdj9LVhlqtRCPMCkROzPdaIkZy9OhnnT1T9PoV4nQFAP2ZL9j06IvYi4PVhcrGcqreOiD+CsL5YzAZj9M4j2YoSSFonwmDo0OmiPA3/WpWmUGkuEmSwNThTaN6y5JHX6oKvgsjP038O0cW8lEMhqMPBWVsGohtktprmEE/9OUUlrCixpWg8WpoAaCrYRYQ6R3wBnYTmu3L/iKpNGG0yV6wwXAT6jdrGa1zQ7wEzG7cWxINEJr3k0mUOs2A+Caj/LJH1TCQxuA5vdzA45w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:20 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:20 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 16/24] intel_iommu: implement the get_address_space_pasid iommu operation Thread-Topic: [PATCH ats_vtd v1 16/24] intel_iommu: implement the get_address_space_pasid iommu operation Thread-Index: AQHanKWAk9uYkE5wSkm3TNSa/hRJRg== Date: Thu, 2 May 2024 15:29:20 +0000 Message-ID: <20240502152810.187492-17-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: 802e0276-0916-4017-8e9d-08dc6abca32d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?eTqDt6mj2kA6mgZQ47ue1OkH7MRQvlR?= =?utf-8?q?s2wzvsX08oNGsviwXb+2dZizA9KLKGvYbFZIl2P47i1bmpDZpPXOD8ybnZwUtYaTz?= =?utf-8?q?9WKktbmgd2XXvf6KwVx8XY9BnnUS5y8/f9xQ6fg69DHRx13ZK6x1an+vz/CQg+efW?= =?utf-8?q?ESD1cBDFM14BzdwQ8uxmTVqDIVqwrqThRHTuy+A0boA0Q6iO5hkiuMMLSah8s0n7b?= =?utf-8?q?shCUleEb0XM15w6llUlfN2s7NbMSCM3MvZwBuLpm0FudBFCZNKl34F4gICg42Ls7c?= =?utf-8?q?PCouB0wHCOGuiNyNT+1dwUDZyZRLPhctlNdg4CGZZqyowtzAmhX2YTm25MHRUr436?= =?utf-8?q?DrAb9UrUPa6aomNyzenfqFBR2qa5r+2B6nF7/Zl0z6tav8yUePjZh81Of5PGZG1vC?= =?utf-8?q?zT2KdBZBdV8pPxV7s7iTV/yziZ0qNKTD7I69M9vTsc6PropxiBR3UcAb/xxFLR0L0?= =?utf-8?q?Csa/caMvLMviL32eT9+aPR3YFkpJrGSgML1bzCcFr9Nq1/dSkP96pw0W5HHgM9HNo?= =?utf-8?q?9l4sViyrcky1Ox+w7p7KtYYL4q0f8KVNX1jgP/5aumRI2jyvPO+i6gSStHjF5OQOr?= =?utf-8?q?bZ9g6Le365GuSs4TD2EguPGsbtUKC55lb+XQeSs96DU8RZcbRI5Fv4ULqOTQP07ew?= =?utf-8?q?mPWM7RZREQzJm9l5R9Ie7D+uTMiPaPqtmlgXRpw66J1CVU4UsqKK/9sg4uEaiDZRy?= =?utf-8?q?SRwYYtXMUVf9BbAjnpZewn0+tSRq853NVyyxFDhgfLCmXHO6cNTTEe5QvnqVBZP2x?= =?utf-8?q?0PkYG00KSDgxUy1doquqQqXmfCTkzD2a9eSHZYcpqXtyikaHWN0xHfY77WJaWEJVM?= =?utf-8?q?TkG13WJL1shpa8d2sYp3Aime0vh/26tfmbWguSePUg4gPzdA31mvHR6XjpGVFgSv9?= =?utf-8?q?fQ+2VDMopXQ/tq+eSCZK54dADiMqctaIiUTmzQ7nzkb8kNZzBle7VMk67eTmM+3ul?= =?utf-8?q?0npC31jCJkdaJMCswb2VPFpN89WmqKJgh23UWpY7OmO2abM7vRScVGUFXrRfC+/HZ?= =?utf-8?q?FsJt01YW77Hc96NRjRV8D6N9sL5o2LyUBkzNW8aWaZfgbV7eJOPrVkW/pS48WfMRL?= =?utf-8?q?+ORcCSTAeuZ6cMX4HhelIOveCHR3UBej/vmR0eVTwhQpn9MGUS+opJyD3vfuK12c8?= =?utf-8?q?1h8FZQYrB8QyCJgTn2j7u4qp/W693RcK+gRLPe+2BI0L9JZdelDp6vyv8t9zkl4mG?= =?utf-8?q?XNTo0HjW0Z1SDru1RSpNRCCTO83T5mC0f1wP88cjYOGFUuxbxrCwIwqvuMeakPpO6?= =?utf-8?q?T9/dZGkdcoLUy+Gj1XIO5Ywi/OmOX/O3RHg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Shc4tNhAP3belOIBKz4IX4sqzjdg?= =?utf-8?q?zOHeJzt/+5fk9eAhtlZHpbV5FNz1SAjrs12XoTVNh3NBNpvoCWPP5KgJxtSNdX95e?= =?utf-8?q?bQINtJsZtg+BZ1LFxwrLO0BKznBzT0mCR3s/baMKaM7VHPVWV64+eo1ITp6V+cQf6?= =?utf-8?q?vuJOQPk9mnRTjtfVUK8C/UmlCcOOBwRYjOlt4IwJz4CTZaZPcrtc9fDVGmGlVC6ej?= =?utf-8?q?YNeaRntj1AyIPmQWKtwYBpN6pd9S4G7j/DDi4aJ3sMrot1D1j6z0OTGCymKtoMnRa?= =?utf-8?q?xKzWcky4exCHVCiEC6bRYFRja8599mGmLuMxD/9R7Fgxm4LhQQC7QPPjPVJNWlIUh?= =?utf-8?q?IVlR7F+sBrKYl0/R8X/Tlb7BUoiZOIgzhUPgeAIglpf0gW/uki0INI8BSjiwW98qL?= =?utf-8?q?bWs9ML3/aubghLNp2D1Grpf9iQkAoV4T9p6/xZXmX46NJQD0ZsaRzTFXSQrQX42QV?= =?utf-8?q?53/dnBI6p+PDJr3OdRA8GsJoUf18Wexoa26Qn2llxwFUMEYQk4fd396FWyM4dNAoM?= =?utf-8?q?ORtIAC3yf6MS0HTyTCULRwgQ9QT5rv/z3hmmBYrFCFixXDRGF58sQM5NeOlN73cBJ?= =?utf-8?q?uPGB8tw0u1rkfO6gh8qG1hJYSR5e9rIi8SVXwZ/ecJp/8EhAy15PCPRCuuzuZwk/F?= =?utf-8?q?pdVnmtA3GOKbCofFuKAY2euNqbtFtun1J15PPvWMy6exh9lgFxrxFOgaReUAW/IjJ?= =?utf-8?q?TpFpvL9moqWVk2l2V3Ic9bV9MhM7W3JiRqD6waq+2DqGg0nfLJUnTyPxUBS4PaRmM?= =?utf-8?q?lufoDtmvMDl/UbXQJLQ0Y1Ac4T2H2Ovokq/Gl9tc7+UBEj3cJc/sgV7Lxdxsfm1aE?= =?utf-8?q?Wa/M1fC4H/vAuOScdoXFck/NFRRTnWpGGxQ63v5qPt2RVvpzE8bhUxtPdPUuA4wQP?= =?utf-8?q?ybm0lGsI1d2DjdWsrjieCwk6vFei3njTTIDCzvJuR4uKiTLz/o6fAy1SOXXTZXQcy?= =?utf-8?q?LC7wKH4Y7wDX76e1jneRjWoXyJABGDBy9rGT0aE6pGTZ3Yni+c3PsPRq+vEf6net4?= =?utf-8?q?s7UUFHEHaSTf+JAGMEp7dliQqL3M9TQSbdRRlkcJersbLZmX8XIdmgelSTZ6TiiBw?= =?utf-8?q?b2EhnXrCGlZCX5NfNMA6viIqyLdmTVW6Ooj5qTennu8+74J+0fsNTHCjASBS6fpy5?= =?utf-8?q?1C5Pn8sHI2P162BcLgqE9yIe8CDdqqKxejWP2KC/E/f9qdm+EpGS+n2k5E7F5ridb?= =?utf-8?q?RcGV2unQTP0Mkg0TjndEWAwXa3e3zxoHMtVq28fA0hvdsSpMsfwcp4qi89ToctjFL?= =?utf-8?q?clT42DcP2cE4iUMRlI2URnQXjL8cj5JopoOPRjsqTi/QsjBjzStGFdEOlp1XUD1zQ?= =?utf-8?q?WG5XcWr7cqx/D8SgMDg1jb8r7m8J9Wcb9NwjIZFsd6JtM1l+93yytv+02ZRah06LQ?= =?utf-8?q?4F2z+HeiXpNl6oauk2n66cx4CfutbHmoPcATqpi8egH/HjcH1VQGF85Y1HgiZuAxU?= =?utf-8?q?kPhnhkk+C2FI6HClPBG1+dNq7iDQ7yFj7w7fefftC4PGtRSftxcm1SILO/Wqg/08w?= =?utf-8?q?nJl5cLqtLCsG2oMGbUotrCMRz2DH5euUglKVOQDI7l5DVtKGInl5tms=3D?= Content-ID: <2B95F4E780163A45933357B178439382@eurprd07.prod.outlook.com> 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: 802e0276-0916-4017-8e9d-08dc6abca32d X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:20.3775 (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: GS3LOLPbNmPrxCpSf3rmdizM5cvOTy2Z+Lf/MQ54VAScW9r74kRqjg/FrnBZSq8HSE6vgIENZp1aLW7TkAu6DXMYX6czbh0I6Wq9PaUBndBrfo/N/dR8JDl1uJJD4UVo X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 13 ++++++++++--- include/hw/i386/intel_iommu.h | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index e7c1a5582a..e9fa48b378 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5432,7 +5432,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 @@ -5983,19 +5983,26 @@ static void vtd_reset(DeviceState *dev) vtd_refresh_pasid_bind(s); } -static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void *opaque, int devfn) +static AddressSpace *vtd_host_dma_iommu_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, PCI_NO_PASID); + vtd_as = vtd_find_add_as(s, bus, devfn, pasid); return &vtd_as->as; } +static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void *opaque, int devfn) +{ + return vtd_host_dma_iommu_pasid(bus, opaque, devfn, PCI_NO_PASID); +} + static PCIIOMMUOps vtd_iommu_ops = { .get_address_space = vtd_host_dma_iommu, + .get_address_space_pasid = vtd_host_dma_iommu_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 0d5b933159..bac40e4d40 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -325,6 +325,6 @@ struct IntelIOMMUState { * create a new one if none exists */ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus, - int devfn, unsigned int pasid); + int devfn, uint32_t pasid); #endif From patchwork Thu May 2 15:29:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930645 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=cP93zFOh; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdCq215Cz1ydX for ; Fri, 3 May 2024 01:29:58 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNJ-0003fw-AZ; Thu, 02 May 2024 11:29:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNH-0003dy-8Z for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:31 -0400 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 1s2YNE-0005zh-GF for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663768; x=1746199768; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=3fG8vUdx571SSHY7CyRXK67viHVvSthpg//jIoJ+WGo=; b=cP93zFOhdzxlON0jM4waCuWF15ITU9mv1Zhw25D7GOhyIgEXC7IpZxIL yAYdF1LRaA++Z1CEfiDTK7t1LCVZ0mV7p4DmjBDOE/+6ilCYELLXanJ2r 680STcDwuL0bz3TeAKMLg71x5LbppAzTKCf35/aVHlnOwErmJF+Ards1Z BLDq478ze4Od8jsyO2VtAT+osfRmNbcM/rGQpi2haU7n9ZFjPyiQ3cVPq OsQkdr1lsH0pJoyVpj1zxtp1LqdEKNESAAOoDLAkTPqizBaiNr+jAmZYx y5psEQglF5fd9KKsTrN/5akiVspha/QIoB4Amgu7RtNKm/uUohD3M73iV g==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730668" X-MGA-submission: MDGDJ/kIyvLiZqS/QC9Pr4FSPUFUO9lU20yQWOHbc6fAqMY225E57m0n8jJ9VINrvIEnCxhj/LhFCdpwqMcmhcnIMeGWlI/QOpUmMh2yNCtFcsaLVyl/Jf2R8YQzWEGWeFzkAl4luoJcvOPguDxQCWxfQo68fTkWvobUDHkgzsbgjQ== Received: from mail-am6eur05lp2104.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SUVj7YfnNfTBzC5lRjMYGYHE592nOnnoyNZKLWN1gWmD17lRHPj5b6+lbUNh/3BTVz2VrlXXnOkcvttd6vLHjPbtugjxXKnh1HEnhRAjp4XQcnLk7uEzOyjTXxa83BwfwEQcCCUKDP3MgWFnSc7xFDz6vA1rzcqXHWEow1t5qVZyehkMb3mqW8miyr66wlKQIdVxp2jnCH1F56Ii3nTd1ufS6uVDTKuLve5gJGsYmfYXXikicjM9IMMG9Z1nE5NyVr5Zky+tBaP2Xc2enRFVRlBsBhHxl4dpl5LQrJ5bVAvrHeko0yOl8TUP3AldwpUSNvgM67SSvkvE8fVPGCOLHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3fG8vUdx571SSHY7CyRXK67viHVvSthpg//jIoJ+WGo=; b=Ir3nlOrEeJIB4Ywou01ieq02Eal1B340ikLVIq5dDEjeQMjespjS+GRyWeafchpY8D5Fp6l5krUYsOpt0+FwepO2rqSUb3ID4C6bxYT1zTGkGI3GN+M/Kt6zXcTXTuyugwjyzBZU4eMqIWddlRAnUlwdGebrrlS47ng86jceVkOK8uibMY6duOcoccrWbhTSHbbbm8bcYN3m0k45PCa33DKfArTDxyCppV/WEFj3TgCRMVILt2hGrWp0s8CdOwT2g8MJBCiUT0NDRaCk8K/a654WBgFZWgysdnRYhtLdg8LgQXY0VfNCr13pJjUoEbj4OgbgtLmdnVjbMg458aplHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:20 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:20 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 17/24] intel_iommu: implement the get_memory_region_pasid iommu operation Thread-Topic: [PATCH ats_vtd v1 17/24] intel_iommu: implement the get_memory_region_pasid iommu operation Thread-Index: AQHanKWAb5rqVJmyfkWBpMIvcWYxIw== Date: Thu, 2 May 2024 15:29:20 +0000 Message-ID: <20240502152810.187492-18-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: 48620919-e592-4271-ad83-08dc6abca353 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?v9ccC64t/Sar/bsXbADEvfjYGoUsAvf?= =?utf-8?q?32qtgeqIv4C6pP79OhJ+dtyMlhJHFYkvtw8XxWU1ZFsgycbDL4GX827EkJe2Sbhnp?= =?utf-8?q?o3g+jIBClXTbWrwxUScPWWkiOj4Kh2Wq8BrWkw0uwsSZtT60vD6BvUDo0fHv+Wm/O?= =?utf-8?q?jeFBHXb4rl1pQ75hF726xxytx2fcrkKYBtOQERCRIPs3hvsUQR7RNKUfH5QlLemh2?= =?utf-8?q?X13mjL92vuuu/YsRikn8M+k0CpyS/SzS8LyZJxz2AkwfW2hsl/Zu71jSzfhGQsKM1?= =?utf-8?q?eCPGZwCKVwgGiB+yGvci3fo/wlA4Ydzga2nmhe24K8jeyGTmHOFNkbVBxgmadl3KL?= =?utf-8?q?Evj2vpL7oxppGceYRdVb45wQPGR2oeO3+vI9IE7bgg85SeQWQco8WjPymZN18m2l5?= =?utf-8?q?x50iou1BfHeqS2vLnl0Ql+94KT5S0cUM1AjtMa9uAS8PXB0vHpooP09TaVGu0iQgU?= =?utf-8?q?LQv6w5TLzC3MYZNJ9mP34xiPeqdjSfY8uZMSBt/YiZ/ah24lKKG2GhysGW0ODh/+M?= =?utf-8?q?9tTL6emEszDUaz2xlTCTxHC5Ylbft3gHEK4mV8NwZ6MXL9jsBze4AsRn3a89Zau//?= =?utf-8?q?LD+RiHqOrHUaN3sAnLifDBssP/5nhr0dqaYw52EmyDfeyKX5dDH1jbLslmWC8dLMX?= =?utf-8?q?yQyu1VH1+6OqdpXeUwerwsxYW3e9dJ8QbfxduxGhgGP7f3Od6i0Jvwpr1iDGXp6/K?= =?utf-8?q?ljdYU+nuj6QEzR7gupq0OCRr/c0y81y7Xcqf4u+4A2+8b07HXVZB+xKHj3Sn2blL0?= =?utf-8?q?x6xqBiHqqmakyTkUsw5BuMM06hSd19QfizCo12pKim/nsRfeYhFDI1aQHNs6lPm8I?= =?utf-8?q?tC6R4kYpcbbWk6JNfnXhtPUWwiWmnuQTwoiWikO31v3/VlaTUw+WCzpVbb+5Thqkm?= =?utf-8?q?/3OpWsxwAagCJ8Bx5mVhrpH/4glEIzG/E2higwJbSwoDFC8bv231+CeilOs5NvTOb?= =?utf-8?q?2aWdpm3UI0TS3GdeMD8tYnjrDGMSggyxw+2Y2aEotmgduaAvfP54CKCePLGS7V9Ud?= =?utf-8?q?U7+ds81b/bB7WpOWnLGW09Ht7XCeQeap5glk/gmaSTRZ6WQahqmw8TyuG5e1Q9pA+?= =?utf-8?q?IWbkb3324PVMKnUXg0o0Da69Btx+bbgXrT/mHCwie6o92HlW+lPFuA2482/cI9ESU?= =?utf-8?q?fkYmcwpwuNjpUOW0Cz7/ntCYR/2VuBgStsqbpY5ogcBa5qI6b77FlS1lNyzweP9dm?= =?utf-8?q?jq3FIEpWMkHKprvi/mBci6t2c14mfZKW6z/uqS66tlc6neuUkNgJC5jMjlHpgrMY+?= =?utf-8?q?AN5PPgBfqZUL1/bm58cpmvxE2yDh7zrcTjg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?nW8v8EHo5IMiTe+3IgnE8RIulCB9?= =?utf-8?q?ud3rb6uVmAxrhR5AaQXXZb9/W4U8ytxwQbPOJMw9O4WJa3XxFymg+oN42uiihrJP1?= =?utf-8?q?y7jJgtwm+MjSo0MGN57ZqiUYmDBlUKIJa6tx8ysV4WwnBl2U4dBIGqfcvNsi388Kk?= =?utf-8?q?3zI4iKZpcZN0jO+OAXmrhJz7aNj/7aYHL3KGgsF/ykZU+4AxGjKSIKNrMT7lkkYie?= =?utf-8?q?wkflabsHwle8IoZa7NwveuvNXAueu4fdwrxvDQL/nT344hr1CZF98sZ4+D9e0eHkq?= =?utf-8?q?TwK0YeWhT2RSY9lLqorX8Jae0RNWa+9ZdHUK3qic1K+LdA8LKinJl+NiiWZ23hnlo?= =?utf-8?q?ofXaXRzj86tzJi1FXIe8CTKJQ1T3fz4+DlEkzYpCNLF+DS2adyW9ytcXNUJCu65GQ?= =?utf-8?q?qYUZjhACHEGopzh0BFGcQrrgvgw9af6LR2UJZ8mhIphx8d3qqzPEI/1nltIgYp1j4?= =?utf-8?q?kT2WHwxV5k/MZyNLDh9UFgG26Vh71fPi2IXdw/t3sWAPhezCK7cwPJrK2Y6LKHjdz?= =?utf-8?q?Md9nTDaOvEVQ9dP8IRkoQn/7I7DytC26itm5D5VvYpcBMBQLh//0h76rJ3qWNR+dJ?= =?utf-8?q?FunfLXy3eFnxfCt6zEbYge9fseMY/5cQ1BddQV61lLRIAukcfwG/uXpOGPwiv3A3/?= =?utf-8?q?BsxwhDYnxz1gtRefXEo27NnrCLhd41gGx5UiUeUpt6RgTMXLr6TPVVkL9KlAaLfBR?= =?utf-8?q?CGRD3Xcg6TNbROaM75AhAql95eA7idIaK9ZzSRmxYVrLZHexmVNM64cQSzOhcD605?= =?utf-8?q?joKji/Ao39amvabwQrbkXRZI2iAlNpBZftE4HYMrY3TV7xP7kgPeW9meiuGtMKSA7?= =?utf-8?q?PVZtWzrxPiUh3ckjEL92v12PmqALT3fzdut5MTTO9pNvX/EdNpUQfPftv9pDDqc7q?= =?utf-8?q?XrmHOZJ74V/6fdRpN7ivvGIgIrAS9qlZdPoiJ0QWXQingmfrAoEDQwTsErVyqpcuf?= =?utf-8?q?gmOJP9Lp1H6IBLt6RP/7L/lVndfd3xgCvb2gVVRN7DXCjVQbsC3OugXIEdp8CMmQt?= =?utf-8?q?vyCeSYfN6dKxMHDZNUN+TXkhWBZfhokGihRpVMdApeL8LREGj0wy1A3EA+XAkCYqK?= =?utf-8?q?lfuaAeb2QKWimOq5HXJIIIb2o5XXpxMMIKevhio22fldqP0sPiUPr5beflDcg3p5B?= =?utf-8?q?G3HEpoVBwVyfHfYWDs8OIZnAsRC1pfm5GfECgZFzqvtXg1vorLUsrm5JJRGI2OgwN?= =?utf-8?q?pZ0fRM5iXBrEIkArbbKvhlloz6unsDOe7MK9acru/7f5/E8O+11XWOrawDk4SDhUh?= =?utf-8?q?TIxozHGy+YgGG7pKceAicYZRE3ddrDrZr6xRsxMWHusVU+UUxnlj6eBujibQX0XhI?= =?utf-8?q?Py8TIROT6E31dEQ/PpXn7JzP7P09iYiwvh9QsLDMh7iqwdEgP087I5XUD8Sjvc7hC?= =?utf-8?q?teeOTQODEe4+9xUi9T2k96t5qJ+eIuooh5Ztr1T3GvAZkF4y8GExK7XF+FkOLv0Kw?= =?utf-8?q?dOScdc4XiXqAYSHuJblVpOITSZbCMkDCFU1H5aJlYrI22+5OEql0oXW5II4c93LKj?= =?utf-8?q?9nrrfC4GmT2ua4pErZksSJBLLtSvHAZzIp/HR2AkA6vLKgUbuHbzcQU=3D?= Content-ID: <16231E084BCB4745B636E4BC4B098ECF@eurprd07.prod.outlook.com> 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: 48620919-e592-4271-ad83-08dc6abca353 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:20.6083 (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: eBgjQdvRoQS9KQId5npK1U0gH5BMD5Yq/9THqOBxqWpXspDCB/VoAvo5We+HC4xzanpZot1XiGRK+YOsMXcm5AUuUi8qVFheN+XTNSlEfl2mjEawqUHnOE1ms53CXyFF X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index e9fa48b378..a62cbf303d 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -6000,9 +6000,24 @@ static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void *opaque, int devfn) return vtd_host_dma_iommu_pasid(bus, opaque, devfn, PCI_NO_PASID); } +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_address_space_pasid = vtd_host_dma_iommu_pasid, + .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, }; From patchwork Thu May 2 15:29:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930659 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=F6y7/u3C; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdH44hFJz1ydT for ; Fri, 3 May 2024 01:32:48 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNO-0003iY-9r; Thu, 02 May 2024 11:29:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNL-0003h0-Gi for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:35 -0400 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 1s2YNH-0005yz-KA for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663772; x=1746199772; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=GhKk+A6NwQ+38r5/YF5BJggGjMk6pSdKGBywgZ7mQgs=; b=F6y7/u3Cl8SJvN10qOl/SLgIxU/MTnQad9gtttIRhAG18rrkkKsb9ST/ quCt+UJGt8OUkJ0cUuMokBCk+4TSyXw+fv9hG4MAH4/Eesfwbpvfpx3bX eHpiWoyTcygswEQLCvy03jQFsC1aOKVCdo/zcSbX7W5vFW+bz0lPIQ12t qo7iXupcgBk3WZX+EapMrE2fMLMu5yDI24t6MLLoyGnok682HN9OvnV+x P7Qsyzj0h1qnbbXBTYbV9KKDHqtyn3L9oVA4KsP2vRjwjN//7tyMZ/J62 4dlZHNzDGKkpQkxSZSAUsojbtVHQRvz/pzTCqz+P61dJy6ugWi8fIIZzT A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730669" X-MGA-submission: MDFhSrC/IQCPdwO2SHbYWZIfcT5m7kD/g96QnjcSF2hSa+XS89Y9GUx22a47+pGwJHxnzFWyf+dDx9ZBUPalD65FPUNBs5Bci7aCt8COs7xUR87mLVa+PZ6Fb4zLSf8pa+Q8QEY7uYyW5i8WX8CgPGfH/yA0lRB8V+hyXBR6gAPZ8A== Received: from mail-am6eur05lp2104.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BQcIdsJs3+ka+N9LHFiKevuuuhfPudlRP4SkwqZOkHvQMq6XWCpq+otF9fvMFRUWCCA08gCNuOTpHcg3FjskOQZAvO5AGhl1BHojwkaZU3lbbPgkT/rkNbMovrQS0Ph8lFL6FyIHpUMMBhErJKEfHmdZoecNRNy9Gx5WJRmI1n8cfrGh6zpAr9FMLdU81qXFcW63+ASNTCKhl/0slEUl8qKP7mnjF7vhTvC9ynAUbOBVBLVJ53CB5vX2tEfWA2cfE+IPz7knERaVGiz8dEu+77Rivfew0LFPsNfk/uWhuL7BvfvnMamHf1+yZRskZlx+XkIr5MoDs5kUtKxLmp00Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GhKk+A6NwQ+38r5/YF5BJggGjMk6pSdKGBywgZ7mQgs=; b=iqALBWJ1R6KCU5ijyJBReE2zJusHfb6ufSGK+inEj881BS7GOqXzLR68dF1cbBsrkyLoJsoZs7suAZ/qONoJllx4x7kt9dH4nTEz+lGtCwseXqOyt67kJRiRJbKA3E1l1vzFa8vKGCRumfEvbtRLaE+juc4tC+4knG1VhPYt6ax+lRMWgkB+kWzFpvM7ABsg5AemLvPJqjSI1ZDeerPlXuiSvMgCfDwtf4DH8kk2j1uW9r08erppVQ4zM5Ly8HOXyLxoxmWnr8a4KWjTU8I3iWx+njW5UG82Zg84xQZDTTe8P2/RMWGgUbwMPxJ9VskdiNVdyIhws79WyrIJ2E//1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:20 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:20 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 18/24] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Topic: [PATCH ats_vtd v1 18/24] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Index: AQHanKWAt2VhTY/OvE2prqz0y3GhlA== Date: Thu, 2 May 2024 15:29:20 +0000 Message-ID: <20240502152810.187492-19-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: b6b52596-5daa-48f3-80a3-08dc6abca37b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?LkujXiglvFrn5sAGTUhaDT+J/q2OQ2K?= =?utf-8?q?PUnd2cZIp20n1IripSJsF5Z7A3XThIAzc4xgRenqNgv56Jtmq3l46xFeidAlYN6vM?= =?utf-8?q?st0PLwk8Xd/tHuIQMUKrdhriM5D9iCIv+zJ9xfFJINo/Cx3sbwk05XSv8TtWifrgm?= =?utf-8?q?3z63WdT6cFrmwX/HfzorMAYV5wNaYU5lB+SS3Fsya/pb94CM+qH7fBbyW6RtbjfuY?= =?utf-8?q?q4Q+fPI74g2rOQWuL2h101v0tKkqZDcJJj//sBTbIF+dZKgk4M6Rq/ASFgg0YROae?= =?utf-8?q?gni2V8dzScyqpfrU7+SZooN2SQtov6O0aEwo+oPywsXQExpuGZXltM/pbIUfdX7lu?= =?utf-8?q?Aj63vltxSt3o4Q38/GLo+x4VC28tCU01emTEH5YOPUjceJD4Ouojpn6l/YsnzrTuE?= =?utf-8?q?Rx2qc+wIVyx4Fft6i9QRCgI3OGD/VNGSOptq+lyeGibOpLyImEUmudBKEiHtl0U3Q?= =?utf-8?q?ZTzamTGdGSaf7R8hfbJmTXCcWeIoC+oMDaQJJlICmrCEt2NJaBim4G7BF0TjWg3YT?= =?utf-8?q?Hk/GgWtLn5ldfV5lV76uECR81lElElD0yN49MfHqUTtrBVa0RiB9CvaoB62b7RUty?= =?utf-8?q?3/oPB6BHTjWeN8GOqOPIiIRSicjatbMUn5pb/b3RVgc5GstrxJzaanui+F2jkrsWH?= =?utf-8?q?LHnx18z8DMioiQI0J72uvcXTYIuxwzr5bCy/00HpBc3MWkf3nb5HkuyNVu4SsLnd8?= =?utf-8?q?bxexKsMYoT/Vdb7gMbbViIwMQeCC4yGtQ4cj/XaKNb6C8KSBAa8SfKN0KYWP7q18c?= =?utf-8?q?+Vn5W3HeqAGoU+gRlQZr0/k9NfKWwZw1jm/s44P0+EfxA0F925N1TbYHrZ2dhjf41?= =?utf-8?q?lfIy0eoc3iIwdTRuUQnyAY+KXeXhgTgaLaaZxuBt7LXl79LLVdnUoeFfCGym7+qTe?= =?utf-8?q?/H3KdmW09lGYodu1wzUJBalhxt55ONBy5h/nMMj1jgxpUtVOV8XD0u3/mRRyFUdqe?= =?utf-8?q?iOrwXB6axsL8EY/zbnON1N9oMJTfTiEGc5GIbbst7i4D105jhaZz/eEhWwX456PG7?= =?utf-8?q?HoTW7YQ8HIF+/5J1twpHdfI7TXxzfSHEV7Cc8IPAxAmGQUrA9HM/Mup7hrMmpTJox?= =?utf-8?q?l8M3eatd7TleoVRUy8DqbHB9GhWevhUw5qpfxGYPRbJ+lUyI+y9O+H+NEeguDA+jp?= =?utf-8?q?XifXLzL/ema0S/K+BRzo6wqM67ZVYdMFBsLW/nd2JU0+g7M62C424OluqlXTwR3fv?= =?utf-8?q?sESnXKV3lOLZ5XPeZRV4Sm69OIyhI1Z8NT4IR6FhG5c+XKWWn2gT4kF+RAMI59rp4?= =?utf-8?q?ZVa9ZFAP0D+s3YjmiPxusfhFVE6plsPcgow=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?X+WTULjTBeewOqKM5rcyYf7zxWDt?= =?utf-8?q?yosJKN8ySZphoqwoFyug1CHBkHmkgkvVXkRISglV84UsqRwEyuePwGYYIGPVRZ6+p?= =?utf-8?q?4mxHSpdhBvrkK4tUJHdGoxSqKcqAi1awGG6SoDz8Hle8jmXcpaPvpTd2sTRENV84K?= =?utf-8?q?aqfq7DZWbeZkp6rRXJHMmbIun0W09Mwq9imFoCKnaY1zJ1OKjy5cY6DIrxGsYq0hr?= =?utf-8?q?2PlLCRhwrcTd+Fw0wgJN4IB/gEhWMO5EZA0yr9HfTZWHfgBwFFlcjtk9Iw3N1B1Yx?= =?utf-8?q?dBG2WqDh6tXKdska6+TFLEwMRCs/WaaMdWdWO3DnUJWsna258USqmlmNsBmQuxc7u?= =?utf-8?q?+il58CRVlyShy29G38OPK+EAdQfO3qhGFVWrg7LaxX1vxeuycqlczDLOGMDpkuY1D?= =?utf-8?q?q5N+U4uYm+BMLPchtbRz/yw1Hxgyc/LXgJR1EwC9PbE+Y43xTq/1F3X9LVzYMdHl+?= =?utf-8?q?MpjCdeMbaqgN/AgDfhsiEFjfP/trDBGpghLIiyf/2E2WipVGgr8fg953SImW7UXKa?= =?utf-8?q?XSQ4FMcyf1pkBauSDSBphfZkDZ/OX8U45IYnAzbIzIVwyapMRumhRAkyz3uMx2fGK?= =?utf-8?q?rZLc6gX8vm+FytylefNDHpI2FZvpv8fod94PaIm6t/rgfBRFkhLboGRQsbLSWsl7b?= =?utf-8?q?NlNhUpXiyEZ9Rh3JTmdRCXR3hAzDiFneIhmxd+uS8nfIZw2xrsbJA550s4z3Waz4a?= =?utf-8?q?Tlv3yS7B0FRR2qxavLz+0ouambAzt2u68udygwgRS5ANGWQrvHc78Qqusu0GwMhSd?= =?utf-8?q?ouZ5aDWl4w8Uv7xkVDIYuqY/qiWvWvNocEr2M9RWldwmeD8idhtr0N3JyclO37vu+?= =?utf-8?q?pp+skFBENGWFgT6G0jGFkqH1CEywjNXTrKDV8eN1Sr5Euyw+FdySHxFPhtV7yDJmZ?= =?utf-8?q?CJx8kdlquocORXDg+iCrrCE1294CMKdYNRvA3/vHqOI5m0URVIgnKdkOJ7O9nvaSg?= =?utf-8?q?R+NIbRULdJnaW4u1/TPfr5ALXGRAFf5Lzkl6vddhIc96riwJfb+/QYM4D7XzcQal9?= =?utf-8?q?B1BZdjnrl+xH+evfDazPTm1RxXyJAOO/pKgfsT+zLw9T1JbXc+eppee/1RR2w5Zfz?= =?utf-8?q?HoZQ/K761t0mOkQD1JPTpHNxN+eP7bGDY7c2riLoHEPBl9DKdb77AGxYhkLvDIuGK?= =?utf-8?q?7DXBppJii2U/XKW97Tk2Lwpia6nPgxrsFPBnFD/BpmQq7v1ckOocGMhFGjkuihnP0?= =?utf-8?q?z4oDk9Y+VmSXS5lkW6bJdtrENYsbP/Ct8+29dEJUqkahUln+CqAvhZ0ED8W9xj2pA?= =?utf-8?q?9TrEafTUioQdqrDnsaabdFrP44tt+poSz6D7UXoaZmKx3JoPKvLxX2Fzkrmi1KjiG?= =?utf-8?q?44RtDiljDmGCo2iEiXx/lNLu8BKu3T+SrFKirk02aUAla+mbofLhrnpcLJvAk/riQ?= =?utf-8?q?MsGZ47hq0NxZysv3eUcQ+5QwkFSc9tDiA1WNy+XZ7b9ZYYeWtWKxxDPRS+HvXQu6U?= =?utf-8?q?YBuo5G/u6si1jQKxuA2irpfMbuVT41GCP0UXTxac8BVvrvqDtHhYxIyTYRESEo+9i?= =?utf-8?q?X8FFAhyd5w3HT4YDHqgS1oGzOhEcf5yACUf+DAKnup8CeZH+CYfGXNs=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6b52596-5daa-48f3-80a3-08dc6abca37b X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:20.8572 (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: ooHJ2pYVP/m+F3Tv4SXrwO1PmMSCOu4aExpmSezWRQ987tf5RhWDXnMZvTZPlpJFyENf0uaHQArIusO0L6G/4VvWujrBAjO60NDxFxH4DlLiHaRO8PFhvGrVY67KytpH X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This will be useful for devices that support ATS Signed-off-by: Clément 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 304504de02..f4b33415d7 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -145,6 +145,7 @@ struct IOMMUTLBEntry { hwaddr translated_addr; hwaddr addr_mask; /* 0xfff = 4k translation */ IOMMUAccessFlags perm; + uint32_t pasid; }; /* From patchwork Thu May 2 15:29:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930662 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=E/ZV2T73; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdHT6C2bz1ydT for ; Fri, 3 May 2024 01:33:09 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNL-0003hd-Uc; Thu, 02 May 2024 11:29:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNK-0003gQ-CS for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:34 -0400 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 1s2YNH-0005zh-Iw for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663771; x=1746199771; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=PEzIBq9lDZaXfLf0WUXeN4trwrfZyhyn417eRg/Zhek=; b=E/ZV2T73bOlILIbjZsjmMGArJx5Tf1Fjt9al0f14TctTVlgNFtN4LY4T SHbV3x1xQBlOAKiAsaPHVNnsVyw11udsxYK5ehwhLmMOgF/MzyT1BzLbc CbEcpjuj+mcMnRXBacn4i+xKGUGrrvKuyUFe1xYrFuRBOnJqfz1fVsDtB 6INi66mhC53hheMO+3sL5TwO9Bxj4MIZHiuVoAYc3JJf6zelTrHbbY5rZ SKmqZmkNqptIthZiKG3A4LmiTCZc43Bcqby7VM0TfGgrqmk7XYIhoVrIR juV947hJfwzfpqdyVSoFiLLTRPZiYOIgWs4OyWMdSO6KxlI0PWKdZOtM7 Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730670" X-MGA-submission: MDGayLYUZl7AF5RudSH0C4/9kh7YGBbbqC+MYMQylglOm9WiJsj0UfXR04X615TflanUQzwiQYGdefNeEEx1o2IvfDaVC9CWvZXIeAnxerya07Q8dEo5Wt20sbBplLAPlqiMKbjk5YRLh5T1oS5ACAJmE40XriVuYzNboRjBhbPK7w== Received: from mail-am6eur05lp2104.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PmFa+5meWKRQsn2aTJvtnYWg5RfInB3UnJ4tGOFCuYp4MpbZulk0qEeiEB7FlDgcPIjr2apd/STQ3fuF7Tlom97nyYDSkTjS3Y0edMsE95xTxq8fGABOvokk1GnLKdLpYy79ao7tqeLFEjMe3zuQEWfED/CI6WrpUiTs4JNMvwFxm2rEwuKGqMF3qjyUCOLro5mXNMEa7VzfaM9ON7tHhKYkHXdHA2YbzLPVEPkqsHeFfvA1n4xQ+NmmrKLC7wBUgYW9wjPmHGb7kguzJIz4fY8LZzaRP1k5K1KuJYDb/39bWMgfr3EA2txjfWxg4TVq2Dlf+DidMKp5R0SX2NqBdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PEzIBq9lDZaXfLf0WUXeN4trwrfZyhyn417eRg/Zhek=; b=i4R6hAT744FNaRJJB/tucXOkAC7jhOzuMWMPmOLXw9i2CpMp7P2j4XVhcLnHVXkl/6/arhUKUjiRLQCZmbaL/tWgJL+HXp6HLIkTGs+QdP2VUy1Eez7zycBiHTWmeokbpkRiTuj0wPDvx8yHS+Bmr7lML57hkV7A05BQOJ1PfFZmKb7oZwRjc87kauULQEXk7+MrHzj8j4abpXhsLM8s/CZG+xtpwWk+h2SlUOe5h50bhixiwFp4+MysGgD79KILmXVmO2U/BCvRebGGEToD5HMXCGRAGEDRaiE5eWgY2G2Bo3NYBaoupvrbZK2cWOmSBvlFxk0qhlV25VQdCW9fTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:21 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:21 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 19/24] intel_iommu: fill the PASID field when creating an instance of IOMMUTLBEntry Thread-Topic: [PATCH ats_vtd v1 19/24] intel_iommu: fill the PASID field when creating an instance of IOMMUTLBEntry Thread-Index: AQHanKWBZFgBt0AaL0q4Tqeu9PVqZA== Date: Thu, 2 May 2024 15:29:21 +0000 Message-ID: <20240502152810.187492-20-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: c7f5c3f4-9197-41f0-f61a-08dc6abca397 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?ScVjj42UVb4SuALCIQk5N0yDaQbLmeX?= =?utf-8?q?OCdO+mffOOpsI8bycyg6PysqtSvyHt3nBTJWfIl7C70kBQR6NpsOjunqRIkIjW1p3?= =?utf-8?q?GDKYzBmu18fxEEMmUbzxw8ePD8kZbwJ891zfEoqaWc2MvDq5oMDvVJbNfBBHX7hbA?= =?utf-8?q?Xd0ClhqLwzhuFaEjKfbMl3rKq/Oqm2t1FE5i67mJX4aa4iVjGqEQoesrbLgHEasEK?= =?utf-8?q?+P0JJqW3KGSk44aveYPC9/jy9Y5QVAOCv0bNWBNvxld2z9DsaSVylOTREpnCfoctW?= =?utf-8?q?665gtKF53q3sjlCTClfoD42xHZXbLChdPjf8hhtuqXvZXcEoRna0pPqAJ8Ipoogt8?= =?utf-8?q?DdlJF/g2Vx28L/+pGJrF9yYk3I2Grnl6T8e+pH7uD9Ppnvk5aMVrYj5ReA8nW/IG5?= =?utf-8?q?ndK/p07jeQoars3Qh5Bqd6H0TQiwwB+RP2QsOvUWBEJkrTkjLqFRGeFFdYThM4F9I?= =?utf-8?q?EcfG4h9zFF6hWG3cjiqCt2c9U9tYqJYt/UtRNedq5JUM5/yMe4SNEDXUxggUFebyj?= =?utf-8?q?azixi1V1hmdIN4wT5i2n8kbDasInYXTBnOF/VaMMuwMCRVBSFmGpkQwWcKqLcCX7H?= =?utf-8?q?g5ygVttablLe9amIYr3SFCDehMqU/fQPn+g5iaIGR0SMC1iqWBubx0JKNcxiQWkbz?= =?utf-8?q?bpzAMCHaYtA78Y3V+AvT8nq8WvN0CpjdfGRLoUN2+9S4ZgpWpsl0wUViKfEF8ai3D?= =?utf-8?q?Tzv6Ac1bDR+94ROOPp0a1kxPbJijo6v0A69cf0r6H2nRTBgVEIA3UgI7X/2j3vDcr?= =?utf-8?q?sGemWhsG/3OiUs2+BK/4UQx/5ospBGorqNNqvcbQZf9dFpm+EAxsSrMELDo5S77un?= =?utf-8?q?QRm8bJiWYV4TPCSh7H1U1Ii5ZWaVMOd+JPELbJ67hNqXC178uZw3VTJWheb91SMHq?= =?utf-8?q?DlDWjeO14FBRp0W4WFoqiWuTNK+RRNFQJsnem6f9AtFLH/deKNaLphN9FktrDaX73?= =?utf-8?q?EOTA+1I+zyjJnPbzlNiVATLjoZ6SKv0PU6yDU3+okh956cLeJX9vN3TaU7TNLCtis?= =?utf-8?q?dP1WniSrcHD3VnuBCs+Iln/wT5qNJ4zoEaXMsLrM+l1Xo0lOlSLlzBnpFHZAn6i++?= =?utf-8?q?vrtjLxu9ZS3q2t4TkDQwePhijWoNJEiK3GD5X/DEDZe0v7bT/Ly/I9ATWmzRS9MCO?= =?utf-8?q?WPYFfL3j8KAuTm7TThVtz7ubnr1cRXoIniTB09WDFabII3aeEz8NWSpUe0eONaSJj?= =?utf-8?q?Q3PAsus+N12Cc0G2RZdygDKPjiF4krW8y4namPCWiEH4cfmgSfDBSGdK39OAy1dRx?= =?utf-8?q?ao9OVLSUfcdirD35lsq62pIpvb72k3O1Arg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?FzzAaLE22E84A/AYyeN//pvDC8ZG?= =?utf-8?q?0W/1DCp0we3EAyjlNBUGvJm1M63UsVWstb/0wuZaPOd+yENHiT/q+D66zv/lmPB2v?= =?utf-8?q?LiGZDhaLOijkbmiRNiyLKgOJFIajbXoTK1PGZ3j3kRZAYEHEjAYP1JGwHIv6h56mU?= =?utf-8?q?EsPfnbhuOeUlYNC/8KdCOt95r6VBNJM16OzgFb6S7e9Yi7YRDdC6W5D5u8/OsWpLa?= =?utf-8?q?eGJMgdqH1zfvJNxfHeViUyYIF+ZoFhFWcxiSAJkhP1MD4ttDXgyxlr/FQLUGCnA7l?= =?utf-8?q?MpGNVQleBLj03itRdsTWbhwOPBVaIy1vSHtmI6mn5Itmgf1urGYa+h3pvM/oKVmMT?= =?utf-8?q?kgesvom4MJpyzEJ3uL8z3VXJ53N9YLhiuxXHVxApbqEQUNLyMhxOLsPks9Al6VcNh?= =?utf-8?q?u5veaJn2MypVf0B3k+QciHkRf1CqnQ8CctjLR1XRexKac2BGI6FeIPNxPHRFtF3x0?= =?utf-8?q?0T/ERj2734f8Dg6uUt/y5Gm2m38j2T0IoVujxukSx9Ygty+Pd4mxAPgDtZDgLuSOB?= =?utf-8?q?3AHz22Ml3UCBe8m4soifTR1y8jnSOGHyquo5Z8/tBJEJlx/JQx1G2eodAS3CUZI+Q?= =?utf-8?q?8gjjUvQiR3LnZDH4gbqxplzfcf16OHboIW2lIN3CSaIK/iTNwQczJkg8sEEhrW4YM?= =?utf-8?q?RVXJ4UuWuvbYAWwNs2XBYNlzY9SsnfVt3oO+IpcNU1vbzTBLAMMjI2H7q0Rqv/XH+?= =?utf-8?q?O0sxj6UW/1SuJRx/24OeSJOgYHXWvkjwSU82ZsHwpvD/Vfza1dCk7w1cC87geTo1a?= =?utf-8?q?bXvRsq7AMtL/TczsVMh9odtQjLgJge7ntPfU+1+WSUnLH4NLN9rbCBSevqCdLmjAX?= =?utf-8?q?6W+R2N40qTsMG6SN5Z3UY7Eb1UqRA5Iz1t/7BfrpuJHdPWkDi2InlMS2XfBVBvSR8?= =?utf-8?q?lfvVULgUPmGtuJDxWMW6nuHxVnpsaoQseeXPX/XihPmOhefWlWTgHcvvIFGJt99tv?= =?utf-8?q?gnaIKikPQI4i5ybkO2D73l5Stl9ygygDs3mH5D9tzkxZzeHcbO7tThnH2dGm8QS9M?= =?utf-8?q?IYUTUZNhvUj5E14wYHpkU4qz5EGJcsZEtDYRlkxpoJJrSA63oQNOlWtqBitiqG8N8?= =?utf-8?q?wsR9dI4mAeSnaojPpum89Q83sIRBY6t1hd0nlZ1uK8kAk7lYdjiwRpV6yVu1Qks9/?= =?utf-8?q?T4jYHFngPmvblFFPuAhj7I58uD7RjGhJpL7u18qITEXmuj24ipRzUgN3VbvICT2mR?= =?utf-8?q?sTraNdr4Z2mmciBRAlpLNOOiMZA/qw0hOttPEMSYPBvwNFQyTDFRJ6vMo8AwjOcqZ?= =?utf-8?q?/gw9bAj7rdD7TaYrZlLDuoyp6g4En1+ztpKZmjC9GLBrpuhROpI8shIZMsrVyHOq5?= =?utf-8?q?O4DxlG31huk7hYILPCvqSAveKe4NALxpRqGDVIzaa1t5L7M6JJOMEb7lEzCNxPBtN?= =?utf-8?q?BDchniefvGlQX9fgRDhZrp+4FMDUNBAgFv3U2SeAGNKsXiPfyte4bL/VjTRWWNONJ?= =?utf-8?q?w56c4B9u0M3sz0oMmlr9ZyKQ3ylxuYIMSWQDv2Gpm10EfBqvzfaikeXDYYKJCARox?= =?utf-8?q?infNYxKijLKZXcyO2MWkybkrPky1FysFVpIdHHmlqbk7X4KqkI2oq/U=3D?= Content-ID: <55194E1E493CAC45B137755E0A182A12@eurprd07.prod.outlook.com> 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: c7f5c3f4-9197-41f0-f61a-08dc6abca397 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:21.0598 (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: MINmG1/XkSCW0x7Hbr8IMiK8sfOES6CHX2wNAbphaJTIbUw+Uvv75BUahEcDEEcXhVh//sdHnHeXynqLxuygipgkevqy2MdAj4EdOGrkL9YECU2iXkRyVB6Iq3skBscc X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index a62cbf303d..02c5f0fa4f 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2302,6 +2302,7 @@ out: entry->translated_addr = vtd_get_slpte_addr(pte, s->aw_bits) & page_mask; entry->addr_mask = ~page_mask; entry->perm = access_flags; + entry->pasid = pasid; return true; error: @@ -2310,6 +2311,7 @@ error: entry->translated_addr = 0; entry->addr_mask = 0; entry->perm = IOMMU_NONE; + entry->pasid = PCI_NO_PASID; return false; } @@ -4338,6 +4340,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); } @@ -4914,6 +4917,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; @@ -4926,6 +4930,7 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryRegion *iommu, hwaddr addr, iotlb.translated_addr = addr & VTD_PAGE_MASK_4K; iotlb.addr_mask = ~VTD_PAGE_MASK_4K; iotlb.perm = IOMMU_RW; + iotlb.pasid = PCI_NO_PASID; success = true; } From patchwork Thu May 2 15:29:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930648 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=RUSDFaGl; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdDQ0dB2z1ydT for ; Fri, 3 May 2024 01:30:30 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNk-0003vs-6a; Thu, 02 May 2024 11:30:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNb-0003pf-S1 for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:51 -0400 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 1s2YNJ-0005zE-IP for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663773; x=1746199773; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=UM2oKYwJZ/PFCyVhG3rBpAgMLxmzRSRdT/0ePXifSdo=; b=RUSDFaGlBNv0InvFShfQBQa6Ag24FC1M1xDx8acoO3O5qa63bIgbCeZ/ g/WmS7h+dHQ1dBhfeQgZNhoZnU+XbPbKvP5PVamfSAXV1IVYT6d2DWJQE rw9ajC6yrT2gkf8Bz6a+Yk79p5qQQFIga2H1th/saqgBQlNP8OCQJJeBt dsCksPfbPaaCII2zA+H827aDdYsNQffpTK2GQ43u03edh1JNQdSz6WzvM 4THOm7iWicjqchVqHbMCfaPnWTY8WDVsPOfdpnKhpX+wDaDXadFQguvWj kaSp1B6sTJ1/4WfgnsTpm12jPbiNkyVJQRT+SOFQRhAYq7kAXf/prCPki A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730624" X-MGA-submission: MDGBOW60AbjKHZcGtBbmMTOWRYeEI/3NL1PpJ34PK7CB9abmHUXHRdu935Byd/hdcDWzNaZr1O11USRCEhLEG7Lbzv4727h8y46dQC4QqWSZKB/nveJy4Wi8/ck+spUEcOAS3X7rpP68LpzNyXmcmphltNm2ZFTI8PdLafUha3mrQQ== Received: from mail-am6eur05lp2105.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NLp1qHviByVLChC0B6PFHPdtJ47W7EtQbndNJ0qHHyVzmRZNNaXCEuGfwODcmFviplgis6uVOIJ7/CF5EefXLqT6pZrsTbbK+bbKh+Xdc8D/SmdLX6TdnjfRP0oZ6SAMwDmUTOxGN0tZOA76WpeJJMMSmKZ954+vJ+oCg6OvN++daRRtO10Alsuw2IHEHtzjJAl501JUWJwgfFpSs1qpNFBdHiNARAwBC0pFCiXaKBC76VOEikU/WIH53A8+6tWZfkad8QwdjCIV2v2eBUOAaO9r6vq+VrdH8tS0vIw+J5py/HneKn1yr+RyxJe5lHq721RG+fUhlmLtfAYDzWObQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UM2oKYwJZ/PFCyVhG3rBpAgMLxmzRSRdT/0ePXifSdo=; b=J3Gugyghl/1lQRj7vSI6G1YAKbfgbvEzm8F6pzUeEveZbW1r0beLq/DcXq0YsZKCPhXTIsQcMnohtZz8Vqjw1+rKDtw9P/tDrIZRalbFQCglSx+NXDJF8JSFdu+3l6k7TwV6Q+9Oj+FxRYMu3MoS5IVMHtHzOXd5xu+xTr4pggwli7B+yWS3avnmxfPGpba8G/mSyQnSpa6t8ZjTlhUirRUC6yZp5R9guSbt2sE1szjIMYDpwR8F3L0YqouJRNm+VBIbRZxb5tQWkEMwQvM4vjQolXSG6b5+UvMq0F49LdjRnndjy2X4YuvEkXkX3v/LC9D3u13lazCUSW30MiAyVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:21 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:21 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 20/24] atc: generic ATC that can be used by PCIe devices that support SVM Thread-Topic: [PATCH ats_vtd v1 20/24] atc: generic ATC that can be used by PCIe devices that support SVM Thread-Index: AQHanKWByKvYDmYBd02klTL221t3Bg== Date: Thu, 2 May 2024 15:29:21 +0000 Message-ID: <20240502152810.187492-21-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: ec7ed4a8-e661-4cd5-b22e-08dc6abca3cf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?sL7FmSfONQ/MWe0ycGW01NfS5qteHoM?= =?utf-8?q?Chyf/OMsX/urINMNxez0F/64lM93URSKefjKgYMzpUuygP8KOK3/HQLQFzzNJcfm1?= =?utf-8?q?pzoUTvDSprRkJ67jqGumy+KZvS0TXlfo5lsn5VkPPIyEGj+F7GGIsjPVjkbNJ7kIi?= =?utf-8?q?k7Xsi2uF7JU0i0y51IsQbNcNZjltADJLWT+Z566wD9LdRrs8AW6Z2EVDd2xrtoIvT?= =?utf-8?q?45aUQH0Oz+e5YEWzrl6NyM3ShQsCh72OSIeC56iwEdBNvyI1lSUkWa0TDj0H1pcGX?= =?utf-8?q?572NQZ8kfcit5mqn0L8QbZmrEiRMF7umxqq3C4LZPSYgCuoznsPvaI7+qGy5L6g0T?= =?utf-8?q?tT5qVizuH1F74zZg/hMU6GHa3YltAnr72SZ1Z2GSwmwXpBHy7XXidbyN7xrSVrMfr?= =?utf-8?q?VXgozEdSYkPKEpeswdBmlJLApfhqZwE2l3DthoYA+vYbI9IYt1sD0M79aJYVvZvGR?= =?utf-8?q?ZOegaaeBDtuVn5hK5SuPpBhTpaPYUjmJZKaBcnB2QEHTYtFp/HIrtOtGANZFGzR9t?= =?utf-8?q?Mtw2MJfmUsGtDt7hPHPUJv2N1pgSWSiQx5o6ROSBNBux6I08IBzhIHHE+P1Qhrgr0?= =?utf-8?q?EcjabbwbKpjWXSl1MerSGKq9Cw0O+GRcgO/VPYCUfRoKGFHZeePi6Tyip1V2Ly6iC?= =?utf-8?q?+dQc3jn7zR2Xbzlj4WAAD5uz6H9mNpA2AgkVTpj3CgEulz9Lwdzr0zwQJ+2QLVpwz?= =?utf-8?q?pDKVC67zuh+uFoyXSWtR1Dyqt1n7ZZ1826BRJpRUwPCL8cPuQesCeIetINKiDAsKp?= =?utf-8?q?vgAX2nRLhgV9bjFoV4FVqM0fXlWSNiy98LpNrBajrxfW2SuJeX6/QAsSiEFOxccOc?= =?utf-8?q?9KZ/GFi9uqwwlgURKt7RJKOPJudbrqvdtQ8HzukQ7uebr2033Q6KWtiAv07UYlIu/?= =?utf-8?q?SpbEWTAIyVAzhovNyUvAaot52qx9bcGUu3BVye/qYcxziH9S7fOgH8XbqpUDukiWw?= =?utf-8?q?a0pZhOGzMrKiqUIiVuaaOUBHFDd2vZ3JPQKPeWX6/3Y3rCbiNn/rZugN6R3G64FrK?= =?utf-8?q?o5V+PPOQ4swlF+cCtnsuL59HirDkUhLDLzsHjtl+HOn19/msQUw1y3qgA6lujbIER?= =?utf-8?q?2jUQX/cs1+9NZSqzg6S7vwND4Fdfh9U53G9jzqikDWVbXeRu/WBycZkKK0sddRlvf?= =?utf-8?q?C+GbvLTYaoFbftn7DFYUIrgen7VoHDDt0xnCOQQDejkCJp8RpRIT+fEtmpHlozQJD?= =?utf-8?q?C1pCfVSzJYMSA8hVdUUinMsG5BgYjxhQ6skQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?kD6w2vKs8gznVEJRZ+EJLLiDUt9L?= =?utf-8?q?BqXb+6S6RW33uazSqjWgW0JJoxu5Hz2L7Wfc7mwk/0ouuIHTbeeGwWUXPbr0nbKfL?= =?utf-8?q?EgyxYvYE7gJBgWnYFIsuAXm3gcU3ILc4fzy3WOIowrOQ5whC0uGVFEs47mWcswM6z?= =?utf-8?q?YXAfK3zercRiPVif2KaHL4lBZPeqpTr0R/QiQU2q7wm7bBoCgnaZjbvj5FmOu+yQq?= =?utf-8?q?IUhSQbmZFhe/1C7e2TRwJx75i7uAqeH02GunY0OyhDMuyFl39BuhV2GKVtug39KHa?= =?utf-8?q?2ieFbYPpugxxz46lJWk37ERKJuyt+/y3SGfBj2hbkq9gAItxHTZ0ESBjAMdPo6jnU?= =?utf-8?q?l3k/C3jtOeFkWwqzuGtY8ewBIPo2KcPwzEShl4cGDmdapLq2WgSiUKHpRDLr6hizt?= =?utf-8?q?Kq+1AHKt/d/ItTli/tjjJncKuwl/+RIHOlruUCxz3j1BTvv9FIH+1RrSJkzfiK1X0?= =?utf-8?q?ECKrGe+brlEIDVM3Syz38v6/vhbIdeE7xtrsxqwELQ78OVj5Nxw4/chsIfABplG2l?= =?utf-8?q?SsYX4EdZPOXUzrOkQnlrxx0XuVuIePa5F5f9htE0hFet0VTWZusJ9RZTRaRp3YDfq?= =?utf-8?q?e+OxwcfkmrZ+9Cj4+cmKgzczp+qviDoPfpBUSMjs9ijCXa6vJBTaXBgW6QddQfEM3?= =?utf-8?q?32gwWOi7548+bq7F2xE2zqSEaHWOS4MkqqTSNpWY4EG/+Lsgcjv9K7/B4LbG/WCO2?= =?utf-8?q?V0k+qW4FwQlCsW84Jjih4XAzt4rfKfuNGNMn+KABYbDfKWLqF5LZz8/VY2IN2XY8u?= =?utf-8?q?P1mSBlTDlk/UUetgLjV5vD8zzh3qTx9d/n+mNXIJefrT44Q1F59dUfOisSjQJwI8Q?= =?utf-8?q?wwRcj0+1nZolRqDp520vzQ7TL8+xYUwmcIcAG5Bxw0fi2MMC+a1MxwbTlGLO2lwLm?= =?utf-8?q?5cL5Ma4+pvHE2sqf9yw1KsMMfvCteZIj1lihbU/atQbsBqp/h4DX0xxvqNuEYV+Uh?= =?utf-8?q?XsKfskx81TvaIf/P7JqUCMtQkKyG/kY+wRbi41HJvimRL4bwYC+IM6RMx6ec/S5b8?= =?utf-8?q?H0+kv0wuJ/y1OwxbNzmWnzU6UnfX8DUEncm9VuedMoWtTJLRR+hRCbIwDJkiyI6Hb?= =?utf-8?q?g+fwRXEmuEuuoGM7fNtNsjA4zC99t+NRmahmjaMUMOld3ccuZ7oRH88/+/+bu1CSu?= =?utf-8?q?rvckYabR1ieb1Fw6r3W4RG/ygps3T10tEMmqxpwgR/L/e5FQ0cxrYfNIYUve5kSMD?= =?utf-8?q?xBbroYbFFQPypG2vSuCcC1yzB1Mp/dz6KqOcLabsjqJ9dxQYTbo6MrM1FcqBlmLCP?= =?utf-8?q?RzeUmnGdLTwnAqQcz+ZUOCqJ4sHvzoULljpnqt6jNQGJdtGzmVSjSvuwAahZDd3IO?= =?utf-8?q?0CIwY3jSzbCYlLZptNHGi9hSK1+EO5bSwSr9yE2Md2rIkeqzZmD2F5LaBq5d6xa76?= =?utf-8?q?ANXSJnSuXcTAdeCP9QSUvGCuPJUccwn99acp4fY4TBqZRleGaBKmeGrIt5+eUP6n7?= =?utf-8?q?tYIewSeF04J55XiqxlY36AFB5cibo39cpnNfqiClFxTWk4NqMNd5bPHvsyUDoD0Sg?= =?utf-8?q?tMrX0nGZMHSguw0O222oNetY+euYHxztI1YxjDwvop9csmCNQsRUBoM=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec7ed4a8-e661-4cd5-b22e-08dc6abca3cf X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:21.3993 (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: ySGOcTrVyw7Zv02b7SYp00JHLrdKU707IdGw6y8ADa+S0lggbdVEMt58G4XM9K8K57XVlxrEVZYk9EsYM871xEiG5qCqdPkkWvjuxQtlUFI1hkBfCpSIC8ri1gsXFKgW X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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: Clément Mathieu--Drif --- tests/unit/meson.build | 1 + tests/unit/test-atc.c | 502 +++++++++++++++++++++++++++++++++++++++++ util/atc.c | 211 +++++++++++++++++ util/atc.h | 117 ++++++++++ util/meson.build | 1 + 5 files changed, 832 insertions(+) create mode 100644 tests/unit/test-atc.c create mode 100644 util/atc.c create mode 100644 util/atc.h diff --git a/tests/unit/meson.build b/tests/unit/meson.build index 228a21d03c..5c9a6fe9f4 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -52,6 +52,7 @@ tests = { 'test-interval-tree': [], 'test-xs-node': [qom], 'test-virtio-dmabuf': [meson.project_source_root() / 'hw/display/virtio-dmabuf.c'], + '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..60fa60924a --- /dev/null +++ b/tests/unit/test-atc.c @@ -0,0 +1,502 @@ +/* + * 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) { + if (atc->levels != levels || atc->level_offset != level_offset) { + g_assert(false); /* ATC created but invalid configuration : fail */ + } + 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_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); +} + +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); + } +} + +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); +} + +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); +} + +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_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(); +} diff --git a/util/atc.c b/util/atc.c new file mode 100644 index 0000000000..3332d7e2b8 --- /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) { + 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 0ef9886be0..a2e0e9e5d7 100644 --- a/util/meson.build +++ b/util/meson.build @@ -94,6 +94,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', 'uri.c')) util_ss.add(files('nvdimm-utils.c')) util_ss.add(files('block-helpers.c')) From patchwork Thu May 2 15:29:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930646 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=pfO/31z8; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdCq3LVqz23hd for ; Fri, 3 May 2024 01:29:58 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNK-0003gO-9H; Thu, 02 May 2024 11:29:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNH-0003dt-5G for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:31 -0400 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 1s2YND-0005zE-4b for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663767; x=1746199767; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=w3ksL9XnsGogkygAQJlBpy6EUuIt8oHQXnFG1VyOXcw=; b=pfO/31z8JWPAAzxInLbZmxBXQtvk23g/Y3COdm3ijVowndUoxeXI2R+F 7EEyWjMdIUuo9I3Zk7qheNTlJPBv4BoxQhOCv4mRChy7jLk6v3LRD6RM0 QSzN47u5C87Dwz1ID0sTPxkbFv9JDcwnJcVl1KyJRdI+4duc+sfZ/uFfV LI/PBWYvGOy6dhF7ZoGNggS9h3rwvW/cgsqFSw0/HrumDuP+OoOajDbnl B+ksq4NtVUWGw4ZzfMUUhyjmggbFc+a4S5OIUprUV0hL00RbBihCQv8zt fh7q2BWu+yCCjL14ukQHox3iBEo4cle5/mO+H6j3/TRa8MIULczAz0dVY A==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730621" X-MGA-submission: MDFZJjiiO5iR60E78Yz1bCCO/nXmMpmgiLCEVZF3lU8ff+szYowitUEo2zkIrjn1d0eR4i8IEYPV1GUbKqgK7yAWTAh0fQojzvtp2eetHEuvCCGgpH/ciATvjGrW3mpZ7wvpucgQluLo3U5haJ3jjoTaddFezN2B+05cilPp/FL3GA== Received: from mail-am6eur05lp2105.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GORuSqUg3eFA4wRkV9Z4zXR5Ih9aMPvmu7ErqxnEKj015N//v7rcDFQI4MrlrAB6FlBE9zBJcVBSQvmRCOXFDQuu4iyH/+5rwfd7zHoKNxakC481P+YFOx1HvDmcmQk14TZ5p+agYa8GwQQZF3n8Eg9l9RND8fQ+ezacbIRpePeN4RdmIor91/EPvMaknxM8SjrrKOVqjrx5j3SWmpiDMRvx5Cs0zO4a+Zl7marTvfpfJJMV4VZJbvESs2mffJu91S2wiCfbAh3vI7EUb3aIrBfKJR5LndkaP7Z7n3463zg+h0OCwtikwUeIsQTxSUK7RR3VnZS68WSA5FW42fOhDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=w3ksL9XnsGogkygAQJlBpy6EUuIt8oHQXnFG1VyOXcw=; b=XTUiN9riMOoRj/u2sdxkMX3UPMrw57YMyq929pvRdc6fs4zgDwmOt5bJpLK+ShfpvOCsOQHAIGFudrH8bqqspgbpFVfeGAu7MKH3OkLGZcEavVcxOFl5LoON7nmQnbPf7w1jyBUNFHzZYvenKbBN1x9VcImaVUpK6B2JoaaKnScbWOxOOLTDuQZpImwv1GAaYK41hRB3K7yT09vVCrXbWg56onsAU5EGuR6Gv7hX0pH5qqCRMKrVobLAVWMOAWNsv8eh+/Uff1eHphXctQgBTt2x2jwJ4YHuYHQmpab93yO7loWZIHgv2kI7dUuvgTeSyCYlnRBE+ge+KM1m5skDCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:22 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:22 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 21/24] memory: add an API for ATS support Thread-Topic: [PATCH ats_vtd v1 21/24] memory: add an API for ATS support Thread-Index: AQHanKWBI/xSV/efz0Sgz6TcWG7H3A== Date: Thu, 2 May 2024 15:29:21 +0000 Message-ID: <20240502152810.187492-22-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: 7cf05623-a7ed-4a51-8e7a-08dc6abca427 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?MFGnt/PXscRdSU5uoohIof+WR5+Ng98?= =?utf-8?q?hvR7HnVUBTYb3WUcBOGev2aEu6uyVYo76OdRl3KuP6v+211g1OLVzD1UHUQIrUniy?= =?utf-8?q?cb9Nmx91yxAoCXXPviVPNLqn1XkmBSjkrF21Z0e1kRCnJ9DkFRoimjkBp5lyqBdl1?= =?utf-8?q?ddEFXVwHX6w0j1QTL58YDCLsMt6cmkKr31ngaolJ8JhmGgdOsaG1Lyy4jFeosnwTa?= =?utf-8?q?1BshkngXTTiqzCARvTbIUjZ1Fd6zvnECojPVuDMBN9HUqyrY0rO5Ekg/CXvWzLYqL?= =?utf-8?q?8HuSQ5TiSrvzweQ0ziW6unl5FJCf3ZmjFwvknBD9CVlTZKh/nqJJ5yawAiNsPEZUO?= =?utf-8?q?E3qu4pfRW/HuBJmSuUVJIx2ZCb1mJ9vs3aJwaW2s2EGHbrzmnGAFhcn4fBFmbUSh/?= =?utf-8?q?o96h5AXQpcmP0lf1H5l58PxZK2nsbNC+LTWJzlGG2LSRebwP+WFsIkchPSveOHJvX?= =?utf-8?q?SxHPdkr7uNjJwL+MttXB1ZTmeVudbPOV3OUiZNqjeilaQ/IL+mqlcCOlmhqCaNVFb?= =?utf-8?q?/iofMXDbgYrDJ1Iredb2LWFMnDUWbiyoB7lhWoMe5yJZLuixJaWQgqdH9JRWoh1yt?= =?utf-8?q?F8SCZeshUAmLb/PXLz512oFGRjsOA/MWspuBKmTVryN9IM5dipUkSiN47A3BqTofz?= =?utf-8?q?8pfSgcXJiowEr/JARM0okMdamAmfS82hnTk70dxK2PYGjWWRtAVTeHnHf0cdVX827?= =?utf-8?q?7V8OyGK5pbHc9/XrFWbbdD1vezR2MMVsHCMkjT/JRbKGlppwg8cLMlAht8jOa1p0B?= =?utf-8?q?K1S2uRArFiMb1lWpNGVTdic8wF4B+WuPwBFLknFMtRkiB5k8YFw9Kwe7Ne915FXY7?= =?utf-8?q?OOFdLZYlPV3qCN4yasgf0qdDaOL7En4YRczilYA4NeioD8t7M2CjJM2hYAnIdsslf?= =?utf-8?q?C0YVMCB+ydjDmeQyKhIp1CdBSqzxXBwA0upeleQzRFZRWuvo2Ot8X2LAlbsaPOAk2?= =?utf-8?q?fNVDyc1YOsQa1BxshTAFEuFXYaYySn2Mf5BLln4cOjKPalAYvbieEXC8ksJ/HLzGH?= =?utf-8?q?awKPKGrcEVA9JZg8fh5dpNrpQjD/vSBGNcXWAH6kLV0expiiUP5/Hx4hQ+wp3PeJc?= =?utf-8?q?XjH/dfS6jjF5pe90Atyxn/UV50t8jv0NoLKgBSrpQTmbhxc4zoV7Sh/NYLHOo85pl?= =?utf-8?q?BQJ9MsMNc3nOIttHbTQP/qmn70t1cBkH+JRXrU4SzBGLfmb4X2fp0E+h6Tvf4JSH0?= =?utf-8?q?W9YZKrPFLimyqd+c0NfIMwc/vUN6B+2uBaP5RQS02Kap/RbjKiQKxKaMMuCVQKFud?= =?utf-8?q?2+bfySds7LzNKsD9VGtXbfpk/OtFxEULFWw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?RFpETEEC/CNLB1kSzj4DUEFyeDUk?= =?utf-8?q?/ex1QqC1aRkFAp+rWz5ysvi3ErLt86YleI36lek5mh5gtKcuJy+prS96VyfisKk7q?= =?utf-8?q?bbmLIvpRfXO2QJNLKymBDkqNdw1p8KXNDJ3rtMySh7IrfHcLWpRu9D1CGuekmwBwP?= =?utf-8?q?oc9KsUHePu+0Gs7twE20y7zZ85GelEeyhhToP4xJEGNEoCCMgYMqxpbE00zTJRQQ3?= =?utf-8?q?jaOY8N2+ZMj578YeQUGv84kfs46XWpBb/DmXH6jNL+lDxqpk+2CmGnQBz2AP7ylaf?= =?utf-8?q?xtRCuIhOPd029W9Q2tU+6GALbJcyKVMIMIM2gtHiBWykexxOIYXPEHi6k8uspsemC?= =?utf-8?q?pf/9BDyCwWsx/OvtWeGY3bmhpa12HC7Se5JfK9YiAhd1N/p8a976tWb3jnW+v8Rk2?= =?utf-8?q?DBZuWA7BpW883u6CYJtEuFtGGrv/WtZb7fVdNbQ/6I7iNSvQjwJBAYOUkW9dczoDh?= =?utf-8?q?BHOXToonjH6X4mdZgfbx8ad0o2mio3ltxqRBu4uE8zgBCKNNeTKV0oRhjNC4x7GuE?= =?utf-8?q?fOgh1fElNbyWhPlmshiOs3AUoHoQkYji49W/XcVt0DmFyTpDS7ZIbK0von7Lb7hBw?= =?utf-8?q?U0+3DcY6At4xkkT1BPNWGxRqSex/wLkccMYXThILTII/qvghCvhPzdeuWalLTeFhv?= =?utf-8?q?rjaBwLLwxloFFLgfe057Nm7bJ/7RyKBdVmo91PHsc8bbFAMfArW35OydNVIik0qkN?= =?utf-8?q?GNimDwF+z0YIQ/N7zXiAFzQVPbAoyJnO51RV48hKbfe89oGR/wuhoz59o9GDIaKON?= =?utf-8?q?a9GwKV1hBCv0QXHrV5CXJIo+IoI0EaKsh5XJqtw1OwTEcZiTGWKTLzX2Gckc9fFoP?= =?utf-8?q?8lj402nB/8ZWx/qy8gfPGEbNbPRoYrrYGtIILbZOzog3AN8stFXg1o02KZxHZ9Y/H?= =?utf-8?q?btUGYZ4BK4QLnn1l2VV7JKdn4zTSe6ZwQatyOql0x/KjzvLeGjD3VQKInKwqt0LMF?= =?utf-8?q?uSwE4Vm0WzCehGAhVz66W6yeP9vMUj7ce/tqF7hEj7eRzFp1FkKk1L/rR153FrGrD?= =?utf-8?q?M8FFeCVcyUXLGR1Gm/ntk4ut7n+3OAHDo+ySHN4gX1hh7j4wIaVcSI0dxA/q2POLJ?= =?utf-8?q?qxXTEd4UmHqLXz7ioRoogHKpnRJAJEU5NwZmRE9/A6gO4SHELRuEIfwkudKPWgs6P?= =?utf-8?q?mmgvwkVlF3fYR42ixPlamVEGpJPnHNRQYeK71zpfBkdwrgk3SFqcC9TP5Lv2vVse2?= =?utf-8?q?SumxxudvtglCAPvvBA47FTROprrkM17oLRAM5l2/SZ4Wi5HgFKNOpCx3Ws+952mSm?= =?utf-8?q?pcRz2A7SS6YbSzlymCx1TjJkO0K3yjU3aTZteOHno2APRqeGbdkixPGZg/IcIV3VE?= =?utf-8?q?4bf+YaVgJsWNkc5C08IXDTZH1VU3IBGDG99r/IBBXjxG2AVj/L66RwToKx5y3tOKO?= =?utf-8?q?9RglGCpv8ot1HaIrdqSj4SglqhS4Im4wI6fX8RgX7i1wtTZQ+qVLWq3aGTbu33ADD?= =?utf-8?q?lrqb4/ipzQO9GwbZ0XOKB1zNWOdE0TcLbtp+X/1Azs3CWu/PR/CWjASwrIpSVvNdQ?= =?utf-8?q?Q4tahA5F8c1fsdTiQ7cyZIk2G8YVa8YoGT+ClB6sQ6fbcPZqUBvNW8g=3D?= Content-ID: <64E5536BC0CE454BA701C57731D7453E@eurprd07.prod.outlook.com> 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: 7cf05623-a7ed-4a51-8e7a-08dc6abca427 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:21.6236 (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: HJVry1AH09bjqv82zS70L0Ro89NBw1/fFQer752HpVCyABq2CVKJh2VKfeH9Kre6zZsMfFS63Z/y9klXvA1shWHNxRkMhrN5JVsT4kYpoB3FcSfpfDxbpKxokXNKkPlV X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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. Signed-off-by: Clément Mathieu--Drif --- include/exec/memory.h | 26 ++++++++++++++++++++++++++ system/memory.c | 20 ++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index f4b33415d7..5b157b9711 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). @@ -567,6 +571,20 @@ struct IOMMUMemoryRegionClass { int (*iommu_set_iova_ranges)(IOMMUMemoryRegion *iommu, GList *iova_ranges, Error **errp); + + /** + * @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; @@ -1870,6 +1888,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 a229a79988..9c9418c5ee 100644 --- a/system/memory.c +++ b/system/memory.c @@ -2000,6 +2000,26 @@ 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, IOMMUTLBEvent *event) { From patchwork Thu May 2 15:29:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930669 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=mgcBf9kQ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdJT38q8z23hd for ; Fri, 3 May 2024 01:34:01 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNO-0003ih-LO; Thu, 02 May 2024 11:29:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNM-0003i3-Tn for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:36 -0400 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 1s2YNI-00060W-KC for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663772; x=1746199772; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=0dyCf//UOltd40tgWVe301nYDvZlQODv3yCaC6nBVp4=; b=mgcBf9kQq69iZITSJAnhtndR++rG8mTIpEG1o2y8Xh1vgr0bymhmUsxT 7CYXkMoVicutC1WTzpEydx5Qc/IhpkJkIZUYO3w9xWnvf/OWdq73hNMjD HMVvRmVZ5/3QN8ahnQcH9maq1qa2VvRb6ySg3UUXTC9rOIYttLD3a+A1H LM+t1zrXnM+YluKMOMZ9MnOKN3CJ5bvE6wXhL0ceV5+74FRYw6CREppmc 2ZM2CDh0EoQjk86BdmhpMxipkixzIeYnh8M2okFCaWLo9vqX4EkW7EV0U jPpLoU3rkK50eLgjKHP3E0u8Sb2lYhvlHJXGZuqDcLk82Sl86aZR+OkmU w==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730622" X-MGA-submission: MDGQsfRvSsSaehLIfacEuktvZvdiwWESRB9SPAMIjQKpH88tJ7pg50BzfPWToXVDjel8WgkrQaeV+bQNK8Pg7ZaVpwJJIAHx3CQN3LU+jC3f+etr0ovbxgnNcb8YEOfKwOwpULn1OtF5YxJzWb7t1fa/IIIaqPy4y4ThJKwv9h4qAA== Received: from mail-am6eur05lp2105.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QsA9s/DAunlOnu+yWLcQnDOm47fKNoXLLTp17WtJd0KYLayciIOHWTq2xyoorPfWKY/p3XTIQG2sxeYeJCT/cYE8xRfyobss3kvSehbCFrhQ7RAQ2eKFV0WwQ+4ZpCOapQ9RLT544eiANTBxAaxegCHrPnIYcPXAp6NB0PFo1KSrgaCTE5qxrkzNefsI9yJ/3KrFtg+UQ7CZtaNPPJD1LsyBEqUSh8yLGerxQoyMCUOPcB35KUMLDCPTdbWNqVQg6D38EQW31eBuEiFZZdIVaqpUtrPIybTAMFfXAYDZ3n6UCmPnB/cwWmBp7qXJi6+4iuxVqZdD/4UwOxsY9bPYOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0dyCf//UOltd40tgWVe301nYDvZlQODv3yCaC6nBVp4=; b=RORHlQwZPuqEqccJ239FVOJOCsjLsT8jig9WG4S6L06mH+UPoED5f2oreVDkVYifhJ/3hpjINTjKkJ5GfjY+WDJUBIDxnXP72Cht2bWI2lNzkrjmqmzle+aCgqeI7ktB5jSiHcrpzk1B5ME9UrWH2z6Wc3Si9YcAxurEFdHQZpgqLqnieYZeWe6e87/yZkYtB1STB6CzFOTqV5J2xStb5RjjEk4y4Gw5lx4OFqmytKGKUuJZrQ1qiUCh9t+0SZW9E2bNbuUXvtwvlc3S8e8uXJzG8mmUNGyvaUiLzqO/YZrZ7Kc/F0Mp+sNP8tZTCwVPVeMVj3YQDawKMNGCPGZZRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:22 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:22 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 22/24] pci: add a pci-level API for ATS Thread-Topic: [PATCH ats_vtd v1 22/24] pci: add a pci-level API for ATS Thread-Index: AQHanKWBzgAlAYPHMkWgdFDysW7Q5A== Date: Thu, 2 May 2024 15:29:21 +0000 Message-ID: <20240502152810.187492-23-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: 86226a82-0315-4713-cd5c-08dc6abca441 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?kSLJ2TTQ1iof1qAp5u/19LGeM0P8rhv?= =?utf-8?q?RldDw+5W5qwQdZlT9K6pdnVkaKp1TUE/lqtiQUdiCTTAUkMXcwPq3TRiMAVuvjSEF?= =?utf-8?q?meW35oJ0+kpei+ZIPhmDONUDF+FLIWIfaeHzgcP5tGJOGyrKfrghSLlYfJBli4m77?= =?utf-8?q?8L+auMzdM5KltAjKLuuAN/bhjie/ZAjqUMMGfmSfFORB5IyUu7mt+Oq11367zEg19?= =?utf-8?q?Gi/KthBo33hG+4L50nyxfEoWFWTxjImRo9bhh3jP244jQDzg5lCMVnSM5Ej/xryKS?= =?utf-8?q?szTsn5u6hSJGZUvNqD6CarIZpoNG8q6i6VwGYTIK/zmgwUDUErlO35T+UW++abSac?= =?utf-8?q?wpmP9d3fp+M8/AHEQbpLui8Wg40lZKn7VOiklB1boG3+dmtb86ndkVoup6YTNIMOD?= =?utf-8?q?UFaF4jNTGKTaGLT7sjGor4aWVFMqu3Z1La999VncIsagzLozUoAN2JIFXCyEbKfu7?= =?utf-8?q?28YMEPU33+ZGeBZxpkYjApoy8+UCtpR1gKxbQBXzzlO3cSVxElftTMcIe0XeWXjpa?= =?utf-8?q?yG9yM2IL4fmaDKzkNS76vDVv2XzkqrAsgA6pKe4JtP0Xl5pY6AEdGY2rU0Pkg1LIr?= =?utf-8?q?DYH67rQgtxqjgUyfBlhiyMqiQNN++9oEnx0wakDp1VZ626jI9tTbhpLkhydIkhlP0?= =?utf-8?q?/Ly6JxCrx/Z7xXXAthjRtqEkj0GpRvYG1cqyCNsH30eAofodIXyrJl3FtBdXLB3La?= =?utf-8?q?ZAPjJV8tO6eq8Tijg676GdAMUJQRhLAHegmOgYYiy07R94DR3BJIGfcGDFWIm9q8q?= =?utf-8?q?w5FwXuD5b1U9RHad+U4xY7Dm3ExJJXxAv3YPJPcEcse2oHmXaEyNKlSVD8wIbSWgA?= =?utf-8?q?ccm+a2zyua7cEBv+Z25YNKuR2VV2HBHliPD+K+EiE2B+qDcbPqVTz2dxqNKwRMnwb?= =?utf-8?q?8AfiH8seFmbJCh3xP4AZMTtmAAOIRIbzuqR5ZQnw9AomH/PmzBT5d+sTGxFXTikr8?= =?utf-8?q?ToSWrtj9Z5pEIc7GB3605EG6oGCkT6GMpUfYukrkQ6L5Kfc80nqEk3hKYTUm52jpd?= =?utf-8?q?ZfTIQiFEnezkb2dDx0QcXpy6mTcImmo1ypCxDfgsy/XKMsK3RHrUSmtqAOtPPhm5d?= =?utf-8?q?e/qCnlBYU2qDkVsTJjFphrucO4PbceQZBymGndugO1ZEJ0EBUHikMCx155EgWGDy5?= =?utf-8?q?4vdnp7on0g3ccQoT/N04fmimw7ug2saUupNk5Jfdak+zZDwZPKhgGH5HoBsyi6zLt?= =?utf-8?q?xx2kbmWCzGYn+UF9OAviHO9x1pt95N6t9iXjBjhXdnAsdHbs7igsawbsjYgOratMD?= =?utf-8?q?UAKMcW193bg2Tci9nuJZLTbCwtGRntblVSg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?YeTk2fVADUfb0RXd/fgFfyS/hLom?= =?utf-8?q?umw7F1RNFoQwjk6ejwW3hfXbhaNSswFgWPLZm2aXIClpcZ38qfxhSthsGQM24TVGi?= =?utf-8?q?xu/XAxUeIhQJdfJ8jZuGCO4EA1hGDn1fOa8DJNqRmQ8xTOgjHxeM9zry2z7cPtcKc?= =?utf-8?q?YMfcVzDkfaYuZxcGKpYGV9z9VmfvUQn3nFBPkwqOMdqUAFQn3ze66udogVnmrg4Md?= =?utf-8?q?URUDxIUeW/4trxhc1IY8RTtro3QYz0J8LbUidrQzBuyYwRvnnmek9lCFCb/94Xo6j?= =?utf-8?q?8mpfHb9QJz2fRz7cPQ35Dodr9WOI9h+nxHS5u0qQEPfNJfy+uEIdWJhVRhY+pac3+?= =?utf-8?q?HlVc0qU2111/QwOwBxiAx7OXxceSq1CCbu6Ow+IrT1CwF8oCljR3OyCQcFnINEFFO?= =?utf-8?q?v6cMWt+7fLb64nu297WTxhc1qxPwRfVhzSR3ElP7W2aoJ+p0C4MDFnJiRBeyBbWdH?= =?utf-8?q?s4oCicOCSpVmk4ZpgJcK3ftl7nfR2NC/7GSTW5DYeEBNmnSy5M7rvvroi3qqmRqeW?= =?utf-8?q?8fPplngxeTUFp3CCGQG5NwEjorEFHpHt4+hF4ttIP3nqHJOav/+F8q2mp1Ka3tjwg?= =?utf-8?q?3WspF+xwcPK2zvJiNMRBxiNRShPpA+o+HPkUFziO2GRv0jrGOW4fx8wjK7IcZtnuy?= =?utf-8?q?8ETSbrpAWxJq+dabRPwk+x32voZC94mllPmQxEWOAtBKoEgOgtUOX7HqvavJ5ER0G?= =?utf-8?q?O1f5uBDD8D3iXdqkZEiuOxKwaxSYGl5BsVDvBtdAHnFFCUWDdIeAgp8SG6oLUOQde?= =?utf-8?q?HaOVS5NSOWzfZqGyWWefGo+F0b9i9C9jvhykdtGCoIjT9qdm8G3cvXtmIU2BERFox?= =?utf-8?q?6CfT6LEmZtYZE3FJMrx4dKDbKvt3wtkacwG4Ym/8bSc/9P+1/ho+z1M0Wcz7HFG5D?= =?utf-8?q?1Kj79I2xgcBwBl3yP8u2fl7qrU2+cjDUsQ9e4YVizRavUhIHAnI3dJXv4QXE5QSY2?= =?utf-8?q?lC+4Zj+XnNKoGCACwc8Kbumbr335nAgzB78VFaeVRpZOVp9ffk6lKiyGYTxU/mYy/?= =?utf-8?q?lRjKh9t9oUSDfETUUAyMzxN1e8e5QeTb+enR4/2xBOKIMI9xgyFwLYPAS/1D69VzR?= =?utf-8?q?imBN8vwRXZtwxAcKq75f5Nfy3e7VUKGVNMNH/241Yw9P7XQiDh9h31+yYkrMg5/+1?= =?utf-8?q?fXzt9EaRYuXESKbBblDnK4SYzxjodUlD24Ng34K3Dn65eeaRNOy8OqSF6zO5eg6s6?= =?utf-8?q?b3LBkYkwlJ5A9od33hIdCQryzc+BeyDNHSS+i/S+pvqPV+diBncagrs8kXIo74vmU?= =?utf-8?q?9kqs77jt+P46822qvwfvKnm9fnzMiMJ34NvHv5hDeJ5iaxm02LTSAlB41ztJCIcnG?= =?utf-8?q?UJ8ZwXVyFUeo73Ts4c+Oiz0Mh4ni8rVR1iiw+nk7649rL8Zg3khZvHQuyDWit9fuL?= =?utf-8?q?3rIZHv5mEwXxmFAupU3M8lSuB+eukkKXl4PQksWAiugqZM0u1B5ZJZl9Ds2mzyBu/?= =?utf-8?q?SKDS7YV9TgprlQ9Sr4P+4eGPnKZ2aiVWkCH9EE9qbjRejqJrFtc91HwnLT5yKpooA?= =?utf-8?q?rFiP531b8uJ6sCIkGspHov7Hf+3XhFZWxgyoW49m8yCRzEiaRxasxbk=3D?= Content-ID: <6BF640420CC32443963EAF491B25EBC3@eurprd07.prod.outlook.com> 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: 86226a82-0315-4713-cd5c-08dc6abca441 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:21.8888 (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: yl/n3JGOMXxpUyLUZgx7FHFm4tIF0iBZfesjBRh17p58vUdnJHhYhagFgrDwOSQynEHvsyczPbp40iS9p5HzWLb622sJ9Onk5HfzCi10eWRZXjvV5AF+UlCYRIfWsoN2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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: Clément Mathieu--Drif --- hw/pci/pci.c | 44 +++++++++++++++++++++++++++++++++++++ include/hw/pci/pci.h | 52 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index d10cdb3d75..fea9b57006 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2833,6 +2833,50 @@ 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) +{ + assert(result_length); + IOMMUMemoryRegion *iommu_mr = pci_device_iommu_memory_region_pasid(dev, + pasid); + 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 1587c18cd9..dc247d24bd 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -471,6 +471,58 @@ void pci_device_unset_iommu_device(PCIDevice *dev); bool pci_iommu_init_iotlb_notifier(PCIDevice *dev, uint32_t pasid, IOMMUNotifier *n, IOMMUNotify fn); +/** + * pci_ats_request_translation_pasid: perform an ATS request + * + * Return the number of translations stored in @result in case of success, + * a negative error code otherwise. + * -ENOMEM is returned when the result buffer is not large enough to store + * all the translations + * + * @dev: the ATS-capable PCI device + * @pasid: the pasid of the address space in which the translation will be made + * @priv_req: privileged mode bit (PASID TLP) + * @exec_req: execute request bit (PASID TLP) + * @addr: start address of the memory range to be translated + * @length: length of the memory range in bytes + * @no_write: request a read-only access translation (if supported by the IOMMU) + * @result: buffer in which the TLB entries will be stored + * @result_length: result buffer length + * @err_count: number of untranslated subregions + */ +ssize_t pci_ats_request_translation_pasid(PCIDevice *dev, uint32_t pasid, + bool priv_req, bool exec_req, hwaddr addr, + size_t length, bool no_write, + IOMMUTLBEntry *result, + size_t result_length, + uint32_t *err_count); + +/** + * pci_register_iommu_tlb_event_notifier: register a notifier for changes to + * IOMMU translation entries in a specific address space. + * + * Returns 0 on success, or a negative errno otherwise. + * + * @dev: the device that wants to get notified + * @pasid: the pasid of the address space to track + * @n: the notifier to register + */ +int pci_register_iommu_tlb_event_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n); + +/** + * pci_unregister_iommu_tlb_event_notifier: unregister a notifier that has been + * registerd with pci_register_iommu_tlb_event_notifier + * + * Returns 0 on success, or a negative errno otherwise. + * + * @dev: the device that wants to unsubscribe + * @pasid: the pasid of the address space to be untracked + * @n: the notifier to unregister + */ +int pci_unregister_iommu_tlb_event_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n); + /** * pci_setup_iommu: Initialize specific IOMMU handlers for a PCIBus * From patchwork Thu May 2 15:29:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930647 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=HXy/3U4y; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdDC1fvrz1ydT for ; Fri, 3 May 2024 01:30:19 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNK-0003gZ-UN; Thu, 02 May 2024 11:29:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNJ-0003fv-7T for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:33 -0400 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 1s2YNH-0005zE-HC for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663771; x=1746199771; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=jqH22yC3gZ1HF0ZE1kcRC60g7aPGVpRl1CeIoCk/E/I=; b=HXy/3U4yqF1rI4c+pVpIbEdKQscOymKvQmPPYTxyBJdqY5XX2SX7yR5N 0QU4NMePTFvQXdfYKdJ2uFs6MReno3LzUEk/9z5eMjAx9XDjMSM61uYMT stanjsVhbuWL6q/e7IxdgGvRpFxTq564U1vpSY8SXmICmmJr6PTmc6Rve gCUiBh9f8AlGuuCrjzzVi72EqTFe/wX+EV/HMxz8gD59tvBJ/uCKI6V4V mdd2Tu1c0GNO2WasZVBrm5DsfM0g+HW0D62K/dqcHi9YwemlQpRYq4/h7 AyG5i6FwgobPe54IhU3Zw+/0S3Vh0/G/ypj27oBZn3zakyW9Ro149DmZ3 g==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730623" X-MGA-submission: MDGyCjIKEHE3ompCo/zyD0zy8d6BiKd1agTole4wPqvjJHjF9N+y4lPZp1Y67N6n/RDeudaUgRo0EaTAIQj/7l6yf0UQe7+kfxqAw1ZCd89RpktxcSMw7QUG1l81AQXKDGFgIjqCUm7CAP2EH3H1TFCcF7c6grIkIr8D8je8N3/zcw== Received: from mail-am6eur05lp2105.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SuqdJRYm2S/QUG3yy6ZVoqtbotcKWqJjnLuN8JWI3LbkBpKKHpoh0wGW5saoXzuHe5voxNbMDN/oy4QBe0Q8dC1JWoKZHT79cfvYONB4gIy7Gl+O5Sh/0x9KmAmycTIgr4lEWHlYANXqHcWvUb+nEbf6GH5YAdnlLJiWQL3fkqlzhlFXOIb+/eoDguK9eKq6lvIFpswVSFa5EYI4jTj8An85gTR8idvTxmV2V5CwBxeUGP5hinJjRjXk+HPntzLdWxbepHlVoZRLpieVtg9BtNZ/YyaQeUObzEIt4GvoK56/u1R8gK2KrQVF8jCa5C/YpV9KEPgoHzEqjRqb7AdO9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jqH22yC3gZ1HF0ZE1kcRC60g7aPGVpRl1CeIoCk/E/I=; b=CCU35lR+KZqxNd7Roo7V0Jgzmt55bI/PIbyKp5YcTPrOarmieYIDaGbqaVi/kHJ+TtNvTTn8cYAJ98MoDWYtJrtpUGGS6umEbZuGCKJmLZAFf+8hB0JFYGwq2z3pKHYKSrN5zEllcq+MCbwM2wTsxrmiAl1eGR3G5FprCKuxi0oKQe1frLcww9PTiIi417o6oXAfT3EuozM4BecfLv336ptxXZNKLtDIbQP1zbOkiAjVge0dwbTmGuKyLvi8VSnWweLJshCjPm4m/1VD7DZys16NaAs7s8EjnGGA6GhKkJ6qmgRcqTYNxV9xc4ZLrP5DA4ik+RgmMHRHWqKJ2lAOog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:22 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:22 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 23/24] intel_iommu: set the address mask even when a translation fails Thread-Topic: [PATCH ats_vtd v1 23/24] intel_iommu: set the address mask even when a translation fails Thread-Index: AQHanKWBYNOsIYIeYk+58ghVT37p0Q== Date: Thu, 2 May 2024 15:29:22 +0000 Message-ID: <20240502152810.187492-24-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: 45ab644c-da77-4a2a-7023-08dc6abca459 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?uWj7XSBXcPB33fln6PGkaavTeTf+QUJ?= =?utf-8?q?xy9lRwS2q6YyzWWOkK5CpL8c09J9Q/Uv5R/sYJzkPSEjmOJog2f2tg2nqxcg1AwqW?= =?utf-8?q?+nxgPiCJy60OcJ/nFHImKi+XpIPuu1sYXlWXRg1ihm85LMQ7Vb1TWnBU5eIAoZyIF?= =?utf-8?q?eeHrRyA16L4Ufvd2X3w0UTnnPOOV5hx63pJ/amFuRnCw3GwN/WGvpHk4tLex9JN+d?= =?utf-8?q?LE0F1mi9JeupxeLnLx02Gt/vIT6JIEH793k/Jk6QAYdy0x8b9iNr1SX0jLoyAgnNO?= =?utf-8?q?CQPQbYntSkAYyUU3Y53Uz3BacdTqw3rQ8miSb5TQRU8ykmo8dVCKbChwMdclNPC9N?= =?utf-8?q?5URzLO3dtr/yaQl8Z0f+E+ZXRCmQJChU/9UDr38kZibL2p1D1dDy9rxfp8iO3Nscv?= =?utf-8?q?XxZTR+i5qDfonD9JL89aqr+YZbf3rzFWCWkF1qBBmijdhWIMH/CxJJch1L/JBD03S?= =?utf-8?q?iInDFr0vKazCSaVJdVB5/xtDen5+eCc3e+ygIPn/i3OCr3da2zfRBTArLszTZarw3?= =?utf-8?q?NUNZGXLAVY6MrAk1+e9SMwfSMYH8uZAmsC1ulvDi+mnkW4caQKHR3Rjf2aXPe3kPn?= =?utf-8?q?1Y+dNVrP1pA+hyRm+H1iNCSpRIXXO1okElpQjykZy4dz3nIx8jDL/3k6/nRx74frR?= =?utf-8?q?xABcfqc/2hOjQs6naPuBd+q4Fi0SR1FTix1oTRLoYetO76SNYB6sZUSO2IsiGVsNF?= =?utf-8?q?Fh2KgAPyiNvVs2jMa8f6Nm5LfTPYnybDEkpfOQPNhtfuRZLaNrkq7QonvJmutffgN?= =?utf-8?q?RqVizSUdSdOiOShsBubExiPUXoqk8klVePEURswpb9CE/OWlnIAwzAjVARN/KEpwm?= =?utf-8?q?pCYAGFH/3eIq+Tc3xm5T9StIlGO5vP5fUbUekiaUaHqarPRcbRQ9UOM6lgYkgtE5w?= =?utf-8?q?s2GHcAQvCgf9FQb5w/rmnjXt3cIY7Evx4E3g1zn6MtGymC7NU54p0Dt4C9CnRYuap?= =?utf-8?q?JaVib1Ih2KR1cI73j4ihhbh/ZHNBXts8RyvBEJUAYigwifVcBebzfsskDKMQ7/712?= =?utf-8?q?V7koZppwia0w67pYaerZzrHQc47IZhYraD1kHNjSAnXFtHfJ8QoNAFrs80BfRVYHE?= =?utf-8?q?p68c2dij0N6C6DN7BAaDRN6TnlCR5ASj9xGLNja6VxKtb/UZbLof9NSOhDdjOX5QE?= =?utf-8?q?HRJ4Y01PVJAdWLVW6cqDCbuRWIxYsarjZvWgvO7SWFHkezeJxP89TmaSIlHyT7Po8?= =?utf-8?q?IHDwscriWghSp9PPH75e3a/LkE4BJInu4PiG2NoWuFkadmGvGC2Sj8s8y5731hcY2?= =?utf-8?q?NTdOcDjoS8dhBAM06uvyJNPrMpSoz+dh2eg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?5Z4LwCYxVW+1QEWiY0z2Lnnqcs8n?= =?utf-8?q?3BiFJxqrrCfJhKVYOkDamoUG6e48VHhDSvEK9xszWmGAaqcCB1jQphXzW1Ef2G8BW?= =?utf-8?q?CzZ2HGlefW99/9jvXjh4G4ozZnuIs8N36VyBPYo2tNGenxIeM3dcLUfskMHDUPVAp?= =?utf-8?q?Xnrk9CDyedjZXF44rPBaSoxXYwvWWgsEQadaPp1avDktIl+rolHGLrvaHEmZxuDpv?= =?utf-8?q?miJNfWrZBNSlRsxUeAeZ55pwOwdhKLxHHIs0I6zN5gHPeEY+ALlE3Hwqe1R8lw8gh?= =?utf-8?q?a+c13Nhdpr+PauraoTooq+kDKHDcPXAuyE0otnwh7v6GcqkPAIk8K/TjX8pwutgR2?= =?utf-8?q?taAYO0bAICIEUM1o77ATZszWqN/LuC1yaKsxj07EnqUoMuhMeQf2zPyeORgaJ6ZKC?= =?utf-8?q?Ib2KGu7Nfe1DBrUWeChlTh1YoTiCmByMYw3S4J/8OVj7sXji5yVfFleg5IomjXdB+?= =?utf-8?q?++eUpRGsX7WQWofdnVpF59AVSG4im07tX2V2SPoprvJLqzJ9USrxWqvxHDr9B+Qbm?= =?utf-8?q?PMYQa/azNVwBEfgC92Bn4597rKP+Q/iNjeoczhs2R+SYGu2JlcfGfi2mzkTCVmJ9e?= =?utf-8?q?eg/vb8itG93nRDMGaglHAn0R87fRgS8TJoI6yKXgVK7W3PmQEeUVwllA0IAXEa0MC?= =?utf-8?q?upPKlVH6bCBF6mgJYv3rdIWgbQKxHAidw4bDeRbuYR0jORr9c+mwuqJRdm7ePdU5p?= =?utf-8?q?iHHVgTQxLQJylpoRE7leOj+1JvB+WJJvQ9vTXbzURM1SOddqX1R8+mqy7p/UfAAaJ?= =?utf-8?q?Dmi21yIOaDg2Blufge1I29r5ftX+RgqO31w0fJpcFGVhseo0yOCaeZoiF8+sGG8ye?= =?utf-8?q?+YXGjHvkyVfrRmbAJs8lRT5/ZDNDdmXjeWEFPcimureh9tfUkL/Inj+sngvjjexE5?= =?utf-8?q?7XVYwkxhzUdLgO8/SIcmih/J94t6x3axvUB9BZMJs+vZd20jh1zRf2tRPvk9zDZyT?= =?utf-8?q?3Obw9P1YgR4wJPM361accTxnG5qVHCK+RjkqvxSfJr8BDmXp/Y/cs/T4mq9QsBFi0?= =?utf-8?q?YeQYKW2Cs7tWNnS9ARleGE7LFmk53XfcK79k5epDPEkzCe0SwhOYHasFsBtJkem4E?= =?utf-8?q?lhYZtOb5oFoHH12TQbmA8b0Il9h4Y3f/IGO7WNYlWRi+WhfrQaWkMHs3MdtzNnOel?= =?utf-8?q?8GJ0jTPmDe9YW/XiblZl6ENNQFT48WKeJ11dzYo4r6EvqKj68S67AEYtavkjFW3k9?= =?utf-8?q?AOKHQWNeat3Igofjsjd5a02L0wTnjnbBt9NX6MssC1fxavvupV7GMcAQ8O67zCUgY?= =?utf-8?q?UlOjOFCEZFlrUF/vKNjloBfhiNBoSOZIo64bOxXeLhPzcErgP9lt4/hRzuGbv4oco?= =?utf-8?q?ntzmJGmc+QjQavQUgJ4OpPdX4PKXS84Vj1ev2lLWshEXva+G4iJ40atpHKaAOGdkR?= =?utf-8?q?O4uijwRMEuDcJYwWRBD7LLf7h17dSKZfK3marqXnUSvV2TZ5C3O/3wSc7/Z58Tf1g?= =?utf-8?q?A/1xw6jPlX/c47b6YVKCCmPhFxdo0Cx+2odE54tguDQ7FABsngfqhRV+RqHMbBBYC?= =?utf-8?q?jTbH+RPxlrPfWG9rvSushvii7Y4P4RS8AmyYCfmG2i7hKsI7tvtu3NE=3D?= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45ab644c-da77-4a2a-7023-08dc6abca459 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:22.0893 (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: QP2EpWIcSTk490Ep0IvC7kLbQlP+5Klu6ELg9clKiUV5tfbCQV3Qj2Hf30WGnJ8oNGHoyA/ZZ76DYcuuPhF8im7goPJqbHaUsLp5XxNqebj2xuBym8UDNvYVV/wyie4s X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 02c5f0fa4f..aac7677063 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2167,7 +2167,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; @@ -2309,7 +2310,12 @@ 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_slpt_level_page_mask(level)) : (~VTD_PAGE_MASK_4K); entry->perm = IOMMU_NONE; entry->pasid = PCI_NO_PASID; return false; From patchwork Thu May 2 15:29:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 1930660 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=eviden.com header.i=@eviden.com header.a=rsa-sha256 header.s=mail header.b=xWvk1V9o; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VVdHM1TGyz1ydT for ; Fri, 3 May 2024 01:33:03 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNV-0003mI-2q; Thu, 02 May 2024 11:29:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNQ-0003jF-Dz for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:40 -0400 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 1s2YNK-00060t-9D for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663774; x=1746199774; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Qy+dDCFr8EtqKzLzd6rPk2x+cI0Kod24gn2AwSbFlT8=; b=xWvk1V9oIOIGEpqZnZZN7x2116Un0F5Ai/j8rhnjwwtDwOx8VE6fUSr4 UiyJQqdB2P8zNCR+rNr+45Yf/OY8KpcSHzczgTK30gq7rjy5FxP0+YzO/ Lm7AZ2YfQ+Py0R6t9K/eMWkyg7RA/AAuQfM4+ViWGdeO7LbYyk6mgVtiC 9spbei13Ggf9bbEK3WjYWsMQNGYAtPnwcACxBVcgQHlFPoi3vSQhS3FIj x90lCPhTJKYQL4weoywxgaTOLtuBB3NjVShF4IfHArqLCOPrpEi0lL1cn yQ2mGv9DkglM0EmWkBnzMMiMz4hQmCysqKSFs9wlIQKUCEHHGIGiiw0Sh Q==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11730625" X-MGA-submission: MDFer2e/lzIURv0zLCxMB/nco9tlFPP2MPZwCSD9EX/fCFzjl3kX6QEr87Tvr6m3KDLJGGK2G1F2K3cVPnBtEhy2q0QpQYzkXEnT+6PTEFjCIP9V+SuuiOBZX7B3VTep87nXqgUEqXmswJuyMClbvWxYME1jlKasRffKWxxwjWyP8g== Received: from mail-am6eur05lp2105.outbound.protection.outlook.com (HELO EUR05-AM6-obe.outbound.protection.outlook.com) ([104.47.18.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q9oUagOxuPv/6IdqsNtRo1Qn+EghV9wEn35XXRjOsc+TtGG1sxlto9awU5rZkmTHYb1RF0MRTTYIMKeBy+YPhztay8lmvFd/oD7Z9DwFTQX3ysMI1OM2aedpbGFxX90f6rsddbc6IYFyqHQ2ubcMDS7ILHEVcx9iDrI4G74C4zbRvlpXX20ie2Cg2ZloldK+0h/nkCSqzjCBP+KGEw35PbYKtF2eN0rHAqgxLCJIlxqLRAPus1N5RWAFZtEPK0rjPfMdzxBTGaxzf+qTMdBrNgG14JinOksKVy+TzVuB7Vl4rYvnSaaLMflgy88EceAdsogOfGDCdqPdsBziQTY+fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Qy+dDCFr8EtqKzLzd6rPk2x+cI0Kod24gn2AwSbFlT8=; b=BKFmmTNz6QiGO4xrBU/ZOv+2yi521ySpGPD/yGYYl3KsVT0Ng1/9CWODH2xNKD+xScgJC9rcxisZ+thANsGT0ciGd9f6kdHhx+QIadTjjQYXptvXTGEsFkQ/zyVCowTT0doNvY6udxsTbn9n2fsFUDor4qtYNYgybxZqm+qMQ9dQfa9CpBK0MT30Xhy70j1CfsT5taNesrzSU8CbrBVDQvWH5yl1WxluPeX6+Ys38EXsYkh7yUhrc5hd4Pif+B9IP/dZ/OB3i3nlhQnlWSF6gcc/0kpy8AdjzlnCiefawzSsPyTWu4voOa94dGokM4/Sr3731sizFYGRGDh3jJXo5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by AS8PR07MB7768.eurprd07.prod.outlook.com (2603:10a6:20b:351::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:22 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:22 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF Subject: [PATCH ats_vtd v1 24/24] intel_iommu: add support for ATS Thread-Topic: [PATCH ats_vtd v1 24/24] intel_iommu: add support for ATS Thread-Index: AQHanKWB5uNGEVbEo0CeorZYk4jRwg== Date: Thu, 2 May 2024 15:29:22 +0000 Message-ID: <20240502152810.187492-25-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|AS8PR07MB7768:EE_ x-ms-office365-filtering-correlation-id: a0f1b1dc-4040-4b41-dfd7-08dc6abca472 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|1800799015|366007|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?orl0pVbZK901npvYQe42egy9SH1ofHO?= =?utf-8?q?XGdnNNdjphrDaJOnGi0RdhhXbsB0QBBVjTiey7F1i2KtxJxfEBAWq5U/wR7mNNmPZ?= =?utf-8?q?yk5tHNW8rq9ogd1Icg746rDqbL4qc7037krkHdPA61Stgt2MD4xUbP6KV5kbIj5ew?= =?utf-8?q?mUemCrOjxiq4lRdDxHsOr1xtW0hlgEyjULY3OlWh4/F2ybin1c/Zl6OsyhwUg5voO?= =?utf-8?q?us/3ayJWEcW5P0l8koMEbpk4zA2OgzRhHiMKtSp8hyOk7//r/3RKv/Gdrirp8qFHf?= =?utf-8?q?9UxEuDYhywhpqZHShYfQCSqqizaefD9+cuFwksS+WJIQzG6Kd2TZCBpbsWr+8XG+O?= =?utf-8?q?4ORRUUcFewu28gYLdR8i6xQQsU1tFQWRJi6Yv0619UAw/OF8GCt7ZAVJAqvWDdAOp?= =?utf-8?q?iTldSzjDpX2Mz1AyWf2bea88+a/sQylpJif280drlz3B7/cXFVi+aHCu0jjExin5R?= =?utf-8?q?QLKeXyC5KW00zMxwAfJDH2t46AWLozzncGSsNI8sXtmISrZ2dvmdeWSNlXUyaoz+N?= =?utf-8?q?fVl6QyAaqRQ3jKhEZlBmL5k/Jb89RV1+I7BoQZrxpayeMFBWOuWlRsnOShEwier8C?= =?utf-8?q?VTe28j85jfs0diLQ4fccbiNozNID725BqyRP+FeiWNCIu3/UNFQrNEjJydIrEejy1?= =?utf-8?q?s0EJzF5aSqXluA6/ivSf7ZslU/ENZ5U5fi78mA8t0PmuRfJjS7UqtDNCXPSOD5XFx?= =?utf-8?q?+xgZZf+dA6swKJzoo45jlk8c0I61mvYYbx/QEE+aTC1ATGvUrr9L5yi6H647viiEl?= =?utf-8?q?9bpRdiUD8YvFkJ8IUgw0LuNncXqhcXIoN7PSUx6FN9XVwTjN13Qnt4wnVbLAp9bbH?= =?utf-8?q?mdKGcTZ3IImbgKAXcfVXZJCQ6Si1fzLClgWMMLp71Xle7GOKfxuVtHCOlh242Wgqd?= =?utf-8?q?RUP0QbbjnwHgZZAdLZwTaMI1yaaCAFCtYDE+zvgNf0t0Ruvzpyi12qUJtQx58I2M6?= =?utf-8?q?b4LI4Mc11EEtIX7k5GHvToubIemzVVsh3qjMm4Rslbb/ky6hMmNaAuQIVgJnjq6uK?= =?utf-8?q?WbJpZSzMARBW+jVH1R32MGWmhUolAg/Zh8ikI526Cef7zg0owGfedtnzOgTxrOXD0?= =?utf-8?q?KcPtQZueiPKTvJNgBwiaMagIdWlyX9WPL4JMAj67HK20azYVVZrZJFUDUxI41BuUC?= =?utf-8?q?UwawX9Q7SdHtc5j3OgOAwimRkVkpBhk6ty2YU7b7fgA4ogkoFiim4RSas3zbBNi6E?= =?utf-8?q?nTErEVSdjWTpDDw+58RRXw6BQeYO+kZ02D0nommxKdVaX6HCthUNocZlBooocHE3I?= =?utf-8?q?3Rg1jlk0KOqBFiazmzSwzjSs7EGduyosdCQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?bp3pP2/MLZl1CZnC9BiOBi/eVlL8?= =?utf-8?q?G7T+VTHheUWYxfZ6bknDUkdM/gZyT6jLCjp7gHC7crjml16pcujND4z0Z5B6pwjc+?= =?utf-8?q?mWWVEJNclkiU84rJds7DevTlCDR5UTpGjO9B3BItz5FlRyUCto0z2KnQwq2j+G9Fd?= =?utf-8?q?BxR86B8mSWC2lSDMM6hXWpK7cDpBkuU8l2VPlIQyqg1DhCN+mkxy4SlJ33gId87rx?= =?utf-8?q?mRQIQBLh421ewtS30jyxDhGZUSSPsjLqM0yrtz7IRnhRllPAqWrmTQd/AkaJiFexn?= =?utf-8?q?MV7QZTZxgPo7vXo/o8VJ6JiZdO1+4+3nQZ9hk6HDLKt7AWs2Mg8Dpx/MkTT7jtFKd?= =?utf-8?q?fW6svQriG1CAdKzEXgvxLlN7p1D5iii2c2HIMud8ou1WqtZ6UQbU8mHnyADrKo9mR?= =?utf-8?q?L8mw6o3oP5GGbQZjRuS/crxJjwyTX7gNRPnKcH5aKZY8pICqTGVW+L+DjXUKN0VHY?= =?utf-8?q?CAY+RBrYigGCM4qT8TkSEOQN060mvPsTjqt3FNDgP4bCMfN3Zrv4jcditFOppDzlH?= =?utf-8?q?DafxN2gFR504Dh84t3iEWxbdbhxt6cv78SZNYkl6Nc01tIAINp7Cy1SLM/pGfRJaq?= =?utf-8?q?4FGeIOnAhJOfKpOuSENnNWWhlM5XV8uIK+p5t+QIhs1q540nM5L4vKFYF9SKp4nff?= =?utf-8?q?l5ylIluBHf6LnBZ7OvlBn+d9Bz80sniQi5ZNk/EDVtZ1Ttb6rgSwtAiv7GWU/pKIu?= =?utf-8?q?lhZsieIf7A4I1omM2xOfeavSlN5R7ED/tpbxUTz1vhO15jz7ASePfvaQgImOvpkSR?= =?utf-8?q?tYnJd+Zc7GVZdoQS/5pRFYA82W6g/eeS1dLvx4CpT70fUWyg0hNiUddA2UL77D7th?= =?utf-8?q?TwHLPKnEfsl8QlIF7xOx8M55akIe+CCm5KRMXhiwBhohKdKoXrLU4LmwnHxv6A798?= =?utf-8?q?kWYSh2CYDav78ZpHPfo9vL//fI0vNPQ+VtkoUiiwkW16slNx3/bh/aQAhJ/6v2ngE?= =?utf-8?q?x9q1bRVj7KghwhMrsDQdnV5QAzzQToqv+QieL928cvcDy8CIi4m9tQq9eh1dpsJZg?= =?utf-8?q?vU1pIIEUvzz44Ou1U5fYHnIs3fJhBrg7DH7cuqa/NS1gGArAr58xc5i8jm41FLxev?= =?utf-8?q?nIhev0ro+Idgkz1bgx0Xu74fBUc5uYmDU3r+mqZuUvTrimjQK9hzq3eMLIvKOb50U?= =?utf-8?q?G0yPpvfrsMt52t9r22lGPBK5dvtpLA60kFs4GC752xY6UNdryjvbf/3uaC/tvnozK?= =?utf-8?q?vvMGg9WEp3PCqISn+D8olMVPckMsHLgXifjmJ2YicM7Lvae344zbxGw4CQz3/NapM?= =?utf-8?q?nE0QdUVyqDl1PJ1t+hyGEUBibfiWsdBdXmsUvzhwdK/hCSkkQqKAIjbLuAOOWC3HM?= =?utf-8?q?k0NwXglMUYVeubQeN9o2xT5es4ScLzsBxQqX0EhOoIViyKs4S1aFBybUDKNJI/vjg?= =?utf-8?q?KYldbLaDkfPi7/0FDijhmhqF1X7ZcvVTAA+0o7cT2iUCXz+egsgI9i4lojWqO95xA?= =?utf-8?q?ILoAgeZebFsPIFZlxv8Y3no7tWbDfuTiXnvafzfcBsHvEbMsgzW/Emm8pFrpDaZvt?= =?utf-8?q?kRAJm7QOuV47nopjG+hALxza3oLisVVCuwxpqnYi7q4X9xoZkdkPlCg=3D?= Content-ID: <2F6709242A64EC4A93A4EC0E4EF2501C@eurprd07.prod.outlook.com> 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: a0f1b1dc-4040-4b41-dfd7-08dc6abca472 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:22.3322 (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: t2h20BGHUHJ4JGJTgTRATEPpW6NdmfL3dPYbmRXUqjNGY9bDlc95hHjjzLvYaUp+JoeLZZIm8k54PxHcVw+U17zdK+CFTnsOtVs2mrd25pPkacmlEiFVJZyu/kPg1fXU X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7768 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 75 ++++++++++++++++++++++++++++++++-- hw/i386/intel_iommu_internal.h | 1 + 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index aac7677063..400b27fc95 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5395,12 +5395,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); } } @@ -6025,6 +6023,75 @@ 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.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 */ + if (no_write) { + /* The device should not use this entry for a write access */ + entry.perm &= ~IOMMU_WO; + } + /* + * 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_address_space_pasid = vtd_host_dma_iommu_pasid, @@ -6231,6 +6298,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 3d59e10488..aa4d0d5f16 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -193,6 +193,7 @@ #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_NEST (1ULL << 26) #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)