• Chris Wilson's avatar
    drm/i915: Provide a hook for selftests · 953c7f82
    Chris Wilson authored
    Some pieces of code are independent of hardware but are very tricky to
    exercise through the normal userspace ABI or via debugfs hooks. Being
    able to create mock unit tests and execute them through CI is vital.
    Start by adding a central point where we can execute unit tests and
    a parameter to enable them. This is disabled by default as the
    expectation is that these tests will occasionally explode.
    
    To facilitate integration with igt, any parameter beginning with
    i915.igt__ is interpreted as a subtest executable independently via
    igt/drv_selftest.
    
    Two classes of selftests are recognised: mock unit tests and integration
    tests. Mock unit tests are run as soon as the module is loaded, before
    the device is probed. At that point there is no driver instantiated and
    all hw interactions must be "mocked". This is very useful for writing
    universal tests to exercise code not typically run on a broad range of
    architectures. Alternatively, you can hook into the live selftests and
    run when the device has been instantiated - hw interactions are real.
    
    v2: Add a macro for compiling conditional code for mock objects inside
    real objects.
    v3: Differentiate between mock unit tests and late integration test.
    v4: List the tests in natural order, use igt to sort after modparam.
    v5: s/late/live/
    v6: s/unsigned long/unsigned int/
    v7: Use igt_ prefixes for long helpers.
    v8: Deobfuscate macros overriding functions, stop using -I$(src)
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170213171558.20942-1-chris@chris-wilson.co.uk
    953c7f82
i915_pci.c 15 KB