• Oscar Mateo's avatar
    drm/i915/icl: Mind the SFC units when resetting VD or VEBox engines · f513ac76
    Oscar Mateo authored
    SFC (Scaler & Format Converter) units are shared between VD and VEBoxes.
    They also happen to have separate reset bits. So, whenever we want to reset
    one or more of the media engines, we have to make sure the SFCs do not
    change owner in the process and, if this owner happens to be one of the
    engines being reset, we need to reset the SFC as well.
    
    This happens in 4 steps:
    
    1) Tell the engine that a software reset is going to happen. The engine
    will then try to force lock the SFC (if currently locked, it will
    remain so; if currently unlocked, it will ignore this and all new lock
    requests).
    
    2) Poll the ack bit to make sure the hardware has received the forced
    lock from the driver. Once this bit is set, it indicates SFC status
    (lock or unlock) will not change anymore (until we tell the engine it
    is safe to unlock again).
    
    3) Check the usage bit to see if the SFC has ended up being locked to
    the engine we want to reset. If this is the case, we have to reset
    the SFC as well.
    
    4) Unlock all the SFCs once the reset sequence is completed.
    
    Obviously, if we are resetting the whole GPU, we don't have to worry
    about all of this.
    
    BSpec: 10989
    BSpec: 10990
    BSpec: 10954
    BSpec: 10955
    BSpec: 10956
    BSpec: 19212
    Signed-off-by: default avatarTomasz Lis <tomasz.lis@intel.com>
    Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
    Signed-off-by: default avatarMichel Thierry <michel.thierry@intel.com>
    Cc: Michel Thierry <michel.thierry@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181213091522.2926-4-chris@chris-wilson.co.uk
    f513ac76
intel_uncore.c 71.8 KB