Generic infrastructure for unloading initramfs
Subsystems (22)
cover Generic infrastructure for unloading initramfs
This patch series extracts out code for unloading the initramfs that was identical across 14 architectures, and moves those architectures to the common code path. Additionally, RISC-V is newly moved to the common code path.
In addition to reducing duplication, this allows us to bring future improvements (such as generalizing existing "keep initrd" command line options) to multiple architectures at once.
PATCH 1/16 initrd: Add generic code path for common initrd unloading logic.
--- init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 2 files changed, 11 insertions(+)
init/initramfs.c +7 -0
@@ -526,6 +526,13 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +#ifdef CONFIG_INITRAMFS_GENERIC_UNLOAD +void free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE
usr/Kconfig +4 -0
@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +# Arches can select this for a generic initrd unloading codepath +config INITRAMFS_GENERIC_UNLOAD + bool
Signature · 1 line
2.16.2
Re: [PATCH 01/16] initrd: Add generic code path for common initrd unloading logic.
Shea Levy <[email protected]> a écrit :
Quoted 11 lines
Signed-off-by Shea Levy <[email protected]>--- init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 2 files changed, 11 insertions(+)init/initramfs.c +0
-0
init/initramfs.c extern unsigned long __initramfs_size; · line 534
Quoted 9 lines
init/initramfs.c +6
-0@@ -526,6 +526,13 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +#ifdef CONFIG_INITRAMFS_GENERIC_UNLOAD +void free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif
In powerpc this was an __init function. Why not also put the generic one in __init section ?
Christophe
Quoted 18 lines
init/initramfs.c +1
-0+static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE usr/Kconfig +4
-1@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +# Arches can select this for a generic initrd unloading codepath +config INITRAMFS_GENERIC_UNLOAD + bool --2.16.2
Re: [PATCH 01/16] initrd: Add generic code path for common initrd unloading logic.
Hi Christophe,
Quoted 16 lines · LEROY Christophe
Shea Levy <[email protected]> a écrit :
Quoted 14 lines
Signed-off-by Shea Levy <[email protected]>--- init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 2 files changed, 11 insertions(+)init/initramfs.c +0
-0@@ -526,6 +526,13 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h>
Quoted 10 lines
init/initramfs.c extern unsigned long __initramfs_size; · line 534
Quoted 6 lines
init/initramfs.c +6
-0+#ifdef CONFIG_INITRAMFS_GENERIC_UNLOAD +void free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif In powerpc this was an
__initfunction. Why not also put the generic one in__initsection ?
v2 series sent, thanks!
Quoted 22 lines
Christophe
Quoted 18 lines
init/initramfs.c +1
-0+static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE usr/Kconfig +4
-1@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +# Arches can select this for a generic initrd unloading codepath +config INITRAMFS_GENERIC_UNLOAD + bool --2.16.2
Re: [PATCH 01/16] initrd: Add generic code path for common initrd unloading logic.
In reply to Shea Levyinit/initramfs.c extern unsigned long __initramfs_size; · line 534
Quoted 6 lines
init/initramfs.c +6
-0+#ifdef CONFIG_INITRAMFS_GENERIC_UNLOAD +void free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif
Given how trivial this is and how many architectures can use it I'd reverse the polarity and add a CONFIG_HAVE_ARCH_FREE_INITRD_MEM instead.
Geert Uytterhoeven
maintainerRe: [PATCH 01/16] initrd: Add generic code path for common initrd unloading logic.
Quoted 10 lines · Christoph Hellwig
init/initramfs.c extern unsigned long __initramfs_size; · line 534
Quoted 6 lines
init/initramfs.c +6
-0+#ifdef CONFIG_INITRAMFS_GENERIC_UNLOAD +void free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif Given how trivial this is and how many architectures can use it I'd reverse the polarity and add a
CONFIG_HAVE_ARCH_FREE_INITRD_MEMinstead.
And while adding "special" functionality to the generic version, more and more users of CONFIG_HAVE_ARCH_FREE_INITRD_MEM will be removed.
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
PATCH 2/16 riscv: Use INITRAMFS_GENERIC_UNLOAD.
In reply to Shea Levy--- arch/riscv/Kconfig | 1 + arch/riscv/mm/init.c | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-)
arch/riscv/Kconfig +1 -0
@@ -37,6 +37,7 @@ config RISCV select THREAD_INFO_IN_TASK select RISCV_TIMER select GENERIC_IRQ_MULTI_HANDLER + select INITRAMFS_GENERIC_UNLOAD config MMU def_bool y
arch/riscv/mm/init.c +0 -6
@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
Signature · 1 line
2.16.2
PATCH 3/16 alpha: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/alpha/Kconfig | 1 + arch/alpha/mm/init.c | 8 -------- 2 files changed, 1 insertion(+), 8 deletions(-)
arch/alpha/Kconfig +1 -0
@@ -27,6 +27,7 @@ config ALPHA select ODD_RT_SIGACTION select OLD_SIGSUSPEND select CPU_NO_EFFICIENT_FFS if !ALPHA_EV67 + select INITRAMFS_GENERIC_UNLOAD help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory,
arch/alpha/mm/init.c +0 -8
@@ -291,11 +291,3 @@ free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void -free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH 4/16 arc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/arc/Kconfig | 1 + arch/arc/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/arc/Kconfig +1 -0
@@ -44,6 +44,7 @@ config ARC select HAVE_GENERIC_DMA_COHERENT select HAVE_KERNEL_GZIP select HAVE_KERNEL_LZMA + select INITRAMFS_GENERIC_UNLOAD config MIGHT_HAVE_PCI bool
arch/arc/mm/init.c +0 -7
@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH 5/16 c6x: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/c6x/Kconfig | 1 + arch/c6x/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/c6x/Kconfig +1 -0
@@ -19,6 +19,7 @@ config C6X select GENERIC_CLOCKEVENTS select MODULES_USE_ELF_RELA select ARCH_NO_COHERENT_DMA_MMAP + select INITRAMFS_GENERIC_UNLOAD config MMU def_bool n
arch/c6x/mm/init.c +0 -7
@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH 6/16 frv: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/frv/Kconfig | 1 + arch/frv/mm/init.c | 11 ----------- 2 files changed, 1 insertion(+), 11 deletions(-)
arch/frv/Kconfig +1 -0
@@ -17,6 +17,7 @@ config FRV select OLD_SIGACTION select HAVE_DEBUG_STACKOVERFLOW select ARCH_NO_COHERENT_DMA_MMAP + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/frv/mm/init.c +0 -11
@@ -131,14 +131,3 @@ void free_initmem(void)free_initmem_default (-1 );#endif }/* end free_initmem() */ - -/*****************************************************************************/ -/* -* free the initial ramdisk memory -*/ -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -}/* end free_initrd_mem() */ -#endif
Signature · 1 line
2.16.2
PATCH 7/16 h8300: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/h8300/Kconfig | 1 + arch/h8300/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/h8300/Kconfig +1 -0
@@ -24,6 +24,7 @@ config H8300 select HAVE_ARCH_HASH select CPU_NO_EFFICIENT_FFS select DMA_DIRECT_OPS + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/h8300/mm/init.c +0 -7
@@ -102,13 +102,6 @@ void __init mem_init(void) } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {
Signature · 1 line
2.16.2
PATCH 8/16 m32r: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/m32r/Kconfig | 1 + arch/m32r/mm/init.c | 11 ----------- 2 files changed, 1 insertion(+), 11 deletions(-)
arch/m32r/Kconfig +1 -0
@@ -21,6 +21,7 @@ config M32R select CPU_NO_EFFICIENT_FFS select DMA_DIRECT_OPS select ARCH_NO_COHERENT_DMA_MMAP if !MMU + select INITRAMFS_GENERIC_UNLOAD config SBUS bool
arch/m32r/mm/init.c +0 -11
@@ -139,14 +139,3 @@ void free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -/*======================================================================* -* free_initrd_mem() : -* orig : arch/sh/mm/init.c -*======================================================================*/ -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH 9/16 m68k: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/m68k/Kconfig | 1 + arch/m68k/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/m68k/Kconfig +1 -0
@@ -24,6 +24,7 @@ config M68K select MODULES_USE_ELF_RELA select OLD_SIGSUSPEND3 select OLD_SIGACTION + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/m68k/mm/init.c +0 -7
@@ -172,10 +172,3 @@ void __init mem_init(void)mem_init_print_info (NULL );print_memmap (); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH 10/16 microblaze: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/microblaze/Kconfig | 1 + arch/microblaze/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/microblaze/Kconfig +1 -0
@@ -36,6 +36,7 @@ config MICROBLAZE select TRACING_SUPPORT select VIRT_TO_BUS select CPU_NO_EFFICIENT_FFS + select INITRAMFS_GENERIC_UNLOAD # Endianness selection choice
arch/microblaze/mm/init.c +0 -7
@@ -187,13 +187,6 @@ void __init setup_memory(void)paging_init (); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH 11/16 nios2: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/nios2/Kconfig | 1 + arch/nios2/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/nios2/Kconfig +1 -0
@@ -19,6 +19,7 @@ config NIOS2 select SPARSE_IRQ select USB_ARCH_HAS_HCD if USB_SUPPORT select CPU_NO_EFFICIENT_FFS + select INITRAMFS_GENERIC_UNLOAD config GENERIC_CSUM def_bool y
arch/nios2/mm/init.c +0 -7
@@ -82,13 +82,6 @@ void __init mmu_init(void)flush_tlb_all (); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __ref free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH 12/16 openrisc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/openrisc/Kconfig | 1 + arch/openrisc/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/openrisc/Kconfig +1 -0
@@ -36,6 +36,7 @@ config OPENRISC select OMPIC if SMP select ARCH_WANT_FRAME_POINTERS select GENERIC_IRQ_MULTI_HANDLER + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/openrisc/mm/init.c +0 -7
@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH 13/16 parisc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/parisc/Kconfig | 1 + arch/parisc/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/parisc/Kconfig +1 -0
@@ -51,6 +51,7 @@ config PARISC select GENERIC_CLOCKEVENTS select ARCH_NO_COHERENT_DMA_MMAP select CPU_NO_EFFICIENT_FFS + select INITRAMFS_GENERIC_UNLOAD help The PA-RISC microprocessor is designed by Hewlett-Packard and used
arch/parisc/mm/init.c +0 -7
@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH 14/16 powerpc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/powerpc/Kconfig | 1 + arch/powerpc/mm/mem.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/powerpc/Kconfig +1 -0
@@ -223,6 +223,7 @@ config PPC select HAVE_SYSCALL_TRACEPOINTS select HAVE_VIRT_CPU_ACCOUNTING select HAVE_IRQ_TIME_ACCOUNTING + select INITRAMFS_GENERIC_UNLOAD select IRQ_DOMAIN select IRQ_FORCED_THREADING select MODULES_USE_ELF_RELA
arch/powerpc/mm/mem.c +0 -7
@@ -404,13 +404,6 @@ void free_initmem(void)free_initmem_default (POISON_FREE_INITMEM ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* * This is called when a page has been modified by the kernel. * It just marks the page as not i-cache clean. We do the i-cache
Signature · 1 line
2.16.2
PATCH 15/16 sh: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/sh/Kconfig | 1 + arch/sh/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/sh/Kconfig +1 -0
@@ -50,6 +50,7 @@ config SUPERH select HAVE_ARCH_AUDITSYSCALL select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_NMI + select INITRAMFS_GENERIC_UNLOAD help The SuperH is a RISC processor targeted for use in embedded systems and consumer electronics; it was also used in the Sega Dreamcast
arch/sh/mm/init.c +0 -7
@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)
Signature · 1 line
2.16.2
PATCH 16/16 um: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/um/Kconfig.common | 1 + arch/um/kernel/mem.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/um/Kconfig.common +1 -0
@@ -13,6 +13,7 @@ config UML select GENERIC_CLOCKEVENTS select HAVE_GCC_PLUGINS select TTY # Needed for line.c + select INITRAMFS_GENERIC_UNLOAD config MMU bool
arch/um/kernel/mem.c +0 -7
@@ -170,13 +170,6 @@ void free_initmem(void) { } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* Allocate and free page tables. */ pgd_t *pgd_alloc (struct mm_struct *mm)
Signature · 1 line
2.16.2
v2 cover Generic infrastructure for unloading initramfs
In reply to Shea LevyThis patch series extracts out code for unloading the initramfs that was identical across 14 architectures, and moves those architectures to the common code path. Additionally, RISC-V is newly moved to the common code path.
In addition to reducing duplication, this allows us to bring future improvements (such as generalizing existing "keep initrd" command line options) to multiple architectures at once.
v2: Mark generic free_initrd_mem __init.
PATCH v2 1/16 initrd: Add generic code path for common initrd unloading logic.
--- init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 2 files changed, 11 insertions(+)
init/initramfs.c +7 -0
@@ -526,6 +526,13 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +#ifdef CONFIG_INITRAMFS_GENERIC_UNLOAD +void __init free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE
usr/Kconfig +4 -0
@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +# Arches can select this for a generic initrd unloading codepath +config INITRAMFS_GENERIC_UNLOAD + bool
Signature · 1 line
2.16.2
PATCH v2 2/16 riscv: Use INITRAMFS_GENERIC_UNLOAD.
In reply to Shea Levy--- arch/riscv/Kconfig | 1 + arch/riscv/mm/init.c | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-)
arch/riscv/Kconfig +1 -0
@@ -37,6 +37,7 @@ config RISCV select THREAD_INFO_IN_TASK select RISCV_TIMER select GENERIC_IRQ_MULTI_HANDLER + select INITRAMFS_GENERIC_UNLOAD config MMU def_bool y
arch/riscv/mm/init.c +0 -6
@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
Signature · 1 line
2.16.2
Re: [PATCH v2 02/16] riscv: Use INITRAMFS_GENERIC_UNLOAD.
Quoted 23 lines · On Sun, 25 Mar 2018 15:18:39 PDT (-0700), [email protected] wrote:
Signed-off-by Shea Levy <[email protected]>--- arch/riscv/Kconfig | 1 + arch/riscv/mm/init.c | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-)arch/riscv/Kconfig +1
-0@@ -37,6 +37,7 @@ config RISCV select THREAD_INFO_IN_TASK select RISCV_TIMER select GENERIC_IRQ_MULTI_HANDLER + select INITRAMFS_GENERIC_UNLOAD config MMU def_bool yarch/riscv/mm/init.c +0
-0
arch/riscv/mm/init.c void free_initmem(void) · line 70
Quoted 9 lines
arch/riscv/mm/init.c +0
-6@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
I haven't looked through the rest of the patch set, but this is a pretty trivial change so feel free to add a
if you'd like. If you'd like it merged through my tree then just say something!
Re: [PATCH v2 02/16] riscv: Use INITRAMFS_GENERIC_UNLOAD.
Hi Palmer,
Quoted 37 lines · Palmer Dabbelt
Quoted 23 lines · On Sun, 25 Mar 2018 15:18:39 PDT (-0700), [email protected] wrote:
Signed-off-by Shea Levy <[email protected]>--- arch/riscv/Kconfig | 1 + arch/riscv/mm/init.c | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-)arch/riscv/Kconfig +1
-0@@ -37,6 +37,7 @@ config RISCV select THREAD_INFO_IN_TASK select RISCV_TIMER select GENERIC_IRQ_MULTI_HANDLER + select INITRAMFS_GENERIC_UNLOAD config MMU def_bool yarch/riscv/mm/init.c +0
-0arch/riscv/mm/init.c void free_initmem(void) · line 70
Quoted 9 lines
arch/riscv/mm/init.c +0
-6@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */ I haven't looked through the rest of the patch set, but this is a pretty trivial change so feel free to add a
Quoted 4 lines
Reviewed-by Palmer Dabbelt <[email protected]>if you'd like. If you'd like it merged through my tree then just say something!
I'm not sure how these cross-cutting changes go, if you can take the series through your tree that'd be great!
Thanks,
Shea
PATCH v2 3/16 alpha: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/alpha/Kconfig | 1 + arch/alpha/mm/init.c | 8 -------- 2 files changed, 1 insertion(+), 8 deletions(-)
arch/alpha/Kconfig +1 -0
@@ -27,6 +27,7 @@ config ALPHA select ODD_RT_SIGACTION select OLD_SIGSUSPEND select CPU_NO_EFFICIENT_FFS if !ALPHA_EV67 + select INITRAMFS_GENERIC_UNLOAD help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory,
arch/alpha/mm/init.c +0 -8
@@ -291,11 +291,3 @@ free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void -free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v2 4/16 arc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/arc/Kconfig | 1 + arch/arc/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/arc/Kconfig +1 -0
@@ -44,6 +44,7 @@ config ARC select HAVE_GENERIC_DMA_COHERENT select HAVE_KERNEL_GZIP select HAVE_KERNEL_LZMA + select INITRAMFS_GENERIC_UNLOAD config MIGHT_HAVE_PCI bool
arch/arc/mm/init.c +0 -7
@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v2 5/16 c6x: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/c6x/Kconfig | 1 + arch/c6x/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/c6x/Kconfig +1 -0
@@ -19,6 +19,7 @@ config C6X select GENERIC_CLOCKEVENTS select MODULES_USE_ELF_RELA select ARCH_NO_COHERENT_DMA_MMAP + select INITRAMFS_GENERIC_UNLOAD config MMU def_bool n
arch/c6x/mm/init.c +0 -7
@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v2 6/16 frv: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/frv/Kconfig | 1 + arch/frv/mm/init.c | 11 ----------- 2 files changed, 1 insertion(+), 11 deletions(-)
arch/frv/Kconfig +1 -0
@@ -17,6 +17,7 @@ config FRV select OLD_SIGACTION select HAVE_DEBUG_STACKOVERFLOW select ARCH_NO_COHERENT_DMA_MMAP + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/frv/mm/init.c +0 -11
@@ -131,14 +131,3 @@ void free_initmem(void)free_initmem_default (-1 );#endif }/* end free_initmem() */ - -/*****************************************************************************/ -/* -* free the initial ramdisk memory -*/ -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -}/* end free_initrd_mem() */ -#endif
Signature · 1 line
2.16.2
PATCH v2 7/16 h8300: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/h8300/Kconfig | 1 + arch/h8300/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/h8300/Kconfig +1 -0
@@ -24,6 +24,7 @@ config H8300 select HAVE_ARCH_HASH select CPU_NO_EFFICIENT_FFS select DMA_DIRECT_OPS + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/h8300/mm/init.c +0 -7
@@ -102,13 +102,6 @@ void __init mem_init(void) } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {
Signature · 1 line
2.16.2
PATCH v2 8/16 m32r: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/m32r/Kconfig | 1 + arch/m32r/mm/init.c | 11 ----------- 2 files changed, 1 insertion(+), 11 deletions(-)
arch/m32r/Kconfig +1 -0
@@ -21,6 +21,7 @@ config M32R select CPU_NO_EFFICIENT_FFS select DMA_DIRECT_OPS select ARCH_NO_COHERENT_DMA_MMAP if !MMU + select INITRAMFS_GENERIC_UNLOAD config SBUS bool
arch/m32r/mm/init.c +0 -11
@@ -139,14 +139,3 @@ void free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -/*======================================================================* -* free_initrd_mem() : -* orig : arch/sh/mm/init.c -*======================================================================*/ -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v2 9/16 m68k: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/m68k/Kconfig | 1 + arch/m68k/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/m68k/Kconfig +1 -0
@@ -24,6 +24,7 @@ config M68K select MODULES_USE_ELF_RELA select OLD_SIGSUSPEND3 select OLD_SIGACTION + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/m68k/mm/init.c +0 -7
@@ -172,10 +172,3 @@ void __init mem_init(void)mem_init_print_info (NULL );print_memmap (); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v2 10/16 microblaze: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/microblaze/Kconfig | 1 + arch/microblaze/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/microblaze/Kconfig +1 -0
@@ -36,6 +36,7 @@ config MICROBLAZE select TRACING_SUPPORT select VIRT_TO_BUS select CPU_NO_EFFICIENT_FFS + select INITRAMFS_GENERIC_UNLOAD # Endianness selection choice
arch/microblaze/mm/init.c +0 -7
@@ -187,13 +187,6 @@ void __init setup_memory(void)paging_init (); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v2 11/16 nios2: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/nios2/Kconfig | 1 + arch/nios2/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/nios2/Kconfig +1 -0
@@ -19,6 +19,7 @@ config NIOS2 select SPARSE_IRQ select USB_ARCH_HAS_HCD if USB_SUPPORT select CPU_NO_EFFICIENT_FFS + select INITRAMFS_GENERIC_UNLOAD config GENERIC_CSUM def_bool y
arch/nios2/mm/init.c +0 -7
@@ -82,13 +82,6 @@ void __init mmu_init(void)flush_tlb_all (); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __ref free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v2 12/16 openrisc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/openrisc/Kconfig | 1 + arch/openrisc/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/openrisc/Kconfig +1 -0
@@ -36,6 +36,7 @@ config OPENRISC select OMPIC if SMP select ARCH_WANT_FRAME_POINTERS select GENERIC_IRQ_MULTI_HANDLER + select INITRAMFS_GENERIC_UNLOAD config CPU_BIG_ENDIAN def_bool y
arch/openrisc/mm/init.c +0 -7
@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v2 13/16 parisc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/parisc/Kconfig | 1 + arch/parisc/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/parisc/Kconfig +1 -0
@@ -51,6 +51,7 @@ config PARISC select GENERIC_CLOCKEVENTS select ARCH_NO_COHERENT_DMA_MMAP select CPU_NO_EFFICIENT_FFS + select INITRAMFS_GENERIC_UNLOAD help The PA-RISC microprocessor is designed by Hewlett-Packard and used
arch/parisc/mm/init.c +0 -7
@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v2 14/16 powerpc: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/powerpc/Kconfig | 1 + arch/powerpc/mm/mem.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/powerpc/Kconfig +1 -0
@@ -223,6 +223,7 @@ config PPC select HAVE_SYSCALL_TRACEPOINTS select HAVE_VIRT_CPU_ACCOUNTING select HAVE_IRQ_TIME_ACCOUNTING + select INITRAMFS_GENERIC_UNLOAD select IRQ_DOMAIN select IRQ_FORCED_THREADING select MODULES_USE_ELF_RELA
arch/powerpc/mm/mem.c +0 -7
@@ -404,13 +404,6 @@ void free_initmem(void)free_initmem_default (POISON_FREE_INITMEM ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* * This is called when a page has been modified by the kernel. * It just marks the page as not i-cache clean. We do the i-cache
Signature · 1 line
2.16.2
PATCH v2 15/16 sh: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/sh/Kconfig | 1 + arch/sh/mm/init.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/sh/Kconfig +1 -0
@@ -50,6 +50,7 @@ config SUPERH select HAVE_ARCH_AUDITSYSCALL select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_NMI + select INITRAMFS_GENERIC_UNLOAD help The SuperH is a RISC processor targeted for use in embedded systems and consumer electronics; it was also used in the Sega Dreamcast
arch/sh/mm/init.c +0 -7
@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)
Signature · 1 line
2.16.2
PATCH v2 16/16 um: Use INITRAMFS_GENERIC_UNLOAD
In reply to Shea Levy--- arch/um/Kconfig.common | 1 + arch/um/kernel/mem.c | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-)
arch/um/Kconfig.common +1 -0
@@ -13,6 +13,7 @@ config UML select GENERIC_CLOCKEVENTS select HAVE_GCC_PLUGINS select TTY # Needed for line.c + select INITRAMFS_GENERIC_UNLOAD config MMU bool
arch/um/kernel/mem.c +0 -7
@@ -170,13 +170,6 @@ void free_initmem(void) { } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* Allocate and free page tables. */ pgd_t *pgd_alloc (struct mm_struct *mm)
Signature · 1 line
2.16.2
PATCH 1/1 Extract initrd free logic from arch-specific code.
In reply to Shea LevyNow only those architectures that have custom initrd free requirements need to define free_initrd_mem.
--- arch/alpha/mm/init.c | 8 -------- arch/arc/mm/init.c | 7 ------- arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/blackfin/Kconfig | 1 + arch/c6x/mm/init.c | 7 ------- arch/cris/Kconfig | 1 + arch/frv/mm/init.c | 11 ----------- arch/h8300/mm/init.c | 7 ------- arch/hexagon/Kconfig | 1 + arch/ia64/Kconfig | 1 + arch/m32r/Kconfig | 1 + arch/m32r/mm/init.c | 11 ----------- arch/m68k/mm/init.c | 7 ------- arch/metag/Kconfig | 1 + arch/microblaze/mm/init.c | 7 ------- arch/mips/Kconfig | 1 + arch/mn10300/Kconfig | 1 + arch/nios2/mm/init.c | 7 ------- arch/openrisc/mm/init.c | 7 ------- arch/parisc/mm/init.c | 7 ------- arch/powerpc/mm/mem.c | 7 ------- arch/riscv/mm/init.c | 6 ------ arch/s390/Kconfig | 1 + arch/score/Kconfig | 1 + arch/sh/mm/init.c | 7 ------- arch/sparc/Kconfig | 1 + arch/tile/Kconfig | 1 + arch/um/kernel/mem.c | 7 ------- arch/unicore32/Kconfig | 1 + arch/x86/Kconfig | 1 + arch/xtensa/Kconfig | 1 + init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 34 files changed, 28 insertions(+), 113 deletions(-)
arch/alpha/mm/init.c +0 -8
@@ -291,11 +291,3 @@ free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void -free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
arch/arc/mm/init.c +0 -7
@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
arch/arm/Kconfig +1 -0
@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESEND select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMU
arch/arm64/Kconfig +1 -0
@@ -85,6 +85,7 @@ config ARM64 select HAVE_ALIGNED_STRUCT_PAGE if SLUB select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_BITREVERSE + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_HUGE_VMAP select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
arch/blackfin/Kconfig +1 -0
@@ -15,6 +15,7 @@ config BLACKFIN def_bool y select HAVE_ARCH_KGDB select HAVE_ARCH_TRACEHOOK + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_DYNAMIC_FTRACE select HAVE_FTRACE_MCOUNT_RECORD select HAVE_FUNCTION_GRAPH_TRACER
arch/c6x/mm/init.c +0 -7
@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
arch/cris/Kconfig +1 -0
@@ -76,6 +76,7 @@ config CRIS select HAVE_DEBUG_BUGVERBOSE if ETRAX_ARCH_V32 select HAVE_NMI select DMA_DIRECT_OPS if PCI + select HAVE_ARCH_FREE_INITRD_MEM config HZ int
arch/frv/mm/init.c +0 -11
@@ -131,14 +131,3 @@ void free_initmem(void)free_initmem_default (-1 );#endif }/* end free_initmem() */ - -/*****************************************************************************/ -/* -* free the initial ramdisk memory -*/ -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -}/* end free_initrd_mem() */ -#endif
arch/h8300/mm/init.c +0 -7
@@ -102,13 +102,6 @@ void __init mem_init(void) } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {
arch/hexagon/Kconfig +1 -0
@@ -17,6 +17,7 @@ config HEXAGON # GENERIC_ALLOCATOR is used by dma_alloc_coherent() select GENERIC_ALLOCATOR select GENERIC_IRQ_SHOW + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_KGDB select HAVE_ARCH_TRACEHOOK select NO_IOPORT_MAP
arch/ia64/Kconfig +1 -0
@@ -28,6 +28,7 @@ config IA64 select HAVE_DYNAMIC_FTRACE if (!ITANIUM) select HAVE_FUNCTION_TRACER select TTY + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_TRACEHOOK select HAVE_DMA_API_DEBUG select HAVE_MEMBLOCK
arch/m32r/Kconfig +1 -0
@@ -21,6 +21,7 @@ config M32R select CPU_NO_EFFICIENT_FFS select DMA_DIRECT_OPS select ARCH_NO_COHERENT_DMA_MMAP if !MMU + select HAVE_ARCH_FREE_INITRD_MEM config SBUS bool
arch/m32r/mm/init.c +0 -11
@@ -139,14 +139,3 @@ void free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -/*======================================================================* -* free_initrd_mem() : -* orig : arch/sh/mm/init.c -*======================================================================*/ -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
arch/m68k/mm/init.c +0 -7
@@ -172,10 +172,3 @@ void __init mem_init(void)mem_init_print_info (NULL );print_memmap (); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
arch/metag/Kconfig +1 -0
@@ -7,6 +7,7 @@ config METAG select GENERIC_IRQ_SHOW select GENERIC_SMP_IDLE_THREAD select HAVE_64BIT_ALIGNED_ACCESS + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_TRACEHOOK select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK
arch/microblaze/mm/init.c +0 -7
@@ -187,13 +187,6 @@ void __init setup_memory(void)paging_init (); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
arch/mips/Kconfig +1 -0
@@ -27,6 +27,7 @@ config MIPS select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL select HANDLE_DOMAIN_IRQ + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_KGDB select HAVE_ARCH_MMAP_RND_BITS if MMU
arch/mn10300/Kconfig +1 -0
@@ -6,6 +6,7 @@ config MN10300 select HAVE_UID16 select GENERIC_IRQ_SHOW select ARCH_WANT_IPC_PARSE_VERSION + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_KGDB select GENERIC_ATOMIC64
arch/nios2/mm/init.c +0 -7
@@ -82,13 +82,6 @@ void __init mmu_init(void)flush_tlb_all (); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __ref free_initmem (void ) {free_initmem_default (-1 );
arch/openrisc/mm/init.c +0 -7
@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
arch/parisc/mm/init.c +0 -7
@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
arch/powerpc/mm/mem.c +0 -7
@@ -404,13 +404,6 @@ void free_initmem(void)free_initmem_default (POISON_FREE_INITMEM ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* * This is called when a page has been modified by the kernel. * It just marks the page as not i-cache clean. We do the i-cache
arch/riscv/mm/init.c +0 -6
@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
arch/s390/Kconfig +1 -0
@@ -125,6 +125,7 @@ config S390 select GENERIC_TIME_VSYSCALL select HAVE_ALIGNED_STRUCT_PAGE if SLUB select HAVE_ARCH_AUDITSYSCALL + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES select HAVE_ARCH_SECCOMP_FILTER
arch/score/Kconfig +1 -0
@@ -16,6 +16,7 @@ config SCORE select MODULES_USE_ELF_REL select CLONE_BACKWARDS select CPU_NO_EFFICIENT_FFS + select HAVE_ARCH_FREE_INITRD_MEM choice prompt "System type"
arch/sh/mm/init.c +0 -7
@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)
arch/sparc/Kconfig +1 -0
@@ -18,6 +18,7 @@ config SPARC select OF_PROMTREE select HAVE_IDE select HAVE_OPROFILE + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_KGDB if !SMP || SPARC64 select HAVE_ARCH_TRACEHOOK select HAVE_EXIT_THREAD
arch/tile/Kconfig +1 -0
@@ -16,6 +16,7 @@ config TILE select GENERIC_PENDING_IRQ if SMP select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNLEN_USER + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_SECCOMP_FILTER select HAVE_ARCH_TRACEHOOK select HAVE_CONTEXT_TRACKING
arch/um/kernel/mem.c +0 -7
@@ -170,13 +170,6 @@ void free_initmem(void) { } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* Allocate and free page tables. */ pgd_t *pgd_alloc (struct mm_struct *mm)
arch/unicore32/Kconfig +1 -0
@@ -4,6 +4,7 @@ config UNICORE32 select ARCH_HAS_DEVMEM_IS_ALLOWED select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_MEMBLOCK select HAVE_GENERIC_DMA_COHERENT select HAVE_KERNEL_GZIP
arch/x86/Kconfig +1 -0
@@ -111,6 +111,7 @@ config X86 select HAVE_ALIGNED_STRUCT_PAGE if SLUB select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_HUGE_VMAP if X86_64 || X86_PAE + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_KASAN if X86_64 select HAVE_ARCH_KGDB
arch/xtensa/Kconfig +1 -0
@@ -16,6 +16,7 @@ config XTENSA select GENERIC_PCI_IOMAP select GENERIC_SCHED_CLOCK select GENERIC_STRNCPY_FROM_USER if KASAN + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_KASAN if MMU select HAVE_CC_STACKPROTECTOR select HAVE_DEBUG_KMEMLEAK
init/initramfs.c +7 -0
@@ -526,6 +526,13 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +#ifndef CONFIG_HAVE_ARCH_FREE_INITRD_MEM +void __init free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +#endif +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE
usr/Kconfig +4 -0
@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +config HAVE_ARCH_FREE_INITRD_MEM + bool + default n
Signature · 1 line
2.16.2
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem.
...
Quoted 18 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0
arch/arm/Kconfig config ARM · line 53
Quoted 7 lines
arch/arm/Kconfig +1
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESEND select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMU
Isn't this why weak symbols were invented?
Confused,
Rob
Re: [PATCH] Extract initrd free logic from arch-specific code.
Hi Rob,
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESEND
Quoted 9 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
This approach was suggested by Christoph Hellwig upthread, and seems to have some precedent elsewhere (e.g. strncasecmp), but I agree weak symbols seem appropriate here. I'm happy to implement either approach!
Quoted 4 lines
Confused,
Rob
Thanks,
Shea
_______________________________________________
linux-snps-arc mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
Russell King - ARM Linux
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Rob LandleyQuoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESEND
Quoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Rob
Russell King - ARM Linux
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 40 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATION is a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for __weak ?)
Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 49 lines · Russell King - ARM Linux
Quoted 40 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
Quoted 7 lines
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)
IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
Nicholas Piggin
reviewerRe: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 51 lines · On Thu, 29 Mar 2018 09:37:52 +1100 Oliver <[email protected]> wrote:
Quoted 49 lines · Russell King - ARM Linux
Quoted 40 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
Quoted 7 lines
Quoted 7 lines
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)
Well weak symbols have been used long before it was added.
Quoted 3 lines
IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
Yeah I had started some patches for powerpc and x86 that have ended up on the back burner. There's been some MIPS people playing with it too.
For the kernel, LD_DEAD_CODE_DATA_ELIMINATION is not great. It can save a little, but you get issues like any exception table entry or bug table entry in a function will create a reference back to the function, so the linker can't trim it away even if nothing else references it.
I'll try to take another look at it within the next few months and remove it if I can't make progress.
Nicolas Pitre has been doing some much better work on dead code using real LTO.
Thanks,
Nick
Russell King - ARM Linux
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
In reply to OliverQuoted 55 lines · Oliver
Quoted 53 lines · Russell King - ARM Linux
Quoted 40 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.
Quoted 7 lines
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
I've given it a go on ARM, marking every linker-built table with KEEP() and comparing the System.map files. The resulting kernel is around 150k smaller, which seems good.
However, it doesn't boot - and I don't know why. Booting the kernel under kvmtool in a VM using virtio-console, I can find no way to get any kernel messages out of it. Using lkvm debug, I can see that the PC is stuck inside die(), and that's the only information I have. It dies before bringing up the other CPUs, so it's a very early death.
I don't think other console types are available under ARM64.
Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up
Geert Uytterhoeven
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 66 lines · Russell King - ARM Linux
Quoted 53 lines · Oliver
Quoted 51 lines · Russell King - ARM Linux
Quoted 38 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Quoted 7 lines
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
I've given it a go on ARM, marking every linker-built table with
KEEP()and comparing the System.map files. The resulting kernel is around 150k smaller, which seems good.
Quoted 7 lines
However, it doesn't boot - and I don't know why. Booting the kernel under kvmtool in a VM using virtio-console, I can find no way to get any kernel messages out of it. Using lkvm debug, I can see that the PC is stuck inside
die(), and that's the only information I have. It dies before bringing up the other CPUs, so it's a very early death.I don't think other console types are available under ARM64.
earlycon?
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Russell King - ARM Linux
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 74 lines · Geert Uytterhoeven
Quoted 72 lines · Russell King - ARM Linux
Quoted 53 lines · Oliver
Quoted 51 lines · Russell King - ARM Linux
Quoted 38 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Quoted 7 lines
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
I've given it a go on ARM, marking every linker-built table with
KEEP()and comparing the System.map files. The resulting kernel is around 150k smaller, which seems good.However, it doesn't boot - and I don't know why. Booting the kernel under kvmtool in a VM using virtio-console, I can find no way to get any kernel messages out of it. Using lkvm debug, I can see that the PC is stuck inside
die(), and that's the only information I have. It dies before bringing up the other CPUs, so it's a very early death.
Quoted 3 lines
Quoted 1 line
I don't think other console types are available under ARM64.
earlycon?
Through what - as I say above, I think the only thing that's present is virtio-console, and the virtio stack only get initialised much later in boot.
Eg, there's the memory-based virtio driver which interfaces any virtio driver to a memory-based ring structures for communication with the host (drivers/virtio/virtio_mmio.c) which is initialised at module_init() time, and so isn't available for earlycon.
I don't think merely changing the module_init() calls in the appropriate virtio bits will suffice - it's why I pointed out that it dies before SMP initialisation, which also means that it dies before we start running the initcalls for subsystems and drivers.
I'm not aware of there being an emulated UART in the guest's address space, so serial based stuff doesn't work.
Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 89 lines · Russell King - ARM Linux
Quoted 74 lines · Geert Uytterhoeven
Quoted 72 lines · Russell King - ARM Linux
Quoted 53 lines · Oliver
Quoted 51 lines · Russell King - ARM Linux
Quoted 38 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Quoted 7 lines
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
I've given it a go on ARM, marking every linker-built table with
KEEP()and comparing the System.map files. The resulting kernel is around 150k smaller, which seems good.However, it doesn't boot - and I don't know why. Booting the kernel under kvmtool in a VM using virtio-console, I can find no way to get any kernel messages out of it. Using lkvm debug, I can see that the PC is stuck inside
die(), and that's the only information I have. It dies before bringing up the other CPUs, so it's a very early death.Quoted 3 lines
Quoted 1 line
I don't think other console types are available under ARM64.
earlycon?
Through what - as I say above, I think the only thing that's present is virtio-console, and the virtio stack only get initialised much later in boot.
Eg, there's the memory-based virtio driver which interfaces any virtio driver to a memory-based ring structures for communication with the host (
drivers/virtio/virtio_mmio.c) which is initialised atmodule_init()time, and so isn't available for earlycon.
Quoted 7 lines
I don't think merely changing the
module_init()calls in the appropriate virtio bits will suffice - it's why I pointed out that it dies before SMP initialisation, which also means that it dies before we start running the initcalls for subsystems and drivers.I'm not aware of there being an emulated UART in the guest's address space, so serial based stuff doesn't work.
"earlycon=uart,mmio,0x3f8" is what you're looking for:
$ Work/kvmtool/lkvm run -c2 -k zImage -p "earlycon=uart,mmio,0x3f8" --console virtio --aarch32 # lkvm run -k zImage -m 320 -c 2 --name guest-3856 Info: Loaded kernel to 0x80008000 (6767104 bytes) Info: Placing fdt at 0x8fe00000 - 0x8fffffff Info: virtio-mmio.devices=0x200@0x10000:36
Info: virtio-mmio.devices=0x200@0x10200:37
Info: virtio-mmio.devices=0x200@0x10400:38
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.16.0-rc6+ (maz@approximate) (gcc version 6.3.0 20170516 (Debian 6.3.0-18)) #8407 SMP PREEMPT Tue Mar 20 15:01:43 GMT 2018 [ 0.000000] CPU: ARMv7 Processor [410fd082] revision 2 (ARMv7), cr=30c5383d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] OF: fdt: Machine model: linux,dummy-virt [ 0.000000] earlycon: uart0 at MMIO 0x00000000000003f8 (options '') [ 0.000000] bootconsole [uart0] enabled [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found.
[...]
M.
Signature · 1 line
Jazz is not dead, it just smell funny.
Russell King - ARM Linux
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 96 lines · Marc Zyngier
Quoted 94 lines · Russell King - ARM Linux
Quoted 74 lines · Geert Uytterhoeven
Quoted 72 lines · Russell King - ARM Linux
Quoted 53 lines · Oliver
Quoted 51 lines · Russell King - ARM Linux
Quoted 38 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
Quoted 5 lines
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Quoted 7 lines
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
I've given it a go on ARM, marking every linker-built table with
KEEP()and comparing the System.map files. The resulting kernel is around 150k smaller, which seems good.However, it doesn't boot - and I don't know why. Booting the kernel under kvmtool in a VM using virtio-console, I can find no way to get any kernel messages out of it. Using lkvm debug, I can see that the PC is stuck inside
die(), and that's the only information I have. It dies before bringing up the other CPUs, so it's a very early death.Quoted 3 lines
Quoted 1 line
I don't think other console types are available under ARM64.
earlycon?
Through what - as I say above, I think the only thing that's present is virtio-console, and the virtio stack only get initialised much later in boot.
Eg, there's the memory-based virtio driver which interfaces any virtio driver to a memory-based ring structures for communication with the host (
drivers/virtio/virtio_mmio.c) which is initialised atmodule_init()time, and so isn't available for earlycon.I don't think merely changing the
module_init()calls in the appropriate virtio bits will suffice - it's why I pointed out that it dies before SMP initialisation, which also means that it dies before we start running the initcalls for subsystems and drivers.
Quoted 4 lines
Quoted 2 lines
I'm not aware of there being an emulated UART in the guest's address space, so serial based stuff doesn't work.
"earlycon=uart,mmio,0x3f8" is what you're looking for:
Does that also mean that we have a RTC at the standard PC IO addresses as well, but in mmio space?
Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 4 lines · Russell King - ARM Linux
Quoted 2 lines · Marc Zyngier
On Thu, 29 Mar 2018 16:58:27 +0100,
Russell King - ARM Linux wrote:
[...]
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
I'm not aware of there being an emulated UART in the guest's address space, so serial based stuff doesn't work.
"earlycon=uart,mmio,0x3f8" is what you're looking for:
Does that also mean that we have a RTC at the standard PC IO addresses as well, but in mmio space?
There is one, together with an i8042. Not exposed in the DT though.
M.
Signature · 1 line
Jazz is not dead, it just smell funny.
Re: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Russell King - ARM LinuxQuoted 14 lines · Russell King - ARM Linux
Quoted 5 lines · Oliver
On Thu, Mar 29, 2018 at 9:14 AM, Russell King - ARM Linux
Quoted 4 lines
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.Quoted 7 lines
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)IIRC Nick had some patches to do the arch enablement for powerpc, but I'm not sure what happened to them though. I suspect it just fell down Nick's ever growing TODO list.
Quoted 8 lines
I've given it a go on ARM, marking every linker-built table with
KEEP()and comparing the System.map files. The resulting kernel is around 150k smaller, which seems good.However, it doesn't boot - and I don't know why. Booting the kernel under kvmtool in a VM using virtio-console, I can find no way to get any kernel messages out of it. Using lkvm debug, I can see that the PC is stuck inside
die(), and that's the only information I have.
qemu-system-arm's "-s" option lets you hook to the hardware with gdb, as if using one of those jtags that speaks gdbserver protocol. It stops waiting for you to attach with 'target remote' it, then 'file vmlinux' to load the symbols...
The miniconfig and qemu invocation I use for arm64 are attached, tested with 2.11.0 on a 4.14 kernel. You should be able to just "qemu-aarch64.sh -s" and then probably "target remote 127.0.0.1:1234"? (Been a while since I've used it, don't have a cross-gdb for arm64 lying around...)
Sigh, I just tried -s and qemu 2.11.0 is _not_ waiting for gdb to attach on arm64, despite what the docs say:
$ qemu-system-aarch64 --help | grep gdb -gdb dev wait for gdb connection on 'dev' -s shorthand for -gdb tcp::1234
Another random regression in qemu, gee what a surprise.
Quoted 3 lines
It dies before bringing up the other CPUs, so it's a very early death.
I don't think other console types are available under ARM64.
I've often found useful the two line version of:
https://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/
Which is generally some variant of:
{char *XX = "blah"; while (*XX) {while (*SERIAL_STATUS_REGISTER & OUT_READY); *SERIAL_OUT = *XX++;}}
(I.E. balu cheated not spinning checking the ready-for-next-byte bit, because qemu's always angry.)
That trick lets you cut and paste a print statement into all sorts of early hardware nonsense, on most architectures. You just have to look up SERIAL_STATUS_REGISTER, OUT_OK_BIT, and SERIAL_OUT values for the serial port du jour.
That said I've mostly used it in things like u-boot. I dunno at what point the kernel's done enough setup that direct banging on registers would stop working. (Works in the decompresion code, anyway.) And it assumes the port's set to the right speed (usually left there by the bootloader)...
Rob
# make ARCH=arm64 allnoconfig KCONFIG_ALLCONFIG=aarch64.miniconf # make ARCH=arm64 -j $(nproc) # boot arch/arm64/boot/Image
CONFIG_MMU=yCONFIG_ARCH_MULTI_V7=yCONFIG_ARCH_VIRT=yCONFIG_SOC_DRA7XX=yCONFIG_ARCH_OMAP2PLUS_TYPICAL=yCONFIG_ARCH_ALPINE=yCONFIG_ARM_THUMB=yCONFIG_VDSO=yCONFIG_CPU_IDLE=yCONFIG_ARM_CPUIDLE=yCONFIG_KERNEL_MODE_NEON=y
CONFIG_SERIAL_AMBA_PL011=yCONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_RTC_CLASS=yCONFIG_RTC_HCTOSYS=yCONFIG_RTC_DRV_PL031=y
CONFIG_NET_CORE=yCONFIG_VIRTIO_NET=y
CONFIG_PCI=yCONFIG_PCI_HOST_GENERIC=yCONFIG_VIRTIO_BLK=yCONFIG_VIRTIO_PCI=yCONFIG_VIRTIO_MMIO=y
CONFIG_ATA=yCONFIG_ATA_SFF=yCONFIG_ATA_BMDMA=yCONFIG_ATA_PIIX=y
CONFIG_PATA_PLATFORM=yCONFIG_PATA_OF_PLATFORM=yCONFIG_ATA_GENERIC=y
# CONFIG_EMBEDDED is not setCONFIG_EARLY_PRINTK=yCONFIG_BINFMT_ELF=yCONFIG_BINFMT_SCRIPT=yCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y
CONFIG_BLK_DEV=yCONFIG_BLK_DEV_INITRD=yCONFIG_RD_GZIP=y
CONFIG_BLK_DEV_LOOP=yCONFIG_EXT4_FS=yCONFIG_EXT4_USE_FOR_EXT2=yCONFIG_VFAT_FS=yCONFIG_FAT_DEFAULT_UTF8=yCONFIG_MISC_FILESYSTEMS=yCONFIG_SQUASHFS=yCONFIG_SQUASHFS_XATTR=yCONFIG_SQUASHFS_ZLIB=yCONFIG_DEVTMPFS=yCONFIG_DEVTMPFS_MOUNT=yCONFIG_TMPFS=yCONFIG_TMPFS_POSIX_ACL=y
CONFIG_NET=yCONFIG_PACKET=yCONFIG_UNIX=yCONFIG_INET=yCONFIG_IPV6=yCONFIG_NETDEVICES=y
#CONFIG_NET_CORE=y
#CONFIG_NETCONSOLE=yCONFIG_ETHERNET=y
_______________________________________________
linux-snps-arc mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
Re: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Russell King - ARM LinuxQuoted 45 lines · Russell King - ARM Linux
Quoted 44 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Quoted 7 lines
Quoted 1 line
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.
It looks like there are per-architecture linker scripts that need to be updated? So if an architecture supports it, it's always done (well, it probes for the toolchain supporting the flag). And if the architecture doesn't support it, the linker script needs to be updated to mark sections with "I know nothing seems to reference this at the ELF level but keep it anyway, we're pulling an assembly trick".
Quoted 3 lines
Brings up the obvious question - why is it there if it's completely unused? (Maybe to cause confusion, and allowing a justification for
__weak?)
Presumably it will become the default on architectures as their linker scripts are converted. Once they're all converted the config symbol can go away. (Given the move to requiring gcc 4.7 or whatever it is, there can't be an architecture depending on a toolchain that _doesn't_ support it after that point. I doubt you can pair gcc 4.7 with a >12 year old binutils and expect good things...)
Rob
Russell King - ARM Linux
maintainerRe: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 56 lines · Rob Landley
Quoted 45 lines · Russell King - ARM Linux
Quoted 44 lines · Rob Landley
Quoted 33 lines · Russell King - ARM Linux
Quoted 23 lines · Rob Landley
Quoted 2 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem....
Quoted 19 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif arch/arm/Kconfig +0
-0@@ -47,6 +47,7 @@ config ARM select HARDIRQS_SW_RESENDQuoted 8 lines
arch/arm/Kconfig config ARM · line 53
Quoted 6 lines
arch/arm/Kconfig +1
-0select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 + select HAVE_ARCH_FREE_INITRD_MEM select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_MMAP_RND_BITS if MMUIsn't this why weak symbols were invented?
Quoted 3 lines
Weak symbols means that we end up with both the weakly-referenced code and the arch code in the kernel image. That's fine if the weak code is small.
The kernel's been able to build with link time garbage collection since 2016:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b67067f1176d
Quoted 7 lines
Quoted 1 line
Wouldn't that remove the unused one?
Probably, if anyone bothered to use that, which they don't.
LD_DEAD_CODE_DATA_ELIMINATIONis a symbol without a prompt, and from what I can see, nothing selects it. Therefore, the symbol is always disabled, and so the feature never gets used in mainline kernels.
Quoted 6 lines
It looks like there are per-architecture linker scripts that need to be updated? So if an architecture supports it, it's always done (well, it probes for the toolchain supporting the flag). And if the architecture doesn't support it, the linker script needs to be updated to mark sections with "I know nothing seems to reference this at the ELF level but keep it anyway, we're pulling an assembly trick".
It looks like it needs much more than just architecture changes as the reason it fails on ARM is because the init thread structure is missing due to missing KEEP()s in INIT_TASK_DATA(). Probably means it doesn't work anywhere.
8<===
From: Russell King <[email protected]>
Subject: [PATCH] Fix LD_DEAD_CODE_DATA_ELIMINATION
LD_DEAD_CODE_DATA_ELIMINATION fails to boot on ARM because the linker eliminates the init thread data from the bottom of the init threads stack. This causes recursive faults that end up overwriting parts of the kernel before they can print any message.
--- include/asm-generic/vmlinux.lds.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
include/asm-generic/vmlinux.lds.h +2 -2
@@ -279,8 +279,8 @@ VMLINUX_SYMBOL(__start_init_task) = .; \ VMLINUX_SYMBOL(init_thread_union) = .; \ VMLINUX_SYMBOL(init_stack) = .; \ - *(.data..init_task) \ - *(.data..init_thread_info) \ + KEEP(*(.data..init_task)) \ + KEEP(*(.data..init_thread_info)) \ . = VMLINUX_SYMBOL(__start_init_task) + THREAD_SIZE; \ VMLINUX_SYMBOL(__end_init_task) = .;
Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up
Re: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Shea LevyQuoted 4 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem.Signed-off-by Shea Levy <[email protected]>
Yay consolidation! :)
usr/Kconfig config INITRAMFS_COMPRESSION · line 239
Quoted 10 lines
usr/Kconfig +4
-0@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +config HAVE_ARCH_FREE_INITRD_MEM + bool + default n
If you keep the Kconfig, you can leave off "default n", and I'd suggest adding a help section just to describe what the per-arch responsibilities are when select-ing the config. (See HAVE_ARCH_SECCOMP_FILTER for an example.)
-Kees
Signature · 2 lines
Kees Cook Pixel Security
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 8 lines · Kees Cook
Quoted 4 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem.Signed-off-by Shea Levy <[email protected]>Yay consolidation! :)
Quoted 16 lines
usr/Kconfig config INITRAMFS_COMPRESSION · line 239
Quoted 10 lines
usr/Kconfig +4
-0@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +config HAVE_ARCH_FREE_INITRD_MEM + bool + default nIf you keep the
Kconfig, you can leave off "default n", and I'd suggest adding a help section just to describe what the per-arch responsibilities are when select-ing the config. (SeeHAVE_ARCH_SECCOMP_FILTERfor an example.)
One question about this change.
The original code would "select" HAVE_ARCH_FREE_INITRD_MEM on those arch. After this change, we need to manually "select" this?
Quoted 5 lines
-Kees
Signature · 2 lines
Kees Cook Pixel Security
Signature · 2 lines
Wei Yang Help you, Help me
v4 cover Generic initrd_free_mem
In reply to Shea LevyThis patch series extracts out code for unloading the initramfs that was identical across 14 architectures, and moves those architectures to the common code path. Additionally, RISC-V is newly moved to the common code path.
In addition to reducing duplication, this allows us to bring future improvements (such as generalizing existing "keep initrd" command line options) to multiple architectures at once.
v4: Use weak symbols instead of Kconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark generic free_initrd_mem __init.
PATCH v4 1/16 initrd: Add weakly-linked generic free_initrd_mem.
--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)
init/initramfs.c +5 -0
@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE
Signature · 1 line
2.16.2
PATCH v4 2/16 riscv: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/riscv/mm/init.c | 6 ------ 1 file changed, 6 deletions(-)
arch/riscv/mm/init.c +0 -6
@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
Signature · 1 line
2.16.2
Re: [PATCH v4 02/16] riscv: Use generic free_initrd_mem.
Quoted 10 lines · Shea Levy
Signed-off-by Shea Levy <[email protected]>--- arch/riscv/mm/init.c | 6 ------ 1 file changed, 6 deletions(-)arch/riscv/mm/init.c +0
-0
arch/riscv/mm/init.c void free_initmem(void) · line 70
Quoted 9 lines
arch/riscv/mm/init.c +0
-6@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
This looks like a change of behavior since the weakly defined code does not implement a nop.
I'm not saying the change is wrong, but if this is a deliberate bug fix then we need more than an empty commit message to explain what is happening here.
Daniel.
Re: [PATCH v4 02/16] riscv: Use generic free_initrd_mem.
Quoted 24 lines · Daniel Thompson
Quoted 10 lines · Shea Levy
Signed-off-by Shea Levy <[email protected]>--- arch/riscv/mm/init.c | 6 ------ 1 file changed, 6 deletions(-)arch/riscv/mm/init.c +0
-0arch/riscv/mm/init.c void free_initmem(void) · line 70
Quoted 9 lines
arch/riscv/mm/init.c +0
-6@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */ This looks like a change of behavior since the weakly defined code does not implement a nop.
Quoted 4 lines
I'm not saying the change is wrong, but if this is a deliberate bug fix then we need more than an empty commit message to explain what is happening here.
Right, sorry, will re-send with a proper commit message here.
Quoted 3 lines
Daniel.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180329/aed24f18/attachment.sig>
PATCH v4 3/16 alpha: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/alpha/mm/init.c | 8 -------- 1 file changed, 8 deletions(-)
arch/alpha/mm/init.c +0 -8
@@ -291,11 +291,3 @@ free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void -free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v4 4/16 arc: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/arc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/arc/mm/init.c +0 -7
@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v4 5/16 c6x: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/c6x/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/c6x/mm/init.c +0 -7
@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v4 6/16 frv: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/frv/mm/init.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/frv/mm/init.c +0 -11
@@ -131,14 +131,3 @@ void free_initmem(void)free_initmem_default (-1 );#endif }/* end free_initmem() */ - -/*****************************************************************************/ -/* -* free the initial ramdisk memory -*/ -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -}/* end free_initrd_mem() */ -#endif
Signature · 1 line
2.16.2
PATCH v4 7/16 h8300: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/h8300/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/h8300/mm/init.c +0 -7
@@ -102,13 +102,6 @@ void __init mem_init(void) } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {
Signature · 1 line
2.16.2
PATCH v4 8/16 m32r: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/m32r/mm/init.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/m32r/mm/init.c +0 -11
@@ -139,14 +139,3 @@ void free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -/*======================================================================* -* free_initrd_mem() : -* orig : arch/sh/mm/init.c -*======================================================================*/ -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v4 9/16 m68k: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/m68k/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/m68k/mm/init.c +0 -7
@@ -172,10 +172,3 @@ void __init mem_init(void)mem_init_print_info (NULL );print_memmap (); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
Re: [PATCH v4 09/16] m68k: Use generic free_initrd_mem.
Quoted 1 line · Shea Levy
Signed-off-by Shea Levy <[email protected]>
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsPATCH v4 10/16 microblaze: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/microblaze/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/microblaze/mm/init.c +0 -7
@@ -187,13 +187,6 @@ void __init setup_memory(void)paging_init (); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v4 11/16 nios2: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/nios2/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/nios2/mm/init.c +0 -7
@@ -82,13 +82,6 @@ void __init mmu_init(void)flush_tlb_all (); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __ref free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v4 12/16 openrisc: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/openrisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/openrisc/mm/init.c +0 -7
@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v4 13/16 parisc: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/parisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/parisc/mm/init.c +0 -7
@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v4 14/16 powerpc: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/powerpc/mm/mem.c | 7 ------- 1 file changed, 7 deletions(-)
arch/powerpc/mm/mem.c +0 -7
@@ -404,13 +404,6 @@ void free_initmem(void)free_initmem_default (POISON_FREE_INITMEM ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* * This is called when a page has been modified by the kernel. * It just marks the page as not i-cache clean. We do the i-cache
Signature · 1 line
2.16.2
Re: [PATCH v4 14/16] powerpc: Use generic free_initrd_mem.
Quoted 1 line · Shea Levy
Signed-off-by Shea Levy <[email protected]>
Most people seem to want some form of commit message and not just your sign-off.
And btw:
It seems you used get_maintainer to determine who to send these patches to.
I suggest you add --nogit and --nogit-fallback to the get_maintainer command line you use to avoid sending these patches to people like me that have done drive-by cleanup work on these files.
Re: [PATCH v4 14/16] powerpc: Use generic free_initrd_mem.
Quoted 6 lines · Joe Perches
Quoted 1 line · Shea Levy
Signed-off-by Shea Levy <[email protected]>Most people seem to want some form of commit message and not just your sign-off.
Ah, if the subject is insufficient I can add some more detail.
Quoted 10 lines
And btw:
It seems you used
get_maintainerto determine who to send these patches to.I suggest you add --nogit and --nogit-fallback to the
get_maintainercommand line you use to avoid sending these patches to people like me that have done drive-by cleanup work on these files.
Whoops, thanks for the tip and sorry for the noise!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180328/7ee29660/attachment.sig>
Michael Ellerman
reviewerRe: [PATCH v4 14/16] powerpc: Use generic free_initrd_mem.
Quoted 10 lines · Shea Levy
Quoted 6 lines · Joe Perches
Quoted 1 line · Shea Levy
Signed-off-by Shea Levy <[email protected]>Most people seem to want some form of commit message and not just your sign-off.
Ah, if the subject is insufficient I can add some more detail.
Yeah please do.
Seeing this patch in isolation, with no change log, I might think it's safe for me to just apply it.
But that would break the build because I don't have patch 1.
So for starters you need to explain that part, eg something like:
A previous patch in the series added a weak definition of free_initrd_mem() in init/initramfs.c.
The powerpc implementation is identical, so it can be removed allowing the generic version to be used.
Then you could also tell me if you did/didn't build/boot test it.
cheers
Re: [PATCH v4 14/16] powerpc: Use generic free_initrd_mem.
Hi Michael,
Quoted 22 lines · Michael Ellerman
Quoted 10 lines · Shea Levy
Quoted 6 lines · Joe Perches
Quoted 1 line · Shea Levy
Signed-off-by Shea Levy <[email protected]>Most people seem to want some form of commit message and not just your sign-off.
Ah, if the subject is insufficient I can add some more detail.
Yeah please do.
Seeing this patch in isolation, with no change log, I might think it's safe for me to just apply it.
But that would break the build because I don't have patch 1.
So for starters you need to explain that part, eg something like:
Quoted 8 lines
A previous patch in the series added a weak definition of
free_initrd_mem()ininit/initramfs.c.The powerpc implementation is identical, so it can be removed allowing the generic version to be used.
Then you could also tell me if you did/didn't build/boot test it.
Thanks for the feedback, can you let me know if the recently posted v6 fits the bill?
Quoted 2 lines
cheers
Thanks,
Shea
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180401/26d89962/attachment.sig>
PATCH v4 15/16 sh: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/sh/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/sh/mm/init.c +0 -7
@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)
Signature · 1 line
2.16.2
PATCH v4 16/16 um: Use generic free_initrd_mem.
In reply to Shea Levy--- arch/um/kernel/mem.c | 7 ------- 1 file changed, 7 deletions(-)
arch/um/kernel/mem.c +0 -7
@@ -170,13 +170,6 @@ void free_initmem(void) { } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* Allocate and free page tables. */ pgd_t *pgd_alloc (struct mm_struct *mm)
Signature · 1 line
2.16.2
PATCH v5 1/16 initrd: Add weakly-linked generic free_initrd_mem.
In reply to Shea LevyThis function is effectively identical across 14 architectures, and the generic implementation is small enough to be negligible in the architectures that do override it. Many of the remaining divergent implementations can be included in the common code path in future, further reducing code duplication and sharing improvements between architectures.
v5: Add more complete commit messages.
v4: Use weak symbols instead of Kconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark generic free_initrd_mem __init.
--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)
init/initramfs.c +5 -0
@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE
Signature · 1 line
2.16.2
PATCH v5 2/16 riscv: Free initrds with generic free_initrd_mem.
Now that there is a generic implementation, riscv's noop stub can be removed.
--- arch/riscv/mm/init.c | 6 ------ 1 file changed, 6 deletions(-)
arch/riscv/mm/init.c +0 -6
@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
Signature · 1 line
2.16.2
PATCH v5 3/16 alpha: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/alpha/mm/init.c | 8 -------- 1 file changed, 8 deletions(-)
arch/alpha/mm/init.c +0 -8
@@ -291,11 +291,3 @@ free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void -free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v5 4/16 arc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/arc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/arc/mm/init.c +0 -7
@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v5 5/16 c6x: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/c6x/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/c6x/mm/init.c +0 -7
@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v5 6/16 frv: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/frv/mm/init.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/frv/mm/init.c +0 -11
@@ -131,14 +131,3 @@ void free_initmem(void)free_initmem_default (-1 );#endif }/* end free_initmem() */ - -/*****************************************************************************/ -/* -* free the initial ramdisk memory -*/ -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -}/* end free_initrd_mem() */ -#endif
Signature · 1 line
2.16.2
PATCH v5 7/16 h8300: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/h8300/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/h8300/mm/init.c +0 -7
@@ -102,13 +102,6 @@ void __init mem_init(void) } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {
Signature · 1 line
2.16.2
PATCH v5 8/16 m32r: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/m32r/mm/init.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/m32r/mm/init.c +0 -11
@@ -139,14 +139,3 @@ void free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -/*======================================================================* -* free_initrd_mem() : -* orig : arch/sh/mm/init.c -*======================================================================*/ -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v5 9/16 m68k: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/m68k/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/m68k/mm/init.c +0 -7
@@ -172,10 +172,3 @@ void __init mem_init(void)mem_init_print_info (NULL );print_memmap (); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v5 10/16 microblaze: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/microblaze/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/microblaze/mm/init.c +0 -7
@@ -187,13 +187,6 @@ void __init setup_memory(void)paging_init (); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v5 11/16 nios2: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/nios2/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/nios2/mm/init.c +0 -7
@@ -82,13 +82,6 @@ void __init mmu_init(void)flush_tlb_all (); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __ref free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v5 12/16 openrisc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/openrisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/openrisc/mm/init.c +0 -7
@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
Re: [PATCH v5 12/16] openrisc: Switch to generic free_initrd_mem.
Quoted 3 lines · Shea Levy
The generic implementation is functionally identical.
Signed-off-by Shea Levy <[email protected]>
Quoted 25 lines
--- arch/openrisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)arch/openrisc/mm/init.c +0
-7@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );Signature · 1 line
2.16.2
PATCH v5 13/16 parisc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/parisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/parisc/mm/init.c +0 -7
@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v5 14/16 powerpc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/powerpc/mm/mem.c | 7 ------- 1 file changed, 7 deletions(-)
arch/powerpc/mm/mem.c +0 -7
@@ -404,13 +404,6 @@ void free_initmem(void)free_initmem_default (POISON_FREE_INITMEM ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* * This is called when a page has been modified by the kernel. * It just marks the page as not i-cache clean. We do the i-cache
Signature · 1 line
2.16.2
PATCH v5 15/16 sh: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/sh/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/sh/mm/init.c +0 -7
@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)
Signature · 1 line
2.16.2
Re: [PATCH v5 15/16] sh: Switch to generic free_initrd_mem.
Quoted 27 lines · Shea Levy
The generic implementation is functionally identical.
Signed-off-by Shea Levy <[email protected]>--- arch/sh/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)arch/sh/mm/init.c +0
-7@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)Signature · 1 line
2.16.2
LGTM.
PATCH v5 16/16 um: Switch to generic free_initrd_mem.
In reply to Shea LevyThe generic implementation is functionally identical.
--- arch/um/kernel/mem.c | 7 ------- 1 file changed, 7 deletions(-)
arch/um/kernel/mem.c +0 -7
@@ -170,13 +170,6 @@ void free_initmem(void) { } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* Allocate and free page tables. */ pgd_t *pgd_alloc (struct mm_struct *mm)
Signature · 1 line
2.16.2
PATCH v6 1/16 initrd: Add weakly-linked generic free_initrd_mem.
In reply to Shea LevyThis function is effectively identical across 14 architectures, and the generic implementation is small enough to be negligible in the architectures that do override it. Many of the remaining divergent implementations can be included in the common code path in future, further reducing code duplication and sharing improvements between architectures.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
v6: Add information about build/run testing.
v5: Add more complete commit messages.
v4: Use weak symbols instead of Kconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark generic free_initrd_mem __init.
--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)
init/initramfs.c +5 -0
@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE
Signature · 1 line
2.16.2
PATCH v6 2/16 riscv: Free initrds with generic free_initrd_mem.
The first patch in this series added a weakly-defined generic implementation, which works on RISC-V.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/riscv/mm/init.c | 6 ------ 1 file changed, 6 deletions(-)
arch/riscv/mm/init.c +0 -6
@@ -62,9 +62,3 @@ void free_initmem(void) {free_initmem_default (0 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -} -#endif /* CONFIG_BLK_DEV_INITRD */
Signature · 1 line
2.16.2
PATCH v6 3/16 alpha: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/alpha/mm/init.c | 8 -------- 1 file changed, 8 deletions(-)
arch/alpha/mm/init.c +0 -8
@@ -291,11 +291,3 @@ free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void -free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v6 4/16 arc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/arc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/arc/mm/init.c +0 -7
@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
Re: [PATCH v6 04/16] arc: Switch to generic free_initrd_mem.
Hi Shea,
Quoted 8 lines · Shea Levy
The first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).Signed-off-by Shea Levy <[email protected]>
Boot-tested on ARC, thus...
-Alexey
P.S. Note Vineet is out this week so please wait for him to return next week to ack your patch.
Re: [PATCH v6 04/16] arc: Switch to generic free_initrd_mem.
In reply to Shea LevyQuoted 17 lines · Shea Levy
The first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).Signed-off-by Shea Levy <[email protected]>--- arch/arc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)arch/arc/mm/init.c +0
-0
arch/arc/mm/init.c void __ref free_initmem(void) · line 238
Quoted 10 lines
arch/arc/mm/init.c +0
-7@@ -229,10 +229,3 @@ void __ref free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
LGTM.
-Vineet
PATCH v6 5/16 c6x: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/c6x/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/c6x/mm/init.c +0 -7
@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
Re: [PATCH v6 05/16] c6x: Switch to generic free_initrd_mem.
Quoted 20 lines · Shea Levy
The first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).Signed-off-by Shea Levy <[email protected]>--- arch/c6x/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)arch/c6x/mm/init.c +0
-0@@ -66,13 +66,6 @@ void __init mem_init(void)mem_init_print_info (NULL ); }
arch/c6x/mm/init.c void __init mem_init(void) · line 71
Quoted 10 lines
arch/c6x/mm/init.c +0
-7-#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __init free_initmem (void ) {free_initmem_default (-1 );
PATCH v6 6/16 frv: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/frv/mm/init.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/frv/mm/init.c +0 -11
@@ -131,14 +131,3 @@ void free_initmem(void)free_initmem_default (-1 );#endif }/* end free_initmem() */ - -/*****************************************************************************/ -/* -* free the initial ramdisk memory -*/ -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -}/* end free_initrd_mem() */ -#endif
Signature · 1 line
2.16.2
PATCH v6 7/16 h8300: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/h8300/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/h8300/mm/init.c +0 -7
@@ -102,13 +102,6 @@ void __init mem_init(void) } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {
Signature · 1 line
2.16.2
PATCH v6 8/16 m32r: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/m32r/mm/init.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/m32r/mm/init.c +0 -11
@@ -139,14 +139,3 @@ void free_initmem(void) {free_initmem_default (-1 ); } - -#ifdef CONFIG_BLK_DEV_INITRD -/*======================================================================* -* free_initrd_mem() : -* orig : arch/sh/mm/init.c -*======================================================================*/ -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v6 9/16 m68k: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/m68k/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/m68k/mm/init.c +0 -7
@@ -172,10 +172,3 @@ void __init mem_init(void)mem_init_print_info (NULL );print_memmap (); } - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
PATCH v6 10/16 microblaze: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/microblaze/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/microblaze/mm/init.c +0 -7
@@ -187,13 +187,6 @@ void __init setup_memory(void)paging_init (); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v6 11/16 nios2: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/nios2/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/nios2/mm/init.c +0 -7
@@ -82,13 +82,6 @@ void __init mmu_init(void)flush_tlb_all (); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void __ref free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
Re: [PATCH v6 11/16] nios2: Switch to generic free_initrd_mem.
Quoted 8 lines · Shea Levy
The first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).Signed-off-by Shea Levy <[email protected]>
Quoted 24 lines
---
arch/nios2/mm/init.c | 7 -------1 file changed, 7 deletions(-)arch/nios2/mm/init.c +0
-8@@ -82,13 +82,6 @@ void __init mmu_init(void) flush_tlb_all(); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ - free_reserved_area((void *)start, (void *)end, -1, "initrd"); -} -#endif - void __ref free_initmem(void) { free_initmem_default(-1); --2.16.2
PATCH v6 12/16 openrisc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/openrisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/openrisc/mm/init.c +0 -7
@@ -222,13 +222,6 @@ void __init mem_init(void)return ; } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -void free_initmem (void ) {free_initmem_default (-1 );
Signature · 1 line
2.16.2
PATCH v6 13/16 parisc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/parisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/parisc/mm/init.c +0 -7
@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
Signature · 1 line
2.16.2
Re: [PATCH v6 13/16] parisc: Switch to generic free_initrd_mem.
Quoted 8 lines · Shea Levy
The first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).Signed-off-by Shea Levy <[email protected]>
Quoted 20 lines
--- arch/parisc/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)arch/parisc/mm/init.c +0
-7@@ -932,10 +932,3 @@ void flush_tlb_all(void) spin_unlock(&sid_lock); }#endif - -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif
PATCH v6 14/16 powerpc: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/powerpc/mm/mem.c | 7 ------- 1 file changed, 7 deletions(-)
arch/powerpc/mm/mem.c +0 -7
@@ -404,13 +404,6 @@ void free_initmem(void)free_initmem_default (POISON_FREE_INITMEM ); } -#ifdef CONFIG_BLK_DEV_INITRD -void __init free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* * This is called when a page has been modified by the kernel. * It just marks the page as not i-cache clean. We do the i-cache
Signature · 1 line
2.16.2
PATCH v6 15/16 sh: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/sh/mm/init.c | 7 ------- 1 file changed, 7 deletions(-)
arch/sh/mm/init.c +0 -7
@@ -477,13 +477,6 @@ void free_initmem(void)free_initmem_default (-1 ); } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -#ifdef CONFIG_MEMORY_HOTPLUG int arch_add_memory (int nid,u64 start,u64 size,struct vmem_altmap *altmap,bool want_memblock)
Signature · 1 line
2.16.2
PATCH v6 16/16 um: Switch to generic free_initrd_mem.
In reply to Shea LevyThe first patch in this series added a weakly-defined generic implementation, which is functionally identical to the architecture-specific one removed here.
Series boot-tested on RISC-V (which now uses the generic implementation) and x86_64 (which doesn't).
--- arch/um/kernel/mem.c | 7 ------- 1 file changed, 7 deletions(-)
arch/um/kernel/mem.c +0 -7
@@ -170,13 +170,6 @@ void free_initmem(void) { } -#ifdef CONFIG_BLK_DEV_INITRD -void free_initrd_mem (unsigned long start,unsigned long end) -{ -free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); -} -#endif -/* Allocate and free page tables. */ pgd_t *pgd_alloc (struct mm_struct *mm)
Signature · 1 line
2.16.2
Re: [PATCH v6 01/16] initrd: Add weakly-linked generic free_initrd_mem.
In reply to Shea LevyHi all,
Quoted 39 lines · Shea Levy
This function is effectively identical across 14 architectures, and the generic implementation is small enough to be negligible in the architectures that do override it. Many of the remaining divergent implementations can be included in the common code path in future, further reducing code duplication and sharing improvements between architectures.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).v6: Add information about build/run testing.
v5: Add more complete commit messages.
v4: Use weak symbols instead ofKconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark genericfree_initrd_mem__init.Signed-off-by Shea Levy <[email protected]>--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)init/initramfs.c +5
-0@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> +void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE Signature · 1 line
2.16.2
This series has been quiet for a few weeks other than picking up some arch-specific acks. What is the next step here?
Thanks,
Shea
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180418/f55e9ac1/attachment.sig>
Re: [PATCH v6 01/16] initrd: Add weakly-linked generic free_initrd_mem.
Quoted 33 lines · shea at shealevy.com
Hi all,
Quoted 29 lines · Shea Levy
This function is effectively identical across 14 architectures, and the generic implementation is small enough to be negligible in the architectures that do override it. Many of the remaining divergent implementations can be included in the common code path in future, further reducing code duplication and sharing improvements between architectures.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).v6: Add information about build/run testing.
v5: Add more complete commit messages.
v4: Use weak symbols instead ofKconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark genericfree_initrd_mem__init.Signed-off-by Shea Levy <[email protected]>--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)init/initramfs.c +0
-0@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h>
Quoted 13 lines
Quoted 10 lines
init/initramfs.c +5
-0+void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE Signature · 1 line
2.16.2This series has been quiet for a few weeks other than picking up some arch-specific acks. What is the next step here?
I'm not sure. I don't really think it's sane for the RISC-V tree because it touches so many architectures -- I haven't looked closely, though. IIRC there's a slight behavior change to the RISC-V port, which I'd be OK taking through my tree (and then obviously the RISC-V cleanup as well, unless it goes in as a whole patch set).
For the IRQ cleanup I currently have in flight
* Add the generic support
* Move every arch over (RISC-V is in, the rest aren't yet)
* Clean up a bit now that everyone is generic
That lets all the arch-specific patches go in parallel, but can be a bit of a headache to manage.
I'm adding Arnd and Olof, as they know a lot more about Linux than I do. Here's the top-level of the v4 patch set: https://lkml.org/lkml/2018/3/28/744
Re: [PATCH v6 01/16] initrd: Add weakly-linked generic free_initrd_mem.
Hi Palmer,
Quoted 48 lines · Palmer Dabbelt
Quoted 33 lines · shea at shealevy.com
Hi all,
Quoted 29 lines · Shea Levy
This function is effectively identical across 14 architectures, and the generic implementation is small enough to be negligible in the architectures that do override it. Many of the remaining divergent implementations can be included in the common code path in future, further reducing code duplication and sharing improvements between architectures.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).v6: Add information about build/run testing.
v5: Add more complete commit messages.
v4: Use weak symbols instead ofKconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark genericfree_initrd_mem__init.Signed-off-by Shea Levy <[email protected]>--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)init/initramfs.c +0
-0@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> Quoted 13 lines
Quoted 10 lines
init/initramfs.c +5
-0+void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE Signature · 1 line
2.16.2This series has been quiet for a few weeks other than picking up some arch-specific acks. What is the next step here?
Quoted 2 lines
I'm not sure. I don't really think it's sane for the RISC-V tree because it touches so many architectures -- I haven't looked closely, though.
Yeah, I think that makes sense.
Quoted 5 lines
IIRC
there's a slight behavior change to the RISC-V port, which I'd be OK taking through my tree (and then obviously the RISC-V cleanup as well, unless it goes in as a whole patch set).
So currently the behavior for RISC-V is changed by simply deleting the arch-specific free_initrd_mem, which was a noop. Would you like me to first submit a patch to have the arch-specific free_initrd_mem and then change that in this series?
Quoted 9 lines
For the IRQ cleanup I currently have in flight
* Add the generic support
* Move every arch over (RISC-V is in, the rest aren't yet)
* Clean up a bit now that everyone is genericThat lets all the arch-specific patches go in parallel, but can be a bit of a headache to manage.
With the current series, the first patch could go in on its own and all of the arch-specific patches can go in in parallel if we wanted to, but beyond the above-suggested implementation of the RISC-V free_initrd_mem there's no real reordering meaningful here.
Quoted 3 lines
I'm adding Arnd and Olof, as they know a lot more about Linux than I do. Here's the top-level of the v4 patch set: https://lkml.org/lkml/2018/3/28/744
And here's the top-level of v6, the latest: https://lkml.org/lkml/2018/4/1/50
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180420/c24e9473/attachment.sig>
Re: [PATCH v6 01/16] initrd: Add weakly-linked generic free_initrd_mem.
Hi all,
Quoted 84 lines · Shea Levy
Hi Palmer,
Quoted 48 lines · Palmer Dabbelt
Quoted 33 lines · shea at shealevy.com
Hi all,
Quoted 29 lines · Shea Levy
This function is effectively identical across 14 architectures, and the generic implementation is small enough to be negligible in the architectures that do override it. Many of the remaining divergent implementations can be included in the common code path in future, further reducing code duplication and sharing improvements between architectures.
Series boot-tested on RISC-V (which now uses the generic implementation) and
x86_64(which doesn't).v6: Add information about build/run testing.
v5: Add more complete commit messages.
v4: Use weak symbols instead ofKconfig.
v3: Make the generic path opt-out instead of opt-in.
v2: Mark genericfree_initrd_mem__init.Signed-off-by Shea Levy <[email protected]>--- init/initramfs.c | 5 +++++ 1 file changed, 5 insertions(+)init/initramfs.c +0
-0@@ -526,6 +526,11 @@ extern unsigned long __initramfs_size;#include <linux/initrd.h> #include <linux/kexec.h> Quoted 13 lines
Quoted 10 lines
init/initramfs.c +5
-0+void __init __weak free_initrd_mem (unsigned long start,unsigned long end) +{ +free_reserved_area ((void *)start, (void *)end,-1 ,"initrd" ); +} +static void __init free_initrd (void ) {#ifdef CONFIG_KEXEC_CORE Signature · 1 line
2.16.2This series has been quiet for a few weeks other than picking up some arch-specific acks. What is the next step here?
Quoted 2 lines
I'm not sure. I don't really think it's sane for the RISC-V tree because it touches so many architectures -- I haven't looked closely, though.
Yeah, I think that makes sense.
Quoted 5 lines
IIRC
there's a slight behavior change to the RISC-V port, which I'd be OK taking through my tree (and then obviously the RISC-V cleanup as well, unless it goes in as a whole patch set).So currently the behavior for RISC-V is changed by simply deleting the arch-specific
free_initrd_mem, which was a noop. Would you like me to first submit a patch to have the arch-specificfree_initrd_memand then change that in this series?Quoted 9 lines
For the IRQ cleanup I currently have in flight
* Add the generic support
* Move every arch over (RISC-V is in, the rest aren't yet)
* Clean up a bit now that everyone is genericThat lets all the arch-specific patches go in parallel, but can be a bit of a headache to manage.
With the current series, the first patch could go in on its own and all of the arch-specific patches can go in in parallel if we wanted to, but beyond the above-suggested implementation of the RISC-V
free_initrd_memthere's no real reordering meaningful here.Quoted 1 line
Quoted 4 lines
Quoted 2 lines
I'm adding Arnd and Olof, as they know a lot more about Linux than I do. Here's the top-level of the v4 patch set: https://lkml.org/lkml/2018/3/28/744
And here's the top-level of v6, the latest: https://lkml.org/lkml/2018/4/1/50
What's the right next step here?
Thanks,
Shea
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20180509/a0cb5cad/attachment.sig>
kbuild test robot
build botRe: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Shea LevyThank you for the patch! Perhaps something to improve:
Hi Shea,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v4.16-rc7]
[cannot apply to next-20180329]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Shea-Levy/Extract-initrd-free-logic-from-arch-specific-code/20180330-085507
config: ia64-allnoconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=ia64
All warnings (new ones prefixed by >>):
warning: (IA64) selects HAVE_ARCH_FREE_INITRD_MEM which has unmet direct dependencies (BLK_DEV_INITRD)
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
_______________________________________________
linux-snps-arc mailing list [email protected]
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
kbuild test robot
build botRe: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Shea LevyThank you for the patch! Perhaps something to improve:
Hi Shea,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v4.16-rc7]
[cannot apply to next-20180329]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Shea-Levy/Extract-initrd-free-logic-from-arch-specific-code/20180330-085507
config: m32r-m32104ut_defconfig (attached as .config)
compiler: m32r-linux-gcc (GCC) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=m32r
All warnings (new ones prefixed by >>):
warning: (M32R) selects HAVE_ARCH_FREE_INITRD_MEM which has unmet direct dependencies (BLK_DEV_INITRD)
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
_______________________________________________
linux-snps-arc mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
Re: [PATCH] Extract initrd free logic from arch-specific code.
In reply to Shea LevyQuoted 4 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem.Signed-off-by Shea Levy <[email protected]>
Please put the Kconfig symbol name this patch introduces both into the title, so that people know what to grep for.
Quoted 28 lines
--- arch/alpha/mm/init.c | 8 -------- arch/arc/mm/init.c | 7 ------- arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/blackfin/Kconfig | 1 + arch/c6x/mm/init.c | 7 ------- arch/cris/Kconfig | 1 + arch/frv/mm/init.c | 11 ----------- arch/h8300/mm/init.c | 7 ------- arch/hexagon/Kconfig | 1 + arch/ia64/Kconfig | 1 + arch/m32r/Kconfig | 1 + arch/m32r/mm/init.c | 11 ----------- arch/m68k/mm/init.c | 7 ------- arch/metag/Kconfig | 1 + arch/microblaze/mm/init.c | 7 ------- arch/mips/Kconfig | 1 + arch/mn10300/Kconfig | 1 + arch/nios2/mm/init.c | 7 ------- arch/openrisc/mm/init.c | 7 ------- arch/parisc/mm/init.c | 7 ------- arch/powerpc/mm/mem.c | 7 ------- arch/riscv/mm/init.c | 6 ------ arch/s390/Kconfig | 1 + arch/score/Kconfig | 1 + arch/sh/mm/init.c | 7 ------- arch/sparc/Kconfig | 1 +
Quoted 8 lines
arch/tile/Kconfig | 1 + arch/um/kernel/mem.c | 7 ------- arch/unicore32/Kconfig | 1 + arch/x86/Kconfig | 1 + arch/xtensa/Kconfig | 1 + init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 34 files changed, 28 insertions(+), 113 deletions(-)
Please also put it into Documentation/features/.
usr/Kconfig config INITRAMFS_COMPRESSION · line 239
Quoted 12 lines
usr/Kconfig +4
-0@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +config HAVE_ARCH_FREE_INITRD_MEM + bool + default n
Help text would be nice, to tell arch maintainers what the purpose of this switch is.
Also, a nit, I think this should be named "ARCH_HAS_FREE_INITRD_MEM", which is the dominant pattern:
triton:~/tip> git grep 'select.*ARCH' arch/x86/Kconfig* | cut -f2 | cut -d_ -f1-2 | sort | uniq -c | sort -n
...
2 select ARCH_USES
2 select ARCH_WANTS
3 select ARCH_MIGHT
3 select ARCH_WANT
4 select ARCH_SUPPORTS
4 select ARCH_USE
16 select HAVE_ARCH
23 select ARCH_HAS
It also reads nicely in English:
"arch has free_initrd_mem()"
While the other makes little sense:
"have arch free_initrd_mem()"
?
Thanks,
Ingo
Re: [PATCH] Extract initrd free logic from arch-specific code.
Hi Ingo,
Quoted 47 lines · Ingo Molnar
Quoted 4 lines · Shea Levy
Now only those architectures that have custom initrd free requirements need to define
free_initrd_mem.Signed-off-by Shea Levy <[email protected]>Please put the
Kconfigsymbol name this patch introduces both into the title, so that people know what to grep for.Quoted 28 lines
--- arch/alpha/mm/init.c | 8 -------- arch/arc/mm/init.c | 7 ------- arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/blackfin/Kconfig | 1 + arch/c6x/mm/init.c | 7 ------- arch/cris/Kconfig | 1 + arch/frv/mm/init.c | 11 ----------- arch/h8300/mm/init.c | 7 ------- arch/hexagon/Kconfig | 1 + arch/ia64/Kconfig | 1 + arch/m32r/Kconfig | 1 + arch/m32r/mm/init.c | 11 ----------- arch/m68k/mm/init.c | 7 ------- arch/metag/Kconfig | 1 + arch/microblaze/mm/init.c | 7 ------- arch/mips/Kconfig | 1 + arch/mn10300/Kconfig | 1 + arch/nios2/mm/init.c | 7 ------- arch/openrisc/mm/init.c | 7 ------- arch/parisc/mm/init.c | 7 ------- arch/powerpc/mm/mem.c | 7 ------- arch/riscv/mm/init.c | 6 ------ arch/s390/Kconfig | 1 + arch/score/Kconfig | 1 + arch/sh/mm/init.c | 7 ------- arch/sparc/Kconfig | 1 +Quoted 8 lines
arch/tile/Kconfig | 1 + arch/um/kernel/mem.c | 7 ------- arch/unicore32/Kconfig | 1 + arch/x86/Kconfig | 1 + arch/xtensa/Kconfig | 1 + init/initramfs.c | 7 +++++++ usr/Kconfig | 4 ++++ 34 files changed, 28 insertions(+), 113 deletions(-)
Quoted 2 lines
Please also put it into
Documentation/features/.
I switched this patch series (the latest revision v6 was just posted) to using weak symbols instead of Kconfig. Does it still warrant documentation?
Quoted 37 lines
usr/Kconfig config INITRAMFS_COMPRESSION · line 239
Quoted 13 lines
usr/Kconfig +4
-0@@ -233,3 +233,7 @@ config INITRAMFS_COMPRESSION default ".lzma" if RD_LZMA default ".bz2" if RD_BZIP2 default "" + +config HAVE_ARCH_FREE_INITRD_MEM + bool + default nHelp text would be nice, to tell arch maintainers what the purpose of this switch is.
Also, a nit, I think this should be named "
ARCH_HAS_FREE_INITRD_MEM", which is the dominant pattern:triton:~/tip> git grep 'select.*ARCH'
arch/x86/Kconfig*| cut -f2 | cut -d_ -f1-2 | sort | uniq -c | sort -n
...
2 selectARCH_USES
2 selectARCH_WANTS
3 selectARCH_MIGHT
3 selectARCH_WANT
4 selectARCH_SUPPORTS
4 selectARCH_USE
16 selectHAVE_ARCH
23 selectARCH_HASIt also reads nicely in English:
"arch has
free_initrd_mem()"While the other makes little sense:
Quoted 7 lines
"have arch
free_initrd_mem()"?
Thanks,
Ingo
Thanks,
Shea
_______________________________________________
linux-snps-arc mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
Re: [PATCH] Extract initrd free logic from arch-specific code.
Quoted 4 lines · Shea Levy
Quoted 1 line
Please also put it into
Documentation/features/.I switched this patch series (the latest revision v6 was just posted) to using weak symbols instead of
Kconfig. Does it still warrant documentation?
Probably not.
Thanks,
Ingo