Re: Interrupt storm

From: Nate Lawson <nate_at_root.org>
Date: Tue, 12 Apr 2005 10:55:36 -0700
Antoine Brodin wrote:
> John Baldwin <jhb_at_FreeBSD.org> wrote:
> 
>>On Saturday 09 April 2005 05:57 am, Antoine Brodin wrote:
>>
>>>John Baldwin <jhb_at_FreeBSD.org> wrote:
>>>
>>>>I think your other link devices are meant to be used in APIC mode (note
>>>>their names start with 'A') and thus I think they are aliases for the
>>>>other link devices.  So when I turn off the alias, I turn off the
>>>>non-APIC mode one as well.  Working BIOSen handle this by having the same
>>>>link device change its behavior (different _PRS return values) depending
>>>>on the PIC mode.  It's not easy to determine if a link is just not used
>>>>(for example, if no card is plugged into a slot with a dedicated link) or
>>>>if it's an alias.  I think having two ACPI devices alias to the same
>>>>hardware is a bug in the BIOS though.  Perhaps your BIOS vendor can be
>>>>convinced to fix this.  Can you see if Linux has the same problem btw?
>>>
>>>I've just sent a technical support request to ASUS. I'll let you know
>>>when they reply.
>>>Linux doesn't have the same problem: I tested with a knoppix live cd
>>>yesterday.
>>>dmesg: http://bsd.miki.eu.org/~antoine/knoppix36.dmesg , but it doesn't
>>>look very helpful.
>>
>>Actually, it is.  What Linux is doing is probing all the link devices before 
>>it probes any PCI devices, so all the _DIS calls happen before any interrupts 
>>are routed.  I believe Nate knows how to get FreeBSD to do something similar 
>>via a hack.
> 
> 
> There's this hack that works here:
> 
> %%%
> Index: acpi.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/acpica/acpi.c,v
> retrieving revision 1.210
> diff -u -p -r1.210 acpi.c
> --- acpi.c      31 Mar 2005 19:07:26 -0000      1.210
> +++ acpi.c      9 Apr 2005 09:50:54 -0000
> _at__at_ -1503,6 +1503,9 _at__at_ acpi_probe_order(ACPI_HANDLE handle, int
>      } else if (acpi_MatchHid(handle, "PNP0C09")) {
>  	*order = 2;
>  	ret = 1;
> +    } else if (acpi_MatchHid(handle, "PNP0C0F")) {
> +	*order = 3;
> +	ret = 1;
>      }
>  
>      return (ret);
> %%%

That is exactly the right one and we should have been doing this already.

-- 
Nate
Received on Tue Apr 12 2005 - 15:57:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:32 UTC