drm/msm: devcoredump iommu fault support
[linux-2.6-microblaze.git] / drivers / gpu / drm / msm / msm_gpu.h
index 18baf93..ef41ec0 100644 (file)
@@ -71,6 +71,15 @@ struct msm_gpu_funcs {
        uint32_t (*get_rptr)(struct msm_gpu *gpu, struct msm_ringbuffer *ring);
 };
 
+/* Additional state for iommu faults: */
+struct msm_gpu_fault_info {
+       u64 ttbr0;
+       unsigned long iova;
+       int flags;
+       const char *type;
+       const char *block;
+};
+
 struct msm_gpu {
        const char *name;
        struct drm_device *dev;
@@ -118,23 +127,19 @@ struct msm_gpu {
        struct clk *ebi1_clk, *core_clk, *rbbmtimer_clk;
        uint32_t fast_rate;
 
-       /* The gfx-mem interconnect path that's used by all GPU types. */
-       struct icc_path *icc_path;
-
-       /*
-        * Second interconnect path for some A3xx and all A4xx GPUs to the
-        * On Chip MEMory (OCMEM).
-        */
-       struct icc_path *ocmem_icc_path;
-
        /* Hang and Inactivity Detection:
         */
 #define DRM_MSM_INACTIVE_PERIOD   66 /* in ms (roughly four frames) */
 
-#define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */
-#define DRM_MSM_HANGCHECK_JIFFIES msecs_to_jiffies(DRM_MSM_HANGCHECK_PERIOD)
+#define DRM_MSM_HANGCHECK_DEFAULT_PERIOD 500 /* in ms */
        struct timer_list hangcheck_timer;
 
+       /* Fault info for most recent iova fault: */
+       struct msm_gpu_fault_info fault_info;
+
+       /* work for handling GPU ioval faults: */
+       struct kthread_work fault_work;
+
        /* work for handling GPU recovery: */
        struct kthread_work recover_work;
 
@@ -242,6 +247,8 @@ struct msm_gpu_state {
        char *comm;
        char *cmd;
 
+       struct msm_gpu_fault_info fault_info;
+
        int nr_bos;
        struct msm_gpu_state_bo *bos;
 };