From: Mayuresh Chitale <mchitale@ventanamicro.com>
To: opensbi@lists.infradead.org
Subject: [RFC PATCH v1 2/3] lib: sbi: Detect Smstateen CSRs at boot-time
Date: Mon, 21 Mar 2022 10:45:27 +0530 [thread overview]
Message-ID: <20220321051528.20143-3-mchitale@ventanamicro.com> (raw)
In-Reply-To: <20220321051528.20143-1-mchitale@ventanamicro.com>
Extend HART feature detection to discover Smstateen CSRs at boot-time
and configure mstateen envcfg bit depending on availability of
menvcfg CSR.
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
---
include/sbi/sbi_hart.h | 4 +++-
lib/sbi/sbi_hart.c | 20 +++++++++++++++++++-
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/include/sbi/sbi_hart.h b/include/sbi/sbi_hart.h
index 93be7ed..b5345f4 100644
--- a/include/sbi/sbi_hart.h
+++ b/include/sbi/sbi_hart.h
@@ -30,9 +30,11 @@ enum sbi_hart_features {
SBI_HART_HAS_MENVCFG = (1 << 6),
/** HART has SSTC extension implemented in hardware */
SBI_HART_HAS_SSTC = (1 << 7),
+ /** HART has mstateen CSR **/
+ SBI_HART_HAS_SMSTATEEN = (1 << 8),
/** Last index of Hart features*/
- SBI_HART_HAS_LAST_FEATURE = SBI_HART_HAS_SSTC,
+ SBI_HART_HAS_LAST_FEATURE = SBI_HART_HAS_SMSTATEEN,
};
struct sbi_scratch;
diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
index 8c9cad2..9d0c435 100644
--- a/lib/sbi/sbi_hart.c
+++ b/lib/sbi/sbi_hart.c
@@ -44,6 +44,7 @@ static void mstatus_init(struct sbi_scratch *scratch)
unsigned int num_mhpm = sbi_hart_mhpm_count(scratch);
uint64_t mhpmevent_init_val = 0;
unsigned long menvcfg_val = 0;
+ unsigned long mstateen_val = 0;
/* Enable FPU */
if (misa_extension('D') || misa_extension('F'))
@@ -72,6 +73,16 @@ static void mstatus_init(struct sbi_scratch *scratch)
#endif
}
+ if (sbi_hart_has_feature(scratch, SBI_HART_HAS_SMSTATEEN)) {
+ mstateen_val = csr_read(CSR_MSTATEEN0);
+ mstateen_val |= (1UL << SMSTATEEN_STATEN);
+ if (sbi_hart_has_feature(scratch, SBI_HART_HAS_MENVCFG))
+ mstateen_val |= (1UL << SMSTATEEN0_HSENVCFG);
+ else
+ mstateen_val &= ~(1UL << SMSTATEEN0_HSENVCFG);
+ csr_write(CSR_MSTATEEN0, mstateen_val);
+ }
+
/* Disable user mode usage of all perf counters except default ones (CY, TM, IR) */
if (misa_extension('S') &&
sbi_hart_has_feature(scratch, SBI_HART_HAS_SCOUNTEREN))
@@ -324,6 +335,9 @@ static inline char *sbi_hart_feature_id2string(unsigned long feature)
case SBI_HART_HAS_SSTC:
fstr = "sstc";
break;
+ case SBI_HART_HAS_SMSTATEEN:
+ fstr = "smstateen";
+ break;
default:
break;
}
@@ -552,7 +566,6 @@ __mhpm_skip:
csr_read_allowed(CSR_MENVCFG, (unsigned long)&trap);
if (!trap.cause)
hfeatures->features |= SBI_HART_HAS_MENVCFG;
-
/**
* Detect if hart supports stimecmp CSR(Sstc extension) and menvcfg is
* implemented.
@@ -561,6 +574,11 @@ __mhpm_skip:
if (!trap.cause && sbi_hart_has_feature(scratch, SBI_HART_HAS_MENVCFG))
hfeatures->features |= SBI_HART_HAS_SSTC;
+ /* Detect if hart supports mstateen CSRs */
+ val = csr_read_allowed(CSR_MSTATEEN0, (unsigned long)&trap);
+ if (!trap.cause)
+ hfeatures->features |= SBI_HART_HAS_SMSTATEEN;
+
/* Detect if hart has AIA local interrupt CSRs */
csr_read_allowed(CSR_MTOPI, (unsigned long)&trap);
if (trap.cause)
--
2.17.1
next prev parent reply other threads:[~2022-03-21 5:15 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-21 5:15 [RFC PATCH v1 0/3] RISC-V Smstateen support Mayuresh Chitale
2022-03-21 5:15 ` [RFC PATCH v1 1/3] lib: sbi: Add Smstateen extension defines Mayuresh Chitale
2022-04-05 3:29 ` Anup Patel
2022-03-21 5:15 ` Mayuresh Chitale [this message]
2022-04-05 3:31 ` [RFC PATCH v1 2/3] lib: sbi: Detect Smstateen CSRs at boot-time Anup Patel
2022-03-21 5:15 ` [RFC PATCH v1 3/3] lib: sbi: configure mstateen Mayuresh Chitale
2022-04-05 3:32 ` Anup Patel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220321051528.20143-3-mchitale@ventanamicro.com \
--to=mchitale@ventanamicro.com \
--cc=opensbi@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.