Hi Finn, Am 28.11.20 um 10:48 schrieb Finn Thain: > On Sat, 28 Nov 2020, Finn Thain wrote: > >> diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c >> index d654a6cc4162..739def70cffb 100644 >> --- a/drivers/scsi/NCR5380.c >> +++ b/drivers/scsi/NCR5380.c >> @@ -223,7 +223,10 @@ static int NCR5380_poll_politely2(struct NCR5380_hostdata *hostdata, >> cpu_relax(); >> } while (n--); >> >> - if (irqs_disabled() || in_interrupt()) >> + /* We can't sleep when local irqs are disabled and callers ensure >> + * that local irqs are disabled whenever we can't sleep. >> + */ >> + if (irqs_disabled()) >> return -ETIMEDOUT; >> >> /* Repeatedly sleep for 1 ms until deadline */ >> > Michael, Andreas, would you please confirm that this is workable on Atari? > The driver could sleep when IPL == 2 because arch_irqs_disabled_flags() > would return false (on Atari). I'm wondering whether that would deadlock. Pretty sure this would deadlock when in interrupt context here. Otherwise, IPL 2 is perfectly OK (which is why arch_irqs_disabled_flags() returns false in that case). If you want to be 100% certain, I can give this one a spin. Cheers, Michael