mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 02:46:06 +00:00
e183910ae4
Since sometimes a lock is required to initialize a seqno fence, and it might be desirable not to hold that lock while performing memory allocations, split the lrc seqno fence creation up into an allocation phase and an initialization phase. Since lrc seqno fences under the hood are hw_fences, do the same for these and remove the xe_hw_fence_create() function since it is not used anymore. Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240527135912.152156-3-thomas.hellstrom@linux.intel.com
34 lines
1006 B
C
34 lines
1006 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2021 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_HW_FENCE_H_
|
|
#define _XE_HW_FENCE_H_
|
|
|
|
#include "xe_hw_fence_types.h"
|
|
|
|
/* Cause an early wrap to catch wrapping errors */
|
|
#define XE_FENCE_INITIAL_SEQNO (-127)
|
|
|
|
int xe_hw_fence_module_init(void);
|
|
void xe_hw_fence_module_exit(void);
|
|
|
|
void xe_hw_fence_irq_init(struct xe_hw_fence_irq *irq);
|
|
void xe_hw_fence_irq_finish(struct xe_hw_fence_irq *irq);
|
|
void xe_hw_fence_irq_run(struct xe_hw_fence_irq *irq);
|
|
void xe_hw_fence_irq_stop(struct xe_hw_fence_irq *irq);
|
|
void xe_hw_fence_irq_start(struct xe_hw_fence_irq *irq);
|
|
|
|
void xe_hw_fence_ctx_init(struct xe_hw_fence_ctx *ctx, struct xe_gt *gt,
|
|
struct xe_hw_fence_irq *irq, const char *name);
|
|
void xe_hw_fence_ctx_finish(struct xe_hw_fence_ctx *ctx);
|
|
|
|
struct dma_fence *xe_hw_fence_alloc(void);
|
|
|
|
void xe_hw_fence_free(struct dma_fence *fence);
|
|
|
|
void xe_hw_fence_init(struct dma_fence *fence, struct xe_hw_fence_ctx *ctx,
|
|
struct iosys_map seqno_map);
|
|
#endif
|