Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp975503yba; Sat, 20 Apr 2019 18:33:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqygTZVcOIxgXO+8CsFc1ngNASIAzzU26D9akZfde6/rtni3EC4Im6emtUnZ8ubW+dr/gadY X-Received: by 2002:a62:4115:: with SMTP id o21mr12676851pfa.153.1555810418452; Sat, 20 Apr 2019 18:33:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555810418; cv=none; d=google.com; s=arc-20160816; b=YdBLTyY3CCtWOzgKzpUITJB43/50Cba5dEWg+5TtF1HRLN8vO//FVobRmHNeiI4oA7 DRnTK6UdzyyU5210rprOSXvYRXbF0SEzRZnIV/e1C+q5rvPZ7nPJXHwlhdJqSfZIV4To FvbQUQvauE9fAp17QTM6OhSXfhkCf06u6FEwk8/W5oRiBIMUl6TC9IUII0plGId7cAis iI/tG+DMtbv3KcstXWKemGG5ZzYb47B8k2wmLG6uIM3dfiSpCZzs2s22UFue62j4RBpT KvQO5vOaD5LPion016cQ9HQb6kukjD4pXYDHd/x16ArHeQ0mHWIZIjf9VaNwNVMM2GyE 352A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=3B4l3JUM9szzz/g7Je5dTYDSfZm+g3fvqxoPFOVAVzY=; b=QIvs/wDB3+paCpzEsZEtIL1ZPhT6nVQXhXV236VuEMlO5nYvrsbE3QaSffbWG2UiqP t6sIcvRlV5kBhJyrh0OMOd51AvU7H+WSG/4tzjTlbxgjAmZ08WaSk9xTBg2OKHZG1CYQ kqOgaXFoIOxiuf783s4rid2ZDHB18MEElFD8+/WdbpSD5gz9ZcsWly+tKzo7uI97aDOc pQTtmaGYXbGpw6sLMai65jjNGU4LrDDQ1LZScHa63IuBZzouUMhwwjo+e+hrdW4gBaKZ N4aqQ12hHoLh1Vaax0ghoh1Wxvw79vCluaS8XazrbRyrT5rwQJxN1zFYgrfMhK8JFTyJ JHPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 2si8808678pld.334.2019.04.20.18.33.23; Sat, 20 Apr 2019 18:33:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728370AbfDUB3Y (ORCPT + 99 others); Sat, 20 Apr 2019 21:29:24 -0400 Received: from mga09.intel.com ([134.134.136.24]:18104 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725882AbfDUB2s (ORCPT ); Sat, 20 Apr 2019 21:28:48 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Apr 2019 18:28:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,376,1549958400"; d="scan'208";a="136008179" Received: from allen-box.sh.intel.com ([10.239.159.136]) by orsmga008.jf.intel.com with ESMTP; 20 Apr 2019 18:24:04 -0700 From: Lu Baolu To: David Woodhouse , Joerg Roedel Cc: ashok.raj@intel.com, jacob.jun.pan@intel.com, alan.cox@intel.com, kevin.tian@intel.com, mika.westerberg@linux.intel.com, pengfei.xu@intel.com, Konrad Rzeszutek Wilk , Christoph Hellwig , Marek Szyprowski , Robin Murphy , iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Lu Baolu , Jacob Pan , Mika Westerberg Subject: [PATCH v3 07/10] iommu/vt-d: Keep swiotlb on if bounce page is necessary Date: Sun, 21 Apr 2019 09:17:16 +0800 Message-Id: <20190421011719.14909-8-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190421011719.14909-1-baolu.lu@linux.intel.com> References: <20190421011719.14909-1-baolu.lu@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The bouce page is necessary whenever there are untrusted devices in the system. The bounce page policy depends on swiotlb, hence don't turn off swiotlb if untrusted devices exist. Cc: Ashok Raj Cc: Jacob Pan Cc: Kevin Tian Cc: Mika Westerberg Signed-off-by: Lu Baolu --- drivers/iommu/intel-iommu.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index af040602bd44..e4a164324bdd 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -4528,22 +4528,27 @@ const struct attribute_group *intel_iommu_groups[] = { NULL, }; -static int __init platform_optin_force_iommu(void) +static inline bool platform_has_untrusted_device(void) { + bool has_untrusted_device = false; struct pci_dev *pdev = NULL; - bool has_untrusted_dev = false; - - if (!dmar_platform_optin() || no_platform_optin) - return 0; for_each_pci_dev(pdev) { if (pdev->untrusted) { - has_untrusted_dev = true; + has_untrusted_device = true; break; } } - if (!has_untrusted_dev) + return has_untrusted_device; +} + +static int __init platform_optin_force_iommu(void) +{ + if (!dmar_platform_optin() || no_platform_optin) + return 0; + + if (!platform_has_untrusted_device()) return 0; if (no_iommu || dmar_disabled) @@ -4557,9 +4562,6 @@ static int __init platform_optin_force_iommu(void) iommu_identity_mapping |= IDENTMAP_ALL; dmar_disabled = 0; -#if defined(CONFIG_X86) && defined(CONFIG_SWIOTLB) - swiotlb = 0; -#endif no_iommu = 0; return 1; @@ -4653,7 +4655,8 @@ int __init intel_iommu_init(void) up_write(&dmar_global_lock); #if defined(CONFIG_X86) && defined(CONFIG_SWIOTLB) - swiotlb = 0; + if (!platform_has_untrusted_device()) + swiotlb = 0; #endif dma_ops = &intel_dma_ops; -- 2.17.1