From patchwork Thu May 2 15:29:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: CLEMENT MATHIEU--DRIF X-Patchwork-Id: 13651806 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 D439BC4345F for ; Thu, 2 May 2024 15:31:05 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2YNU-0003lv-2R; Thu, 02 May 2024 11:29:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNR-0003jP-Bu for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:41 -0400 Received: from smarthost4.eviden.com ([80.78.11.85]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s2YNP-0005yW-9i for qemu-devel@nongnu.org; Thu, 02 May 2024 11:29:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eviden.com; i=@eviden.com; q=dns/txt; s=mail; t=1714663779; x=1746199779; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=yH5QD3XjZARI9NR7JHkHrpYtjXbw3x4j6DHe+Uk9p34=; b=toMgdF567XjLkFcqXXqv+aabqQrkWROcv71vGfroQ7f84jdPi3zxs4WB Hj+LKn7uoKB42roLCXe/tX2f4/akQFXEdnePAVM1SOhaRFXbEiLmrqPlg IYOORXuuDM5Hl80nfI38cku4h1jixAz7kKEU/0kPdHy0nNJ0i2PnOIcRf UceCYs7j0ykX3NbQKK+808JkSx5ubmqjjDmxpfnsnyPSWfOflqTomqw4I NQHvNNwq36P597RwyZ0+m+7htSyoKpUBYJgsZ8qnv6LSwoB6L8Vjf4F/f 3vj6kOVBLpKKnSghRhbn1YtvnMooWrgEZQ51XhkMwvkA4fgtSZtsUCT56 g==; X-IronPort-AV: E=Sophos;i="6.07,247,1708383600"; d="scan'208";a="11785878" X-MGA-submission: MDHxsaKT8oGbN/KCLq7J2z77+Md6gV85rvSIofeX0HwGZWvHc30MwDGwm4Rlzio5nuJ1wkOBkTKuuvn3M0H1IWgJZWqbCUUr+yGVt1VBUj61zYhoxlCH4Rg2l5VVRLruYN00vmSZRDmlIXYp3s+pN84yqSl4MheiYEsWOP5HjswBvg== Received: from mail-db8eur05lp2104.outbound.protection.outlook.com (HELO EUR05-DB8-obe.outbound.protection.outlook.com) ([104.47.17.104]) by smarthost4.eviden.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2024 17:29:19 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bKAoig41CblaGdZvQWnJThAYrtNea6rYTWfuOSZqZC9w2Ywai3hoIfFUqUS0k4DS6gQ0Yz+ELkvjKvpgRHhQyl1pJGmkyk9eEBdG9l0qLnw6X0Zc1NKPKfOEbYhNY+1w4bLoG6G7JO9tcVZ1f+u2jG8bblLJP8laiRQZPcnoeYVyeRHcX6+6pcXaAVCPMdjwVHDu9nGlcxgGA2QeHJOeuGfY8+qanKjz6fU1MwRPnuybyES2HVjzvrEcg3BA+8VHdOwN37TjizxTz+1d9TtOReqcYFD+y4fxcVWbhknEnxKM9Cir3+7Do64p3WjH91jjBHSZivfzRZFBe4Mb+nkJlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yH5QD3XjZARI9NR7JHkHrpYtjXbw3x4j6DHe+Uk9p34=; b=CeyVWycabrc67TsChfBm2C44Ap6MogDqU3GITJogJdf+ztTaj27FA7SfsrZbUzZjGxa0cklhIdj7zoDDO7DoQ3mD/TznJ5E6CRO/H/XzVxzHA9oXbHV2QiXr/tUl/rLcOrsT6GyfvlFe4eoOckt5PcAll6Yvj2gmuQGPivgViI9NlvPiRsKzXSCkTFE0UQPeQY9q1IQx1C2lUP+tDsy4268QALfnOnubFnB1X980ktaPVif+HKrP94xmbJeKsdlLn2UWpkFNOAU1iyJzZzjTKCgHAsu/en0YnUWEDVAIiIsjpsZujKjIjdngXqwGV9d1qJJezmkUr5B1BClqM4VKBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eviden.com; dmarc=pass action=none header.from=eviden.com; dkim=pass header.d=eviden.com; arc=none Received: from AM8PR07MB7602.eurprd07.prod.outlook.com (2603:10a6:20b:24b::7) by PAWPR07MB9661.eurprd07.prod.outlook.com (2603:10a6:102:389::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.29; Thu, 2 May 2024 15:29:17 +0000 Received: from AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d]) by AM8PR07MB7602.eurprd07.prod.outlook.com ([fe80::fbd7:ca71:b636:6f9d%4]) with mapi id 15.20.7519.035; Thu, 2 May 2024 15:29:17 +0000 From: CLEMENT MATHIEU--DRIF To: "qemu-devel@nongnu.org" CC: "jasowang@redhat.com" , "zhenzhong.duan@intel.com" , "kevin.tian@intel.com" , "yi.l.liu@intel.com" , "joao.m.martins@oracle.com" , "peterx@redhat.com" , CLEMENT MATHIEU--DRIF , =?utf-8?q?Philipp?= =?utf-8?q?e_Mathieu-Daud=C3=A9?= Subject: [PATCH ats_vtd v1 05/24] intel_iommu: extract device IOTLB invalidation logic Thread-Topic: [PATCH ats_vtd v1 05/24] intel_iommu: extract device IOTLB invalidation logic Thread-Index: AQHanKV/BbmNxN7x/kOFdRktKrBWGg== Date: Thu, 2 May 2024 15:29:17 +0000 Message-ID: <20240502152810.187492-6-clement.mathieu--drif@eviden.com> References: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> In-Reply-To: <20240502152810.187492-1-clement.mathieu--drif@eviden.com> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=eviden.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM8PR07MB7602:EE_|PAWPR07MB9661:EE_ x-ms-office365-filtering-correlation-id: cc74c998-6551-46c2-83dd-08dc6abca1a6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: =?utf-8?q?2+FgPTNGrhfopb56tbTlCjR+T/8jXgh?= =?utf-8?q?KZFsR6rK38bVRGIaf2LQP38IGfQ3MpVj3IrzrJZMzMHeonWVmSeLicFNn1kuTJh21?= =?utf-8?q?wSCTlB2vSQRPguqlN6aVFnCIjDX/i213wtjlrsJuh+jB9DXiHWMHwBMLnD7CviJoq?= =?utf-8?q?UAWm71s+bUXpqYPnjr80Na9auMSdpd/14P34/QDx4QW2uZdjWWkuyYdpUEBpoCMR3?= =?utf-8?q?Qv9BmCvuQCismd01aV9NPksG//NvYvlLJcg6OaCVbn1XgyLoQFNGIcZhq4UNqO/am?= =?utf-8?q?Q0cdwXQsrHerg6No7YWlpt5Pj/a9EC45Gn0c+v18PeiAfJIBbQSMgk4NMeWcuqQQZ?= =?utf-8?q?60oEGJXpK5txhXCAq6m9fGOpxemG8drqRFFSqmEkzyxO/7OPxiUHEAY1ynzyllgeo?= =?utf-8?q?q72X4qI7k/HCM3OPRndAWuXh2GIaIUypowc6NvItzkRVvMyiFLTL2g7j0rOq0lOHz?= =?utf-8?q?mNeGUx/+z93Cx9ewsBN1vgyzv2HYM8wZLyK5TwY4Jj1u7JcSOVF9Jy+KuR/rU8+fT?= =?utf-8?q?Hvcol5wF6Ec2O7M60dsJsMbgqmSqeZE7XvA9Ol5na02kyr+bqq3aPygvp0TKOk7K7?= =?utf-8?q?NdiUPPjvuXk97xWELQeRYdoM+bKceceiNKTwpSLrCdD17QMW6qUtCOdgjYfqRSKLx?= =?utf-8?q?Zao7Df2G7jT1amhfVghcDr8qMsbMyHFmr82fKBkrYo8bR2Urk87fe35LAv0g8rUVa?= =?utf-8?q?ZJD8o5Zghyd7ECJdXfKIB7LPeX8mxG9G3hqs1+v/DSpIsAxeHH69PvBtKJw+/j5hi?= =?utf-8?q?7CwzhT6yV7S3Hn6BgPfe5oGtoqpJOgdnjWEsKA8xR5HAaXeOkgq/AalDkP2HjrlPm?= =?utf-8?q?fFd20GxbC6UQScnS+5pZSIGGx/uoJsLwVZKidBoQlKGEN2iHubhtlkQ7oH9+whbIC?= =?utf-8?q?/5tANXDw178NxxZUplYK5Vl0u9KIRmJJ/aF4cQOkhms+tG6e8HBgqa2amLeVp2VE3?= =?utf-8?q?/1IeD9bej54q9Z+M3Zx9yAZyb+d4FQaz5kr56/pdI+hX2aUKDMl5EhhYYrrWPjZKf?= =?utf-8?q?ZhFAlK0dpCQ/lCatpaKZQ7q6x0bIMC6REkZc2aJhYskVC++uRzIfGxyxZh7zxI03B?= =?utf-8?q?3+/PRyDRYkbwrfJlJzijIMcoGmZFSOyMhuY4AD/BTxyh62JZYI/K2HKiQGifBGm89?= =?utf-8?q?ukwhafztfJbzOT+vyHkIUq9H1fkufxfEYbLGUc1K5X+OI8xbzh5vsUZJTUyP0QYPJ?= =?utf-8?q?orEt1uamgmh1C2HAtS120mlFfJN8mYUTy8dMoRZ65SCTuichnSKV3AyktbOnSKQOn?= =?utf-8?q?zjt+SI2EtfD3VyMcSiXDRfj1UpmqXz/bF7Q=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8PR07MB7602.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?Spub8+5wrBQAf4SOnUPGpqa02bNr?= =?utf-8?q?435oQIRffytAEq2I2iEuIhU0bPDdOsSZHnWVC4wyNiI3/ZzNZIaVOFcM8UIk31Oda?= =?utf-8?q?WHKMpL1v4aqtcu2elj+7Pj+cOhwvpqLgEkJqKHAixIeTCYvq9aaIfqFxruIZNyei3?= =?utf-8?q?ffgm0g+/In54+3YRuQww+A1VGR4dTSXEDhMVZbhn7ReiHXLXPv1L6tFYJ9xWZRUXt?= =?utf-8?q?bXWXZhQ6w4N6usGW/iEr2ZRBjXgdPuCCDlWS2oIG8hieOiAtENNA2bsarSN5XwAh0?= =?utf-8?q?ZKpbejBiB1uq2cJY9J/OxkOZZIuOqnUqjyRp3RGM4TsMIrKld85AnkcmZIUqlb4rW?= =?utf-8?q?xgeM+ueQQ5pA56HgPV+DjpRA9oMDp6y4n5I9hx6AV2+95PCIWxtSJunYJ7IjwWEf7?= =?utf-8?q?m2bmII+1KS9/MYUh4yLIwjK+hm8+0IhEoWjaI6HohTbQv7SqXRN+Ug78Jp0aa06M9?= =?utf-8?q?aDnzM/e14ADmrQ2W+/b3PglgRW6cahDaf/p6GkkCCdBajMAZFxEYFcNal6hYIQEOp?= =?utf-8?q?buzcxRoac9skEGEySG+TeBgQdk/LeywQaWE+ty0Hn6cOYXb/zO8OktfdwEsCvdIHi?= =?utf-8?q?VEYf6/LYE4ajMjoZ13KJM85yBZtGybeyCp/0+ejM6Z+LGq873mfQh3qmvVm34i6Nw?= =?utf-8?q?+p3DxAQzodaZ23Q+xLYMZmElZDZJOVxttrfjNUtu3fmbwIS3rSn+pFq0UJHburPps?= =?utf-8?q?aQyYS+XfBl3hNe117tT2bywX+aFfCLOrK4A7mHU7sHFPxGA5CrYse98kreX247w2P?= =?utf-8?q?72ZefoFIe+qI9BQalX+TmPe4Ekx6mdMARJzg5Ob5rNmhuWxcyLnBdmUD1rNAFrREp?= =?utf-8?q?CqUZvxI7ohwDyDu2ha2b0rZXFGSzCLy79/3Pz+GUUQyt07LFqMMakvUlSyVzJ1JMw?= =?utf-8?q?to1A0nTgQoItJrpkd2qvsODPzxP8nZioB5nvcBvw3uKcbcyGqfQbcWLNmS2DNqCzR?= =?utf-8?q?xuANPU/gKnjlkeVxBZ5Ua8RH5/qRdNJeB0u9sT5M5ZwaMOHlKYPk0k0fdx0zKD6+k?= =?utf-8?q?CXP95OKQgKvMl37xi8rrbcrS8yEuNEOqUOYzC6oMVEzNp4jp+fbkuFpCOI63nIk9v?= =?utf-8?q?AwgZ4nF9ssyVZLqKn306/bKvBPqxYZ1gdNxxHrqCN/gq17sPL0PlPO0rwFNVFHJHP?= =?utf-8?q?ezW1jjobHMYVOltzueesFN8foOlT3kTKtru3S2/AwnxbOgb97dxrR+Ijz6N1fS1nt?= =?utf-8?q?YuZDbDtSSf2d27ehZ8F4U5Bo10NvCsuLtaVLvrmosBjF5yu1H6jihdAQ0Z7vZzLLl?= =?utf-8?q?EcOVD/ST6b7+aacZJwr4Ij2yfDAw9kYjUnPqiNzHtm4WTuLRcSaNkIptSGt2VzsUV?= =?utf-8?q?m0H3hm+BD6yXgTcmlgMmy7kfKUYdJn3EzhKJ8U3XYAgXDrBU0Z8ofDpLbOjTojH3Y?= =?utf-8?q?yZWXcrp5wB8YVto3ATtMIKhMZDyVDv1RGvDutNsdtCB/1TyKUshV2ai7BNLN3yzcJ?= =?utf-8?q?namuD9arlzoKEs0drbrYDL3YAuSMPFanxKFWEuXVGkYn1CDbrxIqobTF15MS5Nrow?= =?utf-8?q?4YV5oGUPo9gEjtubrtL5aKNHzLdGjSujE61oMiu1VcFNBSgF1pru9MY=3D?= Content-ID: <6EE70DEDE65071488448D2A2E2150190@eurprd07.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: eviden.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM8PR07MB7602.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc74c998-6551-46c2-83dd-08dc6abca1a6 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2024 15:29:17.8023 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7d1c7785-2d8a-437d-b842-1ed5d8fbe00a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cNm2E0Yw/7BCmVM0/dJCqEN1fNbwR8vh6/Ysws4ba10XueKBgFDeZKBrpawj5yo9esvcu9zhD6re6Aql3xHnXMNpMZLBtGIhSJVPrFjvJXeCdqVxChk5POsDK9gjczMs X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR07MB9661 Received-SPF: pass client-ip=80.78.11.85; envelope-from=clement.mathieu--drif@eviden.com; helo=smarthost4.eviden.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+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 cad70e0d05..85a7ebac67 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4295,6 +4295,38 @@ static bool vtd_process_inv_iec_desc(IntelIOMMUState *s, return true; } +static void do_invalidate_device_tlb(VTDAddressSpace *vtd_dev_as, + bool size, hwaddr addr) +{ + /* + * According to ATS spec table 2.4: + * S = 0, bits 15:12 = xxxx range size: 4K + * S = 1, bits 15:12 = xxx0 range size: 8K + * S = 1, bits 15:12 = xx01 range size: 16K + * S = 1, bits 15:12 = x011 range size: 32K + * S = 1, bits 15:12 = 0111 range size: 64K + * ... + */ + + IOMMUTLBEvent event; + uint64_t sz; + + if (size) { + sz = (VTD_PAGE_SIZE * 2) << cto64(addr >> VTD_PAGE_SHIFT); + addr &= ~(sz - 1); + } else { + sz = VTD_PAGE_SIZE; + } + + event.type = IOMMU_NOTIFIER_DEVIOTLB_UNMAP; + event.entry.target_as = &vtd_dev_as->as; + event.entry.addr_mask = sz - 1; + event.entry.iova = addr; + event.entry.perm = IOMMU_NONE; + event.entry.translated_addr = 0; + memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); +} + static bool vtd_process_device_piotlb_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { @@ -4310,9 +4342,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { VTDAddressSpace *vtd_dev_as; - IOMMUTLBEvent event; hwaddr addr; - uint64_t sz; uint16_t sid; bool size; @@ -4337,28 +4367,7 @@ static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s, goto done; } - /* According to ATS spec table 2.4: - * S = 0, bits 15:12 = xxxx range size: 4K - * S = 1, bits 15:12 = xxx0 range size: 8K - * S = 1, bits 15:12 = xx01 range size: 16K - * S = 1, bits 15:12 = x011 range size: 32K - * S = 1, bits 15:12 = 0111 range size: 64K - * ... - */ - if (size) { - sz = (VTD_PAGE_SIZE * 2) << cto64(addr >> VTD_PAGE_SHIFT); - addr &= ~(sz - 1); - } else { - sz = VTD_PAGE_SIZE; - } - - event.type = IOMMU_NOTIFIER_DEVIOTLB_UNMAP; - event.entry.target_as = &vtd_dev_as->as; - event.entry.addr_mask = sz - 1; - event.entry.iova = addr; - event.entry.perm = IOMMU_NONE; - event.entry.translated_addr = 0; - memory_region_notify_iommu(&vtd_dev_as->iommu, 0, event); + do_invalidate_device_tlb(vtd_dev_as, size, addr); done: return true;