From bc63da39dc3c92e9a2a7c55145645cfcb8c96a5c Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 15 May 2023 17:25:59 -0700 Subject: [PATCH] arch-riscv: Fix WFI for O3 CPU This commit: https://gem5-review.googlesource.com/c/public/gem5/+/61511 introduced a bug where the O3 CPU hangs. This is because WFI must be tagged as `IsNonSpeculative`, `IsQuiesce`, and `IsSerializeAfter` to function correctly with O3 CPUs. Change-Id: I8b6cb049710d05f37f89a9ce22acc604112bc445 Issue-on: https://gem5.atlassian.net/browse/GEM5-1323 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70657 Maintainer: Jason Lowe-Power Reviewed-by: Roger Chang Reviewed-by: Jui-min Lee Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- src/arch/riscv/isa/decoder.isa | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arch/riscv/isa/decoder.isa b/src/arch/riscv/isa/decoder.isa index f22efb0bf0..3acd80ebf0 100644 --- a/src/arch/riscv/isa/decoder.isa +++ b/src/arch/riscv/isa/decoder.isa @@ -2278,7 +2278,8 @@ decode QUADRANT default Unknown::unknown() { && xc->readMiscReg(MISCREG_NMIP) == 0) { tc->quiesce(); } - }}, No_OpClass); + }}, IsNonSpeculative, IsQuiesce, + IsSerializeAfter, No_OpClass); } 0x9: sfence_vma({{ STATUS status = xc->readMiscReg(MISCREG_STATUS);