Message ID | 20250122-strip_unneeded-v1-1-ac29a726cb41@rivosinc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | kbuild: Use --strip-unneeded with INSTALL_MOD_STRIP | expand |
On Wed, Jan 22, 2025 at 07:17:26PM -0800, Charlie Jenkins wrote: > On riscv, kernel modules end up with a significant number of local > symbols. This becomes apparent when compiling modules with debug symbols > enabled. Using amdgpu.ko as an example of a large module, on riscv the > size is 754MB (no stripping), 53MB (--strip-debug), and 21MB > (--strip-unneeded). ON x86, amdgpu.ko is 482MB (no stripping), 21MB > (--strip-debug), and 20MB (--strip-unneeded). > > Use --strip-unneeded instead of --strip-debug to strip modules so > decrease the size of the resulting modules. This is particularly > relevant for riscv, but also marginally aids other architectures. > > Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> Is there any sort of regression risk with this patch? If so, another option may be to give another level to INSTALL_MOD_STRIP like 2 so that INSTALL_MOD_STRIP=1 continues to behave as before but people can easily opt into this option. No strong opinion because I am not sure but was not sure if it was considered. Regardless: Reviewed-by: Nathan Chancellor <nathan@kernel.org> > --- > scripts/Makefile.modinst | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst > index f97c9926ed31b2b14601ff7773a2ea48b225628b..c22f35f6b9db3cac3923b9e787b219f752570642 100644 > --- a/scripts/Makefile.modinst > +++ b/scripts/Makefile.modinst > @@ -80,7 +80,7 @@ quiet_cmd_install = INSTALL $@ > ifdef INSTALL_MOD_STRIP > > ifeq ($(INSTALL_MOD_STRIP),1) > -strip-option := --strip-debug > +strip-option := --strip-unneeded > else > strip-option := $(INSTALL_MOD_STRIP) > endif > > --- > base-commit: ffd294d346d185b70e28b1a28abe367bbfe53c04 > change-id: 20250122-strip_unneeded-cab729310056 > -- > - Charlie >
On Thu, Jan 30, 2025 at 08:52:45PM -0700, Nathan Chancellor wrote: > On Wed, Jan 22, 2025 at 07:17:26PM -0800, Charlie Jenkins wrote: > > On riscv, kernel modules end up with a significant number of local > > symbols. This becomes apparent when compiling modules with debug symbols > > enabled. Using amdgpu.ko as an example of a large module, on riscv the > > size is 754MB (no stripping), 53MB (--strip-debug), and 21MB > > (--strip-unneeded). ON x86, amdgpu.ko is 482MB (no stripping), 21MB > > (--strip-debug), and 20MB (--strip-unneeded). > > > > Use --strip-unneeded instead of --strip-debug to strip modules so > > decrease the size of the resulting modules. This is particularly > > relevant for riscv, but also marginally aids other architectures. > > > > Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> > > Is there any sort of regression risk with this patch? If so, another > option may be to give another level to INSTALL_MOD_STRIP like 2 so that > INSTALL_MOD_STRIP=1 continues to behave as before but people can easily > opt into this option. No strong opinion because I am not sure but was > not sure if it was considered. I do not believe this would cause regressions. The description on gnu strip is: "Remove all symbols that are not needed for relocation processing in addition to debugging symbols and sections stripped by --strip-debug." The description on llvm-strip is: "Remove from the output all local or undefined symbols that are not required by relocations. Also remove all debug sections." gnu strip --strip-unneeded strips slightly more aggressively but it does not appear this causes any issues. > > Regardless: > > Reviewed-by: Nathan Chancellor <nathan@kernel.org> Thanks! - Charlie > > > --- > > scripts/Makefile.modinst | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst > > index f97c9926ed31b2b14601ff7773a2ea48b225628b..c22f35f6b9db3cac3923b9e787b219f752570642 100644 > > --- a/scripts/Makefile.modinst > > +++ b/scripts/Makefile.modinst > > @@ -80,7 +80,7 @@ quiet_cmd_install = INSTALL $@ > > ifdef INSTALL_MOD_STRIP > > > > ifeq ($(INSTALL_MOD_STRIP),1) > > -strip-option := --strip-debug > > +strip-option := --strip-unneeded > > else > > strip-option := $(INSTALL_MOD_STRIP) > > endif > > > > --- > > base-commit: ffd294d346d185b70e28b1a28abe367bbfe53c04 > > change-id: 20250122-strip_unneeded-cab729310056 > > -- > > - Charlie > >
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index f97c9926ed31b2b14601ff7773a2ea48b225628b..c22f35f6b9db3cac3923b9e787b219f752570642 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst @@ -80,7 +80,7 @@ quiet_cmd_install = INSTALL $@ ifdef INSTALL_MOD_STRIP ifeq ($(INSTALL_MOD_STRIP),1) -strip-option := --strip-debug +strip-option := --strip-unneeded else strip-option := $(INSTALL_MOD_STRIP) endif
On riscv, kernel modules end up with a significant number of local symbols. This becomes apparent when compiling modules with debug symbols enabled. Using amdgpu.ko as an example of a large module, on riscv the size is 754MB (no stripping), 53MB (--strip-debug), and 21MB (--strip-unneeded). ON x86, amdgpu.ko is 482MB (no stripping), 21MB (--strip-debug), and 20MB (--strip-unneeded). Use --strip-unneeded instead of --strip-debug to strip modules so decrease the size of the resulting modules. This is particularly relevant for riscv, but also marginally aids other architectures. Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> --- scripts/Makefile.modinst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: ffd294d346d185b70e28b1a28abe367bbfe53c04 change-id: 20250122-strip_unneeded-cab729310056