[lkml]   [2000]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread

    > To fix this problem, I have deleted a conditional in
    > pcibios_enable_irq, so that it will route the IRQ, even if it
    > thinks the work has already been done. Now, USB and my PCMCIA
    > flash cards work in that notebook computer again.

    Unfortunately, your fix is wrong -- it makes Linux ignore all the IRQ
    settings the user has set up in the BIOS and I also guess there are
    machines where the IRQ information in the INTERRUPT_LINE register
    is correct, but the BIOS tables/functions are inaccurate.

    First of all, please send me the 'lspci -vvx' output for the USB
    device and also try booting the kernel with a "pci=autoirq" option
    which should have exactly the same effect as your patch.

    > I do not have that solid of an understanding of PCI
    > initialization in Linux. I am still rather confused about what
    > routines are supposed to set up an interrupt if one is needed
    > and has not yet been routed for the device and which ones are supposed
    > to punt in case.

    The IRQ assignment logic is somewhat complicated to handle all
    the corner cases:

    o When we are scanning the PCI bus and we encounter a device
    with wrong IRQ, we ignore the IRQ information.

    o During the scan, if we find a device with unset IRQ, but having
    an interrupt pin advertised in its configuration header, we
    try to look at the interrupt router to see what IRQ did BIOS
    route the pin to.

    o When pci_enable_device() is called and the IRQ is still unset
    (and interrupt pin exists), we try to route the IRQ ourselves.

    > For example, there is another problem that I
    > am trying to fix, where the motherboard BIOS on that other computer
    > sets the IRQ associated with the USB controller to zero, no matter
    > how I program the BIOS, and pcibios_lookup_irq takes this as reason
    > enough to refuse to allocate and route a new IRQ.

    It definitely shouldn't behave so -- IRQ set to zero is always
    interpreted as "no IRQ assigned".

    Have a nice fortnight
    Martin `MJ' Mares <> <>
    Purchasing Windows is an Unrecoverable Application Error.
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 12:51    [W:0.021 / U:75.976 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site