All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20180425064055.GA11460@lst.de>

diff --git a/a/1.txt b/N1/1.txt
index 9f50a66..baf77bc 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -11,307 +11,3 @@ although that, just like the original code is broken if you actually
 have highmem that needs to be mapped:
 
 ---
-From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
-From: Christoph Hellwig <hch@lst.de>
-Date: Mon, 16 Apr 2018 19:20:30 +0200
-Subject: nds32: use generic dma_noncoherent_ops
-
-Switch to the generic noncoherent direct mapping implementation.
-
-This makes sure the cache_sync routines is called in the unmap_sg
-case, to match the unmap_single and sync_{single,sg}_to_cpu cases.
-
-Signed-off-by: Christoph Hellwig <hch@lst.de>
----
- arch/nds32/Kconfig                   |   3 +
- arch/nds32/include/asm/Kbuild        |   1 +
- arch/nds32/include/asm/dma-mapping.h |  14 ---
- arch/nds32/kernel/dma.c              | 182 +++++----------------------
- 4 files changed, 37 insertions(+), 163 deletions(-)
- delete mode 100644 arch/nds32/include/asm/dma-mapping.h
-
-diff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig
-index 249f38d3388f..67d0ac0a989c 100644
---- a/arch/nds32/Kconfig
-+++ b/arch/nds32/Kconfig
-@@ -5,10 +5,13 @@
- 
- config NDS32
-         def_bool y
-+	select ARCH_HAS_SYNC_DMA_FOR_CPU
-+	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
- 	select ARCH_WANT_FRAME_POINTERS if FTRACE
- 	select CLKSRC_MMIO
- 	select CLONE_BACKWARDS
- 	select COMMON_CLK
-+	select DMA_NONCOHERENT_OPS
- 	select GENERIC_ATOMIC64
- 	select GENERIC_CPU_DEVICES
- 	select GENERIC_CLOCKEVENTS
-diff --git a/arch/nds32/include/asm/Kbuild b/arch/nds32/include/asm/Kbuild
-index 06bdf8167f5a..b3e951f805f8 100644
---- a/arch/nds32/include/asm/Kbuild
-+++ b/arch/nds32/include/asm/Kbuild
-@@ -13,6 +13,7 @@ generic-y += cputime.h
- generic-y += device.h
- generic-y += div64.h
- generic-y += dma.h
-+generic-y += dma-mapping.h
- generic-y += emergency-restart.h
- generic-y += errno.h
- generic-y += exec.h
-diff --git a/arch/nds32/include/asm/dma-mapping.h b/arch/nds32/include/asm/dma-mapping.h
-deleted file mode 100644
-index 2dd47d245c25..000000000000
---- a/arch/nds32/include/asm/dma-mapping.h
-+++ /dev/null
-@@ -1,14 +0,0 @@
--// SPDX-License-Identifier: GPL-2.0
--// Copyright (C) 2005-2017 Andes Technology Corporation
--
--#ifndef ASMNDS32_DMA_MAPPING_H
--#define ASMNDS32_DMA_MAPPING_H
--
--extern struct dma_map_ops nds32_dma_ops;
--
--static inline struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus)
--{
--	return &nds32_dma_ops;
--}
--
--#endif
-diff --git a/arch/nds32/kernel/dma.c b/arch/nds32/kernel/dma.c
-index d291800fc621..78311a1e6fd1 100644
---- a/arch/nds32/kernel/dma.c
-+++ b/arch/nds32/kernel/dma.c
-@@ -3,17 +3,14 @@
- 
- #include <linux/types.h>
- #include <linux/mm.h>
--#include <linux/export.h>
- #include <linux/string.h>
--#include <linux/scatterlist.h>
--#include <linux/dma-mapping.h>
-+#include <linux/dma-noncoherent.h>
- #include <linux/io.h>
- #include <linux/cache.h>
- #include <linux/highmem.h>
- #include <linux/slab.h>
- #include <asm/cacheflush.h>
- #include <asm/tlbflush.h>
--#include <asm/dma-mapping.h>
- #include <asm/proc-fns.h>
- 
- /*
-@@ -22,11 +19,6 @@
- static pte_t *consistent_pte;
- static DEFINE_RAW_SPINLOCK(consistent_lock);
- 
--enum master_type {
--	FOR_CPU = 0,
--	FOR_DEVICE = 1,
--};
--
- /*
-  * VM region handling support.
-  *
-@@ -124,10 +116,8 @@ static struct arch_vm_region *vm_region_find(struct arch_vm_region *head,
- 	return c;
- }
- 
--/* FIXME: attrs is not used. */
--static void *nds32_dma_alloc_coherent(struct device *dev, size_t size,
--				      dma_addr_t * handle, gfp_t gfp,
--				      unsigned long attrs)
-+void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *handle,
-+		gfp_t gfp, unsigned long attrs)
- {
- 	struct page *page;
- 	struct arch_vm_region *c;
-@@ -232,8 +222,8 @@ static void *nds32_dma_alloc_coherent(struct device *dev, size_t size,
- 	return NULL;
- }
- 
--static void nds32_dma_free(struct device *dev, size_t size, void *cpu_addr,
--			   dma_addr_t handle, unsigned long attrs)
-+void arch_dma_free(struct device *dev, size_t size, void *cpu_addr,
-+		dma_addr_t handle, unsigned long attrs)
- {
- 	struct arch_vm_region *c;
- 	unsigned long flags, addr;
-@@ -333,145 +323,39 @@ static int __init consistent_init(void)
- }
- 
- core_initcall(consistent_init);
--static void consistent_sync(void *vaddr, size_t size, int direction, int master_type);
--static dma_addr_t nds32_dma_map_page(struct device *dev, struct page *page,
--				     unsigned long offset, size_t size,
--				     enum dma_data_direction dir,
--				     unsigned long attrs)
--{
--	if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
--		consistent_sync((void *)(page_address(page) + offset), size, dir, FOR_DEVICE);
--	return page_to_phys(page) + offset;
--}
- 
--static void nds32_dma_unmap_page(struct device *dev, dma_addr_t handle,
--				 size_t size, enum dma_data_direction dir,
--				 unsigned long attrs)
-+void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
-+		size_t size, enum dma_data_direction dir)
- {
--	if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
--		consistent_sync(phys_to_virt(handle), size, dir, FOR_CPU);
--}
--
--/*
-- * Make an area consistent for devices.
-- */
--static void consistent_sync(void *vaddr, size_t size, int direction, int master_type)
--{
--	unsigned long start = (unsigned long)vaddr;
--	unsigned long end = start + size;
--
--	if (master_type == FOR_CPU) {
--		switch (direction) {
--		case DMA_TO_DEVICE:
--			break;
--		case DMA_FROM_DEVICE:
--		case DMA_BIDIRECTIONAL:
--			cpu_dma_inval_range(start, end);
--			break;
--		default:
--			BUG();
--		}
--	} else {
--		/* FOR_DEVICE */
--		switch (direction) {
--		case DMA_FROM_DEVICE:
--			break;
--		case DMA_TO_DEVICE:
--		case DMA_BIDIRECTIONAL:
--			cpu_dma_wb_range(start, end);
--			break;
--		default:
--			BUG();
--		}
-+	void *addr = phys_to_virt(paddr);
-+	unsigned long start = (unsigned long)addr;
-+
-+	switch (dir) {
-+	case DMA_FROM_DEVICE:
-+		break;
-+	case DMA_TO_DEVICE:
-+	case DMA_BIDIRECTIONAL:
-+		cpu_dma_wb_range(start, start + size);
-+		break;
-+	default:
-+		BUG();
- 	}
- }
- 
--static int nds32_dma_map_sg(struct device *dev, struct scatterlist *sg,
--			    int nents, enum dma_data_direction dir,
--			    unsigned long attrs)
-+void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,
-+		size_t size, enum dma_data_direction dir)
- {
--	int i;
--
--	for (i = 0; i < nents; i++, sg++) {
--		void *virt;
--		unsigned long pfn;
--		struct page *page = sg_page(sg);
--
--		sg->dma_address = sg_phys(sg);
--		pfn = page_to_pfn(page) + sg->offset / PAGE_SIZE;
--		page = pfn_to_page(pfn);
--		if (PageHighMem(page)) {
--			virt = kmap_atomic(page);
--			consistent_sync(virt, sg->length, dir, FOR_CPU);
--			kunmap_atomic(virt);
--		} else {
--			if (sg->offset > PAGE_SIZE)
--				panic("sg->offset:%08x > PAGE_SIZE\n",
--				      sg->offset);
--			virt = page_address(page) + sg->offset;
--			consistent_sync(virt, sg->length, dir, FOR_CPU);
--		}
-+	void *addr = phys_to_virt(paddr);
-+	unsigned long start = (unsigned long)addr;
-+
-+	switch (dir) {
-+	case DMA_TO_DEVICE:
-+		break;
-+	case DMA_FROM_DEVICE:
-+	case DMA_BIDIRECTIONAL:
-+		cpu_dma_inval_range(start, start + size);
-+		break;
-+	default:
-+		BUG();
- 	}
--	return nents;
- }
--
--static void nds32_dma_unmap_sg(struct device *dev, struct scatterlist *sg,
--			       int nhwentries, enum dma_data_direction dir,
--			       unsigned long attrs)
--{
--}
--
--static void
--nds32_dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle,
--			      size_t size, enum dma_data_direction dir)
--{
--	consistent_sync((void *)phys_to_virt(handle), size, dir, FOR_CPU);
--}
--
--static void
--nds32_dma_sync_single_for_device(struct device *dev, dma_addr_t handle,
--				 size_t size, enum dma_data_direction dir)
--{
--	consistent_sync((void *)phys_to_virt(handle), size, dir, FOR_DEVICE);
--}
--
--static void
--nds32_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents,
--			  enum dma_data_direction dir)
--{
--	int i;
--
--	for (i = 0; i < nents; i++, sg++) {
--		char *virt =
--		    page_address((struct page *)sg->page_link) + sg->offset;
--		consistent_sync(virt, sg->length, dir, FOR_CPU);
--	}
--}
--
--static void
--nds32_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
--			     int nents, enum dma_data_direction dir)
--{
--	int i;
--
--	for (i = 0; i < nents; i++, sg++) {
--		char *virt =
--		    page_address((struct page *)sg->page_link) + sg->offset;
--		consistent_sync(virt, sg->length, dir, FOR_DEVICE);
--	}
--}
--
--struct dma_map_ops nds32_dma_ops = {
--	.alloc = nds32_dma_alloc_coherent,
--	.free = nds32_dma_free,
--	.map_page = nds32_dma_map_page,
--	.unmap_page = nds32_dma_unmap_page,
--	.map_sg = nds32_dma_map_sg,
--	.unmap_sg = nds32_dma_unmap_sg,
--	.sync_single_for_device = nds32_dma_sync_single_for_device,
--	.sync_single_for_cpu = nds32_dma_sync_single_for_cpu,
--	.sync_sg_for_cpu = nds32_dma_sync_sg_for_cpu,
--	.sync_sg_for_device = nds32_dma_sync_sg_for_device,
--};
--
--EXPORT_SYMBOL(nds32_dma_ops);
--- 
-2.17.0
diff --git a/a/content_digest b/N1/content_digest
index 4f40fee..75ae4cd 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -38,310 +38,6 @@
  "although that, just like the original code is broken if you actually\n"
  "have highmem that needs to be mapped:\n"
  "\n"
