On 25-01-21, 15:05, Dave Jiang wrote: > Add device state check before executing command. Without the check the > command can be issued while device is in halt state and causes the driver to > block while waiting for the completion of the command. > > Reported-by: Sanjay Kumar <sanjay.k.kumar@xxxxxxxxx> > Signed-off-by: Dave Jiang <dave.jiang@xxxxxxxxx> > Tested-by: Sanjay Kumar <sanjay.k.kumar@xxxxxxxxx> > Fixes: 0d5c10b4c84d ("dmaengine: idxd: add work queue drain support") > --- > drivers/dma/idxd/device.c | 25 ++++++++++++++++++++++++- > drivers/dma/idxd/idxd.h | 2 +- > drivers/dma/idxd/init.c | 5 ++++- > 3 files changed, 29 insertions(+), 3 deletions(-) > > diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c > index 95f94a3ed6be..45077727ce5b 100644 > --- a/drivers/dma/idxd/device.c > +++ b/drivers/dma/idxd/device.c > @@ -398,17 +398,33 @@ static inline bool idxd_is_enabled(struct idxd_device *idxd) > return false; > } > > +static inline bool idxd_device_is_halted(struct idxd_device *idxd) > +{ > + union gensts_reg gensts; > + > + gensts.bits = ioread32(idxd->reg_base + IDXD_GENSTATS_OFFSET); > + > + if (gensts.state == IDXD_DEVICE_STATE_HALT) > + return true; > + return false; return (gensts.state == IDXD_DEVICE_STATE_HALT) ?? -- ~Vinod