From 6a5e97033e1dd4c1d2df9c26242f9c8181c692ec Mon Sep 17 00:00:00 2001 From: Will McVicker Date: Thu, 27 Jan 2022 01:00:08 +0000 Subject: [PATCH] FROMLIST: kbuild: install the modules.order for external modules Add support to install the modules.order file for external modules during module_install in order to retain the Makefile ordering of external modules. This helps reduce the extra steps necessary to properly order loading of external modules when there are multiple kernel modules compiled within a given KBUILD_EXTMOD directory. To handle compiling multiple external modules within the same INSTALL_MOD_DIR, kbuild will append a suffix to the installed modules.order file defined like so: echo "${KBUILD_EXTMOD}" | md5sum | cut -d " " -f 1 Example: KBUILD_EXTMOD=/mnt/a.b/c-d/my_driver results in: modules.order.7dd3eb90588c21ac15f23a96c2f6d8ec The installed module.order.$(extmod_suffix) files can then be appended to the staging modules.order file which defines the order to load all of the modules during boot. Example: cd $(MODLIB) find extra/. -name modules.order.* -exec cat {} >> modules.order \; Link: https://lore.kernel.org/all/20220127010009.2617569-1-willmcvicker@google.com/ Bug: 216462633 Bug: 210713925 Signed-off-by: Will McVicker Change-Id: I7baa92163f8e6ea3f47d780b728167d86cc2f6e1 --- scripts/Makefile.modinst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index ff9b09e4cfca..3cf77187456b 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst @@ -24,6 +24,10 @@ suffix-$(CONFIG_MODULE_COMPRESS_XZ) := .xz suffix-$(CONFIG_MODULE_COMPRESS_ZSTD) := .zst modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules)) +ifneq ($(KBUILD_EXTMOD),) +extmod_suffix := $(shell echo "${KBUILD_EXTMOD}" | md5sum | cut -d " " -f 1) +modules += $(dst)/modules.order.$(extmod_suffix) +endif __modinst: $(modules) @: @@ -82,6 +86,12 @@ $(dst)/%.ko: $(extmod_prefix)%.ko FORCE $(call cmd,strip) $(call cmd,sign) +ifneq ($(KBUILD_EXTMOD),) +$(dst)/modules.order.$(extmod_suffix): $(MODORDER) FORCE + $(call cmd,install) + @sed -i "s:^$(KBUILD_EXTMOD):$(INSTALL_MOD_DIR):g" $@ +endif + else $(dst)/%.ko: FORCE