Merge "soc: qcom: Optimize minidump collection check and add debug log"

This commit is contained in:
Linux Build Service Account 2017-10-13 12:12:14 -07:00 committed by Gerrit - the friendly Code Review server
commit 38c318f33b

View file

@ -170,6 +170,8 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
ss_mdump_seg_cnt = readb_relaxed(offset) +
NUM_OF_ENCRYPTED_KEY;
pr_debug("SMEM base to read minidump segments is 0x%x\n",
__raw_readl(priv->minidump));
subsys_smem_base = ioremap(__raw_readl(priv->minidump),
ss_mdump_seg_cnt * sizeof(*region_info));
region_info =
@ -191,6 +193,9 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
s->address = __raw_readl(offset);
offset = offset + sizeof(region_info->region_base_address);
s->size = __raw_readl(offset);
pr_debug("Dumping segment %s with address %pK and size 0x%x\n",
s->name, (void *)s->address,
(unsigned int)s->size);
s++;
region_info++;
}
@ -199,7 +204,6 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
if (ret)
pil_err(desc, "%s: Ramdump collection failed for subsys %s rc:%d\n",
__func__, desc->name, ret);
writel_relaxed(0, &priv->minidump->md_ss_smem_regions_baseptr);
writeb_relaxed(1, &priv->minidump->md_ss_ssr_cause);
if (desc->subsys_vmid > 0)
@ -222,10 +226,21 @@ int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev)
struct pil_seg *seg;
int count = 0, ret;
struct ramdump_segment *ramdump_segs, *s;
void __iomem *offset;
if (priv->minidump && (__raw_readl(priv->minidump) > 0))
memcpy(&offset, &priv->minidump, sizeof(priv->minidump));
/*
* Collect minidump if smem base is initialized,
* ssr cause is 0. No need to check encryption status
*/
if (priv->minidump
&& (__raw_readl(priv->minidump) != 0)
&& (readb_relaxed(offset + sizeof(u32) + 2 * sizeof(u8)) == 0)) {
pr_debug("Dumping Minidump for %s\n", desc->name);
return pil_do_minidump(desc, ramdump_dev);
}
pr_debug("Continuing with full SSR dump for %s\n", desc->name);
list_for_each_entry(seg, &priv->segs, list)
count++;