aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/remoteproc
diff options
context:
space:
mode:
authorJuan Gutierrez <jgutierrez@ti.com>2012-02-29 17:17:29 -0600
committerZiyann <jaraidaniel@gmail.com>2014-10-01 12:57:08 +0200
commit5de1aae0e7bf0356c129624fad47ad136d139f87 (patch)
tree9fdb63f2847c98fc78fb8de8ce2d9f58baac27a7 /drivers/remoteproc
parent6ba5bdc9d36b5215823e574e85d70867376a94c5 (diff)
downloadkernel_samsung_tuna-5de1aae0e7bf0356c129624fad47ad136d139f87.tar.gz
kernel_samsung_tuna-5de1aae0e7bf0356c129624fad47ad136d139f87.tar.bz2
kernel_samsung_tuna-5de1aae0e7bf0356c129624fad47ad136d139f87.zip
remoteproc: enable core dump and halt-on-crash for dsp
Support for halt-on-crash feature is enabled for dsp. The generation of code dump file is also enabled for dsp. DSP memory can be pulled from following file for offline analysis: /d/remoteproc/omap-rproc.0/core Currently dsp registers are not saved. The DSP IO buffer area is skipped as per core-dump design. Change-Id: I705d22707ef95bdd9cd722257668595622b5bb42 Signed-off-by: Juan Gutierrez <jgutierrez@ti.com> Signed-off-by: Suman Anna <s-anna@ti.com>
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r--drivers/remoteproc/remoteproc.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/remoteproc/remoteproc.c b/drivers/remoteproc/remoteproc.c
index 92c6bbbde48..5228f99942f 100644
--- a/drivers/remoteproc/remoteproc.c
+++ b/drivers/remoteproc/remoteproc.c
@@ -272,9 +272,8 @@ static int setup_rproc_elf_core_dump(struct core_rproc *d)
{
short __phnum;
struct elf_phdr *nphdr;
- struct exc_regs *xregs = d->rproc->cdump_buf1;
- struct pt_regs *regs =
- (struct pt_regs *)&d->core.core_note.prstatus.pr_reg;
+ struct exc_regs *xregs;
+ struct pt_regs *regs;
memset(&d->core.elf, 0, sizeof(d->core.elf));
@@ -309,8 +308,12 @@ static int setup_rproc_elf_core_dump(struct core_rproc *d)
d->core.core_note.note_prstatus.n_type = NT_PRSTATUS;
memcpy(d->core.core_note.name, CORE_STR, sizeof(CORE_STR));
- remoteproc_fill_pt_regs(regs, xregs);
-
+ /* fill in registers for ipu only, dsp yet to be supported */
+ if (!strcmp(d->rproc->name, "ipu")) {
+ xregs = d->rproc->cdump_buf1;
+ regs = (struct pt_regs *)&d->core.core_note.prstatus.pr_reg;
+ remoteproc_fill_pt_regs(regs, xregs);
+ }
/* We ignore the NVIC registers for now */
d->offset = sizeof(struct core);
@@ -770,7 +773,8 @@ static int rproc_add_mem_entry(struct rproc *rproc, struct fw_resource *rsc)
* Perhaps the ION carveout should be reported as RSC_DEVMEM.
*/
me->core = (rsc->type == RSC_CARVEOUT &&
- strcmp(rsc->name, "IPU_MEM_IOBUFS"));
+ strcmp(rsc->name, "IPU_MEM_IOBUFS") &&
+ strcmp(rsc->name, "DSP_MEM_IOBUFS"));
#endif
}