[LinuxBIOS] Kernel lock-ups??

Rudolf Marek r.marek at assembler.cz
Thu Oct 18 23:22:02 CEST 2007


Doing ACPI only IRQ routing is quite easy. I'm not going to describe whole ACPI 
table stuff just the part you need for the routing:


Check the dsdt.asl file in patch above.
		/* top PCI device */
		Device (PCI0)
			Name (_HID, EisaId ("PNP0A03"))
			Name (_ADR, 0x00)
			Name (_UID, 0x00)
			Name (_BBN, 0x00)
			/* PCI Routing Table */
			Name (_PRT, Package () {

This is where actual routing table for SB starts:

	                    Package (0x04) { 0x000BFFFF, 0x00, 0x00, 0x10 },


DDDD is PCI DEV, FFFF is function, LNK is PCI link - so LNKA B etc...
Next parameter is 00 if you do not support legacy PIC routing at all.

Last parameter is global interrupt NR.

//slot 0xB
         	            Package (0x04) { 0x000BFFFF, 0x01, 0x00, 0x11 },
                 	    Package (0x04) { 0x000BFFFF, 0x02, 0x00, 0x12 },
	                    Package (0x04) { 0x000BFFFF, 0x03, 0x00, 0x13 },
         	            Package (0x04) { 0x000CFFFF, 0x00, 0x00, 0x11 }, //Slot 0xC
                 	    Package (0x04) { 0x000CFFFF, 0x01, 0x00, 0x12 },
                 	    Package (0x04) { 0x000CFFFF, 0x02, 0x00, 0x13 },
			    Package (0x04) { 0x000CFFFF, 0x03, 0x00, 0x10 },
         	            Package (0x04) { 0x000DFFFF, 0x00, 0x00, 0x12 }, //Slot 0xD
                 	    Package (0x04) { 0x000DFFFF, 0x01, 0x00, 0x13 },
                 	    Package (0x04) { 0x000DFFFF, 0x02, 0x00, 0x10 },
			    Package (0x04) { 0x000DFFFF, 0x03, 0x00, 0x11 },
         	            Package (0x04) { 0x000F0000, 0x01, 0x00, 0x14 }, //0xf 
                 	    Package (0x04) { 0x000F0001, 0x00, 0x00, 0x14 },

So for example SATA is routed through LNKA, and it is device 0f.1.

//0xf NAtive IDE IRQ 20
         	            Package (0x04) { 0x0010FFFF, 0x00, 0x00, 0x15 }, //USB routing
                 	    Package (0x04) { 0x0010FFFF, 0x01, 0x00, 0x15 },
                 	    Package (0x04) { 0x0010FFFF, 0x02, 0x00, 0x15 },
			    Package (0x04) { 0x0010FFFF, 0x03, 0x00, 0x15 },
			    Package (0x04) { 0x0011FFFF, 0x02, 0x00, 0x16 }, //AC97 MC97
         	            Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x1B }, //PCIE16 
bridge IRQ27
                 	    Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x1B },
                 	    Package (0x04) { 0x0002FFFF, 0x02, 0x00, 0x1B },
			    Package (0x04) { 0x0002FFFF, 0x03, 0x00, 0x1B },
         	            Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x1F }, //PCIE 
bridge IRQ31
                 	    Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x23 }, //IRQ36
                 	    Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x27 }, //IRQ39
			    Package (0x04) { 0x0003FFFF, 0x03, 0x00, 0x2B } //IRQ43

		Device (PEGG)
			Name (_ADR, 0x00020000)
			Name (_UID, 0x00)
			Name (_BBN, 0x02)

Other devices may have own PRT tables.
			Name (_PRT, Package () {
	                    Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x18 }, //PCIE 
         	            Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x19 },
                 	    Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x1A },
	                    Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x1B },
		} //end of PCIEG

Hope it helps,


More information about the coreboot mailing list