mem-ruby: Fix deadlock in GPU_VIPER when issuing atomic requests

When a compute unit issues several requests to the same line,
the requests wait in the L2 if it is a writeback cache. If the line is
invalid initially and the first request is atomic in nature, the L2
cache issues a request to main memory. On data return, the cache line
transitions to M but doesn't wake up the other requests, resulting in
a deadlock. This commit adds a wakeup call on data return for atomics
and fixes potential deadlocks.

Change-Id: I8200ce6e77da7c8b4db285c0cc8b8ca0dfa7d720
This commit is contained in:
Vishnu Ramadas
2024-06-10 22:16:27 -05:00
parent d834e8bf4e
commit 943d1f1453

View File

@@ -1299,6 +1299,7 @@ machine(MachineType:TCC, "TCC Cache")
wardb_writeAtomicResponseDirtyBytes;
pa_performAtomic;
baplr_sendBypassedAtomicPerformedLocallyResponse;
wada_wakeUpAllDependentsAddr;
dt_deallocateTBE;
pr_popResponseQueue;
}