drivers/gpu/drm/xe/xe_range_fence.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_range_fence.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/xe/xe_range_fence.h- Extension
.h- Size
- 2191 bytes
- Lines
- 76
- 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/dma-fence.hlinux/rbtree.hlinux/types.h
Detected Declarations
struct xe_range_fence_treestruct xe_range_fencestruct xe_range_fence_opsstruct xe_range_fencestruct xe_range_fence_tree
Annotated Snippet
struct xe_range_fence_ops {
/** @free: free range fence op */
void (*free)(struct xe_range_fence *rfence);
};
/** struct xe_range_fence - Xe range fence (address conflict tracking) */
struct xe_range_fence {
/** @rb: RB tree node inserted into interval tree */
struct rb_node rb;
/** @start: start address of range fence is interval tree */
u64 start;
/** @last: last address (inclusive) of range fence is interval tree */
u64 last;
/** @__subtree_last: interval tree internal usage */
u64 __subtree_last;
/**
* @fence: fence signals address in range fence no longer has conflict
*/
struct dma_fence *fence;
/** @tree: interval tree which range fence belongs to */
struct xe_range_fence_tree *tree;
/**
* @cb: callback when fence signals to remove range fence free from interval tree
*/
struct dma_fence_cb cb;
/** @link: used to defer free of range fence to non-irq context */
struct llist_node link;
/** @ops: range fence ops */
const struct xe_range_fence_ops *ops;
};
/** struct xe_range_fence_tree - interval tree to store range fences */
struct xe_range_fence_tree {
/** @root: interval tree root */
struct rb_root_cached root;
/** @list: list of pending range fences to be freed */
struct llist_head list;
};
extern const struct xe_range_fence_ops xe_range_fence_kfree_ops;
struct xe_range_fence *
xe_range_fence_tree_first(struct xe_range_fence_tree *tree, u64 start,
u64 last);
struct xe_range_fence *
xe_range_fence_tree_next(struct xe_range_fence *rfence, u64 start, u64 last);
void xe_range_fence_tree_init(struct xe_range_fence_tree *tree);
void xe_range_fence_tree_fini(struct xe_range_fence_tree *tree);
int xe_range_fence_insert(struct xe_range_fence_tree *tree,
struct xe_range_fence *rfence,
const struct xe_range_fence_ops *ops,
u64 start, u64 end,
struct dma_fence *fence);
#endif
Annotation
- Immediate include surface: `linux/dma-fence.h`, `linux/rbtree.h`, `linux/types.h`.
- Detected declarations: `struct xe_range_fence_tree`, `struct xe_range_fence`, `struct xe_range_fence_ops`, `struct xe_range_fence`, `struct xe_range_fence_tree`.
- 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.