On Wed, 10 Aug 2011, Geert Uytterhoeven wrote:
While looking into optimizing interrupts using chain handlers (which cannot be shared), I noticed several of these cascades are hung on the same interrupt. Hence we cannot use the optimization of chain handlers for them. Knowing which are mutually exclusive helps a lot, but my Mac knowledge is very limited. I derived from the code this list of cascade handlers and the interrupts they use: baboon_irq IRQ_NUBUS_C oss_irq OSS_IRQLEV_SCSI = IRQ_AUTO_2 conflict: via2_irq OSS_IRQLEV_SOUND = IRQ_AUTO_5 conflict: psc_irq
PSC and OSS are mutually exclusive. VIA2 and OSS are also mutually exlusive.
oss_nubus_irq OSS_IRQLEV_NUBUS = IRQ_AUTO_3 conflict: psc_irq psc_irq IRQ_AUTO_3 conflict: oss_nubus_irq IRQ_AUTO_4 IRQ_AUTO_5 conflict: oss_irq IRQ_AUTO_6 conflict: via1_irq via1_irq OSS_IRQLEV_VIA1 = IRQ_AUTO_6 (on oss) conflict: psc_irq IRQ_AUTO_1 conflict: iop_ism_irq
iop_ism_irq is only used with OSS.
IRQ_AUTO_6 (if via_alt_mapping) conflict: psc_irq
via_alt_mapping is not used with PSC.
via2_irq IRQ_AUTO_2 conflict: oss_irq via_nubus_irq IRQ_MAC_NUBUS = IRQ_VIA2_1 These are other interrupts using in the Mac core code, which may use the same interrupts as some of the cascades above: iop_ism_irq OSS_IRQLEV_IOPISM = 1 = IRQ_AUTO_1 (on oss) conflict: via1_irq
via1_irq is remapped to IRQ_AUTO_6 on OSS.
IRQ_VIA2_0 (on !oss) mac_nmi_handler IRQ_AUTO_7 timer handler IRQ_MAC_TIMER_1 = IRQ_VIA1_6 So baboon and PSC are mutually exclusive? But they don't conflict w.r.t. to interrupt lines anyway, so they're not an issue. From the code, OSS and VIA are also mutually exclusive (except for via1_irq)? But PSC can coexist with OSS? That's where most of the conflicts are.
Hope this helps... Finn
Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds