mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
Merge "soc: qcom: pil: Do not do complete ramdump for minidump elf32"
This commit is contained in:
commit
b9028a4dc6
4 changed files with 41 additions and 5 deletions
|
|
@ -412,7 +412,11 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
|
|||
goto seg_mapping_fail;
|
||||
}
|
||||
|
||||
ret = do_minidump(ramdump_dev, ramdump_segs, ss_valid_seg_cnt);
|
||||
if (desc->minidump_as_elf32)
|
||||
ret = do_minidump_elf32(ramdump_dev, ramdump_segs,
|
||||
ss_valid_seg_cnt);
|
||||
else
|
||||
ret = do_minidump(ramdump_dev, ramdump_segs, ss_valid_seg_cnt);
|
||||
if (ret)
|
||||
pil_err(desc, "%s: Minidump collection failed for subsys %s rc:%d\n",
|
||||
__func__, desc->name, ret);
|
||||
|
|
@ -1624,6 +1628,9 @@ int pil_desc_init(struct pil_desc *desc)
|
|||
if (!desc->unmap_fw_mem)
|
||||
desc->unmap_fw_mem = unmap_fw_mem;
|
||||
|
||||
desc->minidump_as_elf32 = of_property_read_bool(
|
||||
ofnode, "qcom,minidump-as-elf32");
|
||||
|
||||
return 0;
|
||||
err_parse_dt:
|
||||
ida_simple_remove(&pil_ida, priv->id);
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ struct pil_desc {
|
|||
int *aux_minidump_ids;
|
||||
int num_aux_minidump_ids;
|
||||
u32 extra_size;
|
||||
bool minidump_as_elf32;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ void destroy_ramdump_device(void *dev)
|
|||
EXPORT_SYMBOL(destroy_ramdump_device);
|
||||
|
||||
static int _do_ramdump(void *handle, struct ramdump_segment *segments,
|
||||
int nsegments, bool use_elf)
|
||||
int nsegments, bool use_elf, bool complete_ramdump)
|
||||
{
|
||||
int ret, i;
|
||||
struct ramdump_device *rd_dev = (struct ramdump_device *)handle;
|
||||
|
|
@ -427,7 +427,7 @@ static int _do_ramdump(void *handle, struct ramdump_segment *segments,
|
|||
return -EPIPE;
|
||||
}
|
||||
|
||||
if (rd_dev->complete_ramdump) {
|
||||
if (complete_ramdump) {
|
||||
for (i = 0; i < nsegments-1; i++)
|
||||
segments[i].size =
|
||||
segments[i + 1].address - segments[i].address;
|
||||
|
|
@ -628,7 +628,10 @@ static int _do_minidump(void *handle, struct ramdump_segment *segments,
|
|||
|
||||
int do_ramdump(void *handle, struct ramdump_segment *segments, int nsegments)
|
||||
{
|
||||
return _do_ramdump(handle, segments, nsegments, false);
|
||||
struct ramdump_device *rd_dev = (struct ramdump_device *)handle;
|
||||
|
||||
return _do_ramdump(handle, segments, nsegments, false,
|
||||
rd_dev->complete_ramdump);
|
||||
}
|
||||
EXPORT_SYMBOL(do_ramdump);
|
||||
|
||||
|
|
@ -638,10 +641,20 @@ int do_minidump(void *handle, struct ramdump_segment *segments, int nsegments)
|
|||
}
|
||||
EXPORT_SYMBOL(do_minidump);
|
||||
|
||||
int do_minidump_elf32(void *handle, struct ramdump_segment *segments,
|
||||
int nsegments)
|
||||
{
|
||||
return _do_ramdump(handle, segments, nsegments, true, false);
|
||||
}
|
||||
EXPORT_SYMBOL(do_minidump_elf32);
|
||||
|
||||
int
|
||||
do_elf_ramdump(void *handle, struct ramdump_segment *segments, int nsegments)
|
||||
{
|
||||
return _do_ramdump(handle, segments, nsegments, true);
|
||||
struct ramdump_device *rd_dev = (struct ramdump_device *)handle;
|
||||
|
||||
return _do_ramdump(handle, segments, nsegments, true,
|
||||
rd_dev->complete_ramdump);
|
||||
}
|
||||
EXPORT_SYMBOL(do_elf_ramdump);
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ extern int do_elf_ramdump(void *handle, struct ramdump_segment *segments,
|
|||
int nsegments);
|
||||
extern int do_minidump(void *handle, struct ramdump_segment *segments,
|
||||
int nsegments);
|
||||
extern int do_minidump_elf32(void *handle, struct ramdump_segment *segments,
|
||||
int nsegments);
|
||||
|
||||
#else
|
||||
static inline void *create_ramdump_device(const char *dev_name,
|
||||
|
|
@ -62,6 +64,19 @@ static inline int do_elf_ramdump(void *handle, struct ramdump_segment *segments,
|
|||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int do_minidump(void *handle, struct ramdump_segment *segments,
|
||||
int nsegments)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int do_minidump_elf32(void *handle,
|
||||
struct ramdump_segment *segments, int nsegments)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MSM_SUBSYSTEM_RESTART */
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue