From patchwork Wed May 15 07:14:13 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: 13664775 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D2E4DC25B75 for ; Wed, 15 May 2024 07:18:21 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qI-0004XF-8d; Wed, 15 May 2024 03:14:26 -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 1s78qF-0004Vs-52 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:23 -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 1s78qD-0000oW-B6 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757261; x=1747293261; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=oYY4iC6hjphMuWFvN9OX+COHJCqK87uXfmgSAcUtRSw=; b=u/ur5GVlhXnJORysqrHKHlDcgcV3PZXJ8j3JXgRmyF5QaxAsUwxEtEfa 0GyDhtdYuUZDtsiEI25KWm/7qAB6sXzekjeUiX96/YMNfh5bjs0LgXyif 9ElZFh/G75f4VCVActDAc9i1CqdDYgjxY2XRsJ14BXFAxnKd8Ajfrzl6c Q7Mlv8kbX2pP+Uq0v3keiXbC6LcX95gpBxGW0B1O3MMQUx8gr4742jOk8 Ns0vbjUmu54+6YXttGJFOMvQP8ceUvVVFZhUDvjnCDv2P4rtyH8GfG2fJ ZOxpk3jnK582MAa0TlJq4iE1cl5EdIl3JUFvDp+lbIlZf07WTDyACNbLO Q==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581791" X-MGA-submission: MDHLic8GIb8P44XQJMd5iXMUqrMQcUO+B2t9XuDVFk/vKpfgR9fSFfoqlh84Gsr0eE0Lf+9HBCBKmm9/Huao4ZpNjjsp+0uQlvx4/mFekoy/aH8Sq66viOoBkh26w9jLuzgAH+XFIHlHC4cHTHvD8fCF+E1JGMkQC27ErL2CRnXRng== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:15 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i+9TDeDtX0qg2c1RdU3ct72eZ4ixxKxPQq+q+nsBqk+F/dYM1Qnufisa5J6EwIrAGw1rq/KkLCRdrHDRSeNUHJu9HfJSUgfNcqkIe86FIAVBNivYBOrDZ6J/3yj4GH4NV3cK8JUPkw7wGFXaiPwzCoVGqw7QY2cE7IxEVT2UrLH8oY6bWtKrRUg0O1tNLwL1ytrLkVqOlFKvaGcDnuYAjk8T2yMVFwEBfdxmlHjQCylxcek7y2WXBMw613js9WClUaXMRLTpDG/epsscmkfTfzRzS9+0Bz6rAUFM/2mOp9o48x7ejINwQ3vlzAwfmMuSGHwesUOjX6f1AQLtvHqJWw== 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=H4QLhS6MBQCh6d6IHxM4IcHoFws8Xeaz+FPtZVisV90dJ0ZMLJxWntypu3KtaDfSFsYSHLKGnNGSoCNrN4MVd3Vg/rP65FhAQm80UyGw30GNkpyYRnYZaPrhUQbJuRfTMF/x8kgp3SKIYbghIN+NiVPGXhAI2J1uPsWhF2KI9I2ombjGAbX5LkiJOJP8VSp8xTUSYRDx5ZKaRsEo2GVmdE2XXeobchLe30x1xrH53aYnZA1EQ7OJ9FWdgTkjnEptpVsbTOrSrmlNy+Zgemz1QjXgWXBlYkO4AXTm4GlbsAjsJvzr1dpHwg78vvQy7IDlQS6SWV/OKBVRsynsRszH4g== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:14 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:13 +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 v2 01/25] intel_iommu: fix FRCD construction macro. Thread-Topic: [PATCH ats_vtd v2 01/25] intel_iommu: fix FRCD construction macro. Thread-Index: AQHappd9IJaBN0w6+0yo/6p5M8k7GQ== Date: Wed, 15 May 2024 07:14:13 +0000 Message-ID: <20240515071057.33990-2-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 460be09f-431f-4ca4-29a7-08dc74aea026 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?DkJzdzGrfqeedtmbvWRbPbv2zf9dRsW?= =?utf-8?q?UEU1BQUeGk5z/2e2HQRUZjeKXRU4mqxiEme9lS9406DNFQz9N2oPfhP/SQRjnM78w?= =?utf-8?q?h/3HZiGwKHauQUW9UEmCo0wkyozkGcRf7580+TChzSVBiQ4c8mrhEu1L2GU1GuKbj?= =?utf-8?q?2Be9skni+rhnCmtuaj9B2SwqclhXj1fzvm+dE5AKZoTAcw79dPzrfReARQBWcuHnq?= =?utf-8?q?nXU7cZgMpxzdLlnOLPbW9PfODVCZc8XH5WjR7VB99JDaXRYjhAa+ycGDMrtg3jisu?= =?utf-8?q?niPE1lmZaivzqsfRqSykjp7r0DgzBUh145wRqNIscb5c0ZAiOutfv9kJS5bkqocy5?= =?utf-8?q?RcXKk/NcnaTRdtelx1UvdDOfWkAW/s6Rkn8Zia81gASlg0qDEploapK/hm0e/940g?= =?utf-8?q?ar4VAnm3rMObqCV/vVYzvR0q1sgYt36fCVYhNAUNQPMo0tXCDuAacKybmapgSxXjl?= =?utf-8?q?isbuumz7fXkguwokpquO6l750QNzFWnFDXYxJ9i0WBzEX8jCrMRnefBbXKnm5yI5x?= =?utf-8?q?gozFDc3xtEyItGOEIqKV2J1MIFMiO1hulDF7D7h6gaFPmYm+FPIrg5/HKs5f4cdcX?= =?utf-8?q?Erns2KtyihooAGFd9Rxmpr95sBXF19tPF4fPGPbOUWcawlxsJD1cu5GTZZZ36PeJU?= =?utf-8?q?/QzGQZidiKxZdyhP70+sQbAL1Yt54F8R8d3394o+5+XnVRHeoGOQU9ygx8f5YDNFe?= =?utf-8?q?8hhS3Yd4wbugQj77ve50ANiT7TEBnJNtJjqlEp6BfQBkUO6vtvQPclee0JmpQ8ARv?= =?utf-8?q?tAPvcX1LCfP92qex54jroMu1Hfo3MILGbCY3FRAEfQCcGIlvxbX6XjiNLWDCXSW0u?= =?utf-8?q?inw4NleykZ1CdP5nLlc6SL6btZBpUlAvgMJbqbFf07MurFOoTzVmN7bUxf7SzyFmg?= =?utf-8?q?iXv7mp/3lTq+VL1jGXOJETv9e2KUnqVpi97O1PPADVSqbJsYjYoarse2LezjdjHtr?= =?utf-8?q?icpseJ18AROl7/RoI5z8mkdux+AVE3RzbgSVTsAk6lil0puVzj6qX3qGYGWhhgP1H?= =?utf-8?q?dGDYNGZKr0ED96MV+FlTYz9pWbtvFt1QUb7T5L/5cSRenCues2iAV1Z7EW8vb979b?= =?utf-8?q?IK2LxMS26l/FkAB8R+16BjKn4PBqOT1Bom153bPQvyordBAtQmJftRYBO8trGN6au?= =?utf-8?q?0LBRn6Q0h0AslU4XKKQLo1taXCSefi/cJQG5SwrO27dQeeTP6Czffj0f1un+zfN6u?= =?utf-8?q?qTDAmjrlcESpF2ToLFOKNYv0WJVd/moOVAr4WnvtJoO2aPAHH48NVXc9HoetfaCPN?= =?utf-8?q?AMvCzI9v6g9COGXAoYfCvtWwLNhjJr8fTcQ=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Ynz1ZnPD0gctAlBLPQ+HtkfIm9fX?= =?utf-8?q?v6XHSU/IEbE/cuJDiwiK25rlgdUkKNAjtOMSYLkFbUpN2RbLalaO9Bg06xjeP9WEn?= =?utf-8?q?jvj9iqpqDxSLRbkpcXv2/MeSmuhF8u+zMNrH00kVVQ4Vhyp0VTFwj0Exd28rYWpkj?= =?utf-8?q?wAtuifJ7xWd5lHjHIKa9jgIltcAvMUnDFFvvX0imsQ4wA9QW30AD7eSgbN1uAdOYl?= =?utf-8?q?It8HTQMWvcE0fbpF1ozkwsDQ9rWAllmbIWmtB+/tABAsJnA/5iDIy+dAWNWhChlwz?= =?utf-8?q?TAe/ts12pu8lENtUU14KiswqcrlupteqIm5dCa/USg7Z1JVfPUC5B+aSjCNzHfLzT?= =?utf-8?q?hT/heEZrbQYdunzE7Ymh47ZC03oTZH9wCU+LKWYu9l7eU79JyCFSW8tQgqD9HFseD?= =?utf-8?q?ISILajsaRXWqZGHS9ublfBbrehCDGbdUZBu1B6ksiqIlu0xvsRrKNbrneKANB94JA?= =?utf-8?q?GYjsdneqiei0UBacpn/bnejZ6dSzgRRBDCIdBlfM4bG/W05wTstt/GWvhNhAQad7x?= =?utf-8?q?uYMD0poqu0XO7bCsyBToyIhlAELhGD1dRW6GchnyNgx4kEwX+0NSrOCTL0WonbIv0?= =?utf-8?q?IBWAgsMmyRTglyHj7vwYtuM6D0XbUnOf53BsKk5uP6nM7IFvTAYN25TCLKj04f/kE?= =?utf-8?q?olOCtlH0SU2vKOxSWlK573msPSEDIUdS1CNTZQ0z2MeZ/E6yd7je4all5kKyE3FV3?= =?utf-8?q?V7FE2ASdKBPcgLs8kpefD7dI7/fGY03qb459pXPKVjHd6AP2huqqlgOI8s/V/vXZP?= =?utf-8?q?pFqhimU1OZS31OaTwrFfzuxuiI8/C+bwiA7uFFEMz8o2BE+FhXs2XmMlJ3aagNMaM?= =?utf-8?q?JtxhCtZ6SzRtJm7M/1TNVHx7DRzzA3CMtyiJ6IHjvEjr8Dkx3ymv/x+2rBarX9g3n?= =?utf-8?q?uj12mxngNLt/c12LIdYcv3l5Qfai72IP92nccMgWLKTNhuhIXF4GPjcGK8mEHIlAj?= =?utf-8?q?BdQxm8QPBvF9c58YGZOllpW74POF0s1NsNKzMKhgja5NLGtk86hzrox4CxP6LS8AJ?= =?utf-8?q?FvZ76lZI3jj5jaG2jDbL28A7bqcUqT0CJF8R5xZEo0vXSe3hSJJpsIBXWhXIH4yIZ?= =?utf-8?q?UWjVq8Eqfc6i6h4kIoQdhjm7o5Q4Q+HzsLYeByjzCEQxrKnM1CuY70WACd10PGr15?= =?utf-8?q?V07zyb9XDrKpevHdJ+/rn2Ag3ZnbtIUQLi+KQ7AZnvdb3ysS166hzBamo1/KlkGW7?= =?utf-8?q?19dvrEOWdgzeFEmdmLT7643IcTKTNpFib45pAy6ccH06Czuhl4M6Ib9H2kCshEB8a?= =?utf-8?q?MGJ7io9M4lkzgQPp+ITHJTpW6dztK/YJ/a67vtfu2XkXsPm8pBL7z7BjDRsfxxIb6?= =?utf-8?q?HgoFSTVb+siC4CN1ihfPmD2kSSnxCNqQFC3kyypYW1zQrLzbZnsQb3eiWvhW4avbD?= =?utf-8?q?ftuRxHn8bBzcwmpZpbntD0xsPZFc/ovqZNa3ym3pEvO3Kw+reGQD9TQcdEQqWQmKh?= =?utf-8?q?BgcKqSw2tgIZfXsMlbfDnSyrWDGftKijR0bceHrihZKTEAMYAiunwqDaVHuM1jkiZ?= =?utf-8?q?stv6PnjYiL4SeR4dsjh1JUJZw0vYyb6D9smEvf9qIUYafMMPwmd79H0=3D?= Content-ID: <9B6B8BC14EE7344AB84FF1068C64F457@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: 460be09f-431f-4ca4-29a7-08dc74aea026 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:13.9268 (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: 5OuSB1LSPvE2v7FmlZiJgeO6C/6jiagrFJ/chlSGutNRQtVLd+2NDo9wX0rlAG9B3Bb58ku3N4JO/c8mVvNDUzO1p4cNTWagLSA83RlvZvc+OoeEjZVdaIRYV3Uka445 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 Wed May 15 07:14:14 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: 13664737 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DFECFC41513 for ; Wed, 15 May 2024 07:15:44 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qJ-0004XU-99; Wed, 15 May 2024 03:14:27 -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 1s78qI-0004XB-0k for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:26 -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 1s78qD-0000oi-No for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757261; x=1747293261; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=PMN2/YZ4hr8ioAnlB9SWX5lZ5wPmzGuhK2ljrPklk+8=; b=r5YSsRb1lCSbps2z+B5VHHz3rxYO8sC1Ko5+oPUDbvlcbyCxglJlIdZW +/yZTneWOx1dDofl/6LN7JqgmOeKz9GDDq38SqyCDf1VeN9+DBsXLu2OV vq7f+axdL4aoo2OJ2Rdxc6e5Pl2S60vRzvKkkJAuHGFs2ZoPpJZLUO9Fd IVW1dvG0zxkGghpziEpI20GD/NzVUuYSiOH3JYTd9PNXOFNPBho284eO0 cFDHmLb0eigz69Yqv97vrZkKT8nyxyb1Q2N1AHh6iDXZjveUNUQXYpTeD votmfgmE6E3FVkGnuKR1b6wtnZf1fE90tiy+w+OZiOZrN22Si4KWFRpty Q==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581793" X-MGA-submission: MDEY7VqxBRDW9HoLGQwG05wxTjZBoaUi6o/VJvrEfLtbZqreNFW4x+bhF/jv25gH6yUkhj2lFC3gf4HnG/fMNyUHFrerWeyLBB9f9ZhxE309iNHzz7QIB35xvKDWLgY6/tc2zyUsHOP8J2fCvTIJWC2xfpUUyo6IcskqKDz+oq+oSA== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:16 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZB7Gdo6sD525RSSwdyJ9Hxkixzj+sGTwPZYTkWuv10zY8CLdaWwp+fhMW/l39gChx+vZ2xpq+4x7bqAPG3qJaxEGpTcCSfOEiiidLVzMhfsEA+VCtuKciIExxE5XAWGWmy0a7/p7+IDxm63ogugXDud1L6aaGkEE+U6b5MTegE1tkN3xS824MhX+rs3tUtN5xU79nSroFmosW/r4eyT8SeCPjCAzedDACqATfGMNBiKm2gV8d+05xlFckLhmVkFsPI7e3DSnUiN5/Kkh8SUu9r024Nnk9hakIs2Cveiusc772AtKgpSCq9kIhM0MtT46LkVmBCAH+OKiKP/LNwXPFQ== 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=j85GBVGhbgZoZ5OSZyPl0kmnopmIpNe9aiGer3vUvrX9kScEsvZvccyh6B65i07thxzJzi24+zV1ECyBwlsom4x6ONecTL1lKUl0Rk7RRc2oDbs9MVmE9zFJ02gyyVg1LiLr+GVcaC8W3sx8uowcUjOSoQAq7N67wrSLLkq54kHPDlihHwgTWnC5KbD6bg4GpO9mnzPIjsR7YOk98kZiVyG1bgt7CqHGHN6OvHYH/AnzYoRk6c8AFCLwRuAI3KAY9QsTBjK+v0aZA2Fhg6IttgjjwK7PEaGFjbUL+6Od3gSUs7F05WUpFDlEel2jpL9aSaeUZEft73t+W278GASxAA== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:14 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:14 +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 v2 02/25] intel_iommu: make types match Thread-Topic: [PATCH ats_vtd v2 02/25] intel_iommu: make types match Thread-Index: AQHappd9882RJ9fKeUKo9Sr4V6SJrw== Date: Wed, 15 May 2024 07:14:14 +0000 Message-ID: <20240515071057.33990-3-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 3b4cfcaa-542a-499e-fd00-08dc74aea07b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?ZJ3zN9sP+tGTAaiHd/F5tfgU7LOaA5I?= =?utf-8?q?JZKp/9Vtb8rxzoeTXRbs2Bo3bER9Fj3crxWKUFrEY3v+kCPPZknzQhgYm9/95j89e?= =?utf-8?q?29EBshjIiFA5GIN3tVAs9pP3mgdQ8uQJNtdfsFd5ANgCKPwoA9AJeDvNmg7x4LUmD?= =?utf-8?q?mJPmhm1Z/pH+0m1FDFNNv96cmgk6A7NKcpHTSziHM8hXO3IVEeZJwm3FT79eE+brL?= =?utf-8?q?HyMcHxT0rXdimlAHqtfnSemW9DjPkBaPZ65tE/9s03SIdv/ViRswntcQieUNArQPX?= =?utf-8?q?vGl3JJ/YC2g3ANdI08aJKhZdQiPH1Z0d0NMQ5m5D/A4lBTlqrAtyaHS0f2SlOZAVE?= =?utf-8?q?Vjk9snP9li8WdaQyfUsbC4Qy/D4JIkVKqzvlRIXt40Howe3mdbOHeZBFZ8U4Jum51?= =?utf-8?q?c2oLNMsBUeO8WDogbFg/XMoTITJzDwblGy3H1EvkBUSwrIV2j6faB28AJ3kBDNUFS?= =?utf-8?q?87eLp2lns93S7XNnIcoVSPSm+cjDAKSpc/k8gpLaLir5UoYbVvLBajrGfMc7/4CWh?= =?utf-8?q?jemP1+lLlKPy2oKgxdgWxZVQSn+wB1HZGcRDSl4H518r4A5cEaN/n+6FRgE+msG9Y?= =?utf-8?q?RALNkTWJG1Qh2o6AeUI73QXa6ITVoUhM8cs422jedc1PO9JMMXdQXU5EDgkM9QH64?= =?utf-8?q?sBB+CryANsLgDkeAgOD/tSlOX/oVgUUfCSSuPm2wgOaweRh9sJTVGtNyz2gD/uikO?= =?utf-8?q?mtzlo6+z+FJDS97qKbYmrjXfwZwrcwPkQWa8qzUJ+O5lF81Q8xCombPJE9P8fWbho?= =?utf-8?q?/N6v7336Hen7XtAgORUAMwt5jManxTYF2OEx9sIaUP1+PErWdmQd3B4hQbW/e/ar1?= =?utf-8?q?uryMXOdOMfn9D1b3c+g9Mg/wpWksz871Ff8Rh2wB6wXQyzj3C7M8thKNs7BhEwxEM?= =?utf-8?q?EJ1oXh/Zgm0N8NsPp6U4UCa52GqEbTK330vqqtoDOHhtpbY50PBAWTPSXx6qJ8PIt?= =?utf-8?q?BlYdld71grO6PWFzklTI6XwA15EedPCYHVPPRpQLTG5AIsRLr4fXC7g0y0+824904?= =?utf-8?q?E8qiE0L6nhUvaveWjjFthv7TJBivR7jJG1dBZc2WxyBz1Qr86jm9lDKMU8oX1CroO?= =?utf-8?q?H+qs9TCAECUIZ9gN0VPY1HHQXACMJ/OdRGraBvL5BuL5um+eMip89MIzqFOip7oAA?= =?utf-8?q?q0kQVZuMFKP1cbZ9P7PhcJH78z9W/sUinUryxlr544Z5E9gDqklPkOOPc7z6teFss?= =?utf-8?q?Vqa4MmXdWopqspa3KXMJdD8dsjrkJOAKWBmZASo4JWpnjqs559Dym6r2bQQsaiTaa?= =?utf-8?q?VM8k2VyGVUbUeEUKA7lGmnq/O6vvDI2i0MQ=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?aD678b29DwIoFtKVupZhLyngSeWn?= =?utf-8?q?eTZQWkt2p/Rd2aFzJKNd6eOEL9u7Lt/FHfltezsbm2LRnTnQGGzdJsLprJIpikgGe?= =?utf-8?q?2zGWcQABjsvVVMZ/hSaTcrRgUENxunLoY6G756mVzsJr8Y6+zwABlq1Z3/19ZOqrd?= =?utf-8?q?HXRnDZvbkX0WORs5r1or0kjuWy8FQ8r5Zg8+rw0ZCmc/rPJcxjbiIZuiLIzxXaenK?= =?utf-8?q?tBWMiC26t0WYrf1oYaNVi67sFjtWoWJtVVLt+y0v3PqaRFZNrCPZUxEW9y+ZDTKGW?= =?utf-8?q?vOlM0Ic125FyFxPeKSF1J7fgzRoDErYP1iVNW2Rzs6rO31ZviT4b4umDZWlYe2eIh?= =?utf-8?q?WsIyEWAYPcx4y8Ae/v2J2Gz4IGQHpK0KG7R6p4Yx4tkxgqHSsmkNGUVKdtXkHk4Ag?= =?utf-8?q?vRG/B3X7vwPBYdTQASGCOR3JDGFvUssWprUGLtyk50OQS33VEVgFMv6Im+lohs1hP?= =?utf-8?q?kd3SAC7LecKyy5hhN6pa+406qrNBWN0m+81bSQQGE4LVxnRQv7IZQa8CDgrn7iPPd?= =?utf-8?q?k1HoHR/psZvn5qobHszdJ3+SFZwc9x0kr/FbiTnFgXkn+GjcWyioz1MlpBadfo8cv?= =?utf-8?q?rb8NZ9WKcfxyhGob2sT7DAYGY0EGeafDdk8IzguGbzEXb4d7BTpi59B1m3AqOJZDg?= =?utf-8?q?XHJJvJxgb/5SNZxdeiKJQCVwQbwpBewdv3of1a7Xg5N7F8TQYIOhq3ML62AIAZ9pd?= =?utf-8?q?klisIH2Cc8vWtTeuAMqHc1E22IknYFNQw/w/IbRxXW+iwAwcSUT5DQlkRc/JHPF8y?= =?utf-8?q?4yaxrmlZdyg1bdk9dqEn0WxdAsxJqcc73kvr7bEBbQ1Ea2ssiEmPgMz1gpEvLdnCI?= =?utf-8?q?kJ2x1DDJU5xyHrk/Rz2lPGkoAVae5tRpcW5AKf5B5aWzyXMv9L7fFUd8imBQqshtq?= =?utf-8?q?j4pj4nR1rbm0WQ6jQl6yuITO7T7/VrVjiFdlQrKIlIpg8PQk6Z076xxb5k9VIlEIL?= =?utf-8?q?2Rt2WA85mM5SvLc7B86+XbbAKw7m4HW+UmeLAxG1dNxkafcYTM8fn+0SeP4QPwf1Z?= =?utf-8?q?QUrcxHoqDU7ZKf3sTF7bk8xcJx8xp3V6F/o8eK8wr5s433QkZ4TTBd34XWuhNYb0v?= =?utf-8?q?p8SjUnOqr6M+P9Vu5XtNazzqmcW+nxKS7PLFoLQHfQ4Bzy5g8pJY+Ei//1mle8BRf?= =?utf-8?q?io9JOdsxWCSQ1bf1PQFDn5byOzTzS1uk3LJs8kOeJ67JXvk1M4SN6RNTMJraH8qyp?= =?utf-8?q?KtFnOMx+TUqyQngBJkZoY+cxKRSeeDyymRWTcnp22eTbpONpTyAGcvp7BQg5VziO2?= =?utf-8?q?AGRmP+wXrvzHkmI2+SNvRMSHYfeQIuREdve1G4qBvY59on5JFh5XkVfm3PlDF1sMx?= =?utf-8?q?kRv+hJTvuCQPexi9zt6DTqp5E0ZTTfNa6myZGoiRtmOPUpKoNcnGRj8bb99KrHOq0?= =?utf-8?q?SR5Yo4kqkGPhYSz9+gzJYd7Y9J4iVOt5cseT3Zcv1sLoFrCotwPXbf3iywa2nXQ8i?= =?utf-8?q?8p4whNPMy/pFGc/cWs5dCYezt1Uty2qndjuokN4EEyDrih/ufu5v2L+reh6/A9Kas?= =?utf-8?q?PMRZN4gArypHmzAFBw6Z28y51hhN1MdD0SeLEINSiNsi28AjmxR7QwE=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: 3b4cfcaa-542a-499e-fd00-08dc74aea07b X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:14.4798 (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: gZyqvtyxkidNwvf8U00jvGQk1Gx62TVnrC+9j7nS5UvNuIcXWXeolFmoYBJBmX1sH+hatUhrjyl6bqJbpd6zeC0MxPWmZcmx9NYbkq6X2h0l3OZgo4hJ6RtTkdiMtzcz X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 Wed May 15 07:14:14 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: 13664778 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 58352C25B75 for ; Wed, 15 May 2024 07:18:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qa-0004bi-MD; Wed, 15 May 2024 03:14: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 1s78qI-0004XM-Ml for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:26 -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 1s78qF-0000oJ-Aw for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757263; x=1747293263; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=9U8NReqWpaS6WMzQ4uEVQ6iKKTM2a3k2YHd6FNepzus=; b=m83wxokB+oYxatC3Pe8+yY0n1ir7T9vCvodtvzHtnkZVn6shQScp3PZd X/Zcm+itJcV0WD9BETMxfo9EVWAODoFxDTZfkINyoVuAE6YeWiNk+VikG jdAy0ETSt1o//NVNnjf47t1tQlBTULD0kn6abzdd76/d2rkvArbWLa1PI E0J+JR7GmqHr2pdj7cTLPEBMfrCJLRJBjhu/5y4sUi+GhzR0tMCQwYXOP ZzhLu8J6xSogOetSTkPHM42fSTGuA3Rfvqo9meD18/YD3lqGUFOKVUYDb LU77mjFX64x0KpF2OtZUEYmBl3gdQX+zR+nA8+7vAg4aGonv4bVviu+yL A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581794" X-MGA-submission: MDGlluJ/98O0j2vwu7fZS51/kx2v2UWTZy1PMgqciebDbvZqgkPzhN9FW9p34KXR3Ia4rsN+OxbS7CjOGDVc7apfUuxwuCwGqZPMXymuPYL+aH7QDCExxHTLAbcbKAR/VbfhN1eXaJGoSyPAcUDCjOirgOOp+3jckof747d/hNIfmg== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:16 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AO7CCowNHKvwUWWjoURfp7UlWcTwwNl6J91kB2ojt25gsl85A9bv8DGf/tYBp7dVTPacNC0i25HpbYo5QhyVcVJM07+Aye8mPC5F4Zxx8PbjnKXLd4dbpnnE5OVOYp4pe9oICrAOaiRfrR4rCI3ZksL7OxmjSvGPuyILv77JI65E/uAtBrwkM3WEc4Mie0uMKrQIhAYBpeCzTfcvs63ssrS1YU9TQ9sElNceeoaFdmq+NfDGS97AvfSARLWK8jPGsH5zeCZORI9f+3PDfHP0+HqrhZuj/8MCQdrasMBgZ3aXn2tGdOEjy+97NkSj/MNR6ZDm1b1BmZkfUd4+O8Kxig== 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=9U8NReqWpaS6WMzQ4uEVQ6iKKTM2a3k2YHd6FNepzus=; b=cJt1cygquSvtnVI3uSSroWA4kZL1OyGfTmZeezQJwmxweTkSIpW0hzq9vbs6WZ3f2AFvpTkovzusim4y1dpglncBhIWj4pEJo+L/8IMk70A2GyUGEEgHZy1tzgvcexeyx9hpSLwFwIs9Pe2domA/FPnOA9q1hapRCrLdOCVtAKRa94qxxgYvvMwGUKkeiYHLYD2CmfFbDWUf+Rv/vXb/EsXY4Dtd8RdQjyvTkon1YzDtw8yImxvJuFfyjzFZ138WGGjG8Y3m6fbGWzkJmw+NStkKEnKUdViYREhcQhEo1GW9kxrHofV0ZIJ6k3JW9edM+UYeXSkgWid46pHCFaoSIg== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:14 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:14 +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 v2 03/25] intel_iommu: check if the input address is canonical Thread-Topic: [PATCH ats_vtd v2 03/25] intel_iommu: check if the input address is canonical Thread-Index: AQHappd+KiUrruFNmUS5CpwZ2UWvFQ== Date: Wed, 15 May 2024 07:14:14 +0000 Message-ID: <20240515071057.33990-4-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 9bc55aa1-ccb1-472d-1d6d-08dc74aea0a2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?6ChVutLHD9o1+su2tOpUJ+bGL/jwVyY?= =?utf-8?q?uNQw7EnpAomo/AbkTootCjylB+zd9R06sLvuqH0cCbfY0r6GC1iImmqNv3CXZlq2Y?= =?utf-8?q?fxnhKc6DSWySHYZbJLkUa6XIHVxFXvI5CGh3ELNy64Jdvl82nAK+KHUUyxGHvVLXl?= =?utf-8?q?WhD/qMdazwaXZbqn9bShzW47loDCStbpVDfkFLoSn7yjaqukoaI2x3Q7lHORRxMRg?= =?utf-8?q?jTGt2FghdtxQFC45GfIG0g0CtitzhKwZoQvZbiKFCLTocHSOU/yKXT1WIC9KAeR9f?= =?utf-8?q?4/rZSpt0NS83qrhW+l4I2tguwicjLrJZzVlXHJSN+wm4OnN2VpwijzBr1Bmq5uhFh?= =?utf-8?q?YT2XmLO+il1LlF3exQVAwhTAk/phGBgAlL1zSTRHHu9h0s0HXUwh1cbYJzom4iUB5?= =?utf-8?q?pfL9WXabZKnH27am73STxNhsfr9pnZHuJ4Uy8qvBtGfgeG0Cd+k6iqBdpQdhK6zA9?= =?utf-8?q?yfj4PmD9jA0ht2l7DKYoo4tpWwBU6yP8up6nYGikTj44H6cohxnG+lkuCF9WLs36k?= =?utf-8?q?U7T0WDm3FsMBTug9Gkia7508c+HgundqtB/X3NDVuEeU1Jf+AxxrTyZnWA44IIMsz?= =?utf-8?q?q1S8GxzoZuXLDJvWEPZJDxMryvO7B18dJwd4DKm03LrbYHKDzOsSSbrjHS9oqWo5e?= =?utf-8?q?5wB7iFaOPRcEkdGHp6/cHvST1Uxc4e9coCwrjCAdy1+ABOlLr3qgXdX9FmrKrYPC9?= =?utf-8?q?w1vkLxx4l6N6Xj84QUkmaCTufpUYzbqIqpzCNWAvqP8s5XYsqP/+hvnLeircrDVu+?= =?utf-8?q?ydkPIN4i2qE0yAYgAq+15BGBGeQL9bWB6+q+PxqCWBiqYrqNxqxoS0iXssKUMUASf?= =?utf-8?q?GRtwdOf2lwP0KK2Qc+ZG2v2QxUHSTpfZr5CH7KMgiDq0Ud6zxnklGEpfRc9R4Z9Ko?= =?utf-8?q?A+3giTzslHZ9ZLLk43ZestuItAl1e6ScFeIg7H/NeuwXgBqkuU/zhGv+Msdfg5FBN?= =?utf-8?q?JeUIeh5uRbiTQadspv9RaX0KnLQi5EzcfCm1NYeFS4zD6dOl9gCV6mkQQjr/taCi1?= =?utf-8?q?BBh5TSoUvxwyQRMCHZtLzzRqqH8JfhPiAk6Qmb3POjXvhbjTnx0nrkV5c+ayVC4VX?= =?utf-8?q?Jc31xQzL2H4mDkRal3zdz2EHD8WZwcqrarZxqJiF6kn9GCyGHL2GeFeJeRPt05kDx?= =?utf-8?q?8qW6XDal+YJ0VqjQgyEhmvwwOhDagY2raNcjJASyh86dQTgUc5WierkFfBMDsjnGd?= =?utf-8?q?K3WuL6mL1TFRMfexj3Ik+PRRCnzDpzLe11knS6lk/1FixUL99g9Y3a7BQySsWuscm?= =?utf-8?q?suOF9k8g8noq5m6XGtHPGX3C5GrG83EY2BQ=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Q1lhj8lROVvn/YKgT4kGJbW+d9eM?= =?utf-8?q?HtBjPwyiuuiLvB1pwAU5voXQ048wvFIpy9eVc3I8uvOgO5SBX8e6jh3QvGQbsjzkX?= =?utf-8?q?DnTMN2ngDmvwsAm8Mszzcc/h0RerqQ8w4PrD3CLRdnx/K683FwjrEZiKGCkDzLryX?= =?utf-8?q?mbLkMwpAkZhs36+d2OPvovxhbuoXfSMyDRvoOLV5mfVmE8otbLBrp+1cHCKp8C5B4?= =?utf-8?q?fdo5zVQ1juVaAa/ujPPyEKYsdYaSbOZmFtWCppR1bgn0tWqE/K6eEe9OmG4yB0rl8?= =?utf-8?q?CopKerCtNyUM5wESUTasdFzby3Whu7YbDjQ93kKzhgGtgeNWrKCmSyDlfFmHiN/tv?= =?utf-8?q?X4Gs1Ab0dGPbdFI8EkAcmcPesw/aiQfzGz7Gbywf4bQrzSe2wsJVKPGp6sBtxMODm?= =?utf-8?q?C7I7G12dvE5JZ+3HRX5C71Hs4BjI6SgJjaxv5athi6Ag0bRDsIpcVEHLwxbeOaGTu?= =?utf-8?q?SusMPVHTLpqo3g/efIbTWeyEmgIhkWfn1lC4G4X+o3zQuPJKOZC/Wpy0k8aIWWf/7?= =?utf-8?q?SnZS73cuxXNj+/Ynvb9IjwFOIOADhlwk+CUNmaP6VfgkTm4Mhf7TLvw7ifjXN98LH?= =?utf-8?q?UMGWXglN4lijqpz0Vbsdti4j/j9fqLlRI12i3CS6legtL410mFb2xjVliaMr8god9?= =?utf-8?q?/0zUx+XO7TJHo0rSLNFhtAfi21aVNwC9ip3ApvlCvzaqleffYQQSY8gsVbhcRNDe5?= =?utf-8?q?/CEv3fGjH2+tqoHeRnfv3q/AGILjtMUEgivKgmzAtFM+M5574Qn+waP2k/mJ3+GRx?= =?utf-8?q?eGG2eiTYTmrMTqONrAscoyyv41Z5zBdIdmfMSb31JIPa6GlFc3zogjFEB/wLdnMsI?= =?utf-8?q?tacPal/VNuZ0jjuLNDyy3npMfgUzYx0Z+KXcm0Trpdpcwzxo4GLjZYCljFzHeCzSE?= =?utf-8?q?QNtb8sZE7wCSoh+trife68JjPoAwGTYD02do2DxororeD80Yr5yg0opqHH3MU0gFZ?= =?utf-8?q?8R/N6z3m0qpafBTb/1dDWfoYataRsEPfyPf0MsrUgE6+8EsUDQuP0adbwhRVGxuix?= =?utf-8?q?EI4uD8l/kX6ZehTK15qkeybPpXQOsTDWne1opCYsg9e3TZWYUKUyWXN2s5nGKwQ6S?= =?utf-8?q?+8FcHo16WufWNuVwDz878EkzlQL+zlcZEDCe/gIWJwVF24augkyzqxQ8e6vESpy+A?= =?utf-8?q?fEcNtwhxZhwlAx/WeAtsV9AtuDMn2E5fWtIgSOLiL9rJGjPZr11RMwGZKDmOKsbpF?= =?utf-8?q?gQAbFazQCxK4LgIperl83uxdbQogf53thHpbTJeuKadkRFvuklwg8Fwir64Kxe6RO?= =?utf-8?q?R9QE5ZA0CizrYgc4tKTp8h9S3UcsHNS/G5PIrebMwC0i2boklfQoeeNiZXBwcnOPq?= =?utf-8?q?URnG610H3vV7xvYOWOBoRdwqrnklQK8S3tkjTqQSlW0Oag6Lpyymgyr1XNF/CBo3N?= =?utf-8?q?3nWqBsIRg9yA0bRIi7HV/Bo5wH0SDzGjCTjEcI+obqVhmo3BvbxPk5s+2112ri5DO?= =?utf-8?q?9aIh9ML7VJW3feCQye/MsW51w6uqjE7mwt4yw4RoyfBAFCyPeKZW1cdTjGRtFJAZ2?= =?utf-8?q?9UdlWamB+7H/tZdsRvRvJUl21m/gEEtdfBSOzsR1QmOSeHiL/LXdd1o=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: 9bc55aa1-ccb1-472d-1d6d-08dc74aea0a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:14.7333 (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: aByEgcxOj8EIYo0JplJZLILyRvsmqYaB5H3cWMbdcmSWdYfUGpO90ez79FbnMcFUuwEYaX+DjdJbeWbD95HdnEUHFZ169SBg1wwxDaL73k3WCGBxsG6uzv7pNw0V/RVr X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 | 21 +++++++++++++++++++++ hw/i386/intel_iommu_internal.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 80cdf37870..0ecf00f37a 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,20 @@ 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, uint32_t pasid) +{ + uint64_t iova_limit = vtd_iova_limit(s, ce, s->aw_bits, 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 +2053,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, 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 Wed May 15 07:14:15 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: 13664736 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 29352C25B75 for ; Wed, 15 May 2024 07:15:38 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qP-0004Zu-Nd; Wed, 15 May 2024 03:14: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 1s78qJ-0004XV-9t for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:27 -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 1s78qF-0000oW-NX for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757263; x=1747293263; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Iwcyrl9KCw7Jh1dv0E/FHT7n8wj4cy1aJ6V3NU3ckeM=; b=NKEJIS1B5yeBtQq1SEIHceQ5N8czr24gjxZSwNbLVJwMdUe3CefPW7tC Sw3pSuEoWJ17Jyta8G26sZJpRdvecCem+yDOxeVFsWISJXEURUJODzaZY 04+H5KCx3A4I+/7GhCUWFvudYfMqSEHu1ed1n+4Jvk9rhEpqgSvLQJssd /1DyFrCbWMOnvCZtD3ObAVh/HpgGKK9H1Lb32VTtfmpzRWnmYYUE7KER1 ICsEK6wbBQlbrLwrzxxho1BJeHvI7+zVdFHYi292mtcATD25BfTfDzEBp ncB9fFLWv9K8XRnd/t6aIZgJJ8DWOkmq4J22YgNUWTx93xeZYFGnZaIPZ A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581795" X-MGA-submission: MDECe5PZv9r3WN/RiCMzTDZoqjrcYsH7bqlmnezuZkD13qFuxGsTqA2cYMCH0C8RmpfC+nUsP7RZHtnuExZltPc22LgFUPzaihmG2iERTna4pwjvMQhffzuwydifk6OuObosG5eC842ldtdmP8eW9va0vq/JKIBPbtqN6z+zm51cpA== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:17 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JTaaeFzPeLdVB4EWi3r6wEG9a0W/GMtoY3kFfb5C1ESdNRi7ge8zKkoircmlpKTDySmuNychjBUjEsezh6GnkS5E5eKs6CfDJt7HFsncyv1DqMBsa/HqzcP/mK3mY8OkjFISbq0Aa04L55wXQHFZ/ohSh+T6X9plz1FmZ6W03jHWxsuX6VxbKv24RouZ/3ZoUClUvR1ax9ciHf5P7zVMq4WKFObHq7VPfnccfNT6ygWEW3gak32t9ICIezWkmPnUAesV3yrGl/Qz22sZVtnBtWonPA7a62/h5U9W/Dw9XSENgj2LpLlDRASlvjTW4fgGYj89ltTLwjqW9P53FBWVMg== 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=Iwcyrl9KCw7Jh1dv0E/FHT7n8wj4cy1aJ6V3NU3ckeM=; b=Ho6MlY2d9+PTFfZkE9Fi+M3dG7j99q6OONx8N3aUdT7JIUgjMv100OvO5rUHQryiDjm0LSPX1eJb3A1iQ67APLfxhQwK5xCaTtEwsVd4vY50AJSTEuQcnFwmfSYPU1W2CaDH66iUYkAuAlwGsWxIkAK/JQDhOpWiwhpoCAAYcZ0SXgpmbTMF5K4kWTAR1yKq7rX9xQOgLETnlEuJkjVe7Xnr8BFzQI+/mm6vyqGFx7tiWW9OG2DLL+/vSjPlM3sT4PtnXsQGesE72EKQcSqbHk22PsfnOAyjLsSC96R+TrPjxsW/ffQ3LXKyU68di2Nfp9GFfQmw7MU24rSpHw/X0g== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:15 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:15 +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 v2 04/25] intel_iommu: set accessed and dirty bits during first stage translation Thread-Topic: [PATCH ats_vtd v2 04/25] intel_iommu: set accessed and dirty bits during first stage translation Thread-Index: AQHappd+pmoR6qJa2US/JV5yJx2XMQ== Date: Wed, 15 May 2024 07:14:15 +0000 Message-ID: <20240515071057.33990-5-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: c4372143-42ac-4cdc-61d8-08dc74aea0c8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?24inncJp69/aKUM7hdfHs6E5wS/HKJD?= =?utf-8?q?AG62UUcyS+Wt8v/wWTsvexN6HkHHCLEprnno9WH3RYyuVlpvSAbRjXV/IJnqS5x9s?= =?utf-8?q?n5HzLEx6y6pbkiiPh2hAkY0ygC3S3P3sNIY6jMyr6BdiAlIiRdQEkdyYHpqpL/7te?= =?utf-8?q?g5ZJ/E042Z/wYlZCWixhwXZ4VsbOqVgqhujFG1qQXvLdNI88pVFuvueyljn2CCa3S?= =?utf-8?q?vD3eLezRYRpO8OuFq+1FhmVfmeZKNH8Ma4q9zD5xgZ5NU0ddCGIDxKrgg3UhgJdWr?= =?utf-8?q?Lso4qDKdppmLZB0uMTO05XyWX3Kca4rMOzbGU8tUjPyQARL2W1o6/uvhdWQHkZGyc?= =?utf-8?q?xbkseTsTACZS9/sIodU47AsK/WlpX3AknP1ppRAso2iz3TCNy9yA4KLWa8yvlBbop?= =?utf-8?q?X4iw6EFzh9Cp2wDSH6+3MrBHUl1gKwhnKxgjU4nwnwVSOFxrylW84Na6prJ8Nbgn5?= =?utf-8?q?Q5/eAf9HR6+Yp/kg0vLk8PsVwNUpkuu+mlgQAHrU8Y8PIdkKtJ7uI5p1x4rEyNOZZ?= =?utf-8?q?ILrRUBf2A330NyPj/PvkaIdwCmMpR4suuHjdT64FDffncsZOLxbYKhGZhaw4tH8ZJ?= =?utf-8?q?Xh38vYM8fE8H5KQcssabU/SMJh1WuYIQ5I3GIg1/JggWt664l5/z/i7kzYX4KghoA?= =?utf-8?q?eP+LwxbZroeexOhDJpPyCk301x9U8iZqifZ8qU4xBIlDGTRt+DQzHBNdbmJFcn8+1?= =?utf-8?q?ZWWgs/4BjsQ4QPdOsnRsBuH2ziXqzAI0ukhljaSMeNIWGKDgujKfll18DgIgjJHbq?= =?utf-8?q?tD8UlAf+C/uTNqiuSuiKJEDX5YQywVd3T4MN+AK+u4C/Uiv5PQhqoXfgF8DNl0dUY?= =?utf-8?q?wh9qYfv4WGxxrrJJOIUTA8uz98S45oPQVfYnnexuxcztXf03YMLd/sYMGC+p3u7SJ?= =?utf-8?q?pN36jj4vltOCt8Ca2buHqBZ3Whxs5+tdlOtlYRx/QaW8rcXFyD2YReL7edqvMs4MC?= =?utf-8?q?RNIgRtmyzEy/20UDuT1fbERVY3QiaiV97+8om5xv1T7lATafNzTN+8Nw+5pfTXQ/1?= =?utf-8?q?2HlZ+OCnAxcWj+iWcVwHDAeUf+frZ1FWpxTxt8PlxoZB3A95HwjjGvVPEGOitniTO?= =?utf-8?q?bPF8jM8UOnz8gOrwgHKKMgPJzumTE+3qfI62iTxjH+648BxUp6F/XIBCHUXPWljp1?= =?utf-8?q?mqJkbRW5WSkGvHPHJ1YGhmQKdv4mW7L3o2ViMaSaMoiuyi0PokKqapqvcjzVvUb4K?= =?utf-8?q?HI1rDO4KlAM4Drui1ybC/lae5gWZSYZKPkLyTMhbFSOTC0vZNTU5yLeFXRF5WR0yp?= =?utf-8?q?x9+DqDEiauegquvYP8CjVZNTXaAyDeCUBdA=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?G1wPoM1dbOnBdaI6253BuvfalRI5?= =?utf-8?q?pAAmdmzSxOHdyuF0jrmW9JTkMy9Rd41aMdPVp+fdNVvX0U1Z+b50Fmm24PPFecK+X?= =?utf-8?q?IuBU3TBTFK2fUjD985CXeYMR/ot24c8zx9tV5sQB9mvBfHZsA8rYOoCsIJA2apEjJ?= =?utf-8?q?o1XlJHS6amPNN/+WjaTrCIaamxYHDDvz5RouLjFmEeSUlLfeccECpTgwNVG0LgYKe?= =?utf-8?q?yPHC/2EN+EyqgCP9p05L7IbILgeOW7Ti1saGswQRIXVVg6BN2WLvHDjPs8noTaNPE?= =?utf-8?q?M8IB0jZVibO1wb2NpDno8woRi0MYgSxZkgd0FlPo+52hEMPFOtAUWcF7Oa8aBzxld?= =?utf-8?q?yTM7C5liM5qO3a6q0NXTqIXniKl4GHIboJowU/VoH01Taw8Ca/y4IJ2r31yQilJHf?= =?utf-8?q?wBgpwnwmBiIMdWN928EKyU5gWbvTjRHydSu1QoimrlnE2Mq7Hon/tzU0Ub1NOJe1h?= =?utf-8?q?5hnTmQWuSd1p49JKwjEeMBzQ9iQ7ghCtTGwykD1AlJt5mHtbD7vFQW1mgu2Cvw6+d?= =?utf-8?q?b0Hnc60rVvyq19XxLZPai4Dw7P1JU/zU/fCqD8I+d7zJ7lUvFNlsukaealmcrVmG1?= =?utf-8?q?NeXLln7Ek4KE7Dorq9IQHBgr02MZ9LJNAQusX+ovoAWT3b+uWA6hWs6XMmO7K+U0R?= =?utf-8?q?HkWgk8FgLWLr8/fgQkoDvf0i3laod23x/y06N28Rr6EwXi7sc3hHdCShUjxKUDo93?= =?utf-8?q?fhSa/s5pdFx5xw2GF1dsa5gFGfuYiaRFiL//8MjTTxVF5v6Su9qinPwvjJ2kOkaRV?= =?utf-8?q?s3++ofNSGd9iY8C6AlcfuPpqo81r8b3SH97KgYjdq0HjBEyI0KWB3+eGCnvGUUyJ8?= =?utf-8?q?BvEmaQ7PkdOcUf9eF3yBv5bTNfjb3J4KeMgvHRdeXgKBWj/2JKYQ+sicmE4tlqvXU?= =?utf-8?q?p6dpL5J7deLqutYz7LPPeW2zu4dvGYEW+z7O9K9xNFj9PaEbWKAc0X8EKqkOKxF8F?= =?utf-8?q?k+1z5Cr6evtNEuYKYKyU52L4FV1jleY7Mq4FbrYIzoaMQaz274yuxQ/oRMxLAsXam?= =?utf-8?q?kZgdFxpaicfmRXnNxCNdlXY/PrqBXrMTLJGBDEVuze9AGhybKmYugz2IspQJ9fZ4b?= =?utf-8?q?94LxoK4RgUhSxFHAiB4UKLXZHhNjF3TrWsDYG7KdVoMt8rgue0ye3TChaupnRNspY?= =?utf-8?q?AxTjCK2rUJ4bYZtfS6V8IY6t4u2IDm6/rN6O3ylBbIn0TwNn3m7aHx1yx/RAmB7rC?= =?utf-8?q?MNmZI0Zhb6IVOEo5FimCIbJgTlT6QfVOxH5FpxG0rvBHJOTvmKO3SGPbMM4b+HlsX?= =?utf-8?q?G8pduimHQgrzs8CZB1zt4Lrp+TFoQT2Hr7f0y9mAyTYPFZOOHxK/L+oYmkz7jKJJg?= =?utf-8?q?pCJgWEiNXRYz+ma1xWVXzzEU6AQj+BsiPM7tki95WR8aKnLcDzUbw5MVI9Oyl7UsP?= =?utf-8?q?PMCkmoCm66hhhgq+u6COr9EwWKitCAO2aQ8p+qNREqRrkY4km41+rOQqUEztYxEbF?= =?utf-8?q?im2gQde5s7QsKR87V4ejVa+HnYSuiMg/aOa3o6N+suVlXwYKWA/Hg1S4zIBnsiHsy?= =?utf-8?q?9fOsqOEmdJJ12tB81fNZzSGhK/IXR+Ff6BHT6QvcR6ZjBImMvMPnxxE=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: c4372143-42ac-4cdc-61d8-08dc74aea0c8 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:15.0089 (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: 5wbXepameibmKyYB29GPJV8lTkOkpwbwcIYEHo0GPhV0iKO7rdMbhenr81dN5kIdruBvlXzukI6cH4hs7Y7Eb2g822zomxHi81+zeZt7xDVpNDAR+RI6LSYzPX3qAHFY X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 25 +++++++++++++++++++++++++ hw/i386/intel_iommu_internal.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 0ecf00f37a..252364893b 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, }; @@ -2038,6 +2039,20 @@ static bool vtd_iova_fl_check_canonical(IntelIOMMUState *s, uint64_t iova, ); } +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. @@ -2083,7 +2098,17 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, return -VTD_FR_WRITE; } + if (vtd_set_flag_in_pte(addr, offset, flpte, VTD_FL_PTE_A) + != MEMTX_OK) { + return -VTD_FR_FS_BIT_UPDATE_FAILED; + } + 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 Wed May 15 07:14:15 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: 13664779 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 41BE4C25B75 for ; Wed, 15 May 2024 07:18:50 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qV-0004aQ-4u; Wed, 15 May 2024 03:14:39 -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 1s78qK-0004Y0-JC for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -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 1s78qH-0000oc-0E for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757265; x=1747293265; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=XcjKecxBdsPpr9IsLkbs6s9MkMnBwLIwAGN4s71C3bc=; b=L2sx8td6Sgro9SZ6ouh0bdY6T/Pc+G3ddHHl+1Tut5X+9RQzRfz3s3zl YH5HejPQ57/lms1vU+ySfErQyNUfOJBob1+e0iSqy8UOqvsb56/rz7Wt9 XDAApD1Wok9gsh9K99qXs9cEWxh7u9Aw8iuSBGl7G2Uq/TIQrXPjpq/WV gfDEu1KQrp74YQhXuS94Fx5IGR/d89IPvdcCZZvhIVoWpbeZDj6PFx8tC +w0aEQiWXVYUPXgXEf2txwIo6qtxrEByVMietjxI9za6z8hv34hgUnbgD CSE0g+dOWo9MwO7Iyo9ftfA03QpuXlSbS1tDpLV8cO2Y7qVqGv36+uWDR g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12635437" X-MGA-submission: MDGdBZAET//s8o3GItneiAiU43x3WGBbR/XnX59ruL2nVx+nSEfm9CwdGVsKwhYCQhKNW4rOc+waaFl3LxoorXk7FAtBKfICTHicB0LjvozUSsTLyYGQvgbW8PRYc+loXZq0U5/bawOkQbCnmsec9nL38xn4QDG9zOAaWtquygv6Ew== 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; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KU63CaEajKbDofofl/vB8BIn9lbMk1oEABVvjbGKFkGwm3ZmvyZvp/9IZiYSWwIoK8X8IPb3JEEzhgnaWSaGth66geNwDWhvAVTGAzCuNJxYd3k+A8ulUew7N7DMpMQfeMkUIidq/IbkhWv32/nrwx/i4TbOSXLsTLNVQwDZ1ZpmbiLHoLCOMM80CssW7TlcLpmwCwOSM7SCPp+BZ4h3JzhxdVZTiWIC9wufzW6ZL66THPAFhfIXQHKi1eZUPupwF2pIKdeN1xKTf49GDoaAABZrEYbtf2Bs+IJQyCqh+0CoryDwrhM8Sjb1m/eZT5Ofy+OH+/iqJ/qAshPmbfomiw== 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=XcjKecxBdsPpr9IsLkbs6s9MkMnBwLIwAGN4s71C3bc=; b=n0xpH61ikuy5qEnXFf9O880I7pFaYUJhEwrUX5C0blPYZoLW2Rd2uRae9QybjcmmYRTfnjQ3czeJlNJOnLw6uGCenzM4lk2ahOrh4YQcPyctPpYLWk/D/KV1IBMAlH++i4hKWCIyWFj4x2V81bLmjJVCKC4VJb/QjHXgTVVGLgUHk9JFeHobf66Fz6EBzMQW+6dgP4TOohyOngSqyu9Kcc6I+FvCd6Li0yW6dTj1fkQ864G6t1MNWrYbGNxiQcIi/9T9gADnEISA6l8Y/wpRwSELiLEeBuW797MJkIpYSOJ/qiLo5vS4fr59XooXDPQVh/m58tN8T2aVihZC7t3gzg== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:15 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:15 +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 v2 05/25] intel_iommu: return page walk level even when the translation fails Thread-Topic: [PATCH ats_vtd v2 05/25] intel_iommu: return page walk level even when the translation fails Thread-Index: AQHappd+BZPelwlHbkqPdUTJeAISqQ== Date: Wed, 15 May 2024 07:14:15 +0000 Message-ID: <20240515071057.33990-6-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 1ac4e559-5523-48e9-9bda-08dc74aea0e5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?pfHkcE7Qt7bbpUpMnpnq/2FLe/+qy0x?= =?utf-8?q?BGYfa9O9bdFH2OqHhM1UTRmUG35i3FbwwTgnWA735lNDKn4errvy5WE8VwfdQ6tFn?= =?utf-8?q?A1Ke62ElB7lp5Ye+MDz2LjhyK9xrsC/A7xRkqWCTC7gbgZklAS51P7+H/Tmo1/MeI?= =?utf-8?q?2/FJn1Y3mCvV65bO5wO8dD58piDHoDMcuzQ8DuAwcGS4U7NVio/0nA5sjh3Dk/BBT?= =?utf-8?q?BAkkmSRmcP8XoJWEvkxg/MhWPHhnEmRbdaqbgGWnrLmT4QkPtBoIaSiC8XNdHtgqs?= =?utf-8?q?8YPuPZRviT+MMZIuP+z6q7yJdB9IFNaqq9vsITBPrRw01TGeu0tSjjMpUMT0xCh7F?= =?utf-8?q?OH+NIPnziwIhltwHDpTMhPkrFf80spWgQgMS4Bd6u4oQn78WW2yA3UiMO/uAAO24W?= =?utf-8?q?QQth7Hv92u7MtaOOLlS7dBjYdkPP+OocX56v/dveWSLD2DBjbVM5SmbKqnJ0CqIY1?= =?utf-8?q?2xIa3ZC0Xq/RnXQDUgLfj16NDDnQHo9HBQC39JQKmIzQg9hLfH4WLIjPqIxuu8kts?= =?utf-8?q?Lr7nFvfaCjCv1lTCrey3k7aFeQmKmI+3Vhmbqp7jahNQtmaA9W7XQmYkefbJYGs6G?= =?utf-8?q?aBs9DXiq4p323D3bA4bzD/00jhGBbdfsCUbFvkrS7IhviusNFR1KDu7h1zkqi5mmP?= =?utf-8?q?dXp+d+mlzDTKDeAzgm7VtMHTqspCslg5A9nFP2+zaOdt5l0raP2ymbdDmCnWmd5Nu?= =?utf-8?q?3cziESPrjgJ1RWYtM6BV5nSY5XntEmtLdoYcRVilerFWWmBFUPsgOnxcGxiFkvpiH?= =?utf-8?q?D+iWlPOxtE+3RkMhjbeSTDGyymkslNL5hRRgxKpK3bhHl41eMnmAGyK4qXAeqgsXM?= =?utf-8?q?jQUjWYg40R8IpclLpygALG1GswfAeseKyPqWNGs4w8IntnG+RyX5uxyBEbQkawIAR?= =?utf-8?q?T9hkoQxs+QSrIoN9kPj2tJFSo2YqB1SPlkbwY/BV52tZ5+Z1iogSaS6Tob79sbcMZ?= =?utf-8?q?RGhKNq28pYSCdxvb0a8Wp9t3TFr6VZlLT/L3mRbZIlHHm/oNrR3jPJOUSaoe5p3dx?= =?utf-8?q?GnD1xFuG/IEboAaZnF+vtYydyVXWA4sptC5ROaAqI4ahkAkQApZ3x0rIUfvGvDBil?= =?utf-8?q?jj0DfviVYTj2ZHKbrTgqwhDo6qhUj3AdqnFhL01s0VPtjyfovpAaEiOSYeFiBGnMa?= =?utf-8?q?pTid+vc1BQvpN7ieLVMmmmJmyCCj0/EgBZFgax04ZjUfqSXjDMr0SNdNNl/8S38Uc?= =?utf-8?q?bTh8KOJKT4UBtzoKr5xzNHyy3WdcuKzJl/zcdHI3sm6d3mYo0hyQWfdxlqhzA+S+9?= =?utf-8?q?k4sRNpM4H+fmdYGnCbc/CyPpdb8lbnjow7w=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?kJlTnXKBOpsaon+q7outcvJ/QhCV?= =?utf-8?q?DOd3A739R4pw8f3i+2sVHl9NJVd4AQJC7U36nQQMCAfg/qPxatuOOTyTDGH6AyhaY?= =?utf-8?q?i0/SHwAfIB73vX/qltU5eZ2te5X+bKwHvofqQizLQDdK9udLm3Ju6YAhTmvGFOXAm?= =?utf-8?q?HiGBfsPFLHsqOQvRzspfsJX1xPY+vYHVXLMe1rFUcnCG746FzEZ/fc9S2k89DZkgC?= =?utf-8?q?fcu5GJ5LmtE+B7Bl7RqKLWEtxbU5xIXkfue9R89NY10AVEaU0LYSsE5Akf8WV4qET?= =?utf-8?q?CvEDqRGG4IhILqF0VUP+9N7S7en3OzMoFab6RSIo7E6vGUxDATpCXIzk2JflgpFo3?= =?utf-8?q?24r8Gm5fG7zC0Zy3CSEPnUZgTt+9VQQo1t9XrcMP1GhuMsyJu2MMqIVGJtgC0LmIM?= =?utf-8?q?50lq0Q6XLPwPSfFchI866E4yWOQ5lIcNc1HZgMKrLfkNllzeoGVlOyDk1uzptpFrC?= =?utf-8?q?tYUkBBAqRrggHEoGlXewnZUJGasNWiQj6QDG/0Vooxqo2Su+jkU6iKrjUVLy2rITU?= =?utf-8?q?MnKeVN5d6gUWTMfW33W8EclThgH7i/R8VMuo99THnuqlwBvk3tJcstUXLfgh11Fj6?= =?utf-8?q?pqhas0c1m3a2QH6a0c2+M9FL+rJ0oJIxb89qnCvgglTsZQupt0d2u51S43yryBcg6?= =?utf-8?q?yJgtRbxRTvxvEIyZfELWUiXoVEkjenVaC8LJ32sHmvEV75Tv2BEedjVoZZsel4u/A?= =?utf-8?q?k3wR11Jvt4XoRIKngAPRrk0PdILcVS4OH0gxTQ/ysEIZldmHPAHaPgTlDy6IJAhKp?= =?utf-8?q?9fElqGYXXQH9Lu/X+cZesKxCkFcHWrbmHtr6o10R04FGoUMDygPWDHtGlDobKxSb7?= =?utf-8?q?ufSXf2HA0Y/n5l3M3sESdqnNVR8xwkTY+GdvNQ5WpKXFHeQoBJjz1xPEhHFemtQGm?= =?utf-8?q?9UoJlBo8Qk7jiJ35SD7Ns9EWhoAlDTBRwIHNymJ1F1SQtH4vKbcZPXqbisKho2Ejm?= =?utf-8?q?Pd4gWMCQGLY3PPZ8en7yTH6yFG1kpRJXi/oK4p3rjl5aIOeuRG9kV3eRlNeUYTZw1?= =?utf-8?q?InQuEyRXO68utaqBw/yY2sZjCHjlBReXGy5PBLsxl2AWrJ1cLpEdrSimFpninOFue?= =?utf-8?q?lWbh3Xnbqtnk0RcCJZsYPAsBJplz56xjXVgTNBsSgyDbME7LzJ4n8f0QsIsDTB9S9?= =?utf-8?q?HXZXJLPmdjUv+FWJ7n1BcBgCg/jGnUoDVsXvveucvYoVFQJrK5kLdk2EnTlrEK2A3?= =?utf-8?q?NbqyzgckynD8LnTedjOXpwaGD7SvKpmiuzV5TGa7p20JfdQ+31sGXZYskBLcz6NZR?= =?utf-8?q?ut0yccDcho32kVPpEIDJ1/CZ9FThbmtb2oGHtAupczU/67Zqb4BZyAobX+R7K6q0h?= =?utf-8?q?MntBKjz3kpAEm2GL4EwA838fTN92YwvvYJXKRaIDTr0VFyAcNRkUCLK1luAY0VAfG?= =?utf-8?q?n+ZQN/kZKXNFdNN7GjeHzXGWnhjjN6xe3R4h4ufaXHaB/divLWu2/ZphK1LeBLIKb?= =?utf-8?q?DXjsq2/r52rJh5AECoVZ3WIaVUsMzvJxGiAO8Udp1/77SG2p8JakKwVw+EJkJQriz?= =?utf-8?q?5Xb6HBciARJ91QelnOiU5e31+LqPoPdKEGPa5e4Xi29MxlV6dzFMlIY=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: 1ac4e559-5523-48e9-9bda-08dc74aea0e5 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:15.2240 (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: g/ukO6+HTU18UZ3b1zZRolYqWHZjaggE5tyPSrz4exaiC4WhgbXdhgRJlAipy0n0OA3FbmIWeuf6dHM0KOuuNXka8TVFmDQr2Y05l7nU8tGEJCnOqLpWWt6hb8J1oQYW X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org We use this information in vtd_do_iommu_translate to populate the IOMMUTLBEntry and indicate the correct page mask. This prevents ATS devices from sending many useless translation requests when a megapage or gigapage iova is not mapped to a physical address. Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 252364893b..7a4dd738a3 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2064,9 +2064,9 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, uint32_t pasid) { dma_addr_t addr = vtd_get_iova_pgtbl_base(s, ce, pasid); - uint32_t level = vtd_get_iova_level(s, ce, pasid); uint32_t offset; uint64_t flpte; + *flpte_level = vtd_get_iova_level(s, ce, pasid); if (!vtd_iova_fl_check_canonical(s, iova, ce, pasid)) { error_report_once("%s: detected non canonical IOVA (iova=0x%" PRIx64 "," @@ -2075,10 +2075,10 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, } while (true) { - offset = vtd_iova_fl_level_offset(iova, level); + offset = vtd_iova_fl_level_offset(iova, *flpte_level); flpte = vtd_get_flpte(addr, offset); if (flpte == (uint64_t)-1) { - if (level == vtd_get_iova_level(s, ce, pasid)) { + if (*flpte_level == vtd_get_iova_level(s, ce, pasid)) { /* Invalid programming of context-entry */ return -VTD_FR_CONTEXT_ENTRY_INV; } else { @@ -2103,19 +2103,18 @@ static int vtd_iova_to_flpte(IntelIOMMUState *s, VTDContextEntry *ce, return -VTD_FR_FS_BIT_UPDATE_FAILED; } - if (vtd_is_last_flpte(flpte, level)) { + if (vtd_is_last_flpte(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; } addr = vtd_get_flpte_addr(flpte, aw_bits); - level--; + (*flpte_level)--; } } From patchwork Wed May 15 07:14:15 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: 13664780 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4CDE0C25B75 for ; Wed, 15 May 2024 07:19:06 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qa-0004be-EC; Wed, 15 May 2024 03:14: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 1s78qK-0004Y2-Rf for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -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 1s78qB-0000oS-Vm for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757260; x=1747293260; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=DF5SAdKmOTa81i1Lq2VmreQVuK6SYI6Kvt/QgV8+aZ0=; b=DHSKGvy6qDHnw4cUZ9X0C96Y4Hm2ZS9xyKhIfHPSpqzogft/8Ad1H88i cAJjocMw3t6X9ryLGSOtyYWW6Y2c24F73+fMF7lf9RXIdz44FaLWFtdDr AlEa/jJQ4375ofIp9N2Be9UtgVC9w4+jxLg+KgsH2rPanagvstpFSl4oS GgCTt8GYe8jtA01jl8uOhc1LPuSBIl89KmLaFxOoCdA6rNDEk+CvcLPZ/ 0lwsFC3jlj4z8d7QNuDz/MVdcYq47GVVv7d9izkMgctE/e5zlSJUDLqMY vQHZmZapfH1qbvX40jQi2OQgxrw+qO75+0gjmnN+WeX2nEH7GAcJTUdhK w==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12580198" X-MGA-submission: MDHt+GikQvihNGNDiRqe7P9GNAmc04/nzB3BlwVlPSEegY3m9i/MUGF3X7xRy8HYXrpikdPlyHd+TYBuJSAa+yq1ih0jfVs+5lN0tLu9XTH885HqUs85TINKsmQPpbmOQ0idpyEqPg8uE+EJnDsidACIp6gcZ7tmgaKKsdhRQQ0hbQ== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:18 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a5FYm9PHVu0ViGJJhnT76xQ6ZqR+X/r9geAQ2vWl5zaIu9+em2BeY3KFjTp76dIk8lLBUEHLwNnSYxiu47qSYDReF3GR1HEt8j2cSL7kTZy9TLXJVSPDJrNoJzvBYrg6EEtJcf1ZfJj30WvDJI8HgJZS9NOB8mfqkNV5XWOZ3l81oYjCBtPN9e6deBctFcSYgx6a4TuS3ogCL6fhw8uAcVw0bwfOs+Rdu5z7Affy6onANURtgWLX4griiFJfoO65tCLjU0CQPGigcHQ9+iDcsqeV2kzRmxRPeVKJT8zpsFrLBYV+Jls8RMPUKqFYrXC8ljNGMCXIuMcm5HjG+jDWAg== 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=DF5SAdKmOTa81i1Lq2VmreQVuK6SYI6Kvt/QgV8+aZ0=; b=HyWdUGW9yMoCk3hrYFSng2VyIf+mcPc6xdF/f5oQ1FJF/onekk6CCsXTK7DccLja1zhs8pT6+OL2HtEcVjDZcE7gUsnEwevbzPIEEEww/4pXy8o+OMszOlsi7BH+lyqLBDjX6vswByKtHv+gHef/bmGwSSbC3oXzPzVvgTm6Mi3dZGK2R6ygBufr99cXBSPutl0Ua41mYmqQFbqgZAdiOOEFTj0rcReGVaiHTPV7Dzk1sdASTJMkur5vEUT3u/TnMlyY8Wj3AkOQysWCZRok/1311jsecZp3Ubsg0B5EJ+V9TbSwgcNGF7RozOATKboesAJHbrXgBsYa5Jv73Pt33g== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:15 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:15 +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 v2 06/25] intel_iommu: extract device IOTLB invalidation logic Thread-Topic: [PATCH ats_vtd v2 06/25] intel_iommu: extract device IOTLB invalidation logic Thread-Index: AQHappd+ypinSPAnNEWGRCEtiSZMgA== Date: Wed, 15 May 2024 07:14:15 +0000 Message-ID: <20240515071057.33990-7-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 4aac8f47-67a7-4ac3-98d8-08dc74aea114 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?4nKvFTpRvy80xqFbk5SYwXLwlkfjg5N?= =?utf-8?q?zkjll9XWGQE4yfys+4x/VyUbGRUzXUNKOJlPLzWTxa53nkeDsY/wtJuqFS0pYLw76?= =?utf-8?q?M7h/099GOx6shqqbw825xnKgwHTAxCQHQvRGK4ji2y86gPHb4qsQnBvlDcM3Uq5ZV?= =?utf-8?q?+jeUeQIQW7Jj7J8Sulgp/1AJs70SWk/6G9sMwJSqs3JjE1rTMcXHaqRuIc144KoJ8?= =?utf-8?q?mQIMY44tty5hWRh7u+Iqlemv0RF5vjclPvz/aE8sRvVw7/mCdp0Y0ZyX0muZFoYTS?= =?utf-8?q?6/iXEZgRBHJaru16hZIzahpBXDwU1QxybkY/tOg72uKhLl3pC8BONwvT50Ow5WeS6?= =?utf-8?q?U39c2OByH9m1E7wbglECUbnk2jT7EIf/86tCNL7qy7ZCtkokhqey1dGp1YpgPkTNY?= =?utf-8?q?MDMeojv4tQlj1rgrjPm2p4gKnCVTDtqY9QnMYO6z9Xw7aWo2YcyJpp4bazFeaPzLH?= =?utf-8?q?SR3q4UsIUWiqELugNDdZ6VrFFfzrb2Az4NRzsAV+nqlyy7PXXIXsf48lsByT1zA5e?= =?utf-8?q?L9uyIANKI3JEDfBqAlC5Olr7pAG/szxbno4fn+l7N0UZoVN/ANQq6W9v5o8dA3e1O?= =?utf-8?q?uN8Q33wqNsBQiONSH9d95hO2S1A9vG4aGvMGE2GUIdkmgKhNxB6f7LqSF0AJA/jvq?= =?utf-8?q?kmWluHsMI4ovVHkVyZG2G2QzC2r2q+7uXCVzGdQEyT0JcxE7FHi5bua472Pxt5csg?= =?utf-8?q?naBLRKFx6gYEdZcIyIN38wSr2vsfVflNF6Eu2/pgpnV4bFQTNz6tdVEWERVX9r2aC?= =?utf-8?q?qSfxnS54vX+2BuqgTAy3O34UAzN2Edmu2P6ejCVzkuQqhdBTgtheRjEvmzw6DRoJQ?= =?utf-8?q?HFOZ/nHgD2+cIfU+/AS9GHvux8nplsr1RbBJsK5CYynwdtUeMNTIeLf0D9LmG2ADy?= =?utf-8?q?eI9pCZjGFb+h6RWocrr1mbFACDBeJ7Lz9MKTuq3MSsIkOwYf5NjBU/Qs6SgWIvEtr?= =?utf-8?q?m3sY2ZCLU5DCqmO3Vn1dptom16STYnm5HS0sgqma30d5x94W6bF04E02kIEGWV2kr?= =?utf-8?q?IVRD9relnJqsLWLPH7U/3lb/50cWyrK1MD8zmTLjZo2ztoVboafeYH3+4Vk2720b3?= =?utf-8?q?pbmjhNsuNnjWmq+NjwqeWKIEw7csowhC+j49ae9HBQKnVYYbQVzo2TvbyF0Mmomg5?= =?utf-8?q?lN5161x2xkVe31x0yqXQalYzW2nGoZlpYpS3k0ht9aBP58wwP/YBb02Fb/zhEY6WZ?= =?utf-8?q?UAa/Ny7TCsmvySIz3F5Dth627SuocizneKUkHVv+IpJLOt7ozlJLqzaLyLBfDsys6?= =?utf-8?q?OWPgMw9GavhSjxS02EGGeuop3WM+XwEWU6Q=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?7LxWIMLKe60U85NAB1TMaeBew8Ea?= =?utf-8?q?BRMeN8QdyV1OqZqB84sbri90K50u75xKU9wyVJTCq96zGiaedceIyUi5GKXAos/JB?= =?utf-8?q?YxtqwZ8HMDRqjqvralvok0lj8z8a1l4XrKFU7qcp2ZULaLqakYxzVs1kNiQsaPFyv?= =?utf-8?q?qw8MACgBqWEmz5R+3AV+O93GiFsGLCgg7lGqFQAYa3wLKOUulzPXmRATNwTRsNvd4?= =?utf-8?q?wW84vlV123aoeOPxSWspLPk/NAX7mnaAe0p0Ur6M0NBnSkxnF7UsQ+lp2KIaspsJW?= =?utf-8?q?Va18jS3ERnAyyx0cL9kpM/0Wx+1p1sHkYsGWDrBieJv4FuISLDwdE+1TEXz3n75hp?= =?utf-8?q?pGcBusIZhQl6QzXQNMxDYgNIQlAtZJ1rcPnmcFgmhzetPrwsp3XPNorrYkLMWcFne?= =?utf-8?q?bdSy3xAbpM48LjAcN8YSAStCY8QEoP/tzWsL4zQYjBNA0bZoF19lh8isyWntzNscy?= =?utf-8?q?fURklDo8BLRftKhAvhBNe6Qbc5INYk3ba7NvwnMyeujGh3tdaaezJydMDu718nW+r?= =?utf-8?q?b9ITqZ82JkQggRPkHmR3hsBAyrsawX1f3H2uA2QMUYu4ttlPgmuBv++Lu3fO38YLQ?= =?utf-8?q?1I1/fak+Cf5CIouzHwXZu71JxjKfVH7mxNP685fHDevaXOW77zRiWP3VmQ6bzd3Ua?= =?utf-8?q?foyULZYL9BM3CDR30IEpPgiRjaQyBW6y5LnQ/Wohno2a24wQqWFWGVL1ef82H49G1?= =?utf-8?q?DY/unPwOAvTObZOAlD8HBpPMXP+cCqsaUONRDHX08BfCapb4cQSx6JrpxMUa8o3df?= =?utf-8?q?3KYcDiZmakzgBtQtCE1tQq6mBwerTAL9vxqPHBXPqswTILqmdQpqKflq0NKTu4ysN?= =?utf-8?q?ZafzbEyrr1CBdCsWA4Rckv7jqpBNpLuieQo7Pks1Qu2brteoJ3euDdkBjzSUYBo+y?= =?utf-8?q?MAEnRh8F3jYEuMsy9Oj4L9PMZ7dggRHcpE4F3wz4qTUPMe5l3uX1Y8a4RIG0RDXxi?= =?utf-8?q?1cca+VvV+GbvwuhE/3/KrxlKKyQeGaaOQtalwB126w+u+BOpm1nRkKlu9TuEkot+C?= =?utf-8?q?ixlhauirsBFa5kUUPdRLxsvuUa59oCUWZkNxyADdVYIbLRowoBPiCAAUbZ1rGRQrM?= =?utf-8?q?kSt3LheivTxaqW8KALOHYx8ncrGyVVl6lJrrlOnhT6q8k6SAHlRSoiJbjZHp6j1lM?= =?utf-8?q?oxzEQPgQ395i/ShIL+BoOaWZyAs1nOC/LBYlFnQb4ZsfLbwgBEyE2USwi7bjhMCWv?= =?utf-8?q?mi7LqQBgGoAQe0m9U4OQ7sKrMm2NVBQS1OEYbqepHyks3/ItGxvBM8EPLHCGN0Luo?= =?utf-8?q?gBjJG4tMwdr3pq5lOZyAxVp64l4y456SHoLQzyR0uwx9kix4cdSoJ6DX0U3Ba/iAQ?= =?utf-8?q?m0FR/D51uFiz9t2ILwUwQkTsSsGpNoUvB7XNUOjPyCcySyjKs++F7hJue04x5S/wP?= =?utf-8?q?jx+aYYQZGBnwX6d1UxC3ZDVkAg6rLxLzXY8zeCmSh/vQrjo/sDv+ilUsCg3Zp5tAH?= =?utf-8?q?3hFkNAz5Ilg9tMaZlj/oZtOiP1md6fC3tSHc7+UR8t7ERz4KgfMkTzbzWflYto0ed?= =?utf-8?q?znSqskfNhu8jD7cvQDRE3LbhAmQnkHj/LMLYxkzDZ0WE//ZFQjeFr3w=3D?= Content-ID: <715FCAB949C26347B4CC5AD1170AF369@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: 4aac8f47-67a7-4ac3-98d8-08dc74aea114 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:15.5207 (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: /Pg/G4dDC69kvgKxr4GONU2oTVXFhZ3snYRb2YQ4bsFfaO+E1mij68JE6DsZFGfCoHTYd/hBy6+u1O50zz9nTfPoZftbuHS7JYD0wegRCZ3zsdKZ/SYgD+y3u15eTfUx X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 7a4dd738a3..dbdf13470d 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4292,6 +4292,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) { @@ -4307,9 +4339,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; @@ -4334,28 +4364,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 Wed May 15 07:14:15 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: 13664742 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7797CC25B77 for ; Wed, 15 May 2024 07:16:14 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qH-0004WT-Hn; Wed, 15 May 2024 03:14:25 -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 1s78qE-0004Vn-V7 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:22 -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 1s78qD-0000oX-AS for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757261; x=1747293261; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=C4gBjDFokjMiRkmDgDz/2mxqzwKco7331UmMB/qHfvs=; b=Pa2TS8MiyxP36y1fRxmVZmM6yPIzMshHsSiOtXscBpTfwfOPcMXXA+bt 3QbI1c9r5HDRdzFJW/qFL4r4f0Uj2aGd+hleCQ5UKbCIRWdS7tpi3zC8O VwD5Aty0NzNEW/v05vHZI625zAEJ3Q/ZBJ0kl+dR+3BEh//kLQA49Q3Ri ZJbydReIY30laZ8zJRL+8v7T7L8KFCotoPwlw0CF437sd6ApTieeGv2KK 4Y3fwbgBJ8zVWX6p1E9TehSGnw3jEsVYoH3ncMaWl0E6SiinkLFz12ysj im6BTCO+f60D2zFcgPXf6ufLJRLcH0A0GInDAErXEEDa0CZrleBPjPPwl w==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12580199" X-MGA-submission: MDHzlVTf/YYzHiiVBkoAmIWY6zr6YNDOkdeblVn7luMLaDcngjqRtGKQlatIw8RV/TErmQaGaiEZOmys06c7poBObkFNz0tJbG4ueCA/cmSIQ/gLWsXjTVmh+8kyni1WDLp2l2R6jAtoNsa8LVBvlK9CY8lS0ViEOX0fNikM76Gciw== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:18 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZLALIcBEaaHrmE/Yj0CkxK3cVxz6G7eWGI9c5L4Lk3QdjhNKDQZvD3Mrmjj84r4SFZNJ+OQU6owoFAYb6/IvT55VkDZwB4TmqsmAQjYnLyHM9tUg3kCfVsTiruLXBOdbt7EbDdvpW6cCYwOhSSE2yA1u8lWd2mkxyy1EdjtKFNoOOdi/gp6UhZ33h+LHBvs9sYOupF7G+mwuvZPvCc97ObWczu5hI2af6hwBH0qmZvl8y7FDazogOG8VfOOsQ/SIGq2ksCPAAzIe3CuJUkZ4M2fvHvDiHlBhvpASXRWlisdQFfVb9Mpz198O4Tkfmioh5Xzs3J/r2e1vxF5z5xcBPw== 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=C4gBjDFokjMiRkmDgDz/2mxqzwKco7331UmMB/qHfvs=; b=G3NfbUr6UJvYmPUBjB+hzofl6awblPddcgX1grgSuJ1ed0Z0TQiNIRAW+ZtLc8MEcpIcf16RnnYzf3xe/cXjjAychc+PjNPjwA2T2dHph1qDDuc94dpmAU5PqF3XDZijeM2Sc2iVNzm2Djbsv9RUuaOy3JlPmnzEUHhDefKYllbua79s9q68CQ1JNgpij3PuURU2rbFrA9T6wBHLtw8zLVdp6E/e9AvNwhQ+tBDSYhYRdF6kQSwKR9FeiW8q/VPv5he5YYOVoSkHOjNEDnPg57C0IJ9xIpnSkCJySzwwywmaOcx02M0KHGTjquyvRFBRAjD+6uTVuz6yrQMhpMVD1A== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14:15 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14:15 +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 v2 07/25] intel_iommu: do not consider wait_desc as an invalid descriptor Thread-Topic: [PATCH ats_vtd v2 07/25] intel_iommu: do not consider wait_desc as an invalid descriptor Thread-Index: AQHappd+nTq4jyKQGUeJGP8dDaglxA== Date: Wed, 15 May 2024 07:14:15 +0000 Message-ID: <20240515071057.33990-8-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 570e829a-6320-4080-4c50-08dc74aea144 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?3q9tvs/7HOJ5xvwV16eA1DmSQaAOkbd?= =?utf-8?q?C96Ge7kyMN/4UZruzU/xVkRYhV3ZmUC5AjZBYtT937A90iLdeeAdz5okUekYwRA63?= =?utf-8?q?MUFg9hMjCKr06ZGczXO5lfZ2SDS2N9OijNKdqo2ffpyiGb7M7AbykoLiBl41p2pea?= =?utf-8?q?YzdpCM1jXdmSlj8b+cBWud5dt6ONaY//eSfLQKBPzzvLu9VWcDioDsb+FqZjMP201?= =?utf-8?q?TWKjAjptB/L/g08fyt2XNvKlyaxnDwo7jU8j8nqUllKj0G3nutEOMMv88ugQaDFsh?= =?utf-8?q?9SmKe5q4AgyecQP7ozl06ha2HbpCCE4q95esDP3/a9nC01fV802nLHYw8k0H2Yueu?= =?utf-8?q?2MivXqiUlzAHt6cq6dzFEQ+RmZLbvQ0uX2KSGLwu5wwGS9EWeTMMut5QsdKopT2Eu?= =?utf-8?q?3wQMcec2B2u5wqTpQWxANj9em8OEszQkzvTr19k767Pdk2dCQN2vPlw7LZG6NdJBs?= =?utf-8?q?50bQM1lYqdJLDQ5ocwGffPYEBYQ5jxiVw1xvdxQKsDCmYqzfwJnZRrmNMzTt6lNfb?= =?utf-8?q?4MsWmiYJFquVV3Al1JLTJbXLnWtt2swj7qTYc6AdUZNIy1wkdZCgPAHkboxA9cIXB?= =?utf-8?q?IBb/YOqLy0OHfPCO7SHqFUcFhFC3GprAnj40fc1sdSzx8qeNOCiRoU/seHgouKmg5?= =?utf-8?q?1Nk0m4VD8HyeQ0PvsQ6IDGUCYqC7rUHkSoAZWl1QuIhlpN85bJBVDVAx+PAUymmbh?= =?utf-8?q?zHO+6FMtgwuwPgN7aXzzAZzpcsrYvo8+xtlBsKoRHUWLKGBhXdhR7SGPuwFf7AAdb?= =?utf-8?q?Xa3CvZ+C0meZ4SjhBT/mKBfFOBD6dayxeialo06gn1vP5pBx0+ZxvM0kUDp+SKUE0?= =?utf-8?q?BYJhqTNgRJljs0+F9uxy3tUm6dJwCPM3IZO4zed1Zf3n/EGmKrQ4qkxMPI0euR5hi?= =?utf-8?q?PIypSTVSQESxO5CYLyAcPSpmRoyIJs1YoNeJtU1eY/gkefjK1RNmuNodOfCi7uac0?= =?utf-8?q?qu2H+yAEi7QYhM8YV7eKsjhbTEkaF6LQp7Ufg9M5E39J+ws8gwIxVAqcuJ0To3sdK?= =?utf-8?q?OfswAqsNWCdsl86XT+kybh77jmZ6yQq8gj0aYdiJdguAOChJdOxe/sV3WOa+lS2J/?= =?utf-8?q?y4fg+y6yI1PzKHvjobjDxFGnPtNen7OX7Q+S73C4PgTxh+XhE5IXji+MI2jY3QYDV?= =?utf-8?q?Zc/JWxI09yLif72YUeDlW1DypaLDuLZVJ43FRO8pXmWYaAx2zIiL4EwU0SqZgo3yI?= =?utf-8?q?PUw2NlLBSqBlHdK/iLvvYF6oq72VB2i5pJW73jrKG/1oqbjtW6ZCzd0uZdCzrVrjz?= =?utf-8?q?R3+hREGZ1gSDV?= 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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?H6IE4v9hAbj37bWPXwd8uKEaEUb3?= =?utf-8?q?PbmonGpMq/ZDWs5qUJNSAnjj4kyjwffw9F4JYR6CQH0Hj6BQX6tXA5OyGq4aHVGY/?= =?utf-8?q?Mwd6MikMDyzcfgQtA0qqlK/iaXdo+Di5Hqxje1Msnis78Oa0RpmVon8cCfdpQKS49?= =?utf-8?q?oVE+NUgeLW6B1i+3ByVYUFTm0WkUNXOV0SbWruFTl/OHoKgk83Uhh2jcE6Dw4nLUZ?= =?utf-8?q?hx+XbdjkSoN3kl+BpGCLG4WKrl8eTgpO88Em7SF9vRnS3wT2E/P/dpSwZR0KcB0eB?= =?utf-8?q?waJtdOoO0ZOT0ENitvBTCbqPouLnCkjVNYaLDwyos2Vy37UcYPiUH7TLeWtir4fth?= =?utf-8?q?5Sbk8D4c57NwYEmqqP5mc+oDG7Es1wH8qanLtQslbNuyEiUgszLxNz/q5lNORgX/Y?= =?utf-8?q?/cJWqJO2/R5vuoESQtjmq5n/WX12LeodZyFlgR6uqqItFXPGagmsWvRXi7GAqKiOy?= =?utf-8?q?HX03S2kcJSYSOlcMZ6a4gNYoHhm0Nvo4IHHwnVzYlG9T4h8rpYrV0cBHY2OPnkonZ?= =?utf-8?q?p+sEzF+mxojMI47MhoZAm2YOxVIdH61nGkT3Q8tEl0XKA5kNNGr7TKB65RkmzQcTQ?= =?utf-8?q?nupRjIdr19ratKYhgSZrdjtuLVvOnQ0TAtc8t66ei+zF4HyuSQKk5arFWWYYDa9Fp?= =?utf-8?q?qq1WVV7I75atYdnIk+Fgvl2vAV5cqpsBEX/mWBSWkI3d+6O5Cdd2rlaPxjALhX46T?= =?utf-8?q?p0pmzRGFEqx2podMmRJPy0kYhwpQnupWVFEv+D8gU1i7ZX0HMryoVArF5T2zCDvHE?= =?utf-8?q?DKUoRcJay/9AQBsHLC/AftQirpzjV9NWOQhKhVX/X4e7cPrwp7E8gp/8lA2Ir9pCy?= =?utf-8?q?DPBL0WG+3fMEnK/qtt+Nwa+2RAdBY+HGlVKA1FRk3PbILEwSItPW/F9gJWfAGYFcx?= =?utf-8?q?JOY5list4+A8sNBMTS9hBEyn3G9nqnO4Y9T7lC0O76P0b23ZoaWRJ+r40DsMQPgKQ?= =?utf-8?q?Fq16tlsFoGRwZ6l/NpYV30RbeLK8ILP+iOylExevDH0GxGZy7T9gCsMzhMwkI+ZqM?= =?utf-8?q?5o7938XHa/hotx/eRwHXRfGPT4nQ2wEwLdox6I3htqIGxfim97G6AG9o6iUUqN1kr?= =?utf-8?q?WWh/eTymonBo7t5U9dvuh1bS0ut/9ay+ZJSbEzh5Z4x3tHDdTMW9qpiX0HmazGb0J?= =?utf-8?q?aSdZX1/uMPWsaZ/XxXUsO8chzE+59roORPZ4lTaz/mZn63fnUlzAA8BcJIVXi2XC7?= =?utf-8?q?lr98yzDAQTCqTMMLJqPq9EW2ZqFIjHYfB10CxE2+Y6qflHu8a/dNUNvIj6mvdNi0a?= =?utf-8?q?CVjLKHAoAq8NcDkcvBtsmEIxXxG14YExPI973wdERcbspLNWxJh40SBCEo8aAywLM?= =?utf-8?q?yBzO20QX21zBUC/HDOEjLzN9JqCp4wFV5RwnA+ABXd6kkNDZt7e1moCDgYnkQGEBW?= =?utf-8?q?tO4ieV/UQsF05elTmBn84ZH4oucatumvPtN60SHtLdAEXxWWmbsYPptRdgvjiS1ET?= =?utf-8?q?KcC7TVTer+dyP/FcDw8su0OYyl3Mo2UBu7i2ywbhFkau1wiHtCos/H0E/0m9d/Gqj?= =?utf-8?q?XTxXNr0t2HFnnDSNo2kl5r4oM9d5IhAPz1i4oi/T4g8g77ecYsuUB00=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: 570e829a-6320-4080-4c50-08dc74aea144 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:15.7896 (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: olNBsh70JBWHc93Owe1We3cbfAuO8fLtMEu5iSNZ7uYKjsJz1gTnR0JILqKRaiBPp8V5BqzTIn7GTfXPHC/4PLpFxjAhOgJ6v2hFinkYVXN1itw8Lya0EQJiXhT/xIto X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif Reviewed-by: Zhenzhong Duan --- 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 dbdf13470d..373f3d254a 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3362,6 +3362,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 Wed May 15 07:14: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: 13664777 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C5932C25B75 for ; Wed, 15 May 2024 07:18:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qV-0004aL-52; Wed, 15 May 2024 03:14:39 -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 1s78qK-0004Xy-B7 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -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 1s78qF-0000oX-AE for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757263; x=1747293263; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=we+kjz2Cu2q6YkP/UfGNhUBZcgYGej5Wk02odB72gxg=; b=HMATLW3K4Gx9PaZ3ZqGDN3bl4xzlzSWjGSHfoUJvkxzLqTWaJH7nPhLk /h86k8w0nDmtKv1MJlJF/nPX8Vreaw5wxLlG2SZAkrCZP4dzAODCTVbLy h31snZ4PjFzkszTaU5zAOSs/3HCZPP0Nbdk8qUkhE2PrS128PVpcy2QpP 0jgrn3wYcVTUVrdHy3vKpxh5sSOuDbR3rGwy+EZRuDdGXXfyeTo9tRAu2 fwW6ikva/t8ba1uKcQmOtLfSE1p6BzAUWdFPWKchv8T+Sl6/wZedtyvVs xtcYOg2Jp9diDps/KlvlgAs2gQnlrwEt4UU2Dne7pu9Hgjyr15vD2v4xa A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12580200" X-MGA-submission: MDG/UngeG5tFbfb74bx+GLGzcYkjaFuLvdHlwYe6Uq8ayALWL0Qiwf7vAW/Xj/Ts73458gvinrywVBBYexoTPlm7gIREys6587bBvxx65dXJPn79wOierRvXwmuaIoBsmfcvWTtfGlsUE48+SKdDpDhE70rryiw0CXEOktMSiPngbg== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:18 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GhUlnoex8SrpzNw33KZ8MYtJeq5KOAiyf/EX8uC9l597FQv5gXzQc/qfJgdVUMwClL8Uqq1bNZtTrH0vBqIqiBw1TXNnOg3ijBA90BOUAyshIQq4n3k/s7YY/lhWjf1gEdKa494PFObDRANfQ+8TsdSSDlzmXLHtgqlozp6Y4vz2ZRk+9arGfFsZcK4pJ2y4YeMmi0uVyW5Z1pUJdIHCteTCtx9CxRoo0oU65XY1uPn5JW+/hCvmh9xTQKXQQPWYvqlD2rXl7TRO7zlVwYmTGlAFgqGiNAaSMWEZoN6FApDRG8iPZeW5Z/zztlFTda62i3Gssfdi8C0VZfaKAQhAvA== 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=we+kjz2Cu2q6YkP/UfGNhUBZcgYGej5Wk02odB72gxg=; b=VxxZ77+++1sCTx3EJ/zW7ywlpG/ulQAtMW1KPDPRw4/IJP5oeQ3CSCT+xat768SPJUcOBP3Qq/6fo7lk+97ymo/e6Ldy7SOr3R/rPTz1R9pUjmn2u+OLyWz0FDGONTWhkwPxrP0yGxTH28ydHeLVclPiHMFOAJyyJFdnG60KlyVKJem3lZLnALcWTrfgwy0ERIGGQr2TGcPkjTGPKJQqBRPFOSf5+5+jAEhncsVa2zkrE8JFeGK/uo8VtXhwifwiJXatvY/kzRPWnqtE1s/q+W6KdJVpkE0U6PIkPjrsdt/EqukPsddsefoRghSXiwZBa4poigOF2zRzcn6aS9TZLQ== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 08/25] memory: add permissions in IOMMUAccessFlags Thread-Topic: [PATCH ats_vtd v2 08/25] memory: add permissions in IOMMUAccessFlags Thread-Index: AQHappd+1X32ylJH50OSWYK+S1O/wg== Date: Wed, 15 May 2024 07:14:16 +0000 Message-ID: <20240515071057.33990-9-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: c398351a-dad0-4328-66c3-08dc74aea16a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?Y0aqii2CNypXPJ/qgrDVFVWNiP2eRRP?= =?utf-8?q?Ip3NbDYLKuhDNeGmxftZwsY8kvDTtVN59nuR3mIbACZvDFQSeXOQQ2ZH8tJ3B8Zjh?= =?utf-8?q?qi6IlGaWJ+7FM6yX/oAuoXYYgrM0Tkbncc9EHi9PI3G4Falwuj663IiGYUKELCfYd?= =?utf-8?q?Tw7Fn3zQK+EXMNpk/YUclJxxjQsLvPKtPehhm69Sz75v7eTl938FRjg1KJf92toa8?= =?utf-8?q?upWW7az6pMnDSPLwmgdJDzoDGg7xN1OwVvRgWUMhehfmHGFkQfDD9Vz/0P6WknSMh?= =?utf-8?q?hFwn9HOhlR6uvK88X0CF4Ec1UxseEROgon6MwcNVsSYdwgk0yUP+cl/qaX9Mlfmw9?= =?utf-8?q?/PptQJeKudYMYbhzFKTNoAVZv1kNdAuvd0RR9xk68oNqYtDR7uxzv1WgP11oqLP0Y?= =?utf-8?q?blWn+9kfHApKm4s7xLSAEFoY9rJrkdc1VuUZhx/4uSGn2mozt9otA0vE2PQuK2E7a?= =?utf-8?q?YGI4/FVFFm7TXHHSi/WOQ0J4iJM2O1uZDHVY3pbtM+RrPwOzP7iUtyPD4/Vm75mjg?= =?utf-8?q?oFDYKIrtLkEiDYbMrVAPN2UCm2W0W7MfESfoVMcPIMAlkdy40G6PowxcOmG+mhSgR?= =?utf-8?q?H6Modvg3OO5NYwT+sc/rDtDZLn1kBrYIK7e3ej9IjXFqwUjeYolVguzReQebLEiIF?= =?utf-8?q?dpnDsAIRsG+mbAIx6XnWcbuGEqXBPoL+vRrmfscwZVurAaF7Er8t4LhqHRVTN1iS4?= =?utf-8?q?3ciF3KtU7RqYPgldLalSpJneGwCUrZbCfx+CSnDOOQpwXQDAkq7Rw99FehfUxlEJN?= =?utf-8?q?yFCNK0UpKeL8RnNyr+Ursa/NP1s1ZOBDsBzd4P1CJ/0Nvpjxcd+KU+CVJJamAVDbN?= =?utf-8?q?5+JDoEa6WTDOl+5/1oxxYwc9nnvjPRh4fEEKa+rvvAi1+VHLk6cyaHwvPovrsY+QL?= =?utf-8?q?hJ8KYGwq4b5GLeYdqSQTZVPxl9sqTlxMHB4kjQE5TF03D3PmVUqTuCo5VPxvqYylH?= =?utf-8?q?SwnSVRhLT/JBlHtvuRN18w6VKj9tkzrMIbtiszvQKoRgmOU9QbH/lxjAxSNriTUI6?= =?utf-8?q?zxvHxkKyyQf/xDYQwjjs6uSsnD8DAVX+axdMFYctY4c6qZgsYerQzgGw6o51x1n3q?= =?utf-8?q?+wgcZt3Y7Pf9S37nLQrc4LbdyU5Bax/D/t9Tde7wCkerBZ0LumjfAN8A+9nW/dO2s?= =?utf-8?q?pjX1XC+CWW+QAtu1rn6G3P8FyRJtdzVQZeatYG4mOIHHYZlw7lXM4GISh4UnSnhRO?= =?utf-8?q?igXJlWEz/MlHRp7PYgUwP9p9B3pSQ+FX3MT6a8CP35JiJws8wyUiKb8o9Tw1618Ko?= =?utf-8?q?zy68ApcWasVA8QggWZy2RIgf6BSTvN/JDQA=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?P9rq7J9KMVBRfyGnXD/R7uS49uRw?= =?utf-8?q?wz9eJNjiEkOytjJlz7A/t1jNxoz5jz3vqkUu/pdQE77LqV6i2C4WayTpYGTctVTIn?= =?utf-8?q?wI7Yg68pVNGXDZN3bAENnCLBuSisdAZL9aWPENTrMqnJ58y2kp8d9IrSgBqHbRq0K?= =?utf-8?q?Yo8sRJtvliaaxq4GAIBlp0r00dTWYL3eH1oMqtxDEIrbKifc1asRLKgsilMmknogh?= =?utf-8?q?xDUA6UxfUBXDaRIGzmIdUbwvNrmefytoidbYBFKcrh0fhi1RoToXgNEeyAEClNCXV?= =?utf-8?q?r6d0reC11KUSPxBT2KpkwKeuUBO+DgYBj82eZ7bFkLgaqnfY8nkHRxBVcSk8Bdksq?= =?utf-8?q?i9kYDUKLN2UCCekv3TwBktVVXW5DgV+b0BDnwsQC8mEV0AdInwxjG5F5CeyovIHuC?= =?utf-8?q?mHfR3ZU3rONG5xHI/OI+jr9ED5J8GhuTeee0zkxSc6Lt5HS+WN+iKsOwZSwTgz1PE?= =?utf-8?q?Ayke5QUAVa365oruA/D/0TxBSPZ4C2SqLNBycP2cK6RAjOREVvJlspIiIIkZ3MUxe?= =?utf-8?q?vHS97sPml0kyVa0NGp7yr904XT3sP0ZL8nGRVYfQq2pt0Gjm1q0r0PCibdFw2gtb6?= =?utf-8?q?jIk8LgT37el1BhP4GZqnIQWPWc9AEYdkSkJAaZBYoug/83i7lJPlefsKtsP9XQOzi?= =?utf-8?q?mda4LOvTiSR+dtTUf3ueSitpgB1gpMajGl7NiD9R/ncd6JlLfW7CdLug2mzn52PGJ?= =?utf-8?q?CEfLyp+UEgvP3oI6lpzJn7hrTvoGastmXpCvt80ouoF5NCKwYlgMyJai7CQz2yA5U?= =?utf-8?q?GDd0JxOTp454MGIkqtljusytt+Yxwq61mpwpbpgcxDXlZxLrIpH6bgWatMpUFASlp?= =?utf-8?q?XtI+kzlEIrqPLVzTKh6ybzSYcZjN9y+PitEdLqlPYh9v3nigCY0LpAo3oKWI2R0Cl?= =?utf-8?q?aoQYHDUoh7MFrDxsoN2uR3R5Nf/eU9cd8thpwXxklNjdRGUSDH/4vstfuAW//j7LH?= =?utf-8?q?FieDQS4vSeqIMwnKAQb13Lnvn6UdSTA3kQaA1GjfRBCdUR2pQ1wmmXSIjKuwUJOoW?= =?utf-8?q?OxbcLwQI3SA0Ugj3d2sHqUYwQKo+VdKsV/WDlgZ+UFIiwV9NnLb9wSmYbT0VQ/iDd?= =?utf-8?q?IlG+9ZuxydTgYboabkBYSEbYR+8NlVPbYF8HOJ+BGrsciAI8Jm4s2GA2ttGG48TSY?= =?utf-8?q?9c2FVPYr5VPJkOezbfP82IDuvW9B2OUN+qP7oVrvLtYcy1AzRldOqKLL99o7uhKob?= =?utf-8?q?jPKwBmqP7stPj1Bowzdjd5lSXbpZpVv6nsc0S6mKqmlOrcbl1LWtIA8R5wlnir2gH?= =?utf-8?q?4FMEta0QKRNhQT4oRrrn0vuSaAGp2q9W/cAzID13AQt90HNanBRN0AzUcYmxopRhh?= =?utf-8?q?e6jcDVzK/EhTEz3HwJkNLSc2mPnrwKaE6crXrh9rIVMynX3sJHYTQ/g6nOIG7YLBJ?= =?utf-8?q?IUCa7A8N/RavdxmBJguS/Kzu0r8g6CO8q3TeEvtnG31FWwiy7+xlCPb6X7DsXrdS8?= =?utf-8?q?MCu0odUQRxCuym1rTTQyzgy6Mg8TRW1HiZsDeSIHK/0XGO24DbZ3iwOOfRyhlB/D4?= =?utf-8?q?LYq3HyrOz9fC8K1fcC3oMDadmheWy17K9ny4R72ec5AtTAT6vmFBgbI=3D?= Content-ID: <3733CE74C9BF6F41855D04A026995368@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: c398351a-dad0-4328-66c3-08dc74aea16a X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:16.0610 (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: IdDGmkHGhjNije6IwAvr14cnVmj+n3zr/7rZ7jx8Qa0j+zDVJRE2V0T0O85BiaouhNjuvaqxytckvFULF7h+fXQjH8gB93OpS5+YPwjY/jLalEhkopPA4NiG43CmBlxK X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 8626a355b3..2c0e964c07 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -110,15 +110,34 @@ struct MemoryRegionSection { typedef struct IOMMUTLBEntry IOMMUTLBEntry; -/* See address_space_translate: bit 0 is read, bit 1 is write. */ +/* + * See address_space_translate: + * - bit 0 : read + * - bit 1 : write + * - bit 2 : exec + * - bit 3 : priv + * - bit 4 : global + * - bit 5 : untranslated only + */ typedef enum { IOMMU_NONE = 0, IOMMU_RO = 1, IOMMU_WO = 2, IOMMU_RW = 3, + IOMMU_EXEC = 4, + IOMMU_PRIV = 8, + IOMMU_GLOBAL = 16, + IOMMU_UNTRANSLATED_ONLY = 32, } IOMMUAccessFlags; -#define IOMMU_ACCESS_FLAG(r, w) (((r) ? IOMMU_RO : 0) | ((w) ? IOMMU_WO : 0)) +#define IOMMU_ACCESS_FLAG(r, w) (((r) ? IOMMU_RO : 0) | \ + ((w) ? IOMMU_WO : 0)) +#define IOMMU_ACCESS_FLAG_FULL(r, w, x, p, g, uo) \ + (IOMMU_ACCESS_FLAG(r, w) | \ + ((x) ? IOMMU_EXEC : 0) | \ + ((p) ? IOMMU_PRIV : 0) | \ + ((g) ? IOMMU_GLOBAL : 0) | \ + ((uo) ? IOMMU_UNTRANSLATED_ONLY : 0)) struct IOMMUTLBEntry { AddressSpace *target_as; From patchwork Wed May 15 07:14: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: 13664735 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1B752C25B77 for ; Wed, 15 May 2024 07:15:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qM-0004Xg-1D; Wed, 15 May 2024 03:14:31 -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 1s78qG-0004WE-HD for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14: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 1s78qD-0000oc-P4 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757261; x=1747293261; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=AokO+Y+dmAog8wVRs7/0+s0ZVn9kR7aKuJmrVWyh9P0=; b=e8Yb8eFTwRoM1Sex8uV7vJeGt4/S8fbApI0+GeWBSA8tBNCZIMssqLXl Y78KC5uXicqSfQ/bZs/2JA+QMST1TtQpjg52n/z2QVCPPirlDwquP07tr hEWZaEKvpoouelDHolkOcpdcg8UCoV+6XoaSYSD6gu429M77RtIXyu8ol 4b58XS0/UaBGuMpFwMaBq2h4JL93FYmLmJAfuV+jghWwju51Gze91ysUU +10yxeAwMDf9qVGIY7l+YUY/W/lwrfFqFyKTYm3SOTcFKxisa2EAbidmb erkmXBnTwro1Z3be6UxKPDRTyK5QCcL8q0ek6UvA+8Um7ZSLaBxphJFbL A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12635435" X-MGA-submission: MDEvMaYoVmKgfibQ5D99Lv3zNQgHXH26XQ4V8WkkvEX/xWX92iLZV43wrb9CXB6kftmQj8Bh/o4D+65zoLc7ow1fdGqXkaLIAcVA9traemO8FejFIG/s1CgDxh1Cj4EWqZD7sOULvei6qiIS2WJ2fcPiOV8zcBun2fir+TSdU7VOyg== 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; 15 May 2024 09:14:18 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GZWwukd5W8PbCgbqSS2eVtXQtZAXz/rcwkwB99C3GBPvP3HKbh0eAc1C84cnoFWvb1zktzK/GzdbHsTHugmbeIMfatKDWD81tkcZ0QxOTnuOrxnqT9oT43aljS74JR9tBOdXASpMy6Fo2PDrHLgqzdBwfke/JsqEGv/+zydWYv4ZaEuZiV35JNTWSQM29VSdMxViI+7iQbTROLUkdsxRX1yuT82B0+YGvzLUUKu79dohI0vtz4vR+ucmFj9mOHlJ5yZE+pSxVRaE+lWXbEdQsl51I1atsQFy5ToyRW570Qw7Eckd+L04BBFgZdC01SvM8d8vQw53LWgJvI1oeXBwjw== 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=AokO+Y+dmAog8wVRs7/0+s0ZVn9kR7aKuJmrVWyh9P0=; b=DmsKQCm//hOtLmxtA3YAzveB6tiIwLr/fCXIjyl9ynhkKcnwEXYgyvD0x0DMXSEPTyGEgKH2qgE0PJO0OIvCKzGHhk+fMAU0ciU1MaJUphBHMownbKviIEYr3qD5WW2H25gHe7DpRtVRBY1xB4V2GVQQX5CYy2J43jcFYQefoYB6XZ7fNM6pMR1uhCQ/Q9K+9NUSVv6jXBgyJio4DSBIhwFkGj1HsJFNkAxe/8eurRSEj+SjfdSEskr6TZ6Cj+RDZJ/qQBCvdDq4wMn7J48zIQzBWrTwEXwX9VNLvZ6DOPXA2bu6rGrYNcOjZuETpmfEJv9RBwSB+CgV9GYV3aBzjQ== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 09/25] pcie: add helper to declare PASID capability for a pcie device Thread-Topic: [PATCH ats_vtd v2 09/25] pcie: add helper to declare PASID capability for a pcie device Thread-Index: AQHappd/7uFSi459/0Sy623t6JmRtA== Date: Wed, 15 May 2024 07:14:16 +0000 Message-ID: <20240515071057.33990-10-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: f7c61076-24be-4780-8b93-08dc74aea190 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?n5ed1lmRXTLq2vbjXRBohaNUTb3JNwW?= =?utf-8?q?wYHWolLnRAkp0KkSR+XmClM+wcyYN1KpOSqhXNgxybYumRt2iJC2MHm4NxcByDAZx?= =?utf-8?q?vv9rWnk34o56tQ7HyabIqf5N+o0iI6N14rarAgUT3UouAZY0mTMI55F/va/hYmaHq?= =?utf-8?q?rNrrd4A3qmkm/2k/33sCmMqiXWXIH6KVyjEohdvjJSU/C6SgA8/ztXAFZKHtvVrMb?= =?utf-8?q?MJ4P7ok7d0cGZRSHJH4PUcQU/AYV0kgnIhoUpyG3hmnMqgkMotK7XdUOkqlSPhizA?= =?utf-8?q?HizE2pauZQHk2LMML0N9HM8vvz2N8EcFeQklmYeNza+krSeAg2gDG9pm8FNHs0ll0?= =?utf-8?q?MISY++yeeRihL0+n0CuZkWVXjWX/qWKISG5Laufp9F8jc1aoTtbMBQ7vJ97NbT3VC?= =?utf-8?q?XK72IM29XQ1T5Y77/xBEvP8rg7cx00FBSLVUa3oG2rHQqkOpry1SCLdXk/Y8DiBal?= =?utf-8?q?MOkSoeK37z/wzGp3AoS5vSjlWugVr++14K+2PIGubBZ634pMwW9sVWb2iChQo8x/z?= =?utf-8?q?bvUaN4MgJlcjI8pgdicGg/ViiYnJUEIyThHVzsy1IkDEEhSDWzT19ITMGzJHF3WnV?= =?utf-8?q?h2oJb7Kk8/86JjlfJwp5aX4YkErWyuZU8bjx84CqomJjRcwPzVMW2e43cbrO3l3sI?= =?utf-8?q?2E9eacmeDEeYFdY8FsrhGoHmEzyzdYd2ykmb1a7i87gyiH0SpX4rXmDlMtphkWv30?= =?utf-8?q?dKT3Ag3a/ub4Z7n1i0zwRgmh1/Wf3snm65GP933pkyThk2EvakLg00wUhDxSZlNqe?= =?utf-8?q?YHHuoNLwSbW28plLeiGbFDKPw+qjIJMCTYtmcJUak11YGtaHKaShVUMSNMbLbbWu9?= =?utf-8?q?mPOUdStR2nOPwzkpmMjbKH/SfxEtUd9VgtjDpWzY5o96Ot+S6A0iLNcNYBisddthL?= =?utf-8?q?71Rf2Qjdb8LBbrIJGl4OdL5h9peWARPexC6cF02jgleUwFJy3Ln3lsQYASeKBz8Nq?= =?utf-8?q?X7lu77UXgOHFLubqVQESUNZbSleaOitdAEe1gjAf0evyhyFaip6s7zXr178jp0AWo?= =?utf-8?q?J/IdNo1QhJ3a3NFQv5xBYsqtwEy3tf3ybCyYtZo1KfPW9RV/Zbt3yP0AdC0OJjx/M?= =?utf-8?q?8BheoRvurJArxgo0QZDBGA8PKPbuxCOH9xkd168yYSLxEnrZQ/jnPNjArnhPUxqvQ?= =?utf-8?q?6LH6z9elkDKlVcIduXf3LvoajpmfP+hymtBnFRJA1Y3e4SXh+9gs3LaflnkohhBl4?= =?utf-8?q?nmfXP2yRhMiPlZdHqbrdY2V8l1KEsB0iPXkvPRctEOr4EWbvOrVmSSFtyTzha4z8W?= =?utf-8?q?JTM+bJxm6i/FdPh9Rz+v/0Y1DMkBTCMmXQg=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?4HHTBcIolQybX/N/n6iaOYV/fdK3?= =?utf-8?q?syRQM6aqSdP46/YPuKkZE7AIWQl/qry4Yejzj+eZSLteTSzaydVdx89Y/h+Kv8jKB?= =?utf-8?q?PLQ6zL+BUBcz94WjnXB1i2xRFla0RdTxTvJeSlkHA6JJVPAAc8PmCmsRe9yLW2sqD?= =?utf-8?q?CCt4v7fSHFEaYVRDMYSHNfFydk7oo/dY3hnMEPRL2/6Pom1/6GZ9mTkz6ZPNTFMzf?= =?utf-8?q?K+1YmPnu4D+6UKyM04CMBZ22LC06U28Jqe2qWeyZwEs7G3eUPRV3hASpyTjvUHdX+?= =?utf-8?q?Xpt4rJfJjSz0+fw5KD1cEiu2DtJB/ir5EPKlpm2m6hP05SCts7G6QY7yj2mG0d0/v?= =?utf-8?q?UxgDNFr9VUxyS/qSBziJtEJQw/pCxETKJmzzSWBXQbYpWjpHIcNkq3nf7lOrdBntd?= =?utf-8?q?/jiE1PaEm3+fAR/D6/bVlSQKe86bA4b8GlyoPK6bPVRVrwK+5JVuHEpR7pybdjfoP?= =?utf-8?q?/bEWVv61e2GjiPJm0U/CJt8lSQgfZGDdnKk8/F++LfT3UA1Y4taE79J91PXQKLGl3?= =?utf-8?q?9u0DAAd2runqMIks9HfvVY4ThOyG1vtllvWaWrdcQbgoJC1sywnkxbka/AvZwMX9i?= =?utf-8?q?rqZevEXcw9cc/YTNSYPt3n2OE+NvLMwWqgfT/Bj+zCueTlrt7yHGUpctYellAXGkZ?= =?utf-8?q?wzhf9VoukaoG4QCGtRL8n34jOADtchhmO/9PlJBpddb9dYT9HYDKmxloNGxi84Hyb?= =?utf-8?q?zbFXZWgEp6Ats8H1PHbbIIhMeFSuyOIFCE5KgJQPQL4lhdX1wMCnqhAymK7KMnTQT?= =?utf-8?q?IRgzizA6UFo2aSmPybJ0OeUIZHH1y1jFZITislV2ezLGRSn42aeT/2yGL8Ey9SZBB?= =?utf-8?q?bpVpWg5JV0BPMK/4AucvJ2O/+V2c2gYwmtxsv3tqVO9U0NtFht8ZkjS7Sch/0/wDl?= =?utf-8?q?plIDKfzoBgb2ecY+v42i/BT6PMMQQJ6YjsPAvtDSDY9w2TyIJLnloD+iwF2gH40Do?= =?utf-8?q?NwWcWgebvrb+swILCJCP+nNkYxp4S/ggbJ/tw+35uPTvmZsAHPVZdt6aD8aCd9ywl?= =?utf-8?q?HVsroUzqVsb1Rph0QiNw43gL8OkRoBxvZpe2MoJLK/6CL1C9GxP87WsR/hMFFO6d/?= =?utf-8?q?+0vbTjsZE1uVvC1lPVhrYZPHYL6DRPotv3ufSqBPUPWQdXz7kSV+wfjLuMx8Olp9H?= =?utf-8?q?bTTBTaa0JXTg/CfB+ae9WWUomen5UDsZBQdjtWFhywgBlu+wDgJnrFkdUwzSayPZQ?= =?utf-8?q?VzOzh0+eFBDODaQvojuh/gVOAmxPRsQO6gDBkN8f5UwAKOPSsWdTZ1cmJ9ZzCXlQJ?= =?utf-8?q?hdCGLOEb7Lq5IKK1RYQHDoF6Hmb/+zek3gGJ8JInwpdOfN02pAV80/x//VoqlCTTd?= =?utf-8?q?Y+89Zpa5wdzvzA0bgn2u7kFzDR1XoAw2QVjFAtU+XjxK9m1qqpw+pX8Vbxtxy2eu1?= =?utf-8?q?yJnM5KHH0qVREvAhrNBBM9Jwe7a5BHmGmivG8fKggGocZjzNOYfqmCpA1wz01X0/R?= =?utf-8?q?8q4PGBMy3ARSZs8rqnaRzOM9TF96g6pyYUj6TVwhfUOpdfQsukNIEzH8+eTqO1FY0?= =?utf-8?q?CGmsQtmtrvUCUdIuqeErOWTLfBpCkMOMKpSR78yz8xP1GlD5/nDWaCM=3D?= Content-ID: <90317D1ABB80924C8C5CB9ADFC71C2D7@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: f7c61076-24be-4780-8b93-08dc74aea190 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:16.3231 (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: Q4GfcaMWGY1Uhx8q76lAz9TYdkVKEayaES5iZA7lvyMNtzWZvaymI9L5c3L80VD8pMhzlkLLX0UomOJI6LNH/eRIIlbDYeK/U3emczJnWpyNV+Pgo17qz1880iTW7gWB X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pcie.c | 24 +++++++++++++++++++++++ include/hw/pci/pcie.h | 6 +++++- include/hw/pci/pcie_regs.h | 3 +++ include/standard-headers/linux/pci_regs.h | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 4b2f0805c6..d6a052b616 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_PASID_CAP_WIDTH_SHIFT; + capability_reg |= exec_perm ? PCI_PASID_CAP_EXEC : 0; + capability_reg |= priv_mod ? PCI_PASID_CAP_PRIV : 0; + pci_set_word(dev->config + offset + PCI_PASID_CAP, capability_reg); + + /* Everything is disabled by default */ + pci_set_word(dev->config + offset + PCI_PASID_CTRL, 0); + + pci_set_word(dev->wmask + offset + PCI_PASID_CTRL, control_reg_rw_mask); + + dev->exp.pasid_cap = offset; +} diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index 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 diff --git a/include/standard-headers/linux/pci_regs.h b/include/standard-headers/linux/pci_regs.h index a39193213f..406dce8e82 100644 --- a/include/standard-headers/linux/pci_regs.h +++ b/include/standard-headers/linux/pci_regs.h @@ -935,6 +935,7 @@ #define PCI_PASID_CAP_EXEC 0x0002 /* Exec permissions Supported */ #define PCI_PASID_CAP_PRIV 0x0004 /* Privilege Mode Supported */ #define PCI_PASID_CAP_WIDTH 0x1f00 +#define PCI_PASID_CAP_WIDTH_SHIFT 8 #define PCI_PASID_CTRL 0x06 /* PASID control register */ #define PCI_PASID_CTRL_ENABLE 0x0001 /* Enable bit */ #define PCI_PASID_CTRL_EXEC 0x0002 /* Exec permissions Enable */ From patchwork Wed May 15 07:14: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: 13664773 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0512FC25B77 for ; Wed, 15 May 2024 07:17:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qa-0004bf-I9; Wed, 15 May 2024 03:14: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 1s78qK-0004Xk-14 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -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 1s78qF-0000pL-Uc for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757264; x=1747293264; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=RCojRL0EejAMJ9/fcfk7FzAhNuHzVs08KnMU7NdYJV0=; b=ps1CYm3UDwIh8vWcHoLvNA7MNWDibBiSTL0iv5hknYmj6nijL4PKCNab e8UkJ34zK1WW1yhX+W8cYA7fzhNtyyeKbpEd7FKLAp+qFJjcinXSakiA6 c52YidwA05BgbDM2eBxGaakeS8nyL3R/FXyMvpZMF6xfnKe9C4i4b+fmg aVoj9TGwYKen4XthjN59UryQOSM06NIM4oq4NZdrwn95pW8l2JIvz7rzR L3Dxwz4iRlpuXyr/O+hdv8WY/Ls0RwQnHIG/OtV15nbQZAzUPP+xZGojq 4zN7xj/ASSyZaOV5mxGx3OAs4/i/1+a/tiQXEgqfPOoWss+BHpgQbhtRW w==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12580202" X-MGA-submission: MDHUVgm7ZeognavAQFZ7F/aIbJ7lQew7Z5DCRAcm57q5cN1D2UJPLtWB6uOkRIqISFImQl5Bi7cOjh8EUMPqGgFcCBZ+k9iZnx3GE36rGSAtpHbpAsUBZ7MqxANtc5JGAIoww58UkynohpN28Hjts4Y39OYYW2IYcWV2iXVucI7zWQ== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d5O66+J9G1xfWzOaOHIsOVCprHXtfmMxNO/f4pJBcNeiU+xRVuFJ550VlIK54zB8wfVE+6YPNKxuH+Fh7STen+/b6ohT6o/2zckz7UX/4L8h1/TBJlL2noueGZtL2tSzkz1eTsrkZPodPWhluRXaFTkCXqj0gj9uulmfTMv1stThZMDOeWZyrB9PfseAtKpYpkKjRDlrz2bOSkfxLDiWjYwAjGvEFzJeMVcXA/ilB0KGWMhLZX06otrJKTLxEJ/0eCrIRbBAsvZCLe+GZIu9S2g68qTdMsHRchYkcncLVY05KAobFfA+nLYYg19ygUAoATKsw+/Nh5PmUFQVETHaJA== 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=RCojRL0EejAMJ9/fcfk7FzAhNuHzVs08KnMU7NdYJV0=; b=JoADzLKZi4vHku5Y/+zetgkgGqvtQDGDwdzNH1RlkAFmfPXrxCu/mDfLRTMbg4ipFzyeSnR7A1WDMPgmFNrGjyeu5qDyEdUI7DSmPskcm7S/nNNxZC5Y38tkf+xUlEealjtH1EkepDAUPPi4VHyh4mUxnKLokaj2HlY6FxRzb7TlefPfkK0CdEOH0+qFzYOrzRzwpLmc7izmzqifCP6o+AgoX0slpCKR9uHDw3gyL+UpIdfAsEVPfK0bIVfrUZ3MNzZgr/lvdiUxAGOs46lZa6XwpUM3KP+EOivySeeARVckZvhFaIHldsA0ymulCJVKEvqU87ND35yMueizJxMFYw== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 10/25] pcie: helper functions to check if PASID and ATS are enabled Thread-Topic: [PATCH ats_vtd v2 10/25] pcie: helper functions to check if PASID and ATS are enabled Thread-Index: AQHappd/ggmcqc5wPk6vSoBAbpA6Gg== Date: Wed, 15 May 2024 07:14:16 +0000 Message-ID: <20240515071057.33990-11-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: 1450162d-34c5-4d5c-260b-08dc74aea1ae x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?g56pxaPEMyNTx/6dqHbvx5j4CCxelDb?= =?utf-8?q?u74ESRsISDFbOmUGmahhiEtoODt1vtLdeEXJ58oiKS4YRZXxIaa0pHegokeqkrbN9?= =?utf-8?q?lTkGUyDknWDd4gZlfqw7GOe69C5RVF0i36p19GW3bqYRu0mFLshzlIoAWrwZKPulu?= =?utf-8?q?0xfepKbhsgmIDK91DkZLAOku25W7//QAEoduRrVQHzjTM25PrjRmgZaEOGyGw3yRu?= =?utf-8?q?dV3aWwWh9WGksDpPB0e7ZnLldCO+NNKwvVZCMaqRPmVL/MX/VAxCqjucCu9mXL1F+?= =?utf-8?q?wsIfptUh1qFuAQ48Kc9HYpkpeAAQTJLTZjO+k6qoNTvwGTW6KPxEndQ0FsQc1eAN9?= =?utf-8?q?7VudVkWMGIov2bi4EsIAQQ144intIy3NL8Rgg+oWy7MjJrIVybDZfps05pTVGOsFZ?= =?utf-8?q?XhZbltiWU51nz80EYhDQX+4m+mWDdE4+fYmTLJTtCzl1xFcKtG1YxXHwQm1rNiVT5?= =?utf-8?q?P9jp9UEbXP3z6IRQ85weMVEq/4wfgD1cMTOqNlczDgSd5Ejuh5j3AUl1OvRCnAtNE?= =?utf-8?q?fxG/X0t0+rPRYNm/CJmw7W3kbcJodluL3EidKbNMQWnhEUSMZPqOgDrvVllPPWa17?= =?utf-8?q?hHfsn3krJiQG6+MbvubXGa6XO81OPSY7HO+tdQHilDjR63ofADrysT3Ih+hUKdCWY?= =?utf-8?q?s+AQ1Mv4mVsAcFUUTh2cOkIS0jZKAB5svxrPc0ChS3YFauaTR2ECp98+vzZcT/x0B?= =?utf-8?q?QcW4I4hmrHnlXEHwc0RpESQOylVs+OlxxZm/uzr3+IxOadi3lCx5VyQ3kbr1OHcI7?= =?utf-8?q?jFFedk09nObKza3mM1YEBW/3H7MZvyQs1AmhSPH1PrutRBvI15Uuq5r/dHradGFtt?= =?utf-8?q?K/fbH3P/lCIvmsxwmZ9mVnFxkZVLtcyVIbUvc5BYGjoKZi04R5ttdrdgXTXaeIDCv?= =?utf-8?q?O4dgFMbEFqePGIlhhp2vxBaOEzHKA7fxZoOCkef5UTrbyFjBXlevClNF9+GXCQ/5z?= =?utf-8?q?8BD2fFton3gC/pmXS1BGdjT0YWeKp5xOs5Q8K25SMkrpTN2roOQfDDbR7VSnqK+Kp?= =?utf-8?q?dOsYMtHoxXlxJ1omEYv91JsmKxLIYu2oFpkCMEHdDEW/fZ91gZS3148hwLpAC+1iF?= =?utf-8?q?1UN/c4/ffbb/jO493ZKTE3gSdx+XzIc8kifse3+2r5KrUWCsrWgRV4LRc6xJ5ueLy?= =?utf-8?q?4D/8hW/Q+T2fejSZHRleJR+XkH0AH7nIRhPGZxSqHEfTukZr3bwp2ipe1iV+8K7ej?= =?utf-8?q?3Mk0RoXWhifdJWnJsQJZMwiyeBpLINhAW2BLP0Cxpe/iGmvl6IDCFvCdAsX1acg/X?= =?utf-8?q?DorKB4YgI8KiYdpqx0RoYXVWcwlKrwX1LGQ=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?8f/+3KnmCiea906ESGIYXXE2TVhB?= =?utf-8?q?SzKNjyxJAizQfIvjPb0YGRVHmqnjcST7BU6/46GxMRnQVOy2YYFX3mWA/flkm0wJQ?= =?utf-8?q?mf5Kju3h2//zgeOvb6zKzL1ItqCobxQY8Qwkszyfl0O0mK38GrUfyA+OryHymydxt?= =?utf-8?q?wbMHTHMCBcmjV6RX5skvrQ6ZWWwRo3ziBXvf47MVkCfIhyv2GG8MHcJmZWqmXAXz6?= =?utf-8?q?k55CYnqQn2rJMZtjT4DGkzU+jyKXpzAomvj88LHQ3KV3haDUXrttRTvjVJux5dIAh?= =?utf-8?q?/kza7y1GD3d8vVXx4kl5kafzdyWdxT3f9LQCRJ13rdazW3li+ZQfEw0xZODUxi+au?= =?utf-8?q?U3uob9ajnKMOsE8daNbWDyXJXL3znKmCC4ZbLQLNDcm2akql0oxsdX8FQGNhDh+M4?= =?utf-8?q?oyVwTYuooRstZ7MMaj95+5c4E2wQNPtJSuCE6XGQlqNzFJBE09ttYrz6Kq6hB1ebV?= =?utf-8?q?/m+Ka39IsXU2GetGman62mJxc5vowOptl3ZqFg/FF2jCLg2MiObR3a5XCuDQrZAqc?= =?utf-8?q?vgIHv/kYQ37eIa7M5H6Ax8NOxDqOleN4kWohWlB5Ua2nHdPvxv9uvUekD1Rl8s0dY?= =?utf-8?q?gNoUqv1LU+WAJmu8cxWJqOru0iTR7pk2+f2ZQl8vvwJBTtji1P8RAo6HuzoVox5VC?= =?utf-8?q?y95f4zGFrkkWHErtcgpmOoHpaZBZSuHdnhWFM4pzj9elOFgnL4IeCU0PUxYO8s58S?= =?utf-8?q?XbdhwRgITFg1LB4hOfDCc0v3ZoO22NH67tm/UZmlc1/6JCAV1rRDT1frIq1lAo9Ht?= =?utf-8?q?dawMB+UEAkemMm8uWYS7UCB0n/Ta4oF07kKXen/KD6C31yV0n4aU84UuxLbtxjo7n?= =?utf-8?q?D0si7pF6xCFY/k5efE6cxglHsdkOT5b3o5yWH4Jh3mMheRpf2dAkwnhP+/OJ0yFlG?= =?utf-8?q?xDIcBffFAx4AufwjpYUtQyUEulzcrAKNUrBVF+dhSvLshcabqETnUIoOo/BQy/zzm?= =?utf-8?q?OUNrMDw2e5oIqAoEk7IKi9qDbbOXMUsMDGbmUINZEic7fRtxYd1ZuoUtD3pcltOxt?= =?utf-8?q?AwzT/a2m9DPFmnHfBLbKTgBd84GKDhke6ZhL32+Za/cguESpQp347u8gG1DND70Wd?= =?utf-8?q?NVcAkuiKMnuT+w5JzsAAq1gHYyZHYpdk83dFbnFJ3Ad8Su2f07lkI5S3DqSOqjrp+?= =?utf-8?q?A8OK42g1GNKgd3Kcwn/2fJGGk1gtGoIttuFkxSrj1EsoQBGtYOY9QT+lJHq/Jr0Da?= =?utf-8?q?3Lwg3Te56yKgC9f8zbmMq/mCT55gPXwc6p7ZloWG5PYrinFfQ/pOb/6CIuuqsLnRa?= =?utf-8?q?gUKxgWcDUsBS02pOZd14SsugU3/bVedLPj7LHvFiguStwvlquc0qmvKS59xjI/j+o?= =?utf-8?q?sFjmBtMQjcnCP439yfmSJIqc5ugOtHvItKVz9QlAt28QtOLULUSdJ6/x2p5ZZzaP3?= =?utf-8?q?0WyMHbQp9ZMB/aB/r3eiyDWfEIwnQsaWazqTuqxLoApgKn9IUtOyhRxsWgfWukUHc?= =?utf-8?q?GCHnyNeCaZS0Pne/PLxqzugXTXzMavhf/ANH3/jBCKX7Koppf0MQbEktEMIdUbo5q?= =?utf-8?q?31eZ9/l4SZBXGGDGUyZ0TFdeufiFRM/PvNaTDgAvGVeRhGHNG/fGw6Q=3D?= Content-ID: <7FFF1DC0F7EF6D47BC36A075EA511FCA@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: 1450162d-34c5-4d5c-260b-08dc74aea1ae X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:16.5324 (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: iAn2PXiGXd84WyUPQf7WlgLxnHHX4keek2kaYMdo9qZnObMb3rTMk6dhvzkvaMDpoHP3jcO4G/ClRBAG8D9/s8+JTyMdO/uZekwaacaDQRbuK8FmTvH5/Odlcqjaaoj2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 d6a052b616..4efd84fed5 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 Wed May 15 07:14: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: 13664769 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 27070C41513 for ; Wed, 15 May 2024 07:16:43 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qe-0004cO-7W; Wed, 15 May 2024 03:14: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 1s78qM-0004Yq-IJ for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14: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 1s78qK-0000pL-DX for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757268; x=1747293268; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=SQ5EBdFXBuQPjyxJF1qpaAn6WNCxfDRml9Uogf1wA/I=; b=BWjSXCCiec6Nr6CeMtLvrFPqSpDPx/AlEjn193vhbKm5nD3YKNOa3TWN 56yyVJAFtkd5JnUyxpPhyJDRZXCnPT9mwP9FkMqv0SdIoZ/NnBYaQF9wC ZiUGguYPni7MeNmbfyAl/fvvwf7A67xAWe69eYY5rp+t8b8XkCqPZpNSX UYNMKgD/GK+3kjm6EL0+fmvyZi8cPVjLe58tyj1hhBQQt3Pfupg2RBOXI Stm0+SMbyUMttYdlQcuKgFhXtcdoMnuuXMHuRZppSkAxW3I7Iz0funvTo QV1cFYb/nzIaTRlTLoKCbXiXKDzEA50xtU5WSMULGOHMsC+b3xVbiay43 A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12580203" X-MGA-submission: MDGmmE3d3CIwkf1cumBBYKB2oqcPqbu27qHwj2Xe0VMpFj7mUOp7kJqZ2ldy5Hb3eaj/clZbhKRKCAxVg4iNYmB+TchwJXP27wQuQk/IbN6UYGk6eqskXMGufHZ4ofE0ugo2g7Wynns/4SXE0c/Qrc4YZDTleeRH8vombqGtOUxNig== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost1.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g4iohuzC7IeprcSgpY8NW5EByn+7Lt89/nwjx8QdNcPAgV5wmfEwimd5vRbHkS6ANLx+yrmOo6Y/VloISN3z+jmYzkRVVWvMosi3qJVz8A8ipuZn1VPTKujGG6IDF9o7hZZIexMQ9Y4ZR9Mn4u2EcF4rpSmt10GMbiyJ1QIO+Pw73vcwFt19bSP4ZHDWL83gzctFJeK+HGUqQ+Y9hOm+157pZgrTL6lyobNU9xYybv/PWWlKEiE37dmEkoixqlPsIZOrYF5HfuWxnR0y8ca9Ap5SGrjBAUsPUtDbqtbXS9hT3Bj9A83Y9cNnyJwncuxBSsEx6eEyLp/k2FolMyXhKA== 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=SQ5EBdFXBuQPjyxJF1qpaAn6WNCxfDRml9Uogf1wA/I=; b=nEUR/8HanKdMf27mfDfpd6q7Q4CrGq6fF7rP+tXypodmvmgCfmMTiwQfEcqoTeWm1zWbV+pEqlMPOqzO4uffXOe1SwWRecwGxF4nx1xRI9XArJIexrKIF+rafz6nXWSVFqpDnwOQf/QCpjtEAvPPp0S0MsTvL8pRfRtya4wa66jUjCO+2lAeYAATrm5DdFOxdmKL/zRkkFoNnvoRJYM+n7pJfwdpwd1EE3II9dcW/FtzunwrtYp/HGueI2jLLuuStQ/dj4JjPMb5rRyiHmQrvRArR4OL+fQFoJf7MTE37pIwmBxjwj00jfzrHOr8b8Efw+jVmskhNdazxERoY+5iZQ== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 11/25] intel_iommu: declare supported PASID size Thread-Topic: [PATCH ats_vtd v2 11/25] intel_iommu: declare supported PASID size Thread-Index: AQHappd/Z5e9p1ha2ECfEwYekTPbnA== Date: Wed, 15 May 2024 07:14:16 +0000 Message-ID: <20240515071057.33990-12-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: b29eab28-4e97-4db6-5656-08dc74aea1d3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?uALylj5WALIbObgd2mEDRmZVwXbZBRz?= =?utf-8?q?zqjx4Kq/Emo2gyDImkYRkNrTvDpU7ZX/oMYa4vTGtjU9biyekkyq8pfIuxQX7Qce5?= =?utf-8?q?hspCEJ1GIxz7YE77WB9tGgyIyTqDf0GRll+iT7Ad5KfKuFrMuJAcSlvgOx8etnO22?= =?utf-8?q?4GJr7dkW31wCcXa0dDXp+7IOZNmfb5Z83xQd/3cvjRNmwU5pxrtiNOnsrFz0Z/cO/?= =?utf-8?q?BTpBhdL7iqLfByFC+KzRR0K8Vq8r/GWnXkac3/p0Fwf+h2kgHSrjx8Fa6tzQXC/cV?= =?utf-8?q?PKy36pRzvhH25rfvkpxnn7PIESZPcIBVHCjulmUkXfoUgulTMwGK7y9wnTvDx/FVx?= =?utf-8?q?+dWRicq/wtDhQ2PxKKu0z3FP++TYiwu0oGY5VTJLV+Lk9pC8A/vUE04sM6/4n3MlV?= =?utf-8?q?Vc8TNLeIxI0s5VMrwyENIp/sXEsOldEYPT/VxgdhO/bwj6RLA4wqUSmaVIYi5uBKW?= =?utf-8?q?oJuio50SBkJXDSs/6XtS+87G5vS08cjVa1nvoicKXBgFDwSP8dTpVVSrpNGvav9A/?= =?utf-8?q?mDUCko10d+S6j8hrFlqAFMwvGQYO34as4qLxtLZxmf25Ml98fnvab7p+FkdZKijhS?= =?utf-8?q?lDeXTBYXuObg6oBvfdcKqPy8ytKVU/lqzl871u2N0uElaX/NoD/WKgaZsJYUmJpYK?= =?utf-8?q?iz8dglrhQKC00pcNanJDBzZ7MzsJYhtePVTJGIhYAbZr0kgXv6vUvMXC9giQhMNEG?= =?utf-8?q?O05oNZwKcKsBuLvLwarbsIIHYPTmB6043ng73UPTpOeIL+xcNawJl9yPdaM5UPk2c?= =?utf-8?q?nmHx2K43p9bURK0gvjZDVsdeSVMiuOMDD3nqC7Kv6IXz9qhVCxXoPBv6Ttx4d6UJH?= =?utf-8?q?cXrIJdJSYnNd9V94v4/Fhf6OzlaMwvRhlvUimu7F8QFPtNcieHv35s9o2xp1EWDob?= =?utf-8?q?eUSxL357FlqeYCDt/sipQZsYizAigaXI3++K5GaLtac4FM5isMGJwJjOwMHCGSA8N?= =?utf-8?q?W4eEb1OdgogDWAUD8CxHIB1GAdDpbfvdjZGSeOxsWI0+bkJ7RSpA3KNfaej6NVf3U?= =?utf-8?q?xHXIAdfOnQm3+76VyY6iOdK374uvEFEX/9qfgXt9YGwbj48Hb1PKWIYVVuufi95Kk?= =?utf-8?q?e7b8WI0NljRaAQyv3kgbvVoHdAgYhX+zge9ZR7DNxr59t8Ojk+MOKPDNfjaIJSF9I?= =?utf-8?q?FzFWVFNiLEEeZ/F/p8tr2+v5pLLiwN/QgdRrlI06+GW54+dO3IsGcIO8UxfXT5kEh?= =?utf-8?q?fSKnA4r2cN2+cuLbd5S3eu/38Lqh+vm37RKwgqxdtrkpzbOCJWN4XPNrPW5GbH5hi?= =?utf-8?q?Hi1jwnBA2zkcL?= 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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?qwltEbPwbTS2jUB13XKRnTmlrBFz?= =?utf-8?q?Hcm8JznzYEaWaN/5PbX4jlqkAmRiiRgMKSng7dgoqKqjp41IqdOsxwq1D3wZQ+4ph?= =?utf-8?q?AYcaJCee6zOB2GsUDXE3xKv9QUrvok9luzm8Q/iB9o8fqH1MCCvigEonk0Ejjiku3?= =?utf-8?q?CB9aYCEUrrG+Bu+J60LBCyUCrPn9+p+KQCgA49+GOVcO7+bmEiXfaAOQjD6Ok7Ikb?= =?utf-8?q?6F1ven+GBitvzhqtDtujr1axvMTsT1Qh5l1QGC8TXC42DPYfWC/HwbEaRuKuHa9a1?= =?utf-8?q?LuKHROWtboHlLplhmVDVMPhLX8v7H867pipnUaj44Wyn4+/9tWpuuFJXIvjCgACL+?= =?utf-8?q?Ok4/Zpm/y8eNg+ESWS8Vsz2Igg+qunxYTAi89awd80mdc2tCqZ1T7gGIm0/s3rxJp?= =?utf-8?q?NeZb466kAGYuVzyym9UoWsCB5wBuZyIxW4sdMnpzkIwvTkyrNJwbillADc1Y92SlW?= =?utf-8?q?fTvmZ900DzBkixC3pxSfzO/Yp5s/IAouGvr5yYSZJNbOUpN2L4J1/EqZTyUiu33Hd?= =?utf-8?q?iV0zEXv2ko6IZJP+guIqCHSKst7IdBlCvaxl5Sta5t0ApeZl9sFTmb8iuJbmGLZ0d?= =?utf-8?q?2TDBj4kztycUtGgEEW01FTEaTtq5vphqMUmRgGWMDo6bjRrlyBWxMhowvjqU7usYO?= =?utf-8?q?ue22wldkYD0ktVs6kf9VDxje7WuZt9UOLtKuJZnR3ES9R4UV2o9K8DS1TaRTry7ue?= =?utf-8?q?0ZjktKsagMAxzwgZOqG0nclEgD7VxQB8cct8bOF/Yijhbx7xU2cEanfxz8Vy0/drC?= =?utf-8?q?ucgfP37sZZoSB9F3KU05J3toW0+ncWCYfblQzLWb3LN3k/pS7QwWM42mu4eb2Q7C/?= =?utf-8?q?mlchj8BCVb9vkxhZs2t/ScqQEWWx2My/SvBto5jhAMLOCbKrd3ynZa0R+ftRSFPCY?= =?utf-8?q?sOtqp8z59jQacF7qjqtg+fztiu+6OeQjIijiOM6C1ibTXgGnSkYrtIxUT28a8sjco?= =?utf-8?q?TwbvPYCjWoeD9cTDMrjATYVNsKQsG60Y4rzh7kOGC0HTTMGuF1Fupl2t6HKHobf6F?= =?utf-8?q?vtmm/VNXwemNiRtoVMIwZnK27OS+SPUUC1atngR/CfOGN+2dS7HRRd2jC5Rh3LfSH?= =?utf-8?q?SwPPcMRXZC6fG1acmHiJmYPb8dekTh0Xkv0WRtR0YgH4gbDu/qGQU0iKz8153VzlH?= =?utf-8?q?xjZWncVg9Snm9CecSwfruSUHCorf3xGtk5RkuNltvU5Zi1V+LV8nUtGlbUAV1T/92?= =?utf-8?q?aB4JZ/BiAIfAPEpxFxxWoUY1abSWOaxOmKbLa+MM44o8twkCrlKM1TNyqOPFbX6pH?= =?utf-8?q?rCRTjvaxMNAHewcFMUND6vNJyRJpAw8DupHg7DgBep+GcPWGgiCuSrcMpTiVPm1+A?= =?utf-8?q?OwClOpKKnajR6DYYFqYTFBydgu3rM2+9Zj99zqVapHTj3P8EOaUDIiaGBMBwe9CL2?= =?utf-8?q?1+dUFK1f3oNVUfc9bP6bhYsNqxNNG3syuiqltYa1XGORNMmsK1Wqp/n7pxBRPasl3?= =?utf-8?q?tANB1Q/7fETGNZkkVSRfD0ikVwql+EV/KaQxC6y8TfCUDPJW/23blwgC6isghit19?= =?utf-8?q?X3xyosPKDgOzC40ANem9GN6Cve8IIdevcsrjASE546EzpKitL1NsbpQ=3D?= Content-ID: <332E853495862B4F889502CA941A0127@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: b29eab28-4e97-4db6-5656-08dc74aea1d3 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:16.7389 (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: MDilii34Hk1qpaHqYN7OrvgHpFE2nVXwDPnjJfpNSmWzBP9frYgK40numFU03By3xX3OhgiLSh7L5w0I9xAlOLtHNRipXjr5CEX2dMca/+LTCh06tp5p7ThQGdMqBasm X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/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 373f3d254a..3bb4d385a8 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5819,7 +5819,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 Wed May 15 07:14: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: 13664733 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E2F95C41513 for ; Wed, 15 May 2024 07:15:34 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qQ-0004Zx-6U; Wed, 15 May 2024 03:14: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 1s78qM-0004Yn-Hb for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:31 -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 1s78qH-0000pt-Q9 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757265; x=1747293265; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=GKIOVj4563Xwg5yAi0Ofm5P6tTAe9BSIi+5+5GummPQ=; b=iIspgF5wDixkr3DbFsWAkLjETNuQCCMvPy7o7bqCPzP1VcFUIDln0c02 ol/JSvzMfFQRCsWRWRXRiGFit4vsdkEB/LVIzgN4wW/2gDyExWjhF7Nq4 Cdr6gpapywv8Z3O2Nq2BhYd0+iM+X04BjASCR7ZZS2v779U6clv5XGHba rV4Z3atXL1D2vZVV2a5mho8AP1jPE5oPLn+rQvLYUZXXDpTOmTraKjXua xxwfjwaO0y8oYiromEfkHSjleIiNghSDjV2BhBQGvYiqHyll6ZjqiElkn pBP9bAmk8ntxTEindfEo8xiuc2yPXybjRZk3FYKWopBGaqWrWisjdnnvw A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12635438" X-MGA-submission: MDHRUPpkh4kGvzUy8xrEy9SzgFOTzzfPzUDYC0iO0IpoLqiR9lNOfLs5gFLDNjCuWnLdz87SXniAhr5JHl2vgSGWfBzg3tk9mzfBM9V3Enr4R94y3kOQ9DqsLa6sIrMDZ7saiZxXthplUNW8W/mkqviYt3j4RARfLY9RmPMoR+IdRA== 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; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fsfBInf5XmLssGOsNhq4teGLSx5MJGV108U4x4jzsT1e5q76c7LzrZQzIrg4FH3izO5Fnpp9gcaGHiDFE1lMm8Pz7IyBA1pQ9w+JUkAcoDHSv536ZG85OW+vlg7S8xFU0yEUouMJ/t0FXEOfgxeyfTRyXUfU7V+0MagswRC6DywgOiuEPCGXRrkQodcsEPjJL8k/jnOnqLzJ55cnn5LycIaBXHO5UtWivobSca+MFYDjG4rTOAJ+GnZJFIZTHAqBCuniwRos6jwvaPs7Bl1RcS5I6AJcYR5PX3mcBW1FbkLLnxcoejfWP/NBa0cjM4ZbQyOf/nvf6TYaqCzeFdhwmg== 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=GKIOVj4563Xwg5yAi0Ofm5P6tTAe9BSIi+5+5GummPQ=; b=cH5qPvwwB+xn3znXguiPWrREbYlEk1Ih3/bS/AN0G3yRb+PI4mF33HiiHdtwF0YpJpbKw8U28kf3LG1UGOn/pD+Bg7VBBVU0LGZgP6p5BWCRJRxmzy3zbZ2LGo7pmR0EPfDlm28k8aum7ko5FHMRXZLl8KezrocKzhd3siwSPD0OHe1Hp9Lpy5xD/qMRmO20NLeCpot0m4YCKOe74MYMzsw+HvR8jAQfdNSkBrp0H7bC+gvNKaA41LA949zwQm2d/Tqm9U1bA/azfKbJnavRvRabR6WDUj7JewxLvrw4xgxIIRZ6itUWMNYQZwvXWGYNk7fnDfOs7BtAQubJWSgQlA== 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 AS5PR07MB9896.eurprd07.prod.outlook.com (2603:10a6:20b:676::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 12/25] intel_iommu: add an internal API to find an address space with PASID Thread-Topic: [PATCH ats_vtd v2 12/25] intel_iommu: add an internal API to find an address space with PASID Thread-Index: AQHappd/JvyZoFH1rEa1gdjZ3Mno9Q== Date: Wed, 15 May 2024 07:14:16 +0000 Message-ID: <20240515071057.33990-13-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|AS5PR07MB9896:EE_ x-ms-office365-filtering-correlation-id: c35d33fb-7499-4b54-b1d4-08dc74aea1f4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?w419ptQapejsMZUZqu+ekmci0CUQJmf?= =?utf-8?q?7ill6RSMRlnRR3NPc93y3EtrIgMQoaUV0RFBDWeD5Y58l3Iaf7PGGIXyZweDn/ug6?= =?utf-8?q?hrtYgNOBq5Iv53DujeTdcI+CnN814zpaFUxwPs6fsEc1v6zSa7tPP6foa61y7owqq?= =?utf-8?q?2Q0cJRek0YxX+EFva0mpXEya0Hhh2/XzmRpeOXEPfKwdRYN8R5+ClC6Djdo0utqMY?= =?utf-8?q?XLBmF8Q2kTdkm5oQhLCvSUAewGuL7dDk2WSgaZrMooNxoyW43sHxoTdMSNV4X12vF?= =?utf-8?q?WsdcKsDKez9vVbyJ+Wi+F227Cohxv3H24rMq/VgcTETm93Gt9cglZJgoBRgHRcbss?= =?utf-8?q?x09MA7SJHwt3JMR+AZuqPay2/w123yT6J/wyATBU4wKS7W8mFmCQRbkzmqHTVYVHV?= =?utf-8?q?StRGCmdbqyrTtl2sgmSRRD5zF3GWfEARNrhDjDPOC+r1xVEPrET+cBXnxANEQApe0?= =?utf-8?q?Wc75IsjP8Mj+yinUcTK4oNTPYWXelyALO1nNJaEboU75xj7J5FhGvDhS5yhQLnoMx?= =?utf-8?q?Ua+qom7QknxjHm5hiwd42FK/cEvTdGyp4r0tNgKlBYDWIreA38iSC09YJQ569SoNf?= =?utf-8?q?ubSxcAH2h0rVIWQlEVb26nLIJgAt/KBSdVa3M26rySQenxzFEhGIrQ4CMHs7+0hpl?= =?utf-8?q?+xB6vsqlXzUN6/D2pKGiJbPNfxW9O7eCUcgr6umN1C/EgAkVYyJQ/wIa1XOJldl+p?= =?utf-8?q?s3PXW4CLDSTyvoYxXBTUffLa0XfX7rHpBPn6oVYr+dNdos+0EmQI/4qvDqqlhwMRK?= =?utf-8?q?fRqR5WNF76cSWJArcuQ7h/9iHbB22/0HC8IwJcpd18gbg2D01D0YRWUmQDQYx0Wel?= =?utf-8?q?nHPYn2rYW5sQt9JMKfbNQLdYR5/VpSz9yVLdl3i4Ap30rLgaLF+6Pyi8xaNLtGYYf?= =?utf-8?q?eqeZmUKqLDA7bzLQTXUc+7Wc5vwoNRGS6sbP+TSF1rU17WO6pNrtyNZR042aXsvLT?= =?utf-8?q?RGr9kL58vwK/8ukQT/IpYYB9qRGeW8343Dgj9QCXjFWnIA18RHAAgQNd83KgJdaWj?= =?utf-8?q?6+hDhuIwDUmNV70r7n8XG6KFzBfpY1G9RcO2rPhTOXmbquRGj1fHV3aiInBunGiVQ?= =?utf-8?q?8/zZQJ47kmCpZ1loM4j0OikI+KcN9K3Y1XdFWmV4UjvTfzFcoAjkuSA4bB0YdeX4W?= =?utf-8?q?msuTtGQHU+N597/uCdfHAebo4MFaLIaXoHIKcoyQRRzw6f5zmj30LTEdb14E5Sl9l?= =?utf-8?q?3h11qEPtbHOY2zb8iBEU+Qh5JB1eNN2SBjHT+dchTCU2smsMRu0N7aFVLnF16HQ65?= =?utf-8?q?nz/qyaP2CwBVXHaJO6asqEnVaxROxjR5WVQ=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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?F00NCnfvDydPn76m0W5yQU4e/HTR?= =?utf-8?q?r3ofX451CTuPp8AH1PSYxw36QFtv8OlW7+jDVEDeemPh84EInc1DJvhJXCUQX73cq?= =?utf-8?q?KfuNUmb9KuHUlSQG+mX6baOvXKpk7ba7t+mYOmWw8QP9sL1fGpPlmN5PgF84rDh1J?= =?utf-8?q?hrLZVEWdkQObiqtXJpHDIEyxq6r2ki+NJ0pU2SAQ+PIaxeBcLPl1u9cvvyyO75vQO?= =?utf-8?q?ILadvRf5UUwb8oDnnVu64NeFWFLHQX14wYz2QozohudLT/5wvx16WCKai8hPZ0lRk?= =?utf-8?q?YqwlHqESd2jB+n4DEyUpGfEQLfiXQTzg5y8BsJ6i5qt/pemQiMTvWqYNsuqOWVfUG?= =?utf-8?q?H+iA9GJiYGkcJsSwOKcDcv/pa4NA2YE7u+AAQTvl03ntdYNowsShSCcuhMky61FVz?= =?utf-8?q?nt6L8Y+5rEelTFKeCZlo/uvLI3xRL8B7lbmc4QTwYB2WtpNJUnELmP+GGfNHR/joL?= =?utf-8?q?XQljyifZC3UwtRQsYcUHuieXa5spAaOePSeQwj0lQj9bxelKP+nBNBt/9w8cc2oeK?= =?utf-8?q?emqubhDajeE+u7V3q8wucjnjnNajEmcB7zsPGm9KNMGuZzgy6iJBH+049tuleFCJi?= =?utf-8?q?QZVrER+xOSCBpCmMo3KWhFgShOHEdFjCAkqfmf/Xv8n4+/nLkh6edGBMI/kvToeL1?= =?utf-8?q?pwv2XQ9F0zg/1dHTv0XkMQ3pDDYxwkY4OKSQuKMHovmy6JBHPtE0QOQL+HYmk71us?= =?utf-8?q?Haim9x8MUqFRvFRCg93BcfChxlaZS2Yu6t0tgynjkgwdpYop4LvcMwXFDRBx6qIhV?= =?utf-8?q?B+wuzllmD3jeRxlNqEXsA2QBM3huoRJCYJjZWJyeLqD9Ay1Ng4cF6PR6lswFut7Pz?= =?utf-8?q?DBB8ENvmbMFcguIEGrKDXg72QO5tVySl8tu+pQokDZmAP/zpbUSvRQA0qETWrunJs?= =?utf-8?q?OuAt9nHcx5OIOJdS2Vg73QIUn9h3Au8XcDUiT7PcRwRyMolVwQ293YHtkETBlSaKq?= =?utf-8?q?3Qmbkcz9yqXCt2V2iUia3/ILIdmZq9YPWDAxbb06Rj99nE0TN1TaityWWBhGD5YPX?= =?utf-8?q?+ZXERSrJTYZdOmIiRbFi+YKyI9LgKqloF7C9Q6xvKhYXv3IH88/IIw0cR8vAdLP4u?= =?utf-8?q?LKwNrrzmWC21jjJJ0pp6A5Wdjs4TGAjXFV4s/oZd4LsfkhuIOfnSKil1Y2RYubUeY?= =?utf-8?q?DkGeMsBZVlll54VADwSGgH7k1o1P/JhTe50UkewG9a6+6awnd5rlRTHVRF/keWCNO?= =?utf-8?q?F8r2TqLY7MYV5t+kIIwUhwxHD17zYdBeA7nUPOvI32fhDXIgM/D0yrZuGiHOg/fMH?= =?utf-8?q?nwJOkBqkvDIsHGX0spvBkbGcySZCeDcY7JfoGhQmrNoafNa/+Dox+r4SRZv0rJfdn?= =?utf-8?q?/q1uKxTO78g4F5Vxj7UiC6zEZEmTDJ6ku0LJhHaiscxNuh+TAdV9ZqEWR4v1U3aLe?= =?utf-8?q?ERapehrxu+m56Hjq/vo9yHW4zQcinoOwTNVqaOIQjOCy28KEE9tjJalKoXmTJXYsx?= =?utf-8?q?f2RoqVBMh1JQz9vowECZRb1s4nX0Q9ohycM4LarhToHJy+PaJzy5DV5Y7G2GtMxwF?= =?utf-8?q?jcATSfWyCzL/BPnW+hXARjB5Vm7v2m1O+WjKb9PsaUqA33qjAMwAziE=3D?= Content-ID: <4EF59DFA9EF05D4FB801BC9E1BA70981@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: c35d33fb-7499-4b54-b1d4-08dc74aea1f4 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:16.9654 (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: cSYfXRee8q0HRwgvZKfIQENzSPcRCE8BV8TpDlkSegDh6xOEoL73PmDpL+xBsEZQ8uLncWzQMO+AR6Ckgj6SrVxH2K3O9rniW3WtNBjHvY9UH1dE+8LM2x4+1KYzt4he X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS5PR07MB9896 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org 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 3bb4d385a8..166103510e 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 Wed May 15 07:14: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: 13664741 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8467CC25B75 for ; Wed, 15 May 2024 07:16:12 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qe-0004c8-46; Wed, 15 May 2024 03:14: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 1s78qM-0004Yr-Ik for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14: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 1s78qJ-0000oW-Lv for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757267; x=1747293267; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=mWrNNAaJaIPTkry3BhmfpwvoRGFU2OPTQ+DvsncCn3U=; b=C2EUs9hPTmMNBNxS1b0pSM6JPSjpL8XkfexAsuNzyG4hAFUyCBTn7rw9 rhElGGvLGDiUElLgHZvkmjUD2fFpQ3HU8/6zRyY06S0YTvqvayTzHyiEX xm1D4BwnNMOxGX9iQEOLOEZ8qtUYSLNgJGg2BRzwKXS42PULy15j/BsMc oVCTaVaPKeAV1HY+0eVuRrjcq6vxdd8dxVV+193MZouLYK46PVNVjJBpX U8TOvdFPAjMvvK1Bm7AOLVHB0ylxcyws5R73fG6hBqYcnHbhD4uA9BBZU TznYdPdonKilaQI/37ngkHauBoje7TDplsFqfxjXt2W5zF7Ng1VsfozBq g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581802" X-MGA-submission: MDFvjhHg6qsZitBI+5IywTdK9eursV928Nv+//b1YdeGCQmczQCVeYlh5Njkgt1p5MohSiecv5wcV+xKci0NKGLUfsJJF5SzBIKnz2FP3P1p8hxenLcBZL0/EprF+FvJPpngwp9l361YLI5+h42U05reqfP8Zz/yS5shCnFlAjyw2Q== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j6PTvIrfW9ZydZPrNE/ofGAMwrieRyp2uxOx0kTjVvz815AoSOJMRmj4L1I9a9hIZ8qHdlsgC2WXEoHX59kBEz4LkkUxbwg17463xb0wdz0/Fb7Fhkdie2yo64AOMJzUC3DeSR8FgOCIDSU6n9omArbPmiUMu+uP9mHk/UD9OOCGH84ATzB4F2UzV4ArhmkhGK4bWU4o5QEB1piiQKpk6gLayNlIvr+DdiW8DFcBtHOs7a5UygaFmKZ9Ue8b6dvC5ins5Lq6w1rNSmqhQjFBqNPpC8jfWPa/8Loy1tnKr0PIh7XwV3C4homGwti9xP7zW2o2G3TLusePIJcZIx40mA== 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=mWrNNAaJaIPTkry3BhmfpwvoRGFU2OPTQ+DvsncCn3U=; b=mpd5tyAEltd3W5I0ldwwF42A4E5e9ex/R0aSQDR7NaGzcmnw1ndmQoOudj4f4i/35F4yWJl7y0FHVLhdwQQV0QwD+ItjedaKPfPea7423Iq79YeyxtJHxs94re4Kvkx/ZYl3qCxaFgjGHUv4s59gut4yw4fSVTj5ilu0Qq60Y/nzr0vJkCiB8f0qUO3IOFwVNe4IHEPGneu6F+5H4NLk0yxHH1wGdL3A5OaOFFEczX+kyP79c2dz2oKsSkrwqTc9e+Ea7erk9fWcb8kiuMOY43phPyr1Ac7XOyK9KLny9nXAfSOuFDmixxule6myOJ6QJ4M2XETV71H/+XmG1YXeNA== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 13/25] intel_iommu: add support for PASID-based device IOTLB invalidation Thread-Topic: [PATCH ats_vtd v2 13/25] intel_iommu: add support for PASID-based device IOTLB invalidation Thread-Index: AQHappd/Mn4U7rZK2kaAPkj64rXn9w== Date: Wed, 15 May 2024 07:14:17 +0000 Message-ID: <20240515071057.33990-14-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 0a08e020-04fe-498a-e046-08dc74aea21a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?/4fkxxfgbMiyjkrQyv3A6vkxYPpQWc8?= =?utf-8?q?VtoHiWKfuJ8SUlp3VS/yjU1uhOHtFxgGohQ4s2qJE/JW+/i6muqUw+lScMADzuCJ9?= =?utf-8?q?Cs+FtSCJNm3cmUwJbhzME+noT7GByOwX+WnM9EFFrFYp/FYyMskoDavzYEUV4GRnS?= =?utf-8?q?GuiVdu+7Yu8nl/tnMj9I95a0TjfVNQS/RVHy/rfvhQYPQo7UtbvX35VSVlnmQop3w?= =?utf-8?q?la7ljkid3RTE8jWd75wE3HHK5n8Wl4ZbKEGJonfMzXVLno7xikes34DKlNj64+te4?= =?utf-8?q?Umse+EGdxSRnP58qFBbQDI+Iqwp489Fg8zloEr76KkhAWftH5AfRbdPt/1Qdeoakd?= =?utf-8?q?9o/pjrdFY/3vcAHa887zRhNbia+rFQwqJ5RbKpDi960ih21kIAYz4nTTr8KcgfBeb?= =?utf-8?q?AR0vDrzFjUJtQBOyVL3nUqVMs/9U8+7Jx/KyTRazjJQIcFj1Hy09ySy+rMuGF5cR2?= =?utf-8?q?uicTACfmt/34ikOGQ1w8Xazm6a+KvDrqDZIn4aPIRKxy814BfgENLi4pD9N4gxRLq?= =?utf-8?q?6+5N7HinVm0jIVXUq4n9//V2uxeUt5zvUWNZsGslUqOJAL5RPsn5+AbvBR7i25OyY?= =?utf-8?q?9aZVrUBnolYqgTkM0NAitViXd7l2yXOwDZEli7hvJO6KZ9yux8kel6VMnAHmpVegA?= =?utf-8?q?2Gdfm2r8o+lklmQMwHVBva7QqW4pEtlm1Wz6/1GJAWzwAonx4U9aCbjub3pVYCZma?= =?utf-8?q?IQErqymq9si886jYPd6mEVo0gHDsHwP0OWlWDmqtC4LthaA2w9K+UVPRa7jD57/on?= =?utf-8?q?B3jnXXJc0Pv8FDIEVWIKmTwhVmk7wtQ3awDSlXTCLxyP8rwdKUZySFNjazOT4mBL5?= =?utf-8?q?GFdO/TMynBQYcbFrWM/DJ11+n1A0MKxlS7dXqTB3qAwjpY2yaHiUydmgAIPtDLcUz?= =?utf-8?q?FhKyUTlQhtFMrq2M+lL9bM79I+t/34MKz2xZ5T2yeipLgl+qvKAqISPDHQdZiDl6b?= =?utf-8?q?c36RqbFQkusKUzqs8v8l7VRG9WiNJ6YIvRKCM//c16itGoODMu/aDlzyOY84mpdmx?= =?utf-8?q?5lOPDYe8zFlqecwKpOXSu+FkCXQF11p3sPvs/nMdZOmJBw9HNmGz98X5H00AYBGVu?= =?utf-8?q?DE90hvZliwJPUDealNDQlEMZqiUkriwfjvVUv+r+9EW6+frIJxczm2kp9yfeyYvcc?= =?utf-8?q?KqySGarfOTM98Em2YjzB1cxdpCuXi8Pf1h+vElq3jvrhLopqlw3ubFZqIFhfYF6wr?= =?utf-8?q?TPB3BFtADmbvjbtWvpDAlXNYNq50b1jm0BE/e0akG5xCF7btDc0VtwWYADVRAsXJl?= =?utf-8?q?cUlAieTftDOST66uNcTpPgs1Wg0cC0SVo1w=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?uQLnaxPG+lroo5MXoO6DjAQuK3IY?= =?utf-8?q?2ZII3oLyY5G8V8owUesdUETQJDkRNfW4NVbpek9wT4gbJ/gn9PM07X7+abZIVXOd8?= =?utf-8?q?C5ibs4dBnjzCdNFMJGo7ty6NaBAmu05Xpc/BtnQNtSCkjzkd8eTrbNYJR9BHNhjWB?= =?utf-8?q?dYrGAO/ZZKSE++SgV2OoQf0fFtc1W3YuKNk3KSVuf+vy7j8TqwmCylnOjVYhFDJGW?= =?utf-8?q?9GsBttPOLEzhWhaut+9EPsJ8wqv3Rk4nK8EATYxr6v6hMooFJG9TrQt0Dsh6SY1sp?= =?utf-8?q?bLHgSOf2GRybABWIly4X1VCpHrK19Xob6Q0eI1jKcOqCaf891Gr6abyqtdF6gds3i?= =?utf-8?q?Vne9kcgWMb3cJY4GZlxF1OsSf7IScp5232hqi12NduVVRwMQt7QYQCIcs8ATkhIKR?= =?utf-8?q?42pjwrFmGgHeEPP7e5i0MJAWR5TIQfduayD+d+zZSKTC8erprmmXKpsLxXLZcR+zu?= =?utf-8?q?4Aw/vXiiAJkgGSSl92T1MZT9qDKOIPnvLhWUYH+9Z2D7GSZZbdYjaeZ7E0EouFI+5?= =?utf-8?q?pBYK7Ohw80hSfe0Apr0V1DmxbN7gxIRSdFeCBHzkDrprnRqrDD1C/cxymzGascPlP?= =?utf-8?q?8feWNBTFkDDEvrUu3tIFAcbaZ42d2MREmpACoOlQno6KhlpxjKU4yaLDn2jLbnBwv?= =?utf-8?q?x3vBb8WOOV6WYhIkkEBi5GpGSbRr1ehFJAz1ceHmyv7AcZmrEbqSUsmHGt5NbSjux?= =?utf-8?q?hm8wQA/Cn4BUHv/pFE0uqUzNmlV0k0qy229AuZpB1rBWkLbOaYhAWMjTsgmKWQtTv?= =?utf-8?q?eYG5/c34ssNY5H/FyPAw/XzVQzU6GsWQIV+j5Reak9Oq7dUWJmwm4eHDjzkyvXNrV?= =?utf-8?q?KP/2NsdIpgky7pQwrn0FlaUrFHwRNne0fpSg0idlQ4ooKYV/r1q2JnNEJ94wqeuiv?= =?utf-8?q?MQfVHtZvx5sKoqpVbT16b0J39sn9AFmmA0+twqZp+vO4enuAfmiBTYI/UwrUj4y1y?= =?utf-8?q?9V1ALYLfr0/9o3Cc5qM8ti+Tfeo+I4pAgWBnozmw4eqEGri9SJjx2XRrO5nAv1kaO?= =?utf-8?q?Bt6HMSdEiUMkPx0wUN8Nf/IpVO1bU8rQCRSk+ATRN2CkMJOp4fQmMW85/1ESV4ONG?= =?utf-8?q?x1Y0iOw1YigJ/TPaIzRovw5X0wXOPA9n9rR/Zz3eC7eQ73rH26311E8DA9zK8kDe6?= =?utf-8?q?nP8QT7YsTxv5Xm+kXiOkptTyDxN8SmLg/YD6Nk/ISS5jk7u5Dq2XWpigvBMu9lnkt?= =?utf-8?q?fvjP6ogPrgG3jNe1ZsnHPuG3L87bge8aqh/fA8Tz6SHPiSYdXUnxZ3e7AG8sHO3lu?= =?utf-8?q?Cq2RgCMV6bKe1pgtmNoEgN2skl+MVk78cycmue1jxNi98JLHEuw8JKQyHxakB91nP?= =?utf-8?q?EhSwqr0c7vHcjdiBgvkq2jsC8RU87PbexhxyLYH1f19ChLFC5VVlZNe4fW8IXliQ7?= =?utf-8?q?arZMQtwmTxLdGQvHgAiY+kLm/eNEDHracnMTbKWKObwjxxhgI5SoIEFILdnj8LxRF?= =?utf-8?q?1+SN8d0WxSa6EfQVgXQLxO75UUSf6BfvQlsrhN6+pIO5rt4pvBgMYdHud3NZq5cjl?= =?utf-8?q?gtKLV3YEKZ3j6tLmYql14CRJOAIqZVS5MxexGMxeGzJGDR9kiSVaYNo=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: 0a08e020-04fe-498a-e046-08dc74aea21a X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:17.2084 (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: BVu02JEEbSkBG141tPbXlYQgoygAgbwdc+7gXTkX2BIxZqYe20gBv8Ch2lUUrMpyFIvwOawRJG8pl7lMDPNxdkJaR89b/u04ijAYCmI5LUR/d9aWUif+hGuyHRYsKLIG X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/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 166103510e..fd4710ba28 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4341,11 +4341,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 Wed May 15 07:14: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: 13664767 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 417B8C25B75 for ; Wed, 15 May 2024 07:16:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qe-0004cB-4P; Wed, 15 May 2024 03:14: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 1s78qM-0004Yp-IT for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14: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 1s78qI-0000oi-Bb for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757266; x=1747293266; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=SJ1YCWl5qPAPbgtTpbIIOYagtuq+mMLnpiag2CWvi3Q=; b=pESl+BuWp7iJ826tKY5E9zFj5Xxe/W6U1+FVV5koEg/zrVLbh9OyOaKa nn/PSXi8hDaf9YBKTTfMmeglYZFhSinlMPgL1hR3n4BF6BptxjNFqUi3w y6En9IPyITmY2Qq3ULMp8vQp7xh1FEeByXOOqG6b/m9k+1dX+OiGEkWbf NQtYfkKlHbBYNL22ouAbOmUp//d1P2M8HkDghbjSSxZxY+hMzT+dQKCsM +MYuveIAYaLmLM5pVRzhw81iMayRNCun9nfhDTaOxmyJf5/9zRUEMwht4 UnBCYTgDr0Y4CbCAohAbYcSfssz4BIWZVzUgAX2d1+y0541A5gdtD4HXu g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581800" X-MGA-submission: MDHx4whN9SMVnaGGfYV6BBWX1XOENwqbVQjwRr3GMD/I9NpWYPl2iRmaeW0wcyCHKaOCzxu7/5290ykULNAyUTbFLU43x8ieiuo05xPzkASpAJ6jr+pBhK4rFNq0Wf6jWOOiDkQB2XbWbJBm0q5WSxsfcDXYUsC1+VCR+PxE4Ic/Jg== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajf136jKUmPKMI9P1Ijy17shvdhEFLSpYgfBehiDfwR0WKa4QqCJr/tcdJqCgwkM0d+C+bxDNFverjo2O88AMQV7pmOyT8KYWFwQYpUXeWJquUQJFHkS4I+f1GrUtc4E6YJpjxd4mziN0ZFqVlkYMu08IvDVwToyIZ3PCosl1WjcSgePIkOka6JP+ZQyjEMZJpI3nQrwERKmmnswFjal+6nlgCVcplLcbyPi9dx891kr+EgOgkh1xLlaXV1TzwkJ6Q0DPsoHW0Ok/t1+tqIO2aM4CMIEXqDIvmnQoR3IYOuhbcrzXcScaYBusutz5Qm26NDu1KZNeKVBUDgiYHlbzA== 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=GDNmgWlAXCTXodH+jvvFc+dgUHj4mZ6+3oh7x80pPX6pSxQaj2OcweW9A60LNlnXDZuBi3Ga83UroOSp6cPfLxrYo4j5r2HpJbMFW6ChtJOyhgUQYfoXCWAvpfbEiJYmVR3XAjtJfPpluOKyMdaD7IuwYzNDnc3DgmQS7pGyjLobVNHDYUt/U0rgKQDXNAbUFy88RhzXXFk6fXe6NHtvvIS8c8qoKdOyyKW7I6ZWzh0DyttYCJeuGoJHzEZn1Aqg1ibRnDPH7PxDVPJbjSLq2tYOuezUzpHefreCqyR6QXfGG83zOnVP5u1BsGJf5O+knjTE+um3r1St3ut2zW/VTw== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 14/25] pci: cache the bus mastering status in the device Thread-Topic: [PATCH ats_vtd v2 14/25] pci: cache the bus mastering status in the device Thread-Index: AQHappd/gqJL+7/DAUC7s2Qdjeq8ZQ== Date: Wed, 15 May 2024 07:14:17 +0000 Message-ID: <20240515071057.33990-15-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: d893a9f5-e861-4dee-a7ef-08dc74aea263 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?3Tw/CqwSfU9aKbthQThVr1dupNu0P+F?= =?utf-8?q?3y6JTOXi/Mxs9RPfvMOCTnXwHcOtIaHwQgEDzUjDJV/9WTX0Ic0DZ+0YyQNEAZY2v?= =?utf-8?q?ixlCEtJAxbOVJtgVyapcX1/gJcLFrMai9AXwnPs8zdf6KuE5XuETqMrlWQoKDyofc?= =?utf-8?q?VkI5HKDr4/oSrfmCii1Ex28hvJlgMyVyaNe5hr8nXMTxcvcz7/02+lxabRHWfA3zb?= =?utf-8?q?eCrkKPk6/4Hj0E8WEjKZ/epi4Zp+2ZbfL+otomCUdsFlbSd4gI0Z+r2YILiV8oCm1?= =?utf-8?q?5ufxdshn42h23m5ciPy4abd9g6SlwrlnJ7PYkeGhQ26fVIMQAd3/5io6NRQCWej/4?= =?utf-8?q?FBV9s607M/ZBiqezdKwuKUcTDZMSm9GuXtE4/nshb9bYq3zfUSLJkQc7HRf2lTydw?= =?utf-8?q?f+L7xhL51xO0B4D7zQ5XOXK4njLcnsz43L7YTZ0q8rNg6sv3/nADpnAlnJdrbcFmN?= =?utf-8?q?A75PAKbcyEBh7JJcWGdt7ZkzrliUCuEtpumevovqAaG76T3VrmFvheoo7sDe2LUcE?= =?utf-8?q?K2P2KvgRiLfJC3cmobum7hHTpvSPsYbVXHi/e7eAWIqkv4yfdGeGHXmDNR6DBLG1q?= =?utf-8?q?3MlxmUwZXGd8KW8va4m/x2924lvMhN8IQ6DU3TrxyWqc5w6RmqGalLHc6DjjwATR5?= =?utf-8?q?d3PloImzrhmj9RJBv/bXiPRaBgi1K7J1bQAUVtctxc16mHA9YfZ4CbJah9GwEf8FR?= =?utf-8?q?p1Rk8NUOE680tHJnneKy0cRdtw5AeripHOlVJSpggAMLxgiXRKn9iAIIM/Far4xSx?= =?utf-8?q?RmO9obXVOw+oplEiCS/p+4BpVd44g9So0FT6vIvmV1BUatgMli1HcAs5LzVRdSDKa?= =?utf-8?q?KM0eetUtARemOjjyAk/BhAlcaAJKTYijk2S116UPxIME2fBCl2MZJO6GuuYTN/tgS?= =?utf-8?q?0e70f/SlEEet3sHalqcYMzFly9jgwWrMscMmwlOiatGkBOxI4hw/Ug39buhOHqvBI?= =?utf-8?q?EKKEzosjrigDJFoodY1HVrkVH3EsptwNMkykEbfC9NudSlzC8L8zWl/wf5TT5Y7K5?= =?utf-8?q?bWAofE9vUtqqKFuVkEox9dLJK17+GJnHdZswPuh/dP5jov5NvmlVg/vyyt2xxx8Gr?= =?utf-8?q?AQ1yGK4nBt4ZLYbsxz66jj6OQ1XKyIt4vjo1FWn+lazzCtYtxZE0kyIvMOHwMhYPD?= =?utf-8?q?lCMwtNSbmL150mZcmnojdwfQtgao3j9PIeSaT6pmXg8RVubKMF1kFdQOWxQeC45Cu?= =?utf-8?q?Bpp+13Pgoruf6tcGYYG9ceoV7OkF+JqsTUWD649sUaaFkDriGsUHzjfXm3+rFp+K3?= =?utf-8?q?qFCxDunFWNsES5STyXcID25a/2Mb1pwbTzQ=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Ef98th9wtwqryBt/l6V6+mVLDSLF?= =?utf-8?q?a0Oy3em5+akp+jSMTsaqSzR3g0ZNerGM5vE4v7YRCTb7kh17VOfNiQftkZjaGnv/a?= =?utf-8?q?adK22aBynkSqZvz2m41Vx0kVN5i6GwEpKYwhlqqxRT/+gN3v7xDc8nCa4v/sAyqUD?= =?utf-8?q?VET5Cqs/p7bW7xUpH/f++6xszKHfVkkjfGHTMMqSz6+V6UkxmAugtlQN7Bm13ceMI?= =?utf-8?q?I0DAViURATFVyQrXNgJ1RM88e4pMP5ezLHALmPB9UBjNneFrSM0LHdT3Xy+juJWVM?= =?utf-8?q?C1JjgvWQdncwo41s1mnxtEMOYJOcS0UGza8CyidXCFpEmO6XGaIB2TVBhpGvhKSnW?= =?utf-8?q?1BNaJYyfmnZwIfRj6hXNk7CT7lAVAPajWIm4Wi2inwCA9Zg6hbm3WNG/WkJMcrmSf?= =?utf-8?q?HCXus24ibSVFAgB3SQSmXnU/nxE9OEvQlBHuOBsvlE6DEzKFmLqidzIo9W9yevUfO?= =?utf-8?q?YjXBH/LFDQ4oPdXeOZRBlpVZokNXYIcxFR4qFNTTdOHbnuYziTKBwkOLNzx1SbPCS?= =?utf-8?q?t/fCPz4DP/Lu0YynlQ5FqMS75sLrRlnxGbMSLtIg3FvcMcEhoKV4YxsK0nfKWY4ZF?= =?utf-8?q?IelD854vmQf/kVPLho0VPifuMu9SXJ8XyBqBLBi1Y8G68cNNFVBqD94Oq1g5tjfxs?= =?utf-8?q?gjAOe/DtPZd5aA2Rze5WnTWvpdS1WFRbZyXuOK8dEhuJnhpeBXDKNnNbmENoPVUeV?= =?utf-8?q?dnms6Ln0HXit+EJWb3sR1IvSS2bYqbRBIzHwEhhU2KOzJpDL/uhx/fEFFyw2LtzaG?= =?utf-8?q?g7X1hetU4C0dIfA9rtTAR+VPOpzh+KCcKNVMdC3QuZb08FAIkHX35w1waPeINWRrb?= =?utf-8?q?3z7BFubtKAGbBOYNCqgvP+0CyvyXojwPbDhI7OEJHvbkYV7zDg71LjFbBuSwBUAB6?= =?utf-8?q?J7cbt2Aku14SCcAJ/67mZUTexHkpLUVhTPFeAEDtlmtNI1QPHaFoWz1a4FVtzkOCV?= =?utf-8?q?rlX9+LaTMeIb89utIxh6gKJuxvDNcPFjyMwlFCn66r+xYJWEaH9GQ5xvkY7BWN1+e?= =?utf-8?q?Nnk5sTR4KECZIZiC2EPh/2QBZHkOjlClc0HsNJ2K63wM2faN0EcYL7wKLmiXZk3d+?= =?utf-8?q?fyUQv2LPUR7CtlZwMGpRysytzuuYIdJi4HNAYUAjHH14nRlmsrJVMDU2uH6Q7oGgV?= =?utf-8?q?6HYDtkdaxy4aFILia3cjt02aQH6jWrHeRNG02CRwAPD9qSUWwkli9RMHmLjktKCcS?= =?utf-8?q?XY3npTx6m/6vMcymX3ZYwrv4v6/hhNyvMJLiYDikSBmzH6iu8Ojw1dnfLIoNeDLUt?= =?utf-8?q?RIa3upFT4hp4qL1lrH/WTibPcH6JRl2oucLcUjsYzTcJdI20I+lertNYaZFGTIolc?= =?utf-8?q?gt1AeU7Nxybj7kUNo8Rr581YgeSpqX4nYSXSk/HyMWKqGQkGnLZc7Ip6vMRr62WiI?= =?utf-8?q?s8ufFB4mt/EkygiBCxJx9ProciemXNbgEvEn6Ioe4+KJgimr3Y3U6mUWinFYOJeLB?= =?utf-8?q?vH/C7KrK1Fpe7ztC+m72aR0VNnwMgBQ+KIZGh4VgkIo8EM9Z5RkDka3x6yk0QMN5z?= =?utf-8?q?KbF4EkZs8oBSbQU9S/0vWbZkvSwIZsz4KadCoyDYOHyNacdBx76hAao=3D?= Content-ID: <921FC55D6BC800498C420BF87A923D17@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: d893a9f5-e861-4dee-a7ef-08dc74aea263 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:17.4443 (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: bGzeTpUmP0lHsF5qXyxYDBj6joEKFJ552y5WQkPdBYMgIc8UGO4k8pmUSi90mJdz2xUyRNm6EMieeHeLNhHzqDGG/mNk5hMEXSc90sjezifmZORmS+d5wmPblnIx9xc7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pci.c | 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 Wed May 15 07:14: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: 13664774 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 91172C25B75 for ; Wed, 15 May 2024 07:18:10 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qV-0004b5-T4; Wed, 15 May 2024 03:14:39 -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 1s78qM-0004Yo-Hs for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14: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 1s78qJ-0000oJ-6w for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757267; x=1747293267; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=CNQP7R4fixHdItVjQquYDz2UpGFCRNezXgcRL4ypHQA=; b=L1Qid/DhN/JFh1XuRrnJdWH218XZfDl7VMsKRpFzc2MJDxLfHY2BQe/e p9BpDIR075x+2p3Ov3bWlviiz00qT4YXEBVy27Ao43b2ncRrLzNjL+RzF wdMe6gAPrhFq49GE2uI9GEZiW44GdJuoDV3CXudmv4qIybDoc6QXFW/uj 7aIjZwRFZZuOyLy9hfp/sVmr5vhQlva9SjuCmm6K3Ab5gYwXokPmAkkCH XDXjXdwClg4bSqG/xGucEYiyRn5pY2OKVFP171hPz60FfDip7B45Ls/i9 WEPOkBLXBDyUcrtuvrWVLFXNVHkYbslBRnyB7iOZpW8g59j3OSWnWKTXM g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581801" X-MGA-submission: MDGzWYzx+ZBs74ExwzoC2n0zvOm2dr6+wwi4ZwyB14zx2XCUDi3ZSwGMkL+064+cVTawLn2Seip//zzeUpQHZX+fFhgH7T6O5QElNFacNPfaYCYCJyxigoDz6uCgmzKiLg0pmNtDGD08loQtiwLM86g+hWbkp7KxI9+2ns9sZm7sEQ== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q8tTUx2vB93cSsxOuL+LLswWgEMrXnilxw3ghFKw6awKTRmv5Zp9ou2r8BWR+njgwgYkn2ozgtywj11iAHumrV2eGW+o2mSwbpgiU8m/XyLn0UI+AXLGP9i8Ysxlknb/Q04FaEPJG6nCxnJOBTq1PE/hpXMtdNJpTVotM0oEJqvCSdSkKA9uNg1RX4KnUoMlkVYVjC8JBnnZB03VSOqt3EnZtQRXZzmrlPXzml1YLTAegRk+lH96KK+bVgqHsxcdHK9IM7whq0YYe4Q5lLYBxtNddFZQ3tRdA/K1EjyPOqMld1dQvODG4WIB+oFMRf6b05MiSuYcG5V0VB3trvB/NA== 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=CNQP7R4fixHdItVjQquYDz2UpGFCRNezXgcRL4ypHQA=; b=I/34zxpPf4g2YEDvNxS2ZsOXsAAY2a9QeLarvPHfEClt3Rc7/JlyOdA9SDtjs4ZaAKCzKer9xw9LHBapKdcXwb4naaT2XIg1wdbgce7h9FVw7s/opzUa7eQBGz9sFFATvkS5Oi3O6q5oFJN/WfNH0aW69NyBR41dwSJ9XMJFj2TP/XnIvbEnNDzMIHNJMgl9xJdy1W3t6xeGb6irCFTAXiWV1kbgqwbLH4racdEwE7yAjC/eV56Z0lERZ9Zo4wMggAvAQYVAs2/hKBdkBmm6dT70aMEGP+mPoTEtU0B5IY1zknVZzMvn+itPSUxIiL9pWcLz6//IQ0Z4XJSc9tnPgA== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 15/25] pci: add IOMMU operations to get address spaces and memory regions with PASID Thread-Topic: [PATCH ats_vtd v2 15/25] pci: add IOMMU operations to get address spaces and memory regions with PASID Thread-Index: AQHappd/2MOZbvh5B0+7dA4EtQBnhA== Date: Wed, 15 May 2024 07:14:17 +0000 Message-ID: <20240515071057.33990-16-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 45e37737-7c4f-4599-5353-08dc74aea287 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?iTCqXkuGshL5QCDkKWBK3txF2PMUYyH?= =?utf-8?q?l3k3QT+wUb4pNRWZFUluFi2szwEDF/LVPUJjwhnnEky5WYPevdOkVQb3W70cR3p1F?= =?utf-8?q?+Rl1Am2D/lPzb2xqVxLpoIEHVtYUe+J4ujguPCxkaW6ZihcOXkLNZ9ced2e6D31zw?= =?utf-8?q?mxaLPWthEYl/azC74DHz0MiVRke5cpofJbVzZ5FuFnJveGyT5Gz96u7JN2geCtHMw?= =?utf-8?q?l2c197XXEKpfWvQs/o4JX+w2SHdPtyT4RS6Ow7XVVeLFdMq7va79UCML1nRgZy9sj?= =?utf-8?q?6YEkxRTUiLZSmEf/yj+Tv8X1lRdxAatNY2V9dzf0t4O0ZDv+lLIb1SasSxepuCoxI?= =?utf-8?q?eEPTes6+GRd5ZvNSRgWZO2gUpr5FEIOZQIgRBFFhfp2Z3HFAsrxcWFzAaYhzviirp?= =?utf-8?q?GTUq43u2OZ2+d08WmQvsErDL37sqoTuN0OntGFpR9jO/U1bUR2mkIZZMFe0/YgOv/?= =?utf-8?q?B+AM6StYTxQu1pQLF4SPTaaglaIrOuOf/F+L6SF7/BrTvyLghVcCFmUUM0nnGOEZR?= =?utf-8?q?IZi/t3Ej6PhD0Js+0yfmBwOWVIs8srU9Rtb6gkrAV7xNRa7bbzVX2D1YQqCsNoSTg?= =?utf-8?q?7zYr0FYIH94WvvcPt31nYFr3VuSrKre24bS47tdhPyvs1bLGxGA8ql1yeEg1qL0zI?= =?utf-8?q?GMkPOyk2demAuWLnRqZriGDApXxd+lA4nKLUrFmGfBEwX40HhRZ8ejRa7kX59wTVx?= =?utf-8?q?ZLjRKFUBWTCWMcUWUh6hLaGvmmVkOU+UZSRM614qHJ6s0IbXhcf/GU8l3+HgGSJDR?= =?utf-8?q?MRRl0lE8VV1BCIsVPTiK/wTxyn5c0xClZ4XaprDXAUOy8WOJVNJxCD0yWyoB2h9Cu?= =?utf-8?q?1QcFLbbILaq/HVzFL+A4JcbQjCx8OSBKoHMMnk3xxg4AHjDsvmuRlymns0h3XMngs?= =?utf-8?q?X1alivkCElj+x7IchbEEqmLnricebN0daaXslqTOFn9gsltFT5Xlnfn1X+4jflNUl?= =?utf-8?q?RJv/1EJ0fIt4BSAAqqwX+0zr3KC792HElEbMePygLOR799C6NtpuROecBUfMe8PlU?= =?utf-8?q?HzT1UDMkqaaZ3dbV6J9L3TvdoxwDdcSj7jMiiY5354bGcQw1CS9hgeJaFaOvhbsId?= =?utf-8?q?sbXnvyYT7PkfTd+o1doPKpXY7FAXc798tvvcmRjoZqFf7bJlKt813+2SppDdneBNH?= =?utf-8?q?FsgleH/Wy6Yj3x+Fin8zBlk195K4AP2BMxL3m6ZmPL8AHToCwq57vIk83mfMIoxBy?= =?utf-8?q?6FQClgVlUChgGrVNiyD3inHaf8F7XeegFt7gI3H0b/xb3Bp9BsNToTLm6fDUgdxIF?= =?utf-8?q?/C+lx+uVHIR/ip+k1RPcckJNQlPo/WGtQ9w=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?dwq89j3arRKK+vR7lutqiG5W5YnP?= =?utf-8?q?N52A5w/hhSZ5yDQGzn/kCVWstM7fJ0FMppck5IrRuDV8Sjq8auVr1KV0ToFg6n49B?= =?utf-8?q?FiE8DAPcWIZ+qtaeUGEhbTnWXQk72qQLszFlNF9VyoYgiAlyGNGXRVxAjStfRhCVi?= =?utf-8?q?Wkr9PBHzgJLfJF9h7kmJ2TiWGANh0nQdjqi1I042L+QXmEWpdHOTRGsWZPBVvsPT+?= =?utf-8?q?3nPjIfmlznThQZY/toD8X8HAY0rTKwrm281wwVTsWz8M3dElUNr+ooWtiMRpmx1Wz?= =?utf-8?q?45zg3vTiPypC2eOnAPwbVyKtQzzLX6ajqFAGtxH2Caqlmc50HIXLMoIFM4EIJKjOC?= =?utf-8?q?bf1pP/qCxkc5LNoVAdRqSzw3FSu2IsDbt38OW2eBQjgQavedBXKw9IjQyq0VKb+si?= =?utf-8?q?2F8OQxTioMkvxKEJvZ+OkE6KuV0CQLhzKJFWnH0EwbxVb1jPnFRPuY3a5+nH+TAmQ?= =?utf-8?q?LVzsYzlp7StGJGZmb+L1mRd2gM7RV4SsuFFbTbfEfjqQ154gbUuvvaTY85rZLwBKI?= =?utf-8?q?WhhWCaIie/+Zl9/du7w4UF89F3P/xD9zyzSz0VEl/JiAoC04+0dMYo/hxQJa1WQ2w?= =?utf-8?q?pIll9GWuaPjlizkWhTkM03Am23SEbTcRfYP5AGtCOs5XPvCGfPd3dGefP/oOF4Zan?= =?utf-8?q?4wn6Z54DEAdXK/M0gWwm1la33wiQ4/jnCvg/CAEwXXfH1GZqT5qgJOJLUGuK4MDQu?= =?utf-8?q?SaHInA3Q8TbrwNMHmlaRKUTsUd7tyydMe4NAjwfg9WZUJoPJ6CvRhzvraamKjk0Kk?= =?utf-8?q?Oa6jDNSCPbHcpjLasnTxn3MuMaIM5lnul8uCwazMy1iA+1xjFNKuOrZHJ0AC2J3tQ?= =?utf-8?q?3pK/vHGHLTWS+ejOIi3Rl5e94XZou8sRKKc4tzO6DIpk2Opkc05VtZuLdSjgTkm9q?= =?utf-8?q?F1l6YCZCTtFbpFgRva+redz0ZhKifYyACc7RZPQ1RLyM3omNkNH006Wfdx4oGlKiu?= =?utf-8?q?kYaUl1HpK7qu36kDW+NeaCsxfkinTYHZelN6XJ323A3SAo2WODtGrwUOVQD0PYlw0?= =?utf-8?q?13GtUPd+rt9rSntbtXAZ2XAv10z8lliA4Gh2YiAT1o4KY274FsJhG9PMkA79oScAS?= =?utf-8?q?L6TWyc5jlsO1/TQyfk9DvSw1iPHwQsiKKPYVuEPJJsFrO+o6JobG4fmryPOHY8n85?= =?utf-8?q?W/tvTyHtZKSKgmiAXL4KFrMM1HV2iNJBcwmdxHky0WSirnI8iZmBlhkgyvhWaxvaP?= =?utf-8?q?1LP+LcPLKcS/c+gWP3ioJSa4inuaXhvB2JLisoQ/hQXz/r46TOGPxC86i+F0qJM8d?= =?utf-8?q?0O6byxinb8s8+L55123IYHV4nblyJofGhkc4yLMzK5KGHtPZy7t1S4mQuyCd+uLKI?= =?utf-8?q?e+FLv8X63F8U/F7Zjz4iumfT/6k1661EXtc27F62QjnQ3GqoMvNk5RR43qSzhvPKf?= =?utf-8?q?5rNk4ySM70WKOgnDicqJROPTnZ1P9N0rEdbV7rp4x4EuBKsQYTOyZUY69X96O2JMg?= =?utf-8?q?VfNn6AxfX0+eJ8MZlCWvi59chXWOebn4F9J8i4GsxzKOJs+OQu61lwTRRl4TlLX9K?= =?utf-8?q?neiyxq5roXrStLmOKu3V/oP+yca7lBfTA94l1xGGJfm4xId6pTaFsMI=3D?= Content-ID: <511425C4B0282F47B65070D935457777@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: 45e37737-7c4f-4599-5353-08dc74aea287 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:17.6735 (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: //EFfkeCsfCSDi2iWHQw8feH6Fj2N3O7bnuwmfFQB2BvNZhQseyw8XJnlvwjrCUOj5seyy9gj9u6l4RWZbLVt2LR/o2jhwEd1T+hKFAiiqLZ8sMdrPlo/buqLD+izuwb X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/pci/pci.c | 19 +++++++++++++++++++ include/hw/pci/pci.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index e5f72f9f1d..2b42b4e4cc 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2747,6 +2747,25 @@ 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 (iommu_bus && 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 Wed May 15 07:14: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: 13664734 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BE3B7C25B75 for ; Wed, 15 May 2024 07:15:34 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qv-0004hA-CM; Wed, 15 May 2024 03:15:05 -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 1s78qb-0004c9-QA for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:47 -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 1s78qM-0000oJ-SN for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757270; x=1747293270; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=8grq/D3/2ZZYyfmF7krWIJodD2cmB/YeOpbkvdktkRQ=; b=hd2izDj7c1Xj+fyw8ZNgP0BC/IGpXBgBg8Q8qgWNhcx4wDm/5/noEFkU mbaePuuJrURnEYPJQXi1oU1pOOJ2LV8wK2E8gzoMzK+VHlbjL3E7Kidna Y4zbmDGFu2coiEtu0krMmGMlW+7q+RrJQlm8ZCg8yZulzyymgjkjYaK2D 1EvR1VfX50nH2KBrpjtFheS5JRkcq0UC5ZKi1UnTgW2YRNnXefibn4vzZ CKuZoMPP2tM3W9ka7wiKMGcaD49Q05Xy+UvJNxqka0EI4kNqk4wkOWjC8 SUMQ396WLZfhKIsoKCGRLO7XQmXC+u7cm4KDakaWJkYog+mIm3y+j3tLG Q==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581804" X-MGA-submission: MDG1y+UdqLLOfxbozO9ycBp4QTb2hQajx5VORdR9B3hSgSEHLXLcnPplE32UbQGKix3Fosjf4YkMGXzac/GGz4fc8VnnhOVv8Z0BPK2WcgJ4CQFYhJl1IfdF2IpXaLqPsJQb20rjgUkBcdK18CmpEvIJM2HcnCUjIzwoxtklv/P3Ng== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aEdTi/xeZFyAG1eupNrSiXSC6Zw+YYjszvUeoQ1GY1hEJx+kPbCxoApmB7sOgajPxhMoCqrOPgwDPyCzfZsDVZWmXko0UgzgsSrS7AO1rzit697ig9ANbBYfMaOvC7VpotNoRTtY6I3dU/zLVxBmzrTHHQhoo1BkbSsoW5U2EFZDvlR7fUgvDRECYbSZRI9W1bjT9r/VHErZbyYItdyqTG7i6EtjaZN/YpWzCVTsIMIeeDANdDPKIcPyuP/pRSHyBTT3SFdGYvLHGtEfHmWHp3OpeQQcp4JLHCmT7L3qbbaU1Ul2siIhOaxjxqQ/Eh3NzF7Kw03Wst/HEaCzBBCWZQ== 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=8grq/D3/2ZZYyfmF7krWIJodD2cmB/YeOpbkvdktkRQ=; b=O2DgQkYvkwpp9S5EcY19CbQPzucsCpxCoNAu50difO1cJWso15lwM0nwTvxUTi8KBN6gRYN9BDa3NSm+w8bugkOqpM4S4D1cUE4OadzVN7Ah21Gv5JhC0N0lbihO2g/xlSpJcZHLUJx2SzsGxud8S+RhAQ0lUOi+Ik4JQEND8se/h36ylnTKticuiW2GNOd42H7tHleqi3HCi8Tg//BEmMGeNW9V5LsNsuEpnF13bEiUrQtAhkKEOG5liSy51aPdKiiakzh6v5pZLLarJ3Kq2QE1nfxQkR+4/v5o5hHB7f3NJJYTG79PaKjpMOruP5Vx6Jy1ladyPGhpYvsoWQPAug== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 16/25] pci: add a pci-level initialization function for iommu notifiers Thread-Topic: [PATCH ats_vtd v2 16/25] pci: add a pci-level initialization function for iommu notifiers Thread-Index: AQHappeANlzl0qOEI0mcoeWbkElSrw== Date: Wed, 15 May 2024 07:14:17 +0000 Message-ID: <20240515071057.33990-17-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 05d07f11-dcb5-4d88-6cdc-08dc74aea2ac x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?YmAnh+Nvg0Z237d2942eH4I+5B6ZQur?= =?utf-8?q?6TdF0sQGzOfiMJzmldx0N5+PEFZMEV4R7gfxz6Gsmr80gHB5mQcwXlsYFcwy+HPxU?= =?utf-8?q?gVnLPMvqmMQV3ewYq8Q1/aKFD8eiBBLEa6bmFa4jxK/zXMbtzY+w/DanvR3qCmmhi?= =?utf-8?q?JBGVskF4yH8bqE/Ez/xt/Q199c+8ZVJUzO7FS4gvOxDhQtOZwfnUzlgysD2uFMBIl?= =?utf-8?q?jLCHywFibUslu8s5nxFEYWj68bJYgMyterT3MyRaTBWS/QaeLT7Mg/A7IS2wAdfUV?= =?utf-8?q?6Q9wQc3Ynms1G9iAeP3yU1pEwqQSpyyb7iNVvF+1/h4eB6Y+fQqU+PBJMgkd/SXVW?= =?utf-8?q?pX1qxuAkG79yPhWDesIDcap7eP58n2z3cEGLb0rEIM+EfS62lOrO60THr/VHAtZuq?= =?utf-8?q?s77Sciu20f5CCxLSXl9ix//3S4++83YrlQY9+D+faNHTAkYdTrCGcErJFv7+cJhZC?= =?utf-8?q?cFr2RPC73wpEBYtGWEbN/nDY4qPb743/oABJ3LPb4ajiSZERv6ZBWdBp3TeAkd3TI?= =?utf-8?q?8/70B27dYZElJGHuG2hro2022EYB7ChMi68tn42cx2DopIplENw/HGm0UAxlrGsIC?= =?utf-8?q?JzAN/1hv7X/gRFN4MGH8qTHbrJBkji4PcXOT54lMm0fSuUwMSi2tpj1TnIGp0Hdl1?= =?utf-8?q?jfMBkmbjtn6mYBWslYGy3pBayutCl8cb+4XLP/x9ho5MphNMUCe8um9TPggbDY577?= =?utf-8?q?q9wvf2dfqtVszQiQWRhjJeQa8hF2erRn1PFtoMkZW9yOTQagVd2PUBxKjZY+IQO6l?= =?utf-8?q?kYDjZ9OCmsn550+RfY+cXvcfo5S+vs66nrgofS9DyKHiUn8uAP5AsGQIr5wi/TIEf?= =?utf-8?q?Cnm8kVUVIKTfSs30ftWTJkQzWLHBR6X2P1CtSOt4lezOKo8s3viAV8Ya+z/RM32Lw?= =?utf-8?q?Zta4Lh+XkTLigesAVT9AECZA0Ggu/nTRMTeyAbhwGJ+DC6QcqLAOYLPvPm0xrXhoY?= =?utf-8?q?PoVPMuv5fFbuLsLWRwBw8XkU7nzQgqk3t6rGZ+Fxc8jbp7W68KBsWBRO8Q1dh8NDC?= =?utf-8?q?5uLXrlADeFMf2upGNE9s1lguv8qdv+yiwrWgdgJeDG5nUxlefdt1XB+HdZfxwnRPa?= =?utf-8?q?6i9KR7dy+j3nftj0a4qOTT2eNO3tBpumoStFkcvyx8BbFR+XL/ajhPhalwCHkEh+A?= =?utf-8?q?sD8W/A+wvnU5IIAXxMPtZD5VzpOBrulgUTdCL8HH/Gca+TQczOkL8OgstRYql0mv4?= =?utf-8?q?XDf7R+zygobHkzdjbEOxwTz5lsE0xjjOdvbP6pTlToJPBwPvyIh0+qcmNtvfMOOyq?= =?utf-8?q?Zku5nxPIxpem+m2lsRLo0uIIb8vMsV+ySdg=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?X0NlPik3yrXHkMNId5CzhiTzyJFs?= =?utf-8?q?glt0ug6fSKbvavJPttK+HDc2KOYXMoYAMgXHQjDi5kYX20qSBIfePCC9OE3wDuMZc?= =?utf-8?q?STykxLjm9kJBUzdhu5e5a5NzfANdbdWV8sNTXCCzJGXrMH7DpG80xLl14zGMiFJvD?= =?utf-8?q?ZBDF+qUfHqDmK/0ARqGVRe60crrz6UMVAbBS51LvcwuIxfTQwiXzmcntYZu+K3PDV?= =?utf-8?q?7sKTrk0RxAKZjg/CMbtsMiok4HS6+QtKmR0JS+tewvhEJxyTtKEwL7c9NAcYfFiGl?= =?utf-8?q?Ndn9d+P1MzAqI9Grsn20kX5NHzU/1de7aGyVdEdcP1YXxzg+CS2iC18z8EsNE0cHa?= =?utf-8?q?6iYPwT/XrffF4FI0L1BYcoG2DUJFQlYhrp/4tEdVOu33Q5rxHNgivbNQ/VRf0dNQN?= =?utf-8?q?ybQodV7SYCVyWxs/YtTKNXWXUEmIzrdNqxVPVji5ShMykEq1cN+eVUHn9J1kzGMeP?= =?utf-8?q?IvA8/bw43TU+DvwPt27ia52777E61xSHW3wjb7wguqhgO85+lutbLSuhHTqAwPsfb?= =?utf-8?q?Xa0HhwESF6neg5x7zW4fMENUso3VSXQod5iJVTJqd2cl7CS09anIV89hcyFNTa7tv?= =?utf-8?q?eF8nZsFJ8VSkSPblCDzGaO4B6QpgbhMwbjoIl0a70NkC3IM10w8IiTe7VFni1zXEG?= =?utf-8?q?LET9LSBzAP2DTYLiYIhlvtgXTM9xCxk8y5g86+kUb+3zcp2pCOM6bLV3gd2TnSrAc?= =?utf-8?q?mG3RiJG4FRb+FsZMSDN1+k3EQrBT7fO49sQdCThKP+d0bXDUtx9F5v/0kqfWAK4tD?= =?utf-8?q?GKfBRo1kiow64GGYM1KUHrgojksDWUuKaK53NZ+2AEOmyBpu07nKdooI6G12a+uA2?= =?utf-8?q?4J1U03hCWNgQCf04lNFYlYjqK0kXDCKJFem4oE0PfbBZwho9RoCUDOAJXpeTp0uZj?= =?utf-8?q?gUIpjrdHiVLtSz0FClGFXjJCtgi6iP6bNAG2mNQsYv0UantKyPbX97rBRgWlvBA+G?= =?utf-8?q?fofRPksL65tUQnD4YFERrbIUuWTug+tCK9Bh3OxhKvSxYanA+1Z7b1G0SpOFezHpO?= =?utf-8?q?lNaLqco4QA60WaIgZtG8ipHBU4AO6kEYC53LJ5OH9cqFufx06txROVRoNNj3DctNN?= =?utf-8?q?NoyYHzGNKW3ePOceDc4QjRWws0H7KR77MrWDcTD+IC9+29kkF4Xfse9idQuswZAy7?= =?utf-8?q?nyTks1JXucFSG74rMd41nSqREWUrraKZy58Suwj59xH8Hhet5UwdeRcdRzuZuE5Zh?= =?utf-8?q?du6WsFBLDegeM0bneEOghydk4ftlRPVQMd+vWgNbb2yN5sQaMyb4ZmnURhxE45VMy?= =?utf-8?q?FsRKVwgta/IgsugNvYg91MUMW1ajULyRmlYmr8Zp0z8sWmqrlxp7/fNzr+O1VaiVE?= =?utf-8?q?IQ2ToIUBSr79EknZisnfJU7oE4s33jHT2uSz2BYKvwuMyMG/FhhOcc0Ozl6CrXhTr?= =?utf-8?q?6sjTlkGpytMgA3/j9oLdhanm8e3H7fQNJtc4JZXDm0U8FNLaBggmQJKhjg5f/NgMO?= =?utf-8?q?/hUMUP2apjyVrqes6Zb5/Npist8FHluPf74qxOfyENzNlhmO9SyIwBALr7FO91x2l?= =?utf-8?q?lMrb1kvXKDV5yZAncvoMk6R9rkd7Oe33qI8ByeqqriTl4k4y/QDDl6E=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: 05d07f11-dcb5-4d88-6cdc-08dc74aea2ac X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:17.9150 (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: 3cheS968gWWZ1lkkxbNkZ+O1H5QnDNMyd5TiJCVfoJw6L73VPnhwRHE2vu7a2gt/kY5QK/VI1zwvAWxW3BgEKWeK2sPIBB36y9xhyvk5QuXcq5EAqFPSFE5Hjxm77c6Z X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 | 38 ++++++++++++++++++++++++++++++++++++++ include/hw/pci/pci.h | 13 +++++++++++++ 2 files changed, 51 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2b42b4e4cc..f90eb04fda 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2747,6 +2747,44 @@ AddressSpace *pci_device_iommu_address_space(PCIDevice *dev) return &address_space_memory; } +static IOMMUMemoryRegion *pci_device_iommu_memory_region_pasid(PCIDevice *dev, + uint32_t pasid) +{ + PCIBus *bus; + PCIBus *iommu_bus; + int devfn; + + /* + * This function is for internal use in the module, + * we can call it with PCI_NO_PASID + */ + if (!dev->is_master || + ((pasid != PCI_NO_PASID) && !pcie_pasid_enabled(dev))) { + return NULL; + } + + pci_device_get_iommu_bus_devfn(dev, &bus, &iommu_bus, &devfn); + if (iommu_bus && iommu_bus->iommu_ops->get_memory_region_pasid) { + return iommu_bus->iommu_ops->get_memory_region_pasid(bus, + iommu_bus->iommu_opaque, devfn, pasid); + } + return NULL; +} + +bool pci_iommu_init_iotlb_notifier(PCIDevice *dev, uint32_t pasid, + IOMMUNotifier *n, IOMMUNotify fn) +{ + 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 Wed May 15 07:14: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: 13664781 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 45A66C25B7A for ; Wed, 15 May 2024 07:19:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78qp-0004fi-It; Wed, 15 May 2024 03:14:59 -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 1s78qb-0004c7-QA for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:47 -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 1s78qM-0000oi-SC for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757270; x=1747293270; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=/COy1tTJqJwtN9l2Q5BDMfmJb/FNV/tBPxp5I1KxCGs=; b=IDCYf0ntONvWIz8IYPGitR+6cmNVPB9eE4tldIWtwkZAPWvDuwf0W4yk 5nSEpHQFvf6kD3yKwGBDxmm1qnRyPG4h8RuT2mzX4FJDDH3M6zJaTSi/m quAz8EIYCYbzlmQEFdkCO6/UQdyMT0/CAAsSdF0M5TSrfT11OgcMcUrad nIlmpEV7px28SY0gdhArmnboe0J8d56HZHTw5hJTrofXAo0E26FyPfOdt S2fxB7mb/7R5JittyIF+Qn9x1H045Z0/xdIq/aXgAdqd25ti+b23BjzNA uR07qzLv0DKbXndKyvVJ/Tu7RZ0Wb6TsXMLuCO68g0ZbAYXaNejN1QDQH Q==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581805" X-MGA-submission: MDFbOrYb7kZTYiUhdphdjjx/oDzqyGW/1jih80Za89E3kW2DyC5UlAfN2VTsiruVbqnUWL7+7nM32vPirwhSBRSD3U9czZ860GYdNOejKpCYr4V46WwLy7nHwC3b5KutyQ8to0XfQvr3lcsg5Aq0RFwuBufMetrgyUE41AS2svhTQw== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:20 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GLaia+ZsniCqMcERfATif4H++PkQKDi0+LKQonLV0SfmZlWE4ahe/5bEF0PcZ1/dwZuEkJg8xCZ+haqibNU29Mg/Jct5XRhSGReapE4W9hlhiMVq+DwhESZi762DxvKi/HSx+1HlNY+eynk+qd84/j4XtRNVkimRQsqoyyURi0dxhtksAjbw/Dq3gQL4wVHieA29rYqArRWHaBcCJszwZQceOXkaOL7Pdum1f84kAsbHG8O+PAldGDwJCP8i7kqIxVdOCgkg+/cmoJyy01rMiPnzMssj0wyGMeACWjvmiMoyTrahrknHTFPk7aVgo5qx1rSb4pxU9n6fOQGuLBLFhg== 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=/COy1tTJqJwtN9l2Q5BDMfmJb/FNV/tBPxp5I1KxCGs=; b=EyUdyHSOmPYLsJsh0wotdLDBfLgRbcdV4ierlsNz+vNE3Yq2opP5M55A/uaS2QzHYsR6FuJ1u+TTPw2UpBy3IeMrvjyKy15NPoaCYYKZulUNJjk2UCYkRY9Q1Ys+uH7HYzW84YY38rmhWNGfNZImRec1gbIdg1OtKTa98YKrJXqu3yXiiJfbxPi/RdDulWTxfQzzOqM4u9sKq6jVDBom3P7YoQpfW498SmRp45aNupk1CxwD/Rp5iOVdkwcZPIbenqh/7NonQ9RBQdOZnzEyrA8MvEdV6NPRl6awNkOdQ1ma/E6alLg6FwZM9uW1FWlK/kj3iC+xwsWopsPF2naxiA== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 17/25] intel_iommu: implement the get_address_space_pasid iommu operation Thread-Topic: [PATCH ats_vtd v2 17/25] intel_iommu: implement the get_address_space_pasid iommu operation Thread-Index: AQHappeAHabkT3s0Z0KfBt4GrSghlg== Date: Wed, 15 May 2024 07:14:18 +0000 Message-ID: <20240515071057.33990-18-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 683fe7b9-4d92-49dc-95e8-08dc74aea2d1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?ubsjpfT/fR2+jwPModywA+i6i3yMtmz?= =?utf-8?q?/2vkXhzVYDu5A3WJDoKMX1NENaQBU5gUvLpWbRJYVbFBsVtM2S4vHbrRZDECP5xcs?= =?utf-8?q?rns1/mhTIYCx//6WeJLUt4x8AOClphXvlrUkxjL5LCVYarQNSfe0sEjVq16/btwji?= =?utf-8?q?pwFSgI6E59rONxDcpDWGvApzmywEyHfmaBAPKc+yKbWc3jJzQTIGAYigW79hFmF3b?= =?utf-8?q?6XfvGilPtyMzMeoUP5Mub+XxDR0S2moNUN+XsC1RPpU012V/e6OhszcgHGNqFQVOU?= =?utf-8?q?1T6hv78KOxPBk+rB+BXwFngL03nSvvdNLVQe0InWAemI7clLIh6yzGlyWN21xGLok?= =?utf-8?q?7JfkCWdSwOEZtPjwsR+4siLjZkVwM3oH1tjPZDCsl4rHcv/0rMrPkTQBjx7ly96Wl?= =?utf-8?q?4JsEwWzBO9JWy2pmJGc1wwJOPPG+JW8qstYN8WtpNbKjoAWcPych8NUzK5Y/IhIbz?= =?utf-8?q?mFIi2dgVkWXTDjb+wyiLGWgxk+Rz9WQTWcsihOMfMttcN92bBBKQcuvdz8Z+59yQx?= =?utf-8?q?S2HiYenXfppRmXXfpeJzWN+2/CWHBOIw6K2VZogdSwuU02T1BuxXy0VU3jlq03xvf?= =?utf-8?q?ALxHSpI5OdIv7YWxqHQ7v2aoTz/zBI6OgeqtIHOtRDMALP9U1sFuhcX+8f0qK//AM?= =?utf-8?q?y+0JH52sHSRurBaNLrSXqQknSaSXhCg806T/fvwGxtF+reDiyax1Cb+1PeZCw6itH?= =?utf-8?q?7Umg85YEWnfbU3/gjTsKv7Z2737RqIseVj6UQpRab4PACS/hEdKA60257KCXsVn50?= =?utf-8?q?FUbYazWWFb/gQkWq7FoRyES5NGBQw1dgQ5A9Uq/12afE/tSWd7na3kpHUTBAFDolz?= =?utf-8?q?cT+NKjWKX4g6qzhJ8f592fIwBcmd+eK0L9Z4ANLHh0IuMRU9LxucZiSGTGPRaNJ9d?= =?utf-8?q?EfuIkQ05scijX9CgYi8pTx6Iv3Lva2HY3Rf6jx67QOL5eWevpj0otajjExBmWBHrJ?= =?utf-8?q?t6MaXkYUFy9zmYlnANmHx/J7387xoqcDEDhMAlwjAwxCC67Ai0yAMjZNJWab9vSCD?= =?utf-8?q?FDZ7MD55PPSfikl4ktvTPEo4IZiTSXtT+HQL4fkkgJAkrOWLn4neVLJ2rafcUiL2O?= =?utf-8?q?7X3C+bB21AJKjTty+mA5Yus5wu/qO+HLPe6BOAQfofAdT96q05NdLLWjDJLyF3mqO?= =?utf-8?q?TnMr9TtFHQ+TOA9O4zWdxQyN+2Cw+RZHeXsuTsJQ/5sOq1AwfGgXU8WAxi/wqx0JN?= =?utf-8?q?X/EcCJxm/kdA4ipV7vBPmDwvF9n10FBbNm3vzaIsieR7dXX1uv3AZgetjC7LDGtYz?= =?utf-8?q?n+4DNPxt65tKBhYkTPpdxJap7mTpUx78dhA=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?tCRUf5VGybnpTvR3VjTfh0Rh0p+S?= =?utf-8?q?5+Cgy/JRHT7OR9Nq7DOTw7IzJv7xjlRMX49dcDljFEHeAKFlZuX7ogzdY1kHHS9cf?= =?utf-8?q?bXmvm/EaR85IUN858iiQZJWiJI2WFAq8B4ce1SvyY5JKXbtsPq6ZDCKiQTQEsKsEz?= =?utf-8?q?FsXr0spYqNHwjo8TTim3k9pAXONuAkvRnfXCRTgQAYfjuRu+LRXHR48hL3hn6jVj+?= =?utf-8?q?5uGsA2b/tT2cQOjqPQMplG3iqF8iKoLfCAoSKCMlDpG+ncAqgE2HcsBAUlvZSOyMv?= =?utf-8?q?6kGLiwURSOBzUHDxELk+ITdR4WXmfmrlLUKffHP49wX6vNiaVpOfmkeTJ5aX04zjw?= =?utf-8?q?xrgmW9rezMXTnttILrrL7R2MyLYKwvEvj2lwiggLGq5xzqUFw3QyS2P4gvHSk5Nqg?= =?utf-8?q?TV7gRP4JsXMjM9UIJFrFHdgXpVF2ikeQaNVi1+aoGXGpJqvHyl3k/5SHOUUiDfzB0?= =?utf-8?q?bruYQrDSOg0LYYdlE7bSGsdjeup3VMBLlNxhgxQ1JmKo8i4bZ1NgT5rsm2s74bVLf?= =?utf-8?q?l/0BxirnpQadmGsWbVt6DPcF7Za4gu1ETJ+yTZC8/dn+wjCEgmCjiNDMtza/ox1s8?= =?utf-8?q?NcX/cWnFAxRS9EsMnP2g4HMbdAwYpgOa+5oMWJ5ytdtvP/NBjqmOXsnNJrwG25UCB?= =?utf-8?q?ZutiCOcKhMUe+OJABqGZgZAvMEElI7ci59E+r3kkXPIqJWE/UFUs+AtHyOr52cN2j?= =?utf-8?q?lo3OKIB693C99vXRMeK4x19yAA1ndraw6afh9OC0njYyh8D+Mhv0xUwEOFX4CwTp/?= =?utf-8?q?uwTr+Si3hHQuTGEoieRVwoFeebJ/NCG2NStSGi2X0RjN+fzQAQ3twZ+qjl/a//E6r?= =?utf-8?q?7iaqhWcUpIXJccjiM2enINrUG7nqYUDmH4Zt7cRGRhacbKbC4e6OcEg7YtvUEVmsr?= =?utf-8?q?3L6t7fzi3Mg2WpQsElhNMdh5qAuPtNkiE/mnNeWH3P74Z8Tzv3UyY1G364KYH7ewn?= =?utf-8?q?PMsDPIS6H4y/dF0KTeWa07S3WTCRe66HrbLz6qhLZKBWoCdlDjJyKBgYOFuzZeAiO?= =?utf-8?q?rtuOTw770Hd4Aezfp9RN5AbQuVQhnmjbC9yVss7Y3vLpY8t2gM4YXuhOKoxgdGYMs?= =?utf-8?q?F/r1tbfoDU0jxcGGwaeZIwjgQuVs46V5RM4Ug/1XB7bmHlTMAKxlr1uJZ84lzZpnl?= =?utf-8?q?/QKaRdMmZETsQ3TTwFSLgYWFHeITItQIUX8OzrYFihjdGHoknOxPf/8oYhriqa6vG?= =?utf-8?q?Kd/l9mnTJbTU6ZnVybZ5Vc19Fmc6UpjXsqAE59QagcmzZCfVybrPuQvQ884yccK0a?= =?utf-8?q?d8dnGevidfiaaGNDcb4uBd4aVnPDywgOcp9ChPMCwIWzAVU91HAXk9/Zsfv+6e1Ut?= =?utf-8?q?NXdzCayth3s3uodkGKhE0rPGRvw9y+fcgrN4Curjq79W22pChEPh+c/QpDh+EGnH3?= =?utf-8?q?//5WwRYm3vnhdpr89c4fU7GnG84snb03Qz/FvjvbEy6WwyG3spMfpAe122VODcOmV?= =?utf-8?q?oC4edE80ayRrDUTQf7872260YNC8/48h516NFU0Xr/e2OHrF/0sZuLeZysVvicEE8?= =?utf-8?q?E3oRsPuH4LJCfrTIDDn3RA6a1VW+AY7Key4ttblpBJeDKeDcqa6OZ/I=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: 683fe7b9-4d92-49dc-95e8-08dc74aea2d1 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:18.1240 (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: iOHv4Dj2Sc0dsQSr9MNtFY1dwhn6bUe6vyUXTNDgh4a/hels3x2nQj4LxsHHxYbEyvXRVzuAZxP6dgXsTwCuo7VW8qh/nFdAgcYnmZirkUxp3/5IuwpVecHWSL02U7ft X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/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 fd4710ba28..e48b169cda 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5429,7 +5429,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 @@ -5980,19 +5980,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 Wed May 15 07:14: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: 13664776 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 89DF9C41513 for ; Wed, 15 May 2024 07:18:22 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78ql-0004dl-HB; Wed, 15 May 2024 03:14:55 -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 1s78qd-0004cF-67 for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:47 -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 1s78qM-0000oW-UP for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757271; x=1747293271; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=wfT87Hm9vtsWcq1mrFUqY+kwxQjnIxyJ2Nm4l9OdZrY=; b=PSBl5WzT2fBTFmuivdXtkHGhW8FHbQiRTFCVQDbCMb7l5euOsZBFvywH lInAqblsoxlIGlCUzFaG2RkS67IQtvPocvvhT6GhPikuTWfTn/x5k7YfZ 0p0aTFhYCyWiYDqXo67VEEqSIdeAIMZTWphZ3lQ4wwTEna+PnE5fSB+db 4baqViHeDx5bE6Xa2zTkjIzJrr23Nc7aPXEoBWejSJMkr+M0GPqWtIuk8 fpuTMjDYKe8Teo7vXXg+VkGe/rnQJgcAaVB1jFFbNKnL66xBKE8ynC5iz odyh/uYf1ciN0TQubtA1ufI05VD4LtY8na1Ooe5AnbpvigHK8ZYx2E5wh A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581806" X-MGA-submission: MDFxmMsDuGfN1DEXDP745mYfXRJTnO+YtbpkBI5Dc/tCVXC6OTp6kJZ7qpsqHaDNFhCC2wAttAYlerD3J0gnijTR31/r0cOKJvWrlwKB9BmYlzTT7xUkxbAXU8HsmLsBgCEqqsS/OtHo8kk/QbxwwSs7PCRWphhwykXKQSMgUylj/w== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:20 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e1WEdYKSYd4k7HkV5iFjyCkF5mh9OdkEExYpp6LAF33YoRi0ayvLnp5cUKTSZTQ4TYc/AloA2dN3QWxFciLhFzBKyi9tJkadO8CnOO7FRw0WkYUzFVbZs6ccou+RSXYLpdJrzMW2VKsWM4M1CywrIgD0fX5VL99AjpKBmuIBv65RjY9qA62nwN5RyYp4XG4S0GmDQxyT09lrLpxy7z6WCWKg6vs4Unea2WUH9nWTJ+Ldbx7wUPwti3gArSDdVgQzZdpXY5IKOKV5Fo863lrpdtTic/XdkyFDuYozWMLMTjkZL+yYVE3Vz0a9v0a2Ow3MihkpSEUnwXlmMsSczYQ/LA== 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=wfT87Hm9vtsWcq1mrFUqY+kwxQjnIxyJ2Nm4l9OdZrY=; b=QnnC4fkckX7DzbvHSfZGyjn1EPD3VBO1Hsm/VrjohE6S2NUTAzV3uLSyIclOayCBB3zziNLpcdx6KxnjpGHUVUiqW/E3Caixtqt9m0vhzL/Ic9VNw++k2yhds6GjwnyvyVFdEvYusVmbXHGsmXF3aPVYudisvaQNydGWXxOFWjTJywUIXtG8zbdV949XuwamnnjrCCHjcceo1LTbMeO5LtjTgc1Xwe62UhnCYhiBqhBQiJcK39gOe83a0VvwsagqDyWKZZXl5gH27iPpB+OSkCEy/5cK3yucWjTQxeyp6NtXgbUm41tdfxfsLTS+i1GEM6IH0J0fxH05FC3nUeRPpA== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 18/25] intel_iommu: implement the get_memory_region_pasid iommu operation Thread-Topic: [PATCH ats_vtd v2 18/25] intel_iommu: implement the get_memory_region_pasid iommu operation Thread-Index: AQHappeA+wCa4WX+yUqp2IC7H1FoVg== Date: Wed, 15 May 2024 07:14:18 +0000 Message-ID: <20240515071057.33990-19-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 00ef1aac-0b2a-41d2-8d82-08dc74aea2ef x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?jVJ3vIw9KmVI1+c/QEubLEH0s3Cwbx8?= =?utf-8?q?6kOblqtaFRCDBjbszkJCgty/4VlvUJjcNcYCSf8R5ej7qrw2zx7Y/syVguy7ZZi6s?= =?utf-8?q?ZVhGDVuTwtcCU685rQBZdRLoZvIXnxXsxg2v7ygaJ0YvFq8WI2qkW63OAyfPCfV7C?= =?utf-8?q?GzwIhchYfolax/WbsVYi81prXFBrQa0IMTiEVg/dzv+ZiaNI/ZeLiOlfWc9Ez+uXK?= =?utf-8?q?OfF2nPvwfh94RcgooIYMTF5OHuniXnox7h7U9m4rO3dFWUiDU/9bXOzkalX83y5LD?= =?utf-8?q?7+5mbfcwWvcHj0ZJ25nB7P8z/nr5T13amRN+QSpUqVpBEhQP/aY0o2dyspQJy0QX9?= =?utf-8?q?JtxKKqSBY7cd3VsArr+uiE54ectf3rmeymq0qC7fnVtlQ1AS0tWrX3hFZ/LPYlANi?= =?utf-8?q?FJTys+RQLC4c3L8KvUTPtHoWyVe5skYK3QU1cb1fBNWr8SLEfRdPFUxh0+Lg7brs4?= =?utf-8?q?dtD6I/J6afr+HIlv+9zjZaoAcwze1Qzng8wrFAVcWbqZaSfRBOY+jrnfk9r7INNhh?= =?utf-8?q?+OwzymMD7vZffJ2pnqQf50nEr5kWeB/huNLv2o3U5n/I5jQbaaz59ReozCSGrOM8U?= =?utf-8?q?WfTVB+w72zrHZ9ZvTmhzoofx9BIB156/EWdDyjvprFfb0NQygwFcXo1SD43dj3Kwc?= =?utf-8?q?8Y2fLLkySOvmamPqIjrH3ryHxTTnwayoxDP/pypDnkKk2n4nA2iRklxbwksLKlDEC?= =?utf-8?q?A7whSoK8y+AU+Qws2MWoFFVgc6mtIIR1l+y7EX9rHHAn7F2llIAEq19X+Gu9LYD6M?= =?utf-8?q?4z57De8lrImEGgKgsxCRa4DL6YeWpnYzAcQfdFZkqUJYJTRolaRMO8t91dsCKg2tt?= =?utf-8?q?D66XNIelpHhdxi2ale5cA+2sN/eWcvR4gLWVYtST1X5py3XM89m+AHokhbiQgOzxt?= =?utf-8?q?yZE53uauOqjrjiUO+5lI0CHQ5dCyhsqnJ+kH9saP1DDrUzd/H7o4GKpkQVQ4PLl2g?= =?utf-8?q?IJYomS1Ch9d84P9QbZhkNr5NKBUkyrw8q3Bk/qp7PqmwUbqSd2b4VwMPJjKzAKn6s?= =?utf-8?q?69jMNuAlh4xfzFPqscnPMBzReT5bhap8sFKkXHagqzygqPp7ZoAnm76Kns/DzSLDS?= =?utf-8?q?SrbUj3Log/fkIXCGcsq36IeQUoQU+eCD8jyII0pAYX/f4l84I5xmiTyd8sJ5QJqpd?= =?utf-8?q?wgp+oX0H6N9Tzu8XMEm1tjVVFY2rl6K9IjuSnCaV2r3IMTq3gTzZ3ed4O5gsC6b5q?= =?utf-8?q?mhbfEZcdiqagLSwmFny15Um4n98fC29OAJ5N3z82IxketQTUKx8HtWAxVveMucnz3?= =?utf-8?q?WzeneYWBGInKuSZtMWkvMTITwT0scfcOGZw=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?ODhIGHzNDti9+QnPaA+a10sX5PFH?= =?utf-8?q?phYHRo4lrUm/V0OCDLKijSgnmuQnZSVeCTOJLn095eaDLueNhAJneW7PUmKipzZJG?= =?utf-8?q?CWyBHQ+fJTVfjIajjWz7GmyymjAAtkx15/thDCIGQmIsstnQJ0P8KOQQ2Zn/7MX/H?= =?utf-8?q?sjxsc5BnvRbos0ZG3JfIAsQvJaiH7KK7AisaLNWK9il0XsLK1O95j2dT6KRtEUgif?= =?utf-8?q?K0v7O0mJbWdbh/eQ0+++/Srl5aIb+xW46NGryY9pH6ElipxK9jJdlgbPc9NSyThdd?= =?utf-8?q?ZrGAVLSd+oIq9LkgRh6pP4UgpFIvah2FTnPdvaNJXZtDOIpSWjZYSO0jaRu2DOdvA?= =?utf-8?q?zYRU2WFFaj2rnyDppaW6y9K2JN7AY4whON3anfjA88+EjRcTe2NstvSLI79ifdF46?= =?utf-8?q?baPVLJVORfFq1hXzeBDNhz/Alo/9u0rStIEW+9EPps0YLQUVAVLJ8WwUt+t/r9VgG?= =?utf-8?q?ztFUNjb2MYnrP+KVik/YDCwF/tDfhgkZwZ03tDPJDNG0fjir86AKx3qOuSuF1enir?= =?utf-8?q?uvDJg0k03WaoNgdwzC4cQv33jb39gF5w73g15p+SifA/yH3ej9PiTXRI92HlSjitm?= =?utf-8?q?wKjceLykRA3f6jkrdEvaLDnk/B/SDizdogt2jneytZ5PBZ038HYPI7VNntDFBMiZi?= =?utf-8?q?pqeApc2BCmbksZsql4rpeFL0CXO53rZLZP2oU/xaXiMArpAdiUNPQTYmX+QnhjhlB?= =?utf-8?q?X2Bgdof9wXlvfQyo8yADI1tcPuFnKTYmuJLHeyOq2UuZs/E344mgO594C0po+qr1o?= =?utf-8?q?TdNg+j0wjb6Q+3sCjkK8r30thQrNYBuxe6c9t+7SbzT73TWEZnVP3HbJ1xDrZfD2E?= =?utf-8?q?KCoqrkTPYm7ztME+hgSUSreV641sq4MWqXmnU8xUzNLplA50nHj0hi8f3Y2o+SqXW?= =?utf-8?q?xFg/odUgDDQkIxqeLL2VVIiTLUzoj2hmhcvhniJyE0wjWBrPhtRSgd7ihaNjFzvyc?= =?utf-8?q?VF/l6j/virGgzC5ewCWYkMXi189JwVEjFnJ/mYaJQ7DdwBgWzGzms+xu9AB95zqtM?= =?utf-8?q?tO8BFSmd37IHdYPMr1FfHypB1Eo2S/rRnCOPa04g+FP8vApnbmpi8BGJ4plPSG+yn?= =?utf-8?q?uXSkh/1l8HcpnFmMEV6047D3xywenpkeEwgwqVyn319mcbRPY8rtBwUeAHzqSuyVb?= =?utf-8?q?8Ob2tYOYC/8+CzxNujQtwaE5y7vhoJ4Ub7vSzS7JJsnzvg9E3QVR/HYUVL4CwvwoL?= =?utf-8?q?NqBtns+MIXEBnUEXy4V+VELGBxIHUKBDJebghMFAC2E1q+fVzTmeM/s1uhOdtTqc0?= =?utf-8?q?B461BR4GK6tJKYml9fOpHea7IPKad0DG6rTlIKUVQS0wop4RI7XtOHF4+PBUHxxor?= =?utf-8?q?3Xnccq+SV96D0KkB+aPf6LkOxIO8ZWm8nEEKGUPLhF1VALYHLU0ghMOENsJN4W2s1?= =?utf-8?q?s8AmW/2g0Sm9jty65ZeKNOhYm9TTucazU/NWrjMgpEsUthxzYzcCN8YrA35feURmW?= =?utf-8?q?BfMq6oPS9PnWhLikegu371pXx40Ns/Uw12XL9B/K4FZdnk/VLP9xpfBzWVlN/Jm9u?= =?utf-8?q?ndO3judP/BMalqHwbIPBMJM0jXmJ845su6KedojG2HIaoGwfnwVGAh4=3D?= Content-ID: <875B6603ACF6DF4FA2517CB43EC0ACC8@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: 00ef1aac-0b2a-41d2-8d82-08dc74aea2ef X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:18.3760 (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: 0pmXlBrbswZ6tnuK56rOm57AXC2qBhpUCSU66R8snQ0+ntGxih6gSU/8IhvTaH1cYMAcwFweiS8ya7ZDWOxT1Zh/xM1MpdY0YY75x2OGaDOOROb3crZ6iTULUY5b/Itw X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/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 e48b169cda..53f17d66c0 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5997,9 +5997,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 Wed May 15 07:14: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: 13664770 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A822BC25B75 for ; Wed, 15 May 2024 07:16:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rC-00051k-0I; Wed, 15 May 2024 03:15:22 -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 1s78qf-0004cx-5b for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:50 -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 1s78qc-0000oi-7j for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757286; x=1747293286; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=dWr4H79CgiiRUd9/Jx/CWh2pAcI+XqlvGTj2UdsuRB0=; b=BZ71dmMsQvctiKwvmPZeL1c/CDa97JfIzmAhuoFQSJ8se44+5LZE6+/T Fisa3lut7PhdrhPvxyY9UGkgE5k8hYuQvLtEy/mBInDNWsWbAbcw3c5Oc WvmNs/a2EaMt+y6qUATSvrd6V7ImdNmdgn/AJJI1sGialV0KlQnscrHe4 RRGo/k1Qn+6bxOJfGZkHmbf4ymhC7MeTNpEv3/9uJBwfEl/oIpU5utksW OyVH2JSlndwsOKOxncGaPho/CHTVju2RelMgT4OnukDCHkGFbWcSEvk0M fN4763LaQzfoN/+RYj42SIJix6is4tRiI4uKnyKQekSbEpoT4Sezd1otv w==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581807" X-MGA-submission: MDGn6mwBC2ycBNdvkY/TwQHw0wt7Rakep+UVerriQgVJbYztiV0vWeFTg/NUeOLgQ4fuY+PHxz8R66PxJf11QMzPPtlkD3cNfhAMHic9IoU7QXIzwPvsF8HymVFVQ+tvaQ5mdpqPo+gk1UHqabDsga8pMWoP2hFUiNKLubWh7Ii03w== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:20 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e+gEuWTyiQueU5lKtnm9IUVdZEt/AybpgWcCrEXgkvwvDAYQ/Ov3XT414CWv4QJlf8mslhJ9CfkWLF00hvW02VS9VglWJvwX4+rzWrmG6VnpylzKgtUVyDSHoRDJ08oOI9o2AVWlRSgo8ixL1EsJdvWRdR79YkC6gMPN2w6S7QkvdJstbWlLFl+EpA/EPSkGTdgv1rSzyKiDBxTtStK4NVwal/4zNVdtIAjosY7C6nB/OZjrYNLiCvSpnBRNusGfVSR/ic7Jo2Ata2bqGS8Yw9inb2CKZXYqWj59wiKYLFsfnWxDVPVHCmh8bJGAvnYDCKjU1LcGpNd6zSCDiskhCQ== 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=dWr4H79CgiiRUd9/Jx/CWh2pAcI+XqlvGTj2UdsuRB0=; b=IaqxDmG7lbqUTRQexrDgBQh4FUXHKUSZzxvECZY67H0T9cnVbNB7+JXIWsUG9jxGrUjjffhZv3ALNkUmKY/K1j4YN1QQAlXh5DMKgWIsf9J7uWCRDi1A02RAgt6o/AFvf1yexjTsbl6RSmcRnbw3II6JPSjEcwfJtY+Sfozr04dlhA4+PaLPS/4arPGyrqmgmNTjrIGZ0Hn2Bl8sVSi/c2++izMuc4JkkLGePi5KZl5NmeCqQ9d9MJkZdNJ7nUlvBPsN8qvXYpOm7ANvc08C1E4X/YiFLwD2okZlthKi4M03HsMIvGb/xsRFiYgCyhnT3qsK0IMliKI4DvbLKZrN+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 19/25] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Topic: [PATCH ats_vtd v2 19/25] memory: Allow to store the PASID in IOMMUTLBEntry Thread-Index: AQHappeA+UYfPo/Y9EKbS/loYd4PWg== Date: Wed, 15 May 2024 07:14:18 +0000 Message-ID: <20240515071057.33990-20-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 228aee1e-6642-4cd7-55a9-08dc74aea311 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?0voc/XmNLAeMZhcctvVTHWaurwX9Ayk?= =?utf-8?q?i49QhP+mRT1OCje9RYamMVlavkq+IUQF+uLErmYhk4mzC0MC1GBKkb1e/yCkhh3Oq?= =?utf-8?q?Z3DWKGAuScvnVPJKyWcnbzvUhU1E1Bdq6f1bcCwtKD8dRnrbNdOU6UoJ8yJcosscN?= =?utf-8?q?2js5JsYdomvqqWNMxPpnGoXhr1bZC5dceCSWtpPEWO7yLTCr2Mlnz0Hb1LRWWNoJM?= =?utf-8?q?pFJz08UURtPpMcdFkXesT4WY40oFSYz3zw2dRrkcl0zAcIECdKqshSdLSJR9q6WzM?= =?utf-8?q?1HcD3d82XzeaiMSJLEQu9YTVNAgAvNU4nTcuDq5FK20T1mUQLzoiZzh3F+L5+bcg5?= =?utf-8?q?uFzILnH8DJuFEdBry0ilNvOut+n59EWoUdU5uD1sst5gXe2oRSCc/+U79++79Qe03?= =?utf-8?q?vrwh9RxrFNKnNmRe8Xyhy7wKHxTpTmRpxiu2+aq7MN2LuooU+gUtlG5obi4Fy9LFo?= =?utf-8?q?pMWzcQjY/uYOcaEXlqwps5XFHtuXPxcEf23CJiX+0RKgJQsTr0s0GDlhCBjtIlmv5?= =?utf-8?q?gs9NuFMH63/MB4uNXnVWWjPM8QWPS0pR7XwTd62m5LcSlK+sjwrqpl/vljmSBmTf5?= =?utf-8?q?hLBOovp8rsX6m5YlXRCaSWK7ee3rJqW45N9zyVFmvJzNTwrLdFQtlwLJH6nFR6YHv?= =?utf-8?q?wIwzkTHHeK104E0tYtJUp3A5VJEhqZRIC7PowEtBKqdj+cr+cyHK5LZQHPn03LqzQ?= =?utf-8?q?pH6/flgpBFfj0bYyRd7vZfBYDHOL/3yjICjXnbl7HHooJnaSeDQuvWkkS6XA4DW0a?= =?utf-8?q?vnzGxQ3vbc4KBb/sMOYzQJdq+ClCgmXnJxqAMSi/qHQhS8dPyr2igkE5Ew24sKQwD?= =?utf-8?q?NTc7GGHKPjajifLh+YN2+CBZ8kf0rJLPyOEjDI7TzRu8mij/5uDAa8K6AFdR60ttY?= =?utf-8?q?poPzIodAJ8PyMOwfpKTohNV9NbQtVunhWRKPgpuRGeAG3FUycuOu/bj77oPaSbHz2?= =?utf-8?q?P+HRxey6HPv9/Yu8xzKpSwiTy6c6acYMaZxolf2AN7HicDrOHQ3eOwGjw3JgAyLrf?= =?utf-8?q?a9SFE1AtObc0ecTIDOAo99C1RkZWX8Y1HUBhZxAEzmNgedZsWEfDxc/BlhSHQgee3?= =?utf-8?q?5QG16A0WV7QCUF9u1sr/w1JOtMGAMxYw409p+ZsV1NRtXlXDpm3hjhslcI35jBPqv?= =?utf-8?q?avr7y1hGj/hzvJ2JGZPGGU7zuCzWw4uyoDzhkFj/txCjTL5nADMpqIyFS75cB6+KC?= =?utf-8?q?sIybVij3EEuy6Qs+X75Kf3CcneEJffukn3NWIa07zNBhGmm65Kz7gVhZ03JfoNOVY?= =?utf-8?q?RZVuRTUcT9eDFBIueCGzPfjoONAz5aJZizw=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Hk2PgqKnvSf4K7Yf7A2DQ1RP7Alp?= =?utf-8?q?iFpW7yPAcgpvE2H6zmNg0EMnKKbbPRfjSMQ71W5EcqdI/4T3+2R460ywj+SgTdgT9?= =?utf-8?q?tb15WEAif6ZbPTHaFl1p05MmswdAVSTTMdgwC6YnOSw6AibVdOYn25Y3c25FHdpUn?= =?utf-8?q?QrUkagkpTGSJXs90vda7Fu2YrtyXZBoNS/QvyEsemwLVNP3SuXH6ZceCpLBWEj1gX?= =?utf-8?q?r2Tsfb47iqXPJcuULy45QktaJ0SO9A/9KZn+ifYrpbEh1/ljZCU5a/lcMUZF/+t1m?= =?utf-8?q?SuzzZWFaVsjwov3i05cJcgspAwF5q8pyDB7CoOIuYn9KUItf08dqNU3SMpweywsBn?= =?utf-8?q?IsSntmmAOnhsn22IL+4gKtxEcKXZsNnHlIQVckVahTbtVkt5IMql1Pn8kU5vjOjxS?= =?utf-8?q?lBJg8oIIqLOD54uwVQQ9eRsPpBI5V7sXWf5Favzela1sQopg4tH7eAVB7kv33L4SR?= =?utf-8?q?2ESjGCzWIDITrIsfwvV6yBT6IWavM9d7o/ss/KxQM0DTS12W7EfRw0Ane/MC/IEnS?= =?utf-8?q?Q+Mn144R+EzbFJYth5SGNxHR7tGEdDmQU5GAjMPbOURdj70BMc7zkaHsUf7e4x5HH?= =?utf-8?q?0LHJEk1EhHEnu5UFUs35i5B8E7ugRppjrMcCW8bGzqiaWMcOQxl63vifCdtEcyXgk?= =?utf-8?q?sRjPc+b5jR7AhrewytfMFOXA1s+c7CJQDjBIfJpBBmWU4uHib6alBlHHILxQ+CbF6?= =?utf-8?q?ujrG9yAohj5lkCkoLg4bNMAO6kvxOWdPZMlPePHJjsls1nmfiC5UjD0n2nHgE2SlD?= =?utf-8?q?aIXfob24RxpJePn3GefwGWqRNOYnpO+a2GBt2N3Jquq/gSi06S0twBZjc8mm04Sea?= =?utf-8?q?BogSPjcpbHvL/cYtZthTfOJezGf0NeGth4txisveRMqi7wYBCccxybRSbaecbB9ht?= =?utf-8?q?z2n2N3rC+Pr0IPjaSXSx8Ye5hyzyKgnx00hLBO55n7A/Drqw1P1N/QtvxsX1+mrW6?= =?utf-8?q?YrbFAc3htTWw2rNUyoZZT2ceRGzTg2GTEO7W1aB8Lf09xiF3Os4O31jQkMqwyeSc4?= =?utf-8?q?xnd9s3hy1jqwAyoyxlJGy25tE5yDNMcdVOZckJJNjqgNat+/cnqJVfBCTo0u0TDxn?= =?utf-8?q?iOPi2hmFAfncw8fzRdrA8RE1i7kNTSwXWtmmbblXnh6W64ZALVoGNKUd6sFGwWSLM?= =?utf-8?q?RhAwDitCTGZqD+Iaz9/qaEjIH7zxegr2sin2Pc9CFKWRrE1UV6xBDBh2IxBlw8g/M?= =?utf-8?q?NEN8xHtLnVuApU+XQXZcn1Vib/0UBkA+LXP2FPy7fyvH7Fv1PL3WZbeWca6GXgcMV?= =?utf-8?q?KEwNF9Q/aW7qKCjfITu3GLVagSrTMKd+plowRve6U9n5P7lYGvMJwtWw/s/+76Px6?= =?utf-8?q?tkMRxJW6QfcdcSuAJ5JVp7ZfNAe+0h2FRwlymy8vpP0nasHgQWdVQTMjhOcZ1VeZW?= =?utf-8?q?xnBZNxw/7u4wSlhUR7AMg8lyEyCjg1dVTdQdfvl+wyrtgy+GeetVpcQb3WuEj6Bzg?= =?utf-8?q?oIF9T8VRdEjdSoImiTt1zC7pzy3+ZXWK9ksXgxzGVI5A90YimtquEcrY9GIqU5Z1l?= =?utf-8?q?GHL3f95bn72zjseAZNQ2e1i0zD0iq2WcRoDjeHkYszW+P6CXTaXu4GQ=3D?= Content-ID: <027E7FF302A2014587DD9B7E3574336A@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: 228aee1e-6642-4cd7-55a9-08dc74aea311 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:18.6201 (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: VqfHC1RYqpbUUd26gedr4tQu2NA6boQ0phVdWRLyszkjIy6u4ZkeWU8tLPIhHxFexnbzTEWXjO0gZ42aHVA8nLCzzl1ljkRxZBb2eEIUHyiZSsED3Q29harotXQxNRgK X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 2c0e964c07..198b71e9af 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 Wed May 15 07:14: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: 13664738 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DF295C25B75 for ; Wed, 15 May 2024 07:16:02 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rJ-00054k-Th; Wed, 15 May 2024 03:15:31 -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 1s78qe-0004cu-Vd for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:50 -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 1s78qd-0000oJ-5U for qemu-devel@nongnu.org; Wed, 15 May 2024 03:14:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757287; x=1747293287; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=zFEzYvx6Y53xIqVlSMToVmTVIq0lJKNumg4SqsbmCWs=; b=nsmz2LubUF3M2wJonFSdMxiakDWuQ+HxBc+wGaAUe5uLt7E8eoeX1ZoB av5nhiyvDKdP1YLLIy9U2hWjBvWwgIsKiq8iRGep+whNeAjTdojPW1EcN dfZcPIFq4kty1mqWJhLCdAZ4WDHlphMl7/26jY0ucKDcIc3O5uWwqOFh+ OuxuzdNQ6T33INtrZaBf51l3rwI0yhOXaXjfgxy6lpguI1Gm2jlMY7oAm t9IlaV8PQEXbev5fJm55r7YeUU2xffmHEj7v+x6snARj1WIV8+n770d6Y gosX0ys7wYQdTE85B41Cq1dsA47tCBFdCt8rVnHE2Ng5UGDr3dfzM3hHm Q==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581808" X-MGA-submission: MDHdlLOcPjNYStfw5dq3bQW8wErerSl/H95ns2fp11/im2f1xDTEZCOvusYKtDqJ9n3NBQtBZTiADBPl5emQ8t0kggncy7CfNwHoUCVlyXNWWmZA7uRHjTdtYKrKRN0nEjhqlKR7kZYGRJ/2TWQokEP7F40u1G2rkzKagIm5amTGGQ== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO outbound.mail.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:21 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SkT7AaZejPRBKpe8PONBpkxX3ogCGCnHO9m7MdV3BLzbWz8EeOQlvjPZvp5RTlA9QlqQqLhQm5zGVMPA3PL/V+If8lTk3SREV6Fo6lWbOjJyTf/9/EkC6DeFlw5WN4hBWZ844Mc8v6h+9fUX9+6ZtMv5VppHKtx8U8q4KVMsIPBtlh+mLkXMAtFjj6W1HPnHldr+09s39tGL5zzqyg/o0QvgpmrCyiaQweFpEhEaNhKzT6cxQHCqHZ/DAORSq6auFdGQYzk3nuu7/d1n05eNhdqFI++EU5FWPY/Jf+Sb7Y7HnvsWXb6StScEY3Qt2PvMF/+y4nLWZUPduYr9JNThrg== 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=zFEzYvx6Y53xIqVlSMToVmTVIq0lJKNumg4SqsbmCWs=; b=fOAcDXx/YipoIveJFtaUsiLG/QQvDsYdfzDtV4d5HqpFSeEZt/BMC+HRbV7ppVKaB8lNp5nity8EQT1Q4TbM2k9vhfZmPeysJznaot7r77sM0RI4Y9y8I1ntTaYpOU8DyjSgPmACT05uQCTjEQMHtYCoberd100zYRHq+6HwESd6wP4//vOTgPWEfkP7gniuvK5Fp/RC02pdT5x9cYu5l5Hv6p++9WScC+OLj25WfOTvhET4Ew7Tlmbu6Ymrq6+yhAeEWOJ9gLgj2ycbt4HmELUYCC4R3ZrqhydOGCKsUGxyD/hbgDB/tTxPShnSE/c/W6g58QI+onX83HxW30lIJw== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 20/25] intel_iommu: fill the PASID field when creating an instance of IOMMUTLBEntry Thread-Topic: [PATCH ats_vtd v2 20/25] intel_iommu: fill the PASID field when creating an instance of IOMMUTLBEntry Thread-Index: AQHappeALIV+LSCFtU2DUckW7CrvTw== Date: Wed, 15 May 2024 07:14:18 +0000 Message-ID: <20240515071057.33990-21-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: ede01cb5-30cf-4c7c-1a44-08dc74aea331 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?XBa6JVz0/T5eur+O+n3uockB8wqRQsz?= =?utf-8?q?ZO+PgfzOtMnIHsWi99rKb01ld2I1EqK4NlBGZUpcNF5u7G4+gzTZ+WdpATucxKHHI?= =?utf-8?q?RxfLeYKrqsZBHHx5ZdTDIk00smyYeBTCIGkjGwxi3savS3xnBvKtz/KkRYuNfj2s7?= =?utf-8?q?IidFcjVUaudQ6tTlnWd1XqOjR9SCg5KLTRPNLR5VS8r1PRjjMxlaRurWBh622kaLX?= =?utf-8?q?NGDZ57EVwDOk0e2jlc309CdIj9H9ZpfgKAeCX+PMsaF6SpFuPfTk30xSBBNbd8kTG?= =?utf-8?q?RCcBGiyL9skVZ9yixnwdVTCV2KGavw4Bp/3jfnFRtRaoerAdVU4aomxxrSg+VzzNZ?= =?utf-8?q?5MY+Q1tE/EkVMRxx13zSP/RGvgRV0Lx5Zt4pmJgS+rCP0TCjMQlrkvPUcgLyxYEoc?= =?utf-8?q?AeEQRthLoKaM7mk5ewfboF8O7Xh78BMdXkMBISb8XEDXXWzvhDGU67G0OPzfj3M5S?= =?utf-8?q?XmdMLn/3OPv6D9PgiaLtfPbiA98tUDnDU5NeiPm40Vw6hdH5DL1aIa4P9ZBwk93iv?= =?utf-8?q?OpRF0Fe0Wns0WAAX6KdU647pz9FWvb9vw1utj9hkAnNWv910RvH6SplGXJdl52mIz?= =?utf-8?q?eWtzmEBEQeG9ht9uuj5ZE700toVMx/u7+8DLDTfJkIkeB5i7jRgKRA5TqvxmtPH+a?= =?utf-8?q?JexRp1ga4J/6BarF+yKxr5331qvJuYoLj61JB6cVckYFuq7bLG6sgEgM5xNTBBRD9?= =?utf-8?q?DEzmXwg/HlETULxcmP09s+HIdIPUwX6kihRIRur6mze+3IVOH/zuHQccDHmOkSckF?= =?utf-8?q?G592ZMuc/c9ojBPiDOlOUQIZgFKuFD10uoQeARxBdWfvOQzA5wej5ffXR7Uk6XGrS?= =?utf-8?q?aS3DjMW4l+LuemvlNNUGUw0TjJS6ACbpUgCtTub0cZ+65qfdu4haHKq1mU/8uEcFc?= =?utf-8?q?0dOcKIlTAvSXqExEfemjt9xHKABV1bb5Meu9Km7phCJwOnAkj2hcSb3Q7b4DrsR5D?= =?utf-8?q?hodwrO/2d9lBJw0aGj0oGpq5VnpVIqjxRc6ZlLUeV4G+9BIytXiDkwe6UD1aV/Qxl?= =?utf-8?q?lfnnDF9rXINu5QtdejF7XE6zF4Z6Fd2RLzWXiJ9qi6s7ug1n+hICcGMgey4TfvyAd?= =?utf-8?q?43cMi87KcuJz/yRQ1SxNMYMt41nwN5l5dcQWMMo2JWZZSDI39uZCAs2Ch3mx9vUKx?= =?utf-8?q?UIw21SYLjhENl4FOS+3lmrOBoO2aJmcdaEzEKg4r5iFFiEZQ8PuCgykSgLGycQNMT?= =?utf-8?q?M8LNu50sURhIfkN2zCIxSBuS6P7RYO32XIG9vjK6/NAUzgKMTxisV94rKcfbR7GKF?= =?utf-8?q?/5+eO0RhSYoWCZqydJzj+zW5y/FD5XO6W1g=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?t6MRU/GjMFeX/BxT+0fgbY1Y11gm?= =?utf-8?q?u2MIzL3qb28TyZvum9dwj5+ja/7du8E+3JJKLgxaTFwFam7CgtxfUwzQJDMpBy5Oa?= =?utf-8?q?k0K/eJiKcE9eapgONxSCp63Yvp91/m4yqHzMil/KgaFhAZZ2MCdDS8Ndvt/Gmj/Ss?= =?utf-8?q?vHDHgellOR6Hntv/0RcqRVR/dfGTLw2ce3J8nyIiJlK8hzxx9TVfGKBfsU1z4Pe+H?= =?utf-8?q?OlX0hmi62JT+S5ODscCSMdN2vrG8IOHGt0Huibh1mli0qVCeF15SiEF33P4+t9RXu?= =?utf-8?q?yHp9KiU4xPhlMPc+9ytR3Xq0POtiuqISIQFTDghu+awIaCGlDan5JC7qiwQiChXnZ?= =?utf-8?q?2WffMa6Q6OXnip0oSjUmJQsyzaeqS/Y0R3QKe2dUS6bD9pdNVdhB/T6yP03vJxOgn?= =?utf-8?q?g8FST3raxrB69ijlaR50lT9KcWf+k2Auvxz26G6QQ+X54h34Cb0HIQ+s9VUv3hODd?= =?utf-8?q?q+tjSA6A6y64dLzLqfR9ZohtArWCZyAtciFCmtB8BvK1/YXWwN8uajogFOEfOw8nD?= =?utf-8?q?U6fqP8KoqUXFrxQJovJENNaCdMOT7m4O+TYQwNaGNGfZABsw/3xZrTaoLiLX9iZvE?= =?utf-8?q?0AJvUgyk3cwWu9+uZgbTcyMY3I5MUkrME2to2pOWafYo6P7cr/Iu04mIyzZJeeHrL?= =?utf-8?q?Vp73ZtihHi0EQYwqtHKE8i71darek9clPVHAQqcY8c1fWx9S4fJOqmnTvrjaKO5QP?= =?utf-8?q?LmbxpEFc4WCUOYOHEfAlofVCRadwWiuWRWw1b8bDMBU4xeYITdo6BfN9NK9K6PhHF?= =?utf-8?q?3Bjcd0STGip1CK3kvbthct+bAvWrEhAZjvkb9hCbPrnsbfGyT+AOz3dW7fjlt8YKz?= =?utf-8?q?czUwtViphi6nPxNHzdhBxo8RYTSEK66LkXS/0ypBssSqYNLNmsKJd1EOrr/hHMCMO?= =?utf-8?q?Ev8rw46ZV8BQoBndwLwJ/903raN76VIHu6NJlIvNw3/3f6x+cwHf1H8Dky48QYZoz?= =?utf-8?q?ng7bl1haO7vhQY/LRZh9IEFAqJfUtnlt+OzVzyj9k5ueXPUnHbflsY4DO36XA0thU?= =?utf-8?q?1o3Uwr92uNcVW1v9DJBRwACnoFSYpmCQD8EmGubJVccZ8bqw5E/fjRwRZQDWgWmBf?= =?utf-8?q?c9sgSQjlX2WW/nya8W40yBD6JSqs+T2SUh7AQTsuTd8jtrcbBsFEWG74WacivfCn5?= =?utf-8?q?DIf2fY4DbtB0MOKnofYO/eBzvMiXJit9tmiGu9xzfjkNjaypNzuTHJNi2SMYG8QLg?= =?utf-8?q?xoGZuK5pgn9Get8i+peRaasz7Rd50yhIurJrdd+btO5S/qLqiDg/i77AE40noSUvk?= =?utf-8?q?ushgpK7f4Mo1UgMcRq+wHNeL7YFSOSRLpkN4WQCofA53mIXFZcVwrIN96tC/EJqpO?= =?utf-8?q?rjgubSY/dOLylEZyQmg7iQaiihmisq1JIlNWpJcCPQaB6Pig4lfVB8H9rsvv4jjSp?= =?utf-8?q?fWmWujQrjyIdqVzG7V0m/SKFPAw6WqKFQGlxFf89LDJ/GLVCjc3Sf4UNXZauCZc/a?= =?utf-8?q?Z16/w6ltbHTicFC0Wn7stGfgFHqmO0HnnUGdof8Poy9GUYjwe8HbPdbOt6SGueEIY?= =?utf-8?q?O3t7yD4G3zo/7JTFYq7bMD1ay2Dmlgnnx5CBbADSWIPyU5X+6/ztqO4=3D?= Content-ID: <77E151F780656B47BFE3F939CC4B0C75@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: ede01cb5-30cf-4c7c-1a44-08dc74aea331 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:18.8655 (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: iR6tlSIHjQafkpTYDlMxF8cPUuHIo0VOYarTqfPZ3EpVolQTUxnfv0b71A+aF31bPsqq5++0r95xHmUfLhdG1AjNUB2Bk3wogvhSPNF4LTvka68DwoJLMZhwy//9YwK/ X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/i386/intel_iommu.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 53f17d66c0..c4ebd4569e 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2299,6 +2299,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: @@ -2307,6 +2308,7 @@ error: entry->translated_addr = 0; entry->addr_mask = 0; entry->perm = IOMMU_NONE; + entry->pasid = PCI_NO_PASID; return false; } @@ -3497,6 +3499,7 @@ static void vtd_piotlb_pasid_invalidate_notify(IntelIOMMUState *s, event.entry.target_as = &address_space_memory; event.entry.iova = notifier->start; event.entry.perm = IOMMU_NONE; + event.entry.pasid = pasid; event.entry.addr_mask = notifier->end - notifier->start; event.entry.translated_addr = 0; @@ -3678,6 +3681,7 @@ static void vtd_piotlb_page_invalidate(IntelIOMMUState *s, uint16_t domain_id, event.entry.target_as = &address_space_memory; event.entry.iova = addr; event.entry.perm = IOMMU_NONE; + event.entry.pasid = pasid; event.entry.addr_mask = size - 1; event.entry.translated_addr = 0; @@ -4335,6 +4339,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); } @@ -4911,6 +4916,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; @@ -4923,6 +4929,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 Wed May 15 07:14: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: 13664771 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2DF83C25B77 for ; Wed, 15 May 2024 07:17:13 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rf-0005VB-Ec; Wed, 15 May 2024 03:15:53 -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 1s78r5-00050U-BZ for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:19 -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 1s78qp-0000oi-Ik for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757299; x=1747293299; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=fz6Qde44pAZARZPh4pD4Y74QvPWq0AhDSjUgpnKMgWE=; b=m8iT7pRwb+camtFGdUQzSusE1cvA3qxRDpINDHZoJDc05GpkHQ51qOKS gg03k80BIPcwdeR3M4oO/B65kf/cWJBEQZedJBVLvixs7Blso3CE1MdG+ 5cw0UkiFKiXfkT5z1DKHr6PAGOMoYYDeWBMKBGTu/xHduklKDzrpZTvij +GGnWazcS431Hl7WoF/kvPQBhR+ebuV17H6lgrWpU8XjrDuQdHoLYrGSp lg0FNctgESuNUesoXSQ/ykjKB3yc/5304jOQCHPNh3Aj3LgsJbMoYNNPN iBYfPbNL/i7t7fQcfSVIwkE7kVTdznsF5hDNfi+tVmDrO4vlMg/AtsTUt g==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581813" X-MGA-submission: MDGz5Ud06yXhBtlayaMxGpDwPvnv0ijZdf/UkFndBExENWIkj346+Iqkejq8PuSHPym7vhlNmFIWVa5emb38Melj8QchX5IeLrrHXrmju6J3Oomcy2QKHatnKHr2cvT9OSf2/KqoYCw6vSk/K9JaY3wxZzd3A9bRWIwgx+1r+/59Tw== Received: from mail-vi1eur03lp2105.outbound.protection.outlook.com (HELO EUR03-VI1-obe.outbound.protection.outlook.com) ([104.47.30.105]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KEWNxJ41ElHHBfA8G5nptXZp+7FKDYQV5NMxH/pBoaUE8Q4yTw1/tMqCgLCPUbsWLXVXL0fxiToyFhDnRLSHkOOYXvaslKqqFVk2vNATajOiKYrNDpyokgbJKEG1Mgn/2OavmFnPmn6Pv0mb2vaJlYwupDme8rl6/7DoZiyZ/cVAeLB16ZhmYlkS78xkXvqQHmKlBl++tTbA7tcFTsWGtS7mMkyPAEZ99f4TI2vFf//X2q8oH9VIGOmn7YxqDEMQLv7RPIExlKwBoaGUUH1OWcPH6saNob+tLR1GKMbZ3XX/K07PCROp16ToI0zL28pG/0VaVFkWJgvw2WbGdlVhog== 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=fz6Qde44pAZARZPh4pD4Y74QvPWq0AhDSjUgpnKMgWE=; b=XMXeFfKJ9F4YM1HfuPwHTjYk53gj9yc+8CGD5+Zrk/wSyuGuj8avgcb7FGPVOIWx1u5YGETQFusp1tjYuWDJLLqCg4IKPjVf1u9dSd4NlNbJeEaprj6YiLK9MrUz1111DRZnVAG2nyrgQmlSjiMLH0qbINyUWRH5TgmKb+U5mSxHFOSrkpa1W8ADMhtxlrhXYKCHfm4LuHMCt+m3Hiq9ld/HcSC3ihCyRk1+AfEG/lL6Nw/Mo1w+tzlDpdGFMlDWsrHI/Dez/BN8+i0aUZzeRMgAoRZO06ZH1IjyD0puqhAmyBoEiZCqdeHn3Ps02+JnR25bWM4HKoLweWvcu2p5hg== 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 PAXPR07MB8496.eurprd07.prod.outlook.com (2603:10a6:102:2b5::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 21/25] atc: generic ATC that can be used by PCIe devices that support SVM Thread-Topic: [PATCH ats_vtd v2 21/25] atc: generic ATC that can be used by PCIe devices that support SVM Thread-Index: AQHappeAjUdU2werkUaJiYxy8FgLhA== Date: Wed, 15 May 2024 07:14:20 +0000 Message-ID: <20240515071057.33990-22-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|PAXPR07MB8496:EE_ x-ms-office365-filtering-correlation-id: 5992b2fc-2973-425e-5339-08dc74aea414 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?XH1TGOaPxqmXc+GlsfMY2NbQwleuvoM?= =?utf-8?q?+qjCLRu0voWxBa7wfWGw2EMN09rfZRDrLdEM1wW7ds/KOKTVXRrvsFfrt/WGmrGYS?= =?utf-8?q?TcrqwNSuqzwuakNELoB9ZVvubgfJV8PtsVZOseg9PcwURt+P0PoNSO+aRdtuyN6jR?= =?utf-8?q?njQ6z1G2Ysgc2OCViqTr/0pvSAvHkng3HiYc/5LJ7IylCeBsx2aWhHOOo2R69uyzZ?= =?utf-8?q?P1g1oJpCoTYRb4uVSGYCHvE/oiHwwI5RsWy4rDjeDdDvrN3aLvoAD9IvBWW+fJ+KF?= =?utf-8?q?LwmAhr0HGcvWN+CYE8WWywC392d9AnvadEkCbfq0B7FoWNd3iA4i3z+ejtuoGF91f?= =?utf-8?q?UOLmawyBJZsRFu+7vT/Yawe/C04+0IOFbbRRC6QJt57uFzueyh0e2k4aQ4SRS5hEa?= =?utf-8?q?G1aBgA/pGFW1YBxbVsiZ3EXCQk/d50dT/ExsbXzPbgjvqRjszPp/kDe+U4K00Eu5L?= =?utf-8?q?7oixIsDSFdkbfl1DKh4vzJT6BjNtCKkVTS2vD1uoJXxUeszo2o1UNh/Psk631JsxO?= =?utf-8?q?VVunAbrbJts25D1LIv7cO5HB9lU3OTqfJ1KMaoY1pJGTTT65JgEvWQTwso162xE3c?= =?utf-8?q?B1WklbWQkIBdlxSG/H5jkfw7PUghKLPCbTT4bwWuhBmTmkuLxzEjI5uYoKtJ6m6Qu?= =?utf-8?q?vsrq5yqXfGWXrAQvn+4L7/6+kuKEVbcjCUj/gKQQWyXey1wKCJ4Ox3fJFuzWaFcu9?= =?utf-8?q?AR8rTAZGONkHllD5proSHqP723oaU9MccfcunDIt0Jfklk8/8yOYVZGhR3dkCBwIU?= =?utf-8?q?ztaKpKxAHfJhALraurb5wOc8Cz6TtDPCFU0Z27/HXbwcJUSH7zJYItLkezHaxUNDp?= =?utf-8?q?Hvi2sJD9jKK6Jt/BdImlYewaprOyo/Tb5bx32KnaTVtg9JcJ+QnPTfJSqxpTNi3Vx?= =?utf-8?q?8RDhPzs0yygbm+w+qLPD4WApxKj5LItMsVk8DYVNf6I0ImIzX/jm8iOmT6uG9+Jwh?= =?utf-8?q?l3pTH6aWr/ayqDX/M8YCdGhcBNi9iwN7GnfkIdoOhVQrSRYYUQBydFqpfI62cOdyc?= =?utf-8?q?6+4b1L20uFZHQomaRmfSToOumOzA2ExJ2mIPwL8eNA9GPvoPvz6aKt9CrnoctsAF7?= =?utf-8?q?M0gdLogpePIO9OtvKo4FpfIFVamibQtC1IPcz/kTuwKw2GLUmIC5ZNsr27+d/Nu04?= =?utf-8?q?tQjI9GzyEQF6yJBpr/sJHQ4jRy0FE/U6KGBAy3o/IHLIL3j6ie3zTrRj+OJ6byq3z?= =?utf-8?q?E2GoZrG/tLTD0/XefaullNiYefhgDCqLGhVA=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?RmAvxxXl0gDRmX/wupjwFpPsks1I?= =?utf-8?q?ZHJtxr3iYtRPB80aR1OsrvqVB4HaZtJKnoqg4WN4qsQCluTMsUwh/u3UfvXKhkthK?= =?utf-8?q?J1tgHSTAQM1d76RippZ5H9MLL5RbUFr+k0Rv42qCGjY9L63x8DywPmInimiBor7XA?= =?utf-8?q?mJNIJF0tOLh2eFOaSj81jjwQlFwx7ogB1AhrBhYSsF0btMp06OqfifqILQslsGdHb?= =?utf-8?q?aoRfgjqFiv03jffPssS0O+ZFlKtlHPueCkAFnlsGenhVdxMapG01uK0gy1L3Hw8Uk?= =?utf-8?q?1US1LafXd/8ZGxDBk0xrQvJesDx25L2q0e+mL4paInT9wznJr5Uv9oVR74u7En4Bc?= =?utf-8?q?2XCblO9fNkwgH8ECya0gT9mZ/9zYXFHIYkYZEnijaep3q8R/+qw0urvMvtFtazle9?= =?utf-8?q?XsBAuqALokrtbmo7lYS8Ba8SGlYoh1qT77Gkzu3W8OLduR1U7B7/Ck9abuDpTLrDh?= =?utf-8?q?HxWcbZ6CZceVZSrltFbEXIFwzUNif7mdjByaMaQHKNdMlewwoFhToiBssd3U7Sdm0?= =?utf-8?q?vnBSEk9vwUZv6t2qx00ep7GVbVpaP3xZjGY4Uw89YaLleSsF/cB8BEFrkYZwGbshu?= =?utf-8?q?nriFKZr0amk91s+hQUVGrk2+nrO2TfOM/VdA0IwqJu9YDbsVYVIVtmNIpjVS/AfLj?= =?utf-8?q?aaKL9ZIrO1780N+rRTHpG9+Rycmbuz6dEW/U9EQSYXxR73G9waXK2YViFXr9a1IV4?= =?utf-8?q?+2pCAgufLFAZvMXUnkx+QgbpwMNCcUqR9svkOBhvmIqE9VvclZ7rQhm+HgulyuFJl?= =?utf-8?q?o+z0i5iepII/ltvT2N1b1IXFOOvwCAXk/S1x9MpKxXdEhbT7hzrgXucd/LcRRfsIo?= =?utf-8?q?fpG+e6hV/fJOdGTo2IfcYjv1zuiacsufu0P0n85DzgnLVSaipsIeGuVqx6BWUml/c?= =?utf-8?q?H/pzAtFc5nMXi3fSSvHR/8RnHM9yw9K4Da+3rRODz38aFj1prJF8gAK9erfczlD+1?= =?utf-8?q?dvMBbcEx7hWAFfa75uRulzV6BJ6Wnt03LKFGznIKM3UYBp8fXmgRGjH/8syp+HE3/?= =?utf-8?q?4Z16xzeGZw6MmxNyCzdpBog4Cuj0wLQN/efTP3xq+FJ1Z2IcZ5DLDzIcT5+ZWRrVj?= =?utf-8?q?i9lhscPC54MUHw1U5D2SOVcIEquccSR5C0AXDqG9iByfI1EXQfFefiXLKsgNp+rxQ?= =?utf-8?q?gQHSaT2Z/X88r134KZAUnCrOtOI5k40VMzQJGgAUWeLev6kMfjQQ2R7lrhYubTHnL?= =?utf-8?q?hTOV+UqlNXBo6B/TpVdS8H0MDIUIZinJEd1q7Fakoyru2iMg6Cf6DwRvVhb9HSPzJ?= =?utf-8?q?T7u1dufbAj1QKWKRrbdd0hbZfiAZpB9M3wdwe55l4HJYKMHIMdVqxlr10o1jrZ2oP?= =?utf-8?q?fHto6C5Y3rfNSB4lR5Peyuai60aZsKq/+FhX1TxGtAOQ0IRUPy0Ui7m6oVSrtAlRZ?= =?utf-8?q?OyubQEm0T7Y72ovHF2TSiJDJRtGgKna3eTr7/YByaKw0u6SkLvjaleDClIgOJKMyv?= =?utf-8?q?uh87K/htmuq0hby7uSK5Bf33VWLLv5ieD8l7EZrH33Hpw345s7ji0XrVZld4A/SGZ?= =?utf-8?q?rkFiQ4OSKIIcla6DOsWpxL3GMYZIxjZOOstOSaPhvPNQ18mw+pVM81U=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: 5992b2fc-2973-425e-5339-08dc74aea414 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:20.5619 (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: Xuge6VfKB2ljl4YTZQ/E/xZ8T5gRIVk0l43YQ07Io8PHZ7Y9M9+Oep++v/t0NeghCDVY7h1ASVtboaz2hBpC82RJIVzQactkFG658EeVFJA9Yz00EhKa+aEjuIFYgiD5 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR07MB8496 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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..d951532e26 --- /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 Wed May 15 07:14: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: 13664768 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 238D5C25B77 for ; Wed, 15 May 2024 07:16:43 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rQ-0005FV-1t; Wed, 15 May 2024 03:15: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 1s78qs-0004no-RD for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:03 -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 1s78qo-0000oW-JK for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757298; x=1747293298; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=QViL57WcqcSq2IAMyDPaufeO5kwcbqR2b6u/ZIg+Ojg=; b=mY+FZGiaq4dAPaewGmSfzSqzNcrrq3xtd/Ty10wTfqYMAlP+ORTAZ+xx gsymXyWmX+MpZKmpyDWonPoRC9ELvfwvoSCsY29fHSwcu7kZe46prlAw3 fPb1pAnfuMeqHKBvL47HGUTvLPCVJeyZy/jt+hY4z/zHKvDeeWnwHs2jT NMyNFd1i5qgSfeuyVizyy28Jsuyjp103aw5t2nMAfQCpSQi5hvh1bDqNt Rns7iZqbW/Bi689J2bktJsA8giyl4s4ycS08LewFaaN2Geb9lM05VT8gz iQ43FasUBwknsGbrylwKQgJAJq+/RMz+Kni16xpc4UYZq33cbE0n2qhUa A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581809" X-MGA-submission: MDEIjOj9D+TJEPC2Z9nPKwpjWohIQg+KbHBuXQpqOaU+Y9iqVNVh95XxX+fHsknkNp0AQgUVKZ329q6sMv93wyUUGYGH2Z914zBq5IrPCD1rgCa+kYicJT9hQbYuK5njjO5ygnPiBEBNfxwiURhCRkmeNGYHUhOFZUnXmurTsBcdZQ== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO EUR04-VI1-obe.outbound.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L3oMg3fyu+NO9FJuWLwt82Q29aOKRcpjC/sSkJK0gaI68ZfC1prsGPMTd9fjluN+YfjSILi4fCqRC3Rbf8HQQ1QF511nL0LdSPv8GBc2zk/BXcFNi05TpF9BPMGLrIh3F7p0aPt+euy8FTPleg4FXQWpoWhUk3oGYmtrL4qlgQyo+SlrZG7Q0MZfVSnEyTdo85IOMT76naVVcWYjLbMn1QeX1h9w+vHm5XQpwH/ww/AZBvYojFTdYNT0QWgNrXIuZnrUxj7F5a66/EUen94nc6OJNCBJWwFp6zsxXStE8gOzm9OeOkNG75rq4M7CWpCgNQ+d6By33cObbJ48rBcbXQ== 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=QViL57WcqcSq2IAMyDPaufeO5kwcbqR2b6u/ZIg+Ojg=; b=aV7EJiQmQ97Ij8pvQ4YLRUEUkINsyjyUZhWiKKzzWYyY2LckMXpGEXK2FCVn/eMNrrm1QC8uxgiOqBoBW38I09duRNXlsKrymU3veqYiFVXIiVW3bRn4+wOigJMXObXMuHZc3u032afDPA9GPcj2om5hlEleEuQE5Lk/TyUZblhZPlLsG3oqHvxSAP8xLOUoNRxkwWF2uZBNkocttB4CADcwoa3745vTcrj//8lL9m02WrTVDnIfNCCC/aVD/dfBHHeElnkgEeBQNr92UV6TF01Ebf40EDmebFIBYwIouA9jimjqaW2m7MUxv69HIWKbuabOQO0YndDLDUEhKv79uA== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 22/25] memory: add an API for ATS support Thread-Topic: [PATCH ats_vtd v2 22/25] memory: add an API for ATS support Thread-Index: AQHappeBZRL0InTYXUqH9Y6yKo3H3w== Date: Wed, 15 May 2024 07:14:21 +0000 Message-ID: <20240515071057.33990-23-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: c74efd5a-7d38-4920-2efb-08dc74aea46a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?QAX1dI9jT9yRMTebtQvOCSHlS3Vm6jy?= =?utf-8?q?OjCFMhdlRtzC4O1zcT5+xmGxGoB9q5FUkQ4uoDWIrzjBgrT1J5TTpAlU575YNy4L4?= =?utf-8?q?PF4z0S+IL9HFBYuv4cLJZWATvze9ZDAC8VFL7/1eNuMyTXr6ueE24LsFwkiO/PJMe?= =?utf-8?q?C8rG6VCB7Qjze053ClJI1VAFJDnvOm+Ykgkd7DdMzDcCubnkUERzjxA3lE9Y59DY6?= =?utf-8?q?pOIANAytQeAmPWHWxUtJt4SSWJhjJPbuWv9Q61i/uZbDUAdG+4105rtdiJbxMaBrU?= =?utf-8?q?iJNr8PxOYwYgPjcif0qjTViF3GyksSrz+n+jKB0oAoch+vuLXdSwAobdrhR9DvyJi?= =?utf-8?q?3OObK4dOrGvJ3gIqw0dAeIYqhGjD3ylvenZdobe18JYDija95CPyqWB17+O21GTeJ?= =?utf-8?q?pS4oYsK/Tjz9QKzBqARFyCjyxjiKdXNcFdpsTzuFTXrc4x1xf9NkZ4zDNgMtqAdRd?= =?utf-8?q?8OVGFqTumv0OlBzE3JEdICV8U7W9STAHEwm54Q40ysrNaud0gm+FK+sTbEkR6ooHz?= =?utf-8?q?vkYMVtC0O9fJ+Z5JY1mvp5/RvpZ/MOSZ23P++3zqFmlyjmucZaQxfdt0fFQhxmfYD?= =?utf-8?q?BV0MTE0G8MUXwNYl6jHN+R6HvjbiXvyp1887fxZ5BA3r4z4Q+t8jG+2vs22D5xeRW?= =?utf-8?q?g63IZ8rglh/gkMNxNTC6TIohYTCfjFHeenfsRxOqJezaEepWU2ek/I5GANmxrKUoa?= =?utf-8?q?NAWuWyg+4E42rEbHwjexExtMfQb3YeK2UT+1tqzEGE1xYBYFmyo9MdD63UOqMQVdE?= =?utf-8?q?HkH7MWesmwcWom5JAWylcPujHvFvVwuEuu7Y+ha+j8o3VHUvkfBnhsAoO3Jl/q1mD?= =?utf-8?q?n510Le0KBpHcCDfQhy+1SJXBvrBpU16+ORhPrdgxqNewIPRzB9gccpY8V8nd9Kab/?= =?utf-8?q?t7n3xaCxTSZ65fW95NdyE2DdFp1pjf65p1j7XIaxDpi67O0xNZsaLG4c8LtXOnKWD?= =?utf-8?q?7UmVQRdWot7bVP+Vff2wXNSzR+9S+EZKvNGg1H0fc7aWXTyqYsgRuLpKzBqu0OTxW?= =?utf-8?q?tfuf2+EAxXf0fJHy7X/64XfS7PeTK8clYhsee7fIF7DaQkyYv/P2DAmmclEPdvMdN?= =?utf-8?q?6p+59sRrTBeXDdp2u/xEwiQrekylDfAwKiTnbnTPec8xMHvjjQPGBFqpTW97eTyKJ?= =?utf-8?q?HRIFow9aZjvp51sNqRidL1eF4JCd+ax3ziYCXB0fFkWcstahjGNh6oyq19vUUdLKB?= =?utf-8?q?QsBcfu6dmDiLXQd+9Ps0NrJ9+v0lUQjyLVsCBIvJfwLvcRzKXR7EyxXvlb2xri/MP?= =?utf-8?q?4Gwh7pqEu6IJYaiRtZ+UHm3oU7kHUEgRsxg=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Q4ZLa2R10GffYt0bSLpX9Ndgeo9d?= =?utf-8?q?tzQBunnVcxewlvVWdyo/FSwiTYSaWLZZaKrIql0V7QXwNeo0FwL5o1dj0D9eEKX3L?= =?utf-8?q?nxLB0CfTtWqJB/2yv/jZSdEUb52THnM6eWjdn7KWnSC09RJF585yv4FquYQYNz+Vt?= =?utf-8?q?XMQfgZR6UfJiJeNoHog/+zdOd5JGw+p8/w/nL1FlpuMYyIOnwZUl6TL3cIMb+C2pa?= =?utf-8?q?Nwv+z36tnPH+/boSlABv+0OQiIE2zaht+/6ODse2AdXMrsXg5BOeZ3BnOGGyWow04?= =?utf-8?q?Ih7PK7a59w4nsJCgyogJ5Lro9DDLwlAyhO9MO7BeZr4gVudh0IsFgHje5mSOSjlnR?= =?utf-8?q?6uYNN/WSIDbHthgoob/FzuqCiZrscQGVscVMdTuVA3F5uxd4TjInvgGWdZzn7TZrP?= =?utf-8?q?KrJTu0Cqf099XpiC1KuBJtF9m+FzZP0TtLfSVEEDBGNBzxQzT9K1kXPB++PrdjK1F?= =?utf-8?q?0Fib+lyzEqEkWa/4Ms7KdbDpGQTpRPfP/6QzPqasV+FuOUZq6lObqdkQ5BqCqfLgI?= =?utf-8?q?qjEr/dasWKfkHFZ/uOp00w25M9sdEHdl82qzlhLm8xV3MgLBqVmYUstAnTvIiFWxU?= =?utf-8?q?BSl8+v5pEG8NG248igWp2++6bdU1WhimlSfX08alZcZ7KaBZrssV4spSu912dGTge?= =?utf-8?q?pyF3hKxfKHtpARF4DPu13u3TI5mol63QRpeksxSD5H/t7nfNwlg8T1aXMt63AcxkP?= =?utf-8?q?2F/tVNnk/g7XBlrHeknl3GylndwFLKIeuGhsf4TRNZUYbI+XqFec88/JSg2xKtBZc?= =?utf-8?q?TNJmV/XfCRu74b5wACHrj6VfVfiqT+/ehYfbdOQg5Zh709D1y4s4kcpXAUtZrGVL6?= =?utf-8?q?oRe8g/xgHt+m+A2WzN6EeBF+cvK5eOvDeiP8ypaeklphwRK2qUgYISwXpyPzUQbov?= =?utf-8?q?sgTboVND6okn9/xvuYlNcpUpqPpngbjETkv33GDXeKLFabw+aoNqO8vD0cU6h1bea?= =?utf-8?q?Vp5Cl+WoxhmIF6HQPL4YaH/55mvv6sfazplWF/wOQlrJS6a+WvYPhvWuFj5U10ou8?= =?utf-8?q?pLQVT2x17tD7TM08S80xVffU/kDnJKa4csqL4/o3JoLXjs4opQ4URQL0vHMNAQDIb?= =?utf-8?q?SNgKZ+C5nLzP0GaR7qFzFOYlfaZZ6u+19uI8EpG5zPpK600Rz6dKIqitHm63uxo8o?= =?utf-8?q?r6LeflBZR694rK0q7RTaVPzQtQ7N0Paziyjhj1R9kLgI3/UZpu+6jBiK1xdPBfVtG?= =?utf-8?q?3/JkyRoI/+j+S3kKYpbyruwvS09ko/3kWd1pg9SMEqKUJ7DUvP3do/EO0Lchz5Hki?= =?utf-8?q?EGKWpKFoR+Mg0hdyDUQIWYCMjXHWDQyqEscD7jSgMQTsQysS5hVzLrNMiWlIKmyi5?= =?utf-8?q?08WwVYKdoll8X3KWkMGkHlGBS77TG+4ru6wqnHVjqwFVuIUMEDWlLwRPamuoYFLF4?= =?utf-8?q?F7/ZeeQY8qyKpcu7MTGDrKXWZsjsRYfzhtx/vrIEIwi/K4ZCiuUp6J3AbKc9JBu0j?= =?utf-8?q?94zk4cmCO0gg0K8sGtGnQ7pvp4OiyX+NE4L00VAbsLQCRRvqvuQ3FS9Rlupk013n6?= =?utf-8?q?HbR9G6etlHqt2qO+pN7NKWHAO96Gg1TqGbDhjCvVWCJKYDCtEHCVNfg=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: c74efd5a-7d38-4920-2efb-08dc74aea46a X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:21.0731 (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: 7A6C/3ujJFloHWaiH5DXwHLgpxu4qDow5S3AtpDeFgpuJnixaCPzbaJetmot896wltA+m+KP5WEhYPEb5q0WxvzxbOXNBvPOoBjhD2MeSCcZ/gwe3wlfMSPbPd72YGGd X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 198b71e9af..98b02b942c 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 Wed May 15 07:14: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: 13664772 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 09E58C25B75 for ; Wed, 15 May 2024 07:17:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rQ-0005Ej-0Q; Wed, 15 May 2024 03:15: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 1s78qr-0004hG-CA for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:03 -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 1s78qp-0000oJ-FE for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757299; x=1747293299; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=VWlIX1VzRzwG75UfxtkfPvYMR3owUrVk6gP7Psf/+C4=; b=QvFqXNffn9MC57EjWtuTJNnAE1F+EormEdzrgAhDZCGEGEnMBaypiJMP vjNufX4YvDknC7FOOu7rWDWR8MjWnmlzFhoQu9/wG5GjZ4130WgxUc+fR opntE2o0m3hGpqsjLXpF5I3cXV9UZSlvvPMH6tJxMf+p3lNcKc8YjN129 49WrhNleNPA7IhPjSij3qnIcA0KFj4eMxyiRQU/QfWLLotFei2uKTGX72 qEn4uCYEnYmXkD1mfbyw0TCJ9HZGAsY936Kku0fGbc+c3bIPfvNux+lbV 0mOieYYHNdx3ovsaHfZHwdhKFADTQq7ceeylWXTaO/F1yfNf4b+T1YVgr A==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581812" X-MGA-submission: MDEr9loOd5xbA7r3vDslgYzEW29fy2YztUKYO76rIm20WIjSlnYgkx88kP/IBIcOk7Z9yVY3J6/AD9bp2tTr7dnmNV9BvL5YzzJkyv8YXVVAaIrnV6hjcmmLjqNNGLfoZ4NpcRSWOVuZd7rdHwcWH83v46P0ubH5H/OOSxUa4k+cFw== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO EUR04-VI1-obe.outbound.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:22 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b5yYMpnam6XsIRMgQHout6eU2+T0/NHQONU5X4oJmbVzXXZwMxRFVruX8x8dRCiMK9RAdXMcZXW3eB2cxoaDTaVbnghZYNaTpvqeP9idRZnpwSCvWiay+1GTcOS1JXLrkeEl84gDxtUfPaKI9p1kJ1O3UBYiZK6lNT9i4yYui+xOzpV9Z79ocfZnXV/nmhJxrQw5ZliBRXTAO6/qad1aa477VlidZNG5OweMl/1KMDvaDwUeTchGX4SQL0mbkGLXo1KlNEmK2MwTxvi2GGA9yAheNrePm/PAxheCbmhPw/E2JJmoonjva84OpPalqvheAzR6EGDwPdbwptxLyt9odw== 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=VWlIX1VzRzwG75UfxtkfPvYMR3owUrVk6gP7Psf/+C4=; b=iwvtcDy6D7/jkzmJDJsfJJhgsqdhWV9UrKRw1cS1OdD5T7lc352XPDd0QXFdOCMx1EdjIXGAfAK7kzFdQwNjwdE174ywh56nzB8MRf3VNNjVqvu8YhtVFfP5nkuOFa0DbCpvDmBkRjHvPwGAxk9nwqKX8Sx8/qlEt0jnhgDo3NUaccaWX1lE2Umubp79q6wUL1zI0/f25tlMdOET2mu61pZpopLcV/TlF9rBU2AiCHYeN8PUB94jx5vkvhPvfkj4OiZcqq0VKEKoH2mJONkFQzb0P1BMoQRxuv7PnR/YMxr3wQqnEpzYDxmZ7eFkGnYIkCKuetlfyfLzpTo/BDKUXQ== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 23/25] pci: add a pci-level API for ATS Thread-Topic: [PATCH ats_vtd v2 23/25] pci: add a pci-level API for ATS Thread-Index: AQHappeC13mp6/hTPU+N/vB4OMaWEQ== Date: Wed, 15 May 2024 07:14:21 +0000 Message-ID: <20240515071057.33990-24-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: c6890e1a-d55a-4bbf-d78c-08dc74aea499 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?wLfqYFpgDHKO4h9jeB5Qlpu3WCVwl/C?= =?utf-8?q?NseLTCdQrmX/dd1Eu8yfH9536C5Y5j7LclHDkEN0k1UI7VtKqN4d3EXsXyJ1ev8Ib?= =?utf-8?q?/pOb4yxiNnrZgeWEF8fZVC5FUj7m0dNotEOIfijmmaVj8KL/9Vqa/OgMkmn9HgDbf?= =?utf-8?q?xe27V5p2JrldSL4Wpycwc1M669ygS3Fm0ydNCWvzHuBRCJdVFeo+AbWDLc9beMjrQ?= =?utf-8?q?b6Yeq++o0FfHvBlAUUkfV4etXcN/js8Zt4WBGu+YmbDNCBjkLy0tn1oqkZ21Ci6NN?= =?utf-8?q?nGziJSYAxH8P2gPNeMJombwvrRXnk7jqBJAbsYZcJ5uN21P3HLUUQTmOfu5k+08gP?= =?utf-8?q?FISsjXUdija/zKmLxnRL+rr7/UiKZhrlYKESqLB3op73W1DvKn/zWGJWNGA4rld95?= =?utf-8?q?cUJXuvbldLiCSJt3Lc1B5nul4iYRPwJst6VYPXsiZ/XbK9fZxYpHsFpnT+j6stqg7?= =?utf-8?q?5D2UriiZgCkkhr3jGAD0nx4kANeasto/hPFQJs/S5NXfSIB0rgDosXeITzWmK2myc?= =?utf-8?q?1mn47Rj7s3EevT9C8lUyTNT/nmWYQVQLsBBWOcUsCOQkIxVfB6I4HhtEjGbMYrIko?= =?utf-8?q?qPfY7fp6QsaMehbFJPDLcHlRZoXDflkl5dN26t2cBcp/5rJUCjwOojhP4kkml2I5N?= =?utf-8?q?EEMcF8F1MITT39dtLXnfSqBrByKoASu1Y8x0WF9j3ZB9l6Vsmqu7lTlBje+ciGtXB?= =?utf-8?q?y9rkKr3FPBgMo77fRsdkBxUHujD0bmKqq7hjXtIKwFncb0lFa+QDoIBv5hfpF7gaX?= =?utf-8?q?e7O85iNyY2It6bwhf9NMEYE7SDVynvm8lMp68o9xztc9mrjQNj66eJIgRni3PxPEt?= =?utf-8?q?Pnprz7v/oStlCy52ZTReB2+GouYzs4ZMvq0xFDq7lG9SEnR8Ye5SRWm7wMcDX+Ufk?= =?utf-8?q?Lj/8sSoRo+SkZaFx4lURa8pkL4vdiOOzK/fIjICUpiviKJVutLYJpyn4Gwy9c+aZE?= =?utf-8?q?otxkjbQclyi76mRO8cG8OyDVzhwEFHk7tPkeHQeliUnsZU5erb1xQB1e5gaGNUJYx?= =?utf-8?q?+xF4G48IF/tPbfDv3h94oITBfgoYnZ/XXxD6XXKZ4/FjIRHNSVmIqmZF1qk+ZJ+Y2?= =?utf-8?q?2+mUDGsVULE/eY2cWE1d3JiPaQh8hAekd5+fOXAylgGavb5oAPQyzMzbSonAScRJN?= =?utf-8?q?thct3v9ijLWtkwIMzOqOwXgWMe05JjXU4+DsSoRYdzLAXxhmdyTTO1Op2GHsfkfk6?= =?utf-8?q?gi/5JZoheOohc53PE6aAAVewpP4K7HzUgGNeb3h+tSp1QhvsYjqsLDJbp5RDts5QC?= =?utf-8?q?7DpuvRR7ueVop2xVovrydkdYPDZsqn4Cw+g=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?alqTv5EjzPHQv+ZoDyio4GmEsA7x?= =?utf-8?q?ezZBkzljga6eAm+hgvX7CmgdQ0LAjPrbHDA1jz8ZkNJO9qtnq9P0JrqtKdp/s2Pzu?= =?utf-8?q?6aE8PVSo6Hs7Z34EcE4aWWf6PBC3y5sHerUbdh5FEAWtr9opC9aixA4U9uvT4V8lY?= =?utf-8?q?gPpyzqeRpCM0ye2oVvSobvxT3wjDKbUMAUxcExfeuDrK81REuyf4z0CM/oFw/xExR?= =?utf-8?q?TGXnvbxc45JO/+oEbTbC8Xf8pm927lj9EymEygFnvbJQthqQY4rimky+gGnHSyddG?= =?utf-8?q?xVGvG48kQyDdBVzUWqJ9O3tfAiqKRj9aTEW2K2q07GDxK7nPWguIeUBcpvU57TZQJ?= =?utf-8?q?4c20fftjfS4zYsh0/j/RaA51cQTY4lIFsuxdRpoNdYPrEWo9pFLQ5I/wmvNIRORgU?= =?utf-8?q?/m8SGVk5vl9SQzGqKjU1SjRgrq36I7A8hALl/wdbY/J5PC2yhT8lvQW8FPMmzTA5B?= =?utf-8?q?59QDvn3R+NatWAwMsrt/Ke+rkGle/PM6G7QdNwqksaLgsUXyk3t49n1z3ZdYoxKwI?= =?utf-8?q?6jEnKFWSLD1OqRBYButh8NDU1VxT2gQcVxUKfqfomXDl/yeK+PV0ItgcgiLkpHF+g?= =?utf-8?q?UDoKC7wrvYSoktUVYl9NFC05BSR+XnKqbADd5724gIyPzuybuAXgoVEU9qgYfFQ7T?= =?utf-8?q?YcqSaV0kP1PrOMXGSYRc6NuGOuqjwN8Yk4lzbtdXVzhmtpCAW5ASxkwkH04pIU8rB?= =?utf-8?q?5qfab21ZCmf1zJ3gIeeI6iiiCfvasSd9mHxxBDLX84K9pop6Z2QXp+0xbzvvkA+CH?= =?utf-8?q?uA2fVXUoLA0VjJYfXdfd2mlsKcVKT+8OglEmZUOcjn9SjeS+YusE9sCnMhMGUt95h?= =?utf-8?q?G8g8rrbapVq349NG5d6EKJs6KzivraDi88Oel99MSuQJUu/shrmBl35GftP3PaKE2?= =?utf-8?q?d5cc0e/l70Ozi4zWLN+yfRaAJjvDWxSCLsWApM1b8CR7wGN3eteCQ0Q0RqpwBL/Q9?= =?utf-8?q?sjhfLi4SERBrw3FuRiYdlSjxEg5cpSbv7J6QwSaW4WHnaYEKjkOOh741IuzOb9NAA?= =?utf-8?q?MAeU9ca+h6X+XvxAgKCK3dTC4b/k1kzXcnNCqj51krN/6S8cAitKY882egV0vor9B?= =?utf-8?q?NULzbjyK91B0TSQfWhOpKodmfyNte28p6Nll54F5y+0n7p51h4w66bzQaW0miZI4z?= =?utf-8?q?Sgnx8ZwvR15MPqSQT1hM/magQkaIP8TdQs3enbH5VB5He+y3uqcT9Dy915h30D8ba?= =?utf-8?q?6GR+7N8OWIccfKIZLIKMg+PxNgympm4Cj919kdr9FbCuRYiRUm89sZIaaBccYZUuY?= =?utf-8?q?sK2YV4VjlmzK/akYgxq4dOWj3yzbNH3LwBPgxqZ+1kTHI4Bsfknc5uu/p6EMplrUJ?= =?utf-8?q?r5UXodauFaNU14GQF74S/lhHW5zY0ey/j8Z6kCdxQN+lt5XaBvcaQWAK6LEjkpzql?= =?utf-8?q?kE2QU9LxficSAYzNC5xmDzQoMwmRR/fpHf3N6CPnZqCqY9d0Tssq6cc7Alyb7vFm1?= =?utf-8?q?tPNpJyDCRYPa6FLuV3nWaxpHkJT17YZc8pnyMPClG+K2+6avg6Cr8xh7BSaIEK1aX?= =?utf-8?q?hPFkElh9Imoue1tSrj7T1BROxjFA1c2ciVHhHbBcVek2RjHf6qhFL/U=3D?= Content-ID: <8E32D1496CCC9D428814EC5D434F237F@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: c6890e1a-d55a-4bbf-d78c-08dc74aea499 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:21.4259 (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: jxVsZMgVswgkwJQU6fu2CPS18AYsplnPnOBGHbC9UIvTmSA0QLw+WNmh0FbPEU5IYBhB9KCs6/5vRiEz46Rqr/b4sQMYOqtAy2vHJgrT2/41wK3W5is3VBh4M2GtwdkH X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 f90eb04fda..20b838657e 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2831,6 +2831,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 Wed May 15 07:14: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: 13664739 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 53574C25B7A for ; Wed, 15 May 2024 07:16:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rj-00061D-Sa; Wed, 15 May 2024 03:15:55 -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 1s78r7-00050u-Gg for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:20 -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 1s78r1-0000oW-4u for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757311; x=1747293311; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=79+D25oBaPoMjf9fMPZ/2SPwoo4FJ0Jwk2KUD7UjEb8=; b=fC7G19JzEFXngo+VZWeTHNBnnTE1IbrvYGdXYPqpz4syONn/arFzJZE1 K6lv7/uDcamSLXloxkRgYOvUyoXbkMoc87PPrDoYk3bQ2ZB6v331IYqeR JOf/D/zZDUnzdlH+aXbCzSRWSrJMV/Eo5FHdLQFiFD2GPMgYk35GB0dbQ s4z5be39j5jyl7Y3TKqgZ83o24u1cAGJInCsI2N7/2J7BshHYqhXD4K2/ 1G1JSUFabsonYt3yf3kH+iq7c10nLUWRtOTUihAevo3ol9CYj24Kw3qPE FgFYnyZq4gjyUeT4h3EhVIXD0XZF1ONwqdQunPmJdERdMPayn4b/rXc7k w==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581815" X-MGA-submission: MDFTp6OHjzhp7RWTi6kCZkZIr7fko7SNmiFLnYkt26F6eX4XPMeK7jcdD+I2c8NMHf8bQHrSZ6qcZnIHQihBzwZfNkyGTXlWqAsP2r53CdwHrnx933P1oXxQV1imgpkL/MVxfVtAKJyjNeMIqzZM9GiS9oHXa31XvUb/WQlsOWEjrA== Received: from mail-vi1eur04lp2050.outbound.protection.outlook.com (HELO EUR04-VI1-obe.outbound.protection.outlook.com) ([104.47.14.50]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZzsEFt9xqQzez0PC6HbpLtIiGmMMH81J2Bj9MbUGAV3ul2CMVWk3Y8oCck6ufDzimRqpv5qtdYXUB2S72NCZIxNGWfacug0gy1h7m0KqznozYHOAcmu0xsbO51iwCIJP36oaM1EBT29nUZpBijsVZOktVQhJ8ar9wp+Z3Kio1F5DtWbCxqlRWAqdFxTBNFybtbTL0RpDC6LsVkrPXH/yXrx9ZRmYRAqot8O957rtSkCugJVcsBH1wNW9ClDVjToFB8XwX7yw/PAOwrpZWA3llweHwFV3JQotJI6k1myDPNN+fJ9l8hNAMoogIhrIm1ooUwGpE7V5GextXdNMN0sdbQ== 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=79+D25oBaPoMjf9fMPZ/2SPwoo4FJ0Jwk2KUD7UjEb8=; b=Hydo3OwMvt6h103LqJc8DhdkAL1eqtqR0A8vRvVZOTPqg7J5BgHH7l5NSdnkCizUbfwlzgj3wmLYDQfuvW1ErDqhTaHMsZf368svj4adZy+PfRZyp17bBZJ1nDSTBrBoFHc7sFUm96EMXiz51q3MDZibBzwBqgMGeOdxkAbUPYuvJEIgvV7JGDkkiyza/OlpbhJ568tKp7itBjPIGWVxeSASvBoVCRNQQHg8N23lzdBTGeNWvtDVVAvgH7zAVMXvZbQu4gA9LszwF4O9bFlB54NvSHMHV5lgDaBMkBrQ+6oaziBGU8sEOzDEQKvUSWrO9fv5rSR224oKJd2Zs96b6g== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 24/25] intel_iommu: set the address mask even when a translation fails Thread-Topic: [PATCH ats_vtd v2 24/25] intel_iommu: set the address mask even when a translation fails Thread-Index: AQHappeCe/bWBpU6GkuYFT4q/AqGqg== Date: Wed, 15 May 2024 07:14:21 +0000 Message-ID: <20240515071057.33990-25-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: 9a4ebdd6-92ea-40c5-8986-08dc74aea4c9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?g3fnJhPbcf+G3LPxuWywzgKE7KELNwA?= =?utf-8?q?3XlD5SKUrZTDEdclubhSGFkdPnU+qqz8r7IOxXppYN+ZYXbRCY1Z89qSWsXCxdoSc?= =?utf-8?q?GlrqGsFDUaV40kK1LkVaqSRXobitTrmwo40EIG32rzikGNIZGEd8w0SNF6yli00DH?= =?utf-8?q?XzNd8efdXpPnojCDM4NN1QF66Unncdj7mt44kymp7sWwTgREKvXqXTvxE2XF+a/0G?= =?utf-8?q?jPBrikqd4ikQMYPwSTanP34/fcHJRcrQcR4iIVawQndmiJpJDvQb/IkmXslxJBIi8?= =?utf-8?q?ds6uBK79gN53wvAGd5WNQxnyYmIdR5JZVY3Zk4ztnbyzG4ZFRJAHLpMdUHqVyjkFC?= =?utf-8?q?7kOz8/9Msfjow+sEE4bgFme+J9czRnlPAECbWLuUrh4WuiDZRTPThXGGQkmm5KO6S?= =?utf-8?q?h936PWIzaKWjcclyd5r3vKsrR7+KDmR/u0pOy+zeFaEcQpT9dJcuqVi1+T0uo3QaT?= =?utf-8?q?COPaQ+lBSdH203BBZnA4RKqAKcXRQprTBFzI1BzTq2t3HAC9QpPhdKv70xzqQ3Vmo?= =?utf-8?q?1/vo9yScgANXA1iwR1w+JmRHr3OJr+PU37x7G/90oJfUsqOWyT5k/CdM5O4BVLmw3?= =?utf-8?q?jn4DSB7ecB7qWJ8DexM0B9T8mgO8tEqkBhAdnzYAgVN0KBrWYPbhpB8bSvQOdQC0P?= =?utf-8?q?852+upRDuqMCC1ReYEtzX94g4bkvICXZPXME+BGfLBKIVhHb5b2wkJ5grpV/RxHoB?= =?utf-8?q?pc0ztFCRZJnzJP91z9D3DzNUm8DV0xoj4l2LggpbqSw/4Sl70OeRBcSboKgCRzBdz?= =?utf-8?q?ZraIhNZcYdt4t3us4hA2ORbv2Lnr/HOy4MLMP82SM9Ti0ZpxI29T3G8aPjPejiyQs?= =?utf-8?q?J/L20AA8icgn+t/cCwwjPYtaicuFksEZFcc8S3NIOxuSiX9d5aP0aWfohT2gj3EpH?= =?utf-8?q?hK8tyIw/zXpi4mgpbHzjD54J2TY7J+mRNXSJeUlGx7E37B5b2qeywqaOvXkOvpU4Y?= =?utf-8?q?ZlQQI8ErTEM6n/LJHnNHgFEC8Rjst07fY2jsgKi2NRm9YXz0vQ87cvD31Jm0mp+sR?= =?utf-8?q?7m4IRKtWPD+1MLcZJjtFTZGSUM/fomZlDB4N20U2jUFB0QqutEmHEwhKofiMthq8x?= =?utf-8?q?B2wi+CZN7KSEADp66GCdndhm44Gk4v+peINLXSqJSpcTRSNqgPCDtioYct576wMOq?= =?utf-8?q?VqfGNiJI99CHroeyW0Ca0ycK7CQQcUQiZKXelz+w/uman4scshkC81DJICsLGYiAA?= =?utf-8?q?5NczKS8kZxtse0xn9pV/QVFhUcQ/SknLZlZ8OVuyY9m7IERk/rAYd2CGiHWJAPnfp?= =?utf-8?q?c3zM//FzemPhvwRujfPiD8jDSv0kJJOus9w=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Q1zL0admcUA7HQyga2Y7m4JnvpCT?= =?utf-8?q?o4tL34H45/Vv3Ru8rEbE9C43Zvxe93Pemu7hiAv/oiYoM2P2eWCNHOxAyrzp24wgg?= =?utf-8?q?RJnjR7IjpmlieJIGZXP5hVNyagn1RMTE/4CKH4h4OGu6Dp4gWpNRlrzx9xk7eAaEq?= =?utf-8?q?etnetF/2dmYTdLJj9JH73n7//fxXsc3lqneHNpH8HRNv6D93utWwd4ZRVGYhG02X9?= =?utf-8?q?48Vo8nlEuD7mgOYW0YyfAlXKzSz7FvHcaG38tzKMQ+DV2qNfZyB4qcklAmg8+QCbK?= =?utf-8?q?J43T0pGV5nDC7a782ffl84laEdZVP0Zyn6ebmfxAEQEDw/TqYVvFXIy32JzmULQDU?= =?utf-8?q?yfyPT/aUpAchIKO3GJxPDSY83wLDno7gAg28OzQwonztdJ7vCEazLCK8iJjDWeuv4?= =?utf-8?q?c0KgwZwEIbTARt57Xt2BzM3R4kJRSqKA/0/V/uMBoBLZ3oKfPUh8HYHH4xCPs60XY?= =?utf-8?q?h1t+OQQL86jbSKSiTfx2/JK9veUvJ/4nZLtp9PpKTAAGSXMbfvIcmjAjXHW8WVX8/?= =?utf-8?q?8mLshS0g+SexuF8j3Ga0324AAcqSWENTPMyRXO2T4xK22MSLeokZfNQvvrJy1MqYT?= =?utf-8?q?xKut7V5cOJLQyED7v5Um4pjx/Coi5Kj0inYJkfFIhZmZANBkPl9/9JSkEQwdtUoWo?= =?utf-8?q?b68zXcz42yhvIOF/JE3YGmid/SxK9baRFOv3UTfr+xpmS2cUdiNUL1W/ET6xmQPtX?= =?utf-8?q?Ge1hCuDI9VRgBGqV5o5OP4H0ut+LkON4sc1egRle9KKCSxNM2KFIBlcmB0y9y+m77?= =?utf-8?q?3RhfVptfTxZaj30lUcSjzqDrD9F4Fa+p3AN4RE3cH/gKx/IsdwYGRg0xyeuZEtWhR?= =?utf-8?q?22pBZ/epnl4EzZl0D95xBDhaGl9MAPZL6Bg+VqO1hGdgeLBaImz4hMmCFo3p4WijB?= =?utf-8?q?buAwkXAfoHemGNYEIOhVk1OubNPAf6DVVT68RDFwp73+7IYTXZvcFUwJWzERuKXwn?= =?utf-8?q?74NH5VAvdFZEAbn1Ic0Xq3hlLraLBWhOQpuYoTiNNq9zw8/9o6rzx1ov1G4I8wFAO?= =?utf-8?q?Op+JFTU6AF405kVEdFY8HDyerB0VE4J/4AL8nYzriYQe0TgQuIFF/XsRm6L+1tRY4?= =?utf-8?q?jWYdp9qSb5HftXi7ZYxk+Re4UjOwQuN9w8LH/F3su0CRSS2gYmWqWHXrHlWhZE5Hg?= =?utf-8?q?r7jqQ3SxFXUlQhOsYGwgMN02o+j8ehDkJy1knBVhU96zHp+MqWYOrsokwrGnwi0zI?= =?utf-8?q?aZl/M/VemTmjcFcEYm1QNoGAICOBQwRlCv7xroRPKYxuouKEUBS55QWbw03vhUDb8?= =?utf-8?q?1XhLw6WYV/ckwu1b9qUsf8DAF++h8PRrjUH6AjB6bpYSUgzhU4mLT7uXUq7434P+9?= =?utf-8?q?Nmyq5isFYnyipOO0lanjrNepj55dqp8L04gSYeStjgm06a+0Wz04JjSE4CjTRYjCL?= =?utf-8?q?HAUQayo19bBJd5UqiTY1yAmkpa5s+rilDMKBH+yf+q5vKGG2sLnOXErD24yonZmaJ?= =?utf-8?q?RMnJ5ZUUwyU0dbi5ox2gqCPuuUP+cYWS+RB/rLMj5hfbxpRtR3lzkIJlhnU2xe6Ie?= =?utf-8?q?pqGSQXTM8yr6UGkvdQLfvFG7dLQKzSVespbVf9DSbPLODzSvrDTbG6w=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: 9a4ebdd6-92ea-40c5-8986-08dc74aea4c9 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:21.7498 (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: WSP6vqeGcUIS+0oshk5R82CdDQ1wDHpl0NxLfhMAijAAKB6FAZwpPVYA46DInuCc5i8eh/1y8xBAHdwmK9SryltsalYJ9QeV018bZNGutvGyXoKXTD4DynBPMy+52o6n X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.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 c4ebd4569e..67b9ff4934 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2164,7 +2164,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; @@ -2306,7 +2307,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 Wed May 15 07:14: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: 13664782 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AA7B2C25B77 for ; Wed, 15 May 2024 07:19:20 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s78rn-0006QG-89; Wed, 15 May 2024 03:15:59 -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 1s78rF-0005An-TY for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:29 -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 1s78r1-0000oJ-RT for qemu-devel@nongnu.org; Wed, 15 May 2024 03:15:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1715757311; x=1747293311; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=aKnisHdbFAfgulEF7yIkNe9+bvQwr9U5G5fWP8kqic8=; b=nWN8KDReeKonxkijvqwiAJpYR2sET/OwUB+ub8cMUKMFuK02sjXTW03b /cSLWa51g9p+5F1481f8wfVGC3OYHdskdk6PswlfjZ7DNXx0lhfcNqb4b Nzo218N+2i2eLnkruwhLgEmHI3gq0uQ/u1+ZMrON+r2iAkUp8mI2Cybmb UuTrF+vP9OcTs6q++PqYtwExFCiYZNugFtWq/uUJqJJuFI1Z0ySk29NcW 4tIOlp/6Oq37SrLLeg/nngrN64QkIz3hXGMVw2cr1VJH/aUKT/lxa7G6I M1nB2zBjCsJO+6BE60h71HKvWhLj/peFs9zzH2dufBniKWYRplbsnXuhV Q==; X-IronPort-AV: E=Sophos;i="6.08,161,1712613600"; d="scan'208";a="12581817" X-MGA-submission: MDGXDm6pemKBV0ylHiqvuQNKgFoMO9nhaIfc5Yre/TZYSDYfWstlXbZExqBVKXxQhopXc7kMR8DgCIT2Vu34jyDHgfRRR65KcjSr0ZHuSzv62qkn208mPNoGwuPXiypDktrwymCBfjMSyspJqDXMaq78QEwIv+pcCaL8hhoH4SgbFA== Received: from mail-vi1eur04lp2051.outbound.protection.outlook.com (HELO EUR04-VI1-obe.outbound.protection.outlook.com) ([104.47.14.51]) by smarthost3.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 09:14:23 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KL3WAGJBDzfVJ+YKzNZJl8yK+7NSa3ToEAuAkm/S0UDomzTasgxYBA3LDgl2uJMEqBqjomrrPMtwBe8yStYrlA6rzzl3lykE4Gu99wWTayssJJhqQVwUPHmK/3MAyKv836eHibpV3FhBJCZERfwSli5gg5PV0yI+IZEmrhb5ynthp/hmb8tAZVhLxhZsytHNI4ULwAYy45R7ixgFavBfK6mI08F5ZxzrQuuG98BtgRePvR/OVI9IncWWLH31PwT4TQPiFGLNIILnM2UMv8stnv7SvHHbfNGDUutYvkstQfnDNgcwmd6jRUpVj59O5A1qSIvJx20NrI+v4UTbwZGubg== 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=aKnisHdbFAfgulEF7yIkNe9+bvQwr9U5G5fWP8kqic8=; b=R8AI0y94YrBap/HVfoT5z+9L7rzCsxaoyydox2R3HzdkgD3gYhfab0RAdXRKoJDMLVQJRlTCKsnNa1ZPlXedellDC+1L/XAS3b4SYMiOK5QzQMYXXTyTUUH/g0tFoHaRfG2uEw5LPcDE1hT0bcxbN0g0aDtyczKv/HmUe6g2v+HR9gfkS0Hnf449PQJVK0TrBhYTS07uZO1hNlQBEDvozQohVDaUNDzrXFRMhxdqn8O+CGuT0lcPXMZK1Ckodk7YamKzkxSEJHNpBQkc6H1WCZ0ibUiJ1Z73w5/M4TxHeGNFT5cai7oQMbvqFdWHL6ztSkfgOOPFFYgfDXnXgaU4TQ== 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 VI1PR07MB6718.eurprd07.prod.outlook.com (2603:10a6:800:18f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 07:14: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%5]) with mapi id 15.20.7544.056; Wed, 15 May 2024 07:14: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 v2 25/25] intel_iommu: add support for ATS Thread-Topic: [PATCH ats_vtd v2 25/25] intel_iommu: add support for ATS Thread-Index: AQHappeCjqBaENfy6kaXOnkN/YX9aA== Date: Wed, 15 May 2024 07:14:22 +0000 Message-ID: <20240515071057.33990-26-clement.mathieu--drif@eviden.com> References: <20240515071057.33990-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240515071057.33990-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_|VI1PR07MB6718:EE_ x-ms-office365-filtering-correlation-id: e560f823-9b38-4619-ea1e-08dc74aea509 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|376005|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?b9yGM+HTazUf9ELmU/3TBJq0pZ2ap6V?= =?utf-8?q?Dn0R5L5+BdRJAuBoPKqPEg1ymrEViGM03XpJcLAbCtIcau8nLy7Ch5JBOeGn1Djk8?= =?utf-8?q?CJWh3Jr5VZNOFUSCW58bGCeh+AC+ltgs8Q1Wu5xspVn08ro4syMjDMGGIfXxv6F+N?= =?utf-8?q?vecUleSml7LCH4gS/JJDTE2Q9xGiGexmZNRErbtFs0OKMcZynKIgO1MlCuKxVffQy?= =?utf-8?q?C+sZR91MxmVvebvdLGC8sgW8b9Hm1eagt2gyta/bg5ZbexYqJTgQNpDJnT7H8xKXn?= =?utf-8?q?JheVoeaEYuXy5MsYHavLuibotdIaV5gZQ/2u2ArUNs2MT8+w+d0Vx4/yt24tzXl8a?= =?utf-8?q?sCHe43yYlS53Tmu5zHkyU9RFfYzYu6jSGoSO8+CjQaUiKx9UcqheNuVgomKbL1uD2?= =?utf-8?q?u5noAAvsdWSL+qCkhKCzjmvgLFbRmWhMtfi0sEkaBtEs8QPUgMR0LRUT/6vGGHEXX?= =?utf-8?q?ropB7eMJWVXMqU3qcKGCZ7tyTO+m7HguMTH3MCMvKyJBtY3VOyjEbiURz1vunyMjD?= =?utf-8?q?WC30n7K0a90pvOCaHHmTm8O3iwG4bkxOFOTbyBCRRKAnvFpUO9uYc6475atYvLlq9?= =?utf-8?q?sLEZoHtBL3O7iDKA6ruQrL/VcoM9sycjehwmQc5OnjibZCJh8AK8f/ix5TQtPHtw7?= =?utf-8?q?BvYtTHkefkTWFq59KB0Ja9JfAfkeNO9VDh0vfEv5yzWgnlj7NC22S1rDXRV7cxj/P?= =?utf-8?q?Dil+QM5IO3HQGA/WF5TcSEJHuZmZhHLZ93Nq+0P3hTBqMahMNhrluDUBTfihxCqG6?= =?utf-8?q?WUWNlSkak250yRNT2kS+AzlCPyQWftEg0CiH+D5yNGMhh78Ysg83Cl8udXY2upXF7?= =?utf-8?q?Vii+ioNr3areH2/UFKj/hitxvAWNb6lSFGQxDt2EeC85hEXCAa+h120FC+JwBv2h7?= =?utf-8?q?9nUTLHSVnWnbWX5t/7o71w3nsz41j6RTXN2mw4LyVDpld+4m8Cs5xtINnxVltqNpL?= =?utf-8?q?R///yqWCuN3TCtYrTo/x+XZ4UKmu/vP9gnM1nOYpeKpZMnBRPcsr71PAoJ8ajT5OY?= =?utf-8?q?2VwiPt7SCtuJ3XI6fdbnBUia9rssdZBN8ACmwd+UYRIdE9yfKhVyQxclJ1kDUgPru?= =?utf-8?q?FfH+gpKdyNMXGcMW3Yz4bBnDIZVP7Ur8wLAOjlv3wZppNCzCDv509SQKj6hxDYie8?= =?utf-8?q?jjKN4SihwHWz3lMTSJbrAl0oNeeOGWJ0m1ymAphzHcrdyQbh2wU1KaqYYfVicCeHC?= =?utf-8?q?lMwp0esUKIlRw5vjzKhiphfxzuQOfIsVGoLjAX7/W8ifXWjuBhmnzyJtG5tO3e9XO?= =?utf-8?q?gg25bxesmP78Pp8WU/otvSNnogAMfSngKDg=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)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?rjO9ILBn+QlXqGpY/z1FP0CDsYKW?= =?utf-8?q?GJw2CHS/PNF0yG7KFAV1VbblKNfTJGkFcBFeW1SGX3gfmZlqhyVA/r1apC+RrFMZe?= =?utf-8?q?zq2cjIJSrLdOz2bejoVuwCK2GpD0rfCyE7gi3AM7bBuHg55lSDR+3pQLohEe587Bk?= =?utf-8?q?KnAYcCpHlemkYfH+yaSBDG7hjwZK0TlxSL2ATe9LxCvFwH3g+PNKtub8EdlmaMjIK?= =?utf-8?q?3zYYFap0uf2jQFXREtzpjWLCx1V8PE0dOO77+rYEeZRePZ0mmY1oxocvPrHeCYSgM?= =?utf-8?q?p34m8WtDWHsL2uy4dcdEep0hPyfkdA4t97qnQIuuBwSXNNfjaC8MsjMR1b+Ye1Sfn?= =?utf-8?q?p4d3+IGK+yo04HGPPH90RMy4ByrK5UdvaMaDIqLrNcI8QbRGcuG35VyPFf2JbQTcj?= =?utf-8?q?56BUVgwf0RpTCa4+ZLXFLy9UZtSrxfzHnwrL9W4x/W+w6L41/QPQSW5JDQNAc5Qy7?= =?utf-8?q?q0RUb24vGbA9szjtzc9SwfOXIaJ5xk06Gh03oiYAlu2JsqGSmNnqBzioPoE8dIzOS?= =?utf-8?q?XCe+ucmyFkaFNgXNb70nrOjA5rlLInIxn6X/glMIal/jOF2VPq7I0qB8ZlT5+XteH?= =?utf-8?q?KigwyRrg7/iYJJeBj8p4LpQzm8DyX6rPYICVlpbX6syq96scdrDcFzxYO8pYOJyJt?= =?utf-8?q?zbPBxGNfsKFGylxzlUhtJlylWC2HMFiZdWz9TSaEWC6Xgww/VVyEawNrTd8AMeKui?= =?utf-8?q?+GwWRpHPJTLo7hX0qM5END69qPMOMwVwyQlCs/YbHJNLLJ+/fESCUWc/H5arO6THo?= =?utf-8?q?k82nF+LsLzOhDF4MW8cDIEVdmqokYGyAvtD03v5afSkIul5GXdMHIR2ZYazXGDVvO?= =?utf-8?q?wF/FKN/AVTCl984O9iaGy7Vgf80qPB1dCmJNklwphG066nvMR7OqzMEO0gtg9LWAv?= =?utf-8?q?C3oSJzadWP7k5gE0HUFiphcqTrae1kOCJORn3Kks99C7Yqrxfrr5jK0miOBz4C/DP?= =?utf-8?q?pVBWCrgDI3x8N9OnFT/ks2UaYSreDWC8ZQUbko8cgEGIqQsV6b9wuh0EoiBsyY9G4?= =?utf-8?q?aKJQVw9VJOHWN/jrq4KkIIo9htYGZbZMWjbIcgK/Av/HOmTlEHjXNN8OYPBk1ddcH?= =?utf-8?q?/bkqsbxmO3PJ4jVyfryKtioESIX/9C4jt2aB7tCrVyFdqFa/Ww0/lDzdHsZK9UGhc?= =?utf-8?q?287L9rNiOaukwEVwOyd/MG/atDFx/BHCYQOb0L11HZw3Lm5tR+TroeSR17nt2Ll1J?= =?utf-8?q?clYFci9YCz7FT+y/ZxgaVPxWFzcohE3GICt3tqoSSFDLoHGpjoIC6HS8BZ9ufMCWf?= =?utf-8?q?Dcb4MyQC3vWo6v1dmCcwo06jgAnzR1iT3ANMcD4icA/WpdtNrCUHqIPi76LJSbK1R?= =?utf-8?q?T+HjDu5B5iEDlW+CHrqJt4QRoPmMPNaVCDmMN0uTiE0XPVUV9JyHRRY4AtQmmi2OR?= =?utf-8?q?DdENPIY2qL3nc+/AIqUO3Ioj94sxArRUA9y9BXyG9ZV3im2ljcu+Niek8eSuFq9tr?= =?utf-8?q?DHEf6ZiVKzxccSRMolxWi47UIkdRl/TCWELpS6KyE3lHHPJWGqFtCrAgBtBsuE+1Y?= =?utf-8?q?K4Wk0vZKYE8SrekAzcWJytrvlJ8pg97GMLzG1/c/r/EAIXzefG499g0=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: e560f823-9b38-4619-ea1e-08dc74aea509 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:14:22.1185 (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: YRlVO/4RKl0tZbvBPClQdtdT1nMzusoPoCUYqgFJ1s/uDMmx2/jJ2JUXLzqi6/7mMMa6dKkpqUBS28GeAAMo98gWzeK9LPlQeSZkYJ2GuUWC0ZxCuZJjQVYn4KCq46bc X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6718 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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Clément Mathieu--Drif --- hw/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 67b9ff4934..7421a99373 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5394,12 +5394,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); } } @@ -6024,6 +6022,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, @@ -6230,6 +6297,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)