- "---\n"
- "From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
- "From: Christoph Hellwig <hch@lst.de>\n"
- "Date: Mon, 16 Apr 2018 19:20:30 +0200\n"
- "Subject: nds32: use generic dma_noncoherent_ops\n"
- "\n"
- "Switch to the generic noncoherent direct mapping implementation.\n"
- "\n"
- "This makes sure the cache_sync routines is called in the unmap_sg\n"
- "case, to match the unmap_single and sync_{single,sg}_to_cpu cases.\n"
- "\n"
- "Signed-off-by: Christoph Hellwig <hch@lst.de>\n"
- "---\n"
- " arch/nds32/Kconfig                   |   3 +\n"
- " arch/nds32/include/asm/Kbuild        |   1 +\n"
- " arch/nds32/include/asm/dma-mapping.h |  14 ---\n"
- " arch/nds32/kernel/dma.c              | 182 +++++----------------------\n"
- " 4 files changed, 37 insertions(+), 163 deletions(-)\n"
- " delete mode 100644 arch/nds32/include/asm/dma-mapping.h\n"
- "\n"
- "diff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig\n"
- "index 249f38d3388f..67d0ac0a989c 100644\n"
- "--- a/arch/nds32/Kconfig\n"
- "+++ b/arch/nds32/Kconfig\n"
- "@@ -5,10 +5,13 @@\n"
- " \n"
- " config NDS32\n"
- "         def_bool y\n"
- "+\tselect ARCH_HAS_SYNC_DMA_FOR_CPU\n"
- "+\tselect ARCH_HAS_SYNC_DMA_FOR_DEVICE\n"
- " \tselect ARCH_WANT_FRAME_POINTERS if FTRACE\n"
- " \tselect CLKSRC_MMIO\n"
- " \tselect CLONE_BACKWARDS\n"
- " \tselect COMMON_CLK\n"
- "+\tselect DMA_NONCOHERENT_OPS\n"
- " \tselect GENERIC_ATOMIC64\n"
- " \tselect GENERIC_CPU_DEVICES\n"
- " \tselect GENERIC_CLOCKEVENTS\n"
- "diff --git a/arch/nds32/include/asm/Kbuild b/arch/nds32/include/asm/Kbuild\n"
- "index 06bdf8167f5a..b3e951f805f8 100644\n"
- "--- a/arch/nds32/include/asm/Kbuild\n"
- "+++ b/arch/nds32/include/asm/Kbuild\n"
- "@@ -13,6 +13,7 @@ generic-y += cputime.h\n"
- " generic-y += device.h\n"
- " generic-y += div64.h\n"
- " generic-y += dma.h\n"
- "+generic-y += dma-mapping.h\n"
- " generic-y += emergency-restart.h\n"
- " generic-y += errno.h\n"
- " generic-y += exec.h\n"
- "diff --git a/arch/nds32/include/asm/dma-mapping.h b/arch/nds32/include/asm/dma-mapping.h\n"
- "deleted file mode 100644\n"
- "index 2dd47d245c25..000000000000\n"
- "--- a/arch/nds32/include/asm/dma-mapping.h\n"
- "+++ /dev/null\n"
- "@@ -1,14 +0,0 @@\n"
- "-// SPDX-License-Identifier: GPL-2.0\n"
- "-// Copyright (C) 2005-2017 Andes Technology Corporation\n"
- "-\n"
- "-#ifndef ASMNDS32_DMA_MAPPING_H\n"
- "-#define ASMNDS32_DMA_MAPPING_H\n"
- "-\n"
- "-extern struct dma_map_ops nds32_dma_ops;\n"
- "-\n"
- "-static inline struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus)\n"
- "-{\n"
- "-\treturn &nds32_dma_ops;\n"
- "-}\n"
- "-\n"
- "-#endif\n"
- "diff --git a/arch/nds32/kernel/dma.c b/arch/nds32/kernel/dma.c\n"
- "index d291800fc621..78311a1e6fd1 100644\n"
- "--- a/arch/nds32/kernel/dma.c\n"
- "+++ b/arch/nds32/kernel/dma.c\n"
- "@@ -3,17 +3,14 @@\n"
- " \n"
- " #include <linux/types.h>\n"
- " #include <linux/mm.h>\n"
- "-#include <linux/export.h>\n"
- " #include <linux/string.h>\n"
- "-#include <linux/scatterlist.h>\n"
- "-#include <linux/dma-mapping.h>\n"
- "+#include <linux/dma-noncoherent.h>\n"
- " #include <linux/io.h>\n"
- " #include <linux/cache.h>\n"
- " #include <linux/highmem.h>\n"
- " #include <linux/slab.h>\n"
- " #include <asm/cacheflush.h>\n"
- " #include <asm/tlbflush.h>\n"
- "-#include <asm/dma-mapping.h>\n"
- " #include <asm/proc-fns.h>\n"
- " \n"
- " /*\n"
- "@@ -22,11 +19,6 @@\n"
- " static pte_t *consistent_pte;\n"
- " static DEFINE_RAW_SPINLOCK(consistent_lock);\n"
- " \n"
- "-enum master_type {\n"
- "-\tFOR_CPU = 0,\n"
- "-\tFOR_DEVICE = 1,\n"
- "-};\n"
- "-\n"
- " /*\n"
- "  * VM region handling support.\n"
- "  *\n"
- "@@ -124,10 +116,8 @@ static struct arch_vm_region *vm_region_find(struct arch_vm_region *head,\n"
- " \treturn c;\n"
- " }\n"
- " \n"
- "-/* FIXME: attrs is not used. */\n"
- "-static void *nds32_dma_alloc_coherent(struct device *dev, size_t size,\n"
- "-\t\t\t\t      dma_addr_t * handle, gfp_t gfp,\n"
- "-\t\t\t\t      unsigned long attrs)\n"
- "+void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *handle,\n"
- "+\t\tgfp_t gfp, unsigned long attrs)\n"
- " {\n"
- " \tstruct page *page;\n"
- " \tstruct arch_vm_region *c;\n"
- "@@ -232,8 +222,8 @@ static void *nds32_dma_alloc_coherent(struct device *dev, size_t size,\n"
- " \treturn NULL;\n"
- " }\n"
- " \n"
- "-static void nds32_dma_free(struct device *dev, size_t size, void *cpu_addr,\n"
- "-\t\t\t   dma_addr_t handle, unsigned long attrs)\n"
- "+void arch_dma_free(struct device *dev, size_t size, void *cpu_addr,\n"
- "+\t\tdma_addr_t handle, unsigned long attrs)\n"
- " {\n"
- " \tstruct arch_vm_region *c;\n"
- " \tunsigned long flags, addr;\n"
- "@@ -333,145 +323,39 @@ static int __init consistent_init(void)\n"
- " }\n"
- " \n"
- " core_initcall(consistent_init);\n"
- "-static void consistent_sync(void *vaddr, size_t size, int direction, int master_type);\n"
- "-static dma_addr_t nds32_dma_map_page(struct device *dev, struct page *page,\n"
- "-\t\t\t\t     unsigned long offset, size_t size,\n"
- "-\t\t\t\t     enum dma_data_direction dir,\n"
- "-\t\t\t\t     unsigned long attrs)\n"
- "-{\n"
- "-\tif (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))\n"
- "-\t\tconsistent_sync((void *)(page_address(page) + offset), size, dir, FOR_DEVICE);\n"
- "-\treturn page_to_phys(page) + offset;\n"
- "-}\n"
- " \n"
- "-static void nds32_dma_unmap_page(struct device *dev, dma_addr_t handle,\n"
- "-\t\t\t\t size_t size, enum dma_data_direction dir,\n"
- "-\t\t\t\t unsigned long attrs)\n"
- "+void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,\n"
- "+\t\tsize_t size, enum dma_data_direction dir)\n"
- " {\n"
- "-\tif (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))\n"
- "-\t\tconsistent_sync(phys_to_virt(handle), size, dir, FOR_CPU);\n"
- "-}\n"
- "-\n"
- "-/*\n"
- "- * Make an area consistent for devices.\n"
- "- */\n"
- "-static void consistent_sync(void *vaddr, size_t size, int direction, int master_type)\n"
- "-{\n"
- "-\tunsigned long start = (unsigned long)vaddr;\n"
- "-\tunsigned long end = start + size;\n"
- "-\n"
- "-\tif (master_type == FOR_CPU) {\n"
- "-\t\tswitch (direction) {\n"
- "-\t\tcase DMA_TO_DEVICE:\n"
- "-\t\t\tbreak;\n"
- "-\t\tcase DMA_FROM_DEVICE:\n"
- "-\t\tcase DMA_BIDIRECTIONAL:\n"
- "-\t\t\tcpu_dma_inval_range(start, end);\n"
- "-\t\t\tbreak;\n"
- "-\t\tdefault:\n"
- "-\t\t\tBUG();\n"
- "-\t\t}\n"
- "-\t} else {\n"
- "-\t\t/* FOR_DEVICE */\n"
- "-\t\tswitch (direction) {\n"
- "-\t\tcase DMA_FROM_DEVICE:\n"
- "-\t\t\tbreak;\n"
- "-\t\tcase DMA_TO_DEVICE:\n"
- "-\t\tcase DMA_BIDIRECTIONAL:\n"
- "-\t\t\tcpu_dma_wb_range(start, end);\n"
- "-\t\t\tbreak;\n"
- "-\t\tdefault:\n"
- "-\t\t\tBUG();\n"
- "-\t\t}\n"
- "+\tvoid *addr = phys_to_virt(paddr);\n"
- "+\tunsigned long start = (unsigned long)addr;\n"
- "+\n"
- "+\tswitch (dir) {\n"
- "+\tcase DMA_FROM_DEVICE:\n"
- "+\t\tbreak;\n"
- "+\tcase DMA_TO_DEVICE:\n"
- "+\tcase DMA_BIDIRECTIONAL:\n"
- "+\t\tcpu_dma_wb_range(start, start + size);\n"
- "+\t\tbreak;\n"
- "+\tdefault:\n"
- "+\t\tBUG();\n"
- " \t}\n"
- " }\n"
- " \n"
- "-static int nds32_dma_map_sg(struct device *dev, struct scatterlist *sg,\n"
- "-\t\t\t    int nents, enum dma_data_direction dir,\n"
- "-\t\t\t    unsigned long attrs)\n"
- "+void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr,\n"
- "+\t\tsize_t size, enum dma_data_direction dir)\n"
- " {\n"
- "-\tint i;\n"
- "-\n"
- "-\tfor (i = 0; i < nents; i++, sg++) {\n"
- "-\t\tvoid *virt;\n"
- "-\t\tunsigned long pfn;\n"
- "-\t\tstruct page *page = sg_page(sg);\n"
- "-\n"
- "-\t\tsg->dma_address = sg_phys(sg);\n"
- "-\t\tpfn = page_to_pfn(page) + sg->offset / PAGE_SIZE;\n"
- "-\t\tpage = pfn_to_page(pfn);\n"
- "-\t\tif (PageHighMem(page)) {\n"
- "-\t\t\tvirt = kmap_atomic(page);\n"
- "-\t\t\tconsistent_sync(virt, sg->length, dir, FOR_CPU);\n"
- "-\t\t\tkunmap_atomic(virt);\n"
- "-\t\t} else {\n"
- "-\t\t\tif (sg->offset > PAGE_SIZE)\n"
- "-\t\t\t\tpanic(\"sg->offset:%08x > PAGE_SIZE\\n\",\n"
- "-\t\t\t\t      sg->offset);\n"
- "-\t\t\tvirt = page_address(page) + sg->offset;\n"
- "-\t\t\tconsistent_sync(virt, sg->length, dir, FOR_CPU);\n"
- "-\t\t}\n"
- "+\tvoid *addr = phys_to_virt(paddr);\n"
- "+\tunsigned long start = (unsigned long)addr;\n"
- "+\n"
- "+\tswitch (dir) {\n"
- "+\tcase DMA_TO_DEVICE:\n"
- "+\t\tbreak;\n"
- "+\tcase DMA_FROM_DEVICE:\n"
- "+\tcase DMA_BIDIRECTIONAL:\n"
- "+\t\tcpu_dma_inval_range(start, start + size);\n"
- "+\t\tbreak;\n"
- "+\tdefault:\n"
- "+\t\tBUG();\n"
- " \t}\n"
- "-\treturn nents;\n"
- " }\n"
- "-\n"
- "-static void nds32_dma_unmap_sg(struct device *dev, struct scatterlist *sg,\n"
- "-\t\t\t       int nhwentries, enum dma_data_direction dir,\n"
- "-\t\t\t       unsigned long attrs)\n"
- "-{\n"
- "-}\n"
- "-\n"
- "-static void\n"
- "-nds32_dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle,\n"
- "-\t\t\t      size_t size, enum dma_data_direction dir)\n"
- "-{\n"
- "-\tconsistent_sync((void *)phys_to_virt(handle), size, dir, FOR_CPU);\n"
- "-}\n"
- "-\n"
- "-static void\n"
- "-nds32_dma_sync_single_for_device(struct device *dev, dma_addr_t handle,\n"
- "-\t\t\t\t size_t size, enum dma_data_direction dir)\n"
- "-{\n"
- "-\tconsistent_sync((void *)phys_to_virt(handle), size, dir, FOR_DEVICE);\n"
- "-}\n"
- "-\n"
- "-static void\n"
- "-nds32_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents,\n"
- "-\t\t\t  enum dma_data_direction dir)\n"
- "-{\n"
- "-\tint i;\n"
- "-\n"
- "-\tfor (i = 0; i < nents; i++, sg++) {\n"
- "-\t\tchar *virt =\n"
- "-\t\t    page_address((struct page *)sg->page_link) + sg->offset;\n"
- "-\t\tconsistent_sync(virt, sg->length, dir, FOR_CPU);\n"
- "-\t}\n"
- "-}\n"
- "-\n"
- "-static void\n"
- "-nds32_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,\n"
- "-\t\t\t     int nents, enum dma_data_direction dir)\n"
- "-{\n"
- "-\tint i;\n"
- "-\n"
- "-\tfor (i = 0; i < nents; i++, sg++) {\n"
- "-\t\tchar *virt =\n"
- "-\t\t    page_address((struct page *)sg->page_link) + sg->offset;\n"
- "-\t\tconsistent_sync(virt, sg->length, dir, FOR_DEVICE);\n"
- "-\t}\n"
- "-}\n"
- "-\n"
- "-struct dma_map_ops nds32_dma_ops = {\n"
- "-\t.alloc = nds32_dma_alloc_coherent,\n"
- "-\t.free = nds32_dma_free,\n"
- "-\t.map_page = nds32_dma_map_page,\n"
- "-\t.unmap_page = nds32_dma_unmap_page,\n"
- "-\t.map_sg = nds32_dma_map_sg,\n"
- "-\t.unmap_sg = nds32_dma_unmap_sg,\n"
- "-\t.sync_single_for_device = nds32_dma_sync_single_for_device,\n"
- "-\t.sync_single_for_cpu = nds32_dma_sync_single_for_cpu,\n"
- "-\t.sync_sg_for_cpu = nds32_dma_sync_sg_for_cpu,\n"
- "-\t.sync_sg_for_device = nds32_dma_sync_sg_for_device,\n"
- "-};\n"
- "-\n"
- "-EXPORT_SYMBOL(nds32_dma_ops);\n"
- "-- \n"
- 2.17.0
+ ---
 
