diff --git a/sepolicy/vendor/file.te b/sepolicy/vendor/file.te new file mode 100644 index 0000000..c78d06e --- /dev/null +++ b/sepolicy/vendor/file.te @@ -0,0 +1,9 @@ +# Power HAL +type proc_sched_energy_aware, proc_type, fs_type; +type sysfs_msm_subsys, sysfs_type, fs_type; + +# PowerStats HAL +type sysfs_iio_devices, fs_type, sysfs_type; +type sysfs_msm_wlan, sysfs_type, fs_type; +type sysfs_power_stats, sysfs_type, fs_type; +type sysfs_power_stats_ignore, sysfs_type, fs_type; diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 05e499e..443e7cb 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -2,3 +2,7 @@ /vendor/bin/batteryd u:object_r:batteryd_exec:s0 /vendor/bin/batterysecret u:object_r:batterysecret_exec:s0 /mnt/vendor/persist/subsys(/.*)? u:object_r:persist_subsys_file:s0 + +# Power +/vendor/bin/hw/android\.hardware\.power@1\.3-service\.xiaomi_sm6250 u:object_r:hal_power_default_exec:s0 +/vendor/bin/hw/android\.hardware\.power\.stats@1\.0-service\.xiaomi_sm6250 u:object_r:hal_power_stats_default_exec:s0 diff --git a/sepolicy/vendor/genfs_contexts b/sepolicy/vendor/genfs_contexts new file mode 100644 index 0000000..291a597 --- /dev/null +++ b/sepolicy/vendor/genfs_contexts @@ -0,0 +1,21 @@ +# Power HAL +genfscon sysfs /devices/platform/soc/ae00000.qcom,mdss_mdp u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/5000000.qcom,kgsl-3d0 u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/soc:qcom,gpubw u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/soc:qcom,gpubw/devfreq u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/soc:qcom,cpu-cpu-llcc-bw u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/soc:qcom,cpu-llcc-ddr-bw u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/soc:qcom,cpu0-cpu-l3-lat u:object_r:sysfs_msm_subsys:s0 +genfscon sysfs /devices/platform/soc/soc:qcom,cpu6-cpu-l3-lat u:object_r:sysfs_msm_subsys:s0 +genfscon proc /sys/kernel/sched_energy_aware u:object_r:proc_sched_energy_aware:s0 + +# PowerStats HAL +genfscon sysfs /bus/iio/devices u:object_r:sysfs_iio_devices:s0 +genfscon sysfs /kernel/wlan u:object_r:sysfs_msm_wlan:s0 +genfscon sysfs /power/system_sleep/stats u:object_r:sysfs_power_stats:s0 +genfscon sysfs /power/rpmh_stats/master_stats u:object_r:sysfs_power_stats:s0 +genfscon sysfs /kernel/wlan/power_stats u:object_r:sysfs_power_stats:s0 +genfscon sysfs /devices/platform/soc/a8c000.i2c/i2c-2/2-0010/iio:device2 u:object_r:sysfs_power_stats:s0 + +# Not used by PowerStats Hal +genfscon sysfs /devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-04/c440000.qcom,spmi:qcom,pm6150l@4:vadc@3100/iio:device1 u:object_r:sysfs_power_stats_ignore:s0 diff --git a/sepolicy/vendor/hal_power_default.te b/sepolicy/vendor/hal_power_default.te index c2eac2f..a20cc1c 100644 --- a/sepolicy/vendor/hal_power_default.te +++ b/sepolicy/vendor/hal_power_default.te @@ -1,3 +1,16 @@ # Allow hal_power_default to write to dt2w nodes allow hal_power_default input_device:dir r_dir_perms; allow hal_power_default input_device:chr_file rw_file_perms; + +# To get/set powerhal state property +set_prop(hal_power_default, power_prop) +allow hal_power_default { + sysfs_devices_system_cpu + sysfs_msm_subsys + proc_sched_energy_aware +}:file rw_file_perms; +allow hal_power_default sysfs_msm_subsys:dir search; +allow hal_power_default latency_device:chr_file rw_file_perms; + +# The following folder is incidentally accessed by hal_power_default and is not needed. +dontaudit hal_power_default cgroup:file read; diff --git a/sepolicy/vendor/hal_power_stats_default.te b/sepolicy/vendor/hal_power_stats_default.te new file mode 100644 index 0000000..b05db7c --- /dev/null +++ b/sepolicy/vendor/hal_power_stats_default.te @@ -0,0 +1,14 @@ +allow hal_power_stats_default sysfs_msm_wlan:dir search; # Needed to traverse to wlan stats file +get_prop(hal_power_stats_default, exported_wifi_prop) # Needed to detect wifi on/off +r_dir_file(hal_power_stats_default, sysfs_iio_devices) # Needed to traverse odpm files +r_dir_file(hal_power_stats_default, sysfs_power_stats) # Needed to traverse platform low power stats +r_dir_file(hal_power_stats_default, sysfs_msm_subsys) # Needed to traverse subsystem low power stats + +# The following folders are incidentally accessed by hal_power_stats_default and are not needed. +dontaudit hal_power_stats_default sysfs_power_stats_ignore:dir r_dir_perms; +dontaudit hal_power_stats_default sysfs_power_stats_ignore:file r_file_perms; +dontaudit hal_power_stats_default debugfs_wlan:dir search; +dontaudit hal_power_stats_default sysfs:file read; + +vndbinder_use(hal_power_stats) +add_service(hal_power_stats_server, power_stats_service) diff --git a/sepolicy/vendor/property.te b/sepolicy/vendor/property.te new file mode 100644 index 0000000..8b5443c --- /dev/null +++ b/sepolicy/vendor/property.te @@ -0,0 +1,2 @@ +# Power HAL +type power_prop, property_type; diff --git a/sepolicy/vendor/property_contexts b/sepolicy/vendor/property_contexts new file mode 100644 index 0000000..f39fa31 --- /dev/null +++ b/sepolicy/vendor/property_contexts @@ -0,0 +1,5 @@ +# Power HAL +vendor.powerhal.state u:object_r:power_prop:s0 +vendor.powerhal.audio u:object_r:power_prop:s0 +vendor.powerhal.init u:object_r:power_prop:s0 +vendor.powerhal.rendering u:object_r:power_prop:s0 diff --git a/sepolicy/vendor/vendor_init.te b/sepolicy/vendor/vendor_init.te new file mode 100644 index 0000000..156ca26 --- /dev/null +++ b/sepolicy/vendor/vendor_init.te @@ -0,0 +1,2 @@ +allow vendor_init proc_sched_energy_aware:file w_file_perms; +set_prop(vendor_init, power_prop) diff --git a/sepolicy/vendor/vndservice.te b/sepolicy/vendor/vndservice.te new file mode 100644 index 0000000..5602b8c --- /dev/null +++ b/sepolicy/vendor/vndservice.te @@ -0,0 +1,2 @@ +# PowerStats HAL +type power_stats_service, vndservice_manager_type; diff --git a/sepolicy/vendor/vndservice_contexts b/sepolicy/vendor/vndservice_contexts new file mode 100644 index 0000000..47fe2d9 --- /dev/null +++ b/sepolicy/vendor/vndservice_contexts @@ -0,0 +1,2 @@ +# PowerStats HAL +power.stats-vendor u:object_r:power_stats_service:s0