linux/drivers/gpu/drm/i915/i915_sw_fence_work.h
Chris Wilson 8e458fe2ee drm/i915: Generalise the clflush dma-worker
Extract the dma-fence worker used by clflush for wider use, as we
anticipate using workers coupled to dma-fences more frequently.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190821191606.17001-1-chris@chris-wilson.co.uk
2019-08-22 08:27:44 +01:00

45 lines
927 B
C

/* SPDX-License-Identifier: MIT */
/*
* Copyright © 2019 Intel Corporation
*/
#ifndef I915_SW_FENCE_WORK_H
#define I915_SW_FENCE_WORK_H
#include <linux/dma-fence.h>
#include <linux/spinlock.h>
#include <linux/workqueue.h>
#include "i915_sw_fence.h"
struct dma_fence_work;
struct dma_fence_work_ops {
const char *name;
int (*work)(struct dma_fence_work *f);
void (*release)(struct dma_fence_work *f);
};
struct dma_fence_work {
struct dma_fence dma;
spinlock_t lock;
struct i915_sw_fence chain;
struct i915_sw_dma_fence_cb cb;
struct work_struct work;
const struct dma_fence_work_ops *ops;
};
void dma_fence_work_init(struct dma_fence_work *f,
const struct dma_fence_work_ops *ops);
int dma_fence_work_chain(struct dma_fence_work *f, struct dma_fence *signal);
static inline void dma_fence_work_commit(struct dma_fence_work *f)
{
i915_sw_fence_commit(&f->chain);
}
#endif /* I915_SW_FENCE_WORK_H */