From 0bab5d4ca885a83bf6842b1121998b550fa0b57f Mon Sep 17 00:00:00 2001 From: Hung-Yeh Lee Date: Wed, 4 Dec 2024 14:58:22 +0800 Subject: [PATCH 01/34] display-dump: make display dump project-specific Bug: 376426334 Test: adb bugreport Test: adb shell /vendor/bin/dump/dump_*_display Test: adb shell /vendor/bin/dump/dump_*_second_display Flag: EXEMPT bugfix Change-Id: I3eedbd7bd2ad4574f6ac23ef509d57ebda4fb79d --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index 82ef5ea6..4a56a330 100644 --- a/device.mk +++ b/device.mk @@ -31,7 +31,7 @@ include device/google/gs-common/pixel_metrics/pixel_metrics.mk include device/google/gs-common/soc/freq.mk include device/google/gs-common/gps/dump/log.mk include device/google/gs-common/bcmbt/dump/dumplog.mk -include device/google/gs-common/display/dump.mk +include device/google/gs-common/display/dump_exynos_display.mk include device/google/gs-common/display_logbuffer/dump.mk include device/google/gs-common/gxp/gxp.mk include device/google/gs-common/camera/dump.mk From a0b5342effe86fdfa65d76a2881dd46da9f19e82 Mon Sep 17 00:00:00 2001 From: Daniel Lowe Date: Thu, 5 Dec 2024 19:19:49 +0000 Subject: [PATCH 02/34] [Pixel VPN] Apply reviewed default permissions Pregrantting below permissions: READ_PHONE_STATE Flag: EXEMPT add permission pregranted in b/337725984 Bug: 373686360 Test: presubmit, manual install on test device. Change-Id: If6c3dfb1a29451d7b11a3ff10ec18b4c412056ed --- default-permissions.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/default-permissions.xml b/default-permissions.xml index 0afb6702..27364cae 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -174,5 +174,9 @@ + + + From 3e803739bbf6f8b947508c8b53b83559f7b38094 Mon Sep 17 00:00:00 2001 From: Piotr Klasa Date: Mon, 9 Dec 2024 14:32:18 +0100 Subject: [PATCH 03/34] Move all vendor_sched parameters and permissions to init.pixel.perf.rc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: 335874870 Test: Checked that permissions and values ​​for all affected files are correct (ls -l, cat) Flag: EXEMPT not supported by this component yet Change-Id: Ifbea91bce20e046a6e1b92295814a27e99f41dbe --- conf/init.zuma.rc | 138 ---------------------------------------------- 1 file changed, 138 deletions(-) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index ab6086ef..c60efe79 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -16,36 +16,6 @@ on init # Disable util-awareness for mids and bigs write /proc/vendor_sched/teo_util_threshold "2 1024 1024" - 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/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/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 chown system system /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/lcpi_threshold chown system system /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/spc_threshold chown system system /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/limit_frequency @@ -69,116 +39,8 @@ on init chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/memlat_cpuidle_state_aware chown system system /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu8_memlat@17000010/memlat_cpuidle_state_aware - 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/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/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 - start vendor.keymaster-4-0 - # 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 - # ZRAM setup write /proc/sys/vm/page-cluster 0 From 0ec0752893fb219f9ce234ef8d6190ff94d7ca0a Mon Sep 17 00:00:00 2001 From: Rios Kao Date: Wed, 11 Dec 2024 02:51:12 +0000 Subject: [PATCH 04/34] zuma: recorder selinux configuration note: Access Hal property permission. Test: end-to-end test Bug: 383647553 Flag: EXEMPT porting existed feature. Change-Id: I6ac6ea5f573c45e999d81c08aa512b902527d5ef --- device.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/device.mk b/device.mk index 75405efd..9a9ba6bc 100644 --- a/device.mk +++ b/device.mk @@ -44,6 +44,7 @@ include device/google/gs-common/misc_writer/misc_writer.mk include device/google/gs-common/gyotaku_app/gyotaku.mk include device/google/gs-common/bootctrl/bootctrl_aidl.mk include device/google/gs-common/betterbug/betterbug.mk +include device/google/gs-common/recorder/recorder.mk include device/google/gs-common/fingerprint/fingerprint.mk include device/google/zuma/dumpstate/item.mk From 2716f03d7db0fecdf86ac4d6e19755c929e283ad Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Mon, 25 Nov 2024 06:03:17 +0000 Subject: [PATCH 05/34] set input to 100 explicitly in task_profile instead of using ADPF, let's use task_profile to boost input tasks' priroity Bug: 378761104 Flag: EXEMPT new task_profile behavior Change-Id: Ice311b1abcf3d629917e16f1490d4cb63fd83796 Signed-off-by: Chungkai Mei --- task_profiles.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/task_profiles.json b/task_profiles.json index 6b9b1ee3..103ff202 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -488,6 +488,19 @@ } } ] + }, + { + "Name": "HighestCfsPrioScheduling", + "Actions": [ + { + "Name": "SetSchedulerPolicy", + "Params": + { + "Policy": "SCHED_OTHER", + "Nice": "-20" + } + } + ] } ], @@ -526,7 +539,7 @@ }, { "Name": "InputPolicy", - "Profiles": [ "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] + "Profiles": [ "HighestCfsPrioScheduling", "MaxPerformance", "SCHED_QOS_SENSITIVE_EXTREME_SET" ] } ] } From 4d63a708a3be0addb1dd7a8567193c0a540b2c3f Mon Sep 17 00:00:00 2001 From: Paulsu Su Date: Thu, 12 Dec 2024 22:14:22 -0800 Subject: [PATCH 06/34] Set initial value for foreground_window group For multi-window foreground app group. Bug: 200769420 Change-Id: I2b65feb4732e33b27155dcfaf0b64a38b1b01026 Test: build pass Flag: NONE vendor init file does not support flag --- conf/init.zuma.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index c60efe79..d8829879 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -697,6 +697,7 @@ on property:sys.boot_completed=1 # Setup final cpuset write /dev/cpuset/top-app/cpus 0-8 write /dev/cpuset/foreground/cpus 0-7 + write /dev/cpuset/foreground_window/cpus 0-7 write /dev/cpuset/background/cpus 0-3 write /dev/cpuset/system-background/cpus 0-3 write /dev/cpuset/restricted/cpus 0-3 From 8fb22043f33b61708bbc1c31834a4c3d996fe00c Mon Sep 17 00:00:00 2001 From: Jiaming Liu Date: Wed, 18 Dec 2024 04:33:47 +0000 Subject: [PATCH 07/34] [AE] Add system property to enable AE on Settings Add system property to enable AE split on Settings for devices supporting display port. Bug: 372200182 Test: Manual Flag: com.android.window.flags.activity_embedding_support_for_connected_displays Change-Id: I5678e9606be3a91a5bf91e5bd00ed09c2e538124 --- device.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device.mk b/device.mk index 75405efd..63012999 100644 --- a/device.mk +++ b/device.mk @@ -220,6 +220,10 @@ PRODUCT_PROPERTY_OVERRIDES += \ persist.vendor.usb.displayport.enabled=1 endif +# Enable Settings 2-pane optimization for devices supporting display ports. +PRODUCT_SYSTEM_PROPERTIES += \ + persist.settings.large_screen_opt_for_dp.enabled=true + PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.hdcp_checking=drm-only From 0c88c7620ae837df1078e29e48b467e7d1274072 Mon Sep 17 00:00:00 2001 From: Jack Wu Date: Fri, 20 Dec 2024 17:43:54 +0800 Subject: [PATCH 08/34] dump_power: add battery caretaker dump into bugreport logging for AACR(+H), AAFV, AACT, AACC and AACP Version Bug: 384737509 Test: adb bugreport Flag: EXEMPT bugfix Change-Id: I9d36e6fcb25ee9f12b4fd2962207b1f4b592c2b3 Signed-off-by: Jack Wu --- dumpstate/dump_power.cpp | 54 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index 8caa8095..e4734c9e 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -329,7 +329,7 @@ void dumpBatteryHealth() { } void dumpBatteryDefend() { - const char* defendConfig [][4] { + const char* defendConfig [][3] { {"TRICKLE-DEFEND Config", "/sys/devices/platform/google,battery/power_supply/battery/", "bd_"}, {"DWELL-DEFEND Config", "/sys/devices/platform/google,charger/", "charge_s"}, @@ -374,6 +374,57 @@ void dumpBatteryDefend() { } } +void dumpBatteryCaretaker() { + const char* aacpConfig [][3] { + {"AACP Version", + "/sys/devices/platform/google,battery/power_supply/battery/", "aacp_"}, + {"AACR Config", + "/sys/devices/platform/google,battery/power_supply/battery/", "aacr_"}, + {"AAFV Config", + "/sys/devices/platform/google,battery/power_supply/battery/", "aafv_"}, + {"AACT Config", + "/sys/devices/platform/google,battery/power_supply/battery/", "aact_"}, + {"AACC", + "/sys/devices/platform/google,battery/power_supply/battery/", "aacc"}, + }; + + std::vector files; + struct dirent *entry; + std::string content; + std::string fileLocation; + + for (auto &config : aacpConfig) { + DIR *dir = opendir(config[1]); + if (dir == NULL) + continue; + + printTitle(config[0]); + while ((entry = readdir(dir)) != NULL) { + if (std::string(entry->d_name).find(config[2]) != std::string::npos && + strncmp(config[2], entry->d_name, strlen(config[2])) == 0) { + files.push_back(entry->d_name); + } + } + closedir(dir); + + sort(files.begin(), files.end()); + + for (auto &file : files) { + fileLocation = std::string(config[1]) + std::string(file); + if (!android::base::ReadFileToString(fileLocation, &content) || content.empty()) { + content = "\n"; + } + + printf("%s: %s", file.c_str(), content.c_str()); + + if (content.back() != '\n') + printf("\n"); + } + + files.clear(); + } +} + void printValuesOfDirectory(const char *directory, std::string debugfs, const char *strMatch) { std::vector files; auto info = directory; @@ -935,6 +986,7 @@ int main() { dumpWc68(); dumpBatteryHealth(); dumpBatteryDefend(); + dumpBatteryCaretaker(); dumpChg(); dumpChgUserDebug(); dumpBatteryEeprom(); From 8221e61ddd0b9184da7088d534e7fdf13790f069 Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Sat, 21 Dec 2024 15:33:19 +0000 Subject: [PATCH 09/34] Remove ResetUclamp profiles Replaced with sched qos profiles. Bug: 355612114 Flag: NONE vendor task_profiles.json does not support flag Test: build pass Change-Id: I91c9a45dc6fdfeb00a6d75e752f5895c03864a7e --- task_profiles.json | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/task_profiles.json b/task_profiles.json index 103ff202..e02ea3ef 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -461,34 +461,6 @@ } ] }, - { - "Name": "ResetUclampGrp", - "Actions": [ - { - "Name": "WriteFile", - "Params": - { - "FilePath": "/proc/vendor_sched/uclamp_fork_reset_set", - "Value": "", - "LogFailures": "false" - } - } - ] - }, - { - "Name": "NoResetUclampGrp", - "Actions": [ - { - "Name": "WriteFile", - "Params": - { - "FilePath": "/proc/vendor_sched/uclamp_fork_reset_clear", - "Value": "", - "LogFailures": "false" - } - } - ] - }, { "Name": "HighestCfsPrioScheduling", "Actions": [ From 92701b07fc05766992453ede6ad7ef47ceb29cea Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 20 Dec 2024 08:13:31 +0000 Subject: [PATCH 10/34] Update IDisplay to V13-V14 V14 is not frozen yet. We should still allow V13 for 'next' build. Bug: 381463038 Bug: 378407278 Test: build pass Flag: EXEMPT bugfix Change-Id: Ie0caca924696b90f855ef46023d53040adcde93a --- device_framework_matrix_product.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml index 879f614f..852c9665 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product.xml @@ -114,7 +114,7 @@ com.google.hardware.pixel.display - 13 + 13-14 IDisplay default From bc2bb6cbf96d6b3f93f6d95f26db270187807d01 Mon Sep 17 00:00:00 2001 From: "T.J. Mercier" Date: Fri, 27 Dec 2024 00:45:50 +0000 Subject: [PATCH 11/34] Leave memcg enabled This is being temporarily reverted as part of a data-collection experiment. We expect to reapply this before the final 25Q2 TOT snap. Bug: 384577842 Flag: NONE Beta experiment: go/android-memcgv2-exp Change-Id: Ica5b237583f596fec8b8cb754a9ea5720f1c4ff6 --- BoardConfig-common.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 874c7501..492ce71d 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -33,7 +33,6 @@ TARGET_CPU_VARIANT := cortex-a55 BOARD_KERNEL_CMDLINE += earlycon=exynos4210,0x10870000 console=ttySAC0,115200 androidboot.console=ttySAC0 printk.devkmsg=on BOARD_KERNEL_CMDLINE += cma_sysfs.experimental=Y -BOARD_KERNEL_CMDLINE += cgroup_disable=memory BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rcu_lazy BOARD_KERNEL_CMDLINE += swiotlb=1024 BOARD_KERNEL_CMDLINE += cgroup.memory=nokmem From 2b06657f62b42f81a914b59c331d017f919181fa Mon Sep 17 00:00:00 2001 From: Vilas Bhat Date: Wed, 8 Jan 2025 18:05:59 +0000 Subject: [PATCH 12/34] 16KB: zuma: Do not filter out goodix_brl_touch.ko for 16KB mode Filtering out this module broke touchscreen functionality for Pixel 8 devices in 16 KB mode. Bug: 388515914 Flag: EXEMPT bugfix Test: Boot to 16KB mode using 16KB dev option and verify touchscreen functionality. Change-Id: I8ba72c8eabb5522873025cf9d80aa03a53fb8cfb --- BoardConfig-16k-common.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/BoardConfig-16k-common.mk b/BoardConfig-16k-common.mk index adf2b338..ef54bbbf 100644 --- a/BoardConfig-16k-common.mk +++ b/BoardConfig-16k-common.mk @@ -36,7 +36,6 @@ BOARD_KERNEL_MODULES_16K := $(filter-out %/aoc_unit_test_dev.ko,$(BOARD_KERNEL_M BOARD_KERNEL_MODULES_16K := $(filter-out %/bcm_dbg.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/gnssif.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/gnss_spi.ko,$(BOARD_KERNEL_MODULES_16K)) -BOARD_KERNEL_MODULES_16K := $(filter-out %/goodix_brl_touch.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/mali_kutf.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/mali_kutf_clk_rate_trace_test_portal.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/rt6160_regulator.ko,$(BOARD_KERNEL_MODULES_16K)) From 4bd134b83d0f4a2bfb0e87348e76c97bf60d0f31 Mon Sep 17 00:00:00 2001 From: Piotr Klasa Date: Wed, 8 Jan 2025 17:50:12 +0100 Subject: [PATCH 13/34] move common init perf settings to gs_common MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test: Verified if all values ​​of transferred settings are as they should be after rebooting the device, and and checked that there are no new selinux errors for hal_power_default Bug: 335874870 Flag: EXEMPT not supported by this component yet Change-Id: I595d69d9fa241489e1a4b7fe407d6f74f8c62039 --- conf/init.zuma.rc | 59 ----------------------------------------------- 1 file changed, 59 deletions(-) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index d8829879..c01aae2b 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -11,8 +11,6 @@ on init # CPU0 cannot be offline chmod 0444 /sys/devices/system/cpu/cpu0/online - # Set teo as cpu idle governor - write /sys/devices/system/cpu/cpuidle/current_governor teo # Disable util-awareness for mids and bigs write /proc/vendor_sched/teo_util_threshold "2 1024 1024" @@ -107,15 +105,6 @@ on init write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/memlat_cpuidle_state_aware 2 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu8_memlat@17000010/memlat_cpuidle_state_aware 2 - # RT uclamp setting - write /proc/sys/kernel/sched_util_clamp_min_rt_default 0 - - # change permissions and default values for camera-daemon cpu controller - chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.min - chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.max - chown root root /dev/cpuctl/camera-daemon/cpu.uclamp.latency_sensitive - chown system system /dev/cpuctl/camera-daemon/cgroup.procs - mkdir /dev/cpuset/camera-daemon-high-group write /dev/cpuset/camera-daemon-high-group/cpus 0-8 write /dev/cpuset/camera-daemon-high-group/mems 0 @@ -134,11 +123,6 @@ on init chown system system /dev/cpuset/camera-daemon-mid-high-group/tasks chmod 0664 /dev/cpuset/camera-daemon-mid-high-group/tasks - write /proc/vendor_sched/groups/cam/prefer_idle 1 - write /proc/vendor_sched/groups/cam/uclamp_min 1 - - chown system system /dev/cpuset/cgroup.procs - # nanohub sensor chmod 0664 /dev/nanohub chmod 0664 /dev/nanohub_comms @@ -225,10 +209,6 @@ on init # Power Stats HAL chown system system /dev/bbd_pwrstat - # Add a boost for NNAPI HAL - write /proc/vendor_sched/groups/nnapi/prefer_idle 0 - write /proc/vendor_sched/groups/nnapi/uclamp_min 512 - # Add memlat governor settings write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/polling_interval 10 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu1_memlat@17000010/polling_interval 10 @@ -704,27 +684,6 @@ on property:sys.boot_completed=1 write /dev/cpuset/camera-daemon/cpus 0-8 setprop vendor.powerhal.init 1 - # Setup scheduler parameters - write /proc/vendor_sched/min_granularity_ns 1000000 - write /proc/vendor_sched/latency_ns 8000000 - write /proc/vendor_sched/max_load_balance_interval 1 - write /proc/vendor_sched/enable_hrtick 1 - - # Setup final cpu.uclamp - write /proc/vendor_sched/groups/ta/uclamp_min 1 - write /proc/vendor_sched/groups/fg/uclamp_min 0 - write /proc/vendor_sched/groups/sys/prefer_idle 0 - - # Set ug group - write /proc/vendor_sched/groups/bg/ug 0 - write /proc/vendor_sched/groups/sys_bg/ug 0 - write /proc/vendor_sched/groups/ota/ug 0 - write /proc/vendor_sched/groups/dex2oat/ug 1 - write /proc/vendor_sched/groups/ta/ug 1 - - # Set bg group throttle - write /proc/vendor_sched/ug_bg_group_throttle ${persist.device_config.vendor_system_native.ug_bg_group_throttle:-308} - # Set uclamp.max for some groups, which could indicate cpu importance used in scheduling write /proc/vendor_sched/auto_uclamp_max "130 130 130 130 512 512 512 512 670" write /proc/vendor_sched/groups/bg/uclamp_max 130 @@ -748,12 +707,6 @@ on property:sys.boot_completed=1 write /sys/devices/system/cpu/cpufreq/policy8/sched_pixel/limit_frequency 2363000 write /proc/vendor_sched/pmu_poll_time 10 - # Disable PMU freq limit - write /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/pmu_limit_enable 1 - write /sys/devices/system/cpu/cpufreq/policy4/sched_pixel/pmu_limit_enable 1 - write /sys/devices/system/cpu/cpufreq/policy8/sched_pixel/pmu_limit_enable 1 - write /proc/vendor_sched/pmu_poll_enable 0 - # Make devices on the critical path for suspend/resume asynchronous write /sys/devices/platform/fixedregulator@0/regulator/regulator.2/power/async "enabled" write /sys/devices/platform/fixedregulator@0/power/async "enabled" @@ -761,18 +714,6 @@ on property:sys.boot_completed=1 write /sys/devices/platform/10840000.pinctrl/power/async "enabled" write /sys/devices/platform/13060000.pinctrl/power/async "enabled" - # Setup cpu.shares to throttle background groups (bg ~ 5% sysbg ~ 5% dex2oat ~2.5%) - write /dev/cpuctl/background/cpu.shares 1024 - write /dev/cpuctl/system-background/cpu.shares 1024 - write /dev/cpuctl/dex2oat/cpu.shares 512 - write /dev/cpuctl/system/cpu.shares 20480 - # We only have system and background groups holding tasks and the groups below are empty - write /dev/cpuctl/camera-daemon/cpu.shares 20480 - write /dev/cpuctl/foreground/cpu.shares 20480 - write /dev/cpuctl/nnapi-hal/cpu.shares 20480 - write /dev/cpuctl/rt/cpu.shares 20480 - write /dev/cpuctl/top-app/cpu.shares 20480 - # gvotables for dumpstate chown system system /sys/kernel/debug/gvotables From 7bd1512b8e3376453050f548f1e0d09811d7d0a0 Mon Sep 17 00:00:00 2001 From: Spade Lee Date: Fri, 27 Dec 2024 06:53:21 +0000 Subject: [PATCH 14/34] pixelstats: zuma: remove firmware update path Bug: 386187651 Test: local test pass Flag: EXEMPT refactor Change-Id: I8ea918db227992681435fa3d72a58abebc7937a2 Signed-off-by: Spade Lee --- pixelstats/service.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp index e5cd5814..ff429a3d 100644 --- a/pixelstats/service.cpp +++ b/pixelstats/service.cpp @@ -153,8 +153,7 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = { const struct UeventListener::UeventPaths ueventPaths = { .AudioUevent = "/devices/virtual/amcs/amcs", - .TypeCPartnerUevent = "PRODUCT_TYPE=", - .FwUpdatePath = "" + .TypeCPartnerUevent = "PRODUCT_TYPE=" }; int main() { From 26cc2347cd28ea8bf3527cfa30f86bd3b73b2805 Mon Sep 17 00:00:00 2001 From: Carter Hsu Date: Fri, 10 Jan 2025 09:44:23 +0800 Subject: [PATCH 15/34] audio: fix headtracking permission for spatializer offload playback Bug: 381405995 Test: manual Flag: EXEMPT bugfix Change-Id: I08d52b7f4988e9cdeb38f1d0fbbbf1baa54268ed Signed-off-by: Carter Hsu --- conf/ueventd.zuma.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/ueventd.zuma.rc b/conf/ueventd.zuma.rc index e1e330d8..741b20b1 100644 --- a/conf/ueventd.zuma.rc +++ b/conf/ueventd.zuma.rc @@ -97,6 +97,7 @@ /dev/acd-mel_processor 0660 system audio /dev/amcs 0660 system audio /dev/acd-audio_rtp_* 0660 system radio +/dev/acd-mc_headpos 0660 system audio # Secure MEM driver /dev/s5p-smem 0660 drm drmrpc From f678faaf968bfd75b08016b4d6b069cc069fad0c Mon Sep 17 00:00:00 2001 From: Weizhung Ding Date: Thu, 9 Jan 2025 07:04:18 +0000 Subject: [PATCH 16/34] zuma: remove display_colordata for external display Bug: 376179256 Test: adaptive mode is not enabled for display 2 Flag: EXEMPT bugfix Change-Id: I2302441ee4ccba755402bf2838425ca1ad235eac --- device.mk | 3 +-- display/display_colordata_cal2.pb | Bin 28275 -> 0 bytes 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 display/display_colordata_cal2.pb diff --git a/device.mk b/device.mk index 82ef5ea6..1409d2ba 100644 --- a/device.mk +++ b/device.mk @@ -776,8 +776,7 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.sf.native_mode=2 PRODUCT_COPY_FILES += \ - device/google/zuma/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb \ - device/google/zuma/display/display_colordata_cal2.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal2.pb + device/google/zuma/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb # limit DPP downscale ratio PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.hwc.dpp.downscale=4 diff --git a/display/display_colordata_cal2.pb b/display/display_colordata_cal2.pb deleted file mode 100644 index 9840d6a229a56b01d787625fe2d87cc50a20bc07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28275 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 TQDu0@Z0@B8D?G!F{G$H{U&&Vj From 126ea8b7758dbcf2da102c60c8acdd85a75047f0 Mon Sep 17 00:00:00 2001 From: Vilas Bhat Date: Fri, 3 Jan 2025 20:08:57 +0000 Subject: [PATCH 17/34] 16KB: zuma: Move copy_efs_file_to_data script to gs-common Bug: 383151792 Flag: EXEMPT bugfix Test: Enable16kbTest on Pixel 8 target Fingerprint and Phone Calls work in 16 KB mode Change-Id: I3c4fa84887cbb46c9f171a0f0a31f4d47d5c4c6e --- Android.bp | 11 ----------- copy_efs_files_to_data.sh | 40 --------------------------------------- device.mk | 2 +- 3 files changed, 1 insertion(+), 52 deletions(-) delete mode 100644 copy_efs_files_to_data.sh diff --git a/Android.bp b/Android.bp index 45720c33..bf7fac7e 100644 --- a/Android.bp +++ b/Android.bp @@ -41,14 +41,3 @@ sh_binary { vendor: true, sub_dir: "hw", } - -// Filesystem: Copy efs/efs_backup/modem_userdata to /data partition -// so that they can be accessed under 16K mode. By default, these partitions -// are 4K F2FS , which can't be mounted under 16K mode. -// (b/293313353) -sh_binary { - name: "copy_efs_files_to_data", - src: "copy_efs_files_to_data.sh", - vendor: true, -} - diff --git a/copy_efs_files_to_data.sh b/copy_efs_files_to_data.sh deleted file mode 100644 index 9d293aef..00000000 --- a/copy_efs_files_to_data.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/vendor/bin/sh - -CHECKPOINT_DIR=/data/vendor/copied - -export BIN_DIR=/vendor/bin - -$BIN_DIR/mkdir -p $CHECKPOINT_DIR - -function copy_files_to_data() -{ - block_device=$1 - partition_name=$(basename $1) - mount_point=$2 - tmpdir=$CHECKPOINT_DIR/$partition_name.img - build_checkpoint=$CHECKPOINT_DIR/$partition_name - if [ ! -e $build_checkpoint ]; then - $BIN_DIR/rm -rf $tmpdir - $BIN_DIR/mkdir -p $tmpdir - $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device - if [ $? -ne 0 ]; then - echo "Failed to $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device" - return - fi - $BIN_DIR/mv $tmpdir $build_checkpoint - if [ $? -ne 0 ]; then - echo "mv $tmpdir $build_checkpoint" - return - fi - $BIN_DIR/fsync `dirname $build_checkpoint` - fi - echo "Successfully copied $mount_point to $build_checkpoint" -} - -copy_files_to_data "/dev/block/by-name/efs" "/mnt/vendor/efs" -copy_files_to_data "/dev/block/by-name/efs_backup" "/mnt/vendor/efs_backup" -copy_files_to_data "/dev/block/by-name/modem_userdata" "/mnt/vendor/modem_userdata" - -copy_files_to_data "/dev/block/by-name/persist" "/mnt/vendor/persist" - -$BIN_DIR/fsync /data/vendor/copied diff --git a/device.mk b/device.mk index 75405efd..34e5a116 100644 --- a/device.mk +++ b/device.mk @@ -45,6 +45,7 @@ include device/google/gs-common/gyotaku_app/gyotaku.mk include device/google/gs-common/bootctrl/bootctrl_aidl.mk include device/google/gs-common/betterbug/betterbug.mk include device/google/gs-common/fingerprint/fingerprint.mk +include device/google/gs-common/16kb/16kb.mk include device/google/zuma/dumpstate/item.mk @@ -390,7 +391,6 @@ PRODUCT_COPY_FILES += \ device/google/zuma/conf/init.efs.16k.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.efs.rc \ device/google/$(TARGET_BOARD_PLATFORM)/conf/fstab.efs.from_data:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.efs.from_data \ -PRODUCT_PACKAGES += copy_efs_files_to_data PRODUCT_PACKAGES += fsck.f2fs.vendor else PRODUCT_COPY_FILES += \ From 6c5315280f5389b3dd13d2681f555be8cd90733e Mon Sep 17 00:00:00 2001 From: "Priyanka Advani (xWF)" Date: Thu, 16 Jan 2025 16:50:35 -0800 Subject: [PATCH 18/34] Revert "16KB: zuma: Move copy_efs_file_to_data script to gs-common" Revert submission 31155502-move_copy_efs_script Reason for revert: Droidmonitor created revert due to b/390502519. Will be verifying through ABTD before submission. Reverted changes: /q/submissionid:31155502-move_copy_efs_script Change-Id: I6f7b4074a82069cc9e0b230e2ccb9379bb35c837 --- Android.bp | 11 +++++++++++ copy_efs_files_to_data.sh | 40 +++++++++++++++++++++++++++++++++++++++ device.mk | 2 +- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 copy_efs_files_to_data.sh diff --git a/Android.bp b/Android.bp index bf7fac7e..45720c33 100644 --- a/Android.bp +++ b/Android.bp @@ -41,3 +41,14 @@ sh_binary { vendor: true, sub_dir: "hw", } + +// Filesystem: Copy efs/efs_backup/modem_userdata to /data partition +// so that they can be accessed under 16K mode. By default, these partitions +// are 4K F2FS , which can't be mounted under 16K mode. +// (b/293313353) +sh_binary { + name: "copy_efs_files_to_data", + src: "copy_efs_files_to_data.sh", + vendor: true, +} + diff --git a/copy_efs_files_to_data.sh b/copy_efs_files_to_data.sh new file mode 100644 index 00000000..9d293aef --- /dev/null +++ b/copy_efs_files_to_data.sh @@ -0,0 +1,40 @@ +#!/vendor/bin/sh + +CHECKPOINT_DIR=/data/vendor/copied + +export BIN_DIR=/vendor/bin + +$BIN_DIR/mkdir -p $CHECKPOINT_DIR + +function copy_files_to_data() +{ + block_device=$1 + partition_name=$(basename $1) + mount_point=$2 + tmpdir=$CHECKPOINT_DIR/$partition_name.img + build_checkpoint=$CHECKPOINT_DIR/$partition_name + if [ ! -e $build_checkpoint ]; then + $BIN_DIR/rm -rf $tmpdir + $BIN_DIR/mkdir -p $tmpdir + $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device + if [ $? -ne 0 ]; then + echo "Failed to $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device" + return + fi + $BIN_DIR/mv $tmpdir $build_checkpoint + if [ $? -ne 0 ]; then + echo "mv $tmpdir $build_checkpoint" + return + fi + $BIN_DIR/fsync `dirname $build_checkpoint` + fi + echo "Successfully copied $mount_point to $build_checkpoint" +} + +copy_files_to_data "/dev/block/by-name/efs" "/mnt/vendor/efs" +copy_files_to_data "/dev/block/by-name/efs_backup" "/mnt/vendor/efs_backup" +copy_files_to_data "/dev/block/by-name/modem_userdata" "/mnt/vendor/modem_userdata" + +copy_files_to_data "/dev/block/by-name/persist" "/mnt/vendor/persist" + +$BIN_DIR/fsync /data/vendor/copied diff --git a/device.mk b/device.mk index 34e5a116..75405efd 100644 --- a/device.mk +++ b/device.mk @@ -45,7 +45,6 @@ include device/google/gs-common/gyotaku_app/gyotaku.mk include device/google/gs-common/bootctrl/bootctrl_aidl.mk include device/google/gs-common/betterbug/betterbug.mk include device/google/gs-common/fingerprint/fingerprint.mk -include device/google/gs-common/16kb/16kb.mk include device/google/zuma/dumpstate/item.mk @@ -391,6 +390,7 @@ PRODUCT_COPY_FILES += \ device/google/zuma/conf/init.efs.16k.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.efs.rc \ device/google/$(TARGET_BOARD_PLATFORM)/conf/fstab.efs.from_data:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.efs.from_data \ +PRODUCT_PACKAGES += copy_efs_files_to_data PRODUCT_PACKAGES += fsck.f2fs.vendor else PRODUCT_COPY_FILES += \ From 45d085874d91f4abc45538d966385a821808f625 Mon Sep 17 00:00:00 2001 From: Vilas Bhat Date: Thu, 16 Jan 2025 17:01:13 -0800 Subject: [PATCH 19/34] Revert "Revert "16KB: zuma: Move copy_efs_file_to_data script to..." Revert submission 31345232-revert-31155502-move_copy_efs_script-IXYVMGOHBR Reason for revert: Re-submitting with fix for breaking target Reverted changes: /q/submissionid:31345232-revert-31155502-move_copy_efs_script-IXYVMGOHBR Bug: 383151792 Flag: EXEMPT bugfix Change-Id: I71d98015c530fe51f9bae2ef2907baa1d3fd657e --- Android.bp | 11 ----------- copy_efs_files_to_data.sh | 40 --------------------------------------- device.mk | 2 +- 3 files changed, 1 insertion(+), 52 deletions(-) delete mode 100644 copy_efs_files_to_data.sh diff --git a/Android.bp b/Android.bp index 45720c33..bf7fac7e 100644 --- a/Android.bp +++ b/Android.bp @@ -41,14 +41,3 @@ sh_binary { vendor: true, sub_dir: "hw", } - -// Filesystem: Copy efs/efs_backup/modem_userdata to /data partition -// so that they can be accessed under 16K mode. By default, these partitions -// are 4K F2FS , which can't be mounted under 16K mode. -// (b/293313353) -sh_binary { - name: "copy_efs_files_to_data", - src: "copy_efs_files_to_data.sh", - vendor: true, -} - diff --git a/copy_efs_files_to_data.sh b/copy_efs_files_to_data.sh deleted file mode 100644 index 9d293aef..00000000 --- a/copy_efs_files_to_data.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/vendor/bin/sh - -CHECKPOINT_DIR=/data/vendor/copied - -export BIN_DIR=/vendor/bin - -$BIN_DIR/mkdir -p $CHECKPOINT_DIR - -function copy_files_to_data() -{ - block_device=$1 - partition_name=$(basename $1) - mount_point=$2 - tmpdir=$CHECKPOINT_DIR/$partition_name.img - build_checkpoint=$CHECKPOINT_DIR/$partition_name - if [ ! -e $build_checkpoint ]; then - $BIN_DIR/rm -rf $tmpdir - $BIN_DIR/mkdir -p $tmpdir - $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device - if [ $? -ne 0 ]; then - echo "Failed to $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device" - return - fi - $BIN_DIR/mv $tmpdir $build_checkpoint - if [ $? -ne 0 ]; then - echo "mv $tmpdir $build_checkpoint" - return - fi - $BIN_DIR/fsync `dirname $build_checkpoint` - fi - echo "Successfully copied $mount_point to $build_checkpoint" -} - -copy_files_to_data "/dev/block/by-name/efs" "/mnt/vendor/efs" -copy_files_to_data "/dev/block/by-name/efs_backup" "/mnt/vendor/efs_backup" -copy_files_to_data "/dev/block/by-name/modem_userdata" "/mnt/vendor/modem_userdata" - -copy_files_to_data "/dev/block/by-name/persist" "/mnt/vendor/persist" - -$BIN_DIR/fsync /data/vendor/copied diff --git a/device.mk b/device.mk index 75405efd..34e5a116 100644 --- a/device.mk +++ b/device.mk @@ -45,6 +45,7 @@ include device/google/gs-common/gyotaku_app/gyotaku.mk include device/google/gs-common/bootctrl/bootctrl_aidl.mk include device/google/gs-common/betterbug/betterbug.mk include device/google/gs-common/fingerprint/fingerprint.mk +include device/google/gs-common/16kb/16kb.mk include device/google/zuma/dumpstate/item.mk @@ -390,7 +391,6 @@ PRODUCT_COPY_FILES += \ device/google/zuma/conf/init.efs.16k.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.efs.rc \ device/google/$(TARGET_BOARD_PLATFORM)/conf/fstab.efs.from_data:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.efs.from_data \ -PRODUCT_PACKAGES += copy_efs_files_to_data PRODUCT_PACKAGES += fsck.f2fs.vendor else PRODUCT_COPY_FILES += \ From 7e848a583039ba94937632a77a9002a4b3e8ef8e Mon Sep 17 00:00:00 2001 From: Vilas Bhat Date: Fri, 17 Jan 2025 23:57:48 +0000 Subject: [PATCH 20/34] 16KB: Move CopyEfsTest to device/google/gs-common Bug: 390502355 Test: atest CopyEfsTest for Pixel 8 & 9 targets Flag: EXEMPT bugfix Change-Id: I59fff00454aac6e00dcec81427cd5c41efadec1d --- CopyEfsTest/Android.bp | 38 ----- CopyEfsTest/AndroidTest.xml | 40 ------ .../src/com/android/test/CopyEfsTest.java | 130 ------------------ 3 files changed, 208 deletions(-) delete mode 100644 CopyEfsTest/Android.bp delete mode 100644 CopyEfsTest/AndroidTest.xml delete mode 100644 CopyEfsTest/src/com/android/test/CopyEfsTest.java diff --git a/CopyEfsTest/Android.bp b/CopyEfsTest/Android.bp deleted file mode 100644 index 9b7a4592..00000000 --- a/CopyEfsTest/Android.bp +++ /dev/null @@ -1,38 +0,0 @@ -// 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. - -package { - default_applicable_licenses: ["device_google_zuma_license"], -} - -java_test_host { - name: "CopyEfsTest", - // Include all test java files - srcs: ["src/**/*.java"], - static_libs: [ - "junit", - "platform-test-annotations", - "truth", - ], - libs: [ - "tradefed", - "compatibility-host-util", - "compatibility-tradefed", - ], - test_suites: [ - "device-tests", - "device-pixel-tests" - ], - test_config: "AndroidTest.xml", -} diff --git a/CopyEfsTest/AndroidTest.xml b/CopyEfsTest/AndroidTest.xml deleted file mode 100644 index 398991f3..00000000 --- a/CopyEfsTest/AndroidTest.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/CopyEfsTest/src/com/android/test/CopyEfsTest.java b/CopyEfsTest/src/com/android/test/CopyEfsTest.java deleted file mode 100644 index cd22457b..00000000 --- a/CopyEfsTest/src/com/android/test/CopyEfsTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * 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. - */ - -package com.android.test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assume.assumeTrue; -import org.junit.Before; -import org.junit.After; - -import android.platform.test.annotations.AppModeFull; - -import com.android.tradefed.device.DeviceNotAvailableException; -import com.android.tradefed.testtype.DeviceJUnit4ClassRunner; -import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test; -import com.android.tradefed.testtype.junit4.DeviceTestRunOptions; -import com.android.tradefed.util.CommandResult; -import com.android.tradefed.util.RunUtil; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.io.BufferedReader; -import java.io.StringReader; - -@RunWith(DeviceJUnit4ClassRunner.class) -public class CopyEfsTest extends BaseHostJUnit4Test { - - @Before - public void setUp() throws Exception { - getDevice().enableAdbRoot(); - - getDevice().executeShellCommand("rm -rf /data/local/tmp/efs_test"); - getDevice().executeShellCommand("mkdir -p /data/local/tmp/efs_test/mnt"); - getDevice().executeShellCommand("mkdir -p /data/local/tmp/efs_test/dump"); - } - - @Test - @AppModeFull - public void copyEfsTest() throws Exception { - assumeTrue(getDevice().executeShellCommand("getconf PAGESIZE").trim().equals("4096")); - - testDumpF2FS("efs"); - testDumpF2FS("efs_backup"); - testDumpF2FS("modem_userdata"); - testDumpF2FS("persist"); - } - - private CommandResult RunAndCheckAdbCmd(String cmd) throws DeviceNotAvailableException { - CommandResult r = getDevice().executeShellV2Command(cmd); - assertEquals("Failed to run " + cmd, Integer.valueOf(0), r.getExitCode()); - return r; - } - - // Remove timestamps because ls on device does not support --time-style. - // Format is [permissions] [links] [uid] [gid] [size] time [name/symlink] - // time may vary greatly in formatting - // symlinks will be of the form a -> b - // So we can check for -> in the second to last spot to determine what position the timestamp ends at - // Remove totals because on disk block usage may change depending on filesystem - private String removeTimestamps(String input) { - StringBuilder output = new StringBuilder(); - for (String line : input.split("\n")) { - String[] tokens = line.split("(?")) - name_offset = 3; - for (int i=0; i= 5 && i < tokens.length - name_offset) - continue; - if (i != 0) - output.append(" "); - output.append(tokens[i]); - } - output.append("\n"); - } - return output.toString(); - } - - private void testDumpF2FS(String name) throws Exception { - RunAndCheckAdbCmd(String.format("cp /dev/block/by-name/%s /data/local/tmp/efs_test/%s.img", name, name)); - - // The device was mounted r/w. To get a clean image, we run fsck, and then mount to allow mount time fixes to happen. - // We can then dump and mount read only to ensure the contents should be the same. - RunAndCheckAdbCmd(String.format("fsck.f2fs -f /data/local/tmp/efs_test/%s.img", name)); - RunAndCheckAdbCmd(String.format("mount /data/local/tmp/efs_test/%s.img /data/local/tmp/efs_test/mnt", name)); - RunAndCheckAdbCmd("umount /data/local/tmp/efs_test/mnt"); - - RunAndCheckAdbCmd(String.format("dump.f2fs -rfPLo /data/local/tmp/efs_test/dump /data/local/tmp/efs_test/%s.img", name)); - RunAndCheckAdbCmd(String.format("mount -r /data/local/tmp/efs_test/%s.img /data/local/tmp/efs_test/mnt", name)); - - CommandResult r = RunAndCheckAdbCmd("diff -rq --no-dereference /data/local/tmp/efs_test/mnt /data/local/tmp/efs_test/dump"); - assertEquals(r.getStdout(), ""); - - String ls_cmd = "cd /data/local/tmp/efs_test/%s;ls -AlnR ."; - CommandResult mnt_ls = RunAndCheckAdbCmd(String.format(ls_cmd, "mnt")); - CommandResult dump_ls = RunAndCheckAdbCmd(String.format(ls_cmd, "dump")); - assertEquals(removeTimestamps(mnt_ls.getStdout()), removeTimestamps(dump_ls.getStdout())); - - getDevice().executeShellCommand("umount /data/local/tmp/efs_test/mnt"); - getDevice().executeShellCommand("rm -rf /data/local/tmp/efs_test/dump/*"); - getDevice().executeShellCommand("rm /data/local/tmp/efs_test/" + name + ".img"); - } - - @After - public void tearDown() throws Exception { - getDevice().executeShellCommand("umount /data/local/tmp/efs_test/mnt"); - getDevice().executeShellCommand("rm -rf /data/local/tmp/efs_test"); - } -} From ff3222e2d3853490e8b97ff07b7d603a673c1aa4 Mon Sep 17 00:00:00 2001 From: Piotr Klasa Date: Fri, 17 Jan 2025 09:05:39 -0800 Subject: [PATCH 21/34] Revert "move common init perf settings to gs_common" Revert submission 31215196-move_common_init_perf_settings_to_gscommon Reason for revert: Power Regression Reverted changes: /q/submissionid:31215196-move_common_init_perf_settings_to_gscommon Bug: 390502171 Change-Id: I1339466a8ac75666d6c0a40461d9e998e5b23f13 --- conf/init.zuma.rc | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index c01aae2b..d8829879 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -11,6 +11,8 @@ on init # CPU0 cannot be offline chmod 0444 /sys/devices/system/cpu/cpu0/online + # Set teo as cpu idle governor + write /sys/devices/system/cpu/cpuidle/current_governor teo # Disable util-awareness for mids and bigs write /proc/vendor_sched/teo_util_threshold "2 1024 1024" @@ -105,6 +107,15 @@ on init write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/memlat_cpuidle_state_aware 2 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu8_memlat@17000010/memlat_cpuidle_state_aware 2 + # RT uclamp setting + write /proc/sys/kernel/sched_util_clamp_min_rt_default 0 + + # change permissions and default values for camera-daemon cpu controller + chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.min + chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.max + chown root root /dev/cpuctl/camera-daemon/cpu.uclamp.latency_sensitive + chown system system /dev/cpuctl/camera-daemon/cgroup.procs + mkdir /dev/cpuset/camera-daemon-high-group write /dev/cpuset/camera-daemon-high-group/cpus 0-8 write /dev/cpuset/camera-daemon-high-group/mems 0 @@ -123,6 +134,11 @@ on init chown system system /dev/cpuset/camera-daemon-mid-high-group/tasks chmod 0664 /dev/cpuset/camera-daemon-mid-high-group/tasks + write /proc/vendor_sched/groups/cam/prefer_idle 1 + write /proc/vendor_sched/groups/cam/uclamp_min 1 + + chown system system /dev/cpuset/cgroup.procs + # nanohub sensor chmod 0664 /dev/nanohub chmod 0664 /dev/nanohub_comms @@ -209,6 +225,10 @@ on init # Power Stats HAL chown system system /dev/bbd_pwrstat + # Add a boost for NNAPI HAL + write /proc/vendor_sched/groups/nnapi/prefer_idle 0 + write /proc/vendor_sched/groups/nnapi/uclamp_min 512 + # Add memlat governor settings write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/polling_interval 10 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu1_memlat@17000010/polling_interval 10 @@ -684,6 +704,27 @@ on property:sys.boot_completed=1 write /dev/cpuset/camera-daemon/cpus 0-8 setprop vendor.powerhal.init 1 + # Setup scheduler parameters + write /proc/vendor_sched/min_granularity_ns 1000000 + write /proc/vendor_sched/latency_ns 8000000 + write /proc/vendor_sched/max_load_balance_interval 1 + write /proc/vendor_sched/enable_hrtick 1 + + # Setup final cpu.uclamp + write /proc/vendor_sched/groups/ta/uclamp_min 1 + write /proc/vendor_sched/groups/fg/uclamp_min 0 + write /proc/vendor_sched/groups/sys/prefer_idle 0 + + # Set ug group + write /proc/vendor_sched/groups/bg/ug 0 + write /proc/vendor_sched/groups/sys_bg/ug 0 + write /proc/vendor_sched/groups/ota/ug 0 + write /proc/vendor_sched/groups/dex2oat/ug 1 + write /proc/vendor_sched/groups/ta/ug 1 + + # Set bg group throttle + write /proc/vendor_sched/ug_bg_group_throttle ${persist.device_config.vendor_system_native.ug_bg_group_throttle:-308} + # Set uclamp.max for some groups, which could indicate cpu importance used in scheduling write /proc/vendor_sched/auto_uclamp_max "130 130 130 130 512 512 512 512 670" write /proc/vendor_sched/groups/bg/uclamp_max 130 @@ -707,6 +748,12 @@ on property:sys.boot_completed=1 write /sys/devices/system/cpu/cpufreq/policy8/sched_pixel/limit_frequency 2363000 write /proc/vendor_sched/pmu_poll_time 10 + # Disable PMU freq limit + write /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/pmu_limit_enable 1 + write /sys/devices/system/cpu/cpufreq/policy4/sched_pixel/pmu_limit_enable 1 + write /sys/devices/system/cpu/cpufreq/policy8/sched_pixel/pmu_limit_enable 1 + write /proc/vendor_sched/pmu_poll_enable 0 + # Make devices on the critical path for suspend/resume asynchronous write /sys/devices/platform/fixedregulator@0/regulator/regulator.2/power/async "enabled" write /sys/devices/platform/fixedregulator@0/power/async "enabled" @@ -714,6 +761,18 @@ on property:sys.boot_completed=1 write /sys/devices/platform/10840000.pinctrl/power/async "enabled" write /sys/devices/platform/13060000.pinctrl/power/async "enabled" + # Setup cpu.shares to throttle background groups (bg ~ 5% sysbg ~ 5% dex2oat ~2.5%) + write /dev/cpuctl/background/cpu.shares 1024 + write /dev/cpuctl/system-background/cpu.shares 1024 + write /dev/cpuctl/dex2oat/cpu.shares 512 + write /dev/cpuctl/system/cpu.shares 20480 + # We only have system and background groups holding tasks and the groups below are empty + write /dev/cpuctl/camera-daemon/cpu.shares 20480 + write /dev/cpuctl/foreground/cpu.shares 20480 + write /dev/cpuctl/nnapi-hal/cpu.shares 20480 + write /dev/cpuctl/rt/cpu.shares 20480 + write /dev/cpuctl/top-app/cpu.shares 20480 + # gvotables for dumpstate chown system system /sys/kernel/debug/gvotables From b000f3b7b5a086e9ae1d2872f52cef4f280ab9dc Mon Sep 17 00:00:00 2001 From: Nina Chen Date: Wed, 22 Jan 2025 15:53:42 +0800 Subject: [PATCH 22/34] Move the check of 16k folder to BoardConfig-common.mk Bug: 391282888 Flag: EXEMPT bugfix Change-Id: I8d73365d826bc439b9b2f938afbe54cbcb48e380 --- BoardConfig-16k-common.mk | 4 ---- BoardConfig-common.mk | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/BoardConfig-16k-common.mk b/BoardConfig-16k-common.mk index ef54bbbf..0a405a3f 100644 --- a/BoardConfig-16k-common.mk +++ b/BoardConfig-16k-common.mk @@ -14,8 +14,6 @@ # limitations under the License. # -ifneq ($(wildcard $(TARGET_KERNEL_DIR)/16kb/),) - ifeq ($(TARGET_BOOTS_16K),true) # Configures the 16kb kernel directory. TARGET_KERNEL_DIR := $(TARGET_KERNEL_DIR)/16kb @@ -48,5 +46,3 @@ BOARD_KERNEL_MODULES_LOAD_16K := $(foreach module,$(BOARD_KERNEL_MODULES_16K),$( BOARD_16K_OTA_USE_INCREMENTAL := true BOARD_16K_OTA_MOVE_VENDOR := true endif - -endif diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 492ce71d..d51c98dc 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -17,7 +17,9 @@ include build/make/target/board/BoardConfigMainlineCommon.mk include build/make/target/board/BoardConfigPixelCommon.mk # Include settings for 16k developer option, if enabled +ifneq ($(wildcard $(TARGET_KERNEL_DIR)/16kb/),) include device/google/zuma/BoardConfig-16k-common.mk +endif # HACK : To fix up after bring up multimedia devices. TARGET_SOC := zuma From b9d89057e061f7dbd2edb72a462fa79461d2748c Mon Sep 17 00:00:00 2001 From: Juan Yescas Date: Tue, 3 Dec 2024 04:41:56 +0000 Subject: [PATCH 23/34] 16kb: zuma: Filter out unnecessary modules from 16k mode The 16k mode does not use these modules. Bug: 378293897 Bug: 379704287 Merged-In: I237fd9cf7ca2f7972fafa08a3df65c0472e1ef03 Change-Id: I237fd9cf7ca2f7972fafa08a3df65c0472e1ef03 Test: Built (i) aosp_husky-trunk_staging-userdebug (ii) aosp_akita-trunk_staging-userdebug and tested 4kb and 16kb mode. Flag: EXEMPT bugfix --- BoardConfig-16k-common.mk | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/BoardConfig-16k-common.mk b/BoardConfig-16k-common.mk index d636e9ad..adf2b338 100644 --- a/BoardConfig-16k-common.mk +++ b/BoardConfig-16k-common.mk @@ -31,8 +31,18 @@ BOARD_KERNEL_MODULES_16K += $(file < $(TARGET_KERNEL_DIR_16K)/vendor_dlkm.module BOARD_KERNEL_MODULES_16K := $(foreach module,$(BOARD_KERNEL_MODULES_16K),$(TARGET_KERNEL_DIR_16K)/$(notdir $(module))) BOARD_PREBUILT_DTBOIMAGE_16KB := $(TARGET_KERNEL_DIR_16K)/dtbo.img -# Zuma targets use exynos-bcm_dbg.ko module instead of bcm_dbg.ko. +# The 16kb mode does not use these modules. +BOARD_KERNEL_MODULES_16K := $(filter-out %/aoc_unit_test_dev.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/bcm_dbg.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/gnssif.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/gnss_spi.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/goodix_brl_touch.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/mali_kutf.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/mali_kutf_clk_rate_trace_test_portal.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/rt6160_regulator.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/sec_touch.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/sscoredump_sample_test.ko,$(BOARD_KERNEL_MODULES_16K)) +BOARD_KERNEL_MODULES_16K := $(filter-out %/sscoredump_test.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/zram.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_LOAD_16K := $(foreach module,$(BOARD_KERNEL_MODULES_16K),$(notdir $(module))) From 05a6015570c579da8b806a973c31685f13ef2d0a Mon Sep 17 00:00:00 2001 From: Vilas Bhat Date: Wed, 8 Jan 2025 18:05:59 +0000 Subject: [PATCH 24/34] 16KB: zuma: Do not filter out goodix_brl_touch.ko for 16KB mode Filtering out this module broke touchscreen functionality for Pixel 8 devices in 16 KB mode. Bug: 388515914 Flag: EXEMPT bugfix Test: Built (i) aosp_husky-trunk_staging-userdebug (ii) aosp_akita-trunk_staging-userdebug and tested 4kb and 16kb mode. Change-Id: I8ba72c8eabb5522873025cf9d80aa03a53fb8cfb Merged-In: I8ba72c8eabb5522873025cf9d80aa03a53fb8cfb --- BoardConfig-16k-common.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/BoardConfig-16k-common.mk b/BoardConfig-16k-common.mk index adf2b338..ef54bbbf 100644 --- a/BoardConfig-16k-common.mk +++ b/BoardConfig-16k-common.mk @@ -36,7 +36,6 @@ BOARD_KERNEL_MODULES_16K := $(filter-out %/aoc_unit_test_dev.ko,$(BOARD_KERNEL_M BOARD_KERNEL_MODULES_16K := $(filter-out %/bcm_dbg.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/gnssif.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/gnss_spi.ko,$(BOARD_KERNEL_MODULES_16K)) -BOARD_KERNEL_MODULES_16K := $(filter-out %/goodix_brl_touch.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/mali_kutf.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/mali_kutf_clk_rate_trace_test_portal.ko,$(BOARD_KERNEL_MODULES_16K)) BOARD_KERNEL_MODULES_16K := $(filter-out %/rt6160_regulator.ko,$(BOARD_KERNEL_MODULES_16K)) From e26b52f20eb62f25f8cd40c8ccee6da9496c7753 Mon Sep 17 00:00:00 2001 From: Roy Luo Date: Thu, 23 Jan 2025 05:22:58 +0000 Subject: [PATCH 25/34] usb: migrate UsbDataSessionMonitor to libpixelusb Use the libpixelusb version of UsbDataSessionMonitor. Bug: 388367091 Test: test on shiba Flag: EXEMPT CP Change-Id: I93b74fc9bb63c260e900ee5af73e66fb1559142d --- usb/usb/Android.bp | 10 +- usb/usb/Usb.cpp | 8 +- usb/usb/Usb.h | 5 +- usb/usb/UsbDataSessionMonitor.cpp | 508 ------------------------------ usb/usb/UsbDataSessionMonitor.h | 117 ------- 5 files changed, 9 insertions(+), 639 deletions(-) delete mode 100644 usb/usb/UsbDataSessionMonitor.cpp delete mode 100644 usb/usb/UsbDataSessionMonitor.h diff --git a/usb/usb/Android.bp b/usb/usb/Android.bp index be45393f..2b3fa266 100644 --- a/usb/usb/Android.bp +++ b/usb/usb/Android.bp @@ -34,7 +34,6 @@ cc_binary { srcs: [ "service.cpp", "Usb.cpp", - "UsbDataSessionMonitor.cpp", ], shared_libs: [ "libbase", @@ -59,18 +58,13 @@ cc_binary { ], static_libs: [ "libpixelusb-aidl", + "libpixelusb-datasession", "libpixelstats", "libthermalutils", - "android.hardware.usb.flags-aconfig-c-lib", + "android.hardware.usb.flags-aconfig-cc-lib", ], export_shared_lib_headers: [ "android.frameworks.stats-V2-ndk", "pixelatoms-cpp", ], } - -cc_aconfig_library { - name: "android.hardware.usb.flags-aconfig-c-lib", - vendor: true, - aconfig_declarations: "android.hardware.usb.flags-aconfig", -} diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 10422f6c..b0233512 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -521,9 +521,9 @@ Usb::Usb() mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER), mPartnerLock(PTHREAD_MUTEX_INITIALIZER), mPartnerUp(false), - mUsbDataSessionMonitor(kUdcUeventRegex, kUdcStatePath, kHost1UeventRegex, kHost1StatePath, - kHost2UeventRegex, kHost2StatePath, kDataRolePath, - std::bind(&updatePortStatus, this)), + mUsbDataSessionMonitor(new UsbDataSessionMonitor(kUdcUeventRegex, kUdcStatePath, + kHost1UeventRegex, kHost1StatePath, kHost2UeventRegex, + kHost2StatePath, kDataRolePath, std::bind(&updatePortStatus, this))), mOverheat(ZoneInfo(TemperatureType::USB_PORT, kThermalZoneForTrip, ThrottlingSeverity::CRITICAL), {ZoneInfo(TemperatureType::UNKNOWN, kThermalZoneForTempReadPrimary, @@ -1075,7 +1075,7 @@ void queryUsbDataSession(android::hardware::usb::Usb *usb, std::vector *currentPortStatus) { std::vector warnings; - usb->mUsbDataSessionMonitor.getComplianceWarnings( + usb->mUsbDataSessionMonitor->getComplianceWarnings( (*currentPortStatus)[0].currentDataRole, &warnings); (*currentPortStatus)[0].complianceWarnings.insert( (*currentPortStatus)[0].complianceWarnings.end(), diff --git a/usb/usb/Usb.h b/usb/usb/Usb.h index 4746a88c..f0a96634 100644 --- a/usb/usb/Usb.h +++ b/usb/usb/Usb.h @@ -19,10 +19,10 @@ #include #include #include +#include #include #include #include -#include #define UEVENT_MSG_LEN 2048 // The type-c stack waits for 4.5 - 5.5 secs before declaring a port non-pd. @@ -50,6 +50,7 @@ using ::aidl::android::hardware::usb::PortRole; using ::android::base::ReadFileToString; using ::android::base::WriteStringToFile; using ::android::base::unique_fd; +using ::android::hardware::google::pixel::usb::UsbDataSessionMonitor; using ::android::hardware::google::pixel::usb::UsbOverheatEvent; using ::android::hardware::google::pixel::usb::ZoneInfo; using ::android::hardware::thermal::V2_0::TemperatureType; @@ -123,7 +124,7 @@ struct Usb : public BnUsb { bool mPartnerUp; // Report usb data session event and data incompliance warnings - UsbDataSessionMonitor mUsbDataSessionMonitor; + std::unique_ptr mUsbDataSessionMonitor; // Usb Overheat object for push suez event UsbOverheatEvent mOverheat; // Temperature when connected diff --git a/usb/usb/UsbDataSessionMonitor.cpp b/usb/usb/UsbDataSessionMonitor.cpp deleted file mode 100644 index bff52f06..00000000 --- a/usb/usb/UsbDataSessionMonitor.cpp +++ /dev/null @@ -1,508 +0,0 @@ -/* - * Copyright (C) 2023 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. - */ - -#define LOG_TAG "android.hardware.usb.aidl-service.UsbDataSessionMonitor" - -#include "UsbDataSessionMonitor.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace usb_flags = android::hardware::usb::flags; - -using aidl::android::frameworks::stats::IStats; -using android::base::ReadFileToString; -using android::hardware::google::pixel::getStatsService; -using android::hardware::google::pixel::reportUsbDataSessionEvent; -using android::hardware::google::pixel::PixelAtoms::VendorUsbDataSessionEvent; -using android::hardware::google::pixel::usb::addEpollFd; -using android::hardware::google::pixel::usb::BuildVendorUsbDataSessionEvent; - -namespace aidl { -namespace android { -namespace hardware { -namespace usb { - -#define UEVENT_MSG_LEN 2048 -#define USB_STATE_MAX_LEN 20 -#define DATA_ROLE_MAX_LEN 10 -#define WARNING_SURFACE_DELAY_SEC 5 -#define ENUM_FAIL_DEFAULT_COUNT_THRESHOLD 3 -#define DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD 5 - -constexpr char kUdcConfigfsPath[] = "/config/usb_gadget/g1/UDC"; -constexpr char kNotAttachedState[] = "not attached\n"; -constexpr char kAttachedState[] = "attached\n"; -constexpr char kPoweredState[] = "powered\n"; -constexpr char kDefaultState[] = "default\n"; -constexpr char kAddressedState[] = "addressed\n"; -constexpr char kConfiguredState[] = "configured\n"; -constexpr char kSuspendedState[] = "suspended\n"; -const std::set kValidStates = {kNotAttachedState, kAttachedState, kPoweredState, - kDefaultState, kAddressedState, kConfiguredState, - kSuspendedState}; - -static int addEpollFile(const int &epollFd, const std::string &filePath, unique_fd &fileFd) { - struct epoll_event ev; - - unique_fd fd(open(filePath.c_str(), O_RDONLY)); - - if (fd.get() == -1) { - ALOGI("Cannot open %s", filePath.c_str()); - return -1; - } - - ev.data.fd = fd.get(); - ev.events = EPOLLPRI; - - if (epoll_ctl(epollFd, EPOLL_CTL_ADD, fd.get(), &ev) != 0) { - ALOGE("epoll_ctl failed; errno=%d", errno); - return -1; - } - - fileFd = std::move(fd); - ALOGI("epoll registered %s", filePath.c_str()); - return 0; -} - -static void removeEpollFile(const int &epollFd, const std::string &filePath, unique_fd &fileFd) { - epoll_ctl(epollFd, EPOLL_CTL_DEL, fileFd.get(), NULL); - fileFd.release(); - - ALOGI("epoll unregistered %s", filePath.c_str()); -} - -UsbDataSessionMonitor::UsbDataSessionMonitor( - const std::string &deviceUeventRegex, const std::string &deviceStatePath, - const std::string &host1UeventRegex, const std::string &host1StatePath, - const std::string &host2UeventRegex, const std::string &host2StatePath, - const std::string &dataRolePath, std::function updatePortStatusCb) { - struct epoll_event ev; - std::string udc; - - unique_fd epollFd(epoll_create(8)); - if (epollFd.get() == -1) { - ALOGE("epoll_create failed; errno=%d", errno); - abort(); - } - - unique_fd ueventFd(uevent_open_socket(64 * 1024, true)); - if (ueventFd.get() == -1) { - ALOGE("uevent_open_socket failed"); - abort(); - } - fcntl(ueventFd, F_SETFL, O_NONBLOCK); - - if (addEpollFd(epollFd, ueventFd)) - abort(); - - unique_fd timerFd(timerfd_create(CLOCK_BOOTTIME, TFD_NONBLOCK)); - if (timerFd.get() == -1) { - ALOGE("create timerFd failed"); - abort(); - } - - if (addEpollFd(epollFd, timerFd)) - abort(); - - if (addEpollFile(epollFd.get(), dataRolePath, mDataRoleFd) != 0) { - ALOGE("monitor data role failed"); - abort(); - } - - /* - * The device state file could be absent depending on the current data role - * and driver architecture. It's ok for addEpollFile to fail here, the file - * will be monitored later when its presence is detected by uevent. - */ - mDeviceState.filePath = deviceStatePath; - mDeviceState.ueventRegex = deviceUeventRegex; - addEpollFile(epollFd.get(), mDeviceState.filePath, mDeviceState.fd); - - mHost1State.filePath = host1StatePath; - mHost1State.ueventRegex = host1UeventRegex; - addEpollFile(epollFd.get(), mHost1State.filePath, mHost1State.fd); - - mHost2State.filePath = host2StatePath; - mHost2State.ueventRegex = host2UeventRegex; - addEpollFile(epollFd.get(), mHost2State.filePath, mHost2State.fd); - - mEpollFd = std::move(epollFd); - mUeventFd = std::move(ueventFd); - mTimerFd = std::move(timerFd); - mUpdatePortStatusCb = updatePortStatusCb; - - if (ReadFileToString(kUdcConfigfsPath, &udc) && !udc.empty()) - mUdcBind = true; - else - mUdcBind = false; - - if (pthread_create(&mMonitor, NULL, this->monitorThread, this)) { - ALOGE("pthread creation failed %d", errno); - abort(); - } - - ALOGI("feature flag enable_report_usb_data_compliance_warning: %d", - usb_flags::enable_report_usb_data_compliance_warning()); -} - -UsbDataSessionMonitor::~UsbDataSessionMonitor() {} - -void UsbDataSessionMonitor::reportUsbDataSessionMetrics() { - std::vector events; - - if (mDataRole == PortDataRole::DEVICE) { - VendorUsbDataSessionEvent event; - BuildVendorUsbDataSessionEvent(false /* is_host */, boot_clock::now(), mDataSessionStart, - &mDeviceState.states, &mDeviceState.timestamps, &event); - events.push_back(event); - } else if (mDataRole == PortDataRole::HOST) { - bool empty = true; - for (auto e : {&mHost1State, &mHost2State}) { - /* - * Host port will at least get an not_attached event after enablement, - * skip upload if no additional state is added. - */ - if (e->states.size() > 1) { - VendorUsbDataSessionEvent event; - BuildVendorUsbDataSessionEvent(true /* is_host */, boot_clock::now(), - mDataSessionStart, &e->states, &e->timestamps, - &event); - events.push_back(event); - empty = false; - } - } - // All host ports have no state update, upload an event to reflect it - if (empty) { - VendorUsbDataSessionEvent event; - BuildVendorUsbDataSessionEvent(true /* is_host */, boot_clock::now(), mDataSessionStart, - &mHost1State.states, &mHost1State.timestamps, &event); - events.push_back(event); - } - } else { - return; - } - - const std::shared_ptr stats_client = getStatsService(); - if (!stats_client) { - ALOGE("Unable to get AIDL Stats service"); - return; - } - - for (auto &event : events) { - reportUsbDataSessionEvent(stats_client, event); - } -} - -void UsbDataSessionMonitor::getComplianceWarnings(const PortDataRole &role, - std::vector *warnings) { - if (!usb_flags::enable_report_usb_data_compliance_warning()) - return; - - if (role != mDataRole || role == PortDataRole::NONE) - return; - - for (auto w : mWarningSet) { - warnings->push_back(w); - } -} - -void UsbDataSessionMonitor::notifyComplianceWarning() { - if (!usb_flags::enable_report_usb_data_compliance_warning()) - return; - - if (mUpdatePortStatusCb) - mUpdatePortStatusCb(); -} - -void UsbDataSessionMonitor::evaluateComplianceWarning() { - std::set newWarningSet; - int elapsedTimeSec; - - elapsedTimeSec = - std::chrono::duration_cast(boot_clock::now() - mDataSessionStart) - .count(); - - if (elapsedTimeSec >= WARNING_SURFACE_DELAY_SEC) { - if (mDataRole == PortDataRole::DEVICE && mUdcBind) { - int configuredCount = std::count(mDeviceState.states.begin(), - mDeviceState.states.end(), kConfiguredState); - int defaultCount = - std::count(mDeviceState.states.begin(), mDeviceState.states.end(), kDefaultState); - - if (configuredCount == 0 && defaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD) - newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL); - - if (configuredCount > DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD) - newWarningSet.insert(ComplianceWarning::FLAKY_CONNECTION); - } else if (mDataRole == PortDataRole::HOST) { - int host1StateCount = mHost1State.states.size(); - int host1ConfiguredCount = - std::count(mHost1State.states.begin(), mHost1State.states.end(), kConfiguredState); - int host1DefaultCount = - std::count(mHost1State.states.begin(), mHost1State.states.end(), kDefaultState); - int host2StateCount = mHost2State.states.size(); - int host2ConfiguredCount = - std::count(mHost2State.states.begin(), mHost2State.states.end(), kConfiguredState); - int host2DefaultCount = - std::count(mHost2State.states.begin(), mHost2State.states.end(), kDefaultState); - - if (host1ConfiguredCount == 0 && host2ConfiguredCount == 0 && - (host1DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD || - host2DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD)) - newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL); - - if (host1StateCount == 1 && mHost1State.states.front() == kNotAttachedState && - host2StateCount == 1 && mHost2State.states.front() == kNotAttachedState) - newWarningSet.insert(ComplianceWarning::MISSING_DATA_LINES); - } - } - - if (newWarningSet != mWarningSet) { - std::string newWarningString; - - for (auto e : newWarningSet) { - newWarningString += toString(e) + " "; - } - ALOGI("Usb data compliance warning changed to: %s", newWarningString.c_str()); - - mWarningSet = newWarningSet; - notifyComplianceWarning(); - } -} - -void UsbDataSessionMonitor::clearDeviceStateEvents(struct usbDeviceState *deviceState) { - deviceState->states.clear(); - deviceState->timestamps.clear(); -} - -void UsbDataSessionMonitor::handleDeviceStateEvent(struct usbDeviceState *deviceState) { - int n; - char state[USB_STATE_MAX_LEN] = {0}; - - lseek(deviceState->fd.get(), 0, SEEK_SET); - n = read(deviceState->fd.get(), &state, USB_STATE_MAX_LEN); - - if (kValidStates.find(state) == kValidStates.end()) { - ALOGE("Invalid state %s", state); - return; - } - - ALOGI("Update USB device state: %s", state); - - deviceState->states.push_back(state); - deviceState->timestamps.push_back(boot_clock::now()); - evaluateComplianceWarning(); -} - -void UsbDataSessionMonitor::setupNewSession() { - mWarningSet.clear(); - mDataSessionStart = boot_clock::now(); - - if (mDataRole == PortDataRole::DEVICE) { - clearDeviceStateEvents(&mDeviceState); - } else if (mDataRole == PortDataRole::HOST) { - clearDeviceStateEvents(&mHost1State); - clearDeviceStateEvents(&mHost2State); - } - - if (mDataRole != PortDataRole::NONE) { - struct itimerspec delay = itimerspec(); - delay.it_value.tv_sec = WARNING_SURFACE_DELAY_SEC; - int ret = timerfd_settime(mTimerFd.get(), 0, &delay, NULL); - if (ret < 0) - ALOGE("timerfd_settime failed err:%d", errno); - } -} - -void UsbDataSessionMonitor::handleDataRoleEvent() { - int n; - PortDataRole newDataRole; - char role[DATA_ROLE_MAX_LEN] = {0}; - - lseek(mDataRoleFd.get(), 0, SEEK_SET); - n = read(mDataRoleFd.get(), &role, DATA_ROLE_MAX_LEN); - - ALOGI("Update USB data role %s", role); - - if (!std::strcmp(role, "host")) { - newDataRole = PortDataRole::HOST; - } else if (!std::strcmp(role, "device")) { - newDataRole = PortDataRole::DEVICE; - } else { - newDataRole = PortDataRole::NONE; - } - - if (newDataRole != mDataRole) { - // Upload metrics for the last data session that has ended - if (mDataRole == PortDataRole::HOST || (mDataRole == PortDataRole::DEVICE && mUdcBind)) { - reportUsbDataSessionMetrics(); - } - - mDataRole = newDataRole; - setupNewSession(); - } -} - -void UsbDataSessionMonitor::updateUdcBindStatus(const std::string &devname) { - std::string function; - bool newUdcBind; - - /* - * /sys/class/udc//function prints out name of currently running USB gadget driver - * Ref: https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-udc - * Empty name string means the udc device is not bound and gadget is pulldown. - */ - if (!ReadFileToString("/sys" + devname + "/function", &function)) - return; - - if (function == "") - newUdcBind = false; - else - newUdcBind = true; - - if (newUdcBind == mUdcBind) - return; - - if (mDataRole == PortDataRole::DEVICE) { - if (mUdcBind && !newUdcBind) { - /* - * Gadget soft pulldown: report metrics as the end of a data session and - * re-evaluate compliance warnings to clear existing warnings if any. - */ - reportUsbDataSessionMetrics(); - evaluateComplianceWarning(); - - } else if (!mUdcBind && newUdcBind) { - // Gadget soft pullup: reset and start accounting for a new data session. - setupNewSession(); - } - } - - ALOGI("Udc bind status changes from %b to %b", mUdcBind, newUdcBind); - mUdcBind = newUdcBind; -} - -void UsbDataSessionMonitor::handleUevent() { - char msg[UEVENT_MSG_LEN + 2]; - char *cp; - int n; - - n = uevent_kernel_multicast_recv(mUeventFd.get(), msg, UEVENT_MSG_LEN); - if (n <= 0) - return; - if (n >= UEVENT_MSG_LEN) - return; - - msg[n] = '\0'; - msg[n + 1] = '\0'; - cp = msg; - - while (*cp) { - for (auto e : {&mHost1State, &mHost2State}) { - if (std::regex_search(cp, std::regex(e->ueventRegex))) { - if (!strncmp(cp, "bind@", strlen("bind@"))) { - addEpollFile(mEpollFd.get(), e->filePath, e->fd); - } else if (!strncmp(cp, "unbind@", strlen("unbind@"))) { - removeEpollFile(mEpollFd.get(), e->filePath, e->fd); - } - } - } - - // TODO: support bind@ unbind@ to detect dynamically allocated udc device - if (std::regex_search(cp, std::regex(mDeviceState.ueventRegex))) { - if (!strncmp(cp, "change@", strlen("change@"))) { - char *devname = cp + strlen("change@"); - /* - * Udc device emits a KOBJ_CHANGE event on configfs driver bind and unbind. - * TODO: upstream udc driver emits KOBJ_CHANGE event BEFORE unbind is actually - * executed. Add a short delay to get the correct state while working on a fix - * upstream. - */ - usleep(50000); - updateUdcBindStatus(devname); - } - } - /* advance to after the next \0 */ - while (*cp++) { - } - } -} - -void UsbDataSessionMonitor::handleTimerEvent() { - int byteRead; - uint64_t numExpiration; - - byteRead = read(mTimerFd.get(), &numExpiration, sizeof(numExpiration)); - - if (byteRead != sizeof(numExpiration)) { - ALOGE("incorrect read size"); - } - - if (numExpiration != 1) { - ALOGE("incorrect expiration count"); - } - - evaluateComplianceWarning(); -} - -void *UsbDataSessionMonitor::monitorThread(void *param) { - UsbDataSessionMonitor *monitor = (UsbDataSessionMonitor *)param; - struct epoll_event events[64]; - int nevents = 0; - - while (true) { - nevents = epoll_wait(monitor->mEpollFd.get(), events, 64, -1); - if (nevents == -1) { - if (errno == EINTR) - continue; - ALOGE("usb epoll_wait failed; errno=%d", errno); - break; - } - - for (int n = 0; n < nevents; ++n) { - if (events[n].data.fd == monitor->mUeventFd.get()) { - monitor->handleUevent(); - } else if (events[n].data.fd == monitor->mTimerFd.get()) { - monitor->handleTimerEvent(); - } else if (events[n].data.fd == monitor->mDataRoleFd.get()) { - monitor->handleDataRoleEvent(); - } else if (events[n].data.fd == monitor->mDeviceState.fd.get()) { - monitor->handleDeviceStateEvent(&monitor->mDeviceState); - } else if (events[n].data.fd == monitor->mHost1State.fd.get()) { - monitor->handleDeviceStateEvent(&monitor->mHost1State); - } else if (events[n].data.fd == monitor->mHost2State.fd.get()) { - monitor->handleDeviceStateEvent(&monitor->mHost2State); - } - } - } - return NULL; -} - -} // namespace usb -} // namespace hardware -} // namespace android -} // namespace aidl diff --git a/usb/usb/UsbDataSessionMonitor.h b/usb/usb/UsbDataSessionMonitor.h deleted file mode 100644 index aced8a48..00000000 --- a/usb/usb/UsbDataSessionMonitor.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2023 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. - */ - -#pragma once - -#include -#include -#include -#include - -#include -#include -#include - -namespace aidl { -namespace android { -namespace hardware { -namespace usb { - -using ::aidl::android::hardware::usb::ComplianceWarning; -using ::aidl::android::hardware::usb::PortDataRole; -using ::android::base::boot_clock; -using ::android::base::unique_fd; - -/* - * UsbDataSessionMonitor monitors the usb device state sysfs of 3 different usb devices - * including device mode (udc), host mode high-speed port and host mode super-speed port. It - * reports Suez metrics for each data session and also provides API to query the compliance - * warnings detected in the current usb data session. - */ -class UsbDataSessionMonitor { - public: - /* - * The host mode high-speed port and super-speed port can be assigned to either host1 or - * host2 without affecting functionality. - * - * UeventRegex: name regex of the device that's being monitored. The regex is matched against - * uevent to detect dynamic creation/deletion/change of the device. - * StatePath: usb device state sysfs path of the device, monitored by epoll. - * dataRolePath: path to the usb data role sysfs, monitored by epoll. - * updatePortStatusCb: the callback is invoked when the compliance warings changes. - */ - UsbDataSessionMonitor(const std::string &deviceUeventRegex, const std::string &deviceStatePath, - const std::string &host1UeventRegex, const std::string &host1StatePath, - const std::string &host2UeventRegex, const std::string &host2StatePath, - const std::string &dataRolePath, - std::function updatePortStatusCb); - ~UsbDataSessionMonitor(); - // Returns the compliance warnings detected in the current data session. - void getComplianceWarnings(const PortDataRole &role, std::vector *warnings); - - private: - struct usbDeviceState { - unique_fd fd; - std::string filePath; - std::string ueventRegex; - // Usb device states reported by state sysfs - std::vector states; - // Timestamps of when the usb device states were captured - std::vector timestamps; - }; - - static void *monitorThread(void *param); - void handleUevent(); - void handleTimerEvent(); - void handleDataRoleEvent(); - void handleDeviceStateEvent(struct usbDeviceState *deviceState); - void clearDeviceStateEvents(struct usbDeviceState *deviceState); - void setupNewSession(); - void reportUsbDataSessionMetrics(); - void evaluateComplianceWarning(); - void notifyComplianceWarning(); - void updateUdcBindStatus(const std::string &devname); - - pthread_t mMonitor; - unique_fd mEpollFd; - unique_fd mUeventFd; - unique_fd mTimerFd; - unique_fd mDataRoleFd; - struct usbDeviceState mDeviceState; - struct usbDeviceState mHost1State; - struct usbDeviceState mHost2State; - std::set mWarningSet; - // Callback function to notify the caller when there's a change in compliance warnings. - std::function mUpdatePortStatusCb; - /* - * Cache relevant info for a USB data session when one starts, including - * the data role and the time when the session starts. - */ - PortDataRole mDataRole; - boot_clock::time_point mDataSessionStart; - /* - * In gadget mode: this indicates whether the udc device is bound to the configfs driver, which - * is done by userspace writing the udc device name to /config/usb_gadget/g1/UDC. When unbound, - * the gadget is in soft pulldown state and is expected not to enumerate. During gadget - * function switch, the udc device usually go through unbind and bind. - */ - bool mUdcBind; -}; - -} // namespace usb -} // namespace hardware -} // namespace android -} // namespace aidl From 96585a6498c975bd347174c7513dfe6d9bb632db Mon Sep 17 00:00:00 2001 From: Piotr Klasa Date: Wed, 22 Jan 2025 11:27:35 +0000 Subject: [PATCH 26/34] move common init perf settings to gs_common MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit compared to ag/31352563 I did not transfer the settings for "write /sys/devices/system/cpu/cpuidle/current_governor teo", which caused the problem Test: Verified if all values ​​of transferred settings are as they should be after rebooting the device, and and checked that there are no new selinux errors for hal_power_default, verified all metrics that caused power regression in the previous commit on abtd Bug: 335874870 Flag: EXEMPT not supported by this component yet Change-Id: I3485325c7416fbc812eaec7da00e337840125053 --- conf/init.zuma.rc | 57 ----------------------------------------------- 1 file changed, 57 deletions(-) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index d8829879..483711dd 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -107,15 +107,6 @@ on init write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/memlat_cpuidle_state_aware 2 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu8_memlat@17000010/memlat_cpuidle_state_aware 2 - # RT uclamp setting - write /proc/sys/kernel/sched_util_clamp_min_rt_default 0 - - # change permissions and default values for camera-daemon cpu controller - chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.min - chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.max - chown root root /dev/cpuctl/camera-daemon/cpu.uclamp.latency_sensitive - chown system system /dev/cpuctl/camera-daemon/cgroup.procs - mkdir /dev/cpuset/camera-daemon-high-group write /dev/cpuset/camera-daemon-high-group/cpus 0-8 write /dev/cpuset/camera-daemon-high-group/mems 0 @@ -134,11 +125,6 @@ on init chown system system /dev/cpuset/camera-daemon-mid-high-group/tasks chmod 0664 /dev/cpuset/camera-daemon-mid-high-group/tasks - write /proc/vendor_sched/groups/cam/prefer_idle 1 - write /proc/vendor_sched/groups/cam/uclamp_min 1 - - chown system system /dev/cpuset/cgroup.procs - # nanohub sensor chmod 0664 /dev/nanohub chmod 0664 /dev/nanohub_comms @@ -225,10 +211,6 @@ on init # Power Stats HAL chown system system /dev/bbd_pwrstat - # Add a boost for NNAPI HAL - write /proc/vendor_sched/groups/nnapi/prefer_idle 0 - write /proc/vendor_sched/groups/nnapi/uclamp_min 512 - # Add memlat governor settings write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/polling_interval 10 write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu1_memlat@17000010/polling_interval 10 @@ -704,27 +686,6 @@ on property:sys.boot_completed=1 write /dev/cpuset/camera-daemon/cpus 0-8 setprop vendor.powerhal.init 1 - # Setup scheduler parameters - write /proc/vendor_sched/min_granularity_ns 1000000 - write /proc/vendor_sched/latency_ns 8000000 - write /proc/vendor_sched/max_load_balance_interval 1 - write /proc/vendor_sched/enable_hrtick 1 - - # Setup final cpu.uclamp - write /proc/vendor_sched/groups/ta/uclamp_min 1 - write /proc/vendor_sched/groups/fg/uclamp_min 0 - write /proc/vendor_sched/groups/sys/prefer_idle 0 - - # Set ug group - write /proc/vendor_sched/groups/bg/ug 0 - write /proc/vendor_sched/groups/sys_bg/ug 0 - write /proc/vendor_sched/groups/ota/ug 0 - write /proc/vendor_sched/groups/dex2oat/ug 1 - write /proc/vendor_sched/groups/ta/ug 1 - - # Set bg group throttle - write /proc/vendor_sched/ug_bg_group_throttle ${persist.device_config.vendor_system_native.ug_bg_group_throttle:-308} - # Set uclamp.max for some groups, which could indicate cpu importance used in scheduling write /proc/vendor_sched/auto_uclamp_max "130 130 130 130 512 512 512 512 670" write /proc/vendor_sched/groups/bg/uclamp_max 130 @@ -748,12 +709,6 @@ on property:sys.boot_completed=1 write /sys/devices/system/cpu/cpufreq/policy8/sched_pixel/limit_frequency 2363000 write /proc/vendor_sched/pmu_poll_time 10 - # Disable PMU freq limit - write /sys/devices/system/cpu/cpufreq/policy0/sched_pixel/pmu_limit_enable 1 - write /sys/devices/system/cpu/cpufreq/policy4/sched_pixel/pmu_limit_enable 1 - write /sys/devices/system/cpu/cpufreq/policy8/sched_pixel/pmu_limit_enable 1 - write /proc/vendor_sched/pmu_poll_enable 0 - # Make devices on the critical path for suspend/resume asynchronous write /sys/devices/platform/fixedregulator@0/regulator/regulator.2/power/async "enabled" write /sys/devices/platform/fixedregulator@0/power/async "enabled" @@ -761,18 +716,6 @@ on property:sys.boot_completed=1 write /sys/devices/platform/10840000.pinctrl/power/async "enabled" write /sys/devices/platform/13060000.pinctrl/power/async "enabled" - # Setup cpu.shares to throttle background groups (bg ~ 5% sysbg ~ 5% dex2oat ~2.5%) - write /dev/cpuctl/background/cpu.shares 1024 - write /dev/cpuctl/system-background/cpu.shares 1024 - write /dev/cpuctl/dex2oat/cpu.shares 512 - write /dev/cpuctl/system/cpu.shares 20480 - # We only have system and background groups holding tasks and the groups below are empty - write /dev/cpuctl/camera-daemon/cpu.shares 20480 - write /dev/cpuctl/foreground/cpu.shares 20480 - write /dev/cpuctl/nnapi-hal/cpu.shares 20480 - write /dev/cpuctl/rt/cpu.shares 20480 - write /dev/cpuctl/top-app/cpu.shares 20480 - # gvotables for dumpstate chown system system /sys/kernel/debug/gvotables From 904879f5a4dabb8335c1417439970d67d361afcb Mon Sep 17 00:00:00 2001 From: Masha Chizhova Date: Tue, 28 Jan 2025 16:34:13 +0000 Subject: [PATCH 27/34] Use 2025-03-01 deqp levels for GLES and Vulkan Bug: 392805030 Flag: EXEMPT version updates Change-Id: I732f9f1e877b51c9d1bb36c677fca1be56240ae9 --- .manifest.swp | Bin 0 -> 12288 bytes device.mk | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 .manifest.swp diff --git a/.manifest.swp b/.manifest.swp new file mode 100644 index 0000000000000000000000000000000000000000..83b4cc8976fd1328182aa1d1076cdb79cbefa6e5 GIT binary patch literal 12288 zcmeI%yAFad6oBD_yV2k3hu^PBq_$cG3!N?ER6SpOncwoL+cZV*SW>4&#O zFH(BtO~X_Np?BZnW&22(^_8B5yX18%_Xr^Hw?J{!>vr0 Date: Wed, 29 Jan 2025 19:38:29 +0000 Subject: [PATCH 28/34] init.zuma.rc: Delete governor setup It is now set in the common init.rc file. Bug: 392622882 Flag: EXEMPT not supported for init.rc files Signed-off-by: Qais Yousef Change-Id: I3cdbd40e205d2ae9be49e97c9ef7cc32222852e9 --- conf/init.zuma.rc | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index 483711dd..8221d829 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -86,15 +86,6 @@ on init write /proc/vendor_sched/groups/sys/uclamp_min 221 write /proc/vendor_sched/groups/sys/prefer_idle 1 - # governor setting - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor sched_pixel - write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_scale_pow 2 - write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor sched_pixel - write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/up_rate_limit_us 500 - write /sys/devices/system/cpu/cpu8/cpufreq/scaling_governor sched_pixel - write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/up_rate_limit_us 500 - # memlat cpuidle awareness setting write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/memlat_cpuidle_state_aware 2 @@ -292,11 +283,6 @@ on late-fs # Mount RW partitions which need run fsck mount_all --late -on late-init - write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000 - write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000 - write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us 20000 - on post-fs-data # Modem temperature driver chown radio system /sys/devices/platform/cp-tm1/cp_temp From 63ac2829591542f13efcc21d5db0fcc2d0c48e4c Mon Sep 17 00:00:00 2001 From: "Priyanka Advani (xWF)" Date: Thu, 30 Jan 2025 10:53:05 -0800 Subject: [PATCH 29/34] Revert "Use 2025-03-01 deqp levels for GLES and Vulkan" Revert submission 31488081-deqp-2025-03-01 Reason for revert: Droidmonitor created revert due to b/393355394. Will be verifying through ABTD before submission. Reverted changes: /q/submissionid:31488081-deqp-2025-03-01 Change-Id: I606dfb4296d1eb86e4f7497b183ff262a268c8d4 --- .manifest.swp | Bin 12288 -> 0 bytes device.mk | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 .manifest.swp diff --git a/.manifest.swp b/.manifest.swp deleted file mode 100644 index 83b4cc8976fd1328182aa1d1076cdb79cbefa6e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI%yAFad6oBD_yV2k3hu^PBq_$cG3!N?ER6SpOncwoL+cZV*SW>4&#O zFH(BtO~X_Np?BZnW&22(^_8B5yX18%_Xr^Hw?J{!>vr0 Date: Thu, 30 Jan 2025 23:00:17 +0000 Subject: [PATCH 30/34] [AAPM] Enable MTE support for DevicePolicyManager for zuma Set the system property that lets the DevicePolicyManager know it can control Memory Tagging Extension on the device. With this property set, when the user turns on AAPM, it will turn on MTE. This has been enabled for zumapro, now enabling for zuma devices. Bug: 352420507 Test: Manual Flag: android.security.aapm_feature_memory_tagging_extension Change-Id: I14bfdd461076a499457c5a81ed151bfaebbfb2bb --- device-common.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device-common.mk b/device-common.mk index 41978abb..d8c431da 100644 --- a/device-common.mk +++ b/device-common.mk @@ -61,6 +61,9 @@ PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.app.com.android.se=off PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.app.com.google.android.bluetooth=off PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.app.com.android.nfc=off PRODUCT_PRODUCT_PROPERTIES += persist.arm64.memtag.system_server=off +# Also enable the system property that would turn on MTE when Android Advanced +# Protection Mode is turned on. +PRODUCT_PRODUCT_PROPERTIES += ro.arm64.memtag.bootctl_device_policy_manager=true endif endif From 196a247014a3b008be22558e979ff93722eb34bb Mon Sep 17 00:00:00 2001 From: Masha Chizhova Date: Fri, 31 Jan 2025 11:52:51 +0000 Subject: [PATCH 31/34] Use 2025-03-01 deqp levels for Vulkan Bug: 392805030 Flag: EXEMPT version updates Test: running v2/angle-for-android/angle_deqp_git_main_presubmit_shard_00 - shard_07 https://android-build.corp.google.com/builds/abtd/run/L80300030009248380 https://android-build.corp.google.com/builds/abtd/run/L53700030009247551 Change-Id: I2e68ad25ce5e0f7abf3deb07b15764c5c058a58a --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index 70c49594..ec9ee6a7 100644 --- a/device.mk +++ b/device.mk @@ -326,7 +326,7 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.vulkan.version-1_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \ frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \ - frameworks/native/data/etc/android.software.vulkan.deqp.level-2024-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \ + frameworks/native/data/etc/android.software.vulkan.deqp.level-2025-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \ frameworks/native/data/etc/android.software.opengles.deqp.level-2024-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml #endif From f121dfca76a87a570b86e5529d20983670212948 Mon Sep 17 00:00:00 2001 From: Jerry Huang Date: Tue, 4 Feb 2025 08:31:29 +0000 Subject: [PATCH 32/34] zuma: adjust performance point of hevc decoder adjust hevc decoder 352x288 peroformance point to other codec Bug: 385249512 Test: CtsMediaDecoderTestCases android.media.decoder.cts.VideoDecoderPerfTest Flag: EXEMPT bugfix Change-Id: I96f7172e794d6c18e47705924fbdaa1d20302777 --- media_codecs_performance_c2.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/media_codecs_performance_c2.xml b/media_codecs_performance_c2.xml index 5bf32ce8..36aa79d6 100644 --- a/media_codecs_performance_c2.xml +++ b/media_codecs_performance_c2.xml @@ -37,8 +37,8 @@ - - + + @@ -51,8 +51,8 @@ - - + + From 1c3de8409a85ed35fc7ad253022b37f97cf27e35 Mon Sep 17 00:00:00 2001 From: Qais Yousef Date: Tue, 4 Feb 2025 12:44:28 +0000 Subject: [PATCH 33/34] init.zuma.rc: Keep down_rate_limit_us set high on late-init It helps with boot time and will be reset by powerhint.json as soon as we are fully booted. Bug: 393704445 Flag: EXEMPT not supported for init.rc files Signed-off-by: Qais Yousef Change-Id: Ib121ef70f4890139c9964ebb41e6a5d8bd4e91c8 Signed-off-by: Qais Yousef --- conf/init.zuma.rc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index 8221d829..c8c5cbe6 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -283,6 +283,11 @@ on late-fs # Mount RW partitions which need run fsck mount_all --late +on late-init + write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000 + write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000 + write /sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us 20000 + on post-fs-data # Modem temperature driver chown radio system /sys/devices/platform/cp-tm1/cp_temp From b76a560925968eb70dd82ee10788528ce5252b57 Mon Sep 17 00:00:00 2001 From: Masha Chizhova Date: Mon, 3 Feb 2025 11:02:48 +0000 Subject: [PATCH 34/34] Use 2025-03-01 deqp level for GLES Bug: 392805030 Flag: EXEMPT version updates Test: running v2/angle-for-android/angle_deqp_git_main_presubmit_shard_00 - shard_07 https://android-build.corp.google.com/builds/abtd/run/L08100030009328742 https://android-build.corp.google.com/builds/abtd/run/L60400030009311847 Change-Id: I039019c73e24ca94c80ccfc0b511488fa3ca295e --- device.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device.mk b/device.mk index ec9ee6a7..edd37bef 100644 --- a/device.mk +++ b/device.mk @@ -327,7 +327,7 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \ frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \ frameworks/native/data/etc/android.software.vulkan.deqp.level-2025-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \ - frameworks/native/data/etc/android.software.opengles.deqp.level-2024-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml + frameworks/native/data/etc/android.software.opengles.deqp.level-2025-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml #endif