* [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install
@ 2021-03-31 13:38 Masahiro Yamada
2021-03-31 13:38 ` [PATCH 2/9] kbuild: unify modules(_install) for in-tree and external modules Masahiro Yamada
` (8 more replies)
0 siblings, 9 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
scripts/Makefile.modinst creates directories as needed.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 2 --
1 file changed, 2 deletions(-)
diff --git a/Makefile b/Makefile
index ed8bd815e8a3..0e06db5ed9d8 100644
--- a/Makefile
+++ b/Makefile
@@ -1779,10 +1779,8 @@ $(MODORDER): descend
PHONY += modules_install
modules_install: _emodinst_ _emodinst_post
-install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
PHONY += _emodinst_
_emodinst_:
- $(Q)mkdir -p $(MODLIB)/$(install-dir)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
PHONY += _emodinst_post
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/9] kbuild: unify modules(_install) for in-tree and external modules
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 13:38 ` [PATCH 3/9] kbuild: show the target directory for depmod log Masahiro Yamada
` (7 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
If you attempt to build/install modules ('make modules(_install)' with
CONFIG_MODULES disabled, you will get a clear error message, but nothing
for external module builds.
Factor out the modules and modules_install rules into the common part,
then you will get the same error message when you try to build external
modules with CONFIG_MODULES=n.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 85 ++++++++++++++++++++++++--------------------------------
1 file changed, 36 insertions(+), 49 deletions(-)
diff --git a/Makefile b/Makefile
index 0e06db5ed9d8..99a2bd51c02d 100644
--- a/Makefile
+++ b/Makefile
@@ -1458,7 +1458,6 @@ endif
PHONY += modules
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check modules_prepare
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
PHONY += modules_check
modules_check: modules.order
@@ -1476,12 +1475,9 @@ PHONY += modules_prepare
modules_prepare: prepare
$(Q)$(MAKE) $(build)=scripts scripts/module.lds
-# Target to install modules
-PHONY += modules_install
-modules_install: _modinst_ _modinst_post
-
-PHONY += _modinst_
-_modinst_:
+modules_install: __modinst_pre
+PHONY += __modinst_pre
+__modinst_pre:
@rm -rf $(MODLIB)/kernel
@rm -f $(MODLIB)/source
@mkdir -p $(MODLIB)/kernel
@@ -1493,14 +1489,6 @@ _modinst_:
@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
@cp -f modules.builtin $(MODLIB)/
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
-
-# This depmod is only for convenience to give the initial
-# boot a modules.dep even before / is mounted read-write. However the
-# boot script depmod is the master version.
-PHONY += _modinst_post
-_modinst_post: _modinst_
- $(call cmd,depmod)
ifeq ($(CONFIG_MODULE_SIG), y)
PHONY += modules_sign
@@ -1508,20 +1496,6 @@ modules_sign:
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modsign
endif
-else # CONFIG_MODULES
-
-# Modules not configured
-# ---------------------------------------------------------------------------
-
-PHONY += modules modules_install
-modules modules_install:
- @echo >&2
- @echo >&2 "The present kernel configuration has modules disabled."
- @echo >&2 "Type 'make config' and enable loadable module support."
- @echo >&2 "Then build a kernel with module support enabled."
- @echo >&2
- @exit 1
-
endif # CONFIG_MODULES
###
@@ -1769,24 +1743,9 @@ KBUILD_BUILTIN :=
KBUILD_MODULES := 1
build-dirs := $(KBUILD_EXTMOD)
-PHONY += modules
-modules: $(MODORDER)
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-
$(MODORDER): descend
@:
-PHONY += modules_install
-modules_install: _emodinst_ _emodinst_post
-
-PHONY += _emodinst_
-_emodinst_:
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
-
-PHONY += _emodinst_post
-_emodinst_post: _emodinst_
- $(call cmd,depmod)
-
compile_commands.json: $(extmod-prefix)compile_commands.json
PHONY += compile_commands.json
@@ -1809,6 +1768,39 @@ PHONY += prepare modules_prepare
endif # KBUILD_EXTMOD
+# ---------------------------------------------------------------------------
+# Modules
+
+PHONY += modules modules_install
+
+ifdef CONFIG_MODULES
+
+modules: $(MODORDER)
+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
+
+quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
+ cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
+ $(KERNELRELEASE)
+
+modules_install:
+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
+ $(call cmd,depmod)
+
+else # CONFIG_MODULES
+
+# Modules not configured
+# ---------------------------------------------------------------------------
+
+modules modules_install:
+ @echo >&2 '***'
+ @echo >&2 '*** The present kernel configuration has modules disabled.'
+ @echo >&2 '*** To use the module feature, please run "make menuconfig" etc.'
+ @echo >&2 '*** to enable CONFIG_MODULES.'
+ @echo >&2 '***'
+ @exit 1
+
+endif # CONFIG_MODULES
+
# Single targets
# ---------------------------------------------------------------------------
# To build individual files in subdirectories, you can do like this:
@@ -1997,11 +1989,6 @@ tools/%: FORCE
quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
cmd_rmfiles = rm -rf $(rm-files)
-# Run depmod only if we have System.map and depmod is executable
-quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
- cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
- $(KERNELRELEASE)
-
# read saved command lines for existing targets
existing-targets := $(wildcard $(sort $(targets)))
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/9] kbuild: show the target directory for depmod log
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
2021-03-31 13:38 ` [PATCH 2/9] kbuild: unify modules(_install) for in-tree and external modules Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 13:38 ` [PATCH 4/9] kbuild: check module name conflict for external modules as well Masahiro Yamada
` (6 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
It is clearer to show the directory which depmod will work on.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 99a2bd51c02d..a6f73335757d 100644
--- a/Makefile
+++ b/Makefile
@@ -1778,7 +1778,7 @@ ifdef CONFIG_MODULES
modules: $(MODORDER)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
+quiet_cmd_depmod = DEPMOD $(MODLIB)
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
$(KERNELRELEASE)
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/9] kbuild: check module name conflict for external modules as well
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
2021-03-31 13:38 ` [PATCH 2/9] kbuild: unify modules(_install) for in-tree and external modules Masahiro Yamada
2021-03-31 13:38 ` [PATCH 3/9] kbuild: show the target directory for depmod log Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 13:38 ` [PATCH 5/9] kbuild: rename extmod-prefix to extmod_prefix Masahiro Yamada
` (5 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
If there are multiple modules with the same name in the same external
module tree, there is ambiguity about which one will be loaded, and
very likely something odd is happening.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 10 +++++-----
scripts/modules-check.sh | 4 ++--
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/Makefile b/Makefile
index a6f73335757d..b5ff4753eba8 100644
--- a/Makefile
+++ b/Makefile
@@ -1459,10 +1459,6 @@ endif
PHONY += modules
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check modules_prepare
-PHONY += modules_check
-modules_check: modules.order
- $(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh $<
-
cmd_modules_order = $(AWK) '!x[$$0]++' $(real-prereqs) > $@
modules.order: $(subdir-modorder) FORCE
@@ -1775,9 +1771,13 @@ PHONY += modules modules_install
ifdef CONFIG_MODULES
-modules: $(MODORDER)
+modules: modules_check
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
+PHONY += modules_check
+modules_check: $(MODORDER)
+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh $<
+
quiet_cmd_depmod = DEPMOD $(MODLIB)
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
$(KERNELRELEASE)
diff --git a/scripts/modules-check.sh b/scripts/modules-check.sh
index 43de226071ae..e06327722263 100755
--- a/scripts/modules-check.sh
+++ b/scripts/modules-check.sh
@@ -13,10 +13,10 @@ exit_code=0
# Check uniqueness of module names
check_same_name_modules()
{
- for m in $(sed 's:.*/::' $1 | sort | uniq -d)
+ for m in $(sed 's:.*/::' "$1" | sort | uniq -d)
do
echo "error: the following would cause module name conflict:" >&2
- sed -n "/\/$m/s:^: :p" modules.order >&2
+ sed -n "/\/$m/s:^: :p" "$1" >&2
exit_code=1
done
}
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/9] kbuild: rename extmod-prefix to extmod_prefix
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
` (2 preceding siblings ...)
2021-03-31 13:38 ` [PATCH 4/9] kbuild: check module name conflict for external modules as well Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 17:54 ` Nick Desaulniers
2021-03-31 13:38 ` [PATCH 6/9] kbuild: refactor scripts/Makefile.modinst Masahiro Yamada
` (4 subsequent siblings)
8 siblings, 1 reply; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild
Cc: linux-kernel, Masahiro Yamada, Michal Marek, Nathan Chancellor,
Nick Desaulniers, clang-built-linux
This seems to be useful in sub-make as well. As a preparation of
exporting it, rename extmod-prefix to extmod_prefix because exported
variables cannot contain hyphens.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
index b5ff4753eba8..e3c2bd1b6f42 100644
--- a/Makefile
+++ b/Makefile
@@ -919,7 +919,7 @@ endif
ifdef CONFIG_LTO_CLANG
ifdef CONFIG_LTO_CLANG_THIN
CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit
-KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod-prefix).thinlto-cache
+KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod_prefix).thinlto-cache
else
CC_FLAGS_LTO := -flto
endif
@@ -1141,9 +1141,9 @@ endif # CONFIG_BPF
PHONY += prepare0
-extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
-export MODORDER := $(extmod-prefix)modules.order
-export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
+extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
+export MODORDER := $(extmod_prefix)modules.order
+export MODULES_NSDEPS := $(extmod_prefix)modules.nsdeps
ifeq ($(KBUILD_EXTMOD),)
core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
@@ -1742,7 +1742,7 @@ build-dirs := $(KBUILD_EXTMOD)
$(MODORDER): descend
@:
-compile_commands.json: $(extmod-prefix)compile_commands.json
+compile_commands.json: $(extmod_prefix)compile_commands.json
PHONY += compile_commands.json
clean-dirs := $(KBUILD_EXTMOD)
@@ -1832,12 +1832,12 @@ endif
PHONY += single_modpost
single_modpost: $(single-no-ko) modules_prepare
- $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
+ $(Q){ $(foreach m, $(single-ko), echo $(extmod_prefix)$m;) } > $(MODORDER)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
KBUILD_MODULES := 1
-export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
+export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod_prefix), $(single-no-ko))
# trim unrelated directories
build-dirs := $(foreach d, $(build-dirs), \
@@ -1906,12 +1906,12 @@ nsdeps: modules
quiet_cmd_gen_compile_commands = GEN $@
cmd_gen_compile_commands = $(PYTHON3) $< -a $(AR) -o $@ $(filter-out $<, $(real-prereqs))
-$(extmod-prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \
+$(extmod_prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \
$(if $(KBUILD_EXTMOD),,$(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)) \
$(if $(CONFIG_MODULES), $(MODORDER)) FORCE
$(call if_changed,gen_compile_commands)
-targets += $(extmod-prefix)compile_commands.json
+targets += $(extmod_prefix)compile_commands.json
PHONY += clang-tidy clang-analyzer
@@ -1919,7 +1919,7 @@ ifdef CONFIG_CC_IS_CLANG
quiet_cmd_clang_tools = CHECK $<
cmd_clang_tools = $(PYTHON3) $(srctree)/scripts/clang-tools/run-clang-tools.py $@ $<
-clang-tidy clang-analyzer: $(extmod-prefix)compile_commands.json
+clang-tidy clang-analyzer: $(extmod_prefix)compile_commands.json
$(call cmd,clang_tools)
else
clang-tidy clang-analyzer:
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 6/9] kbuild: refactor scripts/Makefile.modinst
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
` (3 preceding siblings ...)
2021-03-31 13:38 ` [PATCH 5/9] kbuild: rename extmod-prefix to extmod_prefix Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-05-12 14:23 ` Johannes Berg
2021-03-31 13:38 ` [PATCH 7/9] kbuild: move module strip/compression code into scripts/Makefile.modinst Masahiro Yamada
` (3 subsequent siblings)
8 siblings, 1 reply; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
scripts/Makefile.modinst is ugly and weird in multiple ways; it
specifies real files $(modules) as phony, makes directory manipulation
needlessly too complicated.
Clean up the Makefile code, and show the full path of installed modules
in the log.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 2 +-
scripts/Makefile.modinst | 42 +++++++++++++++++++++++-----------------
2 files changed, 25 insertions(+), 19 deletions(-)
diff --git a/Makefile b/Makefile
index e3c2bd1b6f42..88e5c15e1186 100644
--- a/Makefile
+++ b/Makefile
@@ -1141,7 +1141,7 @@ endif # CONFIG_BPF
PHONY += prepare0
-extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
+export extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
export MODORDER := $(extmod_prefix)modules.order
export MODULES_NSDEPS := $(extmod_prefix)modules.nsdeps
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
index ad1981233d0b..3b2d0380504d 100644
--- a/scripts/Makefile.modinst
+++ b/scripts/Makefile.modinst
@@ -8,28 +8,34 @@ __modinst:
include $(srctree)/scripts/Kbuild.include
-modules := $(sort $(shell cat $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order))
+modules := $(sort $(shell cat $(MODORDER)))
+
+ifeq ($(KBUILD_EXTMOD),)
+subdir := kernel
+else
+INSTALL_MOD_DIR ?= extra
+subdir := $(INSTALL_MOD_DIR)
+endif
+
+dst := $(MODLIB)/$(subdir)
+
+modules := $(patsubst $(extmod_prefix)%, $(dst)/%, $(modules))
-PHONY += $(modules)
__modinst: $(modules)
@:
# Don't stop modules_install if we can't sign external modules.
-quiet_cmd_modules_install = INSTALL $@
- cmd_modules_install = \
- mkdir -p $(2) ; \
- cp $@ $(2) ; \
- $(mod_strip_cmd) $(2)/$(notdir $@) ; \
- $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \
- $(mod_compress_cmd) $(2)/$(notdir $@)
-
-# Modules built outside the kernel source tree go into extra by default
-INSTALL_MOD_DIR ?= extra
-ext-mod-dir = $(INSTALL_MOD_DIR)$(subst $(patsubst %/,%,$(KBUILD_EXTMOD)),,$(@D))
-
-modinst_dir = $(if $(KBUILD_EXTMOD),$(ext-mod-dir),kernel/$(@D))
-
-$(modules):
- $(call cmd,modules_install,$(MODLIB)/$(modinst_dir))
+quiet_cmd_install = INSTALL $@
+ cmd_install = \
+ mkdir -p $(dir $@); cp $< $@; \
+ $(mod_strip_cmd) $@; \
+ $(mod_sign_cmd) $@ $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \
+ $(mod_compress_cmd) $@
+
+$(modules): $(dst)/%: $(extmod_prefix)% FORCE
+ $(call cmd,install)
+
+PHONY += FORCE
+FORCE:
.PHONY: $(PHONY)
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 7/9] kbuild: move module strip/compression code into scripts/Makefile.modinst
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
` (4 preceding siblings ...)
2021-03-31 13:38 ` [PATCH 6/9] kbuild: refactor scripts/Makefile.modinst Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 13:38 ` [PATCH 8/9] kbuild: merge scripts/Makefile.modsign to scripts/Makefile.modinst Masahiro Yamada
` (2 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
Both mod_strip_cmd and mod_compress_cmd are only used in
scripts/Makefile.modinst, hence there is no good reason to define them
in the top Makefile. Move the relevant code to scripts/Makefile.modinst.
Also, show separate log messages for each of install, strip, sign, and
compress.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 32 -----------------
scripts/Makefile.modinst | 76 +++++++++++++++++++++++++++++++++++-----
2 files changed, 68 insertions(+), 40 deletions(-)
diff --git a/Makefile b/Makefile
index 88e5c15e1186..f96ae09d111b 100644
--- a/Makefile
+++ b/Makefile
@@ -1063,38 +1063,6 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
export MODLIB
-#
-# INSTALL_MOD_STRIP, if defined, will cause modules to be
-# stripped after they are installed. If INSTALL_MOD_STRIP is '1', then
-# the default option --strip-debug will be used. Otherwise,
-# INSTALL_MOD_STRIP value will be used as the options to the strip command.
-
-ifdef INSTALL_MOD_STRIP
-ifeq ($(INSTALL_MOD_STRIP),1)
-mod_strip_cmd = $(STRIP) --strip-debug
-else
-mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP)
-endif # INSTALL_MOD_STRIP=1
-else
-mod_strip_cmd = true
-endif # INSTALL_MOD_STRIP
-export mod_strip_cmd
-
-# CONFIG_MODULE_COMPRESS, if defined, will cause module to be compressed
-# after they are installed in agreement with CONFIG_MODULE_COMPRESS_GZIP
-# or CONFIG_MODULE_COMPRESS_XZ.
-
-mod_compress_cmd = true
-ifdef CONFIG_MODULE_COMPRESS
- ifdef CONFIG_MODULE_COMPRESS_GZIP
- mod_compress_cmd = $(KGZIP) -n -f
- endif # CONFIG_MODULE_COMPRESS_GZIP
- ifdef CONFIG_MODULE_COMPRESS_XZ
- mod_compress_cmd = $(XZ) --lzma2=dict=2MiB -f
- endif # CONFIG_MODULE_COMPRESS_XZ
-endif # CONFIG_MODULE_COMPRESS
-export mod_compress_cmd
-
ifdef CONFIG_MODULE_SIG_ALL
$(eval $(call config_filename,MODULE_SIG_KEY))
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
index 3b2d0380504d..943806b0abb5 100644
--- a/scripts/Makefile.modinst
+++ b/scripts/Makefile.modinst
@@ -6,6 +6,7 @@
PHONY := __modinst
__modinst:
+include include/config/auto.conf
include $(srctree)/scripts/Kbuild.include
modules := $(sort $(shell cat $(MODORDER)))
@@ -19,21 +20,80 @@ endif
dst := $(MODLIB)/$(subdir)
-modules := $(patsubst $(extmod_prefix)%, $(dst)/%, $(modules))
+suffix-y :=
+suffix-$(CONFIG_MODULE_COMPRESS_GZIP) := .gz
+suffix-$(CONFIG_MODULE_COMPRESS_XZ) := .xz
+
+modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
__modinst: $(modules)
@:
-# Don't stop modules_install if we can't sign external modules.
+quiet_cmd_none =
+ cmd_none = :
+
+#
+# Installation
+#
quiet_cmd_install = INSTALL $@
- cmd_install = \
- mkdir -p $(dir $@); cp $< $@; \
- $(mod_strip_cmd) $@; \
- $(mod_sign_cmd) $@ $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \
- $(mod_compress_cmd) $@
+ cmd_install = mkdir -p $(dir $@); cp $< $@
+
+# Strip
+#
+# INSTALL_MOD_STRIP, if defined, will cause modules to be stripped after they
+# are installed. If INSTALL_MOD_STRIP is '1', then the default option
+# --strip-debug will be used. Otherwise, INSTALL_MOD_STRIP value will be used
+# as the options to the strip command.
+ifdef INSTALL_MOD_STRIP
+
+ifeq ($(INSTALL_MOD_STRIP),1)
+strip-option := --strip-debug
+else
+strip-option := $(INSTALL_MOD_STRIP)
+endif
+
+quiet_cmd_strip = STRIP $@
+ cmd_strip = $(STRIP) $(strip-option) $@
+
+else
-$(modules): $(dst)/%: $(extmod_prefix)% FORCE
+quiet_cmd_strip =
+ cmd_strip = :
+
+endif
+
+#
+# Signing
+# Don't stop modules_install even if we can't sign external modules.
+#
+ifeq ($(CONFIG_MODULE_SIG_ALL),y)
+quiet_cmd_sign = SIGN $@
+$(eval $(call config_filename,MODULE_SIG_KEY))
+ cmd_sign = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODULE_SIG_KEY_SRCPREFIX)$(CONFIG_MODULE_SIG_KEY) certs/signing_key.x509 $@ \
+ $(if $(KBUILD_EXTMOD),|| true)
+else
+quiet_cmd_sign :=
+ cmd_sign := :
+endif
+
+$(dst)/%.ko: $(extmod_prefix)%.ko FORCE
$(call cmd,install)
+ $(call cmd,strip)
+ $(call cmd,sign)
+
+#
+# Compression
+#
+quiet_cmd_gzip = GZIP $@
+ cmd_gzip = $(KGZIP) -n -f $<
+quiet_cmd_xz = XZ $@
+ cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
+
+$(dst)/%.ko.gz: $(dst)/%.ko FORCE
+ $(call cmd,gzip)
+
+$(dst)/%.ko.xz: $(dst)/%.ko FORCE
+ $(call cmd,xz)
PHONY += FORCE
FORCE:
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 8/9] kbuild: merge scripts/Makefile.modsign to scripts/Makefile.modinst
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
` (5 preceding siblings ...)
2021-03-31 13:38 ` [PATCH 7/9] kbuild: move module strip/compression code into scripts/Makefile.modinst Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 13:38 ` [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS Masahiro Yamada
2021-04-07 14:30 ` [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
8 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Masahiro Yamada, Michal Marek
scripts/Makefile.modsign is a subset of scripts/Makefile.modinst,
and duplicates the code. Let's merge them.
By the way, you do not need to run 'make modules_sign' explicitly
because modules are signed as a part of 'make modules_install' when
CONFIG_MODULE_SIG_ALL=y. If CONFIG_MODULE_SIG_ALL=n, mod_sign_cmd is
set to 'true', so 'make modules_sign' is not functional.
In my understanding, the reason of still keeping this is to handle
corner cases like commit 64178cb62c32 ("builddeb: fix stripped module
signatures if CONFIG_DEBUG_INFO and CONFIG_MODULE_SIG_ALL are set").
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 36 ++++++++++++++++++++----------------
scripts/Makefile.modinst | 9 +++++++++
scripts/Makefile.modsign | 29 -----------------------------
3 files changed, 29 insertions(+), 45 deletions(-)
delete mode 100644 scripts/Makefile.modsign
diff --git a/Makefile b/Makefile
index f96ae09d111b..b14483742a67 100644
--- a/Makefile
+++ b/Makefile
@@ -1063,15 +1063,6 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
export MODLIB
-ifdef CONFIG_MODULE_SIG_ALL
-$(eval $(call config_filename,MODULE_SIG_KEY))
-
-mod_sign_cmd = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODULE_SIG_KEY_SRCPREFIX)$(CONFIG_MODULE_SIG_KEY) certs/signing_key.x509
-else
-mod_sign_cmd = true
-endif
-export mod_sign_cmd
-
HOST_LIBELF_LIBS = $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
has_libelf = $(call try-run,\
@@ -1439,7 +1430,26 @@ PHONY += modules_prepare
modules_prepare: prepare
$(Q)$(MAKE) $(build)=scripts scripts/module.lds
-modules_install: __modinst_pre
+export modules_sign_only :=
+
+ifeq ($(CONFIG_MODULE_SIG),y)
+PHONY += modules_sign
+modules_sign: modules_install
+ @:
+
+# modules_sign is a subset of modules_install.
+# 'make modules_install modules_sign' is equivalent to 'make modules_install'.
+ifeq ($(filter modules_install,$(MAKECMDGOALS)),)
+modules_sign_only := y
+endif
+endif
+
+modinst_pre :=
+ifneq ($(filter modules_install,$(MAKECMDGOALS)),)
+modinst_pre := __modinst_pre
+endif
+
+modules_install: $(modinst_pre)
PHONY += __modinst_pre
__modinst_pre:
@rm -rf $(MODLIB)/kernel
@@ -1454,12 +1464,6 @@ __modinst_pre:
@cp -f modules.builtin $(MODLIB)/
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
-ifeq ($(CONFIG_MODULE_SIG), y)
-PHONY += modules_sign
-modules_sign:
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modsign
-endif
-
endif # CONFIG_MODULES
###
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
index 943806b0abb5..156eb8239abc 100644
--- a/scripts/Makefile.modinst
+++ b/scripts/Makefile.modinst
@@ -76,11 +76,20 @@ quiet_cmd_sign :=
cmd_sign := :
endif
+ifeq ($(modules_sign_only),)
+
$(dst)/%.ko: $(extmod_prefix)%.ko FORCE
$(call cmd,install)
$(call cmd,strip)
$(call cmd,sign)
+else
+
+$(dst)/%.ko: FORCE
+ $(call cmd,sign)
+
+endif
+
#
# Compression
#
diff --git a/scripts/Makefile.modsign b/scripts/Makefile.modsign
deleted file mode 100644
index ddf9b5ca77d7..000000000000
--- a/scripts/Makefile.modsign
+++ /dev/null
@@ -1,29 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# ==========================================================================
-# Signing modules
-# ==========================================================================
-
-PHONY := __modsign
-__modsign:
-
-include $(srctree)/scripts/Kbuild.include
-
-modules := $(sort $(shell cat modules.order))
-
-PHONY += $(modules)
-__modsign: $(modules)
- @:
-
-quiet_cmd_sign_ko = SIGN [M] $(2)/$(notdir $@)
- cmd_sign_ko = $(mod_sign_cmd) $(2)/$(notdir $@)
-
-# Modules built outside the kernel source tree go into extra by default
-INSTALL_MOD_DIR ?= extra
-ext-mod-dir = $(INSTALL_MOD_DIR)$(subst $(patsubst %/,%,$(KBUILD_EXTMOD)),,$(@D))
-
-modinst_dir = $(if $(KBUILD_EXTMOD),$(ext-mod-dir),kernel/$(@D))
-
-$(modules):
- $(call cmd,sign_ko,$(MODLIB)/$(modinst_dir))
-
-.PHONY: $(PHONY)
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
` (6 preceding siblings ...)
2021-03-31 13:38 ` [PATCH 8/9] kbuild: merge scripts/Makefile.modsign to scripts/Makefile.modinst Masahiro Yamada
@ 2021-03-31 13:38 ` Masahiro Yamada
2021-03-31 18:01 ` Nick Desaulniers
2021-04-07 14:29 ` Masahiro Yamada
2021-04-07 14:30 ` [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
8 siblings, 2 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-03-31 13:38 UTC (permalink / raw)
To: linux-kbuild
Cc: linux-kernel, Masahiro Yamada, Andrew Morton, Chris Wilson,
David Howells, Johannes Weiner, Kees Cook, Nathan Chancellor,
Nick Desaulniers, Nick Terrell, Valentin Schneider,
Vlastimil Babka
CONFIG_MODULE_COMPRESS is only used to activate the choice for module
compression algorithm. It will be simpler to make the choice visible
all the time by adding CONFIG_MODULE_COMPRESS_NONE to allow the user to
disable module compression.
This is more consistent with the "Kernel compression mode" and "Built-in
initramfs compression mode" choices.
CONFIG_KERNEL_UNCOMPRESSED and CONFIG_INITRAMFS_COMPRESSION_NONE are
available to choose to not compress the kernel, initrd, respectively.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
init/Kconfig | 45 ++++++++++++++++++++++++++-------------------
1 file changed, 26 insertions(+), 19 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig
index 019c1874e609..3ca1ffd219c4 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -2225,40 +2225,47 @@ config MODULE_SIG_HASH
default "sha384" if MODULE_SIG_SHA384
default "sha512" if MODULE_SIG_SHA512
-config MODULE_COMPRESS
- bool "Compress modules on installation"
+choice
+ prompt "Module compression mode"
help
+ This option allows you to choose the algorithm which will be used to
+ compress modules when 'make modules_install' is run. (or, you can
+ choose to not compress modules at all.)
- Compresses kernel modules when 'make modules_install' is run; gzip or
- xz depending on "Compression algorithm" below.
+ External modules will also be compressed in the same way during the
+ installation.
- module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
+ For modules inside an initrd or initramfs, it's more efficient to
+ compress the whole initrd or initramfs instead.
- Out-of-tree kernel modules installed using Kbuild will also be
- compressed upon installation.
+ This is fully compatible with signed modules.
- Note: for modules inside an initrd or initramfs, it's more efficient
- to compress the whole initrd or initramfs instead.
+ Please note that the tool used to load modules needs to support the
+ corresponding algorithm. module-init-tools MAY support gzip, and kmod
+ MAY support gzip and xz.
- Note: This is fully compatible with signed modules.
+ Your build system needs to provide the appropriate compression tool
+ to compress the modules.
- If in doubt, say N.
+ If in doubt, select 'None'.
-choice
- prompt "Compression algorithm"
- depends on MODULE_COMPRESS
- default MODULE_COMPRESS_GZIP
+config MODULE_COMPRESS_NONE
+ bool "None"
help
- This determines which sort of compression will be used during
- 'make modules_install'.
-
- GZIP (default) and XZ are supported.
+ Do not compress modules. The installed modules are suffixed
+ with .ko.
config MODULE_COMPRESS_GZIP
bool "GZIP"
+ help
+ Compress modules with XZ. The installed modules are suffixed
+ with .ko.gz.
config MODULE_COMPRESS_XZ
bool "XZ"
+ help
+ Compress modules with XZ. The installed modules are suffixed
+ with .ko.xz.
endchoice
--
2.27.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 5/9] kbuild: rename extmod-prefix to extmod_prefix
2021-03-31 13:38 ` [PATCH 5/9] kbuild: rename extmod-prefix to extmod_prefix Masahiro Yamada
@ 2021-03-31 17:54 ` Nick Desaulniers
0 siblings, 0 replies; 14+ messages in thread
From: Nick Desaulniers @ 2021-03-31 17:54 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Linux Kbuild mailing list, LKML, Michal Marek, Nathan Chancellor,
clang-built-linux
On Wed, Mar 31, 2021 at 6:38 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> This seems to be useful in sub-make as well. As a preparation of
> exporting it, rename extmod-prefix to extmod_prefix because exported
> variables cannot contain hyphens.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> ---
>
> Makefile | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index b5ff4753eba8..e3c2bd1b6f42 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -919,7 +919,7 @@ endif
> ifdef CONFIG_LTO_CLANG
> ifdef CONFIG_LTO_CLANG_THIN
> CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit
> -KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod-prefix).thinlto-cache
> +KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod_prefix).thinlto-cache
> else
> CC_FLAGS_LTO := -flto
> endif
> @@ -1141,9 +1141,9 @@ endif # CONFIG_BPF
>
> PHONY += prepare0
>
> -extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
> -export MODORDER := $(extmod-prefix)modules.order
> -export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
> +extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
> +export MODORDER := $(extmod_prefix)modules.order
> +export MODULES_NSDEPS := $(extmod_prefix)modules.nsdeps
>
> ifeq ($(KBUILD_EXTMOD),)
> core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
> @@ -1742,7 +1742,7 @@ build-dirs := $(KBUILD_EXTMOD)
> $(MODORDER): descend
> @:
>
> -compile_commands.json: $(extmod-prefix)compile_commands.json
> +compile_commands.json: $(extmod_prefix)compile_commands.json
> PHONY += compile_commands.json
>
> clean-dirs := $(KBUILD_EXTMOD)
> @@ -1832,12 +1832,12 @@ endif
>
> PHONY += single_modpost
> single_modpost: $(single-no-ko) modules_prepare
> - $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
> + $(Q){ $(foreach m, $(single-ko), echo $(extmod_prefix)$m;) } > $(MODORDER)
> $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
>
> KBUILD_MODULES := 1
>
> -export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
> +export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod_prefix), $(single-no-ko))
>
> # trim unrelated directories
> build-dirs := $(foreach d, $(build-dirs), \
> @@ -1906,12 +1906,12 @@ nsdeps: modules
> quiet_cmd_gen_compile_commands = GEN $@
> cmd_gen_compile_commands = $(PYTHON3) $< -a $(AR) -o $@ $(filter-out $<, $(real-prereqs))
>
> -$(extmod-prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \
> +$(extmod_prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \
> $(if $(KBUILD_EXTMOD),,$(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)) \
> $(if $(CONFIG_MODULES), $(MODORDER)) FORCE
> $(call if_changed,gen_compile_commands)
>
> -targets += $(extmod-prefix)compile_commands.json
> +targets += $(extmod_prefix)compile_commands.json
>
> PHONY += clang-tidy clang-analyzer
>
> @@ -1919,7 +1919,7 @@ ifdef CONFIG_CC_IS_CLANG
> quiet_cmd_clang_tools = CHECK $<
> cmd_clang_tools = $(PYTHON3) $(srctree)/scripts/clang-tools/run-clang-tools.py $@ $<
>
> -clang-tidy clang-analyzer: $(extmod-prefix)compile_commands.json
> +clang-tidy clang-analyzer: $(extmod_prefix)compile_commands.json
> $(call cmd,clang_tools)
> else
> clang-tidy clang-analyzer:
> --
> 2.27.0
>
--
Thanks,
~Nick Desaulniers
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS
2021-03-31 13:38 ` [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS Masahiro Yamada
@ 2021-03-31 18:01 ` Nick Desaulniers
2021-04-07 14:29 ` Masahiro Yamada
1 sibling, 0 replies; 14+ messages in thread
From: Nick Desaulniers @ 2021-03-31 18:01 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Linux Kbuild mailing list, LKML, Andrew Morton, Chris Wilson,
David Howells, Johannes Weiner, Kees Cook, Nathan Chancellor,
Nick Terrell, Valentin Schneider, Vlastimil Babka
On Wed, Mar 31, 2021 at 6:39 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
Should the online be Kconfig rather than Kbuild, for a commit that
only changes Kconfigs?
>
> CONFIG_MODULE_COMPRESS is only used to activate the choice for module
> compression algorithm. It will be simpler to make the choice visible
> all the time by adding CONFIG_MODULE_COMPRESS_NONE to allow the user to
> disable module compression.
>
> This is more consistent with the "Kernel compression mode" and "Built-in
> initramfs compression mode" choices.
>
> CONFIG_KERNEL_UNCOMPRESSED and CONFIG_INITRAMFS_COMPRESSION_NONE are
> available to choose to not compress the kernel, initrd, respectively.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
> init/Kconfig | 45 ++++++++++++++++++++++++++-------------------
> 1 file changed, 26 insertions(+), 19 deletions(-)
>
> diff --git a/init/Kconfig b/init/Kconfig
> index 019c1874e609..3ca1ffd219c4 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -2225,40 +2225,47 @@ config MODULE_SIG_HASH
> default "sha384" if MODULE_SIG_SHA384
> default "sha512" if MODULE_SIG_SHA512
>
> -config MODULE_COMPRESS
The top level Makefile has comments and code that refer to this choice
which is now removed. I think you'll want to fix that up in this
change as well? Ah, patch 7 in the series does that:
https://lore.kernel.org/linux-kbuild/20210331133811.3221540-7-masahiroy@kernel.org/
Ok then this LGTM.
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> - bool "Compress modules on installation"
> +choice
> + prompt "Module compression mode"
> help
> + This option allows you to choose the algorithm which will be used to
> + compress modules when 'make modules_install' is run. (or, you can
> + choose to not compress modules at all.)
>
> - Compresses kernel modules when 'make modules_install' is run; gzip or
> - xz depending on "Compression algorithm" below.
> + External modules will also be compressed in the same way during the
> + installation.
>
> - module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
> + For modules inside an initrd or initramfs, it's more efficient to
> + compress the whole initrd or initramfs instead.
>
> - Out-of-tree kernel modules installed using Kbuild will also be
> - compressed upon installation.
> + This is fully compatible with signed modules.
>
> - Note: for modules inside an initrd or initramfs, it's more efficient
> - to compress the whole initrd or initramfs instead.
> + Please note that the tool used to load modules needs to support the
> + corresponding algorithm. module-init-tools MAY support gzip, and kmod
> + MAY support gzip and xz.
>
> - Note: This is fully compatible with signed modules.
> + Your build system needs to provide the appropriate compression tool
> + to compress the modules.
>
> - If in doubt, say N.
> + If in doubt, select 'None'.
>
> -choice
> - prompt "Compression algorithm"
> - depends on MODULE_COMPRESS
> - default MODULE_COMPRESS_GZIP
> +config MODULE_COMPRESS_NONE
> + bool "None"
> help
> - This determines which sort of compression will be used during
> - 'make modules_install'.
> -
> - GZIP (default) and XZ are supported.
> + Do not compress modules. The installed modules are suffixed
> + with .ko.
>
> config MODULE_COMPRESS_GZIP
> bool "GZIP"
> + help
> + Compress modules with XZ. The installed modules are suffixed
> + with .ko.gz.
>
> config MODULE_COMPRESS_XZ
> bool "XZ"
> + help
> + Compress modules with XZ. The installed modules are suffixed
> + with .ko.xz.
>
> endchoice
>
> --
> 2.27.0
>
--
Thanks,
~Nick Desaulniers
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS
2021-03-31 13:38 ` [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS Masahiro Yamada
2021-03-31 18:01 ` Nick Desaulniers
@ 2021-04-07 14:29 ` Masahiro Yamada
1 sibling, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-04-07 14:29 UTC (permalink / raw)
To: Linux Kbuild mailing list
Cc: Linux Kernel Mailing List, Andrew Morton, Chris Wilson,
David Howells, Johannes Weiner, Kees Cook, Nathan Chancellor,
Nick Desaulniers, Nick Terrell, Valentin Schneider,
Vlastimil Babka
On Wed, Mar 31, 2021 at 10:39 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> CONFIG_MODULE_COMPRESS is only used to activate the choice for module
> compression algorithm. It will be simpler to make the choice visible
> all the time by adding CONFIG_MODULE_COMPRESS_NONE to allow the user to
> disable module compression.
>
> This is more consistent with the "Kernel compression mode" and "Built-in
> initramfs compression mode" choices.
>
> CONFIG_KERNEL_UNCOMPRESSED and CONFIG_INITRAMFS_COMPRESSION_NONE are
> available to choose to not compress the kernel, initrd, respectively.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
> init/Kconfig | 45 ++++++++++++++++++++++++++-------------------
> 1 file changed, 26 insertions(+), 19 deletions(-)
>
> diff --git a/init/Kconfig b/init/Kconfig
> index 019c1874e609..3ca1ffd219c4 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -2225,40 +2225,47 @@ config MODULE_SIG_HASH
> default "sha384" if MODULE_SIG_SHA384
> default "sha512" if MODULE_SIG_SHA512
>
> -config MODULE_COMPRESS
> - bool "Compress modules on installation"
> +choice
> + prompt "Module compression mode"
> help
> + This option allows you to choose the algorithm which will be used to
> + compress modules when 'make modules_install' is run. (or, you can
> + choose to not compress modules at all.)
>
> - Compresses kernel modules when 'make modules_install' is run; gzip or
> - xz depending on "Compression algorithm" below.
> + External modules will also be compressed in the same way during the
> + installation.
>
> - module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
> + For modules inside an initrd or initramfs, it's more efficient to
> + compress the whole initrd or initramfs instead.
>
> - Out-of-tree kernel modules installed using Kbuild will also be
> - compressed upon installation.
> + This is fully compatible with signed modules.
>
> - Note: for modules inside an initrd or initramfs, it's more efficient
> - to compress the whole initrd or initramfs instead.
> + Please note that the tool used to load modules needs to support the
> + corresponding algorithm. module-init-tools MAY support gzip, and kmod
> + MAY support gzip and xz.
>
> - Note: This is fully compatible with signed modules.
> + Your build system needs to provide the appropriate compression tool
> + to compress the modules.
>
> - If in doubt, say N.
> + If in doubt, select 'None'.
>
> -choice
> - prompt "Compression algorithm"
> - depends on MODULE_COMPRESS
> - default MODULE_COMPRESS_GZIP
> +config MODULE_COMPRESS_NONE
> + bool "None"
> help
> - This determines which sort of compression will be used during
> - 'make modules_install'.
> -
> - GZIP (default) and XZ are supported.
> + Do not compress modules. The installed modules are suffixed
> + with .ko.
>
> config MODULE_COMPRESS_GZIP
> bool "GZIP"
> + help
> + Compress modules with XZ. The installed modules are suffixed
This should be "Compress modules with GZIP."
I will fix it when applied.
> + with .ko.gz.
>
> config MODULE_COMPRESS_XZ
> bool "XZ"
> + help
> + Compress modules with XZ. The installed modules are suffixed
> + with .ko.xz.
>
> endchoice
>
> --
> 2.27.0
>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
` (7 preceding siblings ...)
2021-03-31 13:38 ` [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS Masahiro Yamada
@ 2021-04-07 14:30 ` Masahiro Yamada
8 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2021-04-07 14:30 UTC (permalink / raw)
To: Linux Kbuild mailing list; +Cc: Linux Kernel Mailing List, Michal Marek
On Wed, Mar 31, 2021 at 10:38 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> scripts/Makefile.modinst creates directories as needed.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
Applied to linux-kbuild.
>
> Makefile | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index ed8bd815e8a3..0e06db5ed9d8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1779,10 +1779,8 @@ $(MODORDER): descend
> PHONY += modules_install
> modules_install: _emodinst_ _emodinst_post
>
> -install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
> PHONY += _emodinst_
> _emodinst_:
> - $(Q)mkdir -p $(MODLIB)/$(install-dir)
> $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
>
> PHONY += _emodinst_post
> --
> 2.27.0
>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 6/9] kbuild: refactor scripts/Makefile.modinst
2021-03-31 13:38 ` [PATCH 6/9] kbuild: refactor scripts/Makefile.modinst Masahiro Yamada
@ 2021-05-12 14:23 ` Johannes Berg
0 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2021-05-12 14:23 UTC (permalink / raw)
To: Masahiro Yamada, linux-kbuild; +Cc: linux-kernel, Michal Marek
Hi,
So I'm not *entirely* sure if this caused it, but I noticed that doing
make -C linux M=/path/to/extmod/ modules_install
stopped working.
This is because here:
>
> -extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
> +export extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
(as before, of course) another trailing / is added to the M= argument,
and then
> +modules := $(patsubst $(extmod_prefix)%, $(dst)/%, $(modules))
this patsubst turns out to do nothing. So $(modules) contains the
original paths where the modules were compiled, and consequently nothing
happens.
Specifying
make -C linux M=/path/to/extmod modules_install
actually works.
Obviously I can work around it, but it hardly seems intentional?
Thanks,
johannes
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-05-12 14:23 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-31 13:38 [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
2021-03-31 13:38 ` [PATCH 2/9] kbuild: unify modules(_install) for in-tree and external modules Masahiro Yamada
2021-03-31 13:38 ` [PATCH 3/9] kbuild: show the target directory for depmod log Masahiro Yamada
2021-03-31 13:38 ` [PATCH 4/9] kbuild: check module name conflict for external modules as well Masahiro Yamada
2021-03-31 13:38 ` [PATCH 5/9] kbuild: rename extmod-prefix to extmod_prefix Masahiro Yamada
2021-03-31 17:54 ` Nick Desaulniers
2021-03-31 13:38 ` [PATCH 6/9] kbuild: refactor scripts/Makefile.modinst Masahiro Yamada
2021-05-12 14:23 ` Johannes Berg
2021-03-31 13:38 ` [PATCH 7/9] kbuild: move module strip/compression code into scripts/Makefile.modinst Masahiro Yamada
2021-03-31 13:38 ` [PATCH 8/9] kbuild: merge scripts/Makefile.modsign to scripts/Makefile.modinst Masahiro Yamada
2021-03-31 13:38 ` [PATCH 9/9] kbuild: remove CONFIG_MODULE_COMPRESS Masahiro Yamada
2021-03-31 18:01 ` Nick Desaulniers
2021-04-07 14:29 ` Masahiro Yamada
2021-04-07 14:30 ` [PATCH 1/9] kbuild: remove unneeded mkdir for external modules_install Masahiro Yamada
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).