Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp932261imu; Fri, 7 Dec 2018 11:10:16 -0800 (PST) X-Google-Smtp-Source: AFSGD/V2JhXY1nmg/fYAaWlCBBdXWl832470/3Wz92uYxqNfMqwxs9uPPcVWBIe5m2nVs7HqX1HC X-Received: by 2002:a62:6b85:: with SMTP id g127mr3577213pfc.42.1544209816631; Fri, 07 Dec 2018 11:10:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544209816; cv=none; d=google.com; s=arc-20160816; b=Q0zD9Li0SuQSZQOgGYvROTNUbURYVlO3/6YjuZqkw6ez3zyH2UMnG+JICgKkX0Bw0H E11a1GS2ZahbPid7ei5C0pay+hXsQRSts+a/ulwzlZK4zpO4q5CQZYgPeN5CeD3Kc6mZ Eh8VELFu25IiWEXOE2dyBLazEb9chN8xqWAv8vS99S+JrQ0L8cc/yjBT55uUfb3avqIx AXgpPI0g+MEHPZkdomUgT2pFHNAceB8RM2MlOsfUqJDSekBdWPL6Gj0SFlJofEuSjnmC FtxQH4+/yIDtoihfVnZx208EG0J3zT1ngrNHtktQxMSVk1heK4RQEEokwQKeZbWXYle4 os0A== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VCpdJZ0gHKCbmkkhEooeTYXC3/YicRkKASB9DgSdGUU=; b=QU1dg6j7kgny6y/zlySkS80sLegjKbIB/2UZXmGJ+8Trqu7HkZyKqGMx+NplJ8qHdY FtxIOOiRkn/dc1ytJMilDsdmlafnp4BLL5923vWRuUppEbAUTq/nCRS1LWN26inEay4g Ib7pQAdL/COC3Be3UVdU9zjpEdBP9DJM1t5K8mQNgRcPfOYvP/I6rwSA+YYFEC9OiDvw nKF0kniQ9KPcP57g0JW+OiObqU9w5ci/7zcOoADh7mgP8d9mfyWoB26zMQw6Qxumljog RwE/j//L95RRT0uYLR824smiwYuhgI3vMT8+Ybqy0sehg3Zw3NngJRvUjuT/Kj0dD+ET 31VQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=SuIxm1Xr; 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 w7si3901044pfw.200.2018.12.07.11.10.01; Fri, 07 Dec 2018 11:10:16 -0800 (PST) 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=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=SuIxm1Xr; 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 S1726451AbeLGTIr (ORCPT + 99 others); Fri, 7 Dec 2018 14:08:47 -0500 Received: from bombadil.infradead.org ([198.137.202.133]:48742 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726438AbeLGTIp (ORCPT ); Fri, 7 Dec 2018 14:08:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=VCpdJZ0gHKCbmkkhEooeTYXC3/YicRkKASB9DgSdGUU=; b=SuIxm1Xr+cZ4uEFn6HNCMJMFCS ypYmr+UoxwPi8XRJT/uiOOAyI95FWJScDa87pFae153Lf+tVSM/LIPUNK14Q+zqZDT6iKLqr/lyCV OSy7SIy79+RUtE3ZON1pCEmf8Oh9Fi+jdF8BwtHimYoVNYHOOBLqgzg99JK13zredVmWp96I8THO3 UrEvHy7Gln83yv7Ea5Sli3FNUKC/k20ZqVuY4UQ87c4TgCi56kGPDX4+TmXHqh3jDVAIohXR82RMx 8VMDkGGtEIYSWNvD1mOXKL7+6gzpNvuimdRgqwUUvxmaKyk8ImDiyGGy0YYdMSE/bNiImy27puaMh gRiLS8Iw==; Received: from [199.255.44.128] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gVLUK-0006yP-7q; Fri, 07 Dec 2018 19:08:36 +0000 From: Christoph Hellwig To: iommu@lists.linux-foundation.org, Linus Torvalds , Jesper Dangaard Brouer Cc: Tariq Toukan , Ilias Apalodimas , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Robin Murphy , Konrad Rzeszutek Wilk , Tony Luck , Fenghua Yu , Marek Szyprowski , Keith Busch , Jonathan Derrick , linux-pci@vger.kernel.org, linux-ia64@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 13/15] ACPI / scan: Refactor _CCA enforcement Date: Fri, 7 Dec 2018 11:07:18 -0800 Message-Id: <20181207190720.18517-14-hch@lst.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181207190720.18517-1-hch@lst.de> References: <20181207190720.18517-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Robin Murphy Rather than checking the DMA attribute at each callsite, just pass it through for acpi_dma_configure() to handle directly. That can then deal with the relatively exceptional DEV_DMA_NOT_SUPPORTED case by explicitly installing dummy DMA ops instead of just skipping setup entirely. This will then free up the dev->dma_ops == NULL case for some valuable fastpath optimisations. Signed-off-by: Robin Murphy Signed-off-by: Christoph Hellwig --- drivers/acpi/scan.c | 5 +++++ drivers/base/platform.c | 3 +-- drivers/pci/pci-driver.c | 3 +-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index bd1c59fb0e17..b75ae34ed188 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1456,6 +1456,11 @@ int acpi_dma_configure(struct device *dev, enum dev_dma_attr attr) const struct iommu_ops *iommu; u64 dma_addr = 0, size = 0; + if (attr == DEV_DMA_NOT_SUPPORTED) { + set_dma_ops(dev, &dma_dummy_ops); + return 0; + } + iort_dma_setup(dev, &dma_addr, &size); iommu = iort_iommu_configure(dev); diff --git a/drivers/base/platform.c b/drivers/base/platform.c index eae841935a45..c1ddf191711e 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1138,8 +1138,7 @@ int platform_dma_configure(struct device *dev) ret = of_dma_configure(dev, dev->of_node, true); } else if (has_acpi_companion(dev)) { attr = acpi_get_dma_attr(to_acpi_device_node(dev->fwnode)); - if (attr != DEV_DMA_NOT_SUPPORTED) - ret = acpi_dma_configure(dev, attr); + ret = acpi_dma_configure(dev, attr); } return ret; diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index bef17c3fca67..1b58e058b13f 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -1602,8 +1602,7 @@ static int pci_dma_configure(struct device *dev) struct acpi_device *adev = to_acpi_device_node(bridge->fwnode); enum dev_dma_attr attr = acpi_get_dma_attr(adev); - if (attr != DEV_DMA_NOT_SUPPORTED) - ret = acpi_dma_configure(dev, attr); + ret = acpi_dma_configure(dev, acpi_get_dma_attr(adev)); } pci_put_host_bridge_device(bridge); -- 2.19.1