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.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 AA065C48BE8 for ; Fri, 18 Jun 2021 10:52:23 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 745B160FF0 for ; Fri, 18 Jun 2021 10:52:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 745B160FF0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bZPq5yWpJjh7YALMCSdZXB85N3Vh9xk/TUs8kzVgsI8=; b=5AVGhFEBf4V2qG PCiO1mLTrtb3sSF2Kd48NSddfWRlcmbJTXZEGwf37+0ODwGR83geK58UJg+wu54nbBqZnKEynT2M9 Aid4+4iUz0WCwXxqh/F+WZQU/+Krv/HCz9DoQanJdaIoIM9mqfK8uIguV0jS6Lp7Gk0VR5xHDEtI3 V3jkV8Xq4tK/d9TJVOQ/ogYBMEMNp86+3T8n5PyWsdn7LK4BYsFO3Oab03w8vPBoPScMlE0/WbCnd 0hroPguyt6lzSqXHjK9DZ1r7YYUbcnZ0l0W0WuxmGSz+87Es7kTC4OhqrBn6wPPmNrExC1Ofb3AGr 4OnqDD+VbmkUSULRp/TA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1luC5C-00DnMq-8x; Fri, 18 Jun 2021 10:50:42 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1luC57-00DnMC-SH for linux-arm-kernel@lists.infradead.org; Fri, 18 Jun 2021 10:50:39 +0000 Received: by mail-ed1-x52e.google.com with SMTP id s15so8004040edt.13 for ; Fri, 18 Jun 2021 03:50:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=gqS2coF+gzzhxK8JdJrBsn/rp6+MnCzkmwD0939wTww=; b=v3Z/or0+7TlFehwd12i21NCIgEp+gh++voW/VIymTVtCQXMzQPvX/oBn0X2zo1xPR3 KYQgE7FqiiWtiTUV6UUy5IulrfCwlajDLxWmG0ZJiFENdHhgrCjrnuuzIxc+V8YXIvnY pCtstbRSLOP/Q8jiqnCqY5PpkaPFLIt1BUODWANOsfuZnhXS7OPVGux5kJgw1mQkUoDi QIXJFcMJInFoRgQ3rF0aQ6bRrB1o+zhbn4WWPITxYMutZ4hAYOn0OgEiuYyuYMsawbdT VSpigMs9jVQPRW+PksLyNwzH8mNxk1lDYzlF5KJAd51X/ZOLJZaP9AEh7l6Hj7hzCPDa umBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=gqS2coF+gzzhxK8JdJrBsn/rp6+MnCzkmwD0939wTww=; b=a/2/KQNghEDg/GegVwREgDSHx+3jMg90ndTOiLjMOaAkuHu0HObu3apuG/bnhYIc3z ilo6X7Y4N6PNt8HMse4glE7j62Y2Zk9lwVp28T6hzNqOkR7gi8gAQ0EZfk/5V6abSVk8 t3+6w9f3yBYrSYJ3wnuaUm/WRcxFwdl4BltzLEC0cOmS+nD4obXSRl01BgNq0rTUg+LS 2crsWB0JzCifrB6YJSEPLWrVnr6cdXFi9Kb28T7OEzwFwE2OZLAZj3LPuuu0WGpcINdF WFbyPbZSvryurX43uPHerQMdD0lVI8+6pPWcN9GmyY5EiobK20AwV7nbbqNgrFEKY+4w tYow== X-Gm-Message-State: AOAM531XDmbeN3s5eTcKMGnKM6/51xuxqcEOyuzfg6h6S7iJyZBgx4Dt N+PJUYyy8fq+AfTL/k+hodxgJA== X-Google-Smtp-Source: ABdhPJwkwm0gLmvdkXKWZF4fjbq4g0GvgTenhMIDaNXRpOJoIOA8Ok+A/PIFx3v90WjMUVBRLplXvg== X-Received: by 2002:a05:6402:42cb:: with SMTP id i11mr4009322edc.242.1624013436164; Fri, 18 Jun 2021 03:50:36 -0700 (PDT) Received: from myrica (adsl-84-226-111-173.adslplus.ch. [84.226.111.173]) by smtp.gmail.com with ESMTPSA id m17sm863059ejg.96.2021.06.18.03.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jun 2021 03:50:35 -0700 (PDT) Date: Fri, 18 Jun 2021 12:50:15 +0200 From: Jean-Philippe Brucker To: Robin Murphy Cc: rjw@rjwysocki.net, lenb@kernel.org, joro@8bytes.org, mst@redhat.com, will@kernel.org, catalin.marinas@arm.com, baolu.lu@linux.intel.com, dwmw2@infradead.org, linux-acpi@vger.kernel.org, iommu@lists.linux-foundation.org, virtualization@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, eric.auger@redhat.com, sebastien.boeuf@intel.com, kevin.tian@intel.com, lorenzo.pieralisi@arm.com, guohanjun@huawei.com, sudeep.holla@arm.com Subject: Re: [PATCH v4 5/6] iommu/dma: Simplify calls to iommu_setup_dma_ops() Message-ID: References: <20210610075130.67517-1-jean-philippe@linaro.org> <20210610075130.67517-6-jean-philippe@linaro.org> <6ce5fecb-fc81-5bf1-3577-6a09437b243e@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <6ce5fecb-fc81-5bf1-3577-6a09437b243e@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210618_035037_967805_C064AF25 X-CRM114-Status: GOOD ( 29.03 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, Jun 16, 2021 at 06:02:39PM +0100, Robin Murphy wrote: > > diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c > > index c62e19bed302..175f8eaeb5b3 100644 > > --- a/drivers/iommu/dma-iommu.c > > +++ b/drivers/iommu/dma-iommu.c > > @@ -1322,7 +1322,9 @@ void iommu_setup_dma_ops(struct device *dev, u64 dma_base, u64 dma_limit) > > if (domain->type == IOMMU_DOMAIN_DMA) { > > if (iommu_dma_init_domain(domain, dma_base, dma_limit, dev)) > > goto out_err; > > - dev->dma_ops = &iommu_dma_ops; > > + set_dma_ops(dev, &iommu_dma_ops); > > + } else { > > + set_dma_ops(dev, NULL); > > I'm not keen on moving this here, since iommu-dma only knows that its own > ops are right for devices it *is* managing; it can't assume any particular > ops are appropriate for devices it isn't. The idea here is that > arch_setup_dma_ops() may have already set the appropriate ops for the > non-IOMMU case, so if the default domain type is passthrough then we leave > those in place. > > For example, I do still plan to revisit my conversion of arch/arm someday, > at which point I'd have to undo this for that reason. Makes sense, I'll remove this bit. > Simplifying the base and size arguments is of course fine, but TBH I'd say > rip the whole bloody lot out of the arch_setup_dma_ops() flow now. It's a > considerable faff passing them around for nothing but a tenuous sanity check > in iommu_dma_init_domain(), and now that dev->dma_range_map is a common > thing we should expect that to give us any relevant limitations if we even > still care. So I started working on this but it gets too bulky for a preparatory patch. Dropping the parameters from arch_setup_dma_ops() seems especially complicated because arm32 does need the size parameter for IOMMU mappings and that value falls back to the bus DMA mask or U32_MAX in the absence of dma-ranges. I could try to dig into this for a separate series. Even only dropping the parameters from iommu_setup_dma_ops() isn't completely trivial (8 files changed, 55 insertions(+), 36 deletions(-) because we still need the lower IOVA limit from dma_range_map), so I'd rather send it separately and have it sit in -next for a while. Thanks, Jean > > That said, those are all things which can be fixed up later if the series is > otherwise ready to go and there's still a chance of landing it for 5.14. If > you do have any other reason to respin, then I think the x86 probe_finalize > functions simply want an unconditional set_dma_ops(dev, NULL) before the > iommu_setup_dma_ops() call. > > Cheers, > Robin. > > > } > > return; > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > > index 85f18342603c..8d866940692a 100644 > > --- a/drivers/iommu/intel/iommu.c > > +++ b/drivers/iommu/intel/iommu.c > > @@ -5165,15 +5165,7 @@ static void intel_iommu_release_device(struct device *dev) > > static void intel_iommu_probe_finalize(struct device *dev) > > { > > - dma_addr_t base = IOVA_START_PFN << VTD_PAGE_SHIFT; > > - struct iommu_domain *domain = iommu_get_domain_for_dev(dev); > > - struct dmar_domain *dmar_domain = to_dmar_domain(domain); > > - > > - if (domain && domain->type == IOMMU_DOMAIN_DMA) > > - iommu_setup_dma_ops(dev, base, > > - __DOMAIN_MAX_ADDR(dmar_domain->gaw)); > > - else > > - set_dma_ops(dev, NULL); > > + iommu_setup_dma_ops(dev, 0, U64_MAX); > > } > > static void intel_iommu_get_resv_regions(struct device *device, > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel