From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CFCBDC43603 for ; Thu, 12 Dec 2019 01:17:25 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9152B205C9 for ; Thu, 12 Dec 2019 01:17:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9152B205C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 4875088138; Thu, 12 Dec 2019 01:17:25 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HRix18WJkGU2; Thu, 12 Dec 2019 01:17:24 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by whitealder.osuosl.org (Postfix) with ESMTP id F3DA08811A; Thu, 12 Dec 2019 01:17:23 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id C92E4C1796; Thu, 12 Dec 2019 01:17:23 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 47E4FC0881 for ; Thu, 12 Dec 2019 01:17:22 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 37A7888141 for ; Thu, 12 Dec 2019 01:17:22 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5coVkLlHp8lq for ; Thu, 12 Dec 2019 01:17:19 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by whitealder.osuosl.org (Postfix) with ESMTPS id E8FA18813D for ; Thu, 12 Dec 2019 01:17:18 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Dec 2019 17:17:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,303,1571727600"; d="scan'208";a="225737035" Received: from allen-box.sh.intel.com (HELO [10.239.159.136]) ([10.239.159.136]) by orsmga002.jf.intel.com with ESMTP; 11 Dec 2019 17:16:59 -0800 Subject: Re: [PATCH] iommu/vt-d: Set ISA bridge reserved region as relaxable To: Alex Williamson , joro@8bytes.org, iommu@lists.linux-foundation.org References: <157609608124.14870.10855090013879818212.stgit@gimli.home> From: Lu Baolu Message-ID: Date: Thu, 12 Dec 2019 09:16:14 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <157609608124.14870.10855090013879818212.stgit@gimli.home> Content-Language: en-US Cc: cprt@protonmail.com, eauger@redhat.com X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" Hi, On 12/12/19 4:28 AM, Alex Williamson wrote: > Commit d850c2ee5fe2 ("iommu/vt-d: Expose ISA direct mapping region via > iommu_get_resv_regions") created a direct-mapped reserved memory region > in order to replace the static identity mapping of the ISA address > space, where the latter was then removed in commit df4f3c603aeb > ("iommu/vt-d: Remove static identity map code"). According to the > history of this code and the Kconfig option surrounding it, this direct > mapping exists for the benefit of legacy ISA drivers that are not > compatible with the DMA API. > > In conjuntion with commit 9b77e5c79840 ("vfio/type1: check dma map > request is within a valid iova range") this change introduced a > regression where the vfio IOMMU backend enforces reserved memory regions > per IOMMU group, preventing userspace from creating IOMMU mappings > conflicting with prescribed reserved regions. A necessary prerequisite > for the vfio change was the introduction of "relaxable" direct mappings > introduced by commit adfd37382090 ("iommu: Introduce > IOMMU_RESV_DIRECT_RELAXABLE reserved memory regions"). These relaxable > direct mappings provide the same identity mapping support in the default > domain, but also indicate that the reservation is software imposed and > may be relaxed under some conditions, such as device assignment. > > Convert the ISA bridge direct-mapped reserved region to relaxable to > reflect that the restriction is self imposed and need not be enforced > by drivers such as vfio. > > Fixes: d850c2ee5fe2 ("iommu/vt-d: Expose ISA direct mapping region via iommu_get_resv_regions") > Cc: stable@vger.kernel.org # v5.3+ > Link: https://lore.kernel.org/linux-iommu/20191211082304.2d4fab45@x1.home > Reported-by: cprt > Tested-by: cprt > Signed-off-by: Alex Williamson This fix looks reasonable to me. Acked-by: Lu Baolu Best regards, baolu > --- > drivers/iommu/intel-iommu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > index 0c8d81f56a30..6eb0dd7489a1 100644 > --- a/drivers/iommu/intel-iommu.c > +++ b/drivers/iommu/intel-iommu.c > @@ -5737,7 +5737,7 @@ static void intel_iommu_get_resv_regions(struct device *device, > > if ((pdev->class >> 8) == PCI_CLASS_BRIDGE_ISA) { > reg = iommu_alloc_resv_region(0, 1UL << 24, 0, > - IOMMU_RESV_DIRECT); > + IOMMU_RESV_DIRECT_RELAXABLE); > if (reg) > list_add_tail(®->list, head); > } > _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu