From fef6a97f935d7cc1c980c6f941b7454eddab56d5 Mon Sep 17 00:00:00 2001 From: hahaxxz <53554331+hahaxxz@users.noreply.github.com> Date: Tue, 18 Jun 2024 03:45:11 +0800 Subject: [PATCH] mem-ruby: This commit fixes MI_example protocol (#1236) fix two bugs in MI_example-dir.sm: 1. Directory cannot handle DMA_READ & DMA_WRITE events in M_DRDI state. 2. Directory cannot handle PUTX_NotOwner events in {M_DWR, M_DRD, M_DRDI, M_DWRI} state. Github Issue: https://github.com/gem5/gem5/issues/1210 Change-Id: I52a9d674ce0688dcfbbcc2b583f17de95afdeb87 --- src/mem/ruby/protocol/MI_example-dir.sm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mem/ruby/protocol/MI_example-dir.sm b/src/mem/ruby/protocol/MI_example-dir.sm index bbaa7d0789..c57cdad4ab 100644 --- a/src/mem/ruby/protocol/MI_example-dir.sm +++ b/src/mem/ruby/protocol/MI_example-dir.sm @@ -535,7 +535,7 @@ machine(MachineType:Directory, "Directory protocol") z_recycleRequestQueue; } - transition({IM, MI, ID, ID_W}, {DMA_READ, DMA_WRITE} ) { + transition({IM, MI, ID, ID_W, M_DRDI}, {DMA_READ, DMA_WRITE} ) { y_recycleDMARequestQueue; } @@ -651,4 +651,9 @@ machine(MachineType:Directory, "Directory protocol") b_sendWriteBackNack; i_popIncomingRequestQueue; } + + transition({M_DWR, M_DRD, M_DRDI, M_DWRI}, PUTX_NotOwner) { + b_sendWriteBackNack; + i_popIncomingRequestQueue; + } }