On Sat, Nov 28, 2020 at 08:48:00AM +1100, Finn Thain wrote: > > 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. Please re-check the commit log: "Linus clearly requested that code which changes behaviour depending on context should either be separated, or the context be explicitly conveyed in an argument passed by the caller." So, sorry, drivers shouldn't do context-dependent dances anymore. For more context (no pun intended), please check the thread mentioned in the cover letter, and also below message: https://lkml.kernel.org/r/CAKMK7uHAk9-Vy2cof0ws=DrcD52GHiCDiyHbjLd19CgpBU2rKQ@xxxxxxxxxxxxxx Kind regards, -- Ahmed S. Darwish Linutronix GmbH