Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1516279ybb; Sat, 11 Apr 2020 05:26:05 -0700 (PDT) X-Google-Smtp-Source: APiQypKYcoRHB+gu9Ffgp+C47a9y8PKQmr/4vFLbHX4qWgFpaIkzAJP4oDw3b0IFCA3/EWBPF24H X-Received: by 2002:a37:7043:: with SMTP id l64mr7576081qkc.78.1586607965444; Sat, 11 Apr 2020 05:26:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586607965; cv=none; d=google.com; s=arc-20160816; b=CQcN1QKoEWFCzfZ/PbCo0iO8SCBUiGBjyRZdLlFtUdcIUFjJ1TtJCchIHLvIoXfSks fM1berOak1F6IZbU6epPbmnctfUhVlDMSbEHuKcgto20AzwZr7R8LfjI6hFtoujCUuDi dXlNOegYAamNXIysvun1I+XJrNUWqbG7uzNFgirVue1AiAkBIUaV0UNvYK02d12TEvam vZ79CzPlsc9ieDkJZosVXpCUyhKD6dBSPFE69gCFXJJa4Y+jtHAwWbTcX2FCJRD25RC4 Kec4MEa1LcGksz6ZzfKL6bxvVBxGoAJ/8lwFmhT3DMX9RsDbK+LX32cYqW97hQ9JX0gn ZRIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=1vXQCVQT+nSDR6kam2FMQ9aIfqtttmuw96KGanLj80Q=; b=Sah9EKsTD/Z/d37bxcN3NfyiM8kgcavQUA5DQJTtyx3vGXU4uDvSzB5SLD7n7Y9PKl SbeWodwftWn42uSt4oebrh2Vg4NMuCNHw1OXfbemAs4HJOLt5MuTpbtsLTAAhKqnf4k5 HX5ajVeQRtVA2f5GaSSrBwFA3F+ZuGkU8xq8DM8SZotSN4XAFkYwULphB5H9fW49lm6Q VyIL/E0z8/8aKukpuvS/UMIHUepQNdEiDkcYbtPYbrK/eYru0M2l0rLyfn9NmnJdj4Ry QvSfuBDY+PGQ59w9uoidFA0qKfAktM98g5nTwcbmlGqqUYtDqJHq+9Pzmqa28bYByfQB qy6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=A0sArldA; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w6si2636326qts.244.2020.04.11.05.25.51; Sat, 11 Apr 2020 05:26:05 -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; dkim=pass header.i=@kernel.org header.s=default header.b=A0sArldA; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728804AbgDKMT3 (ORCPT + 99 others); Sat, 11 Apr 2020 08:19:29 -0400 Received: from mail.kernel.org ([198.145.29.99]:54890 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728534AbgDKMT2 (ORCPT ); Sat, 11 Apr 2020 08:19:28 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C1AB220644; Sat, 11 Apr 2020 12:19:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586607568; bh=9VJsLzw6WQVDD3O/6pkEdJQA2rnG1UciyKn9E9/Lk50=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A0sArldAla1Btw4N4qWSC14qkF28FE2mm5EJ/btbL8bOzeRo09KnsVmJ+ZlipDrol zrR7N8T7IicK0K7shM3Z5NzsuYSUUG0bWZvMR2klecsgKYuvudxQ6vn6HzxlQ2J06j AAsNoQSckYwKyO/YPS+lBfKYwpZttxedO5JVeMkA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lu Baolu , Joerg Roedel , Alan Stern , John Donnelly Subject: [PATCH 5.5 31/44] iommu/vt-d: Allow devices with RMRRs to use identity domain Date: Sat, 11 Apr 2020 14:09:51 +0200 Message-Id: <20200411115459.984976335@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200411115456.934174282@linuxfoundation.org> References: <20200411115456.934174282@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lu Baolu commit 9235cb13d7d17baba0b3a9277381258361e95c16 upstream. Since commit ea2447f700cab ("intel-iommu: Prevent devices with RMRRs from being placed into SI Domain"), the Intel IOMMU driver doesn't allow any devices with RMRR locked to use the identity domain. This was added to to fix the issue where the RMRR info for devices being placed in and out of the identity domain gets lost. This identity maps all RMRRs when setting up the identity domain, so that devices with RMRRs could also use it. Signed-off-by: Lu Baolu Signed-off-by: Joerg Roedel Cc: Alan Stern Cc: John Donnelly Signed-off-by: Greg Kroah-Hartman --- drivers/iommu/intel-iommu.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -2767,10 +2767,8 @@ static int __init si_domain_init(int hw) } /* - * Normally we use DMA domains for devices which have RMRRs. But we - * loose this requirement for graphic and usb devices. Identity map - * the RMRRs for graphic and USB devices so that they could use the - * si_domain. + * Identity map the RMRRs so that devices with RMRRs could also use + * the si_domain. */ for_each_rmrr_units(rmrr) { for_each_active_dev_scope(rmrr->devices, rmrr->devices_cnt, @@ -2778,9 +2776,6 @@ static int __init si_domain_init(int hw) unsigned long long start = rmrr->base_address; unsigned long long end = rmrr->end_address; - if (device_is_rmrr_locked(dev)) - continue; - if (WARN_ON(end < start || end >> agaw_to_width(si_domain->agaw))) continue; @@ -2919,9 +2914,6 @@ static int device_def_domain_type(struct if (dev_is_pci(dev)) { struct pci_dev *pdev = to_pci_dev(dev); - if (device_is_rmrr_locked(dev)) - return IOMMU_DOMAIN_DMA; - /* * Prevent any device marked as untrusted from getting * placed into the statically identity mapping domain. @@ -2959,9 +2951,6 @@ static int device_def_domain_type(struct return IOMMU_DOMAIN_DMA; } else if (pci_pcie_type(pdev) == PCI_EXP_TYPE_PCI_BRIDGE) return IOMMU_DOMAIN_DMA; - } else { - if (device_has_rmrr(dev)) - return IOMMU_DOMAIN_DMA; } return (iommu_identity_mapping & IDENTMAP_ALL) ?