diff --git a/BoardConfig-16k-common.mk b/BoardConfig-16k-common.mk index 6498e054..d636e9ad 100644 --- a/BoardConfig-16k-common.mk +++ b/BoardConfig-16k-common.mk @@ -33,6 +33,7 @@ BOARD_PREBUILT_DTBOIMAGE_16KB := $(TARGET_KERNEL_DIR_16K)/dtbo.img # Zuma targets use exynos-bcm_dbg.ko module instead of bcm_dbg.ko. BOARD_KERNEL_MODULES_16K := $(filter-out %/bcm_dbg.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))) BOARD_16K_OTA_USE_INCREMENTAL := true diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk index 3d550c02..0db5438e 100644 --- a/BoardConfig-common.mk +++ b/BoardConfig-common.mk @@ -34,7 +34,7 @@ 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 +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 BOARD_KERNEL_CMDLINE += sysctl.kernel.sched_pelt_multiplier=4 diff --git a/CopyEfsTest/Android.bp b/CopyEfsTest/Android.bp index 52c5de4e..9b7a4592 100644 --- a/CopyEfsTest/Android.bp +++ b/CopyEfsTest/Android.bp @@ -30,6 +30,9 @@ java_test_host { "compatibility-host-util", "compatibility-tradefed", ], - test_suites: ["device-tests"], + test_suites: [ + "device-tests", + "device-pixel-tests" + ], test_config: "AndroidTest.xml", } diff --git a/CopyEfsTest/TEST_MAPPING b/CopyEfsTest/TEST_MAPPING deleted file mode 100644 index 37a720b5..00000000 --- a/CopyEfsTest/TEST_MAPPING +++ /dev/null @@ -1,8 +0,0 @@ -{ - "postsubmit": [ - { - "name": "CopyEfsTest" - } - ] -} - diff --git a/CopyEfsTest/src/com/android/test/CopyEfsTest.java b/CopyEfsTest/src/com/android/test/CopyEfsTest.java index b00ef2fc..cd22457b 100644 --- a/CopyEfsTest/src/com/android/test/CopyEfsTest.java +++ b/CopyEfsTest/src/com/android/test/CopyEfsTest.java @@ -19,12 +19,16 @@ 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; @@ -36,62 +40,91 @@ 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")); - getDevice().enableAdbRoot(); - - // This test can be run on OEM unlocked device only as unlocking bootloader requires - // manual intervention. - String result = getDevice().getProperty("ro.boot.flash.locked"); - assumeTrue("0".equals(result)); - final String dataFstype = getFsTypeFor("/data"); - assertTrue(!dataFstype.isEmpty()); - if (!dataFstype.equals("ext4")) { - getDevice().executeShellCommand("cmd recovery wipe ext4"); - RunUtil.getDefault().sleep(10000); - // Wait for 2 mins device to be online againg - getDevice().waitForDeviceOnline(120000); - getDevice().enableAdbRoot(); - } - assertEquals("ext4", getFsTypeFor("/data")); - String dataBlockDev = getBlockDevFor("/data"); - assertEquals(dataBlockDev, getBlockDevFor("/mnt/vendor/efs")); - assertEquals(dataBlockDev, getBlockDevFor("/mnt/vendor/efs_backup")); - assertEquals(dataBlockDev, getBlockDevFor("/mnt/vendor/modem_userdata")); + testDumpF2FS("efs"); + testDumpF2FS("efs_backup"); + testDumpF2FS("modem_userdata"); + testDumpF2FS("persist"); } - private String[] getMountInfo(String mountPoint) throws Exception { - String result = getDevice().executeShellCommand("cat /proc/mounts"); - BufferedReader br = new BufferedReader(new StringReader(result)); - String line; - while ((line = br.readLine()) != null) { - final String[] fields = line.split(" "); - final String device = fields[0]; - final String partition = fields[1]; - final String fsType = fields[2]; - if (partition.equals(mountPoint)) { - return fields; + 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 null; + return output.toString(); } - private String getFsTypeFor(String mountPoint) throws Exception { - String[] result = getMountInfo(mountPoint); - if (result == null) { - return ""; - } - return result[2]; + + 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"); } - private String getBlockDevFor(String mountPoint) throws Exception { - String[] result = getMountInfo(mountPoint); - if (result == null) { - return ""; - } - return result[0]; + + @After + public void tearDown() throws Exception { + getDevice().executeShellCommand("umount /data/local/tmp/efs_test/mnt"); + getDevice().executeShellCommand("rm -rf /data/local/tmp/efs_test"); } } diff --git a/conf/f2fs/fstab.zuma.f2fs b/conf/f2fs/fstab.zuma.f2fs index 10b82262..47682dee 100644 --- a/conf/f2fs/fstab.zuma.f2fs +++ b/conf/f2fs/fstab.zuma.f2fs @@ -5,6 +5,6 @@ # # /dev/block/platform/13200000.ufs/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,compress_extension=apk,compress_extension=so,compress_extension=vdex,compress_extension=odex,@inlinecrypt@,atgc,checkpoint_merge,compress_cache latemount,wait,check,quota,formattable,sysfs_path=/dev/sys/block/bootdevice,checkpoint=fs,reservedsize=128M,fscompress,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption,device=zoned:/dev/block/by-name/zoned_device -/dev/block/platform/13200000.ufs/by-name/userdata /data ext4 noatime,nosuid,nodev,@inlinecrypt@ latemount,wait,check,quota,reservedsize=128M,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption +/dev/block/platform/13200000.ufs/by-name/userdata /data ext4 noatime,nosuid,nodev,@inlinecrypt@ latemount,wait,check,quota,formattable,reservedsize=128M,readahead_size_kb=128,@fileencryption@,@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption /dev/block/platform/13200000.ufs/by-name/metadata /metadata f2fs noatime,nosuid,nodev,sync wait,check,formattable,first_stage_mount /dev/block/platform/13200000.ufs/by-name/metadata /metadata ext4 noatime,nosuid,nodev,data=journal,commit=1 wait,check,first_stage_mount,metadata_csum diff --git a/conf/init.zuma.rc b/conf/init.zuma.rc index f0cbf01c..54770579 100644 --- a/conf/init.zuma.rc +++ b/conf/init.zuma.rc @@ -1,3 +1,4 @@ +import /vendor/etc/init/hw/init.zuma.storage.rc import /vendor/etc/init/hw/init.zuma.usb.rc import android.hardware.drm@1.2-service.widevine.rc import init.exynos.sensorhub.rc @@ -15,10 +16,6 @@ on init # Disable util-awareness for mids and bigs write /proc/vendor_sched/teo_util_threshold "2 1024 1024" - # Boot time fs tuning - write /sys/block/sda/queue/scheduler bfq - write /sys/block/sda/queue/iosched/slice_idle 0 - 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 @@ -47,6 +44,8 @@ on init 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 @@ -98,6 +97,8 @@ on init 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 @@ -138,16 +139,6 @@ on init write /sys/class/net/rmnet6/queues/rx-0/rps_cpus fe write /sys/class/net/rmnet7/queues/rx-0/rps_cpus fe - # Create UDS structure for base VR services. - mkdir /dev/socket/pdx 0775 system system - mkdir /dev/socket/pdx/system 0775 system system - mkdir /dev/socket/pdx/system/buffer_hub 0775 system system - mkdir /dev/socket/pdx/system/performance 0775 system system - mkdir /dev/socket/pdx/system/vr 0775 system system - mkdir /dev/socket/pdx/system/vr/display 0775 system system - mkdir /dev/socket/pdx/system/vr/pose 0775 system system - mkdir /dev/socket/pdx/system/vr/sensors 0775 system system - # Boot time 183626384 write /proc/vendor_sched/groups/ta/uclamp_min 221 write /proc/vendor_sched/groups/ta/prefer_idle 1 @@ -257,6 +248,7 @@ on init chown system system /sys/class/power_supply/wireless/device/version chown system system /sys/class/power_supply/wireless/device/features chown system system /sys/class/power_supply/wireless/device/authtype + chown system system /sys/class/power_supply/wireless/device/authstart # Adaptive charge chown system system /sys/class/power_supply/battery/charge_deadline @@ -360,6 +352,9 @@ on init chown root system /sys/devices/platform/16490000.gsa-ns/log_main chown root system /sys/devices/platform/16490000.gsa-ns/log_intermediate + # Enable CPU Idle histograms + write /sys/kernel/metrics/cpuidle_histogram/enable 1 + on init && property:ro.boot.hardware.cpu.pagesize=4096 write /sys/block/zram0/comp_algorithm lz77eh @@ -400,7 +395,7 @@ on post-fs-data mkdir /data/vendor/radio/logs/always-on 777 system radio # Modem extended log folder - mkdir /data/vendor/radio/extended_logs 0770 radio system + mkdir /data/vendor/radio/extended_logs 0771 radio system # Log Mask Library Mask storage paths mkdir /data/vendor/radio/log_masks 777 system system @@ -734,6 +729,9 @@ on property:sys.boot_completed=1 # Set kswapd affinity write /sys/kernel/vendor_mm/kswapd_cpu_affinity ff + # Set kcompactd affinity + write /sys/kernel/vendor_mm/kcompactd_cpu_affinity ff + # Adjust watermark level write /proc/sys/vm/watermark_scale_factor 200 @@ -745,9 +743,9 @@ on property:sys.boot_completed=1 write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1 # Restore prefer idle - write /proc/vendor_sched/groups/ta/preferred_idle_mask_low 0x1ff - write /proc/vendor_sched/groups/ta/preferred_idle_mask_mid 0x1ff - write /proc/vendor_sched/groups/ta/preferred_idle_mask_high 0x1ff + write /proc/vendor_sched/groups/ta/preferred_idle_mask_low 0xff + write /proc/vendor_sched/groups/ta/preferred_idle_mask_mid 0xff + write /proc/vendor_sched/groups/ta/preferred_idle_mask_high 0xff write /proc/vendor_sched/groups/fg/preferred_idle_mask_low 0x1ff write /proc/vendor_sched/groups/fg/preferred_idle_mask_mid 0x1ff write /proc/vendor_sched/groups/fg/preferred_idle_mask_high 0x1ff @@ -764,6 +762,12 @@ 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 @@ -854,6 +858,9 @@ on property:sys.boot_completed=1 # Enable SICD write /sys/devices/system/cpu/cpupm/cpupm/sicd 1 + # To be removed after InputDispatche and InputReader become ADPF + write /proc/vendor_sched/prefer_idle_task_name "InputDispatcher,InputReader" + on property:sys.boot_completed=1 && property:persist.sys.device_provisioned=1 write /sys/class/power_supply/battery/first_usage_date 0 @@ -974,38 +981,14 @@ on property:vendor.thermal.link_ready=1 write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_cpu2_lvl 12000 write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_gpu_lvl 9000 write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_tpu_lvl 8500 + write /sys/devices/virtual/pmic/mitigation/triggered_lvl/ocp_cpu2_lvl 12000 + write /sys/devices/virtual/pmic/mitigation/triggered_lvl/ocp_gpu_lvl 12000 + write /sys/devices/virtual/pmic/mitigation/triggered_lvl/ocp_tpu_lvl 12000 write /sys/devices/virtual/pmic/mitigation/clock_div/tpu_clk_div 0x1 write /sys/devices/virtual/pmic/mitigation/clock_div/gpu_clk_div 0x1 write /sys/devices/virtual/pmic/mitigation/clock_div/cpu2_clk_div 0x1 write /sys/devices/platform/cpupm/cpupm/cpd_cl1 1 #Enable power down write /sys/devices/platform/cpupm/cpupm/cpd_cl2 1 #Enable power down - chown system system /dev/thermal/tz-by-name/soc/mode - chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/vdroop1/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/vdroop1/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/smpl_gm/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/smpl_gm/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_cpu1/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_cpu1/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_cpu2/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_cpu2/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_tpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_tpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/ocp_gpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/ocp_gpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu1/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu1/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu2/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_cpu2/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_tpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_tpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soft_ocp_gpu/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soft_ocp_gpu/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/soc/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/soc/trip_point_0_hyst - chown system system /dev/thermal/tz-by-name/batoilo/trip_point_0_temp - chown system system /dev/thermal/tz-by-name/batoilo/trip_point_0_hyst # Thermal chown system system /dev/thermal/tz-by-name/soc_therm/trip_point_0_temp chown system system /dev/thermal/tz-by-name/soc_therm/trip_point_0_hyst diff --git a/conf/init.zuma.usb.rc b/conf/init.zuma.usb.rc index 88e187be..d89601bb 100644 --- a/conf/init.zuma.usb.rc +++ b/conf/init.zuma.usb.rc @@ -425,7 +425,7 @@ on property:persist.vendor.usb.displayport.enabled=0 write /sys/class/typec/port0/port0.0/mode1/active "no" on property:persist.sys.hdcp_checking=always - write /sys/module/exynos_hdcp2/parameters/max_ver 2 + write /sys/module/exynos_hdcp2/parameters/max_ver 3 on property:persist.sys.hdcp_checking="drm-only" write /sys/module/exynos_hdcp2/parameters/max_ver 2 diff --git a/copy_efs_files_to_data.sh b/copy_efs_files_to_data.sh index 2ac9e462..9d293aef 100644 --- a/copy_efs_files_to_data.sh +++ b/copy_efs_files_to_data.sh @@ -2,7 +2,7 @@ CHECKPOINT_DIR=/data/vendor/copied -BIN_DIR=/vendor/bin +export BIN_DIR=/vendor/bin $BIN_DIR/mkdir -p $CHECKPOINT_DIR @@ -16,17 +16,17 @@ function copy_files_to_data() if [ ! -e $build_checkpoint ]; then $BIN_DIR/rm -rf $tmpdir $BIN_DIR/mkdir -p $tmpdir - $BIN_DIR/dump.f2fs -rfPo $tmpdir $block_device + $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device if [ $? -ne 0 ]; then - echo "Failed to $BIN_DIR/dump.f2fs -rfPo $tmpdir $block_device" + echo "Failed to $BIN_DIR/dump.f2fs -rfPLo $tmpdir $block_device" return fi - mv $tmpdir $build_checkpoint + $BIN_DIR/mv $tmpdir $build_checkpoint if [ $? -ne 0 ]; then echo "mv $tmpdir $build_checkpoint" return fi - fsync `dirname $build_checkpoint` + $BIN_DIR/fsync `dirname $build_checkpoint` fi echo "Successfully copied $mount_point to $build_checkpoint" } @@ -36,3 +36,5 @@ 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/default-permissions.xml b/default-permissions.xml index 00959c8f..58dd84cb 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -167,5 +167,12 @@ + + + + + + + diff --git a/device.mk b/device.mk index b12f0bc9..8c177185 100644 --- a/device.mk +++ b/device.mk @@ -80,9 +80,9 @@ PRODUCT_SOONG_NAMESPACES += \ device/google/zuma \ device/google/zuma/powerstats \ vendor/google_devices/common/chre/host/hal \ + vendor/google_devices/zuma/proprietary/debugpolicy \ vendor/google/whitechapel/tools \ vendor/google/interfaces \ - vendor/google_devices/common/proprietary/confirmatioui_hal \ vendor/google_nos/host/android \ vendor/google_nos/test/system-test-harness \ vendor/google/camera @@ -220,12 +220,13 @@ PRODUCT_PROPERTY_OVERRIDES += \ endif PRODUCT_PROPERTY_OVERRIDES += \ - persist.sys.hdcp_checking=always + persist.sys.hdcp_checking=drm-only USE_LASSEN_OEMHOOK := true # The "power-anomaly-sitril" is added into PRODUCT_SOONG_NAMESPACES when # $(USE_LASSEN_OEMHOOK) is true and $(BOARD_WITHOUT_RADIO) is not true. ifneq ($(BOARD_WITHOUT_RADIO),true) + $(call soong_config_set,sitril,use_lassen_oemhook_with_radio,true) PRODUCT_SOONG_NAMESPACES += vendor/google/tools/power-anomaly-sitril endif @@ -236,6 +237,8 @@ $(call soong_config_set, vendor_ril_google_feature, use_lassen_modem, true) ifeq ($(USES_GOOGLE_DIALER_CARRIER_SETTINGS),true) USE_GOOGLE_DIALER := true USE_GOOGLE_CARRIER_SETTINGS := true +# GoogleDialer in PDK build with "USES_GOOGLE_DIALER_CARRIER_SETTINGS=true" +PRODUCT_SOONG_NAMESPACES += vendor/google_devices/zuma/proprietary/GoogleDialer endif ifeq ($(USES_GOOGLE_PREBUILT_MODEM_SVC),true) @@ -254,8 +257,15 @@ USE_SWIFTSHADER := false # HWUI TARGET_USES_VULKAN = true +# "vendor/arm" doesn't exist in PDK build +ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) +PRODUCT_SOONG_NAMESPACES += \ + vendor/google_devices/zuma/prebuilts/firmware/gpu \ + vendor/google_devices/zuma/prebuilts/gpu +else PRODUCT_SOONG_NAMESPACES += \ vendor/arm/mali/valhall +endif $(call soong_config_set,pixel_mali,soc,$(TARGET_BOARD_PLATFORM)) $(call soong_config_set,arm_gralloc,soc,$(TARGET_BOARD_PLATFORM)) @@ -265,9 +275,18 @@ PRODUCT_PACKAGES += \ csffw_image_prebuilt__firmware_prebuilt_ttux_mali_csffw.bin \ libGLES_mali \ vulkan.mali \ - libOpenCL \ libgpudataproducer +# Install the OpenCL ICD Loader +PRODUCT_SOONG_NAMESPACES += external/OpenCL-ICD-Loader +PRODUCT_PACKAGES += \ + libOpenCL \ + mali_icd__customer_pixel_opencl-icd_ARM.icd +ifeq ($(DEVICE_IS_64BIT_ONLY),false) +PRODUCT_PACKAGES += \ + mali_icd__customer_pixel_opencl-icd_ARM32.icd +endif + ifeq ($(USE_SWIFTSHADER),true) PRODUCT_PACKAGES += \ libEGL_angle \ @@ -285,11 +304,10 @@ PRODUCT_VENDOR_PROPERTIES += \ endif # Mali Configuration Properties -# b/221255664 prevents setting PROTECTED_MAX_CORE_COUNT=2 PRODUCT_VENDOR_PROPERTIES += \ vendor.mali.platform.config=/vendor/etc/mali/platform.config \ vendor.mali.debug.config=/vendor/etc/mali/debug.config \ - vendor.mali.base_protected_max_core_count=1 \ + vendor.mali.base_protected_max_core_count=4 \ vendor.mali.base_protected_tls_max=67108864 \ vendor.mali.platform_agt_frequency_khz=24576 @@ -322,6 +340,7 @@ PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1 DEVICE_MANIFEST_FILE := \ device/google/zuma/manifest.xml +BOARD_USE_CODEC2_AIDL := V1 ifneq (,$(filter aosp_%,$(TARGET_PRODUCT))) DEVICE_MANIFEST_FILE += \ device/google/zuma/manifest_media_aosp.xml @@ -381,6 +400,14 @@ PRODUCT_COPY_FILES += \ device/google/zuma/conf/init.freq.userdebug.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.freq.userdebug.rc endif +ifneq (,$(filter 5.%, $(TARGET_LINUX_KERNEL_VERSION))) +PRODUCT_COPY_FILES += \ + device/google/zuma/storage/5.15/init.zuma.storage.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.zuma.storage.rc +else +PRODUCT_COPY_FILES += \ + device/google/zuma/storage/6.1/init.zuma.storage.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.zuma.storage.rc +endif + # Recovery files PRODUCT_COPY_FILES += \ device/google/zuma/conf/init.recovery.device.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.zuma.rc @@ -437,8 +464,6 @@ PRODUCT_COPY_FILES += \ ## Enable the CHRE Daemon CHRE_USF_DAEMON_ENABLED := false CHRE_DEDICATED_TRANSPORT_CHANNEL_ENABLED := true -PRODUCT_PACKAGES += \ - preloaded_nanoapps.json # Filesystem management tools PRODUCT_PACKAGES += \ @@ -557,6 +582,9 @@ PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2 PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2 PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000 +# Set util_clamp_min for s/w spatializer +PRODUCT_PROPERTY_OVERRIDES += audio.spatializer.effect.util_clamp_min=300 + # Calliope firmware overwrite #PRODUCT_COPY_FILES += \ device/google/zuma/firmware/calliope_dram.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/calliope_dram.bin \ @@ -810,12 +838,19 @@ PRODUCT_COPY_FILES += \ device/google/zuma/media_codecs_performance_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_c2.xml \ PRODUCT_PROPERTY_OVERRIDES += \ - debug.stagefright.c2-poolmask=458752 \ debug.c2.use_dmabufheaps=1 \ media.c2.dmabuf.padding=512 \ debug.stagefright.ccodec_delayed_params=1 \ ro.vendor.gpu.dataspace=1 +ifneq ($(BOARD_USE_CODEC2_AIDL), ) +PRODUCT_PROPERTY_OVERRIDES += \ + debug.stagefright.c2-poolmask=1507328 +else +PRODUCT_PROPERTY_OVERRIDES += \ + debug.stagefright.c2-poolmask=458752 +endif + # Create input surface on the framework side PRODUCT_PROPERTY_OVERRIDES += \ debug.stagefright.c2inputsurface=-1 \ @@ -861,8 +896,6 @@ PRODUCT_PACKAGES_DEBUG += \ trusty_stats_test \ trusty-coverage-controller \ -include device/google/gs101/confirmationui/confirmationui.mk - # Trusty Metrics Daemon PRODUCT_SOONG_NAMESPACES += \ vendor/google/trusty/common diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml index 895ce99b..ead4cd93 100644 --- a/device_framework_matrix_product.xml +++ b/device_framework_matrix_product.xml @@ -114,7 +114,7 @@ com.google.hardware.pixel.display - 12 + 13 IDisplay default diff --git a/dumpstate/Android.bp b/dumpstate/Android.bp index 8960ac43..71cc1d2c 100644 --- a/dumpstate/Android.bp +++ b/dumpstate/Android.bp @@ -24,6 +24,7 @@ cc_binary { ], vendor: true, relative_install_path: "dump", + init_rc: ["dump_power.rc"], } sh_binary { diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp index 5af853fc..12039194 100644 --- a/dumpstate/dump_power.cpp +++ b/dumpstate/dump_power.cpp @@ -21,7 +21,9 @@ #include #include #include +#include #include +#include #include #include @@ -198,6 +200,7 @@ void dumpMaxFg() { const char *maxfg [][2] = { {"Power supply property maxfg", "/sys/class/power_supply/maxfg/uevent"}, + {"maxfg registers", "/sys/class/power_supply/maxfg/registers_dump"}, {"m5_state", "/sys/class/power_supply/maxfg/m5_model_state"}, {"maxfg logbuffer", "/dev/logbuffer_maxfg"}, {"maxfg_monitor logbuffer", "/dev/logbuffer_maxfg_monitor"}, @@ -206,6 +209,8 @@ void dumpMaxFg() { const char *maxfgFlip [][2] = { {"Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/uevent"}, {"Power supply property maxfg_flip", "/sys/class/power_supply/maxfg_flip/uevent"}, + {"maxfg_base registers", "/sys/class/power_supply/maxfg_base/registers_dump"}, + {"maxfg_secondary registers", "/sys/class/power_supply/maxfg_secondary/registers_dump"}, {"m5_state", "/sys/class/power_supply/maxfg_base/m5_model_state"}, {"maxfg_base", "/dev/logbuffer_maxfg_base"}, {"maxfg_flip", "/dev/logbuffer_maxfg_flip"}, @@ -260,53 +265,47 @@ void dumpLogBufferTcpm() { } void dumpTcpc() { - int ret; - const char* max77759TcpcHead = "TCPC"; - const char* i2cSubDirMatch = "i2c-"; - const char* directory = "/sys/devices/platform/10d60000.hsi2c/"; - const char* max77759Tcpc [][2] { - {"registers:", "/i2c-max77759tcpc/registers"}, - {"frs:", "/i2c-max77759tcpc/frs"}, - {"auto_discharge:", "/i2c-max77759tcpc/auto_discharge"}, - {"bcl2_enabled:", "/i2c-max77759tcpc/bcl2_enabled"}, - {"cc_toggle_enable:", "/i2c-max77759tcpc/cc_toggle_enable"}, - {"containment_detection:", "/i2c-max77759tcpc/containment_detection"}, - {"containment_detection_status:", "/i2c-max77759tcpc/containment_detection_status"}, + const char* max77759TcpcHead = "TCPC Device Attributes"; + const char* directory = "/sys/class/typec/port0/device"; + const char* max77759Tcpc [] { + "auto_discharge", + "bc12_enabled", + "cc_toggle_enable", + "contaminant_detection", + "contaminant_detection_status", + "frs", + "irq_hpd_count", + "non_compliant_reasons", + "sbu_pullup", + "update_sdp_enum_timeout", + "usb_limit_accessory_current", + "usb_limit_accessory_enable", + "usb_limit_sink_current", + "usb_limit_sink_enable", + "usb_limit_source_enable", }; - std::vector files; std::string content; + std::string tcpcRegistersPath(std::string(directory) + "/registers"); + + dumpFileContent("TCPC Registers", tcpcRegistersPath.c_str()); printTitle(max77759TcpcHead); - ret = getFilesInDir(directory, &files); - if (ret < 0) { - for (auto &tcpcVal : max77759Tcpc) - printf("%s\n", tcpcVal[0]); - return; - } - - for (auto &file : files) { - for (auto &tcpcVal : max77759Tcpc) { - printf("%s ", tcpcVal[0]); - if (std::string::npos == std::string(file).find(i2cSubDirMatch)) { - continue; - } - - std::string fileName = directory + file + "/" + std::string(tcpcVal[1]); - - if (!android::base::ReadFileToString(fileName, &content)) { - continue; - } - - printf("%s\n", content.c_str()); - } + for (auto& tcpcVal : max77759Tcpc) { + std::string filename = std::string(directory) + "/" + std::string(tcpcVal); + printf("%s: ", tcpcVal); + android::base::ReadFileToString(filename, &content); + if (!content.empty() && (content.back() == '\n' || content.back() == '\r')) + content.pop_back(); + printf("%s\n", content.c_str()); } + printf("\n"); } void dumpPdEngine() { const char* pdEngine [][2] { - {"PD Engine", "/dev/logbuffer_usbpd"}, + {"Logbuffer TCPC", "/dev/logbuffer_usbpd"}, {"PPS-google_cpm", "/dev/logbuffer_cpm"}, {"PPS-dc", "/dev/logbuffer_pca9468"}, }; @@ -632,10 +631,27 @@ void dumpGvoteables() { void dumpMitigation() { const char *mitigationList [][2] { + {"LastmealCSV" , "/data/vendor/mitigation/lastmeal.csv"}, {"Lastmeal" , "/data/vendor/mitigation/lastmeal.txt"}, {"Thismeal" , "/data/vendor/mitigation/thismeal.txt"}, }; + /* parsing thismeal.bin */ + int status; + int pid = fork(); + if (pid < 0) { + printf("Fork failed for parsing thismeal.bin.\n"); + exit(EXIT_FAILURE); + } else if (pid == 0) { + execl("/vendor/bin/hw/battery_mitigation", "battery_mitigation", "-d", nullptr); + exit(EXIT_SUCCESS); + } + waitpid(pid, &status, 0); + + if (WIFSIGNALED(status)) { + printf("Failed to parse thismeal.bin.(killed by: %d)\n", WTERMSIG(status)); + } + for (auto &row : mitigationList) { if (!isValidFile(row[1])) printTitle(row[0]); @@ -941,9 +957,21 @@ void dumpIrqDurationCounts() { } } +void dumpCpuIdleHistogramStats() { + const char* cpuIdleHistogramTitle = "CPU Idle Histogram"; + const char* cpuIdleHistogramFile = "/sys/kernel/metrics/cpuidle_histogram/" + "cpuidle_histogram"; + const char* cpuClusterHistogramTitle = "CPU Cluster Histogram"; + const char* cpuClusterHistogramFile = "/sys/kernel/metrics/" + "cpuidle_histogram/cpucluster_histogram"; + dumpFileContent(cpuIdleHistogramTitle, cpuIdleHistogramFile); + dumpFileContent(cpuClusterHistogramTitle, cpuClusterHistogramFile); +} + int main() { dumpPowerStatsTimes(); dumpAcpmStats(); + dumpCpuIdleHistogramStats(); dumpPowerSupplyStats(); dumpMaxFg(); dumpPowerSupplyDock(); diff --git a/dumpstate/dump_power.rc b/dumpstate/dump_power.rc new file mode 100644 index 00000000..ec2aead9 --- /dev/null +++ b/dumpstate/dump_power.rc @@ -0,0 +1,3 @@ +on init + # for parsing thismeal.bin + chown system system /vendor/bin/hw/battery_mitigation diff --git a/manifest.xml b/manifest.xml index 69a1bcdd..5728c90b 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,13 +1,4 @@ - - android.hardware.graphics.mapper - passthrough - 4.0 - - IMapper - default - - android.hardware.boot IBootControl/default diff --git a/media_codecs_bo_c2.xml b/media_codecs_bo_c2.xml index a6759b66..7786f5fd 100644 --- a/media_codecs_bo_c2.xml +++ b/media_codecs_bo_c2.xml @@ -65,6 +65,7 @@ + diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml index a3f0420f..5a009fe3 100644 --- a/overlay/frameworks/base/core/res/res/values/config.xml +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -318,4 +318,14 @@ 100% + + + 20000 + + + 33% + + + true diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp index eaac5207..e5cd5814 100644 --- a/pixelstats/service.cpp +++ b/pixelstats/service.cpp @@ -123,6 +123,23 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = { "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/sink_count_invalid_failures", "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/link_unstable_failures", }, + .DisplayPortDSCStatsPaths = { + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/fec_dsc_supported", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/fec_dsc_not_supported", + }, + .DisplayPortMaxResolutionStatsPaths = { + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_other", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_1366_768", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_1440_900", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_1600_900", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_1920_1080", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_2560_1080", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_2560_1440", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_3440_1440", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_3840_2160", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_5120_2880", + "/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/max_res_7680_4320", + }, .HDCPStatsPaths = { "/sys/devices/platform/hdcp/hdcp2_success_count", "/sys/devices/platform/hdcp/hdcp2_fallback_count", diff --git a/storage/5.15/init.zuma.storage.rc b/storage/5.15/init.zuma.storage.rc new file mode 100644 index 00000000..7df260de --- /dev/null +++ b/storage/5.15/init.zuma.storage.rc @@ -0,0 +1,3 @@ +on init + write /sys/block/sda/queue/scheduler bfq + write /sys/block/sda/queue/iosched/slice_idle 0 \ No newline at end of file diff --git a/storage/6.1/init.zuma.storage.rc b/storage/6.1/init.zuma.storage.rc new file mode 100644 index 00000000..3d88bb69 --- /dev/null +++ b/storage/6.1/init.zuma.storage.rc @@ -0,0 +1,2 @@ +on init + write /sys/block/sda/queue/scheduler mq-deadline \ No newline at end of file diff --git a/task_profiles.json b/task_profiles.json index fda6c3ea..81e5e41f 100644 --- a/task_profiles.json +++ b/task_profiles.json @@ -288,6 +288,10 @@ { "Name": "OtaProfiles", "Profiles": [ "OtaPerformance", "ProcessCapacityNormal", "LowIoPriority", "TimerSlackHigh" ] + }, + { + "Name": "InputPolicy", + "Profiles": [ "ResetUclampGrp" ] } ] }