[coreboot] H8QME-2+ IRQ assignment and AMD 8132

Knut Kujat knuku at gap.upv.es
Fri Jan 8 16:55:17 CET 2010


Hello,

over this week I've tried to do a proper IRQ assignment on the H8QME-2+
I've got here. So opened mp_tables.c and started changing the irq
routing values with those I got form the board booting with a factory
bios. Then I started giving the devices the irq they have when boot with
factory bios and it booted without any problems except for two things
first of all the two NICs still have irq 0 and thats because they are
not pending on the mcp55 as they are on the "donator" board but on a AMD
8132 tunnel devices that is hanging on a different node:

socketF(node3) ----------- socketF(node2)
   |                                        |    
socketF(node1) ----------- socketF(node0)
   |                                        |
   |ht                                     |ht
   |                                        |
AMD8132                    MCP55
   |--  LAN                            |
   |-- SCSI                           |-- SATA
                                            |-- ATI ES 1000
                                            |-- USB
                                            |-- PCI
                                            | lpc
                                         SIO
I started adding the AMD8132 to the get_bus_conf.c code, by adding I
mean stealing code from other boards pasting it to get_bus_conf and
trying to make it work ;). So the problem there is that coreboot won't
boot with the new code but not because the code is incorrect because it
wasn't even executed, I know that because coreboot soft resets in middle
of cpu initialization. I already increased Stack size up to 0x10000 more
makes the boot sequence fail.

My second problem is the, irq_tables.c code I tried to customize for
this board. I first tried the handy tool that comes with coreboot that
auto-generates the irq_tables.c file but it doesn't compile with my
board but I at least was able to use the information to modify the
already existing irq_tables.c. So before doing changes the dump_irq
output look like that:

Interrupt routing table found at address 0xf55bb:
  Version 106.117, size 0x8366
  Interrupt router is device 3d:17.4
  PCI exclusive interrupt mask: 0x0fde [1,2,3,4,6,7,8,9,10,11]
  Compatible router: vendor 0x0000 device 0x6075

Device d2:00.2 (slot 106):
  INTA: link 0x54, irq mask 0x0005 [0,2]
  INTB: link 0x40, irq mask 0xc839 [0,3,4,5,11,14,15]
  INTC: link 0x72, irq mask 0x84f7 [0,1,2,4,5,6,7,10,15]
  INTD: link 0xd2, irq mask 0x4275 [0,2,4,5,6,9,14]

Device 83:19.2 (slot 195):
  INTA: link 0xff, irq mask 0x74b8 [3,4,5,7,10,12,13,14]
  INTB: link 0x74, irq mask 0x000f [0,1,2,3]
  INTC: link 0xe8, irq mask 0x9f77 [0,1,2,4,5,6,8,9,10,11,12,15]
  INTD: link 0xff, irq mask 0x89ff [0,1,2,3,4,5,6,7,8,11,15]
                                     ....
Interrupt router at 3d:17.4:
Could not read router info from /proc/bus/pci/3d/17.4.

and after compiling with the new irq_tables.c I've got the exact same
output! So no changes were applied, I cleaned everything before
compiling so no doubt I compiled the correct file. So why is it still
the same? (I attached a dump_irq output from the board with factory bios).

And last but not least, at linux bootup it complains to find only 2 cpus
but 16 cores later doing a lspci I can see all 4 cpus (18.0, 19,0 1a.0,
1b.0) and Linux only recognizes 8GB of ram but there are 16GB installed!

Thanks in advanced and have a nice weekend,
Knut Kujat.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: supermicroIRQ
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20100108/c0f8a6b5/attachment.ksh>


More information about the coreboot mailing list