• Michel Thierry's avatar
    drm/i915/guc: Add support for reset engine using GuC commands · 6acbea89
    Michel Thierry authored
    This patch adds per engine reset and recovery (TDR) support when GuC is
    used to submit workloads to GPU.
    
    In the case of i915 directly submission to ELSP, driver manages hang
    detection, recovery and resubmission. With GuC submission these tasks
    are shared between driver and GuC. i915 is still responsible for detecting
    a hang, and when it does it only requests GuC to reset that Engine. GuC
    internally manages acquiring forcewake and idling the engine before
    resetting it.
    
    Once the reset is successful, i915 takes over again and handles the
    resubmission. The scheduler in i915 knows which requests are pending so
    after resetting a engine, pending workloads/requests are resubmitted
    again.
    
    v2: s/i915_guc_request_engine_reset/i915_guc_reset_engine/ to match the
    non-guc function names.
    
    v3: Removed debug message about engine restarting from which request,
    since the new baseline do it regardless of submission mode. (Chris)
    
    v4: Rebase.
    
    v5: Do not pass unnecessary reporting flags to the fw (Jeff);
    tasklet_schedule(&execlists->irq_tasklet) handles the resubmit; rebase.
    
    v6: Rename the existing reset engine function and share a similar
    interface between guc and non-guc paths (Chris).
    Signed-off-by: default avatarMichel Thierry <michel.thierry@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171031225309.10888-1-michel.thierry@intel.comReviewed-by: default avatarJeff McGee <jeff.mcgee@intel.com>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    6acbea89
intel_guc.c 10.5 KB