Skip to content

Commit fec2601

Browse files
cdleonardmathieupoirier
authored andcommitted
remoteproc: zynqmp: Add coredump support
Supporting remoteproc coredump requires the platform-specific driver to register coredump segments to be dumped. Do this by calling rproc_coredump_add_segment for every carveout. Also call rproc_coredump_set_elf_info when then rproc is created. If the ELFCLASS parameter is not provided then coredump fails with an error. Other drivers seem to pass EM_NONE for the machine argument but for me this shows a warning in gdb. Pass EM_ARM because this is an ARM R5. Signed-off-by: Leonard Crestez <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mathieu Poirier <[email protected]>
1 parent 331f91d commit fec2601

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

drivers/remoteproc/xlnx_r5_remoteproc.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ static int add_mem_regions_carveout(struct rproc *rproc)
486486
}
487487

488488
rproc_add_carveout(rproc, rproc_mem);
489+
rproc_coredump_add_segment(rproc, rmem->base, rmem->size);
489490

490491
dev_dbg(&rproc->dev, "reserved mem carveout %s addr=%llx, size=0x%llx",
491492
it.node->name, rmem->base, rmem->size);
@@ -597,6 +598,7 @@ static int add_tcm_carveout_split_mode(struct rproc *rproc)
597598
}
598599

599600
rproc_add_carveout(rproc, rproc_mem);
601+
rproc_coredump_add_segment(rproc, da, bank_size);
600602
}
601603

602604
return 0;
@@ -676,6 +678,7 @@ static int add_tcm_carveout_lockstep_mode(struct rproc *rproc)
676678

677679
/* If registration is success, add carveouts */
678680
rproc_add_carveout(rproc, rproc_mem);
681+
rproc_coredump_add_segment(rproc, da, bank_size);
679682

680683
dev_dbg(dev, "TCM carveout lockstep mode %s addr=0x%llx, da=0x%x, size=0x%lx",
681684
bank_name, bank_addr, da, bank_size);
@@ -853,6 +856,8 @@ static struct zynqmp_r5_core *zynqmp_r5_add_rproc_core(struct device *cdev)
853856
return ERR_PTR(-ENOMEM);
854857
}
855858

859+
rproc_coredump_set_elf_info(r5_rproc, ELFCLASS32, EM_ARM);
860+
856861
r5_rproc->auto_boot = false;
857862
r5_core = r5_rproc->priv;
858863
r5_core->dev = cdev;

0 commit comments

Comments
 (0)