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