[PATCH] Fix weird PCI bus numbers with pci_linkX

John Baldwin jhb at freebsd.org
Mon Nov 21 13:41:36 PST 2005


On Monday 21 November 2005 04:08 pm, O. Hartmann wrote:
> John Baldwin wrote:
> >On Thursday 17 November 2005 05:50 pm, John Baldwin wrote:
> >>On Thursday 17 November 2005 05:32 pm, Nate Lawson wrote:
> >>>John Baldwin wrote:
> >>>>I think I figured out why some people get messages like:
> >>>>
> >>>>pci_linkX: BIOS IRQ 11 for -17777216.6.INTA is invalid
> >>>>
> >>>>I was not reading the bus number from the bridge device correctly (the
> >>>>normal __BUS_ACCESSOR() macros assume that the passed in argument is a
> >>>>child device, but at the time I'm reading the bus there is no child
> >>>>device, so I was passing in the pcib device, the parent of the pcib
> >>>>device probably returned an error, and the bus variable ended up being
> >>>>some random stack garbage). The attached patch (also at URL) should fix
> >>>>it I think.
> >>>>
> >>>>http://www.FreeBSD.org/~jhb/patches/acpi_pci_link.patch
> >>>
> >>>Excellent, patch looks good to me except the printf/panic message could
> >>>be improved.
> >>
> >>I wanna see if it triggers first.
> >
> >So did anyone test this?  I can't commit it unless someone tests it.
>
> What to do?
>
> Attached you will find two dmesg outputs. dmesg.old is done before the
> pacth was included, dmesg.new is the one after the patch has been
> applied. There seems to be a difference when my eyes hit the part where
> the negative IRQ statemets are, so that seems to be only the half of the
> way. What next?
>
> Hardware: ASUS A8N-SLI Deluxe, OS FreeBSD 6.0-STABLE, most recent
> cvsupdated this morning 10 o'clock MET.

There is quite a huge difference.

Old:

pci_link26: BIOS IRQ 11 for -2145794824.1.INTA is invalid
pci_link21: BIOS IRQ 5 for -2145794824.2.INTA is invalid
pci_link27: BIOS IRQ 3 for -2145794824.2.INTB is invalid
pci_link23: BIOS IRQ 11 for -2145794824.10.INTA is invalid
pci_link24: BIOS IRQ 3 for -2145794824.4.INTA is invalid
pci_link29: BIOS IRQ 11 for -2145794824.7.INTA is invalid
pci_link30: BIOS IRQ 5 for -2145794824.8.INTA is invalid
...
pci_link17: BIOS IRQ 21 for 0.7.INTA is invalid
pci_link18: BIOS IRQ 22 for 0.8.INTA is invalid
pci_link19: BIOS IRQ 23 for 0.10.INTA is invalid

New:

pci_link26: BIOS IRQ 11 for 0.1.INTA is invalid
pci_link21: BIOS IRQ 5 for 0.2.INTA is invalid
pci_link27: BIOS IRQ 3 for 0.2.INTB is invalid
pci_link23: BIOS IRQ 11 for 0.10.INTA is invalid
pci_link24: BIOS IRQ 3 for 0.4.INTA is invalid
pci_link29: BIOS IRQ 11 for 0.7.INTA is invalid
pci_link30: BIOS IRQ 5 for 0.8.INTA is invalid
...
pci_link16: BIOS IRQ 3 for 5.11.INTA is invalid

This is much better.  The bus number look sane, and now it is no longer 
complaining about 17, 18, and 19 having proper settings.  The complaints are 
normal given that you have APIC enabled, so APIC is going to use different 
IRQs than the BIOS which doesn't use APIC.

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the freebsd-acpi mailing list