61 lines · c
1#ifndef __NVKM_FAULT_PRIV_H__2#define __NVKM_FAULT_PRIV_H__3#define nvkm_fault_buffer(p) container_of((p), struct nvkm_fault_buffer, object)4#define nvkm_fault(p) container_of((p), struct nvkm_fault, subdev)5#include <subdev/fault.h>6 7#include <core/event.h>8#include <core/object.h>9 10struct nvkm_fault_buffer {11 struct nvkm_object object;12 struct nvkm_fault *fault;13 int id;14 int entries;15 u32 get;16 u32 put;17 struct nvkm_memory *mem;18 u64 addr;19 20 struct nvkm_inth inth;21};22 23int nvkm_fault_new_(const struct nvkm_fault_func *, struct nvkm_device *, enum nvkm_subdev_type,24 int inst, struct nvkm_fault **);25 26struct nvkm_fault_func {27 int (*oneinit)(struct nvkm_fault *);28 void (*init)(struct nvkm_fault *);29 void (*fini)(struct nvkm_fault *);30 void (*intr)(struct nvkm_fault *);31 struct {32 int nr;33 u32 entry_size;34 void (*info)(struct nvkm_fault_buffer *);35 u64 (*pin)(struct nvkm_fault_buffer *);36 void (*init)(struct nvkm_fault_buffer *);37 void (*fini)(struct nvkm_fault_buffer *);38 void (*intr)(struct nvkm_fault_buffer *, bool enable);39 } buffer;40 struct {41 struct nvkm_sclass base;42 int rp;43 } user;44};45 46void gp100_fault_buffer_intr(struct nvkm_fault_buffer *, bool enable);47void gp100_fault_buffer_fini(struct nvkm_fault_buffer *);48void gp100_fault_buffer_init(struct nvkm_fault_buffer *);49u64 gp100_fault_buffer_pin(struct nvkm_fault_buffer *);50void gp100_fault_buffer_info(struct nvkm_fault_buffer *);51void gv100_fault_buffer_process(struct work_struct *);52void gp100_fault_intr(struct nvkm_fault *);53 54u64 gp10b_fault_buffer_pin(struct nvkm_fault_buffer *);55 56int gv100_fault_oneinit(struct nvkm_fault *);57 58int nvkm_ufault_new(struct nvkm_device *, const struct nvkm_oclass *,59 void *, u32, struct nvkm_object **);60#endif61