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.