Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp474205imm; Fri, 11 May 2018 01:03:41 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrNQt1HDKLnVBAkSlrZUk5l1wpxaklRcg/kmRc69Me4F0wiM9zgBpT5CZpXhWOZ6jZnHRZY X-Received: by 2002:a62:6a0a:: with SMTP id f10-v6mr4432986pfc.99.1526025821455; Fri, 11 May 2018 01:03:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526025821; cv=none; d=google.com; s=arc-20160816; b=kTNS26SfQFi3/siCMcItFW9dg6bfGw0fTqPZluuZyt2DmndmH09Ks2Pl47VOXzrtHD HJPn+EZHzxAWr/DvcwfXczRDP3EgpNYWVGjXApuhwdms7dLNKdbaM0Xurq4dmy7bOuZc jxM29h5Oul8F2ePAOzCUtQtFO2hRXlD9SDmzJYwahhY4rVuCQwEfQQizH8pP3nCh/bFF L3FCY28ddhL4dwPmQ8Uc3u7EaYLiBfAuS+Kb3wfznz+GeNTjgEIxo2M1RL9Tg9zTfcHm 7Mw0b8LwJQptnIVa1dFV7btroSmO3jbQvWb7cQr5ZgauGImDiZCR2YCoMvYAwNKZyOxx D8CA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=mc+66cpLgGJrF8TqjhED7vezJOUwyDTPecUGyKpn7oE=; b=knPqlkSeRyXSYvZM/MlRVNqFX3SHmkHNi2WSlzHE7vJu6g8Lyxre27nWMRj8Hq0Plx OCJ5LLcGeuDkUNmWiscjM0tfggm4zoSItKZTNT1urpvYld3Pn/q0IDjRwKzSNPjoS3ND J5Xc3mszWf+779vV+8efuyuSG5Ozdd1dCidMmGYG0JbZCPlU1IG/71RGFZO2OJWata2H FrcV21Q0UTtDROSWGXGJU6rRUBnxxa8O3ZiXkfNj97a+tNoPnQbZ44FlGcvziyPFtykY wRb5z6N/32vlqDV0bfBdH28E1lX+wx2rpMz9CB36Dh3COusiaznyeFysdz99iFu4/ICx mHDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=XwfyEMdk; 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 j21-v6si2074349pgn.334.2018.05.11.01.03.04; Fri, 11 May 2018 01:03:41 -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=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=XwfyEMdk; 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 S1752954AbeEKICs (ORCPT + 99 others); Fri, 11 May 2018 04:02:48 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:37364 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752666AbeEKICT (ORCPT ); Fri, 11 May 2018 04:02:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=References:In-Reply-To:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding: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=mc+66cpLgGJrF8TqjhED7vezJOUwyDTPecUGyKpn7oE=; b=XwfyEMdkqbotf2iLOtYMDtl5u cjHd1bBfbIyc9e8JeFxu/tJk+aW2VSFyHa8jT6KjZ3P+W3Uej3ybNJ3TI+vtX32dGkVE+IeI7FmXw N/U1CC1onMoH7HGPgKY/Hu3F3GfFaGvbgap3qgt9+VmjdC15CgyBFv9q5rcFQitSKsCO/cbaLclSJ XThhor2x58pC7chk63IeWBikwOgwirm2Wl8EjGFFYCLXppyVMAQTa+meCWKkNcl/CRVqF9wU7oa7t 6jstK5bBzBn5wnxKkRThGroQm+81qyEDOcR33Y2NDIBH97FKxsp9ltwFyJfKoWJLwazqfVL0QVt4B rL3bU4poA==; Received: from 213-225-15-246.nat.highway.a1.net ([213.225.15.246] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1fH2zz-0008UB-IM; Fri, 11 May 2018 08:01:56 +0000 From: Christoph Hellwig To: iommu@lists.linux-foundation.org Cc: linux-arch@vger.kernel.org, Michal Simek , Greentime Hu , Vincent Chen , linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-c6x-dev@linux-c6x.org, linux-hexagon@vger.kernel.org, linux-m68k@lists.linux-m68k.org, nios2-dev@lists.rocketboards.org, openrisc@lists.librecores.org, linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-xtensa@linux-xtensa.org, linux-kernel@vger.kernel.org Subject: [PATCH 15/20] sh: use dma_direct_ops for the CONFIG_DMA_COHERENT case Date: Fri, 11 May 2018 09:59:40 +0200 Message-Id: <20180511075945.16548-16-hch@lst.de> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180511075945.16548-1-hch@lst.de> References: <20180511075945.16548-1-hch@lst.de> 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 This is a slight change in behavior as we avoid the detour through the virtual mapping for the coherent allocator, but if this CPU really is coherent that should be the right thing to do. Signed-off-by: Christoph Hellwig --- arch/sh/Kconfig | 1 + arch/sh/include/asm/dma-mapping.h | 4 ++++ arch/sh/kernel/Makefile | 4 ++-- arch/sh/kernel/dma-nommu.c | 4 ---- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 7d521926041e..d0b095323d62 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -157,6 +157,7 @@ config SWAP_IO_SPACE bool config DMA_COHERENT + select DMA_DIRECT_OPS bool config DMA_NONCOHERENT diff --git a/arch/sh/include/asm/dma-mapping.h b/arch/sh/include/asm/dma-mapping.h index 149e71f95be7..1ebc6a4eb1c5 100644 --- a/arch/sh/include/asm/dma-mapping.h +++ b/arch/sh/include/asm/dma-mapping.h @@ -6,7 +6,11 @@ extern const struct dma_map_ops nommu_dma_ops; static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) { +#ifdef CONFIG_DMA_NONCOHERENT return &nommu_dma_ops; +#else + return &dma_direct_ops; +#endif } extern void *dma_generic_alloc_coherent(struct device *dev, size_t size, diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile index dc80041f7363..cb5f1bfb52de 100644 --- a/arch/sh/kernel/Makefile +++ b/arch/sh/kernel/Makefile @@ -12,7 +12,7 @@ endif CFLAGS_REMOVE_return_address.o = -pg -obj-y := debugtraps.o dma-nommu.o dumpstack.o \ +obj-y := debugtraps.o dumpstack.o \ idle.o io.o irq.o irq_$(BITS).o kdebugfs.o \ machvec.o nmi_debug.o process.o \ process_$(BITS).o ptrace.o ptrace_$(BITS).o \ @@ -45,7 +45,7 @@ obj-$(CONFIG_DUMP_CODE) += disassemble.o obj-$(CONFIG_HIBERNATION) += swsusp.o obj-$(CONFIG_DWARF_UNWINDER) += dwarf.o obj-$(CONFIG_PERF_EVENTS) += perf_event.o perf_callchain.o - +obj-$(CONFIG_DMA_NONCOHERENT) += dma-nommu.o obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o ccflags-y := -Werror diff --git a/arch/sh/kernel/dma-nommu.c b/arch/sh/kernel/dma-nommu.c index 79a9edafa5b0..d8689b1cb743 100644 --- a/arch/sh/kernel/dma-nommu.c +++ b/arch/sh/kernel/dma-nommu.c @@ -51,7 +51,6 @@ static int nommu_map_sg(struct device *dev, struct scatterlist *sg, return nents; } -#ifdef CONFIG_DMA_NONCOHERENT static void nommu_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { @@ -67,16 +66,13 @@ static void nommu_sync_sg_for_device(struct device *dev, struct scatterlist *sg, for_each_sg(sg, s, nelems, i) sh_sync_dma_for_device(sg_virt(s), s->length, dir); } -#endif const struct dma_map_ops nommu_dma_ops = { .alloc = dma_generic_alloc_coherent, .free = dma_generic_free_coherent, .map_page = nommu_map_page, .map_sg = nommu_map_sg, -#ifdef CONFIG_DMA_NONCOHERENT .sync_single_for_device = nommu_sync_single_for_device, .sync_sg_for_device = nommu_sync_sg_for_device, -#endif }; EXPORT_SYMBOL(nommu_dma_ops); -- 2.17.0