Hi Rodrigo, Looks like "Lu Baolu" has acked patch here https://lore.kernel.org/linux-iommu/20220223062957.31797-1-tejaskumarx.surendrakumar.upadhyay@xxxxxxxxx/T/#u . Can you please push it in drm-intel? Thanks, Tejas > -----Original Message----- > From: Surendrakumar Upadhyay, TejaskumarX > <tejaskumarx.surendrakumar.upadhyay@xxxxxxxxx> > Sent: 25 February 2022 10:43 > To: iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx > Cc: Surendrakumar Upadhyay, TejaskumarX > <tejaskumarx.surendrakumar.upadhyay@xxxxxxxxx>; Talla, RavitejaX Goud > <ravitejax.goud.talla@xxxxxxxxx>; Vivi, Rodrigo <rodrigo.vivi@xxxxxxxxx>; > stable@xxxxxxxxxxxxxxx > Subject: [PATCH V2] iommu/vt-d: Add RPLS to quirk list to skip TE disabling > > The VT-d spec requires (10.4.4 Global Command Register, TE > field) that: > > Hardware implementations supporting DMA draining must drain any in-flight > DMA read/write requests queued within the Root-Complex before > completing the translation enable command and reflecting the status of the > command through the TES field in the Global Status register. > > Unfortunately, some integrated graphic devices fail to do so after some kind > of power state transition. As the result, the system might stuck in > iommu_disable_translati on(), waiting for the completion of TE transition. > > This adds RPLS to a quirk list for those devices and skips TE disabling if the > qurik hits. > > Fixes: b1012ca8dc4f9 "iommu/vt-d: Skip TE disabling on quirky gfx dedicated > iommu" > Tested-by: Raviteja Goud Talla <ravitejax.goud.talla@xxxxxxxxx> > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Tejas Upadhyay > <tejaskumarx.surendrakumar.upadhyay@xxxxxxxxx> > --- > drivers/iommu/intel/iommu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index 92fea3fbbb11..be9487516617 100644 > --- a/drivers/iommu/intel/iommu.c > +++ b/drivers/iommu/intel/iommu.c > @@ -5743,7 +5743,7 @@ static void quirk_igfx_skip_te_disable(struct > pci_dev *dev) > ver = (dev->device >> 8) & 0xff; > if (ver != 0x45 && ver != 0x46 && ver != 0x4c && > ver != 0x4e && ver != 0x8a && ver != 0x98 && > - ver != 0x9a) > + ver != 0x9a && ver != 0xa7) > return; > > if (risky_device(dev)) > -- > 2.34.1