Le 12/12/2016 à 04:45, Finn Thain a écrit : > In macints.c there is some startup code which disables the SONIC interrupt > in an attempt to avoid an unhandled slot interrupt, which would be fatal. > This only works on those machines where the SONIC device is on-board. > > When the mac_sonic driver is built-in, there's little point in doing this, > because the device will be initialized a few seconds later anyway. But > when mac_sonic is a module, the window for an unhandled interrupt is > longer. > > Either way, we've already run the gauntlet for 5 or 10 seconds by the time > we get around to disabling this particular device. It's only by sheer luck > that we got this far. > > Really, this is too little too late. The general problem of unhandled > early interrupts also affects other devices on other models. There are > better ways to resolve this problem. > > 1) When using the Penguin bootloader, boot Mac OS with extensions disabled > (by holding down the shift key at startup or by use of the Extensions > Manager control panel). The Penguin docs already contain this advice, > as it is always effective. > > 2) Have the Penguin bootloader disable the interrupt. It already attempts > to disable slot interrupts. But since some hardware cannot mask slot > interrupts, Penguin should probably close the relevant device drivers > instead. > > 3) Use Emile instead of Penguin. AFAIK the boot ROM never enables network > device interrupts and hence they don't need to be disabled. > > We should remove this hack. It requires maintenance and it doesn't solve > the problem. It improves the odds in a small number of cases. Far better > to simply set CONFIG_MAC_SONIC=y. > > Signed-off-by: Finn Thain <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]> > > --- > > BTW, is it possible to get an error message printed to the console when an > irq is raised for which there is no handler? (Neglecting that this could > happen even before the early console starts...) > > Index: linux/arch/m68k/mac/macints.c > =================================================================== > --- linux.orig/arch/m68k/mac/macints.c 2016-12-12 12:04:54.000000000 > +1100 > +++ linux/arch/m68k/mac/macints.c 2016-12-12 13:03:10.000000000 +1100 > @@ -125,8 +125,6 @@ > #include <asm/hwtest.h> > #include <asm/irq_regs.h> > > -#define SHUTUP_SONIC > - > extern void show_registers(struct pt_regs *); > > irqreturn_t mac_nmi_handler(int, void *); > @@ -151,16 +149,6 @@ void __init mac_init_IRQ(void) > #endif > m68k_setup_irq_controller(&mac_irq_chip, handle_simple_irq, IRQ_USER, > NUM_MAC_SOURCES - IRQ_USER); > - /* Make sure the SONIC interrupt is cleared or things get ugly */ > -#ifdef SHUTUP_SONIC > - printk("Killing onboard sonic... "); > - /* This address should hopefully be mapped already */ > - if (hwreg_present((void*)(0x50f0a000))) { > - *(long *)(0x50f0a014) = 0x7fffL; > - *(long *)(0x50f0a010) = 0L; > - } > - printk("Done.\n"); > -#endif /* SHUTUP_SONIC */ > > /* > * Now register the handlers for the master IRQ handlers > -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
