From: Lijo Lazar <[email protected]> Add interface to set debugger trap flag in TMA region.
Signed-off-by: Lijo Lazar <[email protected]> Acked-by: Alex Deucher <[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 1db74e1fc97d..836bb5e314af 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" @@ -636,4 +635,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 2cf485111e8f..06036954627e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cwsr.h @@ -92,5 +92,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.34.1
