• Daniele Ceraolo Spurio's avatar
    drm/xe: Always check force_wake_get return code · 649a125a
    Daniele Ceraolo Spurio authored
    A force_wake_get failure means that the HW might not be awake for the
    access we're doing; this can lead to an immediate error or it can be a
    more subtle problem (e.g. a register read might return an incorrect
    value that is still valid, leading the driver to make a wrong choice
    instead of flagging an error).
    We avoid an error from the force_wake function because callers might
    handle or tolerate the error, but this only works if all callers
    are checking the error code. The majority already do, but a few are not.
    These are mainly falling into 3 categories, which are each handled
    differently:
    
    1) error capture: in this case we want to continue the capture, but we
       log an info message in dmesg to notify the user that the capture
       might have incorrect data.
    
    2) ioctl: in this case we return a -EIO error to userspace
    
    3) unabortable actions: these are scenarios where we can't simply abort
       and retry and so it's better to just try it anyway because there is a
       chance the HW is awake even with the failure. In this case we throw a
       warning so we know there was a forcewake problem if something fails
       down the line.
    
    v2: use gt_WARN_ON where appropriate
    Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
    Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarTejas Upadhyay <tejas.upadhyay@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240318154924.3453513-1-daniele.ceraolospurio@intel.com
    649a125a
xe_guc_submit.c 53.2 KB