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:
weivincewang
2018-12-21 21:04:49 -05:00
committed by EcrosoftXiao
parent ee49558824
commit 0939cab02d
12 changed files with 130 additions and 11 deletions

19
configs/init.insmod.cfg Normal file
View 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

View File

@@ -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 += \

View File

@@ -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)

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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
View 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;

View File

@@ -1,3 +1,6 @@
# Insmod
type vendor_device_prop, property_type;
# Mlipay
type mlipay_prop, property_type;

View File

@@ -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