• John Harrison's avatar
    drm/i915/selftest: Fix hangcheck self test for GuC submission · 617e87c0
    John Harrison authored
    When GuC submission is enabled, the GuC controls engine resets. Rather
    than explicitly triggering a reset, the driver must submit a hanging
    context to GuC and wait for the reset to occur.
    
    Conversely, one of the tests specifically sends hanging batches to the
    engines but wants them to sit around until a manual reset of the full
    GT (including GuC itself). That means disabling GuC based engine
    resets to prevent those from killing the hanging batch too soon. So,
    add support to the scheduling policy helper for disabling resets as
    well as making them quicker!
    
    In GuC submission mode, the 'is engine idle' test basically turns into
    'is engine PM wakelock held'. Independently, there is a heartbeat
    disable helper function that the tests use. For unexplained reasons,
    this acquires the engine wakelock before disabling the heartbeat and
    only releases it when re-enabling the heartbeat. As one of the tests
    tries to do a wait for idle in the middle of a heartbeat disabled
    section, it is therefore guaranteed to always fail. Added a 'no_pm'
    variant of the heartbeat helper that allows the engine to be asleep
    while also having heartbeats disabled.
    Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
    Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
    Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210727002348.97202-31-matthew.brost@intel.com
    617e87c0
selftest_hangcheck.c 45.3 KB