Message ID | 20201126132952.2287996-2-bigeasy@linutronix.de (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | scsi: Remove in_interrupt() usage. | expand |
On Thu, Nov 26, 2020 at 2:30 PM Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > > From: "Ahmed S. Darwish" <a.darwish@linutronix.de> > > hw_event_sas_phy_up() is used in hardirq/softirq context: > > pm8001_interrupt_handler_msix() || pm8001_interrupt_handler_intx() || pm8001_tasklet > => PM8001_CHIP_DISP->isr() = pm80xx_chip_isr() > => process_oq() [spin_lock_irqsave(&pm8001_ha->lock,)] > => process_one_iomb() > => mpi_hw_event() > => hw_event_sas_phy_up() > => msleep(200) > > Revert the msleep() back to an mdelay() to avoid sleeping in atomic > context. > > Fixes: 4daf1ef3c681 ("scsi: pm80xx: Convert 'long' mdelay to msleep") > Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > Cc: Vikram Auradkar <auradkar@google.com> > Cc: Jack Wang <jinpu.wang@cloud.ionos.com> Indeed, thx for the fix. Acked-by: Jack Wang <jinpu.wang@cloud.ionos.com>> --- > drivers/scsi/pm8001/pm80xx_hwi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c > index 69f8244539e04..7d838e316657c 100644 > --- a/drivers/scsi/pm8001/pm80xx_hwi.c > +++ b/drivers/scsi/pm8001/pm80xx_hwi.c > @@ -3296,7 +3296,7 @@ hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) > pm8001_get_attached_sas_addr(phy, phy->sas_phy.attached_sas_addr); > spin_unlock_irqrestore(&phy->sas_phy.frame_rcvd_lock, flags); > if (pm8001_ha->flags == PM8001F_RUN_TIME) > - msleep(200);/*delay a moment to wait disk to spinup*/ > + mdelay(200);/*delay a moment to wait disk to spinup*/ > pm8001_bytes_dmaed(pm8001_ha, phy_id); > } > > -- > 2.29.2 >
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index 69f8244539e04..7d838e316657c 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -3296,7 +3296,7 @@ hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) pm8001_get_attached_sas_addr(phy, phy->sas_phy.attached_sas_addr); spin_unlock_irqrestore(&phy->sas_phy.frame_rcvd_lock, flags); if (pm8001_ha->flags == PM8001F_RUN_TIME) - msleep(200);/*delay a moment to wait disk to spinup*/ + mdelay(200);/*delay a moment to wait disk to spinup*/ pm8001_bytes_dmaed(pm8001_ha, phy_id); }