toolbox/modprobe: Load modules from /lib/modules based on page size
Load modules from /lib/modules for 4kb page size kernels when
the -d option is not present. Do not do this for 16kb page size kernels
due it will load the 4kb modules when PRODUCT_16K_DEVELOPER_OPTION
is true.
Depending on the value of PRODUCT_16K_DEVELOPER_OPTION, the
kernel modules can be located in several directories:
- true: There are 2 directories that contain the 4kb and 16kb
modules.
- 4kb modules are in /lib/modules
- 16kb modules are in /lib/modules/<uname -r>_16k
- false: There is only one directory that contains only one type
of the kernel modules, either 4kb or 16kb.
- /lib/modules
This is a temporary fix for the 16kb developer option. This
b/346659501 will track the proper fix.
Test: Boot target husky-trunk_staging-userdebug with developer
option.
Test: Boot target husky_pgagnostic-next-userdebug without developer
option.
Bug: 345609905
Bug: 343971855
Change-Id: I9bab33d9f06743bd10ee804b20db8f39467fcc52
diff --git a/toolbox/modprobe.cpp b/toolbox/modprobe.cpp
index 7fde491..13026ac 100644
--- a/toolbox/modprobe.cpp
+++ b/toolbox/modprobe.cpp
@@ -245,8 +245,10 @@
}
free(kernel_dirs);
- // Allow modules to be directly inside /lib/modules
- mod_dirs.emplace_back(LIB_MODULES_PREFIX);
+ if (mod_dirs.empty() || getpagesize() == 4096) {
+ // Allow modules to be directly inside /lib/modules
+ mod_dirs.emplace_back(LIB_MODULES_PREFIX);
+ }
}
LOG(DEBUG) << "mode is " << mode;