Port-cobalt archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: interrupt fix for multi-function PCI devices
This changes has been committed to HEAD.
If you find any problem, please report it here or via send-pr(1).
I wrote:
> I'm playing with misc devices on Qube2700 and it seems
> all interrupt PINs (at least PIN_A and PIN_C) on the PCI slot
> are connected to ICU irq 9.
>
> To support these multi function or multi interrupt devices
> we have to change interrupt establish code to allow multiple
> interrupts on each irq as Kiyohara-san posted before, but
> I've rewritten interrupt code based on evbmips/malt/pci/pcib.c
> rather than patching current one.
>
> The attached patch contains the following changes:
>
> - split out interrupt stuff from machdep.c into new interrupt.c
> - prepare struct *_intrhead to handle cpu and icu interrupts
> - use LIST and malloc(9) to handle multiple interrupts per icu irq
> - move evcnt(9) stuff into *_intrhead from cobalt_intrhand
> (i.e. make it per interrupt rather than per device)
> - in pci_intr_map(9) handle CPU interrupt separately and add a sanity check
> - fixup interrupt lines for devices on the PCI slot in pci_conf_interrupt(9)
> - move some device address definitions into <machine/cpu.h> and
> remove <machine/leds.h>
> - misc cosmetics
>
> and a compiled GENERIC kernel is here:
> http://www.ceres.dti.ne.jp/~tsutsui/netbsd/netbsd-cobalt-GENERIC-20080302.gz
>
> I've tested this patch on RaQ2 and Qube2700, and it seems working fine.
> (though I haven't tested with multi function devices very well)
>
> If there is no objection, I'll commit this in a next few days.
:
---
Izumi Tsutsui
Home |
Main Index |
Thread Index |
Old Index