• Dave Gordon's avatar
    drm/i915/guc: always reset GuC before loading firmware · d761701c
    Dave Gordon authored
    After a suspend-resume cycle, the resumed kernel has no idea what the
    booted kernel may have done to the GuC before replacing itself with the
    resumed image. In particular, it may have already loaded the GuC with
    firmware, which will then cause this kernel's attempt to (re)load the
    firmware to fail (GuC program memory is write-once!). The symptoms
    (GuC firmware reload fails after hibernation) are further described
    in the Bugzilla reference below.
    
    So let's *always* reset the GuC just before (re)loading the firmware;
    the hardware should then be in a well-known state, and we may even
    avoid some of the issues arising from unpredictable timing.
    
    Also added some more fields & values to the definition of the GUC_STATUS
    register, which is the key diagnostic indicator if the GuC load fails.
    Signed-off-by: default avatarDave Gordon <david.s.gordon@intel.com>
    Reviewed-by: default avatarArun Siluvery <arun.siluvery@linux.intel.com>
    Cc: Alex Dai <yu.dai@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94390Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    d761701c
intel_guc_loader.c 20.4 KB