Hi, > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org] > On Behalf Of Rui Salvaterra > Sent: Sonntag, 3. Januar 2021 01:33 > To: openwrt-devel@lists.openwrt.org > Cc: ha...@hauke-m.de; dan...@makrotopia.org; Rui Salvaterra > <rsalvate...@gmail.com> > Subject: [PATCH] kernel/pending-5.4: enable DCDE for x86(-64) > > Port and adapt Nick Piggin's original patch [1]. This enables dead code and > data elimination at linking time (gc-sections) on x86(-64).
Shouldn't it be in target/linux/x86 then? Best Adrian > > openwrt-x86-64-generic-kernel.bin size, with my config: > > Before: 3138048 bytes > After: 2937344 bytes > > In other words, we save about 100 kB. > > [1] https://lore.kernel.org/lkml/20170709031333.29443-1- > npig...@gmail.com/ > > Signed-off-by: Rui Salvaterra <rsalvate...@gmail.com> > --- > ...nable-dead-code-and-data-elimination.patch | 127 > ++++++++++++++++++ > 1 file changed, 127 insertions(+) > create mode 100644 target/linux/generic/pending-5.4/350-x86-enable- > dead-code-and-data-elimination.patch > > diff --git a/target/linux/generic/pending-5.4/350-x86-enable-dead-code- > and-data-elimination.patch b/target/linux/generic/pending-5.4/350-x86- > enable-dead-code-and-data-elimination.patch > new file mode 100644 > index 0000000000..392ddd71ce > --- /dev/null > +++ b/target/linux/generic/pending-5.4/350-x86-enable-dead-code-and- > data > +++ -elimination.patch > @@ -0,0 +1,127 @@ > +From f08a0e4e59f92b4a88501653761cbca08935b9b6 Mon Sep 17 00:00:00 > 2001 > +From: Rui Salvaterra <rsalvate...@gmail.com> > +Date: Wed, 4 Nov 2020 19:45:04 +0000 > +Subject: [PATCH] x86: enable dead code and data elimination > + > +Adapt Nick Piggin's original patch [1]. This saves nearly 300 kiB on > +the final vmlinuz (zstd-compressed). > + > +[1] > +https://lore.kernel.org/lkml/20170709031333.29443-1-npig...@gmail.com/ > + > +Signed-off-by: Rui Salvaterra <rsalvate...@gmail.com> > +--- > + arch/x86/Kconfig | 1 + > + arch/x86/kernel/vmlinux.lds.S | 24 ++++++++++++------------ > + 2 files changed, 13 insertions(+), 12 deletions(-) > + > +--- a/arch/x86/Kconfig > ++++ b/arch/x86/Kconfig > +@@ -184,6 +184,7 @@ config X86 > + select HAVE_FUNCTION_ERROR_INJECTION > + select HAVE_KRETPROBES > + select HAVE_KVM > ++ select HAVE_LD_DEAD_CODE_DATA_ELIMINATION > + select HAVE_LIVEPATCH if X86_64 > + select HAVE_MEMBLOCK_NODE_MAP > + select HAVE_MIXED_BREAKPOINTS_REGS > +--- a/arch/x86/kernel/vmlinux.lds.S > ++++ b/arch/x86/kernel/vmlinux.lds.S > +@@ -242,14 +242,14 @@ SECTIONS > + * See static_cpu_has() for an example. > + */ > + .altinstr_aux : AT(ADDR(.altinstr_aux) - LOAD_OFFSET) { > +- *(.altinstr_aux) > ++ KEEP(*(.altinstr_aux)) > + } > + > + INIT_DATA_SECTION(16) > + > + .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { > + __x86_cpu_dev_start = .; > +- *(.x86_cpu_dev.init) > ++ KEEP(*(.x86_cpu_dev.init)) > + __x86_cpu_dev_end = .; > + } > + > +@@ -257,7 +257,7 @@ SECTIONS > + .x86_intel_mid_dev.init : AT(ADDR(.x86_intel_mid_dev.init) - \ > + LOAD_OFFSET) > { > + __x86_intel_mid_dev_start = .; > +- *(.x86_intel_mid_dev.init) > ++ KEEP(*(.x86_intel_mid_dev.init)) > + __x86_intel_mid_dev_end = .; > + } > + #endif > +@@ -271,7 +271,7 @@ SECTIONS > + . = ALIGN(8); > + .parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) { > + __parainstructions = .; > +- *(.parainstructions) > ++ KEEP(*(.parainstructions)) > + __parainstructions_end = .; > + } > + > +@@ -283,7 +283,7 @@ SECTIONS > + . = ALIGN(8); > + .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) { > + __alt_instructions = .; > +- *(.altinstructions) > ++ KEEP(*(.altinstructions)) > + __alt_instructions_end = .; > + } > + > +@@ -293,7 +293,7 @@ SECTIONS > + * get the address and the length of them to patch the kernel safely. > + */ > + .altinstr_replacement : AT(ADDR(.altinstr_replacement) - > LOAD_OFFSET) { > +- *(.altinstr_replacement) > ++ KEEP(*(.altinstr_replacement)) > + } > + > + /* > +@@ -304,14 +304,14 @@ SECTIONS > + */ > + .iommu_table : AT(ADDR(.iommu_table) - LOAD_OFFSET) { > + __iommu_table = .; > +- *(.iommu_table) > ++ KEEP(*(.iommu_table)) > + __iommu_table_end = .; > + } > + > + . = ALIGN(8); > + .apicdrivers : AT(ADDR(.apicdrivers) - LOAD_OFFSET) { > + __apicdrivers = .; > +- *(.apicdrivers); > ++ KEEP(*(.apicdrivers)) > + __apicdrivers_end = .; > + } > + > +@@ -346,7 +346,7 @@ SECTIONS > + . = ALIGN(PAGE_SIZE); > + .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { > + __smp_locks = .; > +- *(.smp_locks) > ++ KEEP(*(.smp_locks)) > + . = ALIGN(PAGE_SIZE); > + __smp_locks_end = .; > + } > +@@ -380,8 +380,8 @@ SECTIONS > + . = ALIGN(PAGE_SIZE); > + .brk : AT(ADDR(.brk) - LOAD_OFFSET) { > + __brk_base = .; > +- . += 64 * 1024; /* 64k alignment slop space */ > +- *(.brk_reservation) /* areas brk users have reserved */ > ++ . += 64 * 1024; /* 64k alignment slop space */ > ++ KEEP(*(.brk_reservation)) /* areas brk users have > reserved */ > + __brk_limit = .; > + } > + > +@@ -407,7 +407,7 @@ SECTIONS > + . = ALIGN(HPAGE_SIZE); > + .init.scratch : AT(ADDR(.init.scratch) - LOAD_OFFSET) { > + __init_scratch_begin = .; > +- *(.init.scratch) > ++ KEEP(*(.init.scratch)) > + . = ALIGN(HPAGE_SIZE); > + __init_scratch_end = .; > + } > -- > 2.30.0 > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
openpgp-digital-signature.asc
Description: PGP signature
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel