cepheus: Improve boot time and pull in bootanim display time
1) launch bootanim early 2) parallel slow init operations: write sysfs After CL: Boot time saved 330ms, bootanim triggered early before data/ mounted Bug: 36780513 Test: walleye boots Change-Id: I02803179746710413f4b1e2372f3550cd95d1581
This commit is contained in:
committed by
EcrosoftXiao
parent
ee49558824
commit
0939cab02d
19
configs/init.insmod.cfg
Normal file
19
configs/init.insmod.cfg
Normal file
@@ -0,0 +1,19 @@
|
||||
#############################################
|
||||
# init.insmod.cfg #
|
||||
# This file contains kernel modules to load #
|
||||
# at init time by init.insmod.sh script #
|
||||
#############################################
|
||||
|
||||
# Load kernel modules
|
||||
modprobe|adsp_loader_dlkm apr_dlkm cs35l41_dlkm hdmi_dlkm machine_dlkm mbhc_dlkm native_dlkm pinctrl_wcd_dlkm platform_dlkm q6_dlkm q6_notifier_dlkm q6_pdr_dlkm stub_dlkm swr_ctrl_dlkm swr_dlkm tas2557_dlkm usf_dlkm wcd934x_dlkm wcd9360_dlkm wcd9xxx_dlkm wcd_core_dlkm wcd_cpe_dlkm wcd_spi_dlkm wglink_dlkm wsa881x_dlkm
|
||||
|
||||
# All modules loaded
|
||||
setprop|vendor.all.modules.ready
|
||||
|
||||
# Boot devices
|
||||
enable|/sys/kernel/boot_adsp/boot
|
||||
enable|/sys/kernel/boot_cdsp/boot
|
||||
enable|/sys/kernel/boot_slpi/boot
|
||||
|
||||
# All devices enabled
|
||||
setprop|vendor.all.devices.ready
|
||||
@@ -197,6 +197,10 @@ PRODUCT_PACKAGES += \
|
||||
libhidltransport \
|
||||
libhidltransport.vendor
|
||||
|
||||
# Insmod files
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/configs/init.insmod.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.cfg
|
||||
|
||||
# HotwordEnrollement
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/configs/permissions/com.android.hotwordenrollment.common.util.xml:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/permissions/com.android.hotwordenrollment.common.util.xml \
|
||||
@@ -221,7 +225,8 @@ PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/rootdir/bin/init.qcom.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.sh
|
||||
|
||||
PRODUCT_PACKAGES += \
|
||||
init.affinity.sh
|
||||
init.affinity.sh \
|
||||
init.insmod.sh
|
||||
|
||||
# Input
|
||||
PRODUCT_COPY_FILES += \
|
||||
|
||||
@@ -7,3 +7,11 @@ LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_SRC_FILES := etc/init.affinity.sh
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := init.insmod.sh
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_SRC_FILES := bin/init.insmod.sh
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
31
rootdir/bin/init.insmod.sh
Normal file
31
rootdir/bin/init.insmod.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/vendor/bin/sh
|
||||
|
||||
########################################################
|
||||
### init.insmod.cfg format: ###
|
||||
### ----------------------------------------------- ###
|
||||
### [insmod|setprop|enable/moprobe] [path|prop name] ###
|
||||
### ... ###
|
||||
########################################################
|
||||
|
||||
if [ $# -eq 1 ]; then
|
||||
cfg_file=$1
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f $cfg_file ]; then
|
||||
while IFS="|" read -r action arg
|
||||
do
|
||||
case $action in
|
||||
"insmod") insmod $arg ;;
|
||||
"setprop") setprop $arg 1 ;;
|
||||
"enable") echo 1 > $arg ;;
|
||||
"modprobe") modprobe -a -d /vendor/lib/modules $arg ;;
|
||||
esac
|
||||
done < $cfg_file
|
||||
fi
|
||||
|
||||
# set property even if there is no insmod config
|
||||
# as property value "1" is expected in early-boot trigger
|
||||
setprop vendor.all.modules.ready 1
|
||||
setprop vendor.all.devices.ready 1
|
||||
@@ -51,16 +51,15 @@ on init
|
||||
chown root system /sys/fs/cgroup/memory/bg/tasks
|
||||
chmod 0660 /sys/fs/cgroup/memory/bg/tasks
|
||||
|
||||
on early-boot
|
||||
# set RLIMIT_MEMLOCK to 64MB
|
||||
setrlimit 8 67108864 67108864
|
||||
# Loading kernel modules in background
|
||||
start insmod_sh
|
||||
|
||||
# Allow subsystem (modem etc) debugging
|
||||
write /sys/kernel/boot_adsp/boot 1
|
||||
write /sys/kernel/boot_cdsp/boot 1
|
||||
write /sys/devices/virtual/npu/msm_npu/boot 1
|
||||
write /sys/kernel/boot_slpi/boot 1
|
||||
write /sys/devices/virtual/cvp/cvp/boot 1
|
||||
on early-boot
|
||||
# Wait for insmod_sh to finish all modules
|
||||
wait_for_prop vendor.all.modules.ready 1
|
||||
|
||||
# Wait for insmod_sh to finish all boot devices
|
||||
wait_for_prop vendor.all.devices.ready 1
|
||||
|
||||
write /sys/class/drm/card0-DSI-1/status "detect"
|
||||
write /sys/module/drm/parameters/vblankoffdelay -1
|
||||
@@ -151,6 +150,9 @@ on boot
|
||||
chmod 0666 /sys/class/power_supply/battery/input_suspend
|
||||
|
||||
on post-fs-data
|
||||
# set RLIMIT_MEMLOCK to 64MB
|
||||
setrlimit 8 67108864 67108864
|
||||
|
||||
# Create directory used by display clients
|
||||
mkdir /data/vendor/display 0770 system graphics
|
||||
|
||||
@@ -319,6 +321,13 @@ service charger /system/bin/charger
|
||||
group system graphics
|
||||
seclabel u:r:charger:s0
|
||||
|
||||
service insmod_sh /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.cfg
|
||||
class main
|
||||
user root
|
||||
group root system
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
service vendor.msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
|
||||
class core
|
||||
user root
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#
|
||||
#
|
||||
on early-init
|
||||
exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules adsp_loader_dlkm apr_dlkm cs35l41_dlkm hdmi_dlkm machine_dlkm mbhc_dlkm native_dlkm pinctrl_wcd_dlkm platform_dlkm q6_dlkm q6_notifier_dlkm q6_pdr_dlkm stub_dlkm swr_ctrl_dlkm swr_dlkm tas2557_dlkm usf_dlkm wcd934x_dlkm wcd9360_dlkm wcd9xxx_dlkm wcd_core_dlkm wcd_cpe_dlkm wcd_spi_dlkm wglink_dlkm wsa881x_dlkm
|
||||
symlink /data/tombstones /tombstones
|
||||
|
||||
on init
|
||||
@@ -77,6 +76,13 @@ on fs
|
||||
restorecon_recursive /mnt/vendor/persist
|
||||
|
||||
on late-fs
|
||||
start surfaceflinger
|
||||
start bootanim
|
||||
start vendor.hwcomposer-2-2
|
||||
start vendor.configstore-hal
|
||||
start vendor.qti.hardware.display.allocator
|
||||
start vendor.light-hal-2-0
|
||||
|
||||
wait_for_prop hwservicemanager.ready true
|
||||
exec_start wait_for_keymaster
|
||||
mount_all /vendor/etc/fstab.qcom --late
|
||||
|
||||
3
sepolicy/vendor/file.te
vendored
3
sepolicy/vendor/file.te
vendored
@@ -1,3 +1,6 @@
|
||||
type sysfs_device_info, sysfs_type, fs_type;
|
||||
|
||||
type proc_sched_energy_aware, proc_type, fs_type;
|
||||
|
||||
# Insmod
|
||||
type sysfs_msm_boot, fs_type, sysfs_type;
|
||||
|
||||
3
sepolicy/vendor/file_contexts
vendored
3
sepolicy/vendor/file_contexts
vendored
@@ -25,6 +25,9 @@
|
||||
/vendor/bin/hw/android\.hardware\.light@2\.0-service\.cepheus u:object_r:hal_light_default_exec:s0
|
||||
/vendor/bin/hw/vendor\.lineage\.biometrics\.fingerprint\.inscreen@1.0-service\.cepheus u:object_r:hal_lineage_fod_default_exec:s0
|
||||
|
||||
# Insmod
|
||||
/vendor/bin/init\.insmod\.sh u:object_r:init-insmod-sh_exec:s0
|
||||
|
||||
# IR
|
||||
/dev/lirc0 u:object_r:ir_spi_device:s0
|
||||
|
||||
|
||||
4
sepolicy/vendor/genfs_contexts
vendored
4
sepolicy/vendor/genfs_contexts
vendored
@@ -7,3 +7,7 @@ genfscon sysfs /devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-05/c440000.q
|
||||
# Wireless charger
|
||||
genfscon sysfs /devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm8150b@2:qcom,qpnp-smb5/power_supply/wireless u:object_r:sysfs_battery_supply:s0
|
||||
genfscon sysfs /devices/platform/soc/890000.i2c/i2c-0/0-003b/power_supply/idt u:object_r:sysfs_battery_supply:s0
|
||||
|
||||
# Insmod
|
||||
genfscon sysfs /kernel/boot_cdsp/boot u:object_r:sysfs_msm_boot:s0
|
||||
genfscon sysfs /kernel/boot_slpi/boot u:object_r:sysfs_msm_boot:s0
|
||||
|
||||
24
sepolicy/vendor/init-insmod-sh.te
vendored
Normal file
24
sepolicy/vendor/init-insmod-sh.te
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
type init-insmod-sh, domain;
|
||||
type init-insmod-sh_exec, exec_type, vendor_file_type, file_type;
|
||||
|
||||
init_daemon_domain(init-insmod-sh)
|
||||
|
||||
allow init-insmod-sh vendor_toolbox_exec:file rx_file_perms;
|
||||
|
||||
# Set the vendor.all.modules.ready property
|
||||
set_prop(init-insmod-sh, vendor_device_prop)
|
||||
|
||||
# Allow insmod
|
||||
allow init-insmod-sh self:capability sys_module;
|
||||
|
||||
allow init-insmod-sh vendor_file:system module_load;
|
||||
|
||||
allow init-insmod-sh kernel:key search;
|
||||
|
||||
allow init-insmod-sh {
|
||||
sysfs_msm_boot
|
||||
}:file w_file_perms;
|
||||
|
||||
# modprobe need proc_modules
|
||||
allow init-insmod-sh proc_modules:file r_file_perms;
|
||||
|
||||
3
sepolicy/vendor/property.te
vendored
3
sepolicy/vendor/property.te
vendored
@@ -1,3 +1,6 @@
|
||||
# Insmod
|
||||
type vendor_device_prop, property_type;
|
||||
|
||||
# Mlipay
|
||||
type mlipay_prop, property_type;
|
||||
|
||||
|
||||
4
sepolicy/vendor/property_contexts
vendored
4
sepolicy/vendor/property_contexts
vendored
@@ -19,6 +19,10 @@ persist.vendor.sys.pay. u:object_r:mlipay_prop:s0
|
||||
persist.vendor.sys.provision.status u:object_r:mlipay_prop:s0
|
||||
ro.hardware.fp.fod u:object_r:mlipay_prop:s0
|
||||
|
||||
# Insmod
|
||||
vendor.all.modules.ready u:object_r:vendor_device_prop:s0
|
||||
vendor.all.devices.ready u:object_r:vendor_device_prop:s0
|
||||
|
||||
# Power
|
||||
vendor.powerhal. u:object_r:vendor_power_prop:s0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user