-a609a96d8d02a94613298f00adf9297f8ac86b9c37f9e8b5faa8d79068d9d776
+f6eb8d7317257944cafa317c2a9c2630b0bdd24d87442b13a41c37de3683fbe7

diff --git a/a/1.txt b/N2/1.txt
index 9f50a66..574f0d5 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -11,7 +11,7 @@ although that, just like the original code is broken if you actually
 have highmem that needs to be mapped:
 
 ---
-From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
+>From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
 From: Christoph Hellwig <hch@lst.de>
 Date: Mon, 16 Apr 2018 19:20:30 +0200
 Subject: nds32: use generic dma_noncoherent_ops
diff --git a/a/content_digest b/N2/content_digest
index 4f40fee..16bf5a5 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -39,7 +39,7 @@
  "have highmem that needs to be mapped:\n"
  "\n"
  "---\n"
- "From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
+ ">From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
  "From: Christoph Hellwig <hch@lst.de>\n"
  "Date: Mon, 16 Apr 2018 19:20:30 +0200\n"
  "Subject: nds32: use generic dma_noncoherent_ops\n"
@@ -344,4 +344,4 @@
  "-- \n"
  2.17.0
 
-a609a96d8d02a94613298f00adf9297f8ac86b9c37f9e8b5faa8d79068d9d776
+824e75dab77101d7a8044527e33e402f6bbb18d5f0e7a445f62afa645ab0d9c9

