[Crash-utility] [Crash Utility] Improvement for getting offline CPU register without symbol "crash_notes"

James Hsu (徐慶薰) James.Hsu at mediatek.com
Sat Jul 10 13:53:05 UTC 2021


Dear Maintaniners,

Sorry for attaching a not readable patch file at previous mail.
I add the diff of the patch inline for your review.

And provide the reason of improvement again and look forward for your feedback.

We want to improve the crash_tool for the case that need offline cpu register info even Kdump without crash_notes.

For one thing,  we will prepare a Kdump with all CPU register info in ELF note.
For another thing, we need to modify crash_tool and make it support adding offline cpu register info even Kdump without crash_notes.


Signed-off-by: Nicholas Tang <Nicholas.tang at mediatek.com>

--- crash-7.3.0/arm64.c  2021-04-27 16:01:07.000000000 +0800
+++ crash-7.3.0.mod/arm64.c    2021-06-15 17:13:54.037273227 +0800
@@ -3667,8 +3667,41 @@ arm64_get_crash_notes(void)
               ulong *notes_ptrs;
               ulong i, found;
-              if (!symbol_exists("crash_notes"))
+             if (!symbol_exists("crash_notes")) {
+                             if (DISKDUMP_DUMPFILE() || KDUMP_DUMPFILE()) {
+                                             if (!(ms->panic_task_regs = calloc((size_t)kt->cpus, sizeof(struct arm64_pt_regs))))
+                                                             error(FATAL, "cannot calloc panic_task_regs space\n");
+
+                                             for  (i = found = 0; i < kt->cpus; i++) {
+                                                             if (DISKDUMP_DUMPFILE())
+                                                                             note = diskdump_get_prstatus_percpu(i);
+                                                             else if (KDUMP_DUMPFILE())
+                                                                             note = netdump_get_prstatus_percpu(i);
+                                                             else {
+                                                                             error(WARNING, "cpu %d: cannot find NT_PRSTATUS note\n", i);
+                                                                             continue;
+                                                             }
+
+                                                             /*
+                                                             * Find correct location of note data. This contains elf_prstatus
+                                                             * structure which has registers etc. for the crashed task.
+                                                             */
+                                                             offset = sizeof(Elf64_Nhdr);
+                                                             offset = roundup(offset + note->n_namesz, 4);
+                                                             p = (char *)note + offset; /* start of elf_prstatus */
+
+                                                             BCOPY(p + OFFSET(elf_prstatus_pr_reg), &ms->panic_task_regs[i],
+                                                                   sizeof(struct arm64_pt_regs));
+
+                                                             found++;
+                                             }
+                             }
+                             if (!found) {
+                                             free(ms->panic_task_regs);
+                                             ms->panic_task_regs = NULL;
+                             }
                               return;
+             }
                crash_notes = symbol_value("crash_notes");

BR
James Hsu
From: James Hsu (徐慶薰)
Sent: Wednesday, July 7, 2021 3:11 PM
To: crash-utility at redhat.com
Cc: Nicholas Tang (鄭秦輝); James Hsu (徐慶薰)
Subject: [Crash Utility] Improvement for getting offline CPU register without symbol "crash_notes"

Dear crash_tool maintainers,

We want to improve the crash_tool for the case that need offline cpu register info even Kdump without crash_notes.

For one thing,  we will prepare a Kdump with all CPU register info in ELF note.
For another thing, we need to modify crash_tool and make it support adding offline cpu register info even Kdump without crash_notes.

We prepare a patch for the case with ARCH=arm64.
Please take your time to review our patch and look forward to receving your comments.

BR
James Hsu



*********************MEDIATEK Confidential/Internal Use*********************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20210710/e60717dc/attachment.htm>


More information about the Crash-utility mailing list