Interrupt Storms on irq:11 with Tecra A4

John Baldwin jhb at freebsd.org
Wed Aug 2 15:02:02 UTC 2006


On Wednesday 02 August 2006 01:56, Yousef Raffah wrote:
>  Updating to (7.0-CURRENT #1: Mon Jul 17 20:06:47 AST 2006) has a working
>  acpi on my laptop but the interrupt storm is still there. I have included
>  below a verbose dmesg with acpi enabled as per your request. I would really 
>  appreciate any help you can offer :)  
>  
>  pci_link6: Links after initial probe:
>  Index  IRQ  Rtd  Ref  IRQs
>      0   11   N     0  6
>  pci_link6: Links after initial validation:
>  Index  IRQ  Rtd  Ref  IRQs
>      0  255   N     0  6
>  pci_link6: Links after disable:
>  Index  IRQ  Rtd  Ref  IRQs
>      0  255   N     0  6
>  pci_link7: Links after initial probe:
>  Index  IRQ  Rtd  Ref  IRQs
>      0   11   N     0  5 10
>  pci_link7: Links after initial validation:
>  Index  IRQ  Rtd  Ref  IRQs
>      0  255   N     0  5 10
>  pci_link7: Links after disable:
>  Index  IRQ  Rtd  Ref  IRQs
>      0  255   N     0  5 10

Well, these two appear to be your problem due to your BIOS having buggy ASL.  
You can work around it, but you'll need to figure out the names of your link 
devices first.  'devinfo -v' with ACPI enabled can help with that.  For 
example, on my laptop:

% devinfo -v | grep 'pci_link[67]'
    pci_link6 pnpinfo _HID=PNP0C0F _UID=106 at handle=\_SB_.C002.C0F2
    pci_link7 pnpinfo _HID=PNP0C0F _UID=107 at handle=\_SB_.C002.C0F3

pci_link6 is called C0F2, and pci_link7 is called C0F3.  You'll use these 
names to override the IRQ for the link device by setting the following 
variables in the loader:

hw.pci.link.C0F2.irq=11
hw.pci.link.C0F3.irq=11

(You'll have to replace C0F2 and C0F3 with the names for your link devices.  
Probably LNKF and LNKG.)

You might also need this patch (but try the tunables above without the patch 
first to be sure):

Index: dev/acpica/acpi_pci_link.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v
retrieving revision 1.53
diff -u -r1.53 acpi_pci_link.c
--- dev/acpica/acpi_pci_link.c	6 Jan 2006 16:14:32 -0000	1.53
+++ dev/acpica/acpi_pci_link.c	2 Aug 2006 14:27:09 -0000
@@ -941,18 +941,16 @@
 	KASSERT(!PCI_INTERRUPT_VALID(link->l_irq),
 	    ("%s: link already has an IRQ", __func__));
 
-	/* Check for a tunable override and use it if it is valid. */
+	/* Check for a tunable override. */
 	if (ACPI_SUCCESS(acpi_short_name(acpi_get_handle(dev), link_name,
 	    sizeof(link_name)))) {
 		snprintf(tunable_buffer, sizeof(tunable_buffer),
 		    "hw.pci.link.%s.%d.irq", link_name, link->l_res_index);
-		if (getenv_int(tunable_buffer, &i) &&
-		    PCI_INTERRUPT_VALID(i) && link_valid_irq(link, i))
+		if (getenv_int(tunable_buffer, &i) && PCI_INTERRUPT_VALID(i))
 			return (i);
 		snprintf(tunable_buffer, sizeof(tunable_buffer),
 		    "hw.pci.link.%s.irq", link_name);
-		if (getenv_int(tunable_buffer, &i) &&
-		    PCI_INTERRUPT_VALID(i) && link_valid_irq(link, i))
+		if (getenv_int(tunable_buffer, &i) && PCI_INTERRUPT_VALID(i))
 			return (i);
 	}
 

-- 
John Baldwin


More information about the freebsd-mobile mailing list