summaryrefslogtreecommitdiffstats
path: root/arch/m68k
diff options
context:
space:
mode:
authorFinn Thain <fthain@telegraphics.com.au>2017-01-02 04:53:54 -0500
committerGeert Uytterhoeven <geert@linux-m68k.org>2017-02-09 14:18:19 +0100
commited6344e1fd647a97b286b55580416c350676aa4d (patch)
tree2e021545d5ed9035f0d9dba9a90500d5ae88e31d /arch/m68k
parent3cd53b14e7c471f6c33f3645a5200a30ffb3f861 (diff)
downloadlinux-ed6344e1fd647a97b286b55580416c350676aa4d.tar.gz
linux-ed6344e1fd647a97b286b55580416c350676aa4d.tar.xz
m68k/mac: Remove SHUTUP_SONIC interrupt hack
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 device. It already attempts to disable slot interrupts. But since some hardware cannot mask slot interrupts, Penguin should probably close the relevant device drivers. 3) Use Emile instead of Penguin. AFAIK the boot ROM never enables network device interrupts and hence they don't need to be disabled. Remove this hack. It requires maintenance and it doesn't solve the problem. It improves the odds for a few models, but so does setting CONFIG_MAC_SONIC=y. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Diffstat (limited to 'arch/m68k')
-rw-r--r--arch/m68k/mac/macints.c12
1 files changed, 0 insertions, 12 deletions
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c
index f9672bbd566f..1244d3643d8f 100644
--- a/arch/m68k/mac/macints.c
+++ b/arch/m68k/mac/macints.c
@@ -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