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

Attachment: openpgp-digital-signature.asc
Description: PGP signature

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to