Add interface to set debugger trap flag in TMA region.

Signed-off-by: Lijo Lazar <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.c | 19 ++++++++++++++++++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h |  3 +++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.c
index 70f444afece0..663b91c8e6f3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.c
@@ -19,7 +19,6 @@
  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  * OTHER DEALINGS IN THE SOFTWARE.
  */
-
 #include <drm/drm_exec.h>
 
 #include "amdgpu.h"
@@ -614,4 +613,22 @@ int amdgpu_cwsr_ioctl(struct drm_device *dev, void *data, 
struct drm_file *filp)
        }
 
        return r;
+}
+
+int amdgpu_cwsr_set_trap_debug_flag(struct amdgpu_device *adev,
+                                   struct amdgpu_cwsr_trap_obj *cwsr_obj,
+                                   bool enabled)
+{
+       uint64_t *l1tma;
+
+       if (!amdgpu_cwsr_is_enabled(adev))
+               return -EOPNOTSUPP;
+
+       if (!cwsr_obj)
+               return -EINVAL;
+
+       l1tma = (uint64_t *)(cwsr_obj->tma_cpu_addr);
+       l1tma[2] = enabled;
+
+       return 0;
 }
\ No newline at end of file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h
index c9f61e393fde..a32044b07b45 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h
@@ -93,5 +93,8 @@ static inline bool amdgpu_cwsr_has_dbg_wa(struct 
amdgpu_device *adev)
 
 int amdgpu_cwsr_ioctl(struct drm_device *dev, void *data,
                      struct drm_file *filp);
+int amdgpu_cwsr_set_trap_debug_flag(struct amdgpu_device *adev,
+                                   struct amdgpu_cwsr_trap_obj *cwsr_obj,
+                                   bool enabled);
 
 #endif
-- 
2.49.0

Reply via email to