Re: PCI configuration for ML310



Hi Isaac,

igelado@xxxxxxxxx wrote:

On the PCI base configuration provided by Xilinx I see that they use a
IPcore called misc_logic, which seems to merge all interrupts lines
(some of them are even inverted) into a single one, but I do not
understand why should I do it. Could anybody explain me the actual
reason?

It would be great if somebody could explain me how does the whole
thing related to the interrupts from PCI devices works. At least I
would like to know which interrupt line is supposed to be asserted when
the ethernet card, the USB bridge (or whatever PCI device you prefer)
launches an interrupt, so then I can try looking into the linux kernel
code to fix the problem knowing that the interrupt line is being
asserted.

As you are seeing, the approach is to merge all of the PCI interrupt
lines into a single interrupt signal, which then feeds into the OPB
interrupt controller (OPB_INTC).

All device drivers request the same IRQ line (whichever it is on the
OPB_INTC). When any PCI device raises an interrupt, it triggers the
merged IRQ signal, and raises the interrupt. The kernel iterates
through a linked list of drivers that are all registered on that one
line. Each driver's IRQ handler queries its device, to see if it is
responsible for the interrupt condition. If so then it does its thing.
This process is documented in Chapter 4 of Bovet and Cesati's excellent
"Understanding the Linux kernel".

Doing it this way makes life a bit simpler from the kernel side, simply
knowing that all PCI devices will appear on the same IRQ line makes life
easier, at a modest increase in interrupt latency.

Regards,

John
.



Relevant Pages

  • PROBLEM: oops in 2.6.21.1 after bringing up the network
    ... I am consistently getting a kernel oops from a vanilla 2.6.21.1 kernel. ... Fatal exception in interrupt ... pin B routed to IRQ 0 ... Elitegroup Computer Systems Unknown device b732 ...
    (Linux-Kernel)
  • Re: ACPI Problems
    ... Patches against the official kernel series worlk very badly when applied to ... ACPI tables contain no PCI IRQ routing entries ... > Interrupt: pin A routed to IRQ 9 ...
    (comp.os.linux.portable)
  • Re: IRQ assignment in Windows 2K/XP/2003...
    ... >> Both PCI devices request an interrupt and are physically attached to INTA ... >> dynamically assigns an IRQ # for each of the two devices. ... >> the driver during start time? ...
    (microsoft.public.development.device.drivers)
  • Re: IRQ assignment in Windows 2K/XP/2003...
    ... Both PCI devices request an interrupt and are physically attached to INTA ... When the drivers load for each of the two devices, ... dynamically assigns an IRQ # for each of the two devices. ...
    (microsoft.public.development.device.drivers)
  • Re: IRQ assignment in Windows 2K/XP/2003...
    ... He has two devices behind the bridge, each of which are given separate interrupt vectors by the OS, indicating that the OS believes them to be separately routable. ... Both PCI devices request an interrupt and are physically attached to INTA on ... When the drivers load for each of the two devices, ... Sometimes the IRQ ...
    (microsoft.public.development.device.drivers)