drivers/gpu/drm/i915/i915_selftest.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/i915_selftest.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/i915_selftest.h- Extension
.h- Size
- 4710 bytes
- Lines
- 146
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/fault-inject.hselftests/i915_mock_selftests.hselftests/i915_live_selftests.hselftests/i915_perf_selftests.h
Detected Declarations
struct pci_devstruct drm_i915_privatestruct i915_selfteststruct i915_subtestfunction i915_mock_selftestsfunction i915_live_selftestsfunction i915_perf_selftests
Annotated Snippet
struct i915_selftest {
unsigned long timeout_jiffies;
unsigned int timeout_ms;
unsigned int random_seed;
unsigned int userspace_pid;
char *filter;
int mock;
int live;
int perf;
};
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
#include <linux/fault-inject.h>
extern struct i915_selftest i915_selftest;
int i915_mock_selftests(void);
int i915_live_selftests(struct pci_dev *pdev);
int i915_perf_selftests(struct pci_dev *pdev);
/* We extract the function declarations from i915_mock_selftests.h and
* i915_live_selftests.h Add your unit test declarations there!
*
* Mock unit tests are run very early upon module load, before the driver
* is probed. All hardware interactions, as well as other subsystems, must
* be "mocked".
*
* Live unit tests are run after the driver is loaded - all hardware
* interactions are real.
*/
#define selftest(name, func) int func(void);
#include "selftests/i915_mock_selftests.h"
#undef selftest
#define selftest(name, func) int func(struct drm_i915_private *i915);
#include "selftests/i915_live_selftests.h"
#include "selftests/i915_perf_selftests.h"
#undef selftest
struct i915_subtest {
int (*func)(void *data);
const char *name;
};
int __i915_nop_setup(void *data);
int __i915_nop_teardown(int err, void *data);
int __i915_live_setup(void *data);
int __i915_live_teardown(int err, void *data);
int __intel_gt_live_setup(void *data);
int __intel_gt_live_teardown(int err, void *data);
int __i915_subtests(const char *caller,
int (*setup)(void *data),
int (*teardown)(int err, void *data),
const struct i915_subtest *st,
unsigned int count,
void *data);
#define i915_subtests(T, data) \
__i915_subtests(__func__, \
__i915_nop_setup, __i915_nop_teardown, \
T, ARRAY_SIZE(T), data)
#define i915_live_subtests(T, data) ({ \
typecheck(struct drm_i915_private *, data); \
(data)->gt[0]->uc.guc.submission_state.sched_disable_delay_ms = 0; \
__i915_subtests(__func__, \
__i915_live_setup, __i915_live_teardown, \
T, ARRAY_SIZE(T), data); \
})
#define intel_gt_live_subtests(T, data) ({ \
typecheck(struct intel_gt *, data); \
(data)->uc.guc.submission_state.sched_disable_delay_ms = 0; \
__i915_subtests(__func__, \
__intel_gt_live_setup, __intel_gt_live_teardown, \
T, ARRAY_SIZE(T), data); \
})
#define SUBTEST(x) { x, #x }
#define I915_SELFTEST_DECLARE(x) x
#define I915_SELFTEST_ONLY(x) unlikely(x)
#define I915_SELFTEST_EXPORT
#else /* !IS_ENABLED(CONFIG_DRM_I915_SELFTEST) */
static inline int i915_mock_selftests(void) { return 0; }
static inline int i915_live_selftests(struct pci_dev *pdev) { return 0; }
static inline int i915_perf_selftests(struct pci_dev *pdev) { return 0; }
#define I915_SELFTEST_DECLARE(x)
Annotation
- Immediate include surface: `linux/types.h`, `linux/fault-inject.h`, `selftests/i915_mock_selftests.h`, `selftests/i915_live_selftests.h`, `selftests/i915_perf_selftests.h`.
- Detected declarations: `struct pci_dev`, `struct drm_i915_private`, `struct i915_selftest`, `struct i915_subtest`, `function i915_mock_selftests`, `function i915_live_selftests`, `function i915_perf_selftests`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.