From 9cf36fcccb54b6063e79c4b1dbd3582b3eebcb19 Mon Sep 17 00:00:00 2001 From: George Lee Date: Tue, 18 May 2021 09:04:11 -0700 Subject: [PATCH] bcl: Updated BCL metrics per sysfs change. Update BCL triggered stats reporting. Bug: 180620276 Test: adb bugreport dumpstate_board.txt shows: ------ Mitigation Stats (/vendor/bin/sh -c echo "Source\t\tCount\tSOC\tTime\tVoltage"; for f in `ls /sys/devices/virtual/pmic/mitigation/last_triggered_count/*` ; do count=`cat $f`; a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/last_triggered_count\//}; b=${f/last_triggered_count/last_triggered_capacity}; c=${f/last_triggered_count/last_triggered_timestamp/}; d=${f/last_triggered_count/last_triggered_voltage/}; cnt=`cat $f`; cap=`cat ${b/count/cap}`; ti=`cat ${c/count/time}`; volt=`cat ${d/count/volt}`; echo "${a/_count/} \t$cnt\t$cap\t$ti\t$volt" ; done) ------ Source Count SOC Time Voltage batoilo 0 0 0 0 ocp_cpu1 0 0 0 0 ocp_cpu2 0 0 0 0 ocp_gpu 0 0 0 0 ocp_tpu 0 0 0 0 smpl_warn 0 0 0 0 soft_ocp_cpu1 0 0 0 0 soft_ocp_cpu2 0 0 0 0 soft_ocp_gpu 0 0 0 0 soft_ocp_tpu 0 0 0 0 vdroop1 0 0 0 0 vdroop2 0 0 0 0 ------ Clock Divider Ratio (/vendor/bin/sh -c echo "Source\t\tRatio"; for f in `ls /sys/devices/virtual/pmic/mitigation/clock_ratio/*` ; do ratio=`cat $f`; a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/clock_ratio\//}; echo "${a/_ratio/} \t$ratio" ; done) ------ Source Ratio cpu0_clk 0xf041c3 cpu1_heavy_clk 0xf041c3 cpu1_light_clk 0xf041c5 cpu2_heavy_clk 0xf041c3 cpu2_light_clk 0xf041c5 gpu_heavy_clk off gpu_light_clk off tpu_heavy_clk off tpu_light_clk off ------ Clock Stats (/vendor/bin/sh -c echo "Source\t\tStats"; for f in `ls /sys/devices/virtual/pmic/mitigation/clock_stats/*` ; do stats=`cat $f`; a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/clock_stats\//}; echo "${a/_stats/} \t$stats" ; done) ------ Source Stats cpu0_clk 0x101 cpu1_clk 0x101 cpu2_clk 0x101 gpu_clk off tpu_clk off ------ Triggered Level (/vendor/bin/sh -c echo "Source\t\tLevel"; for f in `ls /sys/devices/virtual/pmic/mitigation/triggered_lvl/*` ; do lvl=`cat $f`; a=${f/\/sys\/devices\/virtual\/pmic\/mitigation\/triggered_lvl\//}; echo "${a/_lvl/} \t$lvl" ; done) ------ Source Level ocp_cpu1 7000mA ocp_cpu2 12000mA ocp_gpu 12000mA ocp_tpu 10500mA smpl 2900mV soft_ocp_cpu1 7000mA soft_ocp_cpu2 12000mA soft_ocp_gpu 12000mA soft_ocp_tpu 10500mA Signed-off-by: George Lee Change-Id: I4ea25ebc86eb772c69e8047b2d5466ca52ec2d2c --- dumpstate/DumpstateDevice.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp index 384f7e08..b8ec0ff3 100644 --- a/dumpstate/DumpstateDevice.cpp +++ b/dumpstate/DumpstateDevice.cpp @@ -401,8 +401,34 @@ void DumpstateDevice::dumpPowerSection(int fd) { DumpFileToFd(fd, "RTX", "/dev/logbuffer_rtx"); RunCommandToFd(fd, "gvotables", {"/vendor/bin/sh", "-c", "cat /sys/kernel/debug/gvotables/*/status"}); - DumpFileToFd(fd, "BCL", "/sys/devices/virtual/pmic/mitigation/triggered_stats"); - DumpFileToFd(fd, "IF PMIC", "/sys/devices/virtual/pmic/max77759-mitigation/triggered_stats"); + RunCommandToFd(fd, "Mitigation Stats", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tCount\\tSOC\\tTime\\tVoltage\"; " + "for f in `ls /sys/devices/virtual/pmic/mitigation/last_triggered_count/*` ; " + "do count=`cat $f`; " + "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/last_triggered_count\\//}; " + "b=${f/last_triggered_count/last_triggered_capacity}; " + "c=${f/last_triggered_count/last_triggered_timestamp/}; " + "d=${f/last_triggered_count/last_triggered_voltage/}; " + "cnt=`cat $f`; " + "cap=`cat ${b/count/cap}`; " + "ti=`cat ${c/count/time}`; " + "volt=`cat ${d/count/volt}`; " + "echo \"${a/_count/} " + "\\t$cnt\\t$cap\\t$ti\\t$volt\" ; done"}); + RunCommandToFd(fd, "Clock Divider Ratio", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tRatio\"; " + "for f in `ls /sys/devices/virtual/pmic/mitigation/clock_ratio/*` ; " + "do ratio=`cat $f`; " + "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/clock_ratio\\//}; " + "echo \"${a/_ratio/} \\t$ratio\" ; done"}); + RunCommandToFd(fd, "Clock Stats", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tStats\"; " + "for f in `ls /sys/devices/virtual/pmic/mitigation/clock_stats/*` ; " + "do stats=`cat $f`; " + "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/clock_stats\\//}; " + "echo \"${a/_stats/} \\t$stats\" ; done"}); + RunCommandToFd(fd, "Triggered Level", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tLevel\"; " + "for f in `ls /sys/devices/virtual/pmic/mitigation/triggered_lvl/*` ; " + "do lvl=`cat $f`; " + "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/triggered_lvl\\//}; " + "echo \"${a/_lvl/} \\t$lvl\" ; done"}); }