Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1959971yba; Sun, 5 May 2019 18:49:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqze74iJVDCnmDexK3V9wfEPniQXnIscanOEPmNuBXXkYrI1T8g/bRBMkT8imvgpI0J7Ne/n X-Received: by 2002:a65:43c8:: with SMTP id n8mr27933104pgp.365.1557107389541; Sun, 05 May 2019 18:49:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557107389; cv=none; d=google.com; s=arc-20160816; b=j3NT/ZlOO8Y5O/nveSbFHpQrotc4cXMXWqGd0h8t8jlHkOQxQB9mzZjlZuB0LK21bE HUnNK2Gh6HqI1aWirkK4HzVbXsX/A+Ew+wLKpr6fjttlDNaOYxJzoAsuI+WAyoEli3RY hHf58QY+DLKYKpcS15zSozRyjDaM287os3MywQ8ZsXWAfYmhWl3aYI67eOZ+GMFauRX5 U30yYQdGcDyJ2fgjtDxEMH06vfDxsgM+F3mXiFHibXzyL9Otxu6Qt4xmntkzMHowXq1A eIVhwzWmqHSTJeFZh5nCdIjAeaCr6DhrPjoeDdYFdWXm4DWI9ganNAN/tcV8kOxnnFr0 HYOw== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:cc; bh=xeCDVTaAzwiSD8WKtsq++4bfqfjRilkBmM7yYnEoztc=; b=EbxOJRasE1UT0b+PJst8TEtm0VHA160LryS3ADVDbhDeIyjmQLZUs6iPc1gE0u+N0q ysZccC27j8ZgFvSZ0K5DVUfD8XCCx37ztSuWRBi5dDHvwRITQEZcOFLpP6RAeuuq1O3T JY9lnBDlth1tpg5tHmtaN5ZB3zf2m2M0kmwvDrCCVLf0uyJ9SPq1V1KrzO9eOPUQyIlo UWMU+LbVtty5ktz1skPfMrSb0JSQQKwQLiBEJzjKY7b1zFZQKaVY72b3Kih0GHAvEWRj IboV8poPJrdksOnjQXG431aupmshPVvB5AjvwlYM0lA0Q1j26f3NEuwUdDf3SXw8O4H3 1lOQ== 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 d1si13887478pgj.413.2019.05.05.18.49.34; Sun, 05 May 2019 18:49:49 -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 S1726229AbfEFBsp (ORCPT + 99 others); Sun, 5 May 2019 21:48:45 -0400 Received: from mga17.intel.com ([192.55.52.151]:49033 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725786AbfEFBsp (ORCPT ); Sun, 5 May 2019 21:48:45 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 May 2019 18:48:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,435,1549958400"; d="scan'208";a="146640656" Received: from allen-box.sh.intel.com (HELO [10.239.159.136]) ([10.239.159.136]) by fmsmga008.fm.intel.com with ESMTP; 05 May 2019 18:48:39 -0700 Cc: baolu.lu@linux.intel.com, murphyt7@tcd.ie, Joerg Roedel , Will Deacon , Robin Murphy , Marek Szyprowski , Kukjin Kim , Krzysztof Kozlowski , David Woodhouse , Andy Gross , David Brown , Matthias Brugger , Rob Clark , Heiko Stuebner , Gerald Schaefer , Thierry Reding , Jonathan Hunter , Alex Williamson , Thomas Gleixner , Marc Zyngier , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org, linux-tegra@vger.kernel.org, kvm@vger.kernel.org Subject: Re: [RFC 1/7] iommu/vt-d: Set the dma_ops per device so we can remove the iommu_no_mapping code To: Tom Murphy , iommu@lists.linux-foundation.org References: <20190504132327.27041-1-tmurphy@arista.com> <20190504132327.27041-2-tmurphy@arista.com> From: Lu Baolu Message-ID: <8fef18f5-773c-e1c9-2537-c9dff5bfd35e@linux.intel.com> Date: Mon, 6 May 2019 09:42:15 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190504132327.27041-2-tmurphy@arista.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 5/4/19 9:23 PM, Tom Murphy wrote: > Set the dma_ops per device so we can remove the iommu_no_mapping code. > > Signed-off-by: Tom Murphy > --- > drivers/iommu/intel-iommu.c | 85 +++---------------------------------- > 1 file changed, 6 insertions(+), 79 deletions(-) > > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > index eace915602f0..2db1dc47e7e4 100644 > --- a/drivers/iommu/intel-iommu.c > +++ b/drivers/iommu/intel-iommu.c > @@ -2622,17 +2622,6 @@ static int __init si_domain_init(int hw) > return 0; > } > > -static int identity_mapping(struct device *dev) > -{ > - struct device_domain_info *info; > - > - info = dev->archdata.iommu; > - if (info && info != DUMMY_DEVICE_DOMAIN_INFO) > - return (info->domain == si_domain); > - > - return 0; > -} > - > static int domain_add_dev_info(struct dmar_domain *domain, struct device *dev) > { > struct dmar_domain *ndomain; > @@ -3270,43 +3259,6 @@ static unsigned long intel_alloc_iova(struct device *dev, > return iova_pfn; > } > > -/* Check if the dev needs to go through non-identity map and unmap process.*/ > -static int iommu_no_mapping(struct device *dev) > -{ > - int found; > - > - if (iommu_dummy(dev)) > - return 1; > - > - found = identity_mapping(dev); > - if (found) { > - /* > - * If the device's dma_mask is less than the system's memory > - * size then this is not a candidate for identity mapping. > - */ > - u64 dma_mask = *dev->dma_mask; > - > - if (dev->coherent_dma_mask && > - dev->coherent_dma_mask < dma_mask) > - dma_mask = dev->coherent_dma_mask; > - > - if (dma_mask < dma_get_required_mask(dev)) { > - /* > - * 32 bit DMA is removed from si_domain and fall back > - * to non-identity mapping. > - */ > - dmar_remove_one_dev_info(dev); > - dev_warn(dev, "32bit DMA uses non-identity mapping\n"); > - > - return 0; > - } The iommu_no_mapping() also checks whether any 32bit DMA device uses identity mapping. The device might not work if the system memory space is bigger than 4G. Will you add this to other place, or it's unnecessary? Best regards, Lu Baolu