Merge "modem: Add kernel metrics log to bugreport" into main
This commit is contained in:
commit
d3da929dc3
4 changed files with 46 additions and 2 deletions
|
@ -5,6 +5,7 @@ package {
|
|||
rust_binary {
|
||||
name: "dump_modem",
|
||||
srcs: ["dump_modem.rs"],
|
||||
rustlibs: ["librustutils"],
|
||||
vendor: true,
|
||||
relative_install_path: "dump",
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//! The dump_modem binary is used to capture kernel/userspace logs in bugreport
|
||||
|
||||
use std::fs;
|
||||
use std::str::FromStr;
|
||||
|
||||
const MODEM_STAT: &str = "/data/vendor/modem_stat/debug.txt";
|
||||
const MODEM_UART: &str = "/data/vendor/radio/modem_uart_logs.txt";
|
||||
|
@ -11,6 +12,7 @@ const RFSD_ERR_LOG_DIR: &str = "/data/vendor/log/rfsd";
|
|||
const WAKEUP_EVENTS: &str = "/sys/devices/platform/cpif/wakeup_events";
|
||||
const CPIF_LOGBUFFER: &str = "/dev/logbuffer_cpif";
|
||||
const PCIE_EVENT_STATS: &str = "/sys/devices/platform/cpif/modem/pcie_event_stats";
|
||||
const KERNEL_METRICS_DIR: &str = "/sys/kernel/pixel_metrics/modem";
|
||||
|
||||
fn handle_io_error(file: &str, err: std::io::Error) {
|
||||
match err.kind() {
|
||||
|
@ -58,6 +60,13 @@ fn print_matching_files_in_dir(dir: &str, filename: &str) {
|
|||
}
|
||||
}
|
||||
|
||||
fn get_property(key: &str, default_value: i32) -> i32 {
|
||||
let value = rustutils::system_properties::read(key)
|
||||
.unwrap_or(None)
|
||||
.unwrap_or(default_value.to_string());
|
||||
i32::from_str(&value).unwrap_or(default_value)
|
||||
}
|
||||
|
||||
// Capture modem stat log if it exists
|
||||
fn modem_stat() {
|
||||
println!("------ Modem Stat ------");
|
||||
|
@ -107,6 +116,27 @@ fn pcie_event_stats() {
|
|||
println!();
|
||||
}
|
||||
|
||||
// Capture kernel metrics stats if the sysfs attribute exists
|
||||
fn print_kernel_metrics() {
|
||||
println!("------ Kernel Metrics ------");
|
||||
|
||||
let file_list = vec![
|
||||
"modem_boot_duration",
|
||||
"modem_wakeup_ap",
|
||||
"pcie_link_state",
|
||||
"pcie_link_duration",
|
||||
"pcie_link_stats",
|
||||
"pcie_link_updown",
|
||||
];
|
||||
|
||||
for file in file_list {
|
||||
println!("------ {} ------", file);
|
||||
let file_path = format!("{}/{}", KERNEL_METRICS_DIR, file);
|
||||
print_file_and_handle_error(&file_path);
|
||||
println!();
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
modem_stat();
|
||||
modem_uart();
|
||||
|
@ -115,4 +145,9 @@ fn main() {
|
|||
wakeup_events();
|
||||
cpif_logbuffer();
|
||||
pcie_event_stats();
|
||||
|
||||
let prop_value = get_property("persist.vendor.modem.qms.kernel_metrics_collection", 0);
|
||||
if prop_value == 1 {
|
||||
print_kernel_metrics();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# Sepolicy for dump_modem
|
||||
pixel_bugreport(dump_modem)
|
||||
|
||||
allow dump_modem modem_stat_data_file:dir search;
|
||||
|
@ -10,3 +11,4 @@ allow dump_modem vendor_rfsd_log_file:file r_file_perms;
|
|||
allow dump_modem vendor_toolbox_exec:file execute_no_trans;
|
||||
allow dump_modem sysfs_dump_modem:file r_file_perms;
|
||||
allow dump_modem logbuffer_device:chr_file r_file_perms;
|
||||
get_prop(dump_modem, vendor_modem_prop)
|
||||
|
|
|
@ -1,2 +1,8 @@
|
|||
genfscon sysfs /devices/platform/cpif/wakeup_events u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /devices/platform/cpif/modem/pcie_event_stats u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /devices/platform/cpif/wakeup_events u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /devices/platform/cpif/modem/pcie_event_stats u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /kernel/pixel_metrics/modem/modem_boot_duration u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /kernel/pixel_metrics/modem/modem_wakeup_ap u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_state u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_duration u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_stats u:object_r:sysfs_dump_modem:s0
|
||||
genfscon sysfs /kernel/pixel_metrics/modem/pcie_link_updown u:object_r:sysfs_dump_modem:s0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue