https://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&feed=atom&action=historyHow to report a parisc-linux kernel problem - Revision history2024-03-28T10:29:12ZRevision history for this page on the wikiMediaWiki 1.19.24https://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=9596&oldid=prevDeller at 21:18, 2 May 20232023-05-02T21:18:58Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 21:18, 2 May 2023</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 102:</td>
<td colspan="2" class="diff-lineno">Line 102:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The "code" at the beginning of the register dump indicates the type of "trap"</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The "code" at the beginning of the register dump indicates the type of "trap"</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The r02 register is the "return pointer" - it indicates the calling function</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* The r02 register is the "return pointer" - it indicates the calling function</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>* The IAOQ contents specify the address of the instruction where the fault occured.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>* The IAOQ <ins class="diffchange diffchange-inline">(CR18) contents specify the address of the instruction where the fault occured.</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>* IIR is the faulting instruction</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline">* The IASQ (CR17) </ins>contents specify the address of the instruction where the fault occured.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>* IOR, for a memory access, indicates the memory location being accessed</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>* IIR <ins class="diffchange diffchange-inline">(CR19) </ins>is the faulting instruction</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>* IOR <ins class="diffchange diffchange-inline">(CR21)</ins>, for a memory access, indicates the memory location being accessed</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
</table>Dellerhttps://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=9319&oldid=prevDeller: /* "Hung" kernels */2022-01-02T15:14:59Z<p><span dir="auto"><span class="autocomment">"Hung" kernels</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:14, 2 January 2022</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 52:</td>
<td colspan="2" class="diff-lineno">Line 52:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>where it's stuck by using the TOC (Transfer of Control) feature of PA</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>where it's stuck by using the TOC (Transfer of Control) feature of PA</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>firmware. A TOC is usually triggered by a small button on the back of</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>firmware. A TOC is usually triggered by a small button on the back of</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>the machine. On systems with GSP, you can also do this by issuing the</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>the machine. On systems with GSP <ins class="diffchange diffchange-inline">or [[BMC]]</ins>, you can also do this by issuing the</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>'TC' command at the GSP prompt. After a TOC is triggered, the machine</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>'TC' command at the GSP prompt<ins class="diffchange diffchange-inline">, or via "TOC s" on the BMC</ins>.  </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>should automatically reboot.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>After a TOC is triggered, the machine should automatically reboot.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Similar to HPMC data, the TOC data can be recovered from the firmware</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Similar to HPMC data, the TOC data can be recovered from the firmware</div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 65:</td>
<td colspan="2" class="diff-lineno">Line 65:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>This way, next time when you look at the output of 'ser pim' you can</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>This way, next time when you look at the output of 'ser pim' you can</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>be sure you are not looking at stale data.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>be sure you are not looking at stale data.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== More advanced bug reports ==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== More advanced bug reports ==</div></td></tr>
</table>Dellerhttps://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=8351&oldid=prevDeller: /* HOW TO REPORT A PARISC-LINUX KERNEL PROBLEM */2017-04-01T20:23:40Z<p><span dir="auto"><span class="autocomment">HOW TO REPORT A PARISC-LINUX KERNEL PROBLEM</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 20:23, 1 April 2017</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 150:</td>
<td colspan="2" class="diff-lineno">Line 150:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>to the symbolic instruction (unless you are Lamont :-) One way</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>to the symbolic instruction (unless you are Lamont :-) One way</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that I learned from Richard Hirst is shown below:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that I learned from Richard Hirst is shown below:</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">(You can download this disasm tool to automate the disassembly: ftp://parisc.parisc-linux.org/source/checkedout/build-tools/disasm)</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><pre></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><pre></div></td></tr>
</table>Dellerhttps://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=3481&oldid=prevDeller: /* Introduction */2014-02-05T16:06:47Z<p><span dir="auto"><span class="autocomment">Introduction</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 16:06, 5 February 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 7:</td>
<td colspan="2" class="diff-lineno">Line 7:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>attempts to point out what is the minimal amount of information</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>attempts to point out what is the minimal amount of information</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that needs to be included in order for the kernel developers to</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that needs to be included in order for the kernel developers to</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>be able to try to track down the problem<del class="diffchange diffchange-inline">.<br> <br></del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>be able to try to track down the problem.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline">If you have never posted questions/bug reports to a mailing</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline">list before, you '''must read''' [[How-To Ask Smart Questions]] first</del>.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== The Basics ==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== The Basics ==</div></td></tr>
</table>Dellerhttps://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=3471&oldid=prevDeller: /* Introduction */2014-02-05T16:06:13Z<p><span dir="auto"><span class="autocomment">Introduction</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 16:06, 5 February 2014</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 4:</td>
<td colspan="2" class="diff-lineno">Line 4:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>We often get bug reports on the  </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>We often get bug reports on the  </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>[[parisc<del class="diffchange diffchange-inline">-</del>linux mailing list]] about problems people have with their kernels. This document</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>[[<ins class="diffchange diffchange-inline">Mailing_lists|</ins>parisc linux mailing list]] about problems people have with their kernels. This document</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>attempts to point out what is the minimal amount of information</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>attempts to point out what is the minimal amount of information</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that needs to be included in order for the kernel developers to</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that needs to be included in order for the kernel developers to</div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 10:</td>
<td colspan="2" class="diff-lineno">Line 10:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>If you have never posted questions/bug reports to a mailing</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>If you have never posted questions/bug reports to a mailing</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>list before, you '''must read''' [[How-To Ask Smart Questions]] first.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>list before, you '''must read''' [[How-To Ask Smart Questions]] first.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== The Basics ==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== The Basics ==</div></td></tr>
</table>Dellerhttps://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=1801&oldid=prevDeller: /* More advanced bug reports */2013-11-06T15:10:47Z<p><span dir="auto"><span class="autocomment">More advanced bug reports</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 15:10, 6 November 2013</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 80:</td>
<td colspan="2" class="diff-lineno">Line 80:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Let's look at a typical register dump:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Let's look at a typical register dump:</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><<del class="diffchange diffchange-inline">pre</del>></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><<ins class="diffchange diffchange-inline">code</ins>></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>Kernel Fault: '''Code=26''' regs=15fb07c0 (Addr=00000000)</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>Kernel Fault: '''Code=26''' regs=15fb07c0 (Addr=00000000)</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline">    </del>YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline">      </ins>YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>PSW: 00000000000001001111111100001111 Not tainted</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>PSW: 00000000000001001111111100001111 Not tainted</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r00-03  00000000 00000000 '''101f0814''' 102a7ce4</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r00-03  00000000 00000000 '''101f0814''' 102a7ce4</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r04-07  00000500 102a7ce4 00002000 10061c00</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r04-07  00000500 102a7ce4 00002000 10061c00</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r08-11  10362010 10029c60 00000400 1029e940</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r08-11  10362010 10029c60 00000400 1029e940</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r12-15  000000a0 00000140 00000040 00000000</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r12-15  000000a0 00000140 00000040 00000000</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r16-19  00005000 15fb04c8 15f4d000 00000013</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r16-19  00005000 15fb04c8 15f4d000 00000013</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r20-23  00000000 00000000 10029c60 00000001</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r20-23  00000000 00000000 10029c60 00000001</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r24-27  00000000 00080000 00000000 1027e010</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r24-27  00000000 00080000 00000000 1027e010</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>r28-31  00000000 00000400 15fb07c0 101f4264</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>r28-31  00000000 00000400 15fb07c0 101f4264</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>sr0-3  00000000 00000000 00000000 00000000</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>sr0-3  00000000 00000000 00000000 00000000</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>sr4-7  00000000 00000000 00000000 00000000</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>sr4-7  00000000 00000000 00000000 00000000</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>IASQ: 00000000 00000000 IAOQ: '''101f4290''' 101f4294</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>IASQ: 00000000 00000000 IAOQ: '''101f4290''' 101f4294</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  IIR: '''0ea01085'''    ISR: 00000000  IOR: 00000000</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  IIR: '''0ea01085'''    ISR: 00000000  IOR: 00000000</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  CPU:        0  CR30: 15fb0000 CR31: 102b7000</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  CPU:        0  CR30: 15fb0000 CR31: 102b7000</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  ORIG_R28: 00000000</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  ORIG_R28: 00000000</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></<ins class="diffchange diffchange-inline">code</ins>></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div></<del class="diffchange diffchange-inline">pre</del>></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 127:</td>
<td colspan="2" class="diff-lineno">Line 126:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>tool in parisc-linux cvs (build-tools module). Here, I will  </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>tool in parisc-linux cvs (build-tools module). Here, I will  </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>only describe the manual way.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>only describe the manual way.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Suppose you get an address 0x1014f818 for IAOQ. Your System.map</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Suppose you get an address 0x1014f818 for IAOQ. Your System.map</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>will contain entries like this:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>will contain entries like this:</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><<ins class="diffchange diffchange-inline">code</ins>></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>...</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><<del class="diffchange diffchange-inline">pre</del>></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>1014f510 t specific_send_sig_info</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>...</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>1014f678 t .L1157</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>1014f510 t specific_send_sig_info</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>1014f6b8 t .L1152</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>1014f678 t .L1157</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>1014f790 T force_sig_info</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>1014f6b8 t .L1152</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>1014f848 t specific_force_sig_info</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>1014f790 T force_sig_info</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>1014f8f8 T __broadcast_thread_group</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>1014f848 t specific_force_sig_info</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline"> </ins>...</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>1014f8f8 T __broadcast_thread_group</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></<ins class="diffchange diffchange-inline">code</ins>></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>...</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div></<del class="diffchange diffchange-inline">pre</del>></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div> </div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>You want to find the largest address that is smaller than the one you</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>You want to find the largest address that is smaller than the one you</div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 152:</td>
<td colspan="2" class="diff-lineno">Line 146:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>You should do this lookup for the IAOQ and GR02 addresses if</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>You should do this lookup for the IAOQ and GR02 addresses if</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>they are in kernel space.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>they are in kernel space.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>If the address is in userspace, and it belongs in the shared libs</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>If the address is in userspace, and it belongs in the shared libs</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>region, the output of 'ldd' on the offending program is also useful.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>region, the output of 'ldd' on the offending program is also useful.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Another item that is sometimes useful is the instruction pointed to</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Another item that is sometimes useful is the instruction pointed to</div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 162:</td>
<td colspan="2" class="diff-lineno">Line 154:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>to the symbolic instruction (unless you are Lamont :-) One way</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>to the symbolic instruction (unless you are Lamont :-) One way</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that I learned from Richard Hirst is shown below:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>that I learned from Richard Hirst is shown below:</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><pre></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><pre></div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 175:</td>
<td colspan="2" class="diff-lineno">Line 166:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>0x11c30 &lt;main+136&gt;:    ldw 0(sr0,r21),r5</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>0x11c30 &lt;main+136&gt;:    ldw 0(sr0,r21),r5</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>(gdb) quit</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>(gdb) quit</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div></pre></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div></pre></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>   </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>   </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>So, here, the instruction is a ldw from r21. In this particular</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>So, here, the instruction is a ldw from r21. In this particular</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>example, r21 is 0, so we have a null pointer dereference of some kind.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>example, r21 is 0, so we have a null pointer dereference of some kind.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>If the source/target or a load/store instruction is a non-zero register,</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>If the source/target or a load/store instruction is a non-zero register,</div></td></tr>
</table>Dellerhttps://parisc.wiki.kernel.org/index.php?title=How_to_report_a_parisc-linux_kernel_problem&diff=1511&oldid=prevDeller: How to report a parisc-linux kernel problem2013-11-05T17:11:22Z<p>How to report a parisc-linux kernel problem</p>
<p><b>New page</b></p><div>= HOW TO REPORT A PARISC-LINUX KERNEL PROBLEM =<br />
<br />
== Introduction ==<br />
<br />
We often get bug reports on the <br />
[[parisc-linux mailing list]] about problems people have with their kernels. This document<br />
attempts to point out what is the minimal amount of information<br />
that needs to be included in order for the kernel developers to<br />
be able to try to track down the problem.<br> <br><br />
If you have never posted questions/bug reports to a mailing<br />
list before, you '''must read''' [[How-To Ask Smart Questions]] first.<br />
<br />
<br />
<br />
== The Basics ==<br />
<br />
Information you should always include in a bug report are:<br />
<br />
* Version of the kernel you are running (output of the <code>'''uname -a'''</code> command)<br />
* What compiler and linker did you use to build the kernel? (gcc 3.0.4? 3.2? What version of binutils? Are you cross-compiling?)<br />
* What machine you are booting the kernel on? (712/80? B132L? C3000?)<br />
* Does it have a remote management card?<br />
* Are you trying to use serial console or graphics console?<br />
* What kernel command line is palo using?<br />
* Are you using a 32-bit or 64-bit kernel<br />
* Register dumps - Usually, when a parisc-linux kernel crashes (or encounters a problem), a register dump (and/or a stack dump -- especially in 2.6 kernels) will be displayed on the console, or logged to syslog. You should include this information in your bug report.<br />
* '''The System.map file that corresponds to the kernel you are booting''' - it's preferable if you can put it someplace and supply a URL for it. If not, please bzip the file before sending it to the list<br />
* Console output immediately preceding the crash or problem you observed<br />
* If you are not using a default config, the .config you used to build your kernel<br />
<br />
<br />
== HPMC ==<br />
<br />
A HPMC (High-Priority Machine Check) is triggered when the hardware<br />
detects an illegal operation. When a HPMC occurs, the kernel may not<br />
be able to print out a register dump. In this case, the firmware should<br />
have written a copy of the registers into NVRAM. On the next reboot<br />
of the machine, you can recover the saved HPMC data from the firmware<br />
prompt.<br />
<br />
The command <code>'''ser pim'''</code> at the firmware prompt will<br />
usually bring up the info needed. Capture the register dump of the HPMC<br />
output, together with any information reported about requestor/responder<br />
addresses, etc in your report. If you are booting a SMP kernel, <br />
remember to include the output for all the processors in your report.<br />
<br />
<br />
After you have captured the output, issue a <code>'''ser clearpim'''</code><br />
command to clear the saved data. This will ensure that you do not<br />
accidentally pick up stale data the next time around.<br />
<br />
<br />
== "Hung" kernels ==<br />
<br />
If a kernel appears "hung", you may be able to determine<br />
where it's stuck by using the TOC (Transfer of Control) feature of PA<br />
firmware. A TOC is usually triggered by a small button on the back of<br />
the machine. On systems with GSP, you can also do this by issuing the<br />
'TC' command at the GSP prompt. After a TOC is triggered, the machine<br />
should automatically reboot.<br />
<br />
Similar to HPMC data, the TOC data can be recovered from the firmware<br />
prompt. Enter 'ser pim' to display the saved data, and copy down<br />
the TOC section of the output in your report.<br />
<br />
<br />
'''Note:''' Once you've captured the output of HPMC or TOC, it may <br />
be useful to issue the command 'ser clearpim' to clear the saved data.<br />
This way, next time when you look at the output of 'ser pim' you can<br />
be sure you are not looking at stale data.<br />
<br />
<br />
== More advanced bug reports ==<br />
<br />
The following information, if available, will help with the<br />
debugging process. In addition to the information included<br />
in the "Basic" section above, you may also try to collect<br />
the following pieces of information.<br />
<br />
Let's look at a typical register dump:<br />
<br />
<pre><br />
Kernel Fault: '''Code=26''' regs=15fb07c0 (Addr=00000000)<br />
<br />
YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI<br />
PSW: 00000000000001001111111100001111 Not tainted<br />
r00-03 00000000 00000000 '''101f0814''' 102a7ce4<br />
r04-07 00000500 102a7ce4 00002000 10061c00<br />
r08-11 10362010 10029c60 00000400 1029e940<br />
r12-15 000000a0 00000140 00000040 00000000<br />
r16-19 00005000 15fb04c8 15f4d000 00000013<br />
r20-23 00000000 00000000 10029c60 00000001<br />
r24-27 00000000 00080000 00000000 1027e010<br />
r28-31 00000000 00000400 15fb07c0 101f4264<br />
sr0-3 00000000 00000000 00000000 00000000<br />
sr4-7 00000000 00000000 00000000 00000000<br />
<br />
IASQ: 00000000 00000000 IAOQ: '''101f4290''' 101f4294<br />
IIR: '''0ea01085''' ISR: 00000000 IOR: 00000000<br />
CPU: 0 CR30: 15fb0000 CR31: 102b7000<br />
ORIG_R28: 00000000<br />
<br />
</pre><br />
<br />
<br />
Several of these numbers are especially important:<br />
<br />
* The "code" at the beginning of the register dump indicates the type of "trap"<br />
* The r02 register is the "return pointer" - it indicates the calling function<br />
* The IAOQ contents specify the address of the instruction where the fault occured.<br />
* IIR is the faulting instruction<br />
* IOR, for a memory access, indicates the memory location being accessed<br />
<br />
<br />
For IAOQ and R02 addresses, it is helpful to understand<br />
the following:<br />
<br />
* Kernel text section addresses are of the form 0x'''1'''xxxxxxx<br />
* User text section addresses are usually low<br />
* Shared libraries are loaded at 0x'''4'''xxxxxxx<br />
* Stack addresses are at 0x'''f'''xxxxxxx<br />
* palo addresses are at 0x0'''6'''xxxxxx<br />
<br />
If the address you get is in the kernel section, you can find the<br />
function that address belongs to by looking at a System.map file.<br />
There are two ways to do this, either manually, or with the 'astk' <br />
tool in parisc-linux cvs (build-tools module). Here, I will <br />
only describe the manual way.<br />
<br />
<br />
Suppose you get an address 0x1014f818 for IAOQ. Your System.map<br />
will contain entries like this:<br />
<br />
<br />
<pre><br />
...<br />
1014f510 t specific_send_sig_info<br />
1014f678 t .L1157<br />
1014f6b8 t .L1152<br />
1014f790 T force_sig_info<br />
1014f848 t specific_force_sig_info<br />
1014f8f8 T __broadcast_thread_group<br />
...<br />
<br />
</pre><br />
<br />
<br />
You want to find the largest address that is smaller than the one you<br />
are looking for, ignoring .Lxxxx entries. In this case, the<br />
function involved is force_sig_info<br />
<br />
You should do this lookup for the IAOQ and GR02 addresses if<br />
they are in kernel space.<br />
<br />
<br />
If the address is in userspace, and it belongs in the shared libs<br />
region, the output of 'ldd' on the offending program is also useful.<br />
<br />
<br />
Another item that is sometimes useful is the instruction pointed to<br />
by IIR. Unfortunately, there is no easy way to decode the number<br />
to the symbolic instruction (unless you are Lamont :-) One way<br />
that I learned from Richard Hirst is shown below:<br />
<br />
<br />
<pre><br />
legolas[12:00] ~% gdb /bin/ls # most any binary would do....<br />
(gdb) break main<br />
Breakpoint 1 at 0x11c30<br />
(gdb) run<br />
Starting program: /bin/ls<br />
Breakpoint 1, 0x00011c30 in main ()<br />
(gdb) set *(int *)0x11c30 = 0x0ea01085 # we store the instruction we want to decode, 0ea01085 in this example, at the beginning of main<br />
(gdb) x/i 0x11c30 # and then ask gdb to decode it for us....<br />
0x11c30 &lt;main+136&gt;: ldw 0(sr0,r21),r5<br />
(gdb) quit<br />
<br />
</pre><br />
<br />
So, here, the instruction is a ldw from r21. In this particular<br />
example, r21 is 0, so we have a null pointer dereference of some kind.<br />
<br />
<br />
If the source/target or a load/store instruction is a non-zero register,<br />
then you should see if that address is again a kernel address. If so, you<br />
can look it up in System.map using the procedure above as well. This<br />
is particularly useful to determine which spinlock is being contended, etc<br />
<br />
''(originally written by Randolph Chung)''</div>Deller