qcom: common_log: add support to dump rpm code ram

Allocate memory to dump RPM CODE RAM at the time of crash.

Change-Id: I5062d65a095538a508944315e6cc06f430382bf5
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
Signed-off-by: Shashank Mittal <mittals@codeaurora.org>
This commit is contained in:
Sarangdhar Joshi 2015-05-22 11:50:19 -07:00 committed by Jeevan Shriram
parent eb3bb2fc33
commit 6f938760b7
2 changed files with 37 additions and 0 deletions

View file

@ -21,6 +21,7 @@
#define MISC_DUMP_DATA_LEN 4096
#define PMIC_DUMP_DATA_LEN 4096
#define VSENSE_DUMP_DATA_LEN 4096
#define RPM_DUMP_DATA_LEN (160 * 1024)
void register_misc_dump(void)
{
@ -119,6 +120,40 @@ err0:
}
}
void register_rpm_dump(void)
{
static void *dump_addr;
int ret;
struct msm_dump_entry dump_entry;
struct msm_dump_data *dump_data;
if (MSM_DUMP_MAJOR(msm_dump_table_version()) > 1) {
dump_data = kzalloc(sizeof(struct msm_dump_data), GFP_KERNEL);
if (!dump_data) {
pr_err("rpm dump data structure allocation failed\n");
return;
}
dump_addr = kzalloc(RPM_DUMP_DATA_LEN, GFP_KERNEL);
if (!dump_addr)
goto err0;
dump_data->addr = virt_to_phys(dump_addr);
dump_data->len = RPM_DUMP_DATA_LEN;
dump_entry.id = MSM_DUMP_DATA_RPM;
dump_entry.addr = virt_to_phys(dump_data);
ret = msm_dump_data_register(MSM_DUMP_TABLE_APPS, &dump_entry);
if (ret) {
pr_err("Registering rpm dump region failed\n");
goto err1;
}
return;
err1:
kfree(dump_addr);
err0:
kfree(dump_data);
}
}
static void __init common_log_register_log_buf(void)
{
char **log_bufp;
@ -184,6 +219,7 @@ static int __init msm_common_log_init(void)
register_misc_dump();
register_pmic_dump();
register_vsense_dump();
register_rpm_dump();
return 0;
}
late_initcall(msm_common_log_init);

View file

@ -78,6 +78,7 @@ enum msm_dump_data_ids {
MSM_DUMP_DATA_DBGUI_REG = 0xE5,
MSM_DUMP_DATA_MISC = 0xE8,
MSM_DUMP_DATA_VSENSE = 0xE9,
MSM_DUMP_DATA_RPM = 0xEA,
MSM_DUMP_DATA_TMC_ETF = 0xF0,
MSM_DUMP_DATA_TMC_REG = 0x100,
MSM_DUMP_DATA_LOG_BUF = 0x110,