m68k: Atari SCSI revival
SCSI should be working on a TT (but someone should really try!) but causes trouble on a Falcon (as in: it ate a filesystem of mine) at least when used concurrently with IDE. I have the notion it's because locking of the ST-DMA interrupt by IDE is broken in 2.6 (the IDE driver always complains about trying to release an already-released ST-DMA). Needs more work, but that's on the IDE or m68k interrupt side rather than SCSI. Signed-off-by: Michael Schmitz <schmitz@debian.org> Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
8d41f0e8d5
commit
fb810d121b
@ -395,7 +395,7 @@ static irqreturn_t scsi_tt_intr (int irq, void *dummy)
|
||||
|
||||
#endif /* REAL_DMA */
|
||||
|
||||
NCR5380_intr (0, 0, 0);
|
||||
NCR5380_intr(0, 0);
|
||||
|
||||
#if 0
|
||||
/* To be sure the int is not masked */
|
||||
@ -461,7 +461,7 @@ static irqreturn_t scsi_falcon_intr (int irq, void *dummy)
|
||||
|
||||
#endif /* REAL_DMA */
|
||||
|
||||
NCR5380_intr (0, 0, 0);
|
||||
NCR5380_intr(0, 0);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -557,11 +557,11 @@ static void falcon_get_lock( void )
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
while( !in_interrupt() && falcon_got_lock && stdma_others_waiting() )
|
||||
while (!in_irq() && falcon_got_lock && stdma_others_waiting())
|
||||
sleep_on( &falcon_fairness_wait );
|
||||
|
||||
while (!falcon_got_lock) {
|
||||
if (in_interrupt())
|
||||
if (in_irq())
|
||||
panic( "Falcon SCSI hasn't ST-DMA lock in interrupt" );
|
||||
if (!falcon_trying_lock) {
|
||||
falcon_trying_lock = 1;
|
||||
@ -763,7 +763,6 @@ int atari_scsi_detect (struct scsi_host_template *host)
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
#ifdef MODULE
|
||||
int atari_scsi_release (struct Scsi_Host *sh)
|
||||
{
|
||||
if (IS_A_TT())
|
||||
@ -772,7 +771,6 @@ int atari_scsi_release (struct Scsi_Host *sh)
|
||||
atari_stram_free (atari_dma_buffer);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void __init atari_scsi_setup(char *str, int *ints)
|
||||
{
|
||||
|
Reference in New Issue
Block a user