<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:新細明體;
        panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@新細明體";
        panose-1:2 2 5 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML 預設格式 字元";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.HTML
        {mso-style-name:"HTML 預設格式 字元";
        mso-style-priority:99;
        mso-style-link:"HTML 預設格式";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Dear Maintaniners,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Sorry for attaching a not readable patch file at previous mail.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I add the diff of the patch inline for your review.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">And provide the reason of improvement again and look forward for your feedback.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal">We want to improve the crash_tool for the case that need offline cpu register info even Kdump without crash_notes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For one thing,  we will prepare a Kdump with all CPU register info in ELF note.<o:p></o:p></p>
<p class="MsoNormal">For another thing, we need to modify crash_tool and make it support adding offline cpu register info even Kdump without crash_notes.<o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black">Signed-off-by: Nicholas
</span><span style="font-size:10.0pt;font-family:"新細明體",serif;color:black">Tang <Nicholas.tang@mediatek.com></span><span style="font-size:10.0pt;font-family:"Courier New";color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">--- crash-7.3.0/arm64.c  2021-04-27 16:01:07.000000000 +0800<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+++ crash-7.3.0.mod/arm64.c    2021-06-15 17:13:54.037273227 +0800<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">@@ -3667,8 +3667,41 @@ arm64_get_crash_notes(void)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">               ulong *notes_ptrs;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">               ulong i, found;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">-              if (!symbol_exists("crash_notes"))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+             if (!symbol_exists("crash_notes")) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                             if (DISKDUMP_DUMPFILE() || KDUMP_DUMPFILE()) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                             if (!(ms->panic_task_regs = calloc((size_t)kt->cpus, sizeof(struct arm64_pt_regs))))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             error(FATAL, "cannot calloc panic_task_regs space\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                             for  (i = found = 0; i < kt->cpus; i++) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             if (DISKDUMP_DUMPFILE())<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                                             note = diskdump_get_prstatus_percpu(i);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             else if (KDUMP_DUMPFILE())<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                                             note = netdump_get_prstatus_percpu(i);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                                             error(WARNING, "cpu %d: cannot find NT_PRSTATUS note\n", i);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                                             continue;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                             <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             /*<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             * Find correct location of note data. This contains elf_prstatus<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             * structure which has registers etc. for the crashed task.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             offset = sizeof(Elf64_Nhdr);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             offset = roundup(offset + note->n_namesz, 4);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             p = (char *)note + offset; /* start of elf_prstatus */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                            
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             BCOPY(p + OFFSET(elf_prstatus_pr_reg), &ms->panic_task_regs[i],<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                                   sizeof(struct arm64_pt_regs));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                            
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                                             found++;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                             }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                             }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                             if (!found) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                             free(ms->panic_task_regs);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                                             ms->panic_task_regs = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+                             }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+             }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                crash_notes = symbol_value("crash_notes");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">BR<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">James Hsu<o:p></o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> James Hsu (<span lang="ZH-TW" style="font-family:"新細明體",serif">徐慶薰</span>)
<br>
<b>Sent:</b> Wednesday, July 7, 2021 3:11 PM<br>
<b>To:</b> crash-utility@redhat.com<br>
<b>Cc:</b> Nicholas Tang (<span lang="ZH-TW" style="font-family:"新細明體",serif">鄭秦輝</span>); James Hsu (<span lang="ZH-TW" style="font-family:"新細明體",serif">徐慶薰</span>)<br>
<b>Subject:</b> [Crash Utility] Improvement for getting offline CPU register without symbol "crash_notes"
<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Dear crash_tool maintainers,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We want to improve the crash_tool for the case that need offline cpu register info even Kdump without crash_notes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For one thing,  we will prepare a Kdump with all CPU register info in ELF note.<o:p></o:p></p>
<p class="MsoNormal">For another thing, we need to modify crash_tool and make it support adding offline cpu register info even Kdump without crash_notes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We prepare a patch for the case with ARCH=arm64.<o:p></o:p></p>
<p class="MsoNormal">Please take your time to review our patch and look forward to receving your comments.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">BR<o:p></o:p></p>
<p class="MsoNormal">James Hsu<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"新細明體",serif">*********************MEDIATEK Confidential/Internal Use*********************
<o:p></o:p></span></p>
</div>
</body>
</html>
<!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice ********************
The information contained in this e-mail message (including any 
attachments) may be confidential, proprietary, privileged, or otherwise
exempt from disclosure under applicable laws. It is intended to be 
conveyed only to the designated recipient(s). Any use, dissemination, 
distribution, printing, retaining or copying of this e-mail (including its 
attachments) by unintended recipient(s) is strictly prohibited and may 
be unlawful. If you are not an intended recipient of this e-mail, or believe 
that you have received this e-mail in error, please notify the sender 
immediately (by replying to this e-mail), delete any and all copies of 
this e-mail (including any attachments) from your system, and do not
disclose the content of this e-mail to any other person. Thank you!
</pre><!--}-->