flo: Accelerate boot by paralleling device enable
Some QCOM devices require sysfs to trigger boot/init which are blocking the init process. [ 7.453205] init: Command 'write /sys/kernel/boot_adsp/boot 1' action=post-fs-data (/init.angler.rc:166) returned 0 took 271.936ms. This CL is to put those slow to start devices in a separate service and wait for the service to be done later on. Bug: 32712851 Test: On device Change-Id: Idd4e965f122cbc8421b443a41573d363112dfa50
This commit is contained in:
parent
d973f1d245
commit
c4376f08be
|
@ -202,6 +202,10 @@ PRODUCT_PACKAGES += \
|
||||||
ueventd.rc \
|
ueventd.rc \
|
||||||
ueventd.flo.rc
|
ueventd.flo.rc
|
||||||
|
|
||||||
|
PRODUCT_COPY_FILES += \
|
||||||
|
device/asus/flo/rootdir/etc/init.qcom.devwait.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.devwait.sh \
|
||||||
|
device/asus/flo/rootdir/etc/init.qcom.devstart.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qcom.devstart.sh
|
||||||
|
|
||||||
# Recorder
|
# Recorder
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
Recorder
|
Recorder
|
||||||
|
|
|
@ -40,12 +40,14 @@ on fs
|
||||||
mount_all ./fstab.flo
|
mount_all ./fstab.flo
|
||||||
swapon_all ./fstab.flo
|
swapon_all ./fstab.flo
|
||||||
restorecon_recursive /persist
|
restorecon_recursive /persist
|
||||||
write /sys/kernel/boot_adsp/boot 1
|
|
||||||
|
|
||||||
on early-boot
|
on early-boot
|
||||||
# set RLIMIT_MEMLOCK to 64MB
|
# set RLIMIT_MEMLOCK to 64MB
|
||||||
setrlimit 8 67108864 67108864
|
setrlimit 8 67108864 67108864
|
||||||
|
|
||||||
|
# Busy loop to wait for devices booted by devstart_sh just in case device not ready
|
||||||
|
exec - root root system -- /vendor/bin/init.qcom.devwait.sh
|
||||||
|
|
||||||
on boot
|
on boot
|
||||||
#Create QMUX deamon socket area
|
#Create QMUX deamon socket area
|
||||||
mkdir /dev/socket/qmux_radio 0770 radio radio
|
mkdir /dev/socket/qmux_radio 0770 radio radio
|
||||||
|
@ -126,6 +128,9 @@ on boot
|
||||||
# Wifi firmware reload path
|
# Wifi firmware reload path
|
||||||
chown wifi wifi /sys/module/wlan/parameters/fwpath
|
chown wifi wifi /sys/module/wlan/parameters/fwpath
|
||||||
|
|
||||||
|
on post-fs
|
||||||
|
# Start devices by sysfs trigger
|
||||||
|
start devstart_sh
|
||||||
|
|
||||||
# msm specific files that need to be created on /data
|
# msm specific files that need to be created on /data
|
||||||
on post-fs-data
|
on post-fs-data
|
||||||
|
@ -342,7 +347,12 @@ service diag_mdlog /vendor/bin/diag_mdlog -s 100
|
||||||
class late_start
|
class late_start
|
||||||
disabled
|
disabled
|
||||||
|
|
||||||
|
service devstart_sh /vendor/bin/init.qcom.devstart.sh
|
||||||
|
class main
|
||||||
|
user root
|
||||||
|
group root system
|
||||||
|
disabled
|
||||||
|
oneshot
|
||||||
|
|
||||||
# on property:gsm.sim.state=READY
|
# on property:gsm.sim.state=READY
|
||||||
# start diag_mdlog
|
# start diag_mdlog
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/system/bin/sh
|
||||||
|
|
||||||
|
echo 1 > /sys/kernel/boot_adsp/boot
|
||||||
|
setprop sys.qcom.devup 1
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/system/bin/sh
|
||||||
|
|
||||||
|
up="`getprop sys.qcom.devup`"
|
||||||
|
while [ "$up" != "1" ]
|
||||||
|
do
|
||||||
|
sleep 0.1
|
||||||
|
up="`getprop sys.qcom.devup`"
|
||||||
|
done
|
|
@ -24,3 +24,6 @@ type persist_wifi_file, file_type;
|
||||||
type sysfs_rmnet, fs_type, sysfs_type;
|
type sysfs_rmnet, fs_type, sysfs_type;
|
||||||
type sysfs_mpdecision, fs_type, sysfs_type;
|
type sysfs_mpdecision, fs_type, sysfs_type;
|
||||||
type sysfs_surfaceflinger, fs_type, sysfs_type;
|
type sysfs_surfaceflinger, fs_type, sysfs_type;
|
||||||
|
|
||||||
|
#type for devstart
|
||||||
|
type sysfs_audio, sysfs_type, fs_type;
|
||||||
|
|
|
@ -131,6 +131,8 @@
|
||||||
/system/vendor/bin/init\.flo\.wifi\.sh u:object_r:conn_init_exec:s0
|
/system/vendor/bin/init\.flo\.wifi\.sh u:object_r:conn_init_exec:s0
|
||||||
/system/vendor/bin/irsc_util u:object_r:irsc_util_exec:s0
|
/system/vendor/bin/irsc_util u:object_r:irsc_util_exec:s0
|
||||||
/system/vendor/bin/init\.flo\.bt\.sh u:object_r:bluetooth_loader_exec:s0
|
/system/vendor/bin/init\.flo\.bt\.sh u:object_r:bluetooth_loader_exec:s0
|
||||||
|
/system/vendor/bin/init\.qcom\.devstart\.sh u:object_r:init-qcom-devstart-sh_exec:s0
|
||||||
|
/system/vendor/bin/init\.qcom\.devwait\.sh u:object_r:init-qcom-devwait-sh_exec:s0
|
||||||
|
|
||||||
# Persist firmware filesystem
|
# Persist firmware filesystem
|
||||||
/persist(/.*)? u:object_r:persist_file:s0
|
/persist(/.*)? u:object_r:persist_file:s0
|
||||||
|
@ -154,3 +156,6 @@
|
||||||
# Sysfs files used by surfaceflinger
|
# Sysfs files used by surfaceflinger
|
||||||
/sys/devices/virtual/graphics/fb1/format_3d -- u:object_r:sysfs_surfaceflinger:s0
|
/sys/devices/virtual/graphics/fb1/format_3d -- u:object_r:sysfs_surfaceflinger:s0
|
||||||
/sys/devices/virtual/graphics/fb1/hpd -- u:object_r:sysfs_surfaceflinger:s0
|
/sys/devices/virtual/graphics/fb1/hpd -- u:object_r:sysfs_surfaceflinger:s0
|
||||||
|
|
||||||
|
# Sysfs entry for audio
|
||||||
|
/sys/kernel/boot_adsp/boot u:object_r:sysfs_audio:s0
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
type init-qcom-devstart-sh, domain;
|
||||||
|
type init-qcom-devstart-sh_exec, exec_type, file_type;
|
||||||
|
|
||||||
|
init_daemon_domain(init-qcom-devstart-sh)
|
||||||
|
|
||||||
|
allow init-qcom-devstart-sh shell_exec:file rx_file_perms;
|
||||||
|
|
||||||
|
# execute toybox/toolbox
|
||||||
|
allow init-qcom-devstart-sh toolbox_exec:file rx_file_perms;
|
||||||
|
|
||||||
|
# Set the sys.qcom.devup property
|
||||||
|
set_prop(init-qcom-devstart-sh, system_prop)
|
||||||
|
|
||||||
|
# Set boot_adsp and boot_slpi to 1
|
||||||
|
allow init-qcom-devstart-sh sysfs_audio:file w_file_perms;
|
|
@ -0,0 +1,9 @@
|
||||||
|
type init-qcom-devwait-sh, domain;
|
||||||
|
type init-qcom-devwait-sh_exec, exec_type, file_type;
|
||||||
|
|
||||||
|
init_daemon_domain(init-qcom-devwait-sh)
|
||||||
|
|
||||||
|
allow init-qcom-devwait-sh shell_exec:file rx_file_perms;
|
||||||
|
|
||||||
|
# execute toybox/toolbox
|
||||||
|
allow init-qcom-devwait-sh toolbox_exec:file rx_file_perms;
|
Loading…
Reference in New Issue