power: Add a debug property for switching powerhint.json path
Add a bool property `vendor.mediatek.powerhal.config.debug`.
Power HAL would use `/data/vendor/etc/powerhint.json` when vendor.mediatek.powerhal.config.debug = true.
Bug: 218872105
Bug: 206061061
Test: adb wait-for-device root; adb shell mkdir -p /data/vendor/etc/;
adb push powerhint_mod.json /data/vendor/etc/powerhint.json
Test: adb shell setprop vendor.powerhal.config.debug true && \
adb shell getprop vendor.powerhal.config.debug && \
adb shell stop vendor.power-hal-aidl && \
adb shell start vendor.power-hal-aidl && adb shell stop && adb shell start
Test: adb pull /data/local.prop ; vim local.prop
+ vendor.powerhal.config.debug=true
Test: adb wait-for-device root && adb shell perfetto -o \
/data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq \
idle am wm gfx view power hal && \
adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace trace_profile_debug.pftrace
Change-Id: Ibaf5df280b989a8268efce1e3ab9a3f1e5510800
diff --git a/aidl/power-libperfmgr/service.cpp b/aidl/power-libperfmgr/service.cpp
index 871ceac..a3dd31c 100644
--- a/aidl/power-libperfmgr/service.cpp
+++ b/aidl/power-libperfmgr/service.cpp
@@ -34,6 +34,7 @@
using ::android::perfmgr::HintManager;
constexpr std::string_view kPowerHalInitProp("vendor.mediatek.powerhal.init");
+constexpr std::string_view kConfigDebugPathProperty("vendor.mediatek.powerhal.config.debug");
constexpr std::string_view kConfigProperty("vendor.mediatek.powerhal.config");
constexpr std::string_view kConfigDefaultFileName("powerhint.json");
@@ -68,14 +69,23 @@
CHECK(status == STATUS_OK);
LOG(INFO) << "Xiaomi Power HAL AIDL Service with Extension is started.";
- if (::android::base::GetIntProperty("vendor.mediatek.powerhal.adpf.rate", -1) != -1) {
- PowerHintMonitor::getInstance()->start();
- PowerSessionManager::getInstance()->setHintManager(hm);
- }
-
std::thread initThread([&]() {
::android::base::WaitForProperty(kPowerHalInitProp.data(), "1");
hm->Start();
+
+ // use debug config for ADPF tuning.
+ if (android::base::GetBoolProperty(kConfigDebugPathProperty.data(), false)) {
+ const std::string debug_config_path =
+ "/data/vendor/etc/" + android::base::GetProperty(kConfigProperty.data(),
+ kConfigDefaultFileName.data());
+ hm = HintManager::GetFromJSON(debug_config_path, false);
+ LOG(WARNING) << "Xiaomi Power HAL AIDL Service with Extension is reloading with config: "
+ << debug_config_path;
+ }
+ if (::android::base::GetIntProperty("vendor.mediatek.powerhal.adpf.rate", -1) != -1) {
+ PowerHintMonitor::getInstance()->start();
+ PowerSessionManager::getInstance()->setHintManager(hm);
+ }
});
initThread.detach();