diff --git a/a/1.txt b/N3/1.txt
index 9f50a66..8d70e0b 100644
--- a/a/1.txt
+++ b/N3/1.txt
@@ -1,4 +1,4 @@
-On Wed, Apr 25, 2018 at 09:43:43AM +0800, Greentime Hu wrote:
+On Wed, Apr 25, 2018@09:43:43AM +0800, Greentime Hu wrote:
 > Hi Crhistoph,
 > 
 > The ftmac100 works if I revert this commit.
@@ -11,7 +11,7 @@ although that, just like the original code is broken if you actually
 have highmem that needs to be mapped:
 
 ---
-From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
+>From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
 From: Christoph Hellwig <hch@lst.de>
 Date: Mon, 16 Apr 2018 19:20:30 +0200
 Subject: nds32: use generic dma_noncoherent_ops
@@ -21,7 +21,7 @@ Switch to the generic noncoherent direct mapping implementation.
 This makes sure the cache_sync routines is called in the unmap_sg
 case, to match the unmap_single and sync_{single,sg}_to_cpu cases.
 
-Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Christoph Hellwig <hch at lst.de>
 ---
  arch/nds32/Kconfig                   |   3 +
  arch/nds32/include/asm/Kbuild        |   1 +
diff --git a/a/content_digest b/N3/content_digest
index 4f40fee..1afecfc 100644
--- a/a/content_digest
+++ b/N3/content_digest
@@ -3,30 +3,13 @@
  "ref\0CAEbi=3fkakVD2vxGu6SgJM77JnNM8Y79xS8_o6m9d_85BJpMFQ@mail.gmail.com\0"
  "ref\020180424191640.GA32495@lst.de\0"
  "ref\0CAEbi=3f7yzE+KAM2GOh6QahC_E6BAUfB3ys3U-WdBSUf3DPZqg@mail.gmail.com\0"
