Date: Wed, 2 Aug 2006 10:28:09 -0400 From: John Baldwin <jhb@freebsd.org> To: yraffah@savola.com Cc: freebsd-mobile@freebsd.org Subject: Re: Interrupt Storms on irq:11 with Tecra A4 Message-ID: <200608021028.09765.jhb@freebsd.org> In-Reply-To: <44D03E9F.1040409@savola.com> References: <1152019643.704.42.camel@redevil.savola.com> <1152358151.679.27.camel@redevil.savola.com> <44D03E9F.1040409@savola.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 rea= lly=20 > appreciate any help you can offer :) =20 > =20 > pci_link6: Links after initial probe: > Index=A0 IRQ=A0 Rtd=A0 Ref=A0 IRQs > =A0=A0=A0 0=A0=A0 11=A0=A0 N=A0=A0=A0=A0 0=A0 6 > pci_link6: Links after initial validation: > Index=A0 IRQ=A0 Rtd=A0 Ref=A0 IRQs > =A0=A0=A0 0=A0 255=A0=A0 N=A0=A0=A0=A0 0=A0 6 > pci_link6: Links after disable: > Index=A0 IRQ=A0 Rtd=A0 Ref=A0 IRQs > =A0=A0=A0 0=A0 255=A0=A0 N=A0=A0=A0=A0 0=A0 6 > pci_link7: Links after initial probe: > Index=A0 IRQ=A0 Rtd=A0 Ref=A0 IRQs > =A0=A0=A0 0=A0=A0 11=A0=A0 N=A0=A0=A0=A0 0=A0 5 10 > pci_link7: Links after initial validation: > Index=A0 IRQ=A0 Rtd=A0 Ref=A0 IRQs > =A0=A0=A0 0=A0 255=A0=A0 N=A0=A0=A0=A0 0=A0 5 10 > pci_link7: Links after disable: > Index=A0 IRQ=A0 Rtd=A0 Ref=A0 IRQs > =A0=A0=A0 0=A0 255=A0=A0 N=A0=A0=A0=A0 0=A0 5 10 Well, these two appear to be your problem due to your BIOS having buggy ASL= =2E =20 You can work around it, but you'll need to figure out the names of your lin= k=20 devices first. 'devinfo -v' with ACPI enabled can help with that. For=20 example, on my laptop: % devinfo -v | grep 'pci_link[67]' pci_link6 pnpinfo _HID=3DPNP0C0F _UID=3D106 at handle=3D\_SB_.C002.C0F2 pci_link7 pnpinfo _HID=3DPNP0C0F _UID=3D107 at handle=3D\_SB_.C002.C0F3 pci_link6 is called C0F2, and pci_link7 is called C0F3. You'll use these=20 names to override the IRQ for the link device by setting the following=20 variables in the loader: hw.pci.link.C0F2.irq=3D11 hw.pci.link.C0F3.irq=3D11 (You'll have to replace C0F2 and C0F3 with the names for your link devices.= =20 Probably LNKF and LNKG.) You might also need this patch (but try the tunables above without the patc= h=20 first to be sure): Index: dev/acpica/acpi_pci_link.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 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 =2D-- 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__)); =20 =2D /* 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); =2D if (getenv_int(tunable_buffer, &i) && =2D 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); =2D if (getenv_int(tunable_buffer, &i) && =2D PCI_INTERRUPT_VALID(i) && link_valid_irq(link, i)) + if (getenv_int(tunable_buffer, &i) && PCI_INTERRUPT_VALID(i)) return (i); } =20 =2D-=20 John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608021028.09765.jhb>