diff options
| author | Vladimir Kondratiev <[email protected]> | 2024-09-02 13:21:10 +0300 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2024-10-28 11:05:14 +0530 |
| commit | 1a2e507d2347500e6c994e005fb9725b2a9a8e8f (patch) | |
| tree | c126365a1447ee70165c50ece0d160dc68eb31f5 | |
| parent | 62447cd7aa17097cefdb0d7a2f1312ff55fcda27 (diff) | |
lib: sbi: fix number of PMP entries detection
CSR_PMPADDRn lower bits may read all-0 or all-1, depending on
the configuration. For TOR it is all-0, for NAPOT - all-1.
Thus if PMP entry was pre-configured as NAPOT, original code would
stop scanning because value read back not equal to the written one.
Mask lower bits before comparison to fix this
Signed-off-by: Vladimir Kondratiev <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
| -rw-r--r-- | lib/sbi/sbi_hart.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index dc0863a3..0451fcb5 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -825,7 +825,7 @@ static int hart_detect_features(struct sbi_scratch *scratch) } else { \ csr_write_allowed(__csr, &trap, __wrval); \ if (!trap.cause) { \ - if (csr_swap(__csr, oldval) == __wrval) \ + if ((csr_swap(__csr, oldval) & __wrval) == __wrval) \ (hfeatures->__field)++; \ else \ goto __skip; \ |
