187c44fe448e9af4efb9f632855d8822437c222b
There are race conditions while running several benchmarks, where the DMA engine and the CorePair simultaneously send requests for the same block. This patch fixes two scenarios (a) If the request from the DMA engine arrives before the one from the CorePair, the directory controller records it as a pending request. However, once the DMA request is serviced, the directory doesn't check for pending requests. The CorePair, consequently, never sees a response to its request and this results in a Deadlock. Added call to wakeUpDependents in the transition from BDR_Pm to U Added call to wakeUpDependents in the transition from BDW_P to U (b) If the request from the CorePair is being serviced by the directory and the DMA requests for the same block, this causes an invalid transition because the current coherence doesn't take care of this scenario. Added transition state where the requests from DMA are added to the stall buffer. Updated B to U CoreUnblock transition to check all buffers, as the DMA requests were being placed later in the stall buffer than was being checked Change-Id: I5a76efef97723bc53cf239ea7e112f84fc874ef8 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/31996 Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com> Reviewed-by: Bradford Beckmann <brad.beckmann@amd.com> Maintainer: Bradford Beckmann <brad.beckmann@amd.com> Tested-by: kokoro <noreply+kokoro@google.com>
This is the gem5 simulator. The main website can be found at http://www.gem5.org A good starting point is http://www.gem5.org/about, and for more information about building the simulator and getting started please see http://www.gem5.org/documentation and http://www.gem5.org/documentation/learning_gem5/introduction. To build gem5, you will need the following software: g++ or clang, Python (gem5 links in the Python interpreter), SCons, SWIG, zlib, m4, and lastly protobuf if you want trace capture and playback support. Please see http://www.gem5.org/documentation/general_docs/building for more details concerning the minimum versions of the aforementioned tools. Once you have all dependencies resolved, type 'scons build/<ARCH>/gem5.opt' where ARCH is one of ARM, NULL, MIPS, POWER, SPARC, or X86. This will build an optimized version of the gem5 binary (gem5.opt) for the the specified architecture. See http://www.gem5.org/documentation/general_docs/building for more details and options. The basic source release includes these subdirectories: - configs: example simulation configuration scripts - ext: less-common external packages needed to build gem5 - src: source code of the gem5 simulator - system: source for some optional system software for simulated systems - tests: regression tests - util: useful utility programs and files To run full-system simulations, you will need compiled system firmware (console and PALcode for Alpha), kernel binaries and one or more disk images. If you have questions, please send mail to gem5-users@gem5.org Enjoy using gem5 and please share your modifications and extensions.
Description