• Chris Wilson's avatar
    drm/i915: Suppress switch_mm emission between the same aliasing_ppgtt · 12124bea
    Chris Wilson authored
    When switching between contexts using the aliasing_ppgtt, the VM is
    shared. We don't need to reload the PD registers unless they are dirty.
    
    Martin Peres reported an issue that looks like corruption between
    Haswell context switches, bisecting to commit f9326be5 ("drm/i915:
    Rearrange switch_context to load the aliasing ppgtt on first use").
    Switching between the same mm (the aliasing_ppgtt is used for all
    contexts in this case) should be a nop, but appears to trigger some
    side-effects in the context switch. However, as we know the switch
    is redundant in this case, we can skip it and continue to ignore the
    issue until somebody feels strong enough to investigate full-ppgtt on
    gen7 again!
    
    Except.. Martin was using full-ppgtt which is not supported as it
    doesn't work correctly yet. So whilst the bisect did yield valuable
    information about the failures, the fix should not have any user impact
    under default settings, with the exception of a slightly lower
    throughput on xcs as the VM would always be reloaded.
    
    v2: Also remember to set the legacy_active_context following the switch
    on xcs (commit e8a9c58f ("drm/i915: Unify active context tracking
    between legacy/execlists/guc"))
    
    Fixes: f9326be5 ("drm/i915: Rearrange switch_context to load the aliasing ppgtt on first use")
    Fixes: e8a9c58f ("drm/i915: Unify active context tracking between legacy/execlists/guc")
    Reported-by: default avatarMartin Peres <martin.peres@linux.intel.com>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Martin Peres <martin.peres@linux.intel.com>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170812152724.6883-1-chris@chris-wilson.co.uk
    12124bea
i915_gem_context.c 31.7 KB