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