| #ifndef __NVKM_FAULT_H__ |
| #define __NVKM_FAULT_H__ |
| #include <core/subdev.h> |
| #include <core/event.h> |
| |
| struct nvkm_fault { |
| const struct nvkm_fault_func *func; |
| struct nvkm_subdev subdev; |
| |
| struct nvkm_inth info_fault; |
| |
| struct nvkm_fault_buffer *buffer[2]; |
| int buffer_nr; |
| |
| #define NVKM_FAULT_BUFFER_EVENT_PENDING BIT(0) |
| struct nvkm_event event; |
| |
| struct nvkm_event_ntfy nrpfb; |
| struct work_struct nrpfb_work; |
| |
| struct nvkm_device_oclass user; |
| }; |
| |
| struct nvkm_fault_data { |
| u64 addr; |
| u64 inst; |
| u64 time; |
| u8 engine; |
| u8 valid; |
| u8 gpc; |
| u8 hub; |
| u8 access; |
| u8 client; |
| u8 reason; |
| }; |
| |
| int gp100_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **); |
| int gp10b_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **); |
| int gv100_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **); |
| int tu102_fault_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fault **); |
| #endif |