From ad76e7c24ef71975fb73064450caffef2b5eb0ab Mon Sep 17 00:00:00 2001 From: Adam Shih Date: Mon, 6 Mar 2023 17:04:00 +0800 Subject: [PATCH 1/5] move modem operation to dump_modemlog Bug: 240530709 Test: adb bugreport Change-Id: Ib1076164cdd766433d0e78068396040a6e34c774 --- modem/Android.bp | 2 ++ modem/dump_modemlog.cpp | 40 ++++++++++++++++++++++++++++++++- modem/sepolicy/dump_modemlog.te | 3 +++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/modem/Android.bp b/modem/Android.bp index 2bf023c..84bdd61 100644 --- a/modem/Android.bp +++ b/modem/Android.bp @@ -18,7 +18,9 @@ cc_binary { "-Werror", ], shared_libs: [ + "libbase", "libdump", + "liblog", ], vendor: true, relative_install_path: "dump", diff --git a/modem/dump_modemlog.cpp b/modem/dump_modemlog.cpp index 216cffe..5aaa554 100644 --- a/modem/dump_modemlog.cpp +++ b/modem/dump_modemlog.cpp @@ -14,9 +14,47 @@ * limitations under the License. */ #include +#include +#include + +#define MODEM_LOGGING_PERSIST_PROPERTY "persist.vendor.sys.modem.logging.enable" +#define MODEM_LOGGING_PROPERTY "vendor.sys.modem.logging.enable" +#define MODEM_LOGGING_STATUS_PROPERTY "vendor.sys.modem.logging.status" +#define MODEM_LOGGING_NUMBER_BUGREPORT_PROPERTY "persist.vendor.sys.modem.logging.br_num" +#define MODEM_LOGGING_PATH_PROPERTY "vendor.sys.modem.logging.log_path" +#define MODEM_LOG_PREFIX "sbuff_" int main() { - dumpLogs("/data/vendor/radio/extended_logs", "/data/vendor/radio/logs/always-on/all_logs", 20, "extended_log_"); + bool modemLogEnabled = ::android::base::GetBoolProperty(MODEM_LOGGING_PERSIST_PROPERTY, false); + if (modemLogEnabled && ::android::base::GetProperty(MODEM_LOGGING_PATH_PROPERTY, "") == MODEM_LOG_DIRECTORY) { + bool modemLogStarted = ::android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false); + int maxFileNum = ::android::base::GetIntProperty(MODEM_LOGGING_NUMBER_BUGREPORT_PROPERTY, 100); + + if (modemLogStarted) { + ::android::base::SetProperty(MODEM_LOGGING_PROPERTY, "false"); + ALOGD("Stopping modem logging...\n"); + } else { + ALOGD("modem logging is not running\n"); + } + + for (int i = 0; i < 15; i++) { + if (!::android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false)) { + ALOGD("modem logging stopped\n"); + sleep(1); + break; + } + sleep(1); + } + + dumpLogs(MODEM_LOG_DIRECTORY, BUGREPORT_PACKING_DIR, maxFileNum, MODEM_LOG_PREFIX); + + if (modemLogStarted) { + ALOGD("Restarting modem logging...\n"); + ::android::base::SetProperty(MODEM_LOGGING_PROPERTY, "true"); + } + } + + dumpLogs("/data/vendor/radio/extended_logs", BUGREPORT_PACKING_DIR, 20, "extended_log_"); copyFile("/mnt/vendor/efs/nv_normal.bin", "/data/vendor/radio/logs/always-on/all_logs/nv_normal.bin"); copyFile("/mnt/vendor/efs/nv_protected.bin", "/data/vendor/radio/logs/always-on/all_logs/nv_protected.bin"); return 0; diff --git a/modem/sepolicy/dump_modemlog.te b/modem/sepolicy/dump_modemlog.te index c49bd5e..0afcedf 100644 --- a/modem/sepolicy/dump_modemlog.te +++ b/modem/sepolicy/dump_modemlog.te @@ -4,6 +4,9 @@ userdebug_or_eng(` allow dump_modemlog mnt_vendor_file:dir search; allow dump_modemlog modem_efs_file:dir search; allow dump_modemlog modem_efs_file:file r_file_perms; + allow dump_modemlog vendor_slog_file:dir r_dir_perms; + allow dump_modemlog vendor_slog_file:file r_file_perms; allow dump_modemlog radio_vendor_data_file:dir create_dir_perms; allow dump_modemlog radio_vendor_data_file:file create_file_perms; + set_prop(dump_modemlog, vendor_modem_prop) ') From 6cd390e2cf4ea2a38fc2a995395813c3f9963c8c Mon Sep 17 00:00:00 2001 From: Jasmine Cha Date: Mon, 13 Mar 2023 09:41:44 +0800 Subject: [PATCH 2/5] audio: add policy for rild to get vendor audio propery - rild has different sepolicy for audio hal by type of service, which is hidl or aidl. Read property before querying service in rild can avoid avc denied presubmit test. Bug: 206738075 Test: build pass with hidl/aidl audio service Change-Id: I2616028fb3a6029646340fc3282e51a5f02b3f7f Signed-off-by: Jasmine Cha --- audio/aidl.mk | 3 +++ audio/sepolicy/common/property_contexts | 1 + audio/sepolicy/common/rild.te | 1 + 3 files changed, 5 insertions(+) create mode 100644 audio/sepolicy/common/rild.te diff --git a/audio/aidl.mk b/audio/aidl.mk index 1044148..ae64e13 100644 --- a/audio/aidl.mk +++ b/audio/aidl.mk @@ -9,3 +9,6 @@ BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/audio/sepolicy/aidl include device/google/gs-common/audio/common.mk DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE += device/google/gs-common/audio/aidl/device_framework_matrix_product.xml + +PRODUCT_PROPERTY_OVERRIDES += \ + vendor.audio_hal.aidl.enable=true diff --git a/audio/sepolicy/common/property_contexts b/audio/sepolicy/common/property_contexts index aa981f1..1749ac8 100644 --- a/audio/sepolicy/common/property_contexts +++ b/audio/sepolicy/common/property_contexts @@ -8,3 +8,4 @@ vendor.audiodump.output.dir u:object_r:vendor_audio_prop:s0 vendor.audiodump.encode.disable u:object_r:vendor_audio_prop:s0 vendor.audiodump.log.cca.updated u:object_r:vendor_audio_prop:s0 vendor.audiodump.cca.config u:object_r:vendor_audio_prop:s0 +vendor.audio_hal.aidl.enable u:object_r:vendor_audio_prop:s0 diff --git a/audio/sepolicy/common/rild.te b/audio/sepolicy/common/rild.te new file mode 100644 index 0000000..fe86848 --- /dev/null +++ b/audio/sepolicy/common/rild.te @@ -0,0 +1 @@ +get_prop(rild, vendor_audio_prop); From 5f32222576cbfa1c44abd827fc38ef9c32afdb99 Mon Sep 17 00:00:00 2001 From: Darren Hsu Date: Mon, 13 Mar 2023 11:11:55 +0800 Subject: [PATCH 3/5] powerstats: introduce AdaptiveDvfsStateResidency data provider This is a new data provider to get state residency from fvp_stats, which is similar with DVFS data provider. But the difference is that CPU frequency table is read from cpufreq sysfs and not predefined in the config. Bug: 272642210 Bug: 267638537 Test: dumpsys android.hardware.power.stats.IPowerStats/default Change-Id: I22451b55dee5dfb0a1b36497533c2063984d5483 Signed-off-by: Darren Hsu --- ...AdaptiveDvfsStateResidencyDataProvider.cpp | 80 +++++++++++++++++++ powerstats/DvfsStateResidencyDataProvider.cpp | 2 +- .../AdaptiveDvfsStateResidencyDataProvider.h | 57 +++++++++++++ .../include/DvfsStateResidencyDataProvider.h | 4 +- 4 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 powerstats/AdaptiveDvfsStateResidencyDataProvider.cpp create mode 100644 powerstats/include/AdaptiveDvfsStateResidencyDataProvider.h diff --git a/powerstats/AdaptiveDvfsStateResidencyDataProvider.cpp b/powerstats/AdaptiveDvfsStateResidencyDataProvider.cpp new file mode 100644 index 0000000..28b076c --- /dev/null +++ b/powerstats/AdaptiveDvfsStateResidencyDataProvider.cpp @@ -0,0 +1,80 @@ +/* + * 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. + */ +#include "AdaptiveDvfsStateResidencyDataProvider.h" + +#include +#include +#include + +#include +#include + +using android::base::Split; +using android::base::Trim; + +namespace aidl { +namespace android { +namespace hardware { +namespace power { +namespace stats { + +AdaptiveDvfsStateResidencyDataProvider::AdaptiveDvfsStateResidencyDataProvider( + std::string path, + uint64_t clockRate, + std::string powerEntityName, + std::string freqPath) + : DvfsStateResidencyDataProvider(path, clockRate, {}) { + std::unique_ptr fp(fopen(freqPath.c_str(), "r"), fclose); + if (!fp) { + PLOG(ERROR) << __func__ << ":Failed to open file " << freqPath; + return; + } + + size_t len = 0; + char *line = nullptr; + std::string suffix = "MHz"; + std::vector> states = {}; + std::vector parts; + std::string freqStr; + + while (getline(&line, &len, fp.get()) != -1) { + parts = Split(line, " "); + if (parts.size() > 0) { + freqStr = Trim(parts[0]); + states.push_back(std::make_pair( + freqStr.substr(0, freqStr.length() - 3) + suffix, + freqStr)); + } + } + + mPowerEntities.push_back({powerEntityName, std::move(states)}); +} + +bool AdaptiveDvfsStateResidencyDataProvider::getStateResidencies( + std::unordered_map> *residencies) { + return DvfsStateResidencyDataProvider::getStateResidencies(residencies); +} + +std::unordered_map> + AdaptiveDvfsStateResidencyDataProvider::getInfo() { + return DvfsStateResidencyDataProvider::getInfo(); +} + +} // namespace stats +} // namespace power +} // namespace hardware +} // namespace android +} // namespace aidl diff --git a/powerstats/DvfsStateResidencyDataProvider.cpp b/powerstats/DvfsStateResidencyDataProvider.cpp index 511159e..c7561d6 100644 --- a/powerstats/DvfsStateResidencyDataProvider.cpp +++ b/powerstats/DvfsStateResidencyDataProvider.cpp @@ -37,7 +37,7 @@ namespace stats { DvfsStateResidencyDataProvider::DvfsStateResidencyDataProvider(std::string path, uint64_t clockRate, std::vector cfgs) - : mPath(std::move(path)), mClockRate(clockRate), mPowerEntities(std::move(cfgs)) {} + : mPowerEntities(std::move(cfgs)), mPath(std::move(path)), mClockRate(clockRate) {} int32_t DvfsStateResidencyDataProvider::matchEntity(char const *line) { for (int32_t i = 0; i < mPowerEntities.size(); i++) { diff --git a/powerstats/include/AdaptiveDvfsStateResidencyDataProvider.h b/powerstats/include/AdaptiveDvfsStateResidencyDataProvider.h new file mode 100644 index 0000000..661b940 --- /dev/null +++ b/powerstats/include/AdaptiveDvfsStateResidencyDataProvider.h @@ -0,0 +1,57 @@ +/* + * 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 "DvfsStateResidencyDataProvider.h" + +namespace aidl { +namespace android { +namespace hardware { +namespace power { +namespace stats { + +class AdaptiveDvfsStateResidencyDataProvider : public DvfsStateResidencyDataProvider { + public: + /* + * path - path to dvfs sysfs node. + * clockRate - clock rate in KHz. + * powerEntityName - power entity name to parse. + * freqPath - path to frequency table. + */ + AdaptiveDvfsStateResidencyDataProvider( + std::string path, + uint64_t clockRate, + std::string powerEntityName, + std::string freqPath); + ~AdaptiveDvfsStateResidencyDataProvider() = default; + + /* + * See IStateResidencyDataProvider::getStateResidencies + */ + bool getStateResidencies( + std::unordered_map> *residencies) override; + + /* + * See IStateResidencyDataProvider::getInfo + */ + std::unordered_map> getInfo() override; +}; + +} // namespace stats +} // namespace power +} // namespace hardware +} // namespace android +} // namespace aidl diff --git a/powerstats/include/DvfsStateResidencyDataProvider.h b/powerstats/include/DvfsStateResidencyDataProvider.h index ca8ab22..0aeafb7 100644 --- a/powerstats/include/DvfsStateResidencyDataProvider.h +++ b/powerstats/include/DvfsStateResidencyDataProvider.h @@ -51,6 +51,9 @@ class DvfsStateResidencyDataProvider : public PowerStats::IStateResidencyDataPro */ std::unordered_map> getInfo() override; + protected: + std::vector mPowerEntities; + private: int32_t matchEntity(char const *line); int32_t matchState(char const *line, const Config& powerEntity); @@ -58,7 +61,6 @@ class DvfsStateResidencyDataProvider : public PowerStats::IStateResidencyDataPro const std::string mPath; const uint64_t mClockRate; - std::vector mPowerEntities; }; } // namespace stats From 502c8ad720e94707e9dbf0c212bd9fdec537df83 Mon Sep 17 00:00:00 2001 From: Jasmine Cha Date: Mon, 13 Mar 2023 10:59:02 +0800 Subject: [PATCH 4/5] audio: move audio vendor set_prop to gs-common Bug: 259161622 Test: build pass Change-Id: Ic76c867e8478e2f736da78232a444cf135cddc6d Signed-off-by: Jasmine Cha --- audio/sepolicy/common/vendor_init.te | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 audio/sepolicy/common/vendor_init.te diff --git a/audio/sepolicy/common/vendor_init.te b/audio/sepolicy/common/vendor_init.te new file mode 100644 index 0000000..26f3fa8 --- /dev/null +++ b/audio/sepolicy/common/vendor_init.te @@ -0,0 +1,2 @@ +# Audio property +set_prop(vendor_init, vendor_audio_prop) From 513af617616e9216cf1f2ea780197e23551fea7b Mon Sep 17 00:00:00 2001 From: Richard Hsu Date: Sun, 12 Mar 2023 21:53:17 -0700 Subject: [PATCH 5/5] [Flag] Update default TPU cache coherency to be enabled The TPU cache coherency was set to false by default for testing/migration purposes. Now that the applications have been verified to work with TPU cache coherency, this CL changes the default behavior of TPU cache coherency to be enabled. Bug: 255828212 Test: All child bugs in b/255828212. Speech, Camera, TPU internal tests. Change-Id: I276bb227fad352ad0a71ab2f9b771720b90bb729 --- edgetpu/edgetpu.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/edgetpu/edgetpu.mk b/edgetpu/edgetpu.mk index 862de56..2f0f77c 100644 --- a/edgetpu/edgetpu.mk +++ b/edgetpu/edgetpu.mk @@ -27,4 +27,4 @@ PRODUCT_PACKAGES += libedgetpu_dba.google BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/edgetpu/sepolicy # Tflite Darwinn delegate property -PRODUCT_VENDOR_PROPERTIES += vendor.edgetpu.tflite_delegate.force_disable_io_coherency=1 +PRODUCT_VENDOR_PROPERTIES += vendor.edgetpu.tflite_delegate.force_disable_io_coherency=0