Date: Fri, 4 Aug 2006 11:15:08 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-mobile@freebsd.org, yraffah@savola.com Subject: Re: Interrupt Storms on irq:11 with Tecra A4 Message-ID: <200608041115.09320.jhb@freebsd.org> In-Reply-To: <44D24E6C.9050502@savola.com> References: <1152019643.704.42.camel@redevil.savola.com> <200608031114.51389.jhb@freebsd.org> <44D24E6C.9050502@savola.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 03 August 2006 15:28, Yousef Raffah wrote: > John Baldwin wrote: > > On Thursday 03 August 2006 03:47, Yousef Raffah wrote: > > > >> John Baldwin wrote: > >> > >>> On Wednesday 02 August 2006 01:56, Yousef Raffah wrote: > >>> > >>> 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 > >>> > >>> > >>> > >> Here is my devinfo > >> devinfo -v | grep 'pci_link[67]' > >> pci_link6 pnpinfo _HID=PNP0C0F _UID=7 at handle=\_SB_.PCI0.LPCB.LNKG > >> pci_link7 pnpinfo _HID=PNP0C0F _UID=8 at handle=\_SB_.PCI0.LPCB.LNKH > >> > >> So I can see that pci_link6 is named LNKG and pci_link7 is LNKH > >> > > > > Yep. > > > > > >>> 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.) > >>> > >> Based on that, I should have the following in my /boot/loader.conf? > >> hw.pci.link.LNKG.irq=11 > >> hw.pci.link.LNKH.irq=11 > >> > > > > Yep. > > > > > >> Let us try the loader file first and see if we need the patch after that. > >> > > > > Ok. I'm betting you will need the patch, but just want to make sure first. > > > > > Looks like I do need the patch as the interrupt storm is still there. > Now how do I do that? > What should I do with this code? I mean where to put it? is there a > special way of > patch file < your_patch ? Just: cd /usr/src/sys patch < /path/to/patch_file and then build a new kernel. > 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); > } > > > > > > > -- > > Sincerely, > > Yousef Adnan Raffah > Security Officer > The Savola Group > > ------------------- > Aren't you using Firefox? Get it at http://www.getfirefox.com > > > -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608041115.09320.jhb>