diff --git a/soc/Android.bp b/soc/Android.bp index 57b8577..e913154 100644 --- a/soc/Android.bp +++ b/soc/Android.bp @@ -9,6 +9,21 @@ sh_binary { sub_dir: "dump", } +cc_binary { + name: "dump_devfreq", + srcs: ["dump_devfreq.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libdump", + ], + vendor: true, + relative_install_path: "dump", +} + cc_binary { name: "dump_soc", srcs: ["dump_soc.cpp"], diff --git a/soc/dump_devfreq.cpp b/soc/dump_devfreq.cpp new file mode 100644 index 0000000..5cbbb94 --- /dev/null +++ b/soc/dump_devfreq.cpp @@ -0,0 +1,29 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include + +int main() { + dumpFileContent("MIF DVFS", "/sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/time_in_state"); + dumpFileContent("INT DVFS", "/sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/time_in_state"); + dumpFileContent("INTCAM DVFS", "/sys/devices/platform/17000030.devfreq_intcam/devfreq/17000030.devfreq_intcam/time_in_state"); + dumpFileContent("DISP DVFS", "/sys/devices/platform/17000040.devfreq_disp/devfreq/17000040.devfreq_disp/time_in_state"); + dumpFileContent("CAM DVFS", "/sys/devices/platform/17000050.devfreq_cam/devfreq/17000050.devfreq_cam/time_in_state"); + dumpFileContent("TNR DVFS", "/sys/devices/platform/17000060.devfreq_tnr/devfreq/17000060.devfreq_tnr/time_in_state"); + dumpFileContent("MFC DVFS", "/sys/devices/platform/17000070.devfreq_mfc/devfreq/17000070.devfreq_mfc/time_in_state"); + dumpFileContent("BO DVFS", "/sys/devices/platform/17000080.devfreq_bo/devfreq/17000080.devfreq_bo/time_in_state"); + dumpFileContent("BTS stats", "/sys/devices/platform/exynos-bts/bts_stats"); + return 0; +} diff --git a/soc/freq.mk b/soc/freq.mk new file mode 100644 index 0000000..bd79977 --- /dev/null +++ b/soc/freq.mk @@ -0,0 +1,4 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/soc/sepolicy/freq + +PRODUCT_PACKAGES += dump_devfreq + diff --git a/soc/sepolicy/freq/dump_devfreq.te b/soc/sepolicy/freq/dump_devfreq.te new file mode 100644 index 0000000..75aa325 --- /dev/null +++ b/soc/sepolicy/freq/dump_devfreq.te @@ -0,0 +1,5 @@ +pixel_bugreport(dump_devfreq) +allow dump_devfreq sysfs_cpu:file r_file_perms; +allow dump_devfreq sysfs_exynos_bts:dir r_dir_perms; +allow dump_devfreq sysfs_exynos_bts_stats:file r_file_perms; + diff --git a/soc/sepolicy/freq/file.te b/soc/sepolicy/freq/file.te new file mode 100644 index 0000000..1201d5a --- /dev/null +++ b/soc/sepolicy/freq/file.te @@ -0,0 +1,4 @@ +type sysfs_cpu, sysfs_type, fs_type; +type sysfs_exynos_bts, sysfs_type, fs_type; +type sysfs_exynos_bts_stats, sysfs_type, fs_type; + diff --git a/soc/sepolicy/freq/file_contexts b/soc/sepolicy/freq/file_contexts new file mode 100644 index 0000000..b1f5b4f --- /dev/null +++ b/soc/sepolicy/freq/file_contexts @@ -0,0 +1,2 @@ +/vendor/bin/dump/dump_devfreq u:object_r:dump_devfreq_exec:s0 + diff --git a/soc/sepolicy/freq/genfs_contexts b/soc/sepolicy/freq/genfs_contexts new file mode 100644 index 0000000..b747c1c --- /dev/null +++ b/soc/sepolicy/freq/genfs_contexts @@ -0,0 +1,19 @@ +# CPU +genfscon sysfs /devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000030.devfreq_intcam/devfreq/17000030.devfreq_intcam/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000040.devfreq_disp/devfreq/17000040.devfreq_disp/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000050.devfreq_cam/devfreq/17000050.devfreq_cam/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000060.devfreq_tnr/devfreq/17000060.devfreq_tnr/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000070.devfreq_mfc/devfreq/17000070.devfreq_mfc/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000080.devfreq_bw/devfreq/17000080.devfreq_bw/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/17000090.devfreq_dsu/devfreq/17000090.devfreq_dsu/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/170000a0.devfreq_bci/devfreq/170000a0.devfreq_bci/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/1f000000.mali/time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/1f000000.mali/uid_time_in_state u:object_r:sysfs_cpu:s0 +genfscon sysfs /devices/platform/cpupm/cpupm/time_in_state u:object_r:sysfs_cpu:s0 + +# Exynos +genfscon sysfs /devices/platform/exynos-bts u:object_r:sysfs_exynos_bts:s0 +genfscon sysfs /devices/platform/exynos-bts/bts_stats u:object_r:sysfs_exynos_bts_stats:s0 + diff --git a/soc/sepolicy/dump_memory.te b/soc/sepolicy/soc/dump_memory.te similarity index 100% rename from soc/sepolicy/dump_memory.te rename to soc/sepolicy/soc/dump_memory.te diff --git a/soc/sepolicy/dump_soc.te b/soc/sepolicy/soc/dump_soc.te similarity index 100% rename from soc/sepolicy/dump_soc.te rename to soc/sepolicy/soc/dump_soc.te diff --git a/soc/sepolicy/dumpstate.te b/soc/sepolicy/soc/dumpstate.te similarity index 100% rename from soc/sepolicy/dumpstate.te rename to soc/sepolicy/soc/dumpstate.te diff --git a/soc/sepolicy/file.te b/soc/sepolicy/soc/file.te similarity index 100% rename from soc/sepolicy/file.te rename to soc/sepolicy/soc/file.te diff --git a/soc/sepolicy/file_contexts b/soc/sepolicy/soc/file_contexts similarity index 100% rename from soc/sepolicy/file_contexts rename to soc/sepolicy/soc/file_contexts diff --git a/soc/sepolicy/genfs_contexts b/soc/sepolicy/soc/genfs_contexts similarity index 100% rename from soc/sepolicy/genfs_contexts rename to soc/sepolicy/soc/genfs_contexts diff --git a/soc/soc.mk b/soc/soc.mk index b9b6208..d08d99d 100644 --- a/soc/soc.mk +++ b/soc/soc.mk @@ -1,4 +1,4 @@ -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/soc/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/soc/sepolicy/soc PRODUCT_PACKAGES += dump_soc PRODUCT_PACKAGES_DEBUG += dump_memory.sh