• Ville Syrjälä's avatar
    drm/i915: Fix async flip with decryption and/or DPT · 50faf7a1
    Ville Syrjälä authored
    
    
    We're currently forgetting to set the PLANE_SURF_DECRYPT
    flag in the async flip path. So if the hardware were to
    latch that bit despite this being an async flip we'd start
    scanning out garbage. And if it doesn't latch it then I
    guess we'd just end up with a weird register value that
    doesn't actually match the hardware state, which isn't
    great for anyone staring at register dumps.
    
    Similarly the async flip path also forgets to call
    skl_surf_address() which means the DPT address space to
    GGTT address space downshift is not being applied to
    the offset. Which means we are pointing PLANE_SURF
    at some random location in GGTT instead of the correct
    DPT page.
    
    So let's fix two birds with one stone and extract the
    PLANE_SURF calculation from skl_program_plane() into
    a small helper and use it in the async flip path as well.
    
    Cc: Anshuman Gupta <anshuman.gupta@intel.com>
    Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Cc: Juston Li <juston.li@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Uma Shankar <uma.shankar@intel.com>
    Cc: Karthik B S <karthik.b.s@intel.com>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211018115030.3547-3-ville.syrjala@linux.intel.com
    
    Reviewed-by: default avatarStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    50faf7a1
skl_universal_plane.c 63.6 KB