This keeps track of kfd system mem used and kfd ttm mem used.
Signed-off-by: Alex Sierra <alex.sierra@amd.com>
Reviewed-by: Philip Yang <Philip.Yang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
 struct amdgpu_amdkfd_fence *amdgpu_amdkfd_fence_create(u64 context,
                                struct mm_struct *mm,
                                struct svm_range_bo *svm_bo);
+#if defined(CONFIG_DEBUG_FS)
+int kfd_debugfs_kfd_mem_limits(struct seq_file *m, void *data);
+#endif
 #if IS_ENABLED(CONFIG_HSA_AMD)
 bool amdkfd_fence_check_mm(struct dma_fence *f, struct mm_struct *mm);
 struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f);
 
        }
        return false;
 }
+
+#if defined(CONFIG_DEBUG_FS)
+
+int kfd_debugfs_kfd_mem_limits(struct seq_file *m, void *data)
+{
+
+       spin_lock(&kfd_mem_limit.mem_limit_lock);
+       seq_printf(m, "System mem used %lldM out of %lluM\n",
+                 (kfd_mem_limit.system_mem_used >> 20),
+                 (kfd_mem_limit.max_system_mem_limit >> 20));
+       seq_printf(m, "TTM mem used %lldM out of %lluM\n",
+                 (kfd_mem_limit.ttm_mem_used >> 20),
+                 (kfd_mem_limit.max_ttm_mem_limit >> 20));
+       spin_unlock(&kfd_mem_limit.mem_limit_lock);
+
+       return 0;
+}
+
+#endif
 
                            kfd_debugfs_rls_by_device, &kfd_debugfs_fops);
        debugfs_create_file("hang_hws", S_IFREG | 0200, debugfs_root,
                            kfd_debugfs_hang_hws_read, &kfd_debugfs_hang_hws_fops);
+       debugfs_create_file("mem_limit", S_IFREG | 0200, debugfs_root,
+                           kfd_debugfs_kfd_mem_limits, &kfd_debugfs_fops);
 }
 
 void kfd_debugfs_fini(void)