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