mem-ruby: Fix deadlock in VIPERCoalescer
authorKyle Roarty <kyleroarty1716@gmail.com>
Tue, 10 Nov 2020 06:36:05 +0000 (00:36 -0600)
committerKyle Roarty <kyleroarty1716@gmail.com>
Tue, 17 Nov 2020 17:08:24 +0000 (17:08 +0000)
commita107f62b41e37c421344e3c88ebf32be7d6020e9
treee73e2b8788c9912f27d62497dbd085c8e56e034c
parent5f6ebe752e1e7e5b97b175478abbfb90b1ec5ff0
mem-ruby: Fix deadlock in VIPERCoalescer

Certain instructions (some atomics and buffer_wbinvl1_vol) deadlock
in the coalescer, where sendTimingReq fails, fails a retry, and then
never retries again.

This fix sets m_cache_inv_pkt to null before calling
completeHitCallback(), as that allows the failed packets to be retried
again.

Change-Id: I4a51c741360f385f8b4c3f2a31a9410f18e095d9
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/37477
Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com>
Reviewed-by: Matthew Poremba <matthew.poremba@amd.com>
Maintainer: Matt Sinclair <mattdsinclair@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/ruby/system/VIPERCoalescer.cc