kernel_module_loader: add flag to skip GKI folders
On some devices, parsing all of the GKI folders for modules
to load causes unnecessary delay to the boot process, which
prevents some firmware from loading. The result is that
the battery sysfs entries never get loaded.
Since the modules needed for the device and not typically located
in the GKI folder for the standard kernel, allow skipping these
folders to eliminate the overhead from parsing all of the modules
in these folders.
Usage:
TW_LOAD_VENDOR_MODULES_EXCLUDE_GKI := true
Change-Id: Ia619a5fb0f28ba716bde3972a969c78bfdac1a13
(cherry picked from commit fd464d58d128c7ec90b972af0ec52d73d31fef0f)
diff --git a/Android.mk b/Android.mk
index f0e1a61..341e7d3 100755
--- a/Android.mk
+++ b/Android.mk
@@ -317,6 +317,9 @@
LOCAL_C_INCLUDES += system/core/libmodprobe/include
LOCAL_STATIC_LIBRARIES += libmodprobe
LOCAL_CFLAGS += -DTW_LOAD_VENDOR_MODULES=$(TW_LOAD_VENDOR_MODULES)
+ ifeq ($(TW_LOAD_VENDOR_MODULES_EXCLUDE_GKI),true)
+ LOCAL_CFLAGS += -DTW_LOAD_VENDOR_MODULES_EXCLUDE_GKI
+ endif
endif
ifeq ($(TW_INCLUDE_CRYPTO), true)
LOCAL_CFLAGS += -DTW_INCLUDE_CRYPTO -DUSE_FSCRYPT -Wno-macro-redefined
diff --git a/kernel_module_loader.cpp b/kernel_module_loader.cpp
index db5dee8..88f1d78 100644
--- a/kernel_module_loader.cpp
+++ b/kernel_module_loader.cpp
@@ -37,9 +37,11 @@
std::vector<std::string> release = TWFunc::split_string(rls, '.', true);
int expected_module_count = kernel_modules_requested.size();
module_dirs.push_back(base_dir + "/" + release[0] + "." + release[1]);
+#ifndef TW_LOAD_VENDOR_MODULES_EXCLUDE_GKI
std::string gki = "/" + release[0] + "." + release[1] + "-gki";
module_dirs.push_back(base_dir + gki);
vendor_module_dirs.push_back(vendor_base_dir + gki);
+#endif
for (auto&& module_dir:module_dirs) {
modules_loaded += Try_And_Load_Modules(module_dir, false);