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
This commit is contained in:
Juan Yescas 2024-06-10 20:50:31 -07:00
parent fb30388ac1
commit 64776335c0

View file

@ -245,8 +245,10 @@ extern "C" int modprobe_main(int argc, char** argv) {
}
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;