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