lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 054/879] iommu/vt-d: Add RPLS to quirk list to skip TE disabling
    Date
    From: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>

    [ Upstream commit 0a967f5bfd9134b89681cae58deb222e20840e76 ]

    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.

    Link: https://gitlab.freedesktop.org/drm/intel/-/issues/4898
    Tested-by: Raviteja Goud Talla <ravitejax.goud.talla@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
    Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220302043256.191529-1-tejaskumarx.surendrakumar.upadhyay@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    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 0ea47e17b379..ba9a63cac47c 100644
    --- a/drivers/iommu/intel/iommu.c
    +++ b/drivers/iommu/intel/iommu.c
    @@ -5031,7 +5031,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.35.1


    \
     
     \ /
      Last update: 2022-09-17 16:25    [W:2.438 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site