- "From\0Christoph Hellwig <hch@lst.de>\0"
- "Subject\0Re: [PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
+ "From\0hch@lst.de (Christoph Hellwig)\0"
+ "Subject\0[PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
  "Date\0Wed, 25 Apr 2018 08:40:55 +0200\0"
- "To\0Greentime Hu <green.hu@gmail.com>\0"
- "Cc\0Christoph Hellwig <hch@lst.de>"
-  linux-arch <linux-arch@vger.kernel.org>
-  Michal Simek <monstr@monstr.eu>
-  Vincent Chen <deanbo422@gmail.com>
-  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 <sparclinux@vger.kernel.org>
-  linux-xtensa@linux-xtensa.org
- " Linux Kernel Mailing List <linux-kernel@vger.kernel.org>\0"
+ "To\0linux-snps-arc@lists.infradead.org\0"
  "\00:1\0"
  "b\0"
- "On Wed, Apr 25, 2018 at 09:43:43AM +0800, Greentime Hu wrote:\n"
+ "On Wed, Apr 25, 2018@09:43:43AM +0800, Greentime Hu wrote:\n"
  "> Hi Crhistoph,\n"
  "> \n"
  "> The ftmac100 works if I revert this commit.\n"
@@ -39,7 +22,7 @@
  "have highmem that needs to be mapped:\n"
  "\n"
  "---\n"
- "From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
+ ">From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
  "From: Christoph Hellwig <hch@lst.de>\n"
  "Date: Mon, 16 Apr 2018 19:20:30 +0200\n"
  "Subject: nds32: use generic dma_noncoherent_ops\n"
@@ -49,7 +32,7 @@
  "This makes sure the cache_sync routines is called in the unmap_sg\n"
  "case, to match the unmap_single and sync_{single,sg}_to_cpu cases.\n"
  "\n"
- "Signed-off-by: Christoph Hellwig <hch@lst.de>\n"
+ "Signed-off-by: Christoph Hellwig <hch at lst.de>\n"
  "---\n"
  " arch/nds32/Kconfig                   |   3 +\n"
  " arch/nds32/include/asm/Kbuild        |   1 +\n"
@@ -344,4 +327,4 @@
  "-- \n"
  2.17.0
 
-a609a96d8d02a94613298f00adf9297f8ac86b9c37f9e8b5faa8d79068d9d776
+e95740980b471eec0dc85fa444dbdbb166d4a46a1d73adabd34136672981b0d8

diff --git a/a/1.txt b/N4/1.txt
index 9f50a66..5dc1e4b 100644
--- a/a/1.txt
+++ b/N4/1.txt
@@ -172,7 +172,7 @@ index d291800fc621..78311a1e6fd1 100644
 -	unsigned long start = (unsigned long)vaddr;
 -	unsigned long end = start + size;
 -
--	if (master_type == FOR_CPU) {
+-	if (master_type = FOR_CPU) {
 -		switch (direction) {
 -		case DMA_TO_DEVICE:
 -			break;
@@ -280,8 +280,7 @@ index d291800fc621..78311a1e6fd1 100644
 -	int i;
 -
 -	for (i = 0; i < nents; i++, sg++) {
--		char *virt =
--		    page_address((struct page *)sg->page_link) + sg->offset;
+-		char *virt -		    page_address((struct page *)sg->page_link) + sg->offset;
 -		consistent_sync(virt, sg->length, dir, FOR_CPU);
 -	}
 -}
@@ -293,8 +292,7 @@ index d291800fc621..78311a1e6fd1 100644
 -	int i;
 -
 -	for (i = 0; i < nents; i++, sg++) {
--		char *virt =
--		    page_address((struct page *)sg->page_link) + sg->offset;
+-		char *virt -		    page_address((struct page *)sg->page_link) + sg->offset;
 -		consistent_sync(virt, sg->length, dir, FOR_DEVICE);
 -	}
 -}
diff --git a/a/content_digest b/N4/content_digest
index 4f40fee..4f6e92c 100644
--- a/a/content_digest
+++ b/N4/content_digest
@@ -5,7 +5,7 @@
  "ref\0CAEbi=3f7yzE+KAM2GOh6QahC_E6BAUfB3ys3U-WdBSUf3DPZqg@mail.gmail.com\0"
  "From\0Christoph Hellwig <hch@lst.de>\0"
  "Subject\0Re: [PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
- "Date\0Wed, 25 Apr 2018 08:40:55 +0200\0"
+ "Date\0Wed, 25 Apr 2018 06:40:55 +0000\0"
  "To\0Greentime Hu <green.hu@gmail.com>\0"
  "Cc\0Christoph Hellwig <hch@lst.de>"
   linux-arch <linux-arch@vger.kernel.org>
@@ -200,7 +200,7 @@
  "-\tunsigned long start = (unsigned long)vaddr;\n"
  "-\tunsigned long end = start + size;\n"
  "-\n"
- "-\tif (master_type == FOR_CPU) {\n"
+ "-\tif (master_type = FOR_CPU) {\n"
  "-\t\tswitch (direction) {\n"
  "-\t\tcase DMA_TO_DEVICE:\n"
  "-\t\t\tbreak;\n"
@@ -308,8 +308,7 @@
  "-\tint i;\n"
  "-\n"
  "-\tfor (i = 0; i < nents; i++, sg++) {\n"
- "-\t\tchar *virt =\n"
- "-\t\t    page_address((struct page *)sg->page_link) + sg->offset;\n"
+ "-\t\tchar *virt -\t\t    page_address((struct page *)sg->page_link) + sg->offset;\n"
  "-\t\tconsistent_sync(virt, sg->length, dir, FOR_CPU);\n"
  "-\t}\n"
  "-}\n"
@@ -321,8 +320,7 @@
  "-\tint i;\n"
  "-\n"
  "-\tfor (i = 0; i < nents; i++, sg++) {\n"
- "-\t\tchar *virt =\n"
- "-\t\t    page_address((struct page *)sg->page_link) + sg->offset;\n"
+ "-\t\tchar *virt -\t\t    page_address((struct page *)sg->page_link) + sg->offset;\n"
  "-\t\tconsistent_sync(virt, sg->length, dir, FOR_DEVICE);\n"
  "-\t}\n"
  "-}\n"
@@ -344,4 +342,4 @@
  "-- \n"
  2.17.0
 
-a609a96d8d02a94613298f00adf9297f8ac86b9c37f9e8b5faa8d79068d9d776
+d9fc300602d8829b321ae1251e379e9b3a40f2534158c8e43fad7c3c3d61c946

diff --git a/a/content_digest b/N5/content_digest
index 4f40fee..e7b74ec 100644
--- a/a/content_digest
+++ b/N5/content_digest
@@ -4,26 +4,9 @@
  "ref\020180424191640.GA32495@lst.de\0"
  "ref\0CAEbi=3f7yzE+KAM2GOh6QahC_E6BAUfB3ys3U-WdBSUf3DPZqg@mail.gmail.com\0"
  "From\0Christoph Hellwig <hch@lst.de>\0"
- "Subject\0Re: [PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
+ "Subject\0[OpenRISC] [PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
  "Date\0Wed, 25 Apr 2018 08:40:55 +0200\0"
- "To\0Greentime Hu <green.hu@gmail.com>\0"
- "Cc\0Christoph Hellwig <hch@lst.de>"
-  linux-arch <linux-arch@vger.kernel.org>
-  Michal Simek <monstr@monstr.eu>
-  Vincent Chen <deanbo422@gmail.com>
-  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 <sparclinux@vger.kernel.org>
-  linux-xtensa@linux-xtensa.org
- " Linux Kernel Mailing List <linux-kernel@vger.kernel.org>\0"
+ "To\0openrisc@lists.librecores.org\0"
  "\00:1\0"
  "b\0"
  "On Wed, Apr 25, 2018 at 09:43:43AM +0800, Greentime Hu wrote:\n"
@@ -344,4 +327,4 @@
  "-- \n"
  2.17.0
 
-a609a96d8d02a94613298f00adf9297f8ac86b9c37f9e8b5faa8d79068d9d776
+312fcb59186e7093c3a352061d56354a7af31ed07f027195314c7606cfab8680

diff --git a/a/1.txt b/N6/1.txt
index 9f50a66..574f0d5 100644
--- a/a/1.txt
+++ b/N6/1.txt
@@ -11,7 +11,7 @@ although that, just like the original code is broken if you actually
 have highmem that needs to be mapped:
 
 ---
-From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
+>From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001
 From: Christoph Hellwig <hch@lst.de>
 Date: Mon, 16 Apr 2018 19:20:30 +0200
 Subject: nds32: use generic dma_noncoherent_ops
diff --git a/a/content_digest b/N6/content_digest
index 4f40fee..5ae40f4 100644
--- a/a/content_digest
+++ b/N6/content_digest
@@ -3,27 +3,10 @@
  "ref\0CAEbi=3fkakVD2vxGu6SgJM77JnNM8Y79xS8_o6m9d_85BJpMFQ@mail.gmail.com\0"
  "ref\020180424191640.GA32495@lst.de\0"
  "ref\0CAEbi=3f7yzE+KAM2GOh6QahC_E6BAUfB3ys3U-WdBSUf3DPZqg@mail.gmail.com\0"
- "From\0Christoph Hellwig <hch@lst.de>\0"
- "Subject\0Re: [PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
+ "From\0hch@lst.de (Christoph Hellwig)\0"
+ "Subject\0[PATCH 13/22] nds32: use generic dma_noncoherent_ops\0"
  "Date\0Wed, 25 Apr 2018 08:40:55 +0200\0"
- "To\0Greentime Hu <green.hu@gmail.com>\0"
- "Cc\0Christoph Hellwig <hch@lst.de>"
-  linux-arch <linux-arch@vger.kernel.org>
-  Michal Simek <monstr@monstr.eu>
-  Vincent Chen <deanbo422@gmail.com>
-  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 <sparclinux@vger.kernel.org>
-  linux-xtensa@linux-xtensa.org
- " Linux Kernel Mailing List <linux-kernel@vger.kernel.org>\0"
+ "To\0linux-arm-kernel@lists.infradead.org\0"
  "\00:1\0"
  "b\0"
  "On Wed, Apr 25, 2018 at 09:43:43AM +0800, Greentime Hu wrote:\n"
@@ -39,7 +22,7 @@
  "have highmem that needs to be mapped:\n"
  "\n"
  "---\n"
- "From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
+ ">From 1dc5d1cae4cd7b9ce03d0e2943364ed4cca938d7 Mon Sep 17 00:00:00 2001\n"
  "From: Christoph Hellwig <hch@lst.de>\n"
  "Date: Mon, 16 Apr 2018 19:20:30 +0200\n"
  "Subject: nds32: use generic dma_noncoherent_ops\n"
@@ -344,4 +327,4 @@
  "-- \n"
  2.17.0
 
-a609a96d8d02a94613298f00adf9297f8ac86b9c37f9e8b5faa8d79068d9d776
+ba6fd9ca10ee9a32a45a7af3c6320a12dfbc795e17adf2c26432d259481f485d

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.