Files
linux/drivers/gpu/drm/xe/xe_range_fence.h
Sanjay Yadav dd5d11b657 drm/xe: Fix spelling and typos across Xe driver files
Corrected various spelling mistakes and typos in multiple
files under the Xe directory. These fixes improve clarity
and maintain consistency in documentation.

v2
- Replaced all instances of "XE" with "Xe" where it referred
  to the driver name
- of -> for
- Typical -> Typically

v3
- Revert "Xe" to "XE" for macro prefix reference

Signed-off-by: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patch.msgid.link/20251023121453.1182035-2-sanjay.kumar.yadav@intel.com
2025-10-27 13:00:11 +00:00

76 lines
2.1 KiB
C

/* SPDX-License-Identifier: MIT */
/*
* Copyright © 2023 Intel Corporation
*/
#ifndef _XE_RANGE_FENCE_H_
#define _XE_RANGE_FENCE_H_
#include <linux/dma-fence.h>
#include <linux/rbtree.h>
#include <linux/types.h>
struct xe_range_fence_tree;
struct xe_range_fence;
/** struct xe_range_fence_ops - Xe range fence ops */
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