• John Harrison's avatar
    drm/i915/guc: Update to GuC version 70.1.1 · 2584b354
    John Harrison authored
    The latest GuC firmware drops the context descriptor pool in favour of
    passing all creation data in the create H2G. It also greatly simplifies
    the work queue and removes the process descriptor used for multi-LRC
    submission. So, remove all mention of LRC and process descriptors and
    update the registration code accordingly.
    
    Unfortunately, the new API also removes the ability to set default
    values for the scheduling policies at context registration time.
    Instead, a follow up H2G must be sent. The individual scheduling
    policy update H2G commands are also dropped in favour of a single KLV
    based H2G. So, change the update wrappers accordingly and call this
    during context registration..
    
    Of course, this second H2G per registration might fail due to being
    backed up. The registration code has a complicated state machine to
    cope with the actual registration call failing. However, if that works
    then there is no support for unwinding if a further call should fail.
    Unwinding would require sending a H2G to de-register - but that can't
    be done because the CTB is already backed up.
    
    So instead, add a new flag to say whether the context has a pending
    policy update. This is set if the policy H2G fails at registration
    time. The submission code checks for this flag and retries the policy
    update if set. If that call fails, the submission path early exists
    with a retry error. This is something that is already supported for
    other reasons.
    Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220412225955.1802543-2-John.C.Harrison@Intel.com
    2584b354
guc_actions_abi.h 8.74 KB