csky: fixups after bootmem removal
PATCH 1/1 csky: fixups after bootmem removal
Hi,
The below patch fixes the bootmem leftovers in csky. It is based on the current mmots and csky build there fails because of undefined reference to dma_direct_ops:
MODPOST vmlinux.okernel/dma/mapping.o: In function `dmam_alloc_attrs':kernel/dma/mapping.c:143: undefined reference to dma_direct_ops' kernel/dma/mapping.o: In function dmam_declare_coherent_memory':kernel/dma/mapping.c:184: undefined reference to dma_direct_ops' mm/dmapool.o: In function dma_free_attrs':include/linux/dma-mapping.h:558: undefined reference to `dma_direct_ops'
I've blindly added "select DMA_DIRECT_OPS" to arch/csky/Kconfig and it fixed the build, but I really have no idea if this the right thing to do...
Quoted 14 lines · Mike Rapoport
Hi,
The below patch fixes the bootmem leftovers in csky. It is based on the current mmots and csky build there fails because of undefined reference to
dma_direct_ops:MODPOST vmlinux.o
kernel/dma/mapping.o: In function `dmam_alloc_attrs':kernel/dma/mapping.c:143: undefined reference todma_direct_ops' kernel/dma/mapping.o: In functiondmam_declare_coherent_memory':kernel/dma/mapping.c:184: undefined reference todma_direct_ops' mm/dmapool.o: In functiondma_free_attrs':include/linux/dma-mapping.h:558: undefined reference to `dma_direct_ops'
Quoted 2 lines
I've blindly added "select
DMA_DIRECT_OPS" toarch/csky/Kconfigand it fixed the build, but I really have no idea if this the right thing to do...
You are almost right, the issue is come from the patch:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=bc3ec75de5452db59b683487867ba562b950708a
we need:
- select DMA_NONCOHERENT_OPS
+ select DMA_DIRECT_OPS
I'll fixup it in my repo.
Quoted 75 lines
From
63c3b24e661e6cad88f0432dd460d35a16741871Mon Sep 17 00:00:00 2001
From: Mike Rapoport <[email protected]>
Date: Wed, 26 Sep 2018 13:40:13 +0300
Subject: [PATCH] csky: fixups after bootmem removalThe bootmem removal patchest didn't take into account csky architecture and it still had bootmem leftovers. Remove them now.
Signed-off-by Mike Rapoport <[email protected]>--- arch/csky/Kconfig | 1 - arch/csky/kernel/setup.c | 1 - arch/csky/mm/highmem.c | 4 ++-- arch/csky/mm/init.c | 3 +-- 4 files changed, 3 insertions(+), 6 deletions(-)arch/csky/Kconfig +0
-1@@ -35,7 +35,6 @@ config CSKY select HAVE_C_RECORDMCOUNT select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS - select HAVE_MEMBLOCK select MAY_HAVE_SPARSE_IRQ select MODULES_USE_ELF_RELA if MODULES select OFarch/csky/kernel/setup.c +0
-1@@ -3,7 +3,6 @@#include <linux/console.h> #include <linux/memblock.h> -#include <linux/bootmem.h> #include <linux/initrd.h> #include <linux/of.h> #include <linux/of_fdt.h> arch/csky/mm/highmem.c +2
-2@@ -4,7 +4,7 @@#include <linux/module.h> #include <linux/highmem.h> #include <linux/smp.h> -#include <linux/bootmem.h> +#include <linux/memblock.h> #include <asm/fixmap.h> #include <asm/tlbflush.h> #include <asm/cacheflush.h> @@ -138,7 +138,7 @@ static void __init fixrange_init (unsigned long start, unsigned long end, pmd = (pmd_t *)pud;for (; (k <PTRS_PER_PMD ) && (vaddr != end); pmd++, k++) {if (pmd_none (*pmd)) { - pte = (pte_t *)alloc_bootmem_low_pages (PAGE_SIZE ); + pte = (pte_t *)memblock_alloc_low (PAGE_SIZE ,PAGE_SIZE );set_pmd (pmd,__pmd (__pa (pte)));BUG_ON (pte !=pte_offset_kernel (pmd,0 )); }arch/csky/mm/init.c +0
-1@@ -14,7 +14,6 @@#include <linux/ptrace.h> #include <linux/mman.h> #include <linux/mm.h> -#include <linux/bootmem.h> #include <linux/highmem.h> #include <linux/memblock.h> #include <linux/swap.h>
arch/csky/mm/init.c void __init mem_init(void) · line 49
Quoted 8 lines
arch/csky/mm/init.c +1
-1@@ -44,7 +43,7 @@ void __init mem_init(void)#endif high_memory = (void *)__va (max_low_pfn <<PAGE_SHIFT ); -free_all_bootmem (); +memblock_free_all ();#ifdef CONFIG_HIGHMEM for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {
The patch looks good for me.
Thx
Guo Ren
Hi Christoph,
Don't forget arch/csky for the patch:
dma-mapping: merge direct and noncoherent ops.
arch/csky/Kconfig
- select DMA_NONCOHERENT_OPS
+ select DMA_DIRECT_OPS
Thx!
Guo Ren
Quoted 106 lines · Mike Rapoport
Hi,
The below patch fixes the bootmem leftovers in csky. It is based on the current mmots and csky build there fails because of undefined reference to
dma_direct_ops:MODPOST vmlinux.o
kernel/dma/mapping.o: In function `dmam_alloc_attrs':kernel/dma/mapping.c:143: undefined reference todma_direct_ops' kernel/dma/mapping.o: In functiondmam_declare_coherent_memory':kernel/dma/mapping.c:184: undefined reference todma_direct_ops' mm/dmapool.o: In functiondma_free_attrs':include/linux/dma-mapping.h:558: undefined reference to `dma_direct_ops'I've blindly added "select
DMA_DIRECT_OPS" toarch/csky/Kconfigand it fixed the build, but I really have no idea if this the right thing to do...From
63c3b24e661e6cad88f0432dd460d35a16741871Mon Sep 17 00:00:00 2001
From: Mike Rapoport <[email protected]>
Date: Wed, 26 Sep 2018 13:40:13 +0300
Subject: [PATCH] csky: fixups after bootmem removalThe bootmem removal patchest didn't take into account csky architecture and it still had bootmem leftovers. Remove them now.
Signed-off-by Mike Rapoport <[email protected]>--- arch/csky/Kconfig | 1 - arch/csky/kernel/setup.c | 1 - arch/csky/mm/highmem.c | 4 ++-- arch/csky/mm/init.c | 3 +-- 4 files changed, 3 insertions(+), 6 deletions(-)arch/csky/Kconfig +0
-1@@ -35,7 +35,6 @@ config CSKY select HAVE_C_RECORDMCOUNT select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS - select HAVE_MEMBLOCK select MAY_HAVE_SPARSE_IRQ select MODULES_USE_ELF_RELA if MODULES select OFarch/csky/kernel/setup.c +0
-1@@ -3,7 +3,6 @@#include <linux/console.h> #include <linux/memblock.h> -#include <linux/bootmem.h> #include <linux/initrd.h> #include <linux/of.h> #include <linux/of_fdt.h> arch/csky/mm/highmem.c +2
-2@@ -4,7 +4,7 @@#include <linux/module.h> #include <linux/highmem.h> #include <linux/smp.h> -#include <linux/bootmem.h> +#include <linux/memblock.h> #include <asm/fixmap.h> #include <asm/tlbflush.h> #include <asm/cacheflush.h> @@ -138,7 +138,7 @@ static void __init fixrange_init (unsigned long start, unsigned long end, pmd = (pmd_t *)pud;for (; (k <PTRS_PER_PMD ) && (vaddr != end); pmd++, k++) {if (pmd_none (*pmd)) { - pte = (pte_t *)alloc_bootmem_low_pages (PAGE_SIZE ); + pte = (pte_t *)memblock_alloc_low (PAGE_SIZE ,PAGE_SIZE );set_pmd (pmd,__pmd (__pa (pte)));BUG_ON (pte !=pte_offset_kernel (pmd,0 )); }arch/csky/mm/init.c +1
-2@@ -14,7 +14,6 @@#include <linux/ptrace.h> #include <linux/mman.h> #include <linux/mm.h> -#include <linux/bootmem.h> #include <linux/highmem.h> #include <linux/memblock.h> #include <linux/swap.h> @@ -44,7 +43,7 @@ void __init mem_init(void)#endif high_memory = (void *)__va (max_low_pfn <<PAGE_SHIFT ); -free_all_bootmem (); +memblock_free_all ();#ifdef CONFIG_HIGHMEM for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {Signature · 5 lines
2.7.4 -- Sincerely yours, Mike.
Review
Quoted 9 lines · Guo Ren
Hi Christoph,
Don't forget
arch/cskyfor the patch:
dma-mapping: merge direct and noncoherent ops.
arch/csky/Kconfig(quoted diff) +1
-1- select DMA_NONCOHERENT_OPS + select DMA_DIRECT_OPS
Thanks for the reminder. I'll just try to get my pull request in irst so that you'll have to fix it up :)