On 9/3/2026 16:08, Gang Ba wrote:

@@ -240,6 +254,11 @@ bool kfd_set_dbg_ev_from_interrupt(struct kfd_node *dev,
                        mutex_unlock(&p->mutex);
                } else if (trap_mask & KFD_EC_MASK(EC_DEVICE_MEMORY_VIOLATION)) 
{
                        kfd_evict_process_device(pdd);
+
+                       /* GPR cleaner shader for MI2XX */
+                       if (KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 2))
+                               gfx942_clean_fault(pdd);
+
                        kfd_signal_vm_fault_event(pdd, NULL, exception_data);
signaled_to_debugger_or_runtime = true;

This code runs conditionally on:

if (!kfd_dbg_ev_raise(trap_mask, p, dev, doorbell_id, true,
                      exception_data, exception_data_size)) {

It returns true if the process or debugger (I'm unclear on the logic) receives the exception. This is not what we want: this code must run unconditionally.

Reply via email to