diff --git a/aoc/aoc.mk b/aoc/aoc.mk index 9ee4517..13d849c 100644 --- a/aoc/aoc.mk +++ b/aoc/aoc.mk @@ -13,6 +13,11 @@ PRODUCT_COPY_FILES += \ device/google/gs-common/aoc/conf/init.aoc.daemon.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.aoc.rc endif +ifneq ($(wildcard vendor/google/whitechapel/aoc/aocx/aidl/aocx/framework_compatibility_matrix.xml),) +DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE += \ + vendor/google/whitechapel/aoc/aocx/aidl/aocx/framework_compatibility_matrix.xml +endif + # AoC debug support PRODUCT_PACKAGES_DEBUG += \ aocdump \ diff --git a/aoc/sepolicy/service_contexts b/aoc/sepolicy/service_contexts index de31e51..80346c8 100644 --- a/aoc/sepolicy/service_contexts +++ b/aoc/sepolicy/service_contexts @@ -1 +1 @@ -aocx.IAocx u:object_r:aocx:s0 +aocx.IAocx/default u:object_r:aocx:s0 diff --git a/audio/aidl.mk b/audio/aidl.mk index 7dd56bc..68458dd 100644 --- a/audio/aidl.mk +++ b/audio/aidl.mk @@ -16,7 +16,11 @@ PRODUCT_PACKAGES += \ libhapticgeneratoraidl \ BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/aidl -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/hdmi_audio +ifeq ($(AUDIO_USE_DPTX_SEPOLICY),true) +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/hdmi_audio/dptx +else +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/hdmi_audio/drmdp +endif include device/google/gs-common/audio/common.mk diff --git a/audio/aidl/device_framework_matrix_product.xml b/audio/aidl/device_framework_matrix_product.xml index 570c5d4..50b850f 100644 --- a/audio/aidl/device_framework_matrix_product.xml +++ b/audio/aidl/device_framework_matrix_product.xml @@ -1,7 +1,7 @@ vendor.google.whitechapel.audio.extension - 4 + 4-5 IAudioExtension default diff --git a/audio/hidl_zuma.mk b/audio/hidl_zuma.mk index 6fb3449..64ad2ba 100644 --- a/audio/hidl_zuma.mk +++ b/audio/hidl_zuma.mk @@ -42,7 +42,7 @@ PRODUCT_PACKAGES += \ endif BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/hidl -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/hdmi_audio +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/hdmi_audio/drmdp include device/google/gs-common/audio/common.mk diff --git a/audio/sepolicy/hdmi_audio/dptx/genfs_contexts b/audio/sepolicy/hdmi_audio/dptx/genfs_contexts new file mode 100644 index 0000000..64803be --- /dev/null +++ b/audio/sepolicy/hdmi_audio/dptx/genfs_contexts @@ -0,0 +1 @@ +genfscon sysfs /devices/platform/dwc_dptx-audio/extcon/hdmi_audio u:object_r:sysfs_extcon:s0 diff --git a/audio/sepolicy/hdmi_audio/genfs_contexts b/audio/sepolicy/hdmi_audio/drmdp/genfs_contexts similarity index 100% rename from audio/sepolicy/hdmi_audio/genfs_contexts rename to audio/sepolicy/hdmi_audio/drmdp/genfs_contexts diff --git a/bcmbt/compatibility_matrix.xml b/bcmbt/compatibility_matrix.xml index 65b0c6d..54eda4b 100644 --- a/bcmbt/compatibility_matrix.xml +++ b/bcmbt/compatibility_matrix.xml @@ -26,5 +26,9 @@ IBluetoothEwp default + + IBluetoothCco + default + diff --git a/bcmbt/manifest_bluetooth.xml b/bcmbt/manifest_bluetooth.xml index a72f1c9..3dc3f88 100644 --- a/bcmbt/manifest_bluetooth.xml +++ b/bcmbt/manifest_bluetooth.xml @@ -23,5 +23,6 @@ IBluetoothExt/default IBluetoothFinder/default IBluetoothSar/default + IBluetoothCco/default diff --git a/bcmbt/sepolicy/service_contexts b/bcmbt/sepolicy/service_contexts index 4aecc90..e91eb1e 100644 --- a/bcmbt/sepolicy/service_contexts +++ b/bcmbt/sepolicy/service_contexts @@ -5,3 +5,4 @@ vendor.google.bluetooth_ext.IBluetoothCcc/default u:o vendor.google.bluetooth_ext.IBluetoothEwp/default u:object_r:hal_bluetooth_coexistence_service:s0 vendor.google.bluetooth_ext.IBluetoothExt/default u:object_r:hal_bluetooth_coexistence_service:s0 vendor.google.bluetooth_ext.IBluetoothFinder/default u:object_r:hal_bluetooth_coexistence_service:s0 +vendor.google.bluetooth_ext.IBluetoothCco/default u:object_r:hal_bluetooth_coexistence_service:s0 diff --git a/camera/Android.bp b/camera/Android.bp index e845678..17f152f 100644 --- a/camera/Android.bp +++ b/camera/Android.bp @@ -34,3 +34,35 @@ prebuilt_etc { src: "com.google.pixel.camera.concurrent_foldable_dual_front.xml", sub_dir: "permissions", } + +prebuilt_etc { + name: "libg3a_standalone_gabc_rc", + vendor: true, + proprietary: true, + init_rc: ["libg3a_gabc.rc"], + src: "libg3a_gabc.rc", +} + +prebuilt_etc { + name: "libg3a_standalone_gaf_rc", + vendor: true, + proprietary: true, + init_rc: ["libg3a_gaf.rc"], + src: "libg3a_gaf.rc", +} + +prebuilt_etc { + name: "libg3a_standalone_ghawb_rc", + vendor: true, + proprietary: true, + init_rc: ["libg3a_ghawb.rc"], + src: "libg3a_ghawb.rc", +} + +prebuilt_etc { + name: "vendor-apex-allowlist-lyric.xml", + src: "vendor-apex-allowlist-lyric.xml", + vendor: true, + sub_dir: "sysconfig", + filename_from_src: true, +} diff --git a/camera/libg3a_gabc.rc b/camera/libg3a_gabc.rc new file mode 100644 index 0000000..c092edd --- /dev/null +++ b/camera/libg3a_gabc.rc @@ -0,0 +1,28 @@ +# override default log levels. +on boot + setprop log.tag.GABC E + +# backward-compatible system props. +on property:persist.vendor.camera.gabc.debug_level=0 + setprop log.tag.GABC S + +on property:persist.vendor.camera.gabc.debug_level=1 + setprop log.tag.GABC V + +on property:persist.vendor.camera.gabc.debug_level=2 + setprop log.tag.GABC V + +on property:persist.vendor.camera.gabc.debug_level=3 + setprop log.tag.GABC D + +on property:persist.vendor.camera.gabc.debug_level=4 + setprop log.tag.GABC I + +on property:persist.vendor.camera.gabc.debug_level=5 + setprop log.tag.GABC W + +on property:persist.vendor.camera.gabc.debug_level=6 + setprop log.tag.GABC E + +on property:persist.vendor.camera.gabc.debug_level=7 + setprop log.tag.GABC A diff --git a/camera/libg3a_gaf.rc b/camera/libg3a_gaf.rc new file mode 100644 index 0000000..214b467 --- /dev/null +++ b/camera/libg3a_gaf.rc @@ -0,0 +1,83 @@ +# override default log levels. +on boot + setprop log.tag.GAF E + +# backward-compatible system props. +on property:persist.vendor.camera.af.debug_level=0 + setprop log.tag.GAF S + +on property:persist.vendor.camera.af.debug_level=1 + setprop log.tag.GAF V + +on property:persist.vendor.camera.af.debug_level=2 + setprop log.tag.GAF V + +on property:persist.vendor.camera.af.debug_level=3 + setprop log.tag.GAF D + +on property:persist.vendor.camera.af.debug_level=4 + setprop log.tag.GAF I + +on property:persist.vendor.camera.af.debug_level=5 + setprop log.tag.GAF W + +on property:persist.vendor.camera.af.debug_level=6 + setprop log.tag.GAF E + +on property:persist.vendor.camera.af.debug_level=7 + setprop log.tag.GAF A + +on property:persist.vendor.camera.af.video_debug_enable=2 + setprop vendor.camera.3a.log_level 1 + setprop log.tag.3a.gcrd.af.parser.input V + setprop log.tag.3a.gcrd.af.parser.output V + setprop log.tag.3a.gcrd.af.processor V + setprop log.tag.3a.gcrd.af.engine V + setprop log.tag.3a.gcrd.dtm V + +on property:persist.vendor.camera.af.video_debug_enable=0 + setprop vendor.camera.3a.log_level 6 + setprop log.tag.3a.gcrd.af.parser.input E + setprop log.tag.3a.gcrd.af.parser.output E + setprop log.tag.3a.gcrd.af.processor E + setprop log.tag.3a.gcrd.af.engine E + setprop log.tag.3a.gcrd.dtm E + +on property:persist.vendor.camera.af.default_focus_only=false + setprop persist.vendor.camera.af.ignore_ctrl_focus_region false + setprop persist.vendor.camera.af.ignore_face 0 + setprop persist.vendor.camera.af.force_saliency_consumption "" + +on property:persist.vendor.camera.af.default_focus_only=true + setprop persist.vendor.camera.af.ignore_ctrl_focus_region true + setprop persist.vendor.camera.af.ignore_face 1 + setprop persist.vendor.camera.af.force_saliency_consumption false + +# Reset every related properties +on property:persist.vendor.camera.af.standalone_searchlet=reset + setprop persist.vendor.camera.af.ignore_pd \"\" + setprop persist.vendor.camera.af.ignore_tof \"\" + setprop persist.vendor.camera.af.ignore_cdaf \"\" + setprop persist.vendor.camera.af.ignore_gyro \"\" + setprop persist.vendor.camera.af.ignore_3a \"\" + setprop vendor.camera.debug.enable_saliency \"\" + +# Standalone framework: PDAF +on property:persist.vendor.camera.af.standalone_searchlet=pdaf + setprop persist.vendor.camera.af.ignore_tof 1 + setprop persist.vendor.camera.af.ignore_gyro 1 + setprop persist.vendor.camera.af.ignore_3a 1 + setprop vendor.camera.debug.enable_saliency 0 + +# Standalone framework: LDAF +on property:persist.vendor.camera.af.standalone_searchlet=ldaf + setprop persist.vendor.camera.af.ignore_pd 7 + setprop persist.vendor.camera.af.ignore_gyro 1 + setprop persist.vendor.camera.af.ignore_3a 1 + setprop vendor.camera.debug.enable_saliency 0 + +# Standalone framework: CDAF +on property:persist.vendor.camera.af.standalone_searchlet=cdaf + setprop persist.vendor.camera.af.ignore_pd 7 + setprop persist.vendor.camera.af.ignore_tof 1 + setprop vendor.camera.debug.enable_saliency 0 diff --git a/camera/libg3a_ghawb.rc b/camera/libg3a_ghawb.rc new file mode 100644 index 0000000..4ca6717 --- /dev/null +++ b/camera/libg3a_ghawb.rc @@ -0,0 +1,28 @@ +# override default log levels. +on boot + setprop log.tag.GHAWB E + +# backward-compatible system props. +on property:persist.vendor.camera.ghawb.debug_level=0 + setprop log.tag.GHAWB S + +on property:persist.vendor.camera.ghawb.debug_level=1 + setprop log.tag.GHAWB V + +on property:persist.vendor.camera.ghawb.debug_level=2 + setprop log.tag.GHAWB V + +on property:persist.vendor.camera.ghawb.debug_level=3 + setprop log.tag.GHAWB D + +on property:persist.vendor.camera.ghawb.debug_level=4 + setprop log.tag.GHAWB I + +on property:persist.vendor.camera.ghawb.debug_level=5 + setprop log.tag.GHAWB W + +on property:persist.vendor.camera.ghawb.debug_level=6 + setprop log.tag.GHAWB E + +on property:persist.vendor.camera.ghawb.debug_level=7 + setprop log.tag.GHAWB A diff --git a/camera/lyric.mk b/camera/lyric.mk index c886138..5d78b69 100644 --- a/camera/lyric.mk +++ b/camera/lyric.mk @@ -20,8 +20,20 @@ endif # All shipping releases will switch to prebuilts (trunk+) # if this condition is not true, then build from source. -ifneq ($(RELEASE_PIXEL_CAMERA_ENABLE_PREBUILT),true) +# Fallback if the prebuilts directory does not exist, then we must +# build from source no matter what, so we log a warning +ifeq ($(RELEASE_PIXEL_CAMERA_ENABLE_PREBUILT),true) + ifeq ($(wildcard vendor/google/services/LyricCameraHAL/prebuilt),) + $(warning Lyric prebuilt directory is missing, it will be built from source) + BUILD_LYRIC_FROM_SOURCE := true + else + BUILD_LYRIC_FROM_SOURCE := false + endif +else + BUILD_LYRIC_FROM_SOURCE := true +endif # RELEASE_PIXEL_CAMERA_ENABLE_PREBUILT +ifeq ($(BUILD_LYRIC_FROM_SOURCE),true) PRODUCT_SOONG_NAMESPACES += \ vendor/google/camera \ vendor/google/camera/google_3a/libs_v4 \ @@ -37,11 +49,7 @@ PRODUCT_SOONG_NAMESPACES += \ vendor/google/camera/google_3a/libs_v4/gAF \ vendor/google/camera/google_3a/libs_v4/gafd \ vendor/google/camera/google_3a/libs_v4/gHAWB/native_coverage - -# Calibration tool for debug builds -PRODUCT_PACKAGES_DEBUG += tarasque_test -PRODUCT_PACKAGES_DEBUG += ProtoCalibGenerator -endif # RELEASE_PIXEL_CAMERA_ENABLE_PREBUILT check +endif # BUILD_LYRIC_FROM_SOURCE # Init-time log settings for Google 3A PRODUCT_PACKAGES += libg3a_standalone_gabc_rc @@ -50,6 +58,7 @@ PRODUCT_PACKAGES += libg3a_standalone_ghawb_rc # Vendor APEX which contains the camera HAL PRODUCT_PACKAGES += com.google.pixel.camera.hal +PRODUCT_PACKAGES += venodr-apex-allowlist-lyric.xml PRODUCT_PACKAGES += init.camera.set-interrupts-ownership PRODUCT_PACKAGES += lyric_preview_dis_xml @@ -61,3 +70,7 @@ DEVICE_MATRIX_FILE += \ # sepolicy dir is added in dump.mk. # Make doesn't deduplicate sepolicy dirs, so including it here causes build errors. + +# Calibration tools for debug builds +PRODUCT_PACKAGES_DEBUG += tarasque_test +PRODUCT_PACKAGES_DEBUG += ProtoCalibGenerator diff --git a/camera/lyric_soong_variables.md b/camera/lyric_soong_variables.md index b442943..4289109 100644 --- a/camera/lyric_soong_variables.md +++ b/camera/lyric_soong_variables.md @@ -44,3 +44,13 @@ Example: $(call soong_config_set,google3a_config,target_device,oriole) ``` A mixture of `camera_hardware` and `tuning_product` used by 3A. + +## `radioext_interface_type` + +Example: +``` +$(call soong_config_set,lyric,radioext_interface_type,aidl) +``` +Specifies which interface type to use in the RadioExt client when communicating +with the RadioExt service. The possible values are "hidl" and "aidl". +Devices launching with Android 15 no longer support HIDL. diff --git a/camera/vendor-apex-allowlist-lyric.xml b/camera/vendor-apex-allowlist-lyric.xml new file mode 100644 index 0000000..2bcdb72 --- /dev/null +++ b/camera/vendor-apex-allowlist-lyric.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/check_current_prebuilt/check_current_prebuilt.mk b/check_current_prebuilt/check_current_prebuilt.mk index 72e359f..93c103e 100644 --- a/check_current_prebuilt/check_current_prebuilt.mk +++ b/check_current_prebuilt/check_current_prebuilt.mk @@ -1,27 +1,32 @@ +PIXEL_PREBUILT_SYMLINK_PATH=$(OUT_DIR)/pixel +$(shell rm -rf pixel_current_*) +$(shell rm -rf $(PIXEL_PREBUILT_SYMLINK_PATH)/pixel_current_*) +$(shell mkdir -p $(PIXEL_PREBUILT_SYMLINK_PATH)) + # Create symlink for bootloader $(shell rm -f "pixel_current_bootloader") ifdef BOOTLOADER_FILE_PATH -$(shell ln -sf ${BOOTLOADER_FILE_PATH} "pixel_current_bootloader") +$(shell ln -sf ../../${BOOTLOADER_FILE_PATH} $(PIXEL_PREBUILT_SYMLINK_PATH)/"pixel_current_bootloader") else ifdef BOOTLOADER_RADIO_FILE_PATH -$(shell ln -sf ${BOOTLOADER_RADIO_FILE_PATH} "pixel_current_bootloader") +$(shell ln -sf ../../${BOOTLOADER_RADIO_FILE_PATH} $(PIXEL_PREBUILT_SYMLINK_PATH)/"pixel_current_bootloader") endif # Create symlink for kernel $(shell rm -f "pixel_current_kernel") ifdef TARGET_KERNEL_DIR -$(shell ln -sf ${TARGET_KERNEL_DIR} "pixel_current_kernel") +$(shell ln -sf ../../${TARGET_KERNEL_DIR} $(PIXEL_PREBUILT_SYMLINK_PATH)/"pixel_current_kernel") endif # Create symlink for radio $(shell rm -f "pixel_current_radio") ifdef RADIO_FILE_PATH -$(shell ln -sf ${RADIO_FILE_PATH} "pixel_current_radio") +$(shell ln -sf ../../${RADIO_FILE_PATH} $(PIXEL_PREBUILT_SYMLINK_PATH)/"pixel_current_radio") else ifdef BOOTLOADER_RADIO_FILE_PATH -$(shell ln -sf ${BOOTLOADER_RADIO_FILE_PATH} "pixel_current_radio") +$(shell ln -sf ../../${BOOTLOADER_RADIO_FILE_PATH} $(PIXEL_PREBUILT_SYMLINK_PATH)/"pixel_current_radio") endif # Create symlink for radiocfg $(shell rm -f "pixel_current_radiocfg") ifdef SRC_MDM_CFG_DIR -$(shell ln -sf ${SRC_MDM_CFG_DIR} "pixel_current_radiocfg") +$(shell ln -sf ../../${SRC_MDM_CFG_DIR} $(PIXEL_PREBUILT_SYMLINK_PATH)/"pixel_current_radiocfg") endif diff --git a/chre/sepolicy/hal_contexthub_default.te b/chre/sepolicy/hal_contexthub_default.te index 87e3a42..50e7ca3 100644 --- a/chre/sepolicy/hal_contexthub_default.te +++ b/chre/sepolicy/hal_contexthub_default.te @@ -35,3 +35,6 @@ allow hal_contexthub_default self:global_capability2_class_set block_suspend; # Allow binder calls with clients binder_call(hal_contexthub_default, hal_sensors_default) + +# Allow access for AoC properties. +get_prop(hal_contexthub_default, vendor_aoc_prop) diff --git a/display/Android.bp b/display/Android.bp index 63dd76e..1a90b51 100644 --- a/display/Android.bp +++ b/display/Android.bp @@ -4,14 +4,14 @@ package { sh_binary { name: "dump_display_userdebug.sh", - src: "dump_display_userdebug.sh", + src: "common/dump_display_userdebug.sh", vendor: true, sub_dir: "dump", } cc_binary { - name: "dump_display", - srcs: ["dump_display.cpp"], + name: "dump_exynos_display", + srcs: ["exynos/dump_display.cpp"], cflags: [ "-Wall", "-Wextra", @@ -26,8 +26,8 @@ cc_binary { } cc_binary { - name: "dump_second_display", - srcs: ["dump_second_display.cpp"], + name: "dump_exynos_second_display", + srcs: ["exynos/dump_second_display.cpp"], cflags: [ "-Wall", "-Wextra", @@ -40,3 +40,33 @@ cc_binary { relative_install_path: "dump", } +cc_binary { + name: "dump_pixel_display", + srcs: ["pixel/dump_display.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + ], + vendor: true, + relative_install_path: "dump", +} + +cc_binary { + name: "dump_pixel_second_display", + srcs: ["pixel/dump_second_display.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libdump", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/display/dump_display_userdebug.sh b/display/common/dump_display_userdebug.sh similarity index 100% rename from display/dump_display_userdebug.sh rename to display/common/dump_display_userdebug.sh diff --git a/display/dump_exynos_display.mk b/display/dump_exynos_display.mk new file mode 100644 index 0000000..d20ba9d --- /dev/null +++ b/display/dump_exynos_display.mk @@ -0,0 +1,4 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy/exynos + +PRODUCT_PACKAGES_DEBUG += dump_display_userdebug.sh +PRODUCT_PACKAGES += dump_exynos_display diff --git a/display/dump_exynos_second_display.mk b/display/dump_exynos_second_display.mk new file mode 100644 index 0000000..5a6afe6 --- /dev/null +++ b/display/dump_exynos_second_display.mk @@ -0,0 +1,3 @@ +PRODUCT_PACKAGES += dump_exynos_second_display +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy_second_display/exynos + diff --git a/display/dump.mk b/display/dump_pixel_display.mk similarity index 69% rename from display/dump.mk rename to display/dump_pixel_display.mk index 2af14da..e9e7b73 100644 --- a/display/dump.mk +++ b/display/dump_pixel_display.mk @@ -1,4 +1,4 @@ -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy/pixel PRODUCT_PACKAGES_DEBUG += dump_display_userdebug.sh -PRODUCT_PACKAGES += dump_display +PRODUCT_PACKAGES += dump_pixel_display diff --git a/display/dump_pixel_second_display.mk b/display/dump_pixel_second_display.mk new file mode 100644 index 0000000..15cf7fd --- /dev/null +++ b/display/dump_pixel_second_display.mk @@ -0,0 +1,3 @@ +PRODUCT_PACKAGES += dump_pixel_second_display +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy_second_display/pixel + diff --git a/display/dump_second_display.mk b/display/dump_second_display.mk deleted file mode 100644 index dfab73e..0000000 --- a/display/dump_second_display.mk +++ /dev/null @@ -1,3 +0,0 @@ -PRODUCT_PACKAGES += dump_second_display -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display/sepolicy_second_display - diff --git a/display/dump_display.cpp b/display/exynos/dump_display.cpp similarity index 90% rename from display/dump_display.cpp rename to display/exynos/dump_display.cpp index f57a134..2e03a63 100644 --- a/display/dump_display.cpp +++ b/display/exynos/dump_display.cpp @@ -18,7 +18,7 @@ int main() { setbuf(stdout, NULL); - dumpFileContent("DECON-0 counters /sys/class/drm/card0/device/decon0/counters", "/sys/class/drm/card0/device/decon0/counters"); + dumpFileContent("DECON-0 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"); diff --git a/display/dump_second_display.cpp b/display/exynos/dump_second_display.cpp similarity index 89% rename from display/dump_second_display.cpp rename to display/exynos/dump_second_display.cpp index 9590c7f..c05ce9a 100644 --- a/display/dump_second_display.cpp +++ b/display/exynos/dump_second_display.cpp @@ -16,7 +16,7 @@ #include int main() { - dumpFileContent("DECON-1 counters /sys/class/drm/card0/device/decon1/counters", "/sys/class/drm/card0/device/decon1/counters"); + dumpFileContent("DECON-1 counters", "/sys/class/drm/card0/device/decon1/counters"); dumpFileContent("CRTC-1 event log", "/sys/kernel/debug/dri/0/crtc-1/event"); dumpFileContent("Secondary panel name", "/sys/class/drm/card0/device/secondary-panel/panel_name"); diff --git a/display/pixel/dump_display.cpp b/display/pixel/dump_display.cpp new file mode 100644 index 0000000..1014977 --- /dev/null +++ b/display/pixel/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("CRTC-0 status", "/sys/kernel/debug/dri/0/crtc-0/status"); + runCommand("libdisplaycolor", "/vendor/bin/dumpsys displaycolor -v"); + + dumpFileContent("Primary panel name", "/sys/class/drm/card0/device/primary-panel/panel_name"); + dumpFileContent("Primary panel extra info", "/sys/class/drm/card0/device/primary-panel/panel_extinfo"); + dumpFileContent("Primary panel power Vreg", "/sys/class/drm/card0/device/primary-panel/panel_pwr_vreg"); + dumpFileContent("Primary panel power mode register", "/sys/class/drm/card0/device/primary-panel/power_mode"); + return 0; +} diff --git a/display/pixel/dump_second_display.cpp b/display/pixel/dump_second_display.cpp new file mode 100644 index 0000000..92e6e99 --- /dev/null +++ b/display/pixel/dump_second_display.cpp @@ -0,0 +1,25 @@ +/* + * 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("CRTC-1 status", "/sys/kernel/debug/dri/0/crtc-1/status"); + + dumpFileContent("Secondary panel name", "/sys/class/drm/card0/device/secondary-panel/panel_name"); + dumpFileContent("Secondary panel extra info", "/sys/class/drm/card0/device/secondary-panel/panel_extinfo"); + dumpFileContent("Secondary panel power mode register", "/sys/class/drm/card0/device/secondary-panel/power_mode"); + return 0; +} diff --git a/display/sepolicy/dump_display.te b/display/sepolicy/dump_display.te deleted file mode 100644 index 3e2cb69..0000000 --- a/display/sepolicy/dump_display.te +++ /dev/null @@ -1,15 +0,0 @@ -# Display (dump for bugreport) -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/dump_display_userdebug.te b/display/sepolicy/dump_display_userdebug.te deleted file mode 100644 index c08fb29..0000000 --- a/display/sepolicy/dump_display_userdebug.te +++ /dev/null @@ -1,11 +0,0 @@ -# Display eng/userdebug (dump for bugreport) -pixel_bugreport(dump_display_userdebug) - -userdebug_or_eng(` - allow dump_display_userdebug vendor_toolbox_exec:file execute_no_trans; - allow dump_display_userdebug vendor_log_file:dir search; - allow dump_display_userdebug vendor_hwc_log_file:dir r_dir_perms; - allow dump_display_userdebug vendor_hwc_log_file:file r_file_perms; - allow dump_display_userdebug debugfs_tracing_instances:dir search; - allow dump_display_userdebug debugfs_tracing_instances:file r_file_perms; -') diff --git a/display/sepolicy/exynos/dump_display.te b/display/sepolicy/exynos/dump_display.te new file mode 100644 index 0000000..0b4f0c7 --- /dev/null +++ b/display/sepolicy/exynos/dump_display.te @@ -0,0 +1,15 @@ +# Display (dump for bugreport) +pixel_bugreport(dump_exynos_display) + +allow dump_exynos_display sysfs_display:file r_file_perms; +allow dump_exynos_display vendor_displaycolor_service:service_manager find; +binder_call(dump_exynos_display, hal_graphics_composer_default) +allow dump_exynos_display vendor_dumpsys:file execute_no_trans; +allow dump_exynos_display vendor_shell_exec:file execute_no_trans; + +userdebug_or_eng(` + allow dump_exynos_display vendor_dri_debugfs:dir r_dir_perms; + allow dump_exynos_display vendor_dri_debugfs:file r_file_perms; +') +vndbinder_use(dump_exynos_display) + diff --git a/display/sepolicy/exynos/dump_display_userdebug.te b/display/sepolicy/exynos/dump_display_userdebug.te new file mode 100644 index 0000000..1b8dd11 --- /dev/null +++ b/display/sepolicy/exynos/dump_display_userdebug.te @@ -0,0 +1,11 @@ +# Display eng/userdebug (dump for bugreport) +pixel_bugreport(dump_exynos_display_userdebug) + +userdebug_or_eng(` + allow dump_exynos_display_userdebug vendor_toolbox_exec:file execute_no_trans; + allow dump_exynos_display_userdebug vendor_log_file:dir search; + allow dump_exynos_display_userdebug vendor_hwc_log_file:dir r_dir_perms; + allow dump_exynos_display_userdebug vendor_hwc_log_file:file r_file_perms; + allow dump_exynos_display_userdebug debugfs_tracing_instances:dir search; + allow dump_exynos_display_userdebug debugfs_tracing_instances:file r_file_perms; +') diff --git a/display/sepolicy/file.te b/display/sepolicy/exynos/file.te similarity index 100% rename from display/sepolicy/file.te rename to display/sepolicy/exynos/file.te diff --git a/display/sepolicy/exynos/file_contexts b/display/sepolicy/exynos/file_contexts new file mode 100644 index 0000000..2a0854f --- /dev/null +++ b/display/sepolicy/exynos/file_contexts @@ -0,0 +1,5 @@ +/vendor/bin/dump/dump_display_userdebug\.sh u:object_r:dump_exynos_display_userdebug_exec:s0 +/vendor/bin/dump/dump_exynos_display u:object_r:dump_exynos_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/exynos/genfs_contexts similarity index 100% rename from display/sepolicy/genfs_contexts rename to display/sepolicy/exynos/genfs_contexts diff --git a/display/sepolicy/exynos/hal_graphics_composer_default.te b/display/sepolicy/exynos/hal_graphics_composer_default.te new file mode 100644 index 0000000..86e2d96 --- /dev/null +++ b/display/sepolicy/exynos/hal_graphics_composer_default.te @@ -0,0 +1,3 @@ +allow hal_graphics_composer_default dump_exynos_display:fifo_file { append write }; +allow hal_graphics_composer_default dump_exynos_display:fd use; + diff --git a/display/sepolicy/vndservice.te b/display/sepolicy/exynos/vndservice.te similarity index 100% rename from display/sepolicy/vndservice.te rename to display/sepolicy/exynos/vndservice.te diff --git a/display/sepolicy/vndservice_contexts b/display/sepolicy/exynos/vndservice_contexts similarity index 100% rename from display/sepolicy/vndservice_contexts rename to display/sepolicy/exynos/vndservice_contexts diff --git a/display/sepolicy/hal_graphics_composer_default.te b/display/sepolicy/hal_graphics_composer_default.te deleted file mode 100644 index c644559..0000000 --- a/display/sepolicy/hal_graphics_composer_default.te +++ /dev/null @@ -1,3 +0,0 @@ -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/pixel/dump_display.te b/display/sepolicy/pixel/dump_display.te new file mode 100644 index 0000000..5f7c5c0 --- /dev/null +++ b/display/sepolicy/pixel/dump_display.te @@ -0,0 +1,15 @@ +# Display (dump for bugreport) +pixel_bugreport(dump_pixel_display) + +allow dump_pixel_display sysfs_display:file r_file_perms; +allow dump_pixel_display vendor_displaycolor_service:service_manager find; +binder_call(dump_pixel_display, hal_graphics_composer_default) +allow dump_pixel_display vendor_dumpsys:file execute_no_trans; +allow dump_pixel_display vendor_shell_exec:file execute_no_trans; + +userdebug_or_eng(` + allow dump_pixel_display vendor_dri_debugfs:dir r_dir_perms; + allow dump_pixel_display vendor_dri_debugfs:file r_file_perms; +') +vndbinder_use(dump_pixel_display) + diff --git a/display/sepolicy/pixel/dump_display_userdebug.te b/display/sepolicy/pixel/dump_display_userdebug.te new file mode 100644 index 0000000..33b9da6 --- /dev/null +++ b/display/sepolicy/pixel/dump_display_userdebug.te @@ -0,0 +1,11 @@ +# Display eng/userdebug (dump for bugreport) +pixel_bugreport(dump_pixel_display_userdebug) + +userdebug_or_eng(` + allow dump_pixel_display_userdebug vendor_toolbox_exec:file execute_no_trans; + allow dump_pixel_display_userdebug vendor_log_file:dir search; + allow dump_pixel_display_userdebug vendor_hwc_log_file:dir r_dir_perms; + allow dump_pixel_display_userdebug vendor_hwc_log_file:file r_file_perms; + allow dump_pixel_display_userdebug debugfs_tracing_instances:dir search; + allow dump_pixel_display_userdebug debugfs_tracing_instances:file r_file_perms; +') diff --git a/display/sepolicy/pixel/file.te b/display/sepolicy/pixel/file.te new file mode 100644 index 0000000..e3f2382 --- /dev/null +++ b/display/sepolicy/pixel/file.te @@ -0,0 +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/pixel/file_contexts similarity index 55% rename from display/sepolicy/file_contexts rename to display/sepolicy/pixel/file_contexts index 66118d0..17fb960 100644 --- a/display/sepolicy/file_contexts +++ b/display/sepolicy/pixel/file_contexts @@ -1,5 +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 +/vendor/bin/dump/dump_display_userdebug\.sh u:object_r:dump_pixel_display_userdebug_exec:s0 +/vendor/bin/dump/dump_pixel_display u:object_r:dump_pixel_display_exec:s0 /data/vendor/log/hwc(/.*)? u:object_r:vendor_hwc_log_file:s0 diff --git a/display/sepolicy/pixel/genfs_contexts b/display/sepolicy/pixel/genfs_contexts new file mode 100644 index 0000000..7c46278 --- /dev/null +++ b/display/sepolicy/pixel/genfs_contexts @@ -0,0 +1,3 @@ + +genfscon debugfs /dri/0/crtc- u:object_r:vendor_dri_debugfs:s0 +genfscon sysfs /module/drm/parameters/debug u:object_r:sysfs_display:s0 diff --git a/display/sepolicy/pixel/hal_graphics_composer_default.te b/display/sepolicy/pixel/hal_graphics_composer_default.te new file mode 100644 index 0000000..9e028a0 --- /dev/null +++ b/display/sepolicy/pixel/hal_graphics_composer_default.te @@ -0,0 +1,3 @@ +allow hal_graphics_composer_default dump_pixel_display:fifo_file { append write }; +allow hal_graphics_composer_default dump_pixel_display:fd use; + diff --git a/display/sepolicy/pixel/vndservice.te b/display/sepolicy/pixel/vndservice.te new file mode 100644 index 0000000..5c3693b --- /dev/null +++ b/display/sepolicy/pixel/vndservice.te @@ -0,0 +1,2 @@ +type vendor_displaycolor_service, vndservice_manager_type; + diff --git a/display/sepolicy/pixel/vndservice_contexts b/display/sepolicy/pixel/vndservice_contexts new file mode 100644 index 0000000..9276f97 --- /dev/null +++ b/display/sepolicy/pixel/vndservice_contexts @@ -0,0 +1,2 @@ +displaycolor u:object_r:vendor_displaycolor_service:s0 + diff --git a/display/sepolicy_second_display/dump_second_display.te b/display/sepolicy_second_display/dump_second_display.te deleted file mode 100644 index 62d9c2d..0000000 --- a/display/sepolicy_second_display/dump_second_display.te +++ /dev/null @@ -1,9 +0,0 @@ -pixel_bugreport(dump_second_display) - -allow dump_second_display sysfs_display:file r_file_perms; - -userdebug_or_eng(` - allow dump_second_display vendor_dri_debugfs:dir r_dir_perms; - allow dump_second_display vendor_dri_debugfs:file r_file_perms; -') - diff --git a/display/sepolicy_second_display/exynos/dump_second_display.te b/display/sepolicy_second_display/exynos/dump_second_display.te new file mode 100644 index 0000000..70e86b8 --- /dev/null +++ b/display/sepolicy_second_display/exynos/dump_second_display.te @@ -0,0 +1,9 @@ +pixel_bugreport(dump_exynos_second_display) + +allow dump_exynos_second_display sysfs_display:file r_file_perms; + +userdebug_or_eng(` + allow dump_exynos_second_display vendor_dri_debugfs:dir r_dir_perms; + allow dump_exynos_second_display vendor_dri_debugfs:file r_file_perms; +') + diff --git a/display/sepolicy_second_display/exynos/file_contexts b/display/sepolicy_second_display/exynos/file_contexts new file mode 100644 index 0000000..02150f5 --- /dev/null +++ b/display/sepolicy_second_display/exynos/file_contexts @@ -0,0 +1,2 @@ +/vendor/bin/dump/dump_exynos_second_display u:object_r:dump_exynos_second_display_exec:s0 + diff --git a/display/sepolicy_second_display/file_contexts b/display/sepolicy_second_display/file_contexts deleted file mode 100644 index d9bb31c..0000000 --- a/display/sepolicy_second_display/file_contexts +++ /dev/null @@ -1,2 +0,0 @@ -/vendor/bin/dump/dump_second_display u:object_r:dump_second_display_exec:s0 - diff --git a/display/sepolicy_second_display/pixel/dump_second_display.te b/display/sepolicy_second_display/pixel/dump_second_display.te new file mode 100644 index 0000000..12dc81f --- /dev/null +++ b/display/sepolicy_second_display/pixel/dump_second_display.te @@ -0,0 +1,9 @@ +pixel_bugreport(dump_pixel_second_display) + +allow dump_pixel_second_display sysfs_display:file r_file_perms; + +userdebug_or_eng(` + allow dump_pixel_second_display vendor_dri_debugfs:dir r_dir_perms; + allow dump_pixel_second_display vendor_dri_debugfs:file r_file_perms; +') + diff --git a/display/sepolicy_second_display/pixel/file_contexts b/display/sepolicy_second_display/pixel/file_contexts new file mode 100644 index 0000000..686c63a --- /dev/null +++ b/display/sepolicy_second_display/pixel/file_contexts @@ -0,0 +1,2 @@ +/vendor/bin/dump/dump_pixel_second_display u:object_r:dump_pixel_second_display_exec:s0 + diff --git a/dump_chip_info/dump_chip_info.cpp b/dump_chip_info/dump_chip_info.cpp index dd83743..bbd0065 100644 --- a/dump_chip_info/dump_chip_info.cpp +++ b/dump_chip_info/dump_chip_info.cpp @@ -19,6 +19,10 @@ int main() { dumpFileContent("ap_rom_patch_ver", "/sys/devices/system/goog-chip-info/ap_rom_patch_ver"); dumpFileContent("gpcm_asic_id", "/sys/devices/system/goog-chip-info/gpcm_asic_id"); + dumpFileContent("device_table", "/sys/devices/system/goog-chip-info/device_table"); + dumpFileContent("dvfs_table", "/sys/devices/system/goog-chip-info/dvfs_table"); + dumpFileContent("hw_feature_table", "/sys/devices/system/goog-chip-info/hw_feature_table"); + dumpFileContent("ids_table", "/sys/devices/system/goog-chip-info/ids_table"); return 0; } diff --git a/dump_chip_info/sepolicy/genfs_contexts b/dump_chip_info/sepolicy/genfs_contexts index 3fda2de..ce42be1 100644 --- a/dump_chip_info/sepolicy/genfs_contexts +++ b/dump_chip_info/sepolicy/genfs_contexts @@ -1,2 +1,6 @@ genfscon sysfs /devices/system/goog-chip-info/ap_rom_patch_ver u:object_r:sysfs_chip_info:s0 genfscon sysfs /devices/system/goog-chip-info/gpcm_asic_id u:object_r:sysfs_chip_info:s0 +genfscon sysfs /devices/system/goog-chip-info/device_table u:object_r:sysfs_chip_info:s0 +genfscon sysfs /devices/system/goog-chip-info/dvfs_table u:object_r:sysfs_chip_info:s0 +genfscon sysfs /devices/system/goog-chip-info/hw_feature_table u:object_r:sysfs_chip_info:s0 +genfscon sysfs /devices/system/goog-chip-info/ids_table u:object_r:sysfs_chip_info:s0 diff --git a/edgetpu/sepolicy/edgetpu_tachyon_service.te b/edgetpu/sepolicy/edgetpu_tachyon_service.te index 80db366..642b469 100644 --- a/edgetpu/sepolicy/edgetpu_tachyon_service.te +++ b/edgetpu/sepolicy/edgetpu_tachyon_service.te @@ -42,7 +42,7 @@ allow edgetpu_tachyon_server proc_version:file r_file_perms; # Allow Tachyon service to send trace packets to Perfetto with SELinux enabled # under userdebug builds. -userdebug_or_eng(`perfetto_producer(edgetpu_tachyon_server)') +perfetto_producer(edgetpu_tachyon_server) # Allow Tachyon service to read tflite DarwiNN delegate properties get_prop(edgetpu_tachyon_server, vendor_tflite_delegate_prop) @@ -65,6 +65,4 @@ userdebug_or_eng(` ') # For shell level testing -userdebug_or_eng(` - binder_call(edgetpu_tachyon_server, shell); -') +binder_call(edgetpu_tachyon_server, shell); diff --git a/esim/esim.mk b/esim/esim.mk index 47e21b7..487f15e 100644 --- a/esim/esim.mk +++ b/esim/esim.mk @@ -1,5 +1,10 @@ +## Configuration for eSIM bootstrap + +# Enable eSIM bootstrap by default +PRODUCT_PRODUCT_PROPERTIES += setupwizard.feature.provisioning_profile_mode=true + +# init.rc and sepolcy to conditionally disable eSIM bootstrap PRODUCT_PACKAGES += init.esim-gs.rc BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/esim/sepolicy/vendor -# system_ext SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS += device/google/gs-common/esim/sepolicy/system_ext/public SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += device/google/gs-common/esim/sepolicy/system_ext/private diff --git a/euiccpixel_app/sepolicy/common/euiccpixel_app.te b/euiccpixel_app/sepolicy/common/euiccpixel_app.te index 8093b49..c38cb24 100644 --- a/euiccpixel_app/sepolicy/common/euiccpixel_app.te +++ b/euiccpixel_app/sepolicy/common/euiccpixel_app.te @@ -24,4 +24,4 @@ get_prop(euiccpixel_app, dck_prop) # b/265286368 framework UI rendering properties and file access dontaudit euiccpixel_app default_prop:file { read }; -dontaudit euiccpixel_app sysfs_gpu_uevent:file { read open getattr }; + diff --git a/euiccpixel_app/sepolicy/common/file.te b/euiccpixel_app/sepolicy/common/file.te deleted file mode 100644 index e76ee79..0000000 --- a/euiccpixel_app/sepolicy/common/file.te +++ /dev/null @@ -1,2 +0,0 @@ -# type for gpu uevent -type sysfs_gpu_uevent, sysfs_type, fs_type; diff --git a/euiccpixel_app/sepolicy/common/genfs_contexts b/euiccpixel_app/sepolicy/common/genfs_contexts deleted file mode 100644 index fc146df..0000000 --- a/euiccpixel_app/sepolicy/common/genfs_contexts +++ /dev/null @@ -1 +0,0 @@ -genfscon sysfs /devices/platform/34f00000.gpu0/uevent u:object_r:sysfs_gpu_uevent:s0 diff --git a/fingerprint/sepolicy/service_contexts b/fingerprint/sepolicy/service_contexts new file mode 100644 index 0000000..4cc220f --- /dev/null +++ b/fingerprint/sepolicy/service_contexts @@ -0,0 +1,2 @@ +# Fingerprint HAL extension +vendor.goodix.hardware.biometrics.fingerprint.IGoodixFingerprintDaemon/default u:object_r:hal_fingerprint_service:s0 diff --git a/gcam_app/sepolicy/product/private/debug_camera_app.te b/gcam_app/sepolicy/product/private/debug_camera_app.te index 4402e55..9d4643d 100644 --- a/gcam_app/sepolicy/product/private/debug_camera_app.te +++ b/gcam_app/sepolicy/product/private/debug_camera_app.te @@ -1,28 +1,16 @@ # GCANext and GCAEng. -# b/363018500 typeattribute debug_camera_app coredomain; userdebug_or_eng(` app_domain(debug_camera_app) net_domain(debug_camera_app) - allow debug_camera_app activity_service:service_manager find; - allow debug_camera_app activity_task_service:service_manager find; + allow debug_camera_app app_api_service:service_manager find; allow debug_camera_app audioserver_service:service_manager find; - allow debug_camera_app batterystats_service:service_manager find; allow debug_camera_app cameraserver_service:service_manager find; - allow debug_camera_app device_policy_service:service_manager find; - allow debug_camera_app device_state_service:service_manager find; - allow debug_camera_app gpu_service:service_manager find; allow debug_camera_app mediaextractor_service:service_manager find; allow debug_camera_app mediametrics_service:service_manager find; allow debug_camera_app mediaserver_service:service_manager find; - allow debug_camera_app powerstats_service:service_manager find; - allow debug_camera_app sensorservice_service:service_manager find; - allow debug_camera_app thermal_service:service_manager find; - allow debug_camera_app trust_service:service_manager find; - allow debug_camera_app vibrator_manager_service:service_manager find; - allow debug_camera_app virtual_device_native_service:service_manager find; # Allows GCA_Eng & GCA-Next to access the PowerHAL. hal_client_domain(debug_camera_app, hal_power) diff --git a/gcam_app/sepolicy/product/private/google_camera_app.te b/gcam_app/sepolicy/product/private/google_camera_app.te index a4c7a79..2d3d73c 100644 --- a/gcam_app/sepolicy/product/private/google_camera_app.te +++ b/gcam_app/sepolicy/product/private/google_camera_app.te @@ -3,12 +3,12 @@ typeattribute google_camera_app coredomain; app_domain(google_camera_app) net_domain(google_camera_app) -#allow google_camera_app app_api_service:service_manager find; -#allow google_camera_app audioserver_service:service_manager find; -#allow google_camera_app cameraserver_service:service_manager find; -#allow google_camera_app mediaextractor_service:service_manager find; -#allow google_camera_app mediametrics_service:service_manager find; -#allow google_camera_app mediaserver_service:service_manager find; +allow google_camera_app app_api_service:service_manager find; +allow google_camera_app audioserver_service:service_manager find; +allow google_camera_app cameraserver_service:service_manager find; +allow google_camera_app mediaextractor_service:service_manager find; +allow google_camera_app mediametrics_service:service_manager find; +allow google_camera_app mediaserver_service:service_manager find; # Allows GCA to access the PowerHAL. hal_client_domain(google_camera_app, hal_power) diff --git a/gcam_app/sepolicy/vendor/google_camera_app.te b/gcam_app/sepolicy/vendor/google_camera_app.te index 81f91ac..a1c3ddb 100644 --- a/gcam_app/sepolicy/vendor/google_camera_app.te +++ b/gcam_app/sepolicy/vendor/google_camera_app.te @@ -1,12 +1,12 @@ # GCARelease and GCADogfood. # Allows GCA to acccess the GXP device & properties. -#allow google_camera_app gxp_device:chr_file rw_file_perms; +allow google_camera_app gxp_device:chr_file rw_file_perms; get_prop(google_camera_app, vendor_gxp_prop) # Allows GCA to find and access the EdgeTPU. -#allow google_camera_app edgetpu_app_service:service_manager find; -#allow google_camera_app edgetpu_device:chr_file { getattr read write ioctl map }; +allow google_camera_app edgetpu_app_service:service_manager find; +allow google_camera_app edgetpu_device:chr_file { read write ioctl }; # Allows GCA to access the hw_jpeg /dev/video12. #allow google_camera_app hw_jpg_device:chr_file rw_file_perms; diff --git a/gps/dump/dump_gps.cpp b/gps/dump/dump_gps.cpp index e073732..7ef9cb3 100644 --- a/gps/dump/dump_gps.cpp +++ b/gps/dump/dump_gps.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -38,8 +39,9 @@ static void copyDirectory(const std::string &source, if (dir == nullptr) { return; } - - if (mkdir(outputDir.c_str(), 0777) == -1) { + struct stat st; + if (!(stat(outputDir.c_str(), &st) == 0 && S_ISDIR(st.st_mode)) && + mkdir(outputDir.c_str(), 0777) == -1) { closedir(dir); return; } @@ -53,8 +55,6 @@ static void copyDirectory(const std::string &source, std::string sourcePath = source + "/" + entryName; std::string destPath = outputDir + "/" + entryName; - - struct stat st; if (stat(sourcePath.c_str(), &st) == 0) { if (S_ISDIR(st.st_mode)) copyDirectory(sourcePath, destPath); @@ -66,6 +66,58 @@ static void copyDirectory(const std::string &source, return; } +int compareFileExtensions(const struct dirent **a, const struct dirent **b) { + int num_a, num_b; + sscanf((*a)->d_name, "rawbinlog.out.%d", &num_a); + sscanf((*b)->d_name, "rawbinlog.out.%d", &num_b); + + return num_a - num_b; +} + +void dumpLogsAscending(const char* SrcDir, const char* DestDir, int limit, const char* prefix) { + + struct dirent **dirent_list = NULL; + int num_entries = scandir(SrcDir, &dirent_list, 0, (int (*)(const struct dirent **, const struct dirent **)) alphasort); + if (!dirent_list) { + printf("Unable to scan dir: %s.\n", SrcDir); + return; + } else if (num_entries <= 0) { + printf("No file is found.\n"); + return; + } + + if (access(DestDir, R_OK)) { + printf("Unable to find folder: %s\n", DestDir); + return; + } + + qsort(dirent_list, num_entries, sizeof(struct dirent *), (int (*)(const void *, const void *)) compareFileExtensions); + + int copiedFiles = 0; + + for (int i = 0 ; i < num_entries; i++) { + + if (0 != strncmp(dirent_list[i]->d_name, prefix, strlen(prefix))) { + continue; + } + + if ((copiedFiles >= limit) && (limit != -1)) { + printf("Skipped %s\n", dirent_list[i]->d_name); + continue; + } + + copiedFiles++; + copyFile(concatenatePath(SrcDir, dirent_list[i]->d_name).c_str(), concatenatePath(DestDir, dirent_list[i]->d_name).c_str()); + } + + while (num_entries--) { + free(dirent_list[num_entries]); + } + + free(dirent_list); + return; +} + int main() { if(!::android::base::GetBoolProperty("vendor.gps.aol.enabled", false)) { printf("vendor.gps.aol.enabled is false. gps logging is not running.\n"); @@ -74,20 +126,32 @@ int main() { int maxFileNum = ::android::base::GetIntProperty(GPS_LOG_NUMBER_PROPERTY, 20); std::string outputDir = concatenatePath(BUGREPORT_PACKING_DIR, "gps"); if (mkdir(outputDir.c_str(), 0777) == -1) { - printf("Unable to create folder: %s\n", outputDir.c_str()); - return 0; + printf("Unable to create folder: %s\n", outputDir.c_str()); + return 0; + } + if (!::android::base::GetBoolProperty("vendor.gps.aol.collect.thinmd", + false)) { + printf("vendor.gps.aol.collect.thinmd is false. Collecting fils as " + "legacy Pixel.\n"); + dumpLogs(GPS_TMP_LOG_DIRECTORY, outputDir.c_str(), 1, GPS_LOG_PREFIX); + dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), 3, GPS_MCU_LOG_PREFIX); + dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), maxFileNum, + GPS_LOG_PREFIX); + dumpLogs(GPS_MALLOC_LOG_DIRECTORY, outputDir.c_str(), 1, + GPS_MALLOC_LOG_PREFIX); + dumpLogsAscending(GPS_LOG_DIRECTORY, outputDir.c_str(), 5, + GPS_RAWLOG_PREFIX); + dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), 18, + GPS_MEMDUMP_LOG_PREFIX); + } else { + printf("vendor.gps.aol.collect.thinmd is true. Collecting fils as thin " + "modem.\n"); + copyDirectory(GPS_LOG_DIRECTORY, outputDir.c_str()); } - - dumpLogs(GPS_TMP_LOG_DIRECTORY, outputDir.c_str(), 1, GPS_LOG_PREFIX); - dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), 3, GPS_MCU_LOG_PREFIX); - dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), maxFileNum, GPS_LOG_PREFIX); - dumpLogs(GPS_MALLOC_LOG_DIRECTORY, outputDir.c_str(), 1, GPS_MALLOC_LOG_PREFIX); if (access(GPS_VENDOR_CHIP_INFO, F_OK) == 0) { - copyFile(GPS_VENDOR_CHIP_INFO, concatenatePath(outputDir.c_str(), "chip.info").c_str()); + copyFile(GPS_VENDOR_CHIP_INFO, + concatenatePath(outputDir.c_str(), "chip.info").c_str()); } - dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), maxFileNum, GPS_RAWLOG_PREFIX); - dumpLogs(GPS_LOG_DIRECTORY, outputDir.c_str(), 18, GPS_MEMDUMP_LOG_PREFIX); copyDirectory(GPS_RESOURCE_DIRECTORY, concatenatePath(outputDir.c_str(), "resource")); return 0; } - diff --git a/gps/pixel/sepolicy/hal_gnss_pixel.te b/gps/pixel/sepolicy/hal_gnss_pixel.te index e3e4d92..b9e1bd4 100644 --- a/gps/pixel/sepolicy/hal_gnss_pixel.te +++ b/gps/pixel/sepolicy/hal_gnss_pixel.te @@ -24,3 +24,6 @@ allow hal_gnss_pixel vendor_gps_file:fifo_file create_file_perms; # Allow access ssrdump information allow hal_gnss_pixel sscoredump_vendor_data_crashinfo_file:file r_file_perms; allow hal_gnss_pixel sscoredump_vendor_data_crashinfo_file:dir r_dir_perms; + +# Allow pixel gnss access vendor_gps_file +allow hal_gnss_pixel vendor_gps_file:file create_file_perms; diff --git a/gril/aidl/2.1/compatibility_matrix.xml b/gril/aidl/2.1/compatibility_matrix.xml new file mode 100644 index 0000000..c1ce8f9 --- /dev/null +++ b/gril/aidl/2.1/compatibility_matrix.xml @@ -0,0 +1,10 @@ + + + vendor.google.radio_ext + 3 + + IRadioExt + default + + + diff --git a/gril/aidl/2.1/gril_aidl.mk b/gril/aidl/2.1/gril_aidl.mk new file mode 100644 index 0000000..d5bc3fc --- /dev/null +++ b/gril/aidl/2.1/gril_aidl.mk @@ -0,0 +1,4 @@ +PRODUCT_PACKAGES += vendor.google.radioext@1.0-service +DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/gril/aidl/2.1/compatibility_matrix.xml +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/aidl/2.1/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/gril/common/sepolicy diff --git a/gril/aidl/2.1/sepolicy/file_contexts b/gril/aidl/2.1/sepolicy/file_contexts new file mode 100644 index 0000000..9973b80 --- /dev/null +++ b/gril/aidl/2.1/sepolicy/file_contexts @@ -0,0 +1 @@ +/vendor/bin/hw/vendor\.google\.radioext@1\.0-service u:object_r:hal_aidl_radio_ext_exec:s0 diff --git a/gril/aidl/2.1/sepolicy/grilservice_app.te b/gril/aidl/2.1/sepolicy/grilservice_app.te new file mode 100644 index 0000000..812c8a2 --- /dev/null +++ b/gril/aidl/2.1/sepolicy/grilservice_app.te @@ -0,0 +1,4 @@ +# allow grilservice_app to find hal_radio_ext_service +allow grilservice_app hal_radio_ext_service:service_manager find; +binder_call(grilservice_app, hal_aidl_radio_ext) +binder_call(grilservice_app, twoshay) diff --git a/gril/aidl/2.1/sepolicy/hal_aidl_radio_ext.te b/gril/aidl/2.1/sepolicy/hal_aidl_radio_ext.te new file mode 100644 index 0000000..eaff153 --- /dev/null +++ b/gril/aidl/2.1/sepolicy/hal_aidl_radio_ext.te @@ -0,0 +1,36 @@ +# hal_aidl_radio_ext domain +type hal_aidl_radio_ext, domain; +type hal_aidl_radio_ext_exec, vendor_file_type, exec_type, file_type; + +init_daemon_domain(hal_aidl_radio_ext) + +get_prop(hal_aidl_radio_ext, hwservicemanager_prop) +get_prop(hal_aidl_radio_ext, telephony_modemtype_prop) +set_prop(hal_aidl_radio_ext, vendor_gril_prop) + +binder_call(hal_aidl_radio_ext, servicemanager) +binder_call(hal_aidl_radio_ext, grilservice_app) +binder_call(hal_aidl_radio_ext, hal_bluetooth_btlinux) + +add_service(hal_aidl_radio_ext, hal_radio_ext_service) + +# RW /dev/oem_ipc0 +allow hal_aidl_radio_ext radio_device:chr_file rw_file_perms; + +# RW MIPI Freq files +allow hal_aidl_radio_ext radio_vendor_data_file:dir create_dir_perms; +allow hal_aidl_radio_ext radio_vendor_data_file:file create_file_perms; + +# Bluetooth +allow hal_aidl_radio_ext hal_bluetooth_coexistence_hwservice:hwservice_manager find; +allow hal_aidl_radio_ext hal_bluetooth_coexistence_service:service_manager find; + +# Allow access to the backlight driver to set ssc_mode +allow hal_aidl_radio_ext sysfs_leds:dir search; +allow hal_aidl_radio_ext sysfs_leds:file rw_file_perms; + +# legacy/zuma/vendor +allow hal_aidl_radio_ext sysfs_display:file rw_file_perms; + +# Allow access to read display port info +allow hal_aidl_radio_ext sysfs:file r_file_perms; diff --git a/gril/aidl/2.1/sepolicy/hal_camera_default.te b/gril/aidl/2.1/sepolicy/hal_camera_default.te new file mode 100644 index 0000000..61f8001 --- /dev/null +++ b/gril/aidl/2.1/sepolicy/hal_camera_default.te @@ -0,0 +1,2 @@ +# allow hal_camera_default to binder call hal_aidl_radio_ext +binder_call(hal_camera_default, hal_aidl_radio_ext); diff --git a/gril/aidl/2.1/sepolicy/twoshay.te b/gril/aidl/2.1/sepolicy/twoshay.te new file mode 100644 index 0000000..f7d3fe1 --- /dev/null +++ b/gril/aidl/2.1/sepolicy/twoshay.te @@ -0,0 +1,2 @@ +# allow twoshay to binder call hal_aidl_radio_ext +binder_call(twoshay, hal_aidl_radio_ext) diff --git a/gril/hidl/1.7/sepolicy/grilservice_app.te b/gril/hidl/1.7/sepolicy/grilservice_app.te index 3a170b8..fd20fb4 100644 --- a/gril/hidl/1.7/sepolicy/grilservice_app.te +++ b/gril/hidl/1.7/sepolicy/grilservice_app.te @@ -2,3 +2,5 @@ allow grilservice_app hal_radio_ext_service:service_manager find; # allow grilservice_app to binder call hal_radioext_default binder_call(grilservice_app, hal_radioext_default) +# allow grilservice_app to binder call twoshay +binder_call(grilservice_app, twoshay) diff --git a/gxp/sepolicy/edgetpu_tachyon_service.te b/gxp/sepolicy/edgetpu_tachyon_service.te index 35987dd..31b7e7b 100644 --- a/gxp/sepolicy/edgetpu_tachyon_service.te +++ b/gxp/sepolicy/edgetpu_tachyon_service.te @@ -1,3 +1,7 @@ # Allow Tachyon service to access the GXP device and read GXP properties. allow edgetpu_tachyon_server gxp_device:chr_file rw_file_perms; get_prop(edgetpu_tachyon_server, vendor_gxp_prop) + +# Allow tachyon service to log to stats service for reporting metrics. +allow edgetpu_tachyon_server fwk_stats_service:service_manager find; +binder_call(edgetpu_tachyon_server, system_server); diff --git a/input/gia/aidl/compatibility_matrix.xml b/input/gia/aidl/compatibility_matrix.xml new file mode 100644 index 0000000..1a348ea --- /dev/null +++ b/input/gia/aidl/compatibility_matrix.xml @@ -0,0 +1,10 @@ + + + com.google.input.gia.core + + IGiaService + default + + 1 + + \ No newline at end of file diff --git a/input/gia/aidl/manifest.xml b/input/gia/aidl/manifest.xml new file mode 100644 index 0000000..98303c8 --- /dev/null +++ b/input/gia/aidl/manifest.xml @@ -0,0 +1,10 @@ + + + com.google.input.gia.core + + IGiaService + default + + 1 + + \ No newline at end of file diff --git a/input/gia/gia.mk b/input/gia/gia.mk new file mode 100644 index 0000000..ea079ca --- /dev/null +++ b/input/gia/gia.mk @@ -0,0 +1,11 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/input/gia/sepolicy + +PRODUCT_PACKAGES += gia +PRODUCT_PACKAGES += com.google.input.gia.giaservicemanager + +PRODUCT_SOONG_NAMESPACES += vendor/google/interfaces +PRODUCT_SOONG_NAMESPACES += vendor/google/input/gia/core +PRODUCT_SOONG_NAMESPACES += vendor/google/input/gia/core-servicemanager + +DEVICE_MANIFEST_FILE += device/google/gs-common/input/gia/aidl/manifest.xml +DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/input/gia/aidl/compatibility_matrix.xml diff --git a/input/gia/sepolicy/attributes b/input/gia/sepolicy/attributes new file mode 100644 index 0000000..1d61ad3 --- /dev/null +++ b/input/gia/sepolicy/attributes @@ -0,0 +1,2 @@ +# This macro produces: define hal_gia, hal_gia_client, hal_gia_server +hal_attribute(gia) diff --git a/input/gia/sepolicy/file_contexts b/input/gia/sepolicy/file_contexts new file mode 100644 index 0000000..99d6857 --- /dev/null +++ b/input/gia/sepolicy/file_contexts @@ -0,0 +1,2 @@ +# chmod +x in SEPolicy language +/vendor/bin/gia u:object_r:gia_exec:s0 diff --git a/input/gia/sepolicy/gia.te b/input/gia/sepolicy/gia.te new file mode 100644 index 0000000..a0244d2 --- /dev/null +++ b/input/gia/sepolicy/gia.te @@ -0,0 +1,25 @@ +# SEPolicies for GIA (Google Input interface Abstraction layer) +type gia, domain; +type gia_exec, exec_type, vendor_file_type, file_type; + +# Macro transferring gia_exec to the gia domain +init_daemon_domain(gia) + +# let this domain use the hal service +hal_client_domain(gia, hal_gia) +# allow binder communication with service_manager +binder_use(gia) + +# let this domain serve the hal service +hal_server_domain(gia, hal_gia) + +# allow gia for accessing touch related system file-nodes +allow gia sysfs_touch_gti:dir r_dir_perms; +allow gia sysfs_touch_gti:file rw_file_perms; + +# allow pixelsystemservice_app to communicate with gia +binder_use(pixelsystemservice_app) +hal_client_domain(pixelsystemservice_app, hal_gia) + +# allow gia to execute callback for pixelsystemservice_app +binder_call(gia, pixelsystemservice_app) diff --git a/input/gia/sepolicy/hal_gia.te b/input/gia/sepolicy/hal_gia.te new file mode 100644 index 0000000..b75c9fb --- /dev/null +++ b/input/gia/sepolicy/hal_gia.te @@ -0,0 +1,8 @@ +# allow binder connection from client to server +binder_call(hal_gia_client, hal_gia_server) + +# allow client to find the service & allow server to register the service +hal_attribute_service(hal_gia, hal_gia_service) + +# allow binder communication from server to service_manager +binder_use(hal_gia_server) diff --git a/input/gia/sepolicy/service.te b/input/gia/sepolicy/service.te new file mode 100644 index 0000000..aed1135 --- /dev/null +++ b/input/gia/sepolicy/service.te @@ -0,0 +1,2 @@ +# Declares GIA related services +type hal_gia_service, hal_service_type, protected_service, service_manager_type; diff --git a/input/gia/sepolicy/service_contexts b/input/gia/sepolicy/service_contexts new file mode 100644 index 0000000..b1773ec --- /dev/null +++ b/input/gia/sepolicy/service_contexts @@ -0,0 +1,2 @@ +# Attaches GIA services to the cooresponding SEPolicy group +com.google.input.gia.core.IGiaService/default u:object_r:hal_gia_service:s0 diff --git a/interrupts/Android.bp b/interrupts/Android.bp new file mode 100644 index 0000000..a4f62bc --- /dev/null +++ b/interrupts/Android.bp @@ -0,0 +1,21 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_binary { + name: "dump_interrupts_traces", + srcs: ["traces/dump_interrupts_traces.cpp"], + init_rc: ["init.interrupts.rc"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + "liblog", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/interrupts/init.interrupts.rc b/interrupts/init.interrupts.rc new file mode 100644 index 0000000..d2d0173 --- /dev/null +++ b/interrupts/init.interrupts.rc @@ -0,0 +1,22 @@ +on init + # With permissions 666, trace was not captured in the bugreport. + # Apply relaxed permissions. + chmod 777 /sys/kernel/tracing/instances/irq_gia_google + chmod 777 /sys/kernel/tracing/instances/irq_gia_google/trace + chown system system /sys/kernel/tracing/instances/irq_gia_google + chown system system /sys/kernel/tracing/instances/irq_gia_google/trace + + # There are some very high frequency IRQ events happening all the time. Tracing + # them is not absolute necessity, but a flood of them is noise for more interesting + # events that we want to capture. All these high frequency IRQs have virq < 11. + write /sys/kernel/tracing/instances/irq_gia_google/events/irq/filter "irq > 11" + + # Keep the buffer size small. This size is practically enough for debug purpose. + # Having low size helps because this entire buffer gets dumped in bugreport. + # Having a large size can impact bugreport size and time it takes to pack/unpack. + write /sys/kernel/tracing/instances/irq_gia_google/buffer_size_kb 16 + + # Reduce some GIA events from interrupt handler + write /sys/kernel/tracing/instances/irq_gia_google/events/irq_gia/gia_get_power/enable 0 + write /sys/kernel/tracing/instances/irq_gia_google/events/irq_gia/gia_put_power/enable 0 + write /sys/kernel/tracing/instances/irq_gia_google/events/irq_gia/gia_irq_eoi/enable 0 diff --git a/interrupts/interrupts.mk b/interrupts/interrupts.mk new file mode 100644 index 0000000..bf14f97 --- /dev/null +++ b/interrupts/interrupts.mk @@ -0,0 +1,3 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/interrupts/traces/sepolicy + +PRODUCT_PACKAGES += dump_interrupts_traces diff --git a/interrupts/traces/dump_interrupts_traces.cpp b/interrupts/traces/dump_interrupts_traces.cpp new file mode 100644 index 0000000..da747a3 --- /dev/null +++ b/interrupts/traces/dump_interrupts_traces.cpp @@ -0,0 +1,30 @@ +/* + * Copyright 2024 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() { + std::string outputDir = concatenatePath(BUGREPORT_PACKING_DIR, "interrupts"); + if (mkdir(outputDir.c_str(), 0777) == -1) { + printf("Unable to create folder: %s\n", outputDir.c_str()); + return 0; + } + + copyFile("/sys/kernel/tracing/instances/irq_gia_google/trace", + concatenatePath(outputDir.c_str(), "interrupts_trace").c_str()); + + return 0; +} diff --git a/interrupts/traces/sepolicy/dump_interrupts_traces.te b/interrupts/traces/sepolicy/dump_interrupts_traces.te new file mode 100644 index 0000000..bc3952a --- /dev/null +++ b/interrupts/traces/sepolicy/dump_interrupts_traces.te @@ -0,0 +1,7 @@ +# +pixel_bugreport(dump_interrupts_traces) + +allow dump_interrupts_traces radio_vendor_data_file:dir { search add_name create write }; +allow dump_interrupts_traces radio_vendor_data_file:file { getattr create write open }; +allow dump_interrupts_traces debugfs_tracing_instances:dir search; +allow dump_interrupts_traces tracefs_instances_interrupts:file { getattr read open }; diff --git a/interrupts/traces/sepolicy/file.te b/interrupts/traces/sepolicy/file.te new file mode 100644 index 0000000..4decea9 --- /dev/null +++ b/interrupts/traces/sepolicy/file.te @@ -0,0 +1,2 @@ +# +type tracefs_instances_interrupts, sysfs_type, fs_type; diff --git a/interrupts/traces/sepolicy/file_contexts b/interrupts/traces/sepolicy/file_contexts new file mode 100644 index 0000000..5a010e9 --- /dev/null +++ b/interrupts/traces/sepolicy/file_contexts @@ -0,0 +1 @@ +/vendor/bin/dump/dump_interrupts_traces u:object_r:dump_interrupts_traces_exec:s0 diff --git a/interrupts/traces/sepolicy/genfs_contexts b/interrupts/traces/sepolicy/genfs_contexts new file mode 100644 index 0000000..70223b7 --- /dev/null +++ b/interrupts/traces/sepolicy/genfs_contexts @@ -0,0 +1 @@ +genfscon tracefs /instances/irq_gia_google/trace u:object_r:tracefs_instances_interrupts:s0 diff --git a/mailbox/Android.bp b/mailbox/Android.bp new file mode 100644 index 0000000..6969685 --- /dev/null +++ b/mailbox/Android.bp @@ -0,0 +1,21 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_binary { + name: "dump_mailbox", + srcs: ["dump/dump_mailbox.cpp"], + init_rc: ["init.mailbox.rc"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + "liblog", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/mailbox/dump/dump_mailbox.cpp b/mailbox/dump/dump_mailbox.cpp new file mode 100644 index 0000000..8f63b30 --- /dev/null +++ b/mailbox/dump/dump_mailbox.cpp @@ -0,0 +1,32 @@ +/* + * Copyright 2024 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() { + std::string outputDir = concatenatePath(BUGREPORT_PACKING_DIR, "mailbox"); + if (mkdir(outputDir.c_str(), 0777) == -1) { + printf("Unable to create folder: %s\n", outputDir.c_str()); + return 0; + } + + copyFile("/sys/kernel/tracing/instances/goog_cpm_mailbox/trace", + concatenatePath(outputDir.c_str(), "goog_cpm_mailbox_trace").c_str()); + copyFile("/sys/kernel/tracing/instances/goog_nq_mailbox/trace", + concatenatePath(outputDir.c_str(), "goog_nq_mailbox_trace").c_str()); + + return 0; +} diff --git a/mailbox/dump/sepolicy/dump_mailbox.te b/mailbox/dump/sepolicy/dump_mailbox.te new file mode 100644 index 0000000..64f184c --- /dev/null +++ b/mailbox/dump/sepolicy/dump_mailbox.te @@ -0,0 +1,7 @@ +# +pixel_bugreport(dump_mailbox) +allow dump_mailbox radio_vendor_data_file:dir create_dir_perms; +allow dump_mailbox radio_vendor_data_file:file create_file_perms; +allow dump_mailbox debugfs_tracing_instances:file r_file_perms; +allow dump_mailbox debugfs_tracing_instances:dir search; +allow dump_mailbox debugfs_tracing_instances_mailbox:file r_file_perms; diff --git a/mailbox/dump/sepolicy/file.te b/mailbox/dump/sepolicy/file.te new file mode 100644 index 0000000..5bb7bc4 --- /dev/null +++ b/mailbox/dump/sepolicy/file.te @@ -0,0 +1,2 @@ +# +type debugfs_tracing_instances_mailbox, sysfs_type, fs_type; diff --git a/mailbox/dump/sepolicy/file_contexts b/mailbox/dump/sepolicy/file_contexts new file mode 100644 index 0000000..b9bea15 --- /dev/null +++ b/mailbox/dump/sepolicy/file_contexts @@ -0,0 +1 @@ +/vendor/bin/dump/dump_mailbox u:object_r:dump_mailbox_exec:s0 diff --git a/mailbox/dump/sepolicy/genfs_contexts b/mailbox/dump/sepolicy/genfs_contexts new file mode 100644 index 0000000..0bac5e8 --- /dev/null +++ b/mailbox/dump/sepolicy/genfs_contexts @@ -0,0 +1,2 @@ +genfscon tracefs /instances/goog_cpm_mailbox/trace u:object_r:debugfs_tracing_instances_mailbox:s0 +genfscon tracefs /instances/goog_nq_mailbox/trace u:object_r:debugfs_tracing_instances_mailbox:s0 diff --git a/mailbox/init.mailbox.rc b/mailbox/init.mailbox.rc new file mode 100644 index 0000000..7659290 --- /dev/null +++ b/mailbox/init.mailbox.rc @@ -0,0 +1,8 @@ +on property:sys.boot_completed=1 + chown system system /sys/kernel/tracing/instances/goog_cpm_mailbox + chown system system /sys/kernel/tracing/instances/goog_cpm_mailbox/trace + write /sys/kernel/tracing/instances/goog_cpm_mailbox/buffer_size_kb 512 + + chown system system /sys/kernel/tracing/instances/goog_nq_mailbox + chown system system /sys/kernel/tracing/instances/goog_nq_mailbox/trace + write /sys/kernel/tracing/instances/goog_nq_mailbox/buffer_size_kb 512 diff --git a/mailbox/mailbox.mk b/mailbox/mailbox.mk new file mode 100644 index 0000000..aeefb9a --- /dev/null +++ b/mailbox/mailbox.mk @@ -0,0 +1,3 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/mailbox/dump/sepolicy + +PRODUCT_PACKAGES += dump_mailbox diff --git a/mediacodec/vpu/sepolicy/mediacodec_google.te b/mediacodec/vpu/sepolicy/mediacodec_google.te index 99a3c8d..cf9dfc5 100644 --- a/mediacodec/vpu/sepolicy/mediacodec_google.te +++ b/mediacodec/vpu/sepolicy/mediacodec_google.te @@ -13,6 +13,7 @@ binder_call(mediacodec_google, hal_camera_default) allow mediacodec_google dmabuf_system_heap_device:chr_file r_file_perms; allow mediacodec_google video_device:chr_file { read write open ioctl map }; +allow mediacodec_google gpu_device:chr_file rw_file_perms; # mediacodec_google should never execute any executable without a domain transition neverallow mediacodec_google { file_type fs_type }:file execute_no_trans; diff --git a/modem/dump_modemlog/dump_modem.rs b/modem/dump_modemlog/dump_modem.rs index d9af7eb..e3b2e14 100644 --- a/modem/dump_modemlog/dump_modem.rs +++ b/modem/dump_modemlog/dump_modem.rs @@ -5,6 +5,7 @@ use std::fs; const MODEM_STAT: &str = "/data/vendor/modem_stat/debug.txt"; +const MODEM_UART: &str = "/data/vendor/radio/modem_uart_logs.txt"; const SSRDUMP_DIR: &str = "/data/vendor/ssrdump"; const RFSD_ERR_LOG_DIR: &str = "/data/vendor/log/rfsd"; const WAKEUP_EVENTS: &str = "/sys/devices/platform/cpif/wakeup_events"; @@ -64,6 +65,13 @@ fn modem_stat() { println!(); } +// Capture modem uart log if it exists +fn modem_uart() { + println!("------ Modem UART ------"); + print_file_and_handle_error(MODEM_UART); + println!(); +} + // Capture crash signatures from all modem crashes fn modem_ssr_history() { println!("------ Modem SSR history ------"); @@ -101,6 +109,7 @@ fn pcie_event_stats() { fn main() { modem_stat(); + modem_uart(); modem_ssr_history(); rfsd_error_log(); wakeup_events(); diff --git a/modem/modem_svc_sit/compatibility_matrix.xml b/modem/modem_svc_sit/compatibility_matrix.xml new file mode 100644 index 0000000..14d987a --- /dev/null +++ b/modem/modem_svc_sit/compatibility_matrix.xml @@ -0,0 +1,11 @@ + + + + com.google.pixel.shared_modem_platform + 3 + + ISharedModemPlatform + default + + + diff --git a/modem/modem_svc_sit/sepolicy/attributes b/modem/modem_svc_sit/sepolicy/attributes new file mode 100644 index 0000000..2cc802d --- /dev/null +++ b/modem/modem_svc_sit/sepolicy/attributes @@ -0,0 +1 @@ +hal_attribute(shared_modem_platform) diff --git a/modem/modem_svc_sit/sepolicy/file_contexts b/modem/modem_svc_sit/sepolicy/file_contexts new file mode 100644 index 0000000..d6f4a74 --- /dev/null +++ b/modem/modem_svc_sit/sepolicy/file_contexts @@ -0,0 +1,2 @@ +# modem_svc_sit +/vendor/bin/shared_modem_platform u:object_r:modem_svc_sit_exec:s0 \ No newline at end of file diff --git a/modem/modem_svc_sit/sepolicy/hal_shared_modem_platform.te b/modem/modem_svc_sit/sepolicy/hal_shared_modem_platform.te new file mode 100644 index 0000000..8771563 --- /dev/null +++ b/modem/modem_svc_sit/sepolicy/hal_shared_modem_platform.te @@ -0,0 +1,8 @@ +# Allow binder connection from client to server +binder_call(hal_shared_modem_platform_client, hal_shared_modem_platform_server) + +# Allow client to find the service, server to register the service +hal_attribute_service(hal_shared_modem_platform, hal_shared_modem_platform_service) + +# Allow binder communication from server to service_manager +binder_use(hal_shared_modem_platform_server) diff --git a/modem/modem_svc_sit/sepolicy/modem_svc_sit.te b/modem/modem_svc_sit/sepolicy/modem_svc_sit.te new file mode 100644 index 0000000..b1ed074 --- /dev/null +++ b/modem/modem_svc_sit/sepolicy/modem_svc_sit.te @@ -0,0 +1,2 @@ +# Modem SVC will register the default instance of the AIDL ISharedModemPlatform hal. +hal_server_domain(modem_svc_sit, hal_shared_modem_platform) diff --git a/modem/modem_svc_sit/sepolicy/service.te b/modem/modem_svc_sit/sepolicy/service.te new file mode 100644 index 0000000..0fd48ee --- /dev/null +++ b/modem/modem_svc_sit/sepolicy/service.te @@ -0,0 +1,2 @@ +# define hal_shared_modem_platform_service +type hal_shared_modem_platform_service, hal_service_type, service_manager_type; diff --git a/modem/modem_svc_sit/sepolicy/service_contexts b/modem/modem_svc_sit/sepolicy/service_contexts new file mode 100644 index 0000000..58232f7 --- /dev/null +++ b/modem/modem_svc_sit/sepolicy/service_contexts @@ -0,0 +1,2 @@ +# Bind Shared Modem Platform AIDL service name to the SELinux type. +com.google.pixel.shared_modem_platform.ISharedModemPlatform/default u:object_r:hal_shared_modem_platform_service:s0 diff --git a/modem/modem_svc_sit/shared_modem_platform.mk b/modem/modem_svc_sit/shared_modem_platform.mk new file mode 100644 index 0000000..6e9b05d --- /dev/null +++ b/modem/modem_svc_sit/shared_modem_platform.mk @@ -0,0 +1,14 @@ +# This file is not included in `modem.mk` since this is included at the +# beginning of each `device.mk` file, and so will be called before +# `SHARED_MODEM_PLATFORM_VENDOR` is defined later in the file. +# This file supoorts Whitechapel(gs101), Whitechapel Pro(gs201), Zuma, Zuma Pro. +# This file doesn't support devices which AP is after Zuma Pro. +# For device after Zuma Pro please use gs-common/modem/shared_modem_platform/shared_modem_platform.mk +SOONG_CONFIG_NAMESPACES += shared_modem_platform +SOONG_CONFIG_shared_modem_platform += \ + vendor +SOONG_CONFIG_shared_modem_platform_vendor := $(SHARED_MODEM_PLATFORM_VENDOR) + +PRODUCT_PACKAGES += shared_modem_platform +DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/modem/modem_svc_sit/compatibility_matrix.xml +BOARD_SEPOLICY_DIRS += device/google/gs-common/modem/modem_svc_sit/sepolicy diff --git a/modem/pixel_modem_service/pixel_modem_service.mk b/modem/pixel_modem_service/pixel_modem_service.mk new file mode 100644 index 0000000..266b966 --- /dev/null +++ b/modem/pixel_modem_service/pixel_modem_service.mk @@ -0,0 +1,10 @@ +# This file is not included in `modem.mk` since this is included at the +# beginning of each `device.mk` file, and so will be called before +# `PIXEL_MODEM_SERVICE_FLAVOUR` is defined later in the file. + +SOONG_CONFIG_NAMESPACES += pixel_modem_service +SOONG_CONFIG_pixel_modem_service += \ + flavour +SOONG_CONFIG_pixel_modem_service_flavour := $(PIXEL_MODEM_SERVICE_FLAVOUR) + +PRODUCT_PACKAGES += PixelModemService diff --git a/modem/shared_modem_platform/sepolicy/file.te b/modem/shared_modem_platform/sepolicy/file.te new file mode 100644 index 0000000..0f9ce9a --- /dev/null +++ b/modem/shared_modem_platform/sepolicy/file.te @@ -0,0 +1,2 @@ +# Define the type which declare in genfs_contexts +type sysfs_kernel_metrics, sysfs_type, fs_type; diff --git a/modem/shared_modem_platform/sepolicy/file_contexts b/modem/shared_modem_platform/sepolicy/file_contexts new file mode 100644 index 0000000..8760799 --- /dev/null +++ b/modem/shared_modem_platform/sepolicy/file_contexts @@ -0,0 +1,2 @@ +# shared_modem_platform +/vendor/bin/shared_modem_platform u:object_r:shared_modem_platform_exec:s0 \ No newline at end of file diff --git a/modem/shared_modem_platform/sepolicy/genfs_contexts b/modem/shared_modem_platform/sepolicy/genfs_contexts new file mode 100644 index 0000000..3075e43 --- /dev/null +++ b/modem/shared_modem_platform/sepolicy/genfs_contexts @@ -0,0 +1,6 @@ +genfscon sysfs /kernel/pixel_metrics/modem/modem_boot_duration u:object_r:sysfs_kernel_metrics:s0 +genfscon sysfs /kernel/pixel_metrics/modem/modem_wakeup_ap u:object_r:sysfs_kernel_metrics:s0 +genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_state u:object_r:sysfs_kernel_metrics:s0 +genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_duration u:object_r:sysfs_kernel_metrics:s0 +genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_stats u:object_r:sysfs_kernel_metrics:s0 +genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_updown u:object_r:sysfs_kernel_metrics:s0 diff --git a/modem/shared_modem_platform/sepolicy/shared_modem_platform.te b/modem/shared_modem_platform/sepolicy/shared_modem_platform.te new file mode 100644 index 0000000..d3cabac --- /dev/null +++ b/modem/shared_modem_platform/sepolicy/shared_modem_platform.te @@ -0,0 +1,5 @@ +# Shared modem platform will register the default instance of the AIDL ISharedModemPlatform hal. +hal_server_domain(shared_modem_platform, hal_shared_modem_platform) + +allow shared_modem_platform sysfs_kernel_metrics:file r_file_perms; + diff --git a/modem/shared_modem_platform/shared_modem_platform.mk b/modem/shared_modem_platform/shared_modem_platform.mk index 3f50c37..3c2a109 100644 --- a/modem/shared_modem_platform/shared_modem_platform.mk +++ b/modem/shared_modem_platform/shared_modem_platform.mk @@ -1,6 +1,8 @@ # This file is not included in `modem.mk` since this is included at the # beginning of each `device.mk` file, and so will be called before # `SHARED_MODEM_PLATFORM_VENDOR` is defined later in the file. +# This file supports support devices which AP is after zumapro(not include). +# For device before zumapro(include) please use gs-common/modem/modem_svc_sit/shared_modem_platform.mk SOONG_CONFIG_NAMESPACES += shared_modem_platform SOONG_CONFIG_shared_modem_platform += \ vendor @@ -8,4 +10,4 @@ SOONG_CONFIG_shared_modem_platform_vendor := $(SHARED_MODEM_PLATFORM_VENDOR) PRODUCT_PACKAGES += shared_modem_platform DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/modem/shared_modem_platform/compatibility_matrix.xml -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/modem/shared_modem_platform/sepolicy +BOARD_SEPOLICY_DIRS += device/google/gs-common/modem/shared_modem_platform/sepolicy diff --git a/performance/Android.bp b/performance/Android.bp index 5c0e0b2..6dae537 100644 --- a/performance/Android.bp +++ b/performance/Android.bp @@ -5,7 +5,10 @@ package { cc_binary { name: "dump_perf", srcs: ["dump_perf.cpp"], - init_rc: ["init.pixel-mm-gs.rc"], + init_rc: [ + "init.pixel-mm-gs.rc", + "init.pixel-perf.rc", + ], cflags: [ "-Wall", "-Wextra", diff --git a/performance/experiments/Android.bp b/performance/experiments/Android.bp new file mode 100644 index 0000000..a2f7ebe --- /dev/null +++ b/performance/experiments/Android.bp @@ -0,0 +1,10 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +sh_binary { + name: "pixel-experiments-recovery.sh", + src: "pixel-experiments-recovery.sh", + vendor: true, + init_rc: ["pixel-experiments-recovery.rc"], +} diff --git a/performance/experiments/amm/Android.bp b/performance/experiments/amm/Android.bp new file mode 100644 index 0000000..a1c2e3b --- /dev/null +++ b/performance/experiments/amm/Android.bp @@ -0,0 +1,10 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +prebuilt_etc { + name: "pixel-amm-experiment.rc", + src: "pixel-amm-experiment.rc", + vendor: true, + sub_dir: "init", +} diff --git a/performance/experiments/amm/amm.mk b/performance/experiments/amm/amm.mk new file mode 100644 index 0000000..84f2b9e --- /dev/null +++ b/performance/experiments/amm/amm.mk @@ -0,0 +1 @@ +PRODUCT_PACKAGES += pixel-amm-experiment.rc diff --git a/performance/experiments/amm/pixel-amm-experiment.rc b/performance/experiments/amm/pixel-amm-experiment.rc new file mode 100644 index 0000000..77fccba --- /dev/null +++ b/performance/experiments/amm/pixel-amm-experiment.rc @@ -0,0 +1,23 @@ +# Activate DISABLE_AMM hint. +service pixel-amm-experiment-activate /vendor/bin/sendhint -m DISABLE_AMM + user root + disabled + oneshot + +# Deactivate DISABLE_AMM hint. +service pixel-amm-experiment-deactivate /vendor/bin/sendhint -m DISABLE_AMM -e 0 + user root + disabled + oneshot + +# AMM experiment (go/pixel-perf-amm-experiment). +on property:vendor.perf.allow_experiments=1 && \ + property:vendor.pixel.system.phenotype.Perf__amm_experiment=true + setprop vendor.powerhal.amm_enabled false + start pixel-amm-experiment-activate + +# Rampdown of the experiment. +on property:vendor.perf.allow_experiments=1 && \ + property:vendor.pixel.system.phenotype.Perf__amm_experiment="" + setprop vendor.powerhal.amm_enabled "" + start pixel-amm-experiment-deactivate diff --git a/performance/experiments/apf/Android.bp b/performance/experiments/apf/Android.bp new file mode 100644 index 0000000..e5e9f7c --- /dev/null +++ b/performance/experiments/apf/Android.bp @@ -0,0 +1,10 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +prebuilt_etc { + name: "pixel-apf-experiment.rc", + src: "pixel-apf-experiment.rc", + vendor: true, + sub_dir: "init", +} diff --git a/performance/experiments/apf/apf.mk b/performance/experiments/apf/apf.mk new file mode 100644 index 0000000..d8bc338 --- /dev/null +++ b/performance/experiments/apf/apf.mk @@ -0,0 +1 @@ +PRODUCT_PACKAGES += pixel-apf-experiment.rc diff --git a/performance/experiments/apf/pixel-apf-experiment.rc b/performance/experiments/apf/pixel-apf-experiment.rc new file mode 100644 index 0000000..f160dba --- /dev/null +++ b/performance/experiments/apf/pixel-apf-experiment.rc @@ -0,0 +1,11 @@ +# APF experiment (go/pixel-perf-apf-experiment). +on property:vendor.perf.allow_experiments=1 && \ + property:vendor.pixel.system.phenotype.Perf__apf_experiment=true + setprop vendor.powerhal.apf_disabled true + setprop vendor.powerhal.apf_enabled false + +# Rampdown of the experiment. +on property:vendor.perf.allow_experiments=1 && \ + property:vendor.pixel.system.phenotype.Perf__apf_experiment="" + setprop vendor.powerhal.apf_disabled false + setprop vendor.powerhal.apf_enabled true diff --git a/performance/experiments/experiments.mk b/performance/experiments/experiments.mk new file mode 100644 index 0000000..3fbaa52 --- /dev/null +++ b/performance/experiments/experiments.mk @@ -0,0 +1,7 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/performance/experiments/sepolicy + +PRODUCT_PACKAGES += pixel-experiments-recovery.sh + +include device/google/gs-common/performance/experiments/kswapd/kswapd.mk +include device/google/gs-common/performance/experiments/apf/apf.mk +include device/google/gs-common/performance/experiments/amm/amm.mk diff --git a/performance/experiments/kswapd/Android.bp b/performance/experiments/kswapd/Android.bp new file mode 100644 index 0000000..23af711 --- /dev/null +++ b/performance/experiments/kswapd/Android.bp @@ -0,0 +1,10 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +prebuilt_etc { + name: "pixel-kswapd-experiment.rc", + src: "pixel-kswapd-experiment.rc", + vendor: true, + sub_dir: "init", +} diff --git a/performance/experiments/kswapd/kswapd.mk b/performance/experiments/kswapd/kswapd.mk new file mode 100644 index 0000000..15d762f --- /dev/null +++ b/performance/experiments/kswapd/kswapd.mk @@ -0,0 +1 @@ +PRODUCT_PACKAGES += pixel-kswapd-experiment.rc diff --git a/performance/experiments/kswapd/pixel-kswapd-experiment.rc b/performance/experiments/kswapd/pixel-kswapd-experiment.rc new file mode 100644 index 0000000..36dcac3 --- /dev/null +++ b/performance/experiments/kswapd/pixel-kswapd-experiment.rc @@ -0,0 +1,28 @@ +# Kswapd experiment - allow kswapd to run on all cores. We only target zuma and +# zumapro because these are the only platforms where kswapd avoids big cores by +# default. + +on property:vendor.perf.allow_experiments=1 \ + && property:ro.board.platform=zuma \ + && property:vendor.pixel.system.phenotype.Perf__kswapd_experiment=true + write /sys/kernel/vendor_mm/kswapd_cpu_affinity 1ff + +on property:vendor.perf.allow_experiments=1 \ + && property:ro.board.platform=zumapro \ + && property:vendor.pixel.system.phenotype.Perf__kswapd_experiment=true + write /sys/kernel/vendor_mm/kswapd_cpu_affinity ff + + +# Kswapd experiment rampdown - restore CPU affinity to the default. + +on property:vendor.perf.allow_experiments=1 \ + && property:ro.board.platform=zuma \ + && property:vendor.pixel.system.phenotype.Perf__kswapd_experiment="" + # Value is from device/google/zuma/conf/init.zuma.rc + write /sys/kernel/vendor_mm/kswapd_cpu_affinity ff + +on property:vendor.perf.allow_experiments=1 \ + && property:ro.board.platform=zumapro \ + && property:vendor.pixel.system.phenotype.Perf__kswapd_experiment="" + # Value is from device/google/zumapro/conf/init.zumapro.soc.rc + write /sys/kernel/vendor_mm/kswapd_cpu_affinity 7f diff --git a/performance/experiments/pixel-experiments-recovery.rc b/performance/experiments/pixel-experiments-recovery.rc new file mode 100644 index 0000000..a8247c3 --- /dev/null +++ b/performance/experiments/pixel-experiments-recovery.rc @@ -0,0 +1,17 @@ +# pixel-experiments-recovery.sh waits Perf__experiments_delay_seconds and sets +# vendor.perf.allow_experiments=1, triggering experiments. +service pixel-experiments-recovery /vendor/bin/pixel-experiments-recovery.sh \ + ${vendor.pixel.system.phenotype.Perf__experiments_delay_seconds} + class main + user root + group root system + oneshot + disabled + +# vendor.pixel.system.phenotype.Perf__xxx properties are set sometime after the +# device is unlocked for the first time. The check for sys.boot_completed is not +# strictly needed, but will prevent surprises if for some reason the property +# is set early. +on property:sys.boot_completed=1 && \ + property:vendor.pixel.system.phenotype.Perf__experiments_delay_seconds=* + restart pixel-experiments-recovery diff --git a/performance/experiments/pixel-experiments-recovery.sh b/performance/experiments/pixel-experiments-recovery.sh new file mode 100755 index 0000000..188222e --- /dev/null +++ b/performance/experiments/pixel-experiments-recovery.sh @@ -0,0 +1,15 @@ +#!/vendor/bin/sh + +# This script delays experiments by the specified amount of seconds. The delay is not needed for +# the normal operation, but becomes essential for the rare case (which "should not happen") where +# an experiment causes really bad issues (e.g. crashes the kernel). In such case the delay gives +# GMSCore an opportunity to fetch fresh experiments snapshot (with the bad experiment disabled). +# +# See go/pixel-perf-experiment-whatif for more info. + +delay_seconds="$1" + +if [ -n "$delay_seconds" ]; then + sleep "$delay_seconds" + /vendor/bin/setprop vendor.perf.allow_experiments 1 +fi diff --git a/performance/experiments/sepolicy/file_contexts b/performance/experiments/sepolicy/file_contexts new file mode 100644 index 0000000..7364807 --- /dev/null +++ b/performance/experiments/sepolicy/file_contexts @@ -0,0 +1 @@ +/vendor/bin/pixel-experiments-recovery\.sh u:object_r:pixel-experiments-recovery-sh_exec:s0 diff --git a/performance/experiments/sepolicy/pixel-experiments-recovery.sh.te b/performance/experiments/sepolicy/pixel-experiments-recovery.sh.te new file mode 100644 index 0000000..2da555b --- /dev/null +++ b/performance/experiments/sepolicy/pixel-experiments-recovery.sh.te @@ -0,0 +1,10 @@ +# Rules for pixel-experiments-recovery.sh + +type pixel-experiments-recovery-sh, domain; +type pixel-experiments-recovery-sh_exec, exec_type, vendor_file_type, file_type; + +init_daemon_domain(pixel-experiments-recovery-sh) + +# Allow "setprop vendor.perf.allow_experiments". +allow pixel-experiments-recovery-sh vendor_toolbox_exec:file { execute_no_trans }; +set_prop(pixel-experiments-recovery-sh, vendor_perf_allow_experiments_prop) diff --git a/performance/experiments/sepolicy/property.te b/performance/experiments/sepolicy/property.te new file mode 100644 index 0000000..e43312c --- /dev/null +++ b/performance/experiments/sepolicy/property.te @@ -0,0 +1,3 @@ +# Properties shared between experiments. + +vendor_internal_prop(vendor_perf_allow_experiments_prop) diff --git a/performance/experiments/sepolicy/property_contexts b/performance/experiments/sepolicy/property_contexts new file mode 100644 index 0000000..50de9c1 --- /dev/null +++ b/performance/experiments/sepolicy/property_contexts @@ -0,0 +1 @@ +vendor.perf.allow_experiments u:object_r:vendor_perf_allow_experiments_prop:s0 diff --git a/performance/init.pixel-perf.rc b/performance/init.pixel-perf.rc new file mode 100644 index 0000000..4899417 --- /dev/null +++ b/performance/init.pixel-perf.rc @@ -0,0 +1,188 @@ +# Copyright (C) 2024 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. + +on init + chown system system /proc/vendor_sched/groups/bg/set_task_group + chown system system /proc/vendor_sched/groups/cam/set_task_group + chown system system /proc/vendor_sched/groups/fg/set_task_group + chown system system /proc/vendor_sched/groups/nnapi/set_task_group + chown system system /proc/vendor_sched/groups/sys/set_task_group + chown system system /proc/vendor_sched/groups/sys_bg/set_task_group + chown system system /proc/vendor_sched/groups/ta/set_task_group + chown system system /proc/vendor_sched/groups/rt/set_task_group + chown system system /proc/vendor_sched/groups/sf/set_task_group + chown system system /proc/vendor_sched/groups/dex2oat/set_task_group + chown system system /proc/vendor_sched/groups/cam_power/set_task_group + chown system system /proc/vendor_sched/groups/ota/set_task_group + chown system system /proc/vendor_sched/groups/fg_wi/set_task_group + chown system system /proc/vendor_sched/groups/bg/set_proc_group + chown system system /proc/vendor_sched/groups/cam/set_proc_group + chown system system /proc/vendor_sched/groups/fg/set_proc_group + chown system system /proc/vendor_sched/groups/nnapi/set_proc_group + chown system system /proc/vendor_sched/groups/sys/set_proc_group + chown system system /proc/vendor_sched/groups/sys_bg/set_proc_group + chown system system /proc/vendor_sched/groups/ta/set_proc_group + chown system system /proc/vendor_sched/groups/rt/set_proc_group + chown system system /proc/vendor_sched/groups/sf/set_proc_group + chown system system /proc/vendor_sched/groups/dex2oat/set_proc_group + chown system system /proc/vendor_sched/groups/cam_power/set_proc_group + chown system system /proc/vendor_sched/groups/ota/set_proc_group + chown system system /proc/vendor_sched/groups/fg_wi/set_proc_group + chown system system /proc/vendor_sched/prefer_idle_set + chown system system /proc/vendor_sched/prefer_idle_clear + chown system system /proc/vendor_sched/pmu_poll_enable + chown system system /proc/vendor_sched/pmu_poll_time + chown system system /proc/vendor_sched/uclamp_fork_reset_clear + chown system system /proc/vendor_sched/uclamp_fork_reset_set + + chmod 0220 /proc/vendor_sched/groups/bg/set_task_group + chmod 0220 /proc/vendor_sched/groups/cam/set_task_group + chmod 0220 /proc/vendor_sched/groups/fg/set_task_group + chmod 0220 /proc/vendor_sched/groups/nnapi/set_task_group + chmod 0220 /proc/vendor_sched/groups/sys/set_task_group + chmod 0220 /proc/vendor_sched/groups/sys_bg/set_task_group + chmod 0220 /proc/vendor_sched/groups/ta/set_task_group + chmod 0220 /proc/vendor_sched/groups/rt/set_task_group + chmod 0220 /proc/vendor_sched/groups/sf/set_task_group + chmod 0220 /proc/vendor_sched/groups/dex2oat/set_task_group + chmod 0220 /proc/vendor_sched/groups/cam_power/set_task_group + chmod 0220 /proc/vendor_sched/groups/ota/set_task_group + chmod 0220 /proc/vendor_sched/groups/fg_wi/set_task_group + chmod 0220 /proc/vendor_sched/groups/bg/set_proc_group + chmod 0220 /proc/vendor_sched/groups/cam/set_proc_group + chmod 0220 /proc/vendor_sched/groups/fg/set_proc_group + chmod 0220 /proc/vendor_sched/groups/nnapi/set_proc_group + chmod 0220 /proc/vendor_sched/groups/sys/set_proc_group + chmod 0220 /proc/vendor_sched/groups/sys_bg/set_proc_group + chmod 0220 /proc/vendor_sched/groups/ta/set_proc_group + chmod 0220 /proc/vendor_sched/groups/rt/set_proc_group + chmod 0220 /proc/vendor_sched/groups/sf/set_proc_group + chmod 0220 /proc/vendor_sched/groups/dex2oat/set_proc_group + chmod 0220 /proc/vendor_sched/groups/cam_power/set_proc_group + chmod 0220 /proc/vendor_sched/groups/ota/set_proc_group + chmod 0220 /proc/vendor_sched/groups/fg_wi/set_proc_group + chmod 0220 /proc/vendor_sched/prefer_idle_set + chmod 0220 /proc/vendor_sched/prefer_idle_clear + chmod 0660 /proc/vendor_sched/pmu_poll_enable + chmod 0220 /proc/vendor_sched/pmu_poll_time + chmod 0220 /proc/vendor_sched/uclamp_fork_reset_clear + chmod 0220 /proc/vendor_sched/uclamp_fork_reset_set + + # Change permission of sched qos nodes + chown system system /proc/vendor_sched/sched_qos/adpf_set + chown system system /proc/vendor_sched/sched_qos/adpf_clear + chown system system /proc/vendor_sched/sched_qos/auto_uclamp_max_set + chown system system /proc/vendor_sched/sched_qos/auto_uclamp_max_clear + chown system system /proc/vendor_sched/sched_qos/boost_prio_set + chown system system /proc/vendor_sched/sched_qos/boost_prio_clear + chown system system /proc/vendor_sched/sched_qos/preempt_wakeup_set + chown system system /proc/vendor_sched/sched_qos/preempt_wakeup_clear + chown system system /proc/vendor_sched/sched_qos/prefer_fit_set + chown system system /proc/vendor_sched/sched_qos/prefer_fit_clear + chown system system /proc/vendor_sched/sched_qos/prefer_high_cap_set + chown system system /proc/vendor_sched/sched_qos/prefer_high_cap_clear + chown system system /proc/vendor_sched/sched_qos/prefer_idle_set + chown system system /proc/vendor_sched/sched_qos/prefer_idle_clear + chown system system /proc/vendor_sched/sched_qos/rampup_multiplier_set + chown system system /proc/vendor_sched/sched_qos/rampup_multiplier_clear + + chmod 0220 /proc/vendor_sched/sched_qos/adpf_set + chmod 0220 /proc/vendor_sched/sched_qos/adpf_clear + chmod 0220 /proc/vendor_sched/sched_qos/auto_uclamp_max_set + chmod 0220 /proc/vendor_sched/sched_qos/auto_uclamp_max_clear + chmod 0220 /proc/vendor_sched/sched_qos/boost_prio_set + chmod 0220 /proc/vendor_sched/sched_qos/boost_prio_clear + chmod 0220 /proc/vendor_sched/sched_qos/preempt_wakeup_set + chmod 0220 /proc/vendor_sched/sched_qos/preempt_wakeup_clear + chmod 0220 /proc/vendor_sched/sched_qos/prefer_fit_set + chmod 0220 /proc/vendor_sched/sched_qos/prefer_fit_clear + chmod 0220 /proc/vendor_sched/sched_qos/prefer_high_cap_set + chmod 0220 /proc/vendor_sched/sched_qos/prefer_high_cap_clear + chmod 0220 /proc/vendor_sched/sched_qos/prefer_idle_set + chmod 0220 /proc/vendor_sched/sched_qos/prefer_idle_clear + chmod 0220 /proc/vendor_sched/sched_qos/rampup_multiplier_set + chmod 0220 /proc/vendor_sched/sched_qos/rampup_multiplier_clear + + # Enable sched_qos for some groups + write /proc/vendor_sched/groups/ta/qos_adpf_enable 1 + write /proc/vendor_sched/groups/ta/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/ta/qos_boost_prio_enable 1 + write /proc/vendor_sched/groups/ta/qos_preempt_wakeup_enable 1 + write /proc/vendor_sched/groups/ta/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/ta/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/ta/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/ta/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/fg/qos_adpf_enable 1 + write /proc/vendor_sched/groups/fg/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/fg/qos_boost_prio_enable 1 + write /proc/vendor_sched/groups/fg/qos_preempt_wakeup_enable 1 + write /proc/vendor_sched/groups/fg/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/fg/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/fg/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/fg/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_adpf_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_boost_prio_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_preempt_wakeup_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/fg_wi/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/cam/qos_adpf_enable 1 + write /proc/vendor_sched/groups/cam/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/cam/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/cam/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/cam/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/cam/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_adpf_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_auto_uclamp_max_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_prefer_fit_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_prefer_high_cap_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_prefer_idle_enable 1 + write /proc/vendor_sched/groups/cam_power/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/rt/qos_adpf_enable 1 + write /proc/vendor_sched/groups/rt/qos_rampup_multiplier_enable 1 + write /proc/vendor_sched/groups/sf/qos_adpf_enable 1 + write /proc/vendor_sched/groups/sf/qos_rampup_multiplier_enable 1 + + # cpufreq governor setting + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor sched_pixel + write /sys/devices/system/cpu/cpu8/cpufreq/scaling_governor sched_pixel + + write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu1/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu2/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu3/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu5/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu7/cpufreq/sched_pixel/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/up_rate_limit_us 500 + + write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu1/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu2/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu3/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu5/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu7/cpufreq/sched_pixel/down_rate_limit_us 500 + write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us 500 diff --git a/performance/sepolicy/hal_power_default.te b/performance/sepolicy/hal_power_default.te index 309e8f7..5b010fc 100644 --- a/performance/sepolicy/hal_power_default.te +++ b/performance/sepolicy/hal_power_default.te @@ -1,3 +1,10 @@ +# allow power hal to access pa kill knobs allow hal_power_default sysfs_pakills:file rw_file_perms; allow hal_power_default sysfs_pakills:dir r_dir_perms; r_dir_file(hal_power_default, sysfs_vendor_mm); + +# allow power hal to access vendor_mm knobs +allow hal_power_default sysfs_vendor_mm:file rw_file_perms; + +# Allow set display early wake up +allow hal_power_default sysfs_display:file rw_file_perms; diff --git a/performance/sepolicy/init.te b/performance/sepolicy/init.te new file mode 100644 index 0000000..5d1d13f --- /dev/null +++ b/performance/sepolicy/init.te @@ -0,0 +1,2 @@ +# zram +allow init ram_device:blk_file w_file_perms; diff --git a/performance/sepolicy/proc_vendor_sched.te b/performance/sepolicy/proc_vendor_sched.te new file mode 100644 index 0000000..dc78c75 --- /dev/null +++ b/performance/sepolicy/proc_vendor_sched.te @@ -0,0 +1,2 @@ +#Vendor Sched +allow proc_vendor_sched proc:filesystem associate; diff --git a/sepolicy/Android.bp b/sepolicy/Android.bp index 160e494..be5970c 100644 --- a/sepolicy/Android.bp +++ b/sepolicy/Android.bp @@ -3,3 +3,9 @@ se_flags { flags: ["RELEASE_USB_UDC_SYSFS_SELINUX_POLICY_ENABLED"], export_to: ["all_selinux_flags"], } + +se_flags { + name: "pixel_selinux_flags", + flags: ["RELEASE_PIXEL_MALI_SEPOLICY_ENABLED"], + export_to: ["all_selinux_flags"], +} diff --git a/storage/Android.bp b/storage/Android.bp index 3a06113..eb806bc 100644 --- a/storage/Android.bp +++ b/storage/Android.bp @@ -14,8 +14,15 @@ cc_binary { shared_libs: [ "libbase", "libdump", - "liblog", + "liblog", ], vendor: true, relative_install_path: "dump", } + +sh_binary { + name: "storage_intelligence.sh", + src: "storage_intelligence.sh", + init_rc: ["storage.intelligence.rc"], + vendor: true, +} diff --git a/storage/init.storage.rc b/storage/init.storage.rc index 77057cd..943c483 100644 --- a/storage/init.storage.rc +++ b/storage/init.storage.rc @@ -1,3 +1,11 @@ +on init + # Make foreground and background I/O priority different. none-to-rt was + # introduced in kernel 5.14. promote-to-rt was introduced in kernel 6.5. + # Write none-to-rt first and promote-to-rt next to support both older and + # newer kernel versions. + write /dev/blkio/blkio.prio.class none-to-rt + write /dev/blkio/blkio.prio.class promote-to-rt + on property:ro.build.type=userdebug write /dev/sys/block/bootdevice/pixel/enable_pixel_ufs_logging 1 chown system /dev/sg3 @@ -34,17 +42,13 @@ on init # UFS write /dev/sys/block/bootdevice/clkgate_enable 0 + write /dev/sys/block/bootdevice/wb_on 0 + write /dev/sys/block/bootdevice/enable_wb_buf_flush 0 on property:sys.boot_completed=1 - # Make foreground and background I/O priority different. none-to-rt was - # introduced in kernel 5.14. promote-to-rt was introduced in kernel 6.5. - # Write none-to-rt first and promote-to-rt next to support both older and - # newer kernel versions. - write /dev/blkio/blkio.prio.class none-to-rt - write /dev/blkio/blkio.prio.class promote-to-rt - # Health Storage HAL chown system system /dev/sys/block/bootdevice/manual_gc + write /dev/sys/block/bootdevice/manual_gc 0 # Pixelstats chown system system /dev/sys/block/bootdevice/slowio_read_cnt diff --git a/storage/sepolicy/file.te b/storage/sepolicy/file.te index 0fa9564..59b739d 100644 --- a/storage/sepolicy/file.te +++ b/storage/sepolicy/file.te @@ -4,3 +4,5 @@ type dump_storage_data_file, file_type, data_file_type; type sg_device, dev_type; type sg_util_exec, exec_type, vendor_file_type, file_type; +# Intelligence Service +type intelligence_data_file, file_type, data_file_type; diff --git a/storage/sepolicy/file_contexts b/storage/sepolicy/file_contexts index 1ef5a67..18527fb 100644 --- a/storage/sepolicy/file_contexts +++ b/storage/sepolicy/file_contexts @@ -1,9 +1,13 @@ # storage -/vendor/bin/dump/dump_storage u:object_r:dump_storage_exec:s0 -/sys/devices/platform/[0-9a-z]+\.ufs/pixel/enable_pixel_ufs_logging u:object_r:sysfs_scsi_devices_0000:s0 -/dev/sg[0-9] u:object_r:sg_device:s0 -/data/vendor/storage(/.*)? u:object_r:dump_storage_data_file:s0 -/vendor/bin/sg_read_buffer u:object_r:sg_util_exec:s0 -/dev/block/by-name/userdata_exp.* u:object_r:userdata_exp_block_device:s0 -/vendor/bin/ufs_firmware_update\.sh u:object_r:ufs_firmware_update_exec:s0 +/data/vendor/intelligence(/.*)? u:object_r:intelligence_data_file:s0 +/data/vendor/storage(/.*)? u:object_r:dump_storage_data_file:s0 +/dev/block/by-name/userdata_exp.* u:object_r:userdata_exp_block_device:s0 +/dev/sg[0-9] u:object_r:sg_device:s0 + +/sys/devices/platform/[0-9a-z]+\.ufs/pixel/enable_pixel_ufs_logging u:object_r:sysfs_scsi_devices_0000:s0 + +/vendor/bin/dump/dump_storage u:object_r:dump_storage_exec:s0 +/vendor/bin/sg_read_buffer u:object_r:sg_util_exec:s0 +/vendor/bin/storage_intelligence\.sh u:object_r:storage_intelligence_exec:s0 +/vendor/bin/ufs_firmware_update\.sh u:object_r:ufs_firmware_update_exec:s0 diff --git a/storage/sepolicy/init.te b/storage/sepolicy/init.te index dc24247..464ca4b 100644 --- a/storage/sepolicy/init.te +++ b/storage/sepolicy/init.te @@ -1,3 +1,4 @@ # init allow init sysfs_scsi_devices_0000:file w_file_perms; +dontaudit init intelligence_data_file:dir mounton; diff --git a/storage/sepolicy/kernel.te b/storage/sepolicy/kernel.te new file mode 100644 index 0000000..55882ed --- /dev/null +++ b/storage/sepolicy/kernel.te @@ -0,0 +1,3 @@ +# for intelligence service + +allow kernel userdata_exp_block_device:blk_file read; diff --git a/storage/sepolicy/property.te b/storage/sepolicy/property.te new file mode 100644 index 0000000..598c71a --- /dev/null +++ b/storage/sepolicy/property.te @@ -0,0 +1,3 @@ +# for intelligence service + +vendor_internal_prop(vendor_intelligence_prop) diff --git a/storage/sepolicy/property_contexts b/storage/sepolicy/property_contexts new file mode 100644 index 0000000..b436986 --- /dev/null +++ b/storage/sepolicy/property_contexts @@ -0,0 +1 @@ +persist.vendor.intelligence u:object_r:vendor_intelligence_prop:s0 diff --git a/storage/sepolicy/storage_intelligence.te b/storage/sepolicy/storage_intelligence.te new file mode 100644 index 0000000..66d14df --- /dev/null +++ b/storage/sepolicy/storage_intelligence.te @@ -0,0 +1,12 @@ +# support intelligence service +init_daemon_domain(storage_intelligence) +type storage_intelligence, domain; +type storage_intelligence_exec, vendor_file_type, exec_type, file_type; + +set_prop(storage_intelligence, vendor_intelligence_prop); + +allow storage_intelligence vendor_toolbox_exec:file execute_no_trans; + +# for storage management +allow storage_intelligence block_device:dir { search }; +allow storage_intelligence userdata_exp_block_device:blk_file rw_file_perms; diff --git a/storage/sepolicy/tracking_denials/bug_map b/storage/sepolicy/tracking_denials/bug_map new file mode 100644 index 0000000..a1e8298 --- /dev/null +++ b/storage/sepolicy/tracking_denials/bug_map @@ -0,0 +1 @@ +shell vendor_intelligence_prop file b/378120929 diff --git a/storage/sepolicy/vendor_init.te b/storage/sepolicy/vendor_init.te index 73eb527..cbb2990 100644 --- a/storage/sepolicy/vendor_init.te +++ b/storage/sepolicy/vendor_init.te @@ -4,3 +4,5 @@ allow vendor_init sg_device:chr_file r_file_perms; # dirty swappiness allow vendor_init proc_dirty:file w_file_perms; +# intelligence +set_prop(vendor_init, vendor_intelligence_prop); diff --git a/storage/storage.intelligence.rc b/storage/storage.intelligence.rc new file mode 100644 index 0000000..85586ab --- /dev/null +++ b/storage/storage.intelligence.rc @@ -0,0 +1,23 @@ +# For intelligence service +# on -> mount(ok) -> on +# off -> write_zeroes -> remove -> rm(ok) -> disable +# on -> mount(fail) -> remove -> rm(ok) -> disable + +service storage_intelligence /vendor/bin/storage_intelligence.sh + user root + disabled + oneshot + +on boot && property:persist.vendor.intelligence=on + mkdir /data/vendor/intelligence 0770 vendor_intelligence vendor_intelligence + restorecon_recursive /data/vendor/intelligence + mount f2fs loop@/dev/block/by-name/userdata_exp.ai /data/vendor/intelligence ro + start storage_intelligence + +on boot && property:persist.vendor.intelligence=off + start storage_intelligence + +on property:persist.vendor.intelligence=remove + rm /data/userdata_exp.ai + rmdir /data/vendor/intelligence + setprop persist.vendor.intelligence disable diff --git a/storage/storage.mk b/storage/storage.mk index ee7110c..c81d15e 100644 --- a/storage/storage.mk +++ b/storage/storage.mk @@ -1,4 +1,6 @@ -BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/storage/sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += \ + device/google/gs-common/storage/sepolicy \ + device/google/gs-common/storage/sepolicy/tracking_denials PRODUCT_PACKAGES += dump_storage diff --git a/storage/storage_intelligence.sh b/storage/storage_intelligence.sh new file mode 100755 index 0000000..03d2ca7 --- /dev/null +++ b/storage/storage_intelligence.sh @@ -0,0 +1,24 @@ +#!/vendor/bin/sh +# +# The script belongs to the feature of UFS FFU via OTA: go/p23-ffu-ota +# Its purpose is to copy the corresponding firmware into partition for UFS FFU. + + +property="persist.vendor.intelligence" +partition="/dev/block/by-name/userdata_exp.ai" +mount_point="/data/vendor/intelligence" +backend_file="/data/userdata_exp.ai" + +request=`getprop $property` + +if [ "$request" == "on" ]; then + mounted=`grep $mount_point /proc/mounts` + if [ "$mounted" ]; then + setprop $property on + else + setprop $property remove + fi +elif [ "$request" == "off" ]; then + dd if=/dev/zero of=$partition bs=4k count=2 + setprop $property remove +fi diff --git a/storage/tracking_denials/bug_map b/storage/tracking_denials/bug_map new file mode 100644 index 0000000..a1e8298 --- /dev/null +++ b/storage/tracking_denials/bug_map @@ -0,0 +1 @@ +shell vendor_intelligence_prop file b/378120929 diff --git a/touch/predump/predump_touch.sh b/touch/predump/predump_touch.sh index 6a0c738..de2bdc4 100644 --- a/touch/predump/predump_touch.sh +++ b/touch/predump/predump_touch.sh @@ -4,6 +4,10 @@ DIR=/data/vendor/dump_touch SCRIPT_DIR=/vendor/bin/dump_touch LOCKFILE="$DIR"/dumping LOGFILE="$DIR"/dump.log +DEBUG_START_TIME="$DIR"/start +DEBUG_END_TIME="$DIR"/end + +date +%s%N > $DEBUG_START_TIME if [ ! -f $LOCKFILE ] then @@ -41,4 +45,4 @@ fi echo 2 > $LOCKFILE - +date +%s%N > $DEBUG_END_TIME diff --git a/touch/twoshay/aidl/compatibility_matrix_gs101.xml b/touch/twoshay/aidl/compatibility_matrix_gs101.xml index aaa2d6e..4144ee5 100644 --- a/touch/twoshay/aidl/compatibility_matrix_gs101.xml +++ b/touch/twoshay/aidl/compatibility_matrix_gs101.xml @@ -1,7 +1,7 @@ com.google.input - 2-3 + 2-4 ITouchContextService default diff --git a/touch/twoshay/aidl/compatibility_matrix_zuma.xml b/touch/twoshay/aidl/compatibility_matrix_zuma.xml index 25d5c50..0a40501 100644 --- a/touch/twoshay/aidl/compatibility_matrix_zuma.xml +++ b/touch/twoshay/aidl/compatibility_matrix_zuma.xml @@ -1,7 +1,7 @@ com.google.input - 2-3 + 2-4 ITouchContextService default @@ -9,7 +9,7 @@ com.google.input.algos.gril - 2-3 + 2-4 IGrilAntennaTuningService default @@ -17,7 +17,7 @@ com.google.input.algos.spd - 2-3 + 2-4 IScreenProtectorDetectorService default diff --git a/touch/twoshay/aidl/manifest_gs101.xml b/touch/twoshay/aidl/manifest_gs101.xml index 28472a0..3972367 100644 --- a/touch/twoshay/aidl/manifest_gs101.xml +++ b/touch/twoshay/aidl/manifest_gs101.xml @@ -1,7 +1,7 @@ com.google.input - 3 + 4 ITouchContextService default diff --git a/touch/twoshay/aidl/manifest_zuma.xml b/touch/twoshay/aidl/manifest_zuma.xml index dbac77d..e911d31 100644 --- a/touch/twoshay/aidl/manifest_zuma.xml +++ b/touch/twoshay/aidl/manifest_zuma.xml @@ -1,7 +1,7 @@ com.google.input - 3 + 4 ITouchContextService default @@ -9,7 +9,7 @@ com.google.input.algos.gril - 3 + 4 IGrilAntennaTuningService default @@ -17,7 +17,7 @@ com.google.input.algos.spd - 3 + 4 IScreenProtectorDetectorService default diff --git a/tts/de-de/de-de-x-multi-r53.zvoice b/tts/de-de/de-de-x-multi-r57.zvoice similarity index 63% rename from tts/de-de/de-de-x-multi-r53.zvoice rename to tts/de-de/de-de-x-multi-r57.zvoice index 87a9b04..1660eab 100644 Binary files a/tts/de-de/de-de-x-multi-r53.zvoice and b/tts/de-de/de-de-x-multi-r57.zvoice differ diff --git a/tts/es-es/es-es-x-multi-r52.zvoice b/tts/es-es/es-es-x-multi-r56.zvoice similarity index 53% rename from tts/es-es/es-es-x-multi-r52.zvoice rename to tts/es-es/es-es-x-multi-r56.zvoice index 5f8c243..a63cdc4 100644 Binary files a/tts/es-es/es-es-x-multi-r52.zvoice and b/tts/es-es/es-es-x-multi-r56.zvoice differ diff --git a/tts/fr-fr/fr-fr-x-multi-r53.zvoice b/tts/fr-fr/fr-fr-x-multi-r57.zvoice similarity index 66% rename from tts/fr-fr/fr-fr-x-multi-r53.zvoice rename to tts/fr-fr/fr-fr-x-multi-r57.zvoice index 71ad1ca..4aa6148 100644 Binary files a/tts/fr-fr/fr-fr-x-multi-r53.zvoice and b/tts/fr-fr/fr-fr-x-multi-r57.zvoice differ diff --git a/tts/it-it/it-it-x-multi-r49.zvoice b/tts/it-it/it-it-x-multi-r54.zvoice similarity index 59% rename from tts/it-it/it-it-x-multi-r49.zvoice rename to tts/it-it/it-it-x-multi-r54.zvoice index c1ecf15..e016410 100644 Binary files a/tts/it-it/it-it-x-multi-r49.zvoice and b/tts/it-it/it-it-x-multi-r54.zvoice differ diff --git a/tts/ja-jp/ja-jp-x-multi-r51.zvoice b/tts/ja-jp/ja-jp-x-multi-r55.zvoice similarity index 68% rename from tts/ja-jp/ja-jp-x-multi-r51.zvoice rename to tts/ja-jp/ja-jp-x-multi-r55.zvoice index d507720..c8d3f15 100644 Binary files a/tts/ja-jp/ja-jp-x-multi-r51.zvoice and b/tts/ja-jp/ja-jp-x-multi-r55.zvoice differ diff --git a/tts/voice_packs.mk b/tts/voice_packs.mk index 86e2590..204da3b 100644 --- a/tts/voice_packs.mk +++ b/tts/voice_packs.mk @@ -15,8 +15,8 @@ # Voice packs for Text-To-Speech PRODUCT_COPY_FILES += \ - device/google/gs-common/tts/ja-jp/ja-jp-x-multi-r51.zvoice:product/tts/google/ja-jp/ja-jp-x-multi-r51.zvoice\ - device/google/gs-common/tts/fr-fr/fr-fr-x-multi-r53.zvoice:product/tts/google/fr-fr/fr-fr-x-multi-r53.zvoice\ - device/google/gs-common/tts/de-de/de-de-x-multi-r53.zvoice:product/tts/google/de-de/de-de-x-multi-r53.zvoice\ - device/google/gs-common/tts/it-it/it-it-x-multi-r49.zvoice:product/tts/google/it-it/it-it-x-multi-r49.zvoice\ - device/google/gs-common/tts/es-es/es-es-x-multi-r52.zvoice:product/tts/google/es-es/es-es-x-multi-r52.zvoice + device/google/gs-common/tts/ja-jp/ja-jp-x-multi-r55.zvoice:product/tts/google/ja-jp/ja-jp-x-multi-r55.zvoice\ + device/google/gs-common/tts/fr-fr/fr-fr-x-multi-r57.zvoice:product/tts/google/fr-fr/fr-fr-x-multi-r57.zvoice\ + device/google/gs-common/tts/de-de/de-de-x-multi-r57.zvoice:product/tts/google/de-de/de-de-x-multi-r57.zvoice\ + device/google/gs-common/tts/it-it/it-it-x-multi-r54.zvoice:product/tts/google/it-it/it-it-x-multi-r54.zvoice\ + device/google/gs-common/tts/es-es/es-es-x-multi-r56.zvoice:product/tts/google/es-es/es-es-x-multi-r56.zvoice diff --git a/widevine/sepolicy/hal_drm_widevine.te b/widevine/sepolicy/hal_drm_widevine.te index 9b4792e..98b49e6 100644 --- a/widevine/sepolicy/hal_drm_widevine.te +++ b/widevine/sepolicy/hal_drm_widevine.te @@ -10,4 +10,5 @@ allow hal_drm_widevine mediadrm_vendor_data_file:file create_file_perms; allow hal_drm_widevine mediadrm_vendor_data_file:dir create_dir_perms; #L1 -#TODO(snehalreddy@) : Add L1 permissions +allow hal_drm_widevine dmabuf_system_heap_device:chr_file r_file_perms; +