[coreboot] unexpected exception errors loading vga rom

Joseph Smith joe at settoplinux.org
Thu Apr 30 22:11:00 CEST 2009



On Thu, 30 Apr 2009 10:10:04 -0700, ron minnich <rminnich at gmail.com> wrote:
> Someone more knowledgeable than I pointed that I got this wrong. Sorry.
> 
> On Thu, Apr 30, 2009 at 7:55 AM, ron minnich <rminnich at gmail.com> wrote:
> 
>> A device itself has only one wire -- there is one physical wire for
>> that chip or device. It is called the interrupt line.
> 
> A device can actually connect to up to all four wires. This is way
> more common than I realized -- I have not paid attention lately.
> 
> The device can be wired such that different functions on the device
> are wired to different physical interrupt lines that are then wired
> to the bus/irq router. example on the m57sli:
> [rminnich at amd64 ~]$ setpci -s 0:5.2 3d.b
> 03
> [rminnich at amd64 ~]$ setpci -s 0:5.1 3d.b
> 02
> [rminnich at amd64 ~]$ setpci -s 0:5.0 3d.b
> 01
> 
> But the spec I referred you to does not list functions in the PIRQ
> table, only devices. You would use the value of the 3d register to
> then map from the table
> to the actual line which these are wired to. You can find out what IRQ
> it got in 3c.b
> [rminnich at amd64 ~]$ setpci -s 0:5.2 3c.b
> 0f
> [rminnich at amd64 ~]$ setpci -s 0:5.1 3c.b
> 0b
> [rminnich at amd64 ~]$ setpci -s 0:5.0 3c.b
> 0a
> [rminnich at amd64 ~]$
> 
> Functions have interrupts, but the only interrupts listed in a PIRQ
> are for the device.
> 
> Sorry for sowing confusion.
> 
Right. So in my example:
                       |- USB #1        |- USB #2      |- USB #3      
|-EHCI
{0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8},
{0x6b, 0x01ef8}}, 0x0, 0x0}, 

is the same as:

{0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x00, 0x0000}, {0x00, 0x0000},
{0x00, 0x00000}}, 0x0, 0x0}, /* [A] USB UHCI 1 */ 
{0x00,(0x1d<<3)|0x1, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x00, 0x0000},
{0x00, 0x00000}}, 0x0, 0x0}, /* [B] USB UHCI 2 */ 
{0x00,(0x1d<<3)|0x2, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8},
{0x00, 0x00000}}, 0x0, 0x0}, /* [C] USB UHCI 3 */ 
{0x00,(0x1d<<3)|0x7, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8},
{0x6b, 0x01ef8}}, 0x0, 0x0}, /* [D] EHCI */

PIRQA(0X60 0x03 
PIRQB(0X61) 0x05 
PIRQC(0X62) 0x06 
PIRQD(0X63) 0x07 
PIRQE(0X68) 0x09 
PIRQF(0X69) 0x0A 
PIRQG(0X6A) 0x0B 
PIRQH(0X6B) 0x0C 

Also in Linux dmesg it shows what Int the device is connected to on the
interrupt router:

[A] USB UHCI 1
[B] USB UHCI 2
[C] USB UHCI 3
[D] EHCI

3 of the four devices have multiple INT lines running through them so a
physical map would look like the attached file.

-- 
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Routing_full.bmp
Type: image/bmp
Size: 105318 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20090430/0a87588a/attachment.bmp>


More information about the coreboot mailing list