[PATCH v3 16/24] drm/amdkfd: use bit operation set debug trap
James Zhu
James.Zhu at amd.com
Fri Dec 15 15:59:43 UTC 2023
1st level TMA's 2nd byte which used for trap type setting,
to use bit operation to change selected bit only.
Signed-off-by: James Zhu <James.Zhu at amd.com>
---
drivers/gpu/drm/amd/amdkfd/kfd_process.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 71df51fcc1b0..1a31b556a5ff 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -1440,13 +1440,23 @@ bool kfd_process_xnack_mode(struct kfd_process *p, bool supported)
return true;
}
+/* bit offset in 1st-level TMA's 2nd byte which used for KFD_TRAP_TYPE_BIT */
+enum KFD_TRAP_TYPE_BIT {
+ KFD_TRAP_TYPE_DEBUG = 0, /* bit 0 for debug trap */
+ KFD_TRAP_TYPE_HOST,
+ KFD_TRAP_TYPE_STOCHASTIC,
+};
+
void kfd_process_set_trap_debug_flag(struct qcm_process_device *qpd,
bool enabled)
{
if (qpd->cwsr_kaddr) {
- uint64_t *tma =
- (uint64_t *)(qpd->cwsr_kaddr + KFD_CWSR_TMA_OFFSET);
- tma[2] = enabled;
+ volatile unsigned long *tma =
+ (volatile unsigned long *)(qpd->cwsr_kaddr + KFD_CWSR_TMA_OFFSET);
+ if (enabled)
+ set_bit(KFD_TRAP_TYPE_DEBUG, &tma[2]);
+ else
+ clear_bit(KFD_TRAP_TYPE_DEBUG, &tma[2]);
}
}
--
2.25.1
More information about the amd-gfx
mailing list