ACPI errors on amd64 (sempron)

Jung-uk Kim jkim at FreeBSD.org
Fri Oct 28 09:31:59 PDT 2005


On Friday 28 October 2005 09:58 am, John Baldwin wrote:
> On Thursday 27 October 2005 08:56 pm, Nate Lawson wrote:
> > Jung-uk Kim wrote:
> > > On Thursday 27 October 2005 08:08 pm, Nate Lawson wrote:

>> I disagree.  It's very clear what the alignment requirements are on
>> amd64 and that acpi-ca is being too strict, harming an actual
>> implementation.
>
> I think it only shuts up a warning, does it actually change the
> behavior? 

That was exactly my thought. ;-)

> > > In fact, I have seen somebody else had similar problem:
> > >
> > > http://bsdforum.or.kr/viewtopic.php?p=5414#5414
> > >
> > > It's Korean BSD User Forum but you may be able to read this:
> > >
> > > pci_link26: BIOS IRQ 10 for -2145771032.1.INTA is invalid
> > > pci_link21: BIOS IRQ 11 for -2145771032.2.INTA is invalid
> > > pci_link27: BIOS IRQ 3 for -2145771032.2.INTB is invalid
> > > pci_link23: BIOS IRQ 10 for -2145771032.10.INTA is invalid
> > > pci_link24: BIOS IRQ 11 for -2145771032.4.INTA is invalid
> > > pci_link29: BIOS IRQ 11 for -2145771032.7.INTA is invalid
> > > pci_link30: BIOS IRQ 10 for -2145771032.8.INTA is invalid
> >
> > Yes, I agree that this alone doesn't fix it.  This looks to me
> > like the pci_link code is pointing the interrupt source at the
> > wrong part of the resource descriptor.  Perhaps it is not
> > incrementing the pointer correctly for 64-bit arches.
> >
> >From the actual code:
>
> 	/* Validate the BIOS IRQ. */
> 	if (!link_valid_irq(link, bios_irq)) {
> 		device_printf(dev, "BIOS IRQ %u for %d.%d.INT%c is invalid\n",
> 		    bios_irq, pcib_get_bus(pcib), slot, pin + 'A');
>
> Thus, the weird value is being retuned by pcib_get_bus(), it's not
> coming out of ACPI at all.  ACPI dosen't provide bus numbers, just
> the slot and pin, we have to extract the bus number from the ACPI
> device that has a _PRT object. what's really odd is that he is even
> getting valid-looking IRQs, since we use pcib_get_bus() as the bus
> number for configuration transactions.  It's probably getting
> truncated down to the low byte at some point and thus reading the
> wrong bus, hence getting invalid IRQs I guess.  The real question
> here is why pcib_get_bus() is broken on this bridge.

Please note that the message I posted is not from the same chipset, i. 
e., nForce4 chipset.  The only common thing here is Athlon64/Sempron 
with Award BIOS.  Maybe the BIOS is culprit here?  Shrug...

Jung-uk Kim


More information about the freebsd-acpi mailing list