<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Radeon: evergreen Atombios in loop during initialization on ppc64"
href="https://bugs.freedesktop.org/show_bug.cgi?id=59982#c8">Comment # 8</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Radeon: evergreen Atombios in loop during initialization on ppc64"
href="https://bugs.freedesktop.org/show_bug.cgi?id=59982">bug 59982</a>
from <span class="vcard"><a class="email" href="mailto:glisse@freedesktop.org" title="Jerome Glisse <glisse@freedesktop.org>"> <span class="fn">Jerome Glisse</span></a>
</span></b>
<pre>Here is how we try to figure out atombios stuck. We use the atombios disasm :
git://people.freedesktop.org/~mhopf/AtomDis
To produce a readable file ./atomdis bios.rom > bios.txt
Then when you get a message such as :
*ERROR* atombios stuck executing C898 (len 62, WS 0, PS 0) @ 0xC8B4
It means it's stuck executing function that is at offset 0xc898 (look for c898
in your disasm output it's EnableCRTC. Inside that atombios function it's stuck
in a loop. 0xC8B4 is the offset of the instruction at which the loop was
interrupted (from one run to the other this offset might point to a different
instruction in the same loop).
So when you look at EnableCRTC it's stuck executing 0xC8B4 - 0xC898 = 0x1c
which is :
001c: 4aa59c1b01 TEST reg[1b9c] [.X..] <- 01
0021: 491c00 JUMP_NotEqual 001c
So test here test that register (0x1b9c << 2) ie register 0x6e70 as value of :
0x..01.... or if you prefer : (READREG(0x6e70) & 0x00ff0000) == 0x00010000
Lucas if you have any more atombios stuck don't hesitate to add them here.
To find the register meaning you can grep the various header files of
drivers/gpu/drm/radeon/ mostly evergreen one and modesetting one.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>