[Emile-devel] Re: [linux-mac68k] EMILE and Quadra 840AV
Status: Beta
Brought to you by:
lvivier
From: Finn T. <ft...@te...> - 2005-10-12 05:42:34
|
On Tue, 11 Oct 2005, Laurent Vivier wrote: > Le mar 11/10/2005 =C3=A0 03:18, Finn Thain a =C3=A9crit : > > On Tue, 11 Oct 2005, Laurent Vivier wrote: > [...] > > > Index: linux-mac68k-2.2/arch/m68k/mac/macints.c > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > --- linux-mac68k-2.2.orig/arch/m68k/mac/macints.c=092005-09-05 21:03:= 25.000000000 +0200 > > > +++ linux-mac68k-2.2/arch/m68k/mac/macints.c=092005-10-09 20:00:23.00= 0000000 +0200 > > > @@ -193,6 +193,7 @@ > > > void mac_nmi_handler(int, void *, struct pt_regs *); > > > void mac_debug_handler(int, void *, struct pt_regs *); > > > void mac_SCC_handler(int, void *, struct pt_regs *); > > > +void mac_clear_irq( unsigned int irq ); > > > =20 > > > /* #define DEBUG_MACINTS */ > > > /* #define DEBUG_SPURIOUS */ > > > @@ -207,6 +208,8 @@ > > > =09/* Initialize the IRQ handler lists. Initially each list is empty= , */ > > > =20 > > > =09for (i =3D 0; i < NUM_MAC_SOURCES; i++) { > > > +=09=09mac_disable_irq(i); > > > +=09=09mac_clear_irq(i); > > > =09=09mac_irq_list[i] =3D NULL; > > > =09} > > > =20 > >=20 > > I think this is the wrong place for this. The fact that you need it jus= t=20 > > means there is a bug in iop_init(), via_init(), oss_init(), psc_init()= =20 > > and/or baboon_init(). Fixing the early bug will eliminate suprious=20 > > interrupts before mac_init_IRQ() is called. >=20 > In fact this part was made to boot Linux from EMILE on LCIII. >=20 > I agree with your arguments, but it's really, really, easier to make > work like this... Which spurious interrupts were occurring? Why is it so difficult to find=20 the bug/ommission in the RBV initialisation? NUM_MAC_SOURCES is 72. This is the slowest way to disable and clear them,= =20 and doing so is redundant given they have already been deliberately=20 disabled and cleared during initialisation (notwithstanding the bug). While it may be easier to do it your way, it doesn't fix the bug, it just= =20 hides it without actually preventing spurious interrupts post VIA=20 initialisation. -f |