[gem5-dev] Change in gem5/gem5[develop]: arch-riscv: update all pmp rules on pmp addr update

2021-06-22 Thread Ayaz Akram (Gerrit) via gem5-dev
Ayaz Akram has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/47059 )


Change subject: arch-riscv: update all pmp rules on pmp addr update
..

arch-riscv: update all pmp rules on pmp addr update

Update in a pmp addr register can have effect on other
pmp rules, for example if TOR mode is used.
According to specs, update in a pmp entry is made using
an update to a pmpaddr reg, followed by an update to pmpcfg
reg which should be followed by sfence.vma. Currently,
in gem5 update in cfg register (combination of 8 pmpcfg
regs.), which should happen after a pmpaddr reg. update,
leads to an update in all pmp rules. However, there seems to
be a case where we receive an interrupt right before execution
of an instruction to update cfg register, which leads to unindented
side-effects of S mode addresses falsely falling into a wrong
pmp region. Updating pmp rules right after pmpaddr update, might
be redundant, but should not break anything otherwise.

Change-Id: I3776ee6ba40e1249c98d11076a2d176de40a957e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/47059
Reviewed-by: Jason Lowe-Power 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/arch/riscv/pmp.cc
1 file changed, 3 insertions(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/riscv/pmp.cc b/src/arch/riscv/pmp.cc
index e9fcb7b..c0e53bf 100644
--- a/src/arch/riscv/pmp.cc
+++ b/src/arch/riscv/pmp.cc
@@ -204,7 +204,9 @@
 // will convert it into a range, once cfg
 // reg is written
 pmpTable[pmp_index].rawAddr = this_addr;
-pmpUpdateRule(pmp_index);
+for (int index = 0; index < pmpEntries; index++) {
+pmpUpdateRule(index);
+}
 }

 bool

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/47059
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I3776ee6ba40e1249c98d11076a2d176de40a957e
Gerrit-Change-Number: 47059
Gerrit-PatchSet: 2
Gerrit-Owner: Ayaz Akram 
Gerrit-Reviewer: Ayaz Akram 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: arch-riscv: update all pmp rules on pmp addr update

2021-06-22 Thread Ayaz Akram (Gerrit) via gem5-dev
Ayaz Akram has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/47059 )



Change subject: arch-riscv: update all pmp rules on pmp addr update
..

arch-riscv: update all pmp rules on pmp addr update

Update in a pmp addr register can have effect on other
pmp rules, for example if TOR mode is used.
According to specs, update in a pmp entry is made using
an update to a pmpaddr reg, followed by an update to pmpcfg
reg which should be followed by sfence.vma. Currently,
in gem5 update in cfg register (combination of 8 pmpcfg
regs.), which should happen after a pmpaddr reg. update,
leads to an update in all pmp rules. However, there seems to
be a case where we receive an interrupt right before execution
of an instruction to update cfg register, which leads to unindented
side-effects of S mode addresses falsely falling into a wrong
pmp region. Updating pmp rules right after pmpaddr update, might
be redundant, but should not break anything otherwise.

Change-Id: I3776ee6ba40e1249c98d11076a2d176de40a957e
---
M src/arch/riscv/pmp.cc
1 file changed, 3 insertions(+), 1 deletion(-)



diff --git a/src/arch/riscv/pmp.cc b/src/arch/riscv/pmp.cc
index e9fcb7b..c0e53bf 100644
--- a/src/arch/riscv/pmp.cc
+++ b/src/arch/riscv/pmp.cc
@@ -204,7 +204,9 @@
 // will convert it into a range, once cfg
 // reg is written
 pmpTable[pmp_index].rawAddr = this_addr;
-pmpUpdateRule(pmp_index);
+for (int index = 0; index < pmpEntries; index++) {
+pmpUpdateRule(index);
+}
 }

 bool

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/47059
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I3776ee6ba40e1249c98d11076a2d176de40a957e
Gerrit-Change-Number: 47059
Gerrit-PatchSet: 1
Gerrit-Owner: Ayaz Akram 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s