• Matthew Brost's avatar
    drm/i915/guc: Selftest for stealing of guc ids · 0013f5f5
    Matthew Brost authored
    Testing the stealing of guc ids is hard from user space as we have 64k
    guc_ids. Add a selftest, which artificially reduces the number of guc
    ids, and forces a steal.
    
    The test creates a spinner which is used to block all subsequent
    submissions until it completes. Next, a loop creates a context and a NOP
    request each iteration until the guc_ids are exhausted (request creation
    returns -EAGAIN). The spinner is ended, unblocking all requests created
    in the loop. At this point all guc_ids are exhausted but are available
    to steal. Try to create another request which should successfully steal
    a guc_id. Wait on last request to complete, idle GPU, verify a guc_id
    was stolen via a counter, and exit the test. Test also artificially
    reduces the number of guc_ids so the test runs in a timely manner.
    
    v2:
     (John Harrison)
      - s/stole/stolen
      - Fix some wording in test description
      - Rework indexing into context array
      - Add test description to commit message
      - Fix typo in commit message
     (Checkpatch)
      - s/guc/(guc) in NUMBER_MULTI_LRC_GUC_ID
    v3:
     (John Harrison)
      - Set array value to NULL after extracting error
      - Fix a few typos in comments / error messages
      - Delete redundant comment in commit message
    Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
    Reviewed-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211214170500.28569-8-matthew.brost@intel.com
    0013f5f5
intel_guc_submission.c 126 KB