• Chris Wilson's avatar
    drm/i915: Sleep around performing iommu unmaps on Tigerlake · 84361529
    Chris Wilson authored
    Tigerlake is plagued by spontaneous DMAR faults [reason 7, next page
    table ptr is invalid] which lead to GPU hangs. These faults occur when
    an iommu map is immediately reused. Adding further clflushes and
    barriers around either the GTT PTE or iommu PTE updates do not prevent
    the faults. So far the only effect has been from inducing a delay
    between reuse of the iommu on the GPU, and applying the delay at the
    iommu map allows for the smallest stable delay.
    
    Note that such a delay is hideous and clearly does not fix the root cause,
    and so should only be a bandaid until a complete solution is found. The
    delay was determined by running igt/gem_exec_fence/parallel in a loop for
    a few hours (unpatched MTBF is about 10s).
    
    We have also seen such DMAR fault [reason 7] errors on other platforms,
    notably gen9-gen11, but so far it has only been trivially and
    consistently reproduced on Tigerlake.
    
    v2: Leave a tell-tale to know when we apply the vt'd quirk, and as a
    reminder to remove it again. Hopefully.
    
    Testcase: igt/gem_exec_fence/parallel
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Acked-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201209164008.5487-2-chris@chris-wilson.co.uk
    84361529
intel_ggtt.c 36 KB