drivers/gpu/drm/i915/gt/intel_gt_types.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/gt/intel_gt_types.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/gt/intel_gt_types.h- Extension
.h- Size
- 7276 bytes
- Lines
- 325
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/ktime.hlinux/list.hlinux/llist.hlinux/mutex.hlinux/notifier.hlinux/seqlock.hlinux/spinlock.hlinux/types.hlinux/workqueue.huc/intel_uc.hintel_gsc.hi915_vma.hi915_perf_types.hintel_engine_types.hintel_gt_buffer_pool_types.hintel_hwconfig.hintel_llc_types.hintel_reset_types.hintel_rc6_types.hintel_rps_types.hintel_migrate_types.hintel_wakeref.hintel_wopcm.h
Detected Declarations
struct drm_i915_privatestruct i915_ggttstruct intel_engine_csstruct intel_uncorestruct intel_mmio_rangestruct gt_defaultsstruct intel_gtstruct intel_gt_timelinesstruct intel_gt_requestsstruct intel_gt_infostruct intel_gt_definitionenum intel_steering_typeenum intel_submission_methodenum intel_gt_typeenum intel_gt_scratch_field
Annotated Snippet
struct intel_mmio_range {
u32 start;
u32 end;
};
/*
* The hardware has multiple kinds of multicast register ranges that need
* special register steering (and future platforms are expected to add
* additional types).
*
* During driver startup, we initialize the steering control register to
* direct reads to a slice/subslice that are valid for the 'subslice' class
* of multicast registers. If another type of steering does not have any
* overlap in valid steering targets with 'subslice' style registers, we will
* need to explicitly re-steer reads of registers of the other type.
*
* Only the replication types that may need additional non-default steering
* are listed here.
*/
enum intel_steering_type {
L3BANK,
MSLICE,
LNCF,
GAM,
DSS,
OADDRM,
/*
* On some platforms there are multiple types of MCR registers that
* will always return a non-terminated value at instance (0, 0). We'll
* lump those all into a single category to keep things simple.
*/
INSTANCE0,
NUM_STEERING_TYPES
};
enum intel_submission_method {
INTEL_SUBMISSION_RING,
INTEL_SUBMISSION_ELSP,
INTEL_SUBMISSION_GUC,
};
struct gt_defaults {
u32 min_freq;
u32 max_freq;
u8 rps_up_threshold;
u8 rps_down_threshold;
};
enum intel_gt_type {
GT_PRIMARY,
GT_TILE,
GT_MEDIA,
};
struct intel_gt {
struct drm_i915_private *i915;
const char *name;
enum intel_gt_type type;
struct intel_uncore *uncore;
struct i915_ggtt *ggtt;
struct intel_uc uc;
struct intel_gsc gsc;
struct intel_wopcm wopcm;
struct {
/* Serialize global tlb invalidations */
struct mutex invalidate_lock;
/*
* Batch TLB invalidations
*
* After unbinding the PTE, we need to ensure the TLB
* are invalidated prior to releasing the physical pages.
* But we only need one such invalidation for all unbinds,
* so we track how many TLB invalidations have been
* performed since unbind the PTE and only emit an extra
* invalidate if no full barrier has been passed.
*/
seqcount_mutex_t seqno;
} tlb;
struct i915_wa_list wa_list;
struct intel_gt_timelines {
spinlock_t lock; /* protects active_list */
Annotation
- Immediate include surface: `linux/ktime.h`, `linux/list.h`, `linux/llist.h`, `linux/mutex.h`, `linux/notifier.h`, `linux/seqlock.h`, `linux/spinlock.h`, `linux/types.h`.
- Detected declarations: `struct drm_i915_private`, `struct i915_ggtt`, `struct intel_engine_cs`, `struct intel_uncore`, `struct intel_mmio_range`, `struct gt_defaults`, `struct intel_gt`, `struct intel_gt_timelines`, `struct intel_gt_requests`, `struct intel_gt_info`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.