From patchwork Tue Feb 27 02:14:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207064 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2519963dyb; Mon, 26 Feb 2024 22:25:19 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVYm1CgCVAQGnQCwH3yMGe5A6C4HsA/ag9z78f4kL26/u1hIG7/Ppn1cXGvb1dWz2D5fev5ZlEA5Ebofw14bbOQE6zPTg== X-Google-Smtp-Source: AGHT+IEBLEu3bDtj8TXXOWEt4sPu7Kbf8VmNgK+ktNvSI5dkw/6H1EGCYvQZVv13DShwHvsuivik X-Received: by 2002:a17:902:f7c1:b0:1dc:6071:60ad with SMTP id h1-20020a170902f7c100b001dc607160admr7653244plw.24.1709015119125; Mon, 26 Feb 2024 22:25:19 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709015119; cv=pass; d=google.com; s=arc-20160816; b=b/+WbvnJHE49XPQYUiQF7cAR2uaFQeWJ11TgskWIC9tEXuTXP2uoySIh0+tGL33GpQ pv/QvIpx8/RjDk2dO4E0WuVq5dqqojIyk2dVA7BjYhl5YFDG93OT8B0yqsssXS2YCH+1 teaP3oJMvjaKEWw6kO54fzQTJee2zm/YIZExm9Fhr+H9JiAKcA9SU5FsaY0d4Id7zSsW FVwHuC36SojKPTSl5i5WqjB+RVs0SFssr5KSKeY+SePWA6Blb3KATvTJR92brgLWdgPV 2bdFmXmxkE/8Qz+TEHQvZL9U7fpQAzPCDqyRb5RBNDoDaEDr9LSy2nS+WKxBUWCc180X w7yw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=7ZaLt5r2cCfNJLACbSuYOOmL7LLt2A69cZTDeVAyNFw=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=qR8d28Bm2fRAm4PFVtz/8nH/27Zu7VHT+nhEKq4liw7MfVSajPBoWtJZJFN1mMl3HS PHeCoZJ6mzH+YBoevaylXw5y4FmhAZCfX+DAFdqVGbsnl62tnC1hj8pG+QMYGoINPiXj lWSg5Id5tSMEPFPRxVR6sOQFyYzRj+CWeMyQFQgLsvX8mRqhOgTg5ZEBkpV7yiHVz3qu ucBJ4i3wrlXtzPhesbnfPGJbiD0qvdyRew/vwRTncdZQludPlKgfqVO948dM7ShVmBHV Qt5k3KvED/674tUZPwM0qKzj9n0D8NdlvdQpAdimLgVr4XHAO4xyD3ZiQWnAkvWw7Qwu 3efQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BX1ZQ04B; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82589-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82589-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id y3-20020a17090322c300b001dbcf653014si898076plg.54.2024.02.26.22.25.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 22:25:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82589-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BX1ZQ04B; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82589-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82589-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 34830288DD7 for ; Tue, 27 Feb 2024 02:21:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 19A421EB24; Tue, 27 Feb 2024 02:20:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="BX1ZQ04B" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C957AF9F0 for ; Tue, 27 Feb 2024 02:20:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000442; cv=none; b=CMcNPiO5+3Sei9zYcAvAzPO8U15ORZsgr8Q5Uo0W2AwPxaDQsLrWa3Ur6cIn28r8G01D86Y002fWEv+gqJ0ivtkJzhtub77SgFl7zbksxkjojaG/yq0rA6bdn+x2xoTQr7W9ailBwZGUTFK9/UK44ER9UsnwYj8RuNnsj+Bqf4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000442; c=relaxed/simple; bh=cctrjxaRbRi+TKu+hYmdPS1a9OktKar4KCqbjTm4+5c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ncad9UMOwE9OiY9e1xXOjyv+2nz4vTMmSpK3+/6zR/Ftas9vHyMWch632JtiC7BhedNXABZrkeChbSYKaCUTScF7DKFjuBq6h2DAwt2tAL6aSYQH/nMcLCDX/L5lgs8Fpamcub1EUSZVl/ZL76hNAWuofT3RafUBnVYP+BcW+0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=BX1ZQ04B; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000440; x=1740536440; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cctrjxaRbRi+TKu+hYmdPS1a9OktKar4KCqbjTm4+5c=; b=BX1ZQ04BZ3Dkcr2w6JKnrNCxelemG4ti5Jeyb/8UF/zl0emLC1Y3I/9F XiS7StSycO2hzZeOk/CypgLav2Evx0ArHR5I5wv/tSCR/v3Ao1C+ntf6U Wt0UvSmS778Rc2IKI53BxObow/3KNLoV8vVSNYF1NM/Pm5PvCwkrTkg2k kQ4Di2M9nPWPVq2YoRJM5qFIRA1+cplb3FnGXkJvBFPaMJ+zql4F3guAL xpIQIzs9gKnHRYzEfTuWF746WfJeCycxMptZIkoWTXn8SQyC2W7E9XmVo brFpibTLmbEyxl6dqoM8XbBL6MPSf6qAN3SAo84kvmegK4e87BEvsW86C g==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273096" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273096" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418282" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:38 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 1/8] iommu/vt-d: Remove INTEL_IOMMU_BROKEN_GFX_WA Date: Tue, 27 Feb 2024 10:14:34 +0800 Message-Id: <20240227021441.50434-2-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792032237576808381 X-GMAIL-MSGID: 1792032237576808381 Commit 62edf5dc4a524 ("intel-iommu: Restore DMAR_BROKEN_GFX_WA option for broken graphics drivers") was introduced 24 years ago as a temporary workaround for graphics drivers that used physical addresses for DMA and avoided DMA APIs. This workaround was disabled by default. As 24 years have passed, it is expected that graphics driver developers have migrated their drivers to use kernel DMA APIs. Therefore, this workaround is no longer required and could been removed. The Intel iommu driver also provides a "igfx_off" option to turn off the DMA translation for the graphic dedicated IOMMU. Hence, there is really no good reason to keep this config option. Suggested-by: Kevin Tian Signed-off-by: Lu Baolu Reviewed-by: Kevin Tian Link: https://lore.kernel.org/r/20240130060823.57990-1-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.c | 4 ---- drivers/iommu/intel/Kconfig | 11 ----------- 2 files changed, 15 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 11652e0bcab3..cfbe7c8e74fb 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -2712,10 +2712,6 @@ static int __init init_dmars(void) iommu_set_root_entry(iommu); } -#ifdef CONFIG_INTEL_IOMMU_BROKEN_GFX_WA - dmar_map_gfx = 0; -#endif - if (!dmar_map_gfx) iommu_identity_mapping |= IDENTMAP_GFX; diff --git a/drivers/iommu/intel/Kconfig b/drivers/iommu/intel/Kconfig index 012cd2541a68..d2d34eb28d94 100644 --- a/drivers/iommu/intel/Kconfig +++ b/drivers/iommu/intel/Kconfig @@ -64,17 +64,6 @@ config INTEL_IOMMU_DEFAULT_ON one is found. If this option is not selected, DMAR support can be enabled by passing intel_iommu=on to the kernel. -config INTEL_IOMMU_BROKEN_GFX_WA - bool "Workaround broken graphics drivers (going away soon)" - depends on BROKEN && X86 - help - Current Graphics drivers tend to use physical address - for DMA and avoid using DMA APIs. Setting this config - option permits the IOMMU driver to set a unity map for - all the OS-visible memory. Hence the driver can continue - to use physical addresses for DMA, at least until this - option is removed in the 2.6.32 kernel. - config INTEL_IOMMU_FLOPPY_WA def_bool y depends on X86 From patchwork Tue Feb 27 02:14:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207057 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2494761dyb; Mon, 26 Feb 2024 20:59:13 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXy6TOfWcTImoMLn3vFyomaE5OZeY7WxwnPPuCTQ6r9NsRq9LOr+WIGX1xorpR4H1WcVIbSlDIXWpXqC2RkvE3AXZpW3Q== X-Google-Smtp-Source: AGHT+IFl/GaNE42O1Q90Pe7URC5JmvQTWozLndz7NVZlaWmkF9iQEAubBMKAOgVuWwGUNns6ceqo X-Received: by 2002:a5b:5c5:0:b0:dcd:1043:23c with SMTP id w5-20020a5b05c5000000b00dcd1043023cmr1180486ybp.1.1709009953774; Mon, 26 Feb 2024 20:59:13 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709009953; cv=pass; d=google.com; s=arc-20160816; b=nmGUigW4VQrZdHXnf0a31/cjpc4c72CcUAKiqASEMZ+tZW/IJulbDpMixtM1V03CpV Pbs3zzbyi+U4SNf1JbTX1kWuynIVyqhpk6YlmnmXxIGrpOFtCRtIaxKt9/Qj7GGsMnsy UDoAspXTwoJ3wIZAX8T4owlP/DgegJxDaOlcmlAl9NBBK76sT63/7+Uc4z2I6XkqKymK JApft2Fvx/G+rIJjek0yFX1/OgkAgQRLiSwIJGvaaV0n+0x/qqQSP6wWwyxPeolGGKoZ t6ioAsWf+4kPIlPLN2B375IAO9iqXUs+AYEretzXQUEk9GRAEsePswGpZJ2Ti/Z1cmd0 HVPg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=a6fpVLNs+PdwqdxcLeolxILoyyLi2LJgC6LkuGgkpEU=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=tY3bx9DyXAsx0st66YpcKsWgTyevRBJq/SgZ9Ytf6m+Z8Zf+ZA+k6y0CeqsJGWW8an 6R7XGRA7zeKeK/fDdNEvq+tXHl997AGoOqjl1NvJK5OL8F0iO4W7ra01YbXeBva5zn/5 F3KBnng3/CYJ5nKo5zhwhmrG6wjaTcGaZ9Hu8PxcCIlO+hYnGjJRxri0T7/xWmUucmjt FEW2l6gV8CpsuzmPOmAINrSUTk9icbS3gdpTLvoZl8oLSTSgSxpQnG+Lku4MKIqSTGyd J5hicY4zcaibgX3T0kEtcfb0HtiKY/SW0Uem0Xjv4HH2wJqp8r7UN/gvaw4Ztqh7nLn2 6cmg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HINFzjDG; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82590-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82590-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id d11-20020a63d64b000000b005dc491389b1si4755837pgj.679.2024.02.26.20.59.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 20:59:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82590-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HINFzjDG; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82590-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82590-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 2DAD2B24D8B for ; Tue, 27 Feb 2024 02:21:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D645B2E3F2; Tue, 27 Feb 2024 02:20:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="HINFzjDG" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 902BEFBEA for ; Tue, 27 Feb 2024 02:20:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000444; cv=none; b=XihzBrKzkMeH91Jcv3taH8Og26A1rra04sZyLUyg61s168Bx8IdyQgnRSd1bFMOU8C0yxky6DB1X7+a/NpIF0usSlCBE9/imxiZ1mKVK6y7jTYvqwtkHYQrYEjcln4SGjYQaB63EY8HFCt8pNXS3EYyXm7V/A12vuvwa4CTRz6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000444; c=relaxed/simple; bh=p9nNzOoMCIFWnVV6qNejGepeajPPfvnPiqBXwo2zx2A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RkPXocxIQBJh7nF0mmt9pJXLxaGFfbdzetI+7wM0pr62K3LP4IqTdsnu9ujfhyervELjtRGOBl5IcCB4Ozq4aLkgeYgAV1QzUvmsH2+sQZ+CG3BQPVEU3M3HbLX7Dti976qOiG7kIXz8QALdXgG15oubZRKokY1v/OMgjmNisps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=HINFzjDG; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000442; x=1740536442; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p9nNzOoMCIFWnVV6qNejGepeajPPfvnPiqBXwo2zx2A=; b=HINFzjDGr2y2kPV6lLeKTDu8njXJ/kOebnMsFFx1RRpiqgxvITFgUPGv l5mK0vq3CsaojSFqE1rZR/sHobocK4pCBG9r1F4dosbhqipMTLLfOO0tk 1TUTy4N9JWRRWiSgoJaITiTf4SbqrAykeEyusqO+RPlStFUtyDnIIVU3/ navajfdrTfGYTYJRbCOM9YXH/tVK+FcR9CKO/nO4HSfcU3G1Eji0mVBYM ZqOkVT86tpcUSs32/VxLcmHcBpzr4i/fGC4cVSODmG+23ZpQBz/uTUhmp x7Fk3z18d/3yVSCBoeVdJetMN/5Fc+3mqfPAl1v/JyNhB7QZihQ4nK6UB A==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273103" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273103" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418288" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:40 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 2/8] iommu/vt-d: Use kcalloc() instead of kzalloc() Date: Tue, 27 Feb 2024 10:14:35 +0800 Message-Id: <20240227021441.50434-3-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792026821019018173 X-GMAIL-MSGID: 1792026821019018173 From: Erick Archer This is an effort to get rid of all multiplications from allocation functions in order to prevent integer overflows [1]. Here the multiplication is obviously safe because DMAR_LATENCY_NUM is the number of latency types defined in the "latency_type" enum. enum latency_type { DMAR_LATENCY_INV_IOTLB = 0, DMAR_LATENCY_INV_DEVTLB, DMAR_LATENCY_INV_IEC, DMAR_LATENCY_PRQ, DMAR_LATENCY_NUM }; However, using kcalloc() is more appropriate [2] and improves readability. This patch has no effect on runtime behavior. Link: https://github.com/KSPP/linux/issues/162 [1] Link: https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments [2] Signed-off-by: Erick Archer Reviewed-by: Kees Cook Reviewed-by: Gustavo A. R. Silva Link: https://lore.kernel.org/r/20240211175143.9229-1-erick.archer@gmx.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/perf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/intel/perf.c b/drivers/iommu/intel/perf.c index 94ee70ac38e3..adc4de6bbd88 100644 --- a/drivers/iommu/intel/perf.c +++ b/drivers/iommu/intel/perf.c @@ -33,7 +33,7 @@ int dmar_latency_enable(struct intel_iommu *iommu, enum latency_type type) spin_lock_irqsave(&latency_lock, flags); if (!iommu->perf_statistic) { - iommu->perf_statistic = kzalloc(sizeof(*lstat) * DMAR_LATENCY_NUM, + iommu->perf_statistic = kcalloc(DMAR_LATENCY_NUM, sizeof(*lstat), GFP_ATOMIC); if (!iommu->perf_statistic) { ret = -ENOMEM; From patchwork Tue Feb 27 02:14:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207020 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2466785dyb; Mon, 26 Feb 2024 19:21:30 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUuZXjYDM/3Jy/0bHBGFwn735bOFmmmg6ouqF+wcTl+lc25/OVnujTjo4XRdFQD/dNZT245P1MLEitMIYDXS7OXaOZPcQ== X-Google-Smtp-Source: AGHT+IHjnvuN3H9VQaBGXqd7CCvFQZq6UiK+OOLwNE+q3W08thJQ+/a2wMIpiBulh3RUuueL/VX+ X-Received: by 2002:a05:6358:768a:b0:176:29cf:7b3a with SMTP id e10-20020a056358768a00b0017629cf7b3amr12196764rwg.12.1709004090022; Mon, 26 Feb 2024 19:21:30 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709004089; cv=pass; d=google.com; s=arc-20160816; b=H52Cu2Up1Fyy56+cqLDvi9XlYWCVO3KThG0JIXLWIJ/ou2MgfnHIO45PA3b6+qa+Wy ql4B6c8AVAtHy48twWcLdIQK5Ah1N0ShmHh6Elxni55bKIw7HfAOvSOjWxXZPpEwirQ1 aYbMljr+WizK1CvpthnrDg6qHYtACHI+UkFTmiEzh29xheoHiUY7+YfIeh8rLNltXSHW TCf0sWrFwUt9Lmr+or71XRqR2dgzkH15LBcGLBQTyZlfW/2HXS3SVFS2bo3VjPRwyIGo EwQTBLv5Ev5GciWlY8XQFoMEeWhuYeSAo6VtpcbbVhabmWzxjAiaTcC0ao/irUt4S4XT pWPQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=Ea3D4pU8LutWMjShLW1fHhGkYeTccV96qsYHCinxUOA=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=Gj3QV8rQ8ZYw1rjtjDUbRurDv3gMyBiwO4QZrwqJyt6E4Qk27+lXvgO3Z6lw13BslW DcPbfT7a8DemespDNPMqO+Va50KTc7CwX264YLP70ONN+7hKc4/AY6Pi/6+1WHbNHA8S kctpJuyX4M8K16Dea6fU7r18Fc5v5x7boVStjY0ZDdF3kPqyacB7IBomE/Zdban/CuVc hRMnQcCRhr5/4Y9Xr2730rWU71HkueW040qVfD1EPMsXmBWcdSgrS7PsuYGJRCKZCXgd JdfcJa4DWnZcQJ0yaTK7RjJ1+9GNyLQAibjG5iTFok3K08NEuQn42VhDuO9GgNgiqs/o O8Aw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=YvLh4xIi; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82591-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82591-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id c127-20020a633585000000b005df438d534asi4807336pga.229.2024.02.26.19.21.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 19:21:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82591-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=YvLh4xIi; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82591-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82591-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 127D028D36F for ; Tue, 27 Feb 2024 02:21:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2312D4EB41; Tue, 27 Feb 2024 02:20:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YvLh4xIi" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56F691D6A7 for ; Tue, 27 Feb 2024 02:20:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000446; cv=none; b=h60m3YUSIl5LceIFo7MvAobAtYwvNrDMelobxk39CReKlTbCwRxjryWrqjg5Lkprt2BEMJQWo2VD9FtXZRqIuglO4PjQsLoTY7xKImoUXkTFXsDfNGwdWoSHHLWks7M5KoI8jDuA9MHKfnsuLSjxM+7KS46sqw+tsWsovoHT5gc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000446; c=relaxed/simple; bh=NUKxJCGAOdPpnf2spKsXqpsJliAHRz/13+X2P8l+TjE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Bpm9XwCcSR/IlP0sIY4FPJ30NUn39yd07jdp7lmjHqTSa71scwqUvdqTf0gbOSUPpMCZNXmcABHK08ckTj6Ughw/Hg3OMc9juJcI6sqDt1d+MUe9MJ/WsGIhQP+5KswoAWK3o+oSqeJV8j+kuFF1DWGn45r27ytrCKwWa5cP/bY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YvLh4xIi; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000444; x=1740536444; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NUKxJCGAOdPpnf2spKsXqpsJliAHRz/13+X2P8l+TjE=; b=YvLh4xIiJs7KpSmKcg1Qg+P9vFJyML2EBu3wvWZlWFnf4TQTwnx1Vq9C A0zzHfbhEAoU40jfYfXYAmNSZCrmnU25MjXk0IMvOjKYSDqzVaYkg1orc VjZdIGIOphOTrgEwcmjGKCT7xVx7R+pIw/NOJUSQiBAHlVxAK1Wzq8bDz Y33U6zIzv9fCiP9kQyHYKL2w7Ork3T135F2vmYlHkUJmJfU4MuUt1iap8 FUjsu8wtN9/sY98mFNaCRbpTsWzLgMVbtwaobZXG9UFKfV8lSZ/zPdibl yBm2aN5lIimJo+3JlbIRcSGCXEkz8CqBKGDLoT/nElhK/gmfJKTHrz/3l A==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273106" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273106" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418291" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:42 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 3/8] iommu/vt-d: Add the document for Intel IOMMU debugfs Date: Tue, 27 Feb 2024 10:14:36 +0800 Message-Id: <20240227021441.50434-4-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792020672623756049 X-GMAIL-MSGID: 1792020672623756049 From: Jingqi Liu This document guides users to dump the Intel IOMMU internals by debugfs. Signed-off-by: Jingqi Liu Link: https://lore.kernel.org/r/20240207090742.23857-1-Jingqi.liu@intel.com Signed-off-by: Lu Baolu --- Documentation/ABI/testing/debugfs-intel-iommu | 276 ++++++++++++++++++ 1 file changed, 276 insertions(+) create mode 100644 Documentation/ABI/testing/debugfs-intel-iommu diff --git a/Documentation/ABI/testing/debugfs-intel-iommu b/Documentation/ABI/testing/debugfs-intel-iommu new file mode 100644 index 000000000000..2ab8464504a9 --- /dev/null +++ b/Documentation/ABI/testing/debugfs-intel-iommu @@ -0,0 +1,276 @@ +What: /sys/kernel/debug/iommu/intel/iommu_regset +Date: December 2023 +Contact: Jingqi Liu +Description: + This file dumps all the register contents for each IOMMU device. + + Example in Kabylake: + + :: + + $ sudo cat /sys/kernel/debug/iommu/intel/iommu_regset + + IOMMU: dmar0 Register Base Address: 26be37000 + + Name Offset Contents + VER 0x00 0x0000000000000010 + GCMD 0x18 0x0000000000000000 + GSTS 0x1c 0x00000000c7000000 + FSTS 0x34 0x0000000000000000 + FECTL 0x38 0x0000000000000000 + + [...] + + IOMMU: dmar1 Register Base Address: fed90000 + + Name Offset Contents + VER 0x00 0x0000000000000010 + GCMD 0x18 0x0000000000000000 + GSTS 0x1c 0x00000000c7000000 + FSTS 0x34 0x0000000000000000 + FECTL 0x38 0x0000000000000000 + + [...] + + IOMMU: dmar2 Register Base Address: fed91000 + + Name Offset Contents + VER 0x00 0x0000000000000010 + GCMD 0x18 0x0000000000000000 + GSTS 0x1c 0x00000000c7000000 + FSTS 0x34 0x0000000000000000 + FECTL 0x38 0x0000000000000000 + + [...] + +What: /sys/kernel/debug/iommu/intel/ir_translation_struct +Date: December 2023 +Contact: Jingqi Liu +Description: + This file dumps the table entries for Interrupt + remapping and Interrupt posting. + + Example in Kabylake: + + :: + + $ sudo cat /sys/kernel/debug/iommu/intel/ir_translation_struct + + Remapped Interrupt supported on IOMMU: dmar0 + IR table address:100900000 + + Entry SrcID DstID Vct IRTE_high IRTE_low + 0 00:0a.0 00000080 24 0000000000040050 000000800024000d + 1 00:0a.0 00000001 ef 0000000000040050 0000000100ef000d + + Remapped Interrupt supported on IOMMU: dmar1 + IR table address:100300000 + Entry SrcID DstID Vct IRTE_high IRTE_low + 0 00:02.0 00000002 26 0000000000040010 000000020026000d + + [...] + + **** + + Posted Interrupt supported on IOMMU: dmar0 + IR table address:100900000 + Entry SrcID PDA_high PDA_low Vct IRTE_high IRTE_low + +What: /sys/kernel/debug/iommu/intel/dmar_translation_struct +Date: December 2023 +Contact: Jingqi Liu +Description: + This file dumps Intel IOMMU DMA remapping tables, such + as root table, context table, PASID directory and PASID + table entries in debugfs. For legacy mode, it doesn't + support PASID, and hence PASID field is defaulted to + '-1' and other PASID related fields are invalid. + + Example in Kabylake: + + :: + + $ sudo cat /sys/kernel/debug/iommu/intel/dmar_translation_struct + + IOMMU dmar1: Root Table Address: 0x103027000 + B.D.F Root_entry + 00:02.0 0x0000000000000000:0x000000010303e001 + + Context_entry + 0x0000000000000102:0x000000010303f005 + + PASID PASID_table_entry + -1 0x0000000000000000:0x0000000000000000:0x0000000000000000 + + IOMMU dmar0: Root Table Address: 0x103028000 + B.D.F Root_entry + 00:0a.0 0x0000000000000000:0x00000001038a7001 + + Context_entry + 0x0000000000000000:0x0000000103220e7d + + PASID PASID_table_entry + 0 0x0000000000000000:0x0000000000800002:0x00000001038a5089 + + [...] + +What: /sys/kernel/debug/iommu/intel/invalidation_queue +Date: December 2023 +Contact: Jingqi Liu +Description: + This file exports invalidation queue internals of each + IOMMU device. + + Example in Kabylake: + + :: + + $ sudo cat /sys/kernel/debug/iommu/intel/invalidation_queue + + Invalidation queue on IOMMU: dmar0 + Base: 0x10022e000 Head: 20 Tail: 20 + Index qw0 qw1 qw2 + 0 0000000000000014 0000000000000000 0000000000000000 + 1 0000000200000025 0000000100059c04 0000000000000000 + 2 0000000000000014 0000000000000000 0000000000000000 + + qw3 status + 0000000000000000 0000000000000000 + 0000000000000000 0000000000000000 + 0000000000000000 0000000000000000 + + [...] + + Invalidation queue on IOMMU: dmar1 + Base: 0x10026e000 Head: 32 Tail: 32 + Index qw0 qw1 status + 0 0000000000000004 0000000000000000 0000000000000000 + 1 0000000200000025 0000000100059804 0000000000000000 + 2 0000000000000011 0000000000000000 0000000000000000 + + [...] + +What: /sys/kernel/debug/iommu/intel/dmar_perf_latency +Date: December 2023 +Contact: Jingqi Liu +Description: + This file is used to control and show counts of + execution time ranges for various types per DMAR. + + Firstly, write a value to + /sys/kernel/debug/iommu/intel/dmar_perf_latency + to enable sampling. + + The possible values are as follows: + + * 0 - disable sampling all latency data + + * 1 - enable sampling IOTLB invalidation latency data + + * 2 - enable sampling devTLB invalidation latency data + + * 3 - enable sampling intr entry cache invalidation latency data + + Next, read /sys/kernel/debug/iommu/intel/dmar_perf_latency gives + a snapshot of sampling result of all enabled monitors. + + Examples in Kabylake: + + :: + + 1) Disable sampling all latency data: + + $ sudo echo 0 > /sys/kernel/debug/iommu/intel/dmar_perf_latency + + 2) Enable sampling IOTLB invalidation latency data + + $ sudo echo 1 > /sys/kernel/debug/iommu/intel/dmar_perf_latency + + $ sudo cat /sys/kernel/debug/iommu/intel/dmar_perf_latency + + IOMMU: dmar0 Register Base Address: 26be37000 + <0.1us 0.1us-1us 1us-10us 10us-100us 100us-1ms + inv_iotlb 0 0 0 0 0 + + 1ms-10ms >=10ms min(us) max(us) average(us) + inv_iotlb 0 0 0 0 0 + + [...] + + IOMMU: dmar2 Register Base Address: fed91000 + <0.1us 0.1us-1us 1us-10us 10us-100us 100us-1ms + inv_iotlb 0 0 18 0 0 + + 1ms-10ms >=10ms min(us) max(us) average(us) + inv_iotlb 0 0 2 2 2 + + 3) Enable sampling devTLB invalidation latency data + + $ sudo echo 2 > /sys/kernel/debug/iommu/intel/dmar_perf_latency + + $ sudo cat /sys/kernel/debug/iommu/intel/dmar_perf_latency + + IOMMU: dmar0 Register Base Address: 26be37000 + <0.1us 0.1us-1us 1us-10us 10us-100us 100us-1ms + inv_devtlb 0 0 0 0 0 + + >=10ms min(us) max(us) average(us) + inv_devtlb 0 0 0 0 + + [...] + +What: /sys/kernel/debug/iommu/intel//domain_translation_struct +Date: December 2023 +Contact: Jingqi Liu +Description: + This file dumps a specified page table of Intel IOMMU + in legacy mode or scalable mode. + + For a device that only supports legacy mode, dump its + page table by the debugfs file in the debugfs device + directory. e.g. + /sys/kernel/debug/iommu/intel/0000:00:02.0/domain_translation_struct. + + For a device that supports scalable mode, dump the + page table of specified pasid by the debugfs file in + the debugfs pasid directory. e.g. + /sys/kernel/debug/iommu/intel/0000:00:02.0/1/domain_translation_struct. + + Examples in Kabylake: + + :: + + 1) Dump the page table of device "0000:00:02.0" that only supports legacy mode. + + $ sudo cat /sys/kernel/debug/iommu/intel/0000:00:02.0/domain_translation_struct + + Device 0000:00:02.0 @0x1017f8000 + IOVA_PFN PML5E PML4E + 0x000000008d800 | 0x0000000000000000 0x00000001017f9003 + 0x000000008d801 | 0x0000000000000000 0x00000001017f9003 + 0x000000008d802 | 0x0000000000000000 0x00000001017f9003 + + PDPE PDE PTE + 0x00000001017fa003 0x00000001017fb003 0x000000008d800003 + 0x00000001017fa003 0x00000001017fb003 0x000000008d801003 + 0x00000001017fa003 0x00000001017fb003 0x000000008d802003 + + [...] + + 2) Dump the page table of device "0000:00:0a.0" with PASID "1" that + supports scalable mode. + + $ sudo cat /sys/kernel/debug/iommu/intel/0000:00:0a.0/1/domain_translation_struct + + Device 0000:00:0a.0 with pasid 1 @0x10c112000 + IOVA_PFN PML5E PML4E + 0x0000000000000 | 0x0000000000000000 0x000000010df93003 + 0x0000000000001 | 0x0000000000000000 0x000000010df93003 + 0x0000000000002 | 0x0000000000000000 0x000000010df93003 + + PDPE PDE PTE + 0x0000000106ae6003 0x0000000104b38003 0x0000000147c00803 + 0x0000000106ae6003 0x0000000104b38003 0x0000000147c01803 + 0x0000000106ae6003 0x0000000104b38003 0x0000000147c02803 + + [...] From patchwork Tue Feb 27 02:14:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207058 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2495704dyb; Mon, 26 Feb 2024 21:01:37 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXa29VeryrKAhWtHk+SA+GlsxWfPpOQNziLljZHZBsg/SrHs/UqnVXO2IUEHmO6GFdcjEoBukXEhl5iBsYykPRlSdQDkQ== X-Google-Smtp-Source: AGHT+IHy1CbcEmVui7VRQefEmZ8OFiXIRHItgKhyy6B2dzTA57Hk5gJJ+ttRb4Uh2mvKMWfamr+E X-Received: by 2002:a05:620a:40c1:b0:787:a74e:b811 with SMTP id g1-20020a05620a40c100b00787a74eb811mr1359048qko.57.1709010097022; Mon, 26 Feb 2024 21:01:37 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709010097; cv=pass; d=google.com; s=arc-20160816; b=zz5oisKkJKAMGWKrmXl9JlrA7e/TBVRge1MM70/CXQxSilrpTWZ83PbzK32xZgfAoz hiih+P67n6vfn8Nqhn6Qf7NJNrkt1y0EqQN3sYExZRk0crmXSGpZFAeHpcx1G15xBnDO XihL7HEeMo6661gN0KMsgwkS32XS170KnYw9UFyNmiBp5cQxxRtpPtvahVexe8quTmhx Swx+5wncC0+DXAC3yH1psaaIs3WpmG3jLCRM/kxGnRMFNS5U/fjKBAxTiKdZWYFAd51y wd6dhePW4Bos736ldWGtzxukBdCKILUxtWnhRMRYH1d3zRVQ8UPk1JLuOSut8H5iS6T3 WCjQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=E52Nh4GwzujhTzER2/1ZrRryxUZFqzN1bSzypXGrll4=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=v9BsK5bxKRr2MnaqohrBvYAnMU5DvRKZ5w6WViKWcC6/ethCFevcpIsSbeiqroRy79 ggqZRoiHbaHWlXibp4bmohQNzNq5NizaWWJ29Vvxj4evw9+zyxG1WXZkz4I65w84h4hU ECTqB6ptfGY7LINWX3YBnh//R62tV+1HsIqY3fzsEB+jhY45cLTCIyPQ+PiP467QejEL DS/pJ0Pbx84jkPCE/AfMiP0VXxNQ8E3yf7pJv8O17c1W9fzfkMEDNlFftSxpiEx+XrCJ +/7Atz3lmth5Ma/cyrkvRc/w+o0ipBMWDqZ/+odJHwfdnFF/VOHORkUzfkb1Iem3NzWl teow==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=R7OLLwig; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82592-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82592-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id t14-20020a05620a0b0e00b00787b873b66dsi6494801qkg.235.2024.02.26.21.01.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 21:01:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82592-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=R7OLLwig; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82592-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82592-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 662381C28A06 for ; Tue, 27 Feb 2024 02:21:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7C2C44F1F2; Tue, 27 Feb 2024 02:20:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="R7OLLwig" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3497C10A34 for ; Tue, 27 Feb 2024 02:20:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000447; cv=none; b=qM5r20WHnGsl2543CkLp0lNd4Rz8saRx8aC5rWavKeIeqn3CxTSENGFAQSlZKu1SgOns2AsnsSqs30xd5uJVrihF6dsxTA7SBQnpLe8Jzn1HP62jrUgnUDzYVhdqGTbZ/lobhvxuDIxEw3AVD5f6RYP7m/ZCpKOcOGEwI93cThc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000447; c=relaxed/simple; bh=qVQIcSHSJ4R57qtQzHqo/LOuOIYQCzdxlV3v9opOJ34=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BnbD3d/9d5pR+OhOAkrDIAmxAbVpGui/J1cQaDCHUy6g34OqMNyO7/3RsWMfS9Bu0FgQ6xFxfVjXp1wHWk4UEDODx0njl+04uurO457/y5KHyNBNfeGIoUUoRIBvwlHB/dhiQZWTyt1G8muhtsHAvoWLSNHvIQaHUa3nLp/Vcxs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=R7OLLwig; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000446; x=1740536446; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qVQIcSHSJ4R57qtQzHqo/LOuOIYQCzdxlV3v9opOJ34=; b=R7OLLwigWihZDCx/o2BM/QIbFAPmUyqaYO23EhEYoyOR4r1hxDSp4VKc wB2lyFJYJ5sAcvHQAT9KoyYnknczCktToMAPlhp9V37/ri2pPNM+K6OTj 2eWQDlMJS+Hyp9BgKbmsKBR3gQfQjGoZgKazns3HyeVO6H2B0Gpz12j0W LLUjOEBJNk77Du3eek7sRMni5xd54tTaNM+Gnoz2yuRrrr8GDhR8WJ/WQ KuszVNLA2h65QQBQsJ6GuNUCvEd4r0elJymnmErH+oPaRiGLK3L66FeJX Qmqy6xm5vBEbTMbKbnnKWq43aCJc0hoP9OH0HRkDdflCD2FjoORgSKSgD A==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273112" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273112" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418295" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:44 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 4/8] iommu/vt-d: Remove treatment for revoking PASIDs with pending page faults Date: Tue, 27 Feb 2024 10:14:37 +0800 Message-Id: <20240227021441.50434-5-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792026971244569439 X-GMAIL-MSGID: 1792026971244569439 From: Tina Zhang Commit 2f26e0a9c986 ("iommu/vt-d: Add basic SVM PASID support") added a special treatment to mandate that no page faults may be outstanding for the PASID after intel_svm_unbind_mm() is called, as the PASID will be released and reused after unbind. This is unnecessary anymore as no outstanding page faults have been ensured in the driver's remove_dev_pasid path: - Tear down the pasid entry, which guarantees that new page faults for the PASID will be rejected by the iommu hardware. - All outstanding page faults have been responded to. - All hardware pending faults are drained in intel_drain_pasid_prq(). Remove this unnecessary code. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20240219125723.1645703-2-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/svm.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index 40edd282903f..a815362c8e60 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -408,13 +408,6 @@ void intel_svm_remove_dev_pasid(struct device *dev, u32 pasid) if (svm->notifier.ops) mmu_notifier_unregister(&svm->notifier, mm); pasid_private_remove(svm->pasid); - /* - * We mandate that no page faults may be outstanding - * for the PASID when intel_svm_unbind_mm() is called. - * If that is not obeyed, subtle errors will happen. - * Let's make them less subtle... - */ - memset(svm, 0x6b, sizeof(*svm)); kfree(svm); } } From patchwork Tue Feb 27 02:14:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207028 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2475273dyb; Mon, 26 Feb 2024 19:50:16 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVRqUl2+6l7I+8J+xFcZGK9dr5ukJj1supzDQKcG5ZQ+yb/AbPGvL+5+Es36hKBAd43wxL4hubju/xgZLwQovcEfiIbSA== X-Google-Smtp-Source: AGHT+IFlC6d6mM/zE8YqiAUSRggI1YOlG4T53lYN2687oEyvakZDq07pQTksZXJyAMqnRsg1Uj1y X-Received: by 2002:a9d:7a43:0:b0:6e4:7b90:2859 with SMTP id z3-20020a9d7a43000000b006e47b902859mr10426760otm.31.1709005816442; Mon, 26 Feb 2024 19:50:16 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709005816; cv=pass; d=google.com; s=arc-20160816; b=CE9rIvzjU7q0Fth00tenG6xf6v/YYKtUN5uyQ3eTlwrcdVnyZhqGvgHkpQUKlQh992 c/PlQ9oUYs8gXqN4nKg6nSwk3LPtJXOK5IfuKdrKsfDwnZItCMTOPdUTfPtNAxKkMwHN sBpBDvet7sVXryekvmI0zHWi4TvoJ40Hv3UwQK8plwqO0733CZICmJdgglPjLChSu/8z kBJoPLhD1MdRYIxs7vq1HhkQB69KTwnbLQ9NqUeTo8AxHmszqCrOK/IleHkDrS0ABcMT KLRWES1XV3PtjgoguA83uHuXZB2K4xDsZkkVA1aXKeyHEAAuOT2TG0yR7oCJEzccMZeJ 4gOw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=YM1WZdbV4uK3LgMx4TJ9gBqJdCfRBUQEee60rBWxy2k=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=mPlemR0LCF8GFturEc43Yv8hSbM1yeS2hY7COVY++dxZgC6HDDc0gEJDT95DHS4/aN kA2ejV2BAV4o1FoMrgixNLCQOlQzk5VToGtFZTB9n/00PERiT6D2+NR+DlmQWYJfqY2V 8LOHZKMf2IvwDo/NAxkmAWeJ6U3KCUB2+9QMtLMJzU6bEjPd8h1c9b7HQlNdLfIkSYHq TqQ6cHfx6vsN0RPBlO+AcfcwD7imLxdNBMEuLvw/UsCdAgMoAl3EfzgYFVH2cax23Cha KtvncDKj3gUrAmIcpjq4zpE7VW0oIhSAwEJPnCOh8xaFCR8CWQovuilJrL7n0kFbEr8y HRPQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=CEwkZYR4; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82593-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82593-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id r3-20020a63d903000000b005dc89957de5si4814482pgg.497.2024.02.26.19.50.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 19:50:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82593-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=CEwkZYR4; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82593-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82593-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id A133BB25681 for ; Tue, 27 Feb 2024 02:21:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 708E354BC8; Tue, 27 Feb 2024 02:20:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="CEwkZYR4" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7431B38DDC for ; Tue, 27 Feb 2024 02:20:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000449; cv=none; b=kNOVEy1ODS3iApSMMyim5axD1UJXm9417G9oBJLnWNuNvjb6dJV6C4qFYC/eqGj+GcIsTpeuRZeqAKjxPDUIb1F9tN7CWye/llToNi2o1ZbMr8d0/T1X9vushkYXdvt5IcdQJB1jHv03E3wNw/f8BHtmvvV27Pjs7KmLIJmU0iU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000449; c=relaxed/simple; bh=rGkjK8I6tdNmwQIoAe5T5sY8845ERzQRM0cTXjlxP3Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bOYGKQ7qywA3ShuyKdzYSk8kTcu1HgAcI1iDPAvslUlDTn8NcGRu5JS9SrP8IJL3IOf2LmGErXWOqfAkUsmplKchCgzn/GqUw5PkEQns0n5H1jiAb0EYQmNxIaKX80T8NVtd4nOCqzt8OUzsV+wAiV62ToS2HD3Ie6ZQf/I9CBI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=CEwkZYR4; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000448; x=1740536448; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rGkjK8I6tdNmwQIoAe5T5sY8845ERzQRM0cTXjlxP3Y=; b=CEwkZYR46vbarV65BOMW8xBqTZQJ0UPRmA0NF7aNii6r7SCv1PvLTSmz qxb4tCR32VgTR1Gx+2Y8qa5OmUKCF1jwuGxn13WTrdlc1ugdcXQL9AmhP GwuXU8jwum6cwQJR9wVV/Tl1Y3dlUv8zK3hbghGv6o+2/+qwlNzGg033X rYBf47wwY2RoUHucr8Nus48FTA+WHVcU/IGlDN3vPW2kvPrzW7ppMTCjj rBh7qqmzNz13bXfhiux9FaNOLXX0b43pKeb0Pz5mPIqkkUbo3U1/JI0Lf I9u3FW+9x9YROet0RNVVUNa7BUmZjC28dIZIezW1l+628PfPHdT5FCIXf A==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273120" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273120" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418300" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:46 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 5/8] iommu/vt-d: Remove initialization for dynamically heap-allocated rcu_head Date: Tue, 27 Feb 2024 10:14:38 +0800 Message-Id: <20240227021441.50434-6-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792022482867042110 X-GMAIL-MSGID: 1792022482867042110 From: Tina Zhang The rcu_head structures allocated dynamically in the heap don't need any initialization. Therefore, remove the init_rcu_head(). Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20240219125723.1645703-3-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/svm.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index a815362c8e60..a92a9e2239e2 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -360,7 +360,6 @@ static int intel_svm_bind_mm(struct intel_iommu *iommu, struct device *dev, sdev->iommu = iommu; sdev->did = FLPT_DEFAULT_DID; sdev->sid = PCI_DEVID(info->bus, info->devfn); - init_rcu_head(&sdev->rcu); if (info->ats_enabled) { sdev->qdep = info->ats_qdep; if (sdev->qdep >= QI_DEV_EIOTLB_MAX_INVS) From patchwork Tue Feb 27 02:14:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207029 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2475715dyb; Mon, 26 Feb 2024 19:51:56 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXi79eMWHJvsbvQqPJ9Qqo+bHCSogEmde+lSaSUOqLq/dfMTNfIHRu9/TYSKdoFrYFQKZZpNFdJI9XMEJlES5dJb0rudg== X-Google-Smtp-Source: AGHT+IE/F6Jc60ks99tx9fa2Wab0Eoh51rWUKj+K75nLmUr7F+L3d+AoQMhFeCbg7+dgGzDd+MWl X-Received: by 2002:a17:906:e59:b0:a3f:b26e:147 with SMTP id q25-20020a1709060e5900b00a3fb26e0147mr6014268eji.51.1709005916154; Mon, 26 Feb 2024 19:51:56 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709005916; cv=pass; d=google.com; s=arc-20160816; b=XbN6QGHwXf5DEVOVIYmo65vqu5eECRH42JjfUSjNCKg8i3RIibrAA2Ez9wEMcf/VKZ eg4AQGfseOgCKsJqlA3CHUOu/DCVCJ5sqdOqqvZhrsMUeu79FsSCwtApb3PNVZ98aAVF GzVX2pSbLfuoGYb2EbqEl8bN2bWS6kyLr2K6G0j4qxiestnTsaw0lF3I5chLgR8gmW8V 2LYo47o7PibF0eq57flaKKowj8l9y/t1uSmLM9yx6AgTy1uBR73VwXYDKXzJN/kWM6rn ASCEVLF2pD1P/8O+sgX0qwusg0/sCeXRXxt+mdHiqp8FwI+28WlZa+3dJ8FvyWUtSGdz yBlA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=TTR66JCvKO8c4gK7ZmIzskZlbGpI2CgOMB8gKwWEB1U=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=TTc5tDK8kXsqZsIVYC8gyb+uLm6glVTUXuxrnXz11/rCuNFIT18iV6Lo5libOKShLk D5ipu0CYAhFOSS5RSMjk7fyxLclJe2rZxQxUYN8s7MNVcaI00ApA5pGMZOPN0iUQaubL 5UfXqd8efKCf+yddz3coo3NItXI7nMkIoT2fzDYfTQ7ZML7JLflFCXHwNddBUxuoHKMv 1A9XWIbgz4NHYXnwyDUJ3O48QeLbPcciKSXbN7x7+6pKFiD6Pq4aNyA6DjZ18EznqeLQ TQDvhuMBB7BnJDvxb7p8UrkefzPvAqM5n0xmc/rINrGoahX2sHBg4TWkWRUHbTR4SMPr FhTg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="T/oJpDjK"; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82594-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82594-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id e17-20020a170906249100b00a3e0dc734e4si344616ejb.790.2024.02.26.19.51.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 19:51:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82594-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="T/oJpDjK"; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82594-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82594-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 808821F258CC for ; Tue, 27 Feb 2024 02:22:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4283F54FA4; Tue, 27 Feb 2024 02:20:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="T/oJpDjK" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3112A4EB46 for ; Tue, 27 Feb 2024 02:20:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000451; cv=none; b=dp70+KLeN2eA1bB5En4muE51sZ3QiDl4GZqMGE+rwBB1jN4UrtuED1An4mIGyklLt55zc7fC6EraIZtnTa8alT/jiAQ3EugBaIoSs185/BEV+RgUaxaANa8z06+8hhtpKWdyS9Pi+fj5v+KW8iD5RJTbIgkuqpwHzOf4EWWzxzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000451; c=relaxed/simple; bh=l3KHltvidM1+Dw9DIvEfLJOSy3pkwtgZUOjJYqUC4ug=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=J6FLs23nC+uS6vJSKWAX7Rj3vs08wWHsgjTeLhzHJCyCHANaC1KowsCfVM8Pg6paHPJTwOGNiPvEuLt4Za2RTeIwlezKnfIXIF1w1IQxjipJ3TgANJnyeKLCOOJU1gsY3u7L7xbZtgom2ZH+5hK9MgEufnlrC6jUp8GplHTSR9c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=T/oJpDjK; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000450; x=1740536450; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=l3KHltvidM1+Dw9DIvEfLJOSy3pkwtgZUOjJYqUC4ug=; b=T/oJpDjKLsa6pxXHYMzCgUsae+pawnT3dZqIf6YO1YksqCWk7dgPI2zB 0YBJ7yGcuU0NdTaZaLSbQJon8RwmIjQS90SFhpRCnq9VQmpquY7JDDEqN p9ix77hxNCQWHHC0i/pgsxoDivvtQYJEv1bu9e8sa0iSA8Cy7pDhQM25b oFO0hZb5fBjBTl1xOaeek061k9LwfJGelU2hpKUVhoWmc01y27AtP76qh 14FLVa1t787U9+eKxzvz9uhdCZNRx52u+8qp9aad+qBAuSiHo2zzLAdHj 4vDjUkTcF4rUxyw2R79vgJMjNGJtT2bmWSdAO6FHfXQyUIEvH7/jqaA3h Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273124" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273124" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418303" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:48 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 6/8] iommu/vt-d: Merge intel_svm_bind_mm() into its caller Date: Tue, 27 Feb 2024 10:14:39 +0800 Message-Id: <20240227021441.50434-7-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792022587309475398 X-GMAIL-MSGID: 1792022587309475398 From: Tina Zhang intel_svm_set_dev_pasid() is the only caller of intel_svm_bind_mm(). Merge them and remove intel_svm_bind_mm(). No functional change intended. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20240219125723.1645703-4-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/svm.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index a92a9e2239e2..1dd56d4eb88c 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -315,10 +315,11 @@ static int pasid_to_svm_sdev(struct device *dev, unsigned int pasid, return 0; } -static int intel_svm_bind_mm(struct intel_iommu *iommu, struct device *dev, - struct iommu_domain *domain, ioasid_t pasid) +static int intel_svm_set_dev_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid) { struct device_domain_info *info = dev_iommu_priv_get(dev); + struct intel_iommu *iommu = info->iommu; struct mm_struct *mm = domain->mm; struct intel_svm_dev *sdev; struct intel_svm *svm; @@ -796,15 +797,6 @@ int intel_svm_page_response(struct device *dev, return ret; } -static int intel_svm_set_dev_pasid(struct iommu_domain *domain, - struct device *dev, ioasid_t pasid) -{ - struct device_domain_info *info = dev_iommu_priv_get(dev); - struct intel_iommu *iommu = info->iommu; - - return intel_svm_bind_mm(iommu, dev, domain, pasid); -} - static void intel_svm_domain_free(struct iommu_domain *domain) { kfree(to_dmar_domain(domain)); From patchwork Tue Feb 27 02:14:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207008 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2450009dyb; Mon, 26 Feb 2024 18:22:33 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCV+BvI9kqNC1eT57y2PvuyS3oJPf9VVA09TvOGQTr0/VGHoYUOWh1/zQhNxKf8eUKi2JFWnAXmDuPbdGSnUf5R10ZEHtA== X-Google-Smtp-Source: AGHT+IGAGzYTbPV1mK10Pgi/KVw8BKORsftV90MauObaWwoBJ0ew4jrlX6gNTAw0L6y1o/pOw7NV X-Received: by 2002:a05:620a:178b:b0:787:7887:8e1d with SMTP id ay11-20020a05620a178b00b0078778878e1dmr1199769qkb.10.1709000553279; Mon, 26 Feb 2024 18:22:33 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709000553; cv=pass; d=google.com; s=arc-20160816; b=Jx3modsK/lOjJ8a6sihOe2YrkPgXbXcup6xrq21N8SYrPVktyZiOkGR2bwC/Xxlrz7 dyMknZ7dATEmZBtQd7gDkls8mzXGNOiTiXTKRiSrdElfJOZESacQv2ts56afGPZ9v4Je bHvRBsdTH07kU1ANaPO8CKkJEODyHnNCHLAmKH0TrtRQvHkn7w/i59XaIfRWaYzZ9F6H hrJtVWrRPYEGuOAj83yh8++AP9a5fDsa238+bEwC1sYSq/RBD+YSwtgRkU7m9c2mVXK0 Bizg/AHV7g0uLVqK+Sxqf12Rrp12xCbjYB6oDpL6ozYoI7eToIrsnoctCV9BotxjDUGY 36bw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=vOIoqyZLx9bdaJUQMNbKIGmLcVtm1AGQC68SulikN7Y=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=iTL7WkXfVAjwjkCRCCyFB1nPjppDx0iDLTm62EfiWRNeG5FpBIcGdhZA9QjvMRjoWE nurf8m0fpBT0KxZo15la30u5h0jbgBRFElnGTmksUHQWX98ft1tZSN1ReNCXmaWQKxxo L+dAq2InDs4qLdZ+VT8oXIiTMCmFxM29CHoGypm/5GVuc5OTJeT44r5l4aOfwA8QfUvV Y2hDmAM3TUzAU6iU4DAXtQxkWBza9ZnFbhmXnUaBFM1vFSg7pt18elH0lV9s36n64LvI ndHVUbTp2nf0WWXwHDcA6Rw8i1tFSWH0MFq6TqwEkO60yuZL6V+OPGg/7iu/TN2mJxAV tDgg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=PtYOogLP; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82595-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82595-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id wa17-20020a05620a4d1100b00787bd7195a1si6468614qkn.424.2024.02.26.18.22.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 18:22:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82595-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=PtYOogLP; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82595-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82595-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 80D871C245FD for ; Tue, 27 Feb 2024 02:22:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 307B955C0E; Tue, 27 Feb 2024 02:20:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="PtYOogLP" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 16B6A53E38 for ; Tue, 27 Feb 2024 02:20:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000453; cv=none; b=o+PFHZ0BQiAxgtYsutxI/odZ+frpvxCkt/v9XDmQp1lFU6DjaGRvrQRq2oT9IptGn5GrJ68dru6JDHA6uY5ksGWHMbd1HgmwFEXNGAwD0ZEUA0CvFeaT5yvY1cAjEFd1BXvQxzFBfm02P5U6/d+UZUZM0s375bBtTkOdgqv+EdA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000453; c=relaxed/simple; bh=1+dCDOoM/22cmmjbSNHsijPzXOxGUUzKzZQk17Ikwy0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tmLfkMuUwk4vCJMFaHnrFC5eiamEkKdjGQ8O5kZGzLlpXOhHyzYAWYokuPAp0NHlrDebph34MR3Q12PpnPOtkv6oPogLAQlWA4KLDDOxHv0QQ4Mlp1nakTULr0ltKFiu6FZcLsK7t1er3brMxzlkOISYDEKVwvkl282vVpJw4W0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=PtYOogLP; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000452; x=1740536452; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1+dCDOoM/22cmmjbSNHsijPzXOxGUUzKzZQk17Ikwy0=; b=PtYOogLP64bUTsx817BNrnynNVitlyy7gR2frNMvKD5ApItJWnybnOBP l+uePBqapF6unz7OBMLznaZi8wACWEQdy22zVtNppBfRreO/ttPyzHXeC a2Z7IUCA61ZGXOSws5qT2NW5PNZnSseomSiRBBVuanpZ345C3qIrh2eUs xW9IPe7NT0iL4qL/gGJi2EVqUInfyeXVyhlE9H94u4eMIOk/7SYgNRZv8 lk7RX9QolkNmzeM0bn6u7BEqOM/xv0wBaL+NoD6kHhbdQvq4QsVsU01c8 ad8zGFsP+DAiq/E5HYy8G7HJQugetKvSZ+8YHf2ORn1IlSz+bBNt/Hmlq Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273127" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273127" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418306" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:50 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 7/8] iommu/vt-d: Use rbtree to track iommu probed devices Date: Tue, 27 Feb 2024 10:14:40 +0800 Message-Id: <20240227021441.50434-8-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792016964117833986 X-GMAIL-MSGID: 1792016964117833986 Use a red-black tree(rbtree) to track devices probed by the driver's probe_device callback. These devices need to be looked up quickly by a source ID when the hardware reports a fault, either recoverable or unrecoverable. Fault reporting paths are critical. Searching a list in this scenario is inefficient, with an algorithm complexity of O(n). An rbtree is a self-balancing binary search tree, offering an average search time complexity of O(log(n)). This significant performance improvement makes rbtrees a better choice. Furthermore, rbtrees are implemented on a per-iommu basis, eliminating the need for global searches and further enhancing efficiency in critical fault paths. The rbtree is protected by a spin lock with interrupts disabled to ensure thread-safe access even within interrupt contexts. Co-developed-by: Huang Jiaqing Signed-off-by: Huang Jiaqing Signed-off-by: Lu Baolu Reviewed-by: Jason Gunthorpe Link: https://lore.kernel.org/r/20240220065939.121116-2-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.h | 8 ++++ drivers/iommu/intel/dmar.c | 3 +- drivers/iommu/intel/iommu.c | 88 ++++++++++++++++++++++++++++++++++++- 3 files changed, 96 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index 4145c04cb1c6..df00240ebe90 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -722,6 +722,11 @@ struct intel_iommu { struct q_inval *qi; /* Queued invalidation info */ u32 iommu_state[MAX_SR_DMAR_REGS]; /* Store iommu states between suspend and resume.*/ + /* rb tree for all probed devices */ + struct rb_root device_rbtree; + /* protect the device_rbtree */ + spinlock_t device_rbtree_lock; + #ifdef CONFIG_IRQ_REMAP struct ir_table *ir_table; /* Interrupt remapping info */ struct irq_domain *ir_domain; @@ -755,6 +760,8 @@ struct device_domain_info { struct intel_iommu *iommu; /* IOMMU used by this device */ struct dmar_domain *domain; /* pointer to domain */ struct pasid_table *pasid_table; /* pasid table */ + /* device tracking node(lookup by PCI RID) */ + struct rb_node node; #ifdef CONFIG_INTEL_IOMMU_DEBUGFS struct dentry *debugfs_dentry; /* pointer to device directory dentry */ #endif @@ -1081,6 +1088,7 @@ void free_pgtable_page(void *vaddr); void iommu_flush_write_buffer(struct intel_iommu *iommu); struct iommu_domain *intel_nested_domain_alloc(struct iommu_domain *parent, const struct iommu_user_data *user_data); +struct device *device_rbtree_find(struct intel_iommu *iommu, u16 rid); #ifdef CONFIG_INTEL_IOMMU_SVM void intel_svm_check(struct intel_iommu *iommu); diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index 23cb80d62a9a..f9b63c2875f7 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -1095,7 +1095,8 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd) iommu->agaw = agaw; iommu->msagaw = msagaw; iommu->segment = drhd->segment; - + iommu->device_rbtree = RB_ROOT; + spin_lock_init(&iommu->device_rbtree_lock); iommu->node = NUMA_NO_NODE; ver = readl(iommu->reg + DMAR_VER_REG); diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index cfbe7c8e74fb..5568f17d867f 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -97,6 +97,81 @@ static phys_addr_t root_entry_uctp(struct root_entry *re) return re->hi & VTD_PAGE_MASK; } +static int device_rid_cmp_key(const void *key, const struct rb_node *node) +{ + struct device_domain_info *info = + rb_entry(node, struct device_domain_info, node); + const u16 *rid_lhs = key; + + if (*rid_lhs < PCI_DEVID(info->bus, info->devfn)) + return -1; + + if (*rid_lhs > PCI_DEVID(info->bus, info->devfn)) + return 1; + + return 0; +} + +static int device_rid_cmp(struct rb_node *lhs, const struct rb_node *rhs) +{ + struct device_domain_info *info = + rb_entry(lhs, struct device_domain_info, node); + u16 key = PCI_DEVID(info->bus, info->devfn); + + return device_rid_cmp_key(&key, rhs); +} + +/* + * Looks up an IOMMU-probed device using its source ID. + * + * Returns the pointer to the device if there is a match. Otherwise, + * returns NULL. + * + * Note that this helper doesn't guarantee that the device won't be + * released by the iommu subsystem after being returned. The caller + * should use its own synchronization mechanism to avoid the device + * being released during its use if its possibly the case. + */ +struct device *device_rbtree_find(struct intel_iommu *iommu, u16 rid) +{ + struct device_domain_info *info = NULL; + struct rb_node *node; + unsigned long flags; + + spin_lock_irqsave(&iommu->device_rbtree_lock, flags); + node = rb_find(&rid, &iommu->device_rbtree, device_rid_cmp_key); + if (node) + info = rb_entry(node, struct device_domain_info, node); + spin_unlock_irqrestore(&iommu->device_rbtree_lock, flags); + + return info ? info->dev : NULL; +} + +static int device_rbtree_insert(struct intel_iommu *iommu, + struct device_domain_info *info) +{ + struct rb_node *curr; + unsigned long flags; + + spin_lock_irqsave(&iommu->device_rbtree_lock, flags); + curr = rb_find_add(&info->node, &iommu->device_rbtree, device_rid_cmp); + spin_unlock_irqrestore(&iommu->device_rbtree_lock, flags); + if (WARN_ON(curr)) + return -EEXIST; + + return 0; +} + +static void device_rbtree_remove(struct device_domain_info *info) +{ + struct intel_iommu *iommu = info->iommu; + unsigned long flags; + + spin_lock_irqsave(&iommu->device_rbtree_lock, flags); + rb_erase(&info->node, &iommu->device_rbtree); + spin_unlock_irqrestore(&iommu->device_rbtree_lock, flags); +} + /* * This domain is a statically identity mapping domain. * 1. This domain creats a static 1:1 mapping to all usable memory. @@ -4326,25 +4401,34 @@ static struct iommu_device *intel_iommu_probe_device(struct device *dev) } dev_iommu_priv_set(dev, info); + ret = device_rbtree_insert(iommu, info); + if (ret) + goto free; if (sm_supported(iommu) && !dev_is_real_dma_subdevice(dev)) { ret = intel_pasid_alloc_table(dev); if (ret) { dev_err(dev, "PASID table allocation failed\n"); - kfree(info); - return ERR_PTR(ret); + goto clear_rbtree; } } intel_iommu_debugfs_create_dev(info); return &iommu->iommu; +clear_rbtree: + device_rbtree_remove(info); +free: + kfree(info); + + return ERR_PTR(ret); } static void intel_iommu_release_device(struct device *dev) { struct device_domain_info *info = dev_iommu_priv_get(dev); + device_rbtree_remove(info); dmar_remove_one_dev_info(dev); intel_pasid_free_table(dev); intel_iommu_debugfs_remove_dev(info); From patchwork Tue Feb 27 02:14:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 207059 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2498678dyb; Mon, 26 Feb 2024 21:10:24 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCULgSnj+FnG3PW4AwPB3Z9fk691DnXEt6yL+qM2y+XdyvAPN+skJnRGTpcuLHD5qIRIxX2/M5EGhrt50MkuLMGZ+HkqFg== X-Google-Smtp-Source: AGHT+IGT40rKj5XrvA8KH9B36jblY41+vrhRdUipev0logOgXUGh0NlPlcAWNypO13YLjKhmOo4o X-Received: by 2002:a05:6358:2920:b0:17b:5722:39d7 with SMTP id y32-20020a056358292000b0017b572239d7mr14534463rwb.7.1709010624056; Mon, 26 Feb 2024 21:10:24 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709010624; cv=pass; d=google.com; s=arc-20160816; b=tlYqsJACxtRGWabILAijLEtQY9Q4QyG7Jht+4bTl5yO33cNKKBTH6kkP51YjqYMRr/ 5KMfZU275hvSLAC06jcQBhb50UWEUe39vnM2pgQKXYfllMB3pM/aSs+Cj2ZumAnPjWnP HUW6GTR0TWaRaCajjKJCKa9+/XTvDXZ6xRoJH92OeL5tgYCx66ZuIAUvnJpNab3G7Sic WXjavvLSjrirEbz69PT8wjmxB6C+g+4W81yksEolTiwV3tkEygpEGqC5vFzorbenFTQD sw3oZiZ5hfdi7Kka5uF9EYs++ELj6W82JiDRtEka7imYcRkrHR4obK97kWYZX8W+g97t kyUA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=8+4/7coRPX92FwhmmFefnmF+fiqFF84k/QypchjDQXM=; fh=+24AZIOwsB6rN2R5rZXfKkfQNZggrrSJ6wNtGopki7U=; b=H1tch52F1Ijjz339bWprL8M2baCP0yEROcg12B517XHtAW7QrI3UYp0r1l3X0fN+er 93u4aXj6EF/sDJeM5xmbpjNmjN6Mp+hLTfid+2eVdMajrmijG3rAyLMgxsRVBW7hGeKq 7tyRL2YnmDIuSGruysLkcx+ZnQ5wy1bOxgJ77XDRlOJllxeUks5xkYOvOARpi1Vg6ImL rF/dK0RNhdp5iev/nbmP8uYjxM5X2nyULr9hYV4GiLPX/alEUHA/NUj+LSderD109oEj jHTFqFw5g5J/EGX3YhadJozzvP6U6UgCmcipOAG/T5Psv/5GC2uHNuawlpCQ7QZ+7zqS mXOg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NNWt2Zwd; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82596-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82596-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id r199-20020a632bd0000000b005dc81a6b2c9si4764413pgr.666.2024.02.26.21.10.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 21:10:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82596-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NNWt2Zwd; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-82596-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82596-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7189528EE7D for ; Tue, 27 Feb 2024 02:22:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B5C7E55E41; Tue, 27 Feb 2024 02:20:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="NNWt2Zwd" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54BF81B28D for ; Tue, 27 Feb 2024 02:20:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000455; cv=none; b=f41NkDsHQic/Rk17Bdcq6gwxbARyRXnB51NtWch8XM0dv8dNr2srXbhKwxfIU7fENxxwiz4Yuz3NVp2K9uL05LWMQtDPjelXerx6Pjn27hsVahdof0i8EANog3suKCKVTvogfuDZ/IFOUQmb1uulvLbg48i8HjsaG512IjOmyB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709000455; c=relaxed/simple; bh=SurMc55kkassQxYbbRkJIwr+dzuElbnFozRuUzPEssU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rWXL/Kjj2Mi8LyIX/57wDUoShByszctvD2w5jsUBa1A7XEFAVMkCJU7LEsaqNTESvZSnuygQX7U8pgts/8EYUcYZcpKiYOdrniqBVL/8KBE/14Xdbev7khxf1ZT3G+QJS7/6TU9L4P7lso7X7ZB7ibDmZkGAsvadsNR+FMTHCho= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=NNWt2Zwd; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709000454; x=1740536454; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SurMc55kkassQxYbbRkJIwr+dzuElbnFozRuUzPEssU=; b=NNWt2ZwdDAPScJ0Y0kozc/R+5CHBNJqpvQdwzRyMY5Sv6rH9+EETtweG b4xLBEwhFjxCsAs+pJtzac9onxUwhHTplNCFBRLZqbI0eI/Pla/X5kCXW BnSKukUzp0MeCb3li26jcgqFwYYHXtd7E+mGM60NTXqV32E3oh3ssJcaH +7gL93xtETFV/ZpaTcEq5iEYIvgpNdUbBTq0hQjb5t+vVCe2Watw32kjP 5NQ/90zGcUmrGid23Qjtbb0jdC6K+dVev3XczkY5nir2UpGQaNZk+WzTI VMdOD2JinBzUYs2X+MMVSRfNJ3ZaacIlDt3eKQ5QaxktHJcXv2QfofBBM g==; X-IronPort-AV: E=McAfee;i="6600,9927,10996"; a="6273134" X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="6273134" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Feb 2024 18:20:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,187,1705392000"; d="scan'208";a="7418310" Received: from allen-box.sh.intel.com ([10.239.159.127]) by orviesa008.jf.intel.com with ESMTP; 26 Feb 2024 18:20:52 -0800 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Erick Archer , Jingqi Liu , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 8/8] iommu/vt-d: Use device rbtree in iopf reporting path Date: Tue, 27 Feb 2024 10:14:41 +0800 Message-Id: <20240227021441.50434-9-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240227021441.50434-1-baolu.lu@linux.intel.com> References: <20240227021441.50434-1-baolu.lu@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792027524392723696 X-GMAIL-MSGID: 1792027524392723696 The existing I/O page fault handler currently locates the PCI device by calling pci_get_domain_bus_and_slot(). This function searches the list of all PCI devices until the desired device is found. To improve lookup efficiency, replace it with device_rbtree_find() to search the device within the probed device rbtree. The I/O page fault is initiated by the device, which does not have any synchronization mechanism with the software to ensure that the device stays in the probed device tree. Theoretically, a device could be released by the IOMMU subsystem after device_rbtree_find() and before iopf_get_dev_fault_param(), which would cause a use-after-free problem. Add a mutex to synchronize the I/O page fault reporting path and the IOMMU release device path. This lock doesn't introduce any performance overhead, as the conflict between I/O page fault reporting and device releasing is very rare. Signed-off-by: Lu Baolu Reviewed-by: Jason Gunthorpe Link: https://lore.kernel.org/r/20240220065939.121116-3-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.h | 2 ++ drivers/iommu/intel/dmar.c | 1 + drivers/iommu/intel/iommu.c | 3 +++ drivers/iommu/intel/svm.c | 17 +++++++++-------- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index df00240ebe90..cd267ba64eda 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -719,6 +719,8 @@ struct intel_iommu { #endif struct iopf_queue *iopf_queue; unsigned char iopfq_name[16]; + /* Synchronization between fault report and iommu device release. */ + struct mutex iopf_lock; struct q_inval *qi; /* Queued invalidation info */ u32 iommu_state[MAX_SR_DMAR_REGS]; /* Store iommu states between suspend and resume.*/ diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index f9b63c2875f7..d14797aabb7a 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -1097,6 +1097,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd) iommu->segment = drhd->segment; iommu->device_rbtree = RB_ROOT; spin_lock_init(&iommu->device_rbtree_lock); + mutex_init(&iommu->iopf_lock); iommu->node = NUMA_NO_NODE; ver = readl(iommu->reg + DMAR_VER_REG); diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 5568f17d867f..eaa648c6c389 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4427,8 +4427,11 @@ static struct iommu_device *intel_iommu_probe_device(struct device *dev) static void intel_iommu_release_device(struct device *dev) { struct device_domain_info *info = dev_iommu_priv_get(dev); + struct intel_iommu *iommu = info->iommu; + mutex_lock(&iommu->iopf_lock); device_rbtree_remove(info); + mutex_unlock(&iommu->iopf_lock); dmar_remove_one_dev_info(dev); intel_pasid_free_table(dev); intel_iommu_debugfs_remove_dev(info); diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index 1dd56d4eb88c..bdf3584ca0af 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -643,7 +643,7 @@ static irqreturn_t prq_event_thread(int irq, void *d) struct intel_iommu *iommu = d; struct page_req_dsc *req; int head, tail, handled; - struct pci_dev *pdev; + struct device *dev; u64 address; /* @@ -689,23 +689,24 @@ static irqreturn_t prq_event_thread(int irq, void *d) if (unlikely(req->lpig && !req->rd_req && !req->wr_req)) goto prq_advance; - pdev = pci_get_domain_bus_and_slot(iommu->segment, - PCI_BUS_NUM(req->rid), - req->rid & 0xff); /* * If prq is to be handled outside iommu driver via receiver of * the fault notifiers, we skip the page response here. */ - if (!pdev) + mutex_lock(&iommu->iopf_lock); + dev = device_rbtree_find(iommu, req->rid); + if (!dev) { + mutex_unlock(&iommu->iopf_lock); goto bad_req; + } - if (intel_svm_prq_report(iommu, &pdev->dev, req)) + if (intel_svm_prq_report(iommu, dev, req)) handle_bad_prq_event(iommu, req, QI_RESP_INVALID); else - trace_prq_report(iommu, &pdev->dev, req->qw_0, req->qw_1, + trace_prq_report(iommu, dev, req->qw_0, req->qw_1, req->priv_data[0], req->priv_data[1], iommu->prq_seq_number++); - pci_dev_put(pdev); + mutex_unlock(&iommu->iopf_lock); prq_advance: head = (head + sizeof(*req)) & PRQ_RING_MASK; }