Skip loading kernel modules for 16K mode

For boot options, 16K kernel modules are all stored under vendor_boot.
So we can skip loading modules from vendor_dlkm/system_dlkm
if device is in 16K mode and boot option is enabled.

Bug: 293313353
Change-Id: I46c440a7ce67dfbd0cce83dadbd908dff144c583
This commit is contained in:
Kelvin Zhang 2024-04-18 12:29:28 -07:00
parent d5028db7e3
commit 959ba11426
2 changed files with 19 additions and 4 deletions

View File

@ -11,6 +11,17 @@ modules_dir=
system_modules_dir= system_modules_dir=
vendor_modules_dir= vendor_modules_dir=
pagesize=$(getconf PAGESIZE)
bootoption=$(getprop ro.product.build.16k_page.enabled)
if [ "$pagesize" != "4096" ] && [ "$bootoption" == "true" ]; then
echo "Device has page size $pagesize , skip loading modules from vendor_dlkm/system_dlkm because all modules are stored on vendor_boot"
setprop vendor.common.modules.ready 1
setprop vendor.device.modules.ready 1
setprop vendor.all.modules.ready 1
setprop vendor.all.devices.ready 1
return 0
fi
for dir in system vendor; do for dir in system vendor; do
for f in /${dir}/lib/modules/*/modules.dep /${dir}/lib/modules/modules.dep; do for f in /${dir}/lib/modules/*/modules.dep /${dir}/lib/modules/modules.dep; do
if [[ -f "$f" ]]; then if [[ -f "$f" ]]; then
@ -52,10 +63,10 @@ if [ $# -eq 1 ]; then
else else
# Set property even if there is no insmod config # Set property even if there is no insmod config
# to unblock early-boot trigger # to unblock early-boot trigger
setprop vendor.common.modules.ready setprop vendor.common.modules.ready 1
setprop vendor.device.modules.ready setprop vendor.device.modules.ready 1
setprop vendor.all.modules.ready setprop vendor.all.modules.ready 1
setprop vendor.all.devices.ready setprop vendor.all.devices.ready 1
exit 1 exit 1
fi fi

View File

@ -10,5 +10,9 @@ allow insmod-sh vendor_kernel_modules:system module_load;
allow insmod-sh vendor_toolbox_exec:file execute_no_trans; allow insmod-sh vendor_toolbox_exec:file execute_no_trans;
set_prop(insmod-sh, vendor_device_prop) set_prop(insmod-sh, vendor_device_prop)
get_prop(insmod-sh, enable_16k_pages_prop)
allow insmod-sh kmsg_debug_device:chr_file { w_file_perms ioctl getattr };
dontaudit insmod-sh proc_cmdline:file r_file_perms; dontaudit insmod-sh proc_cmdline:file r_file_perms;