1 #ifndef __NVKM_FAULT_H__
2 #define __NVKM_FAULT_H__
3 #include <core/subdev.h>
4 #include <core/event.h>
5 #include <core/notify.h>
6 
7 struct nvkm_fault {
8 	const struct nvkm_fault_func *func;
9 	struct nvkm_subdev subdev;
10 
11 	struct nvkm_fault_buffer *buffer[2];
12 	int buffer_nr;
13 
14 	struct nvkm_event event;
15 
16 	struct nvkm_notify nrpfb;
17 
18 	struct nvkm_device_oclass user;
19 };
20 
21 struct nvkm_fault_data {
22 	u64  addr;
23 	u64  inst;
24 	u64  time;
25 	u8 engine;
26 	u8  valid;
27 	u8    gpc;
28 	u8    hub;
29 	u8 access;
30 	u8 client;
31 	u8 reason;
32 };
33 
34 int gp100_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **);
35 int gp10b_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **);
36 int gv100_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **);
37 int tu102_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **);
38 #endif
39