soc: mem_dump: fix physical address mapping issue

Using phys_to_virt can't get correct virtual address. Because the physical
address is continuous, the virtual address can be obtained by using the
offset of the physical address.

Change-Id: Ifdf57820273b2466dca0e486b42ed6895bff0f48
Signed-off-by: Yuanfang Zhang <zhangyuanfang@codeaurora.org>
This commit is contained in:
Yuanfang Zhang 2019-12-03 21:31:29 +08:00 • committed by Gerrit - the friendly Code Review server
commit 29cdfe444a

View file

@ -476,7 +476,7 @@ static struct msm_dump_table *msm_dump_get_table(enum msm_dump_table_ids id)
{
struct msm_dump_table *table = memdump.table;
int i;
unsigned long offset;
if (!table) {
pr_err("mem dump base table does not exist\n");
return ERR_PTR(-EINVAL);
@ -491,8 +491,9 @@ static struct msm_dump_table *msm_dump_get_table(enum msm_dump_table_ids id)
return ERR_PTR(-EINVAL);
}
offset = table->entries[i].addr - memdump.table_phys;
/* Get the apps table pointer */
table = phys_to_virt(table->entries[i].addr);
table = (void *)memdump.table + offset;
return table;
}