lkml.org 
[lkml]   [2001]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: IRQ Routing Problem on ALi Chipset Laptop (HP Pavilion N5425)
    Hi!

    > > Hey, this gross hack fixed USB on HP OmniBook xe3. Good! (Perhaps you
    > > know what interrupt is right for maestro3, also on omnibook? ;-).
    >
    > On my Pavilion (and the other 5400's as far as I can tell), maestro's on
    > irq 5. Wanna send me a "dump_pirq" and a "lspci -vvvxxx"? Could you try
    > the patch below (inspired by/stolen from Kai Germaschewski)? Also, the
    > newest acpi patch will print out the acpi irq routing table - might have
    > your info. You can tell if the patch below had any effect because it
    > will say it ASSIGNED IRQ XX instead of FOUND.

    lspci attached to another mail.

    This patch makes ohci work for me, but maestro is still broken.

    Pavel
    > The "honor the irq mask" approach (works on my machine):
    > --- /home/cbell/linux-2.4/arch/i386/kernel/pci-irq.c Fri Dec 7 01:51:41 2001
    > +++ /home/cbell/linux-2.4-test/arch/i386/kernel/pci-irq.c Sat Dec 8 21:04:37 2001
    > @@ -581,6 +581,7 @@
    > * reported by the device if possible.
    > */
    > newirq = dev->irq;
    > + if (!((1 << newirq) & mask)) newirq = 0;
    > if (!newirq && assign) {
    > for (i = 0; i < 16; i++) {
    > if (!(mask & (1 << i)))
    > @@ -599,7 +600,7 @@
    > irq = pirq & 0xf;
    > DBG(" -> hardcoded IRQ %d\n", irq);
    > msg = "Hardcoded";
    > - } else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq))) {
    > + } else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq) && ((1 << irq) & mask))) {
    > DBG(" -> got IRQ %d\n", irq);
    > msg = "Found";
    > } else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
    > @@ -633,7 +634,7 @@
    > continue;
    > if (info->irq[pin].link == pirq) {
    > /* We refuse to override the dev->irq information. Give a warning! */
    > - if (dev2->irq && dev2->irq != irq) {
    > + if (dev2->irq && dev2->irq != irq && ((1 << dev2->irq) & mask)) {
    > printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
    > dev2->slot_name, dev2->irq, irq);
    > continue;

    --
    "I do not steal MS software. It is not worth it."
    -- Pavel Kankovsky
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:14    [W:0.030 / U:119.944 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site