From 1a62bec19449e1b3888d58ba9c6073a543f1b03f Mon Sep 17 00:00:00 2001 From: Adam Shih Date: Mon, 6 Mar 2023 10:02:00 +0800 Subject: [PATCH 1/3] move camera dump to gs-common Bug: 240530709 Test: adb bugreport Create empty files starting with the following prefix /data/vendor/camera/profiler/session-ended- /data/vendor/camera/profiler/high-drop-rate- /data/vendor/camera/profiler/watchdog- /data/vendor/camera/profiler/camera-ended- and do adb bugreport and make sure they end up in dumpstate_board.bin Change-Id: I2f9dfb74476af295db8a392ebf7757681404841e --- camera/Android.bp | 20 +++++++++++++++ camera/dump.mk | 4 +++ camera/dump_camera.cpp | 42 +++++++++++++++++++++++++++++++ camera/sepolicy/dump_camera.te | 9 +++++++ camera/sepolicy/file.te | 2 ++ camera/sepolicy/file_contexts | 5 ++++ camera/sepolicy/property.te | 2 ++ camera/sepolicy/property_contexts | 2 ++ 8 files changed, 86 insertions(+) create mode 100644 camera/Android.bp create mode 100644 camera/dump.mk create mode 100644 camera/dump_camera.cpp create mode 100644 camera/sepolicy/dump_camera.te create mode 100644 camera/sepolicy/file.te create mode 100644 camera/sepolicy/file_contexts create mode 100644 camera/sepolicy/property.te create mode 100644 camera/sepolicy/property_contexts diff --git a/camera/Android.bp b/camera/Android.bp new file mode 100644 index 0000000..9d647c9 --- /dev/null +++ b/camera/Android.bp @@ -0,0 +1,20 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_binary { + name: "dump_camera", + srcs: ["dump_camera.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + "liblog", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/camera/dump.mk b/camera/dump.mk new file mode 100644 index 0000000..a3a5c7a --- /dev/null +++ b/camera/dump.mk @@ -0,0 +1,4 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/camera/sepolicy/ + +PRODUCT_PACKAGES_DEBUG += dump_camera + diff --git a/camera/dump_camera.cpp b/camera/dump_camera.cpp new file mode 100644 index 0000000..105c024 --- /dev/null +++ b/camera/dump_camera.cpp @@ -0,0 +1,42 @@ +/* + * 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 +#include +#include + +int main() { + if (!::android::base::GetBoolProperty("vendor.camera.debug.camera_performance_analyzer.attach_to_bugreport", true)) { + return 0; + } + + static const std::string kCameraLogDir = "/data/vendor/camera/profiler"; + const std::string cameraDestDir = concatenatePath(BUGREPORT_PACKING_DIR, "camera"); + + if (mkdir(cameraDestDir.c_str(), 0777) == -1) { + printf("Unable to create folder: %s\n", cameraDestDir.c_str()); + return 0; + } + + // Attach multiple latest sessions (in case the user is running concurrent + // sessions or starts a new session after the one with performance issues). + dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 10, "session-ended-"); + dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 5, "high-drop-rate-"); + dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 5, "watchdog-"); + dumpLogs(kCameraLogDir.c_str(), cameraDestDir.c_str(), 5, "camera-ended-"); + + return 0; +} + diff --git a/camera/sepolicy/dump_camera.te b/camera/sepolicy/dump_camera.te new file mode 100644 index 0000000..c431184 --- /dev/null +++ b/camera/sepolicy/dump_camera.te @@ -0,0 +1,9 @@ +pixel_bugreport(dump_camera) + +userdebug_or_eng(` + allow dump_camera vendor_camera_data_file:dir r_dir_perms; + allow dump_camera vendor_camera_data_file:file create_file_perms; + allow dump_camera radio_vendor_data_file:dir create_dir_perms; + allow dump_camera radio_vendor_data_file:file create_file_perms; + get_prop(dump_camera, vendor_camera_debug_prop) +') diff --git a/camera/sepolicy/file.te b/camera/sepolicy/file.te new file mode 100644 index 0000000..5f4a142 --- /dev/null +++ b/camera/sepolicy/file.te @@ -0,0 +1,2 @@ +type vendor_camera_data_file, file_type, data_file_type; + diff --git a/camera/sepolicy/file_contexts b/camera/sepolicy/file_contexts new file mode 100644 index 0000000..4bb5308 --- /dev/null +++ b/camera/sepolicy/file_contexts @@ -0,0 +1,5 @@ +/vendor/bin/dump/dump_camera u:object_r:dump_camera_exec:s0 + +# Data +/data/vendor/camera(/.*)? u:object_r:vendor_camera_data_file:s0 + diff --git a/camera/sepolicy/property.te b/camera/sepolicy/property.te new file mode 100644 index 0000000..19d6a2f --- /dev/null +++ b/camera/sepolicy/property.te @@ -0,0 +1,2 @@ +vendor_internal_prop(vendor_camera_debug_prop) + diff --git a/camera/sepolicy/property_contexts b/camera/sepolicy/property_contexts new file mode 100644 index 0000000..5e2c815 --- /dev/null +++ b/camera/sepolicy/property_contexts @@ -0,0 +1,2 @@ +vendor.camera.debug. u:object_r:vendor_camera_debug_prop:s0 + From cd831a6189a734a6a76b14da5fc9566bc09b0aec Mon Sep 17 00:00:00 2001 From: Adam Shih Date: Wed, 1 Mar 2023 10:55:44 +0800 Subject: [PATCH 2/3] Move common display dump to gs-common Bug: 269212897 Test: adb bugreport Change-Id: I6739aec7a432e55e829bbd4a69fec50e0d4050ac --- display/Android.bp | 17 +++++++++++ display/dump.mk | 1 + display/dump_display.cpp | 29 +++++++++++++++++++ display/sepolicy/dump_display.te | 14 +++++++++ display/sepolicy/file.te | 2 ++ display/sepolicy/file_contexts | 1 + display/sepolicy/genfs_contexts | 3 ++ .../sepolicy/hal_graphics_composer_default.te | 3 ++ display/sepolicy/vndservice.te | 2 ++ display/sepolicy/vndservice_contexts | 2 ++ 10 files changed, 74 insertions(+) create mode 100644 display/dump_display.cpp create mode 100644 display/sepolicy/dump_display.te create mode 100644 display/sepolicy/genfs_contexts create mode 100644 display/sepolicy/hal_graphics_composer_default.te create mode 100644 display/sepolicy/vndservice.te create mode 100644 display/sepolicy/vndservice_contexts diff --git a/display/Android.bp b/display/Android.bp index 4ca3636..c3b346b 100644 --- a/display/Android.bp +++ b/display/Android.bp @@ -8,3 +8,20 @@ sh_binary { vendor: true, sub_dir: "dump", } + +cc_binary { + name: "dump_display", + srcs: ["dump_display.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + ], + vendor: true, + relative_install_path: "dump", +} + diff --git a/display/dump.mk b/display/dump.mk index a1519c3..2af14da 100644 --- a/display/dump.mk +++ b/display/dump.mk @@ -1,3 +1,4 @@ BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy PRODUCT_PACKAGES_DEBUG += dump_display_userdebug.sh +PRODUCT_PACKAGES += dump_display diff --git a/display/dump_display.cpp b/display/dump_display.cpp new file mode 100644 index 0000000..d78a91a --- /dev/null +++ b/display/dump_display.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 +#include + + +int main() { + setbuf(stdout, NULL); + dumpFileContent("DECON-0 counters /sys/class/drm/card0/device/decon0/counters", "/sys/class/drm/card0/device/decon0/counters"); + dumpFileContent("CRTC-0 event log", "/sys/kernel/debug/dri/0/crtc-0/event"); + runCommand("libdisplaycolor", "/vendor/bin/dumpsys displaycolor -v"); + dumpFileContent("Primary panel name", "/sys/devices/platform/exynos-drm/primary-panel/panel_name"); + dumpFileContent("Primary panel extra info", "/sys/devices/platform/exynos-drm/primary-panel/panel_extinfo"); + return 0; +} + diff --git a/display/sepolicy/dump_display.te b/display/sepolicy/dump_display.te new file mode 100644 index 0000000..b8fd1b8 --- /dev/null +++ b/display/sepolicy/dump_display.te @@ -0,0 +1,14 @@ +pixel_bugreport(dump_display) + +allow dump_display sysfs_display:file r_file_perms; +allow dump_display vendor_displaycolor_service:service_manager find; +binder_call(dump_display, hal_graphics_composer_default) +allow dump_display vendor_dumpsys:file execute_no_trans; +allow dump_display vendor_shell_exec:file execute_no_trans; + +userdebug_or_eng(` + allow dump_display vendor_dri_debugfs:dir r_dir_perms; + allow dump_display vendor_dri_debugfs:file r_file_perms; +') +vndbinder_use(dump_display) + diff --git a/display/sepolicy/file.te b/display/sepolicy/file.te index bc43f3a..e3f2382 100644 --- a/display/sepolicy/file.te +++ b/display/sepolicy/file.te @@ -1 +1,3 @@ type vendor_hwc_log_file, file_type, data_file_type; +type vendor_dri_debugfs, fs_type, debugfs_type; + diff --git a/display/sepolicy/file_contexts b/display/sepolicy/file_contexts index bd9bb34..66118d0 100644 --- a/display/sepolicy/file_contexts +++ b/display/sepolicy/file_contexts @@ -1,4 +1,5 @@ /vendor/bin/dump/dump_display_userdebug\.sh u:object_r:dump_display_userdebug_exec:s0 +/vendor/bin/dump/dump_display u:object_r:dump_display_exec:s0 /data/vendor/log/hwc(/.*)? u:object_r:vendor_hwc_log_file:s0 diff --git a/display/sepolicy/genfs_contexts b/display/sepolicy/genfs_contexts new file mode 100644 index 0000000..9eaf5fb --- /dev/null +++ b/display/sepolicy/genfs_contexts @@ -0,0 +1,3 @@ + +genfscon debugfs /dri/0/crtc- u:object_r:vendor_dri_debugfs:s0 + diff --git a/display/sepolicy/hal_graphics_composer_default.te b/display/sepolicy/hal_graphics_composer_default.te new file mode 100644 index 0000000..c644559 --- /dev/null +++ b/display/sepolicy/hal_graphics_composer_default.te @@ -0,0 +1,3 @@ +allow hal_graphics_composer_default dump_display:fifo_file { append write }; +allow hal_graphics_composer_default dump_display:fd use; + diff --git a/display/sepolicy/vndservice.te b/display/sepolicy/vndservice.te new file mode 100644 index 0000000..5c3693b --- /dev/null +++ b/display/sepolicy/vndservice.te @@ -0,0 +1,2 @@ +type vendor_displaycolor_service, vndservice_manager_type; + diff --git a/display/sepolicy/vndservice_contexts b/display/sepolicy/vndservice_contexts new file mode 100644 index 0000000..9276f97 --- /dev/null +++ b/display/sepolicy/vndservice_contexts @@ -0,0 +1,2 @@ +displaycolor u:object_r:vendor_displaycolor_service:s0 + From 3c7b1f03a1999615bb2ad688f8dcaf567a6314bd Mon Sep 17 00:00:00 2001 From: Erik Staats Date: Tue, 14 Feb 2023 18:32:22 +0000 Subject: [PATCH 3/3] Set acd-com.google.umfw_stat type to aoc_device Set the /dev/acd-com.google.umfw_stat security context type to aoc_device. Bug: 254464877 Test: Verified /dev/acd-com.google.umfw_stat security context. Change-Id: Ibeba4c65f479c38ab740e156dd244e2f40d00dd4 Merged-In: Ibeba4c65f479c38ab740e156dd244e2f40d00dd4 --- aoc/sepolicy/file_contexts | 1 + 1 file changed, 1 insertion(+) diff --git a/aoc/sepolicy/file_contexts b/aoc/sepolicy/file_contexts index 3fc88b5..70af43f 100644 --- a/aoc/sepolicy/file_contexts +++ b/aoc/sepolicy/file_contexts @@ -15,6 +15,7 @@ /dev/acd-debug u:object_r:aoc_device:s0 /dev/acd-audio_tap[0-9]* u:object_r:aoc_device:s0 /dev/acd-audio_dcdoff_ref u:object_r:aoc_device:s0 +/dev/acd-com.google.umfw_stat u:object_r:aoc_device:s0 /dev/acd-com.google.usf u:object_r:aoc_device:s0 /dev/acd-com.google.usf.non_wake_up u:object_r:aoc_device:s0 /dev/acd-logging u:object_r:aoc_device:s0