mirror of
https://github.com/torvalds/linux.git
synced 2026-04-19 23:34:00 -04:00
There are instances (such as non-recoverable GPU page faults) where NVKM decides that a channel's context is no longer viable, and will be removed from the runlist. This commit notifies the owner of the channel when this happens, so it has the opportunity to take some kind of recovery action instead of hanging. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
34 lines
1.3 KiB
C
34 lines
1.3 KiB
C
#ifndef __NVKM_FIFO_CHAN_H__
|
|
#define __NVKM_FIFO_CHAN_H__
|
|
#define nvkm_fifo_chan(p) container_of((p), struct nvkm_fifo_chan, object)
|
|
#include "priv.h"
|
|
|
|
struct nvkm_fifo_chan_func {
|
|
void *(*dtor)(struct nvkm_fifo_chan *);
|
|
void (*init)(struct nvkm_fifo_chan *);
|
|
void (*fini)(struct nvkm_fifo_chan *);
|
|
int (*ntfy)(struct nvkm_fifo_chan *, u32 type, struct nvkm_event **);
|
|
int (*engine_ctor)(struct nvkm_fifo_chan *, struct nvkm_engine *,
|
|
struct nvkm_object *);
|
|
void (*engine_dtor)(struct nvkm_fifo_chan *, struct nvkm_engine *);
|
|
int (*engine_init)(struct nvkm_fifo_chan *, struct nvkm_engine *);
|
|
int (*engine_fini)(struct nvkm_fifo_chan *, struct nvkm_engine *,
|
|
bool suspend);
|
|
int (*object_ctor)(struct nvkm_fifo_chan *, struct nvkm_object *);
|
|
void (*object_dtor)(struct nvkm_fifo_chan *, int);
|
|
};
|
|
|
|
int nvkm_fifo_chan_ctor(const struct nvkm_fifo_chan_func *, struct nvkm_fifo *,
|
|
u32 size, u32 align, bool zero, u64 vm, u64 push,
|
|
u64 engines, int bar, u32 base, u32 user,
|
|
const struct nvkm_oclass *, struct nvkm_fifo_chan *);
|
|
|
|
struct nvkm_fifo_chan_oclass {
|
|
int (*ctor)(struct nvkm_fifo *, const struct nvkm_oclass *,
|
|
void *data, u32 size, struct nvkm_object **);
|
|
struct nvkm_sclass base;
|
|
};
|
|
|
|
int gf100_fifo_chan_ntfy(struct nvkm_fifo_chan *, u32, struct nvkm_event **);
|
|
#endif
|