Let init mount/unmount debugfs for non-user builds
This change will help non-user builds with keeping debugfs disabled during run time. Instead, debugfs will be mounted by init to enable boot time initializations to set up vendor debug data collection and unmounted after boot. It will be also be mounted by dumpstate for bug report generation and unmounted after. This change is only intended to help vendors (who depend on debugfs to collect debug information from userdebug/eng builds) keep debugfs disabled during runtime. Platform code must not depend on debugfs at all. Test: manual Bug: 176936478 Change-Id: I2e89d5b9540e3de094976563682d4b8c5c125876
This commit is contained in:
parent
5266e041ef
commit
fb921a1c4e
|
@ -872,6 +872,21 @@ int SecondStageMain(int argc, char** argv) {
|
|||
auto is_installed = android::gsi::IsGsiInstalled() ? "1" : "0";
|
||||
SetProperty(gsi::kGsiInstalledProp, is_installed);
|
||||
|
||||
/*
|
||||
* For debug builds of S launching devices, init mounts debugfs for
|
||||
* enabling vendor debug data collection setup at boot time. Init will unmount it on
|
||||
* boot-complete after vendor code has performed the required initializations
|
||||
* during boot. Dumpstate will then mount debugfs in order to read data
|
||||
* from the same using the dumpstate HAL during bugreport creation.
|
||||
* Dumpstate will also unmount debugfs after bugreport creation.
|
||||
* first_api_level comparison is done here instead
|
||||
* of init.rc since init.rc parser does not support >/< operators.
|
||||
*/
|
||||
auto api_level = android::base::GetIntProperty("ro.product.first_api_level", 0);
|
||||
bool is_debuggable = android::base::GetBoolProperty("ro.debuggable", false);
|
||||
auto mount_debugfs = (is_debuggable && (api_level >= 31)) ? "1" : "0";
|
||||
SetProperty("init.mount_debugfs", mount_debugfs);
|
||||
|
||||
am.QueueBuiltinAction(SetupCgroupsAction, "SetupCgroups");
|
||||
am.QueueBuiltinAction(SetKptrRestrictAction, "SetKptrRestrict");
|
||||
am.QueueBuiltinAction(TestPerfEventSelinuxAction, "TestPerfEventSelinux");
|
||||
|
|
|
@ -933,6 +933,9 @@ on boot && property:ro.config.low_ram=true
|
|||
write /proc/sys/vm/dirty_expire_centisecs 200
|
||||
write /proc/sys/vm/dirty_background_ratio 5
|
||||
|
||||
on property:sys.boot_completed=1 && property:init.mount_debugfs=1
|
||||
umount /sys/kernel/debug
|
||||
|
||||
on boot
|
||||
# basic network init
|
||||
ifup lo
|
||||
|
@ -1201,6 +1204,10 @@ on userspace-reboot-resume
|
|||
on property:sys.boot_completed=1 && property:sys.init.userspace_reboot.in_progress=1
|
||||
setprop sys.init.userspace_reboot.in_progress ""
|
||||
|
||||
on early-init && property:init.mount_debugfs=1
|
||||
mount debugfs debugfs /sys/kernel/debug
|
||||
chmod 0755 /sys/kernel/debug
|
||||
|
||||
# Migrate tasks again in case kernel threads are created during boot
|
||||
on property:sys.boot_completed=1
|
||||
copy_per_line /dev/cpuctl/tasks /dev/cpuctl/system/tasks
|
||||
|
|
Loading…
Reference in New Issue