The Pixel libperfmgr has following code :
std::thread initThread([&]() {
::android::base::WaitForProperty(kPowerHalInitProp.data(), 1);
hm->Start();
dlpw->Init();
});
which is basically
declare thread {
if (powerhalprop_is_not_set) wait;
else (powerhal_prop_is_set) init_other_threads;
}.start();
But in logcat
<11>[ 21.988418] [2: init: 2815] init: Unable to set property 'vendor.powerhal.init' from uid:0 gid:0 pid:2816: SELinux permission check failed
<36>[ 21.989189] [3: logd.auditd: 3586] type=1107 audit(1654915533.291:146): uid=0 auid=4294967295 ses=4294967295 subj=u:r:init:s0 msg='avc: denied { set } for property=vendor.powerhal.init pid=2816 uid=0 gid=0 scontext=u:r:vendor_init:s0 tcontext=u:object_r:vendor_powerhal_prop:s0 tclass=property_service permissive=0'
So the powerhal's thread was not being run. This commit fixes seplicy to allow vendor init to set the powerhal init prop. May fix some issues on DT2W and deep sleep