All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anup Patel <apatel@ventanamicro.com>
To: opensbi@lists.infradead.org
Subject: [PATCH 09/11] lib: sbi: Detect hart features only once for each hart
Date: Fri, 29 Apr 2022 21:21:49 +0530	[thread overview]
Message-ID: <20220429155151.314788-10-apatel@ventanamicro.com> (raw)
In-Reply-To: <20220429155151.314788-1-apatel@ventanamicro.com>

Currently, the hart_detect_features() is called everytime a hart
is stopped and started again which is unnecessary work.

We update hart_detect_features() to detect hart features only
once for each hart.

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
 lib/sbi/sbi_hart.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
index 956d185..28a7e75 100644
--- a/lib/sbi/sbi_hart.c
+++ b/lib/sbi/sbi_hart.c
@@ -28,6 +28,7 @@ extern void __sbi_expected_trap_hext(void);
 void (*sbi_hart_expected_trap)(void) = &__sbi_expected_trap;
 
 struct hart_features {
+	bool detected;
 	int priv_version;
 	unsigned long extensions;
 	unsigned int pmp_count;
@@ -510,11 +511,15 @@ static int hart_pmu_get_allowed_bits(void)
 static void hart_detect_features(struct sbi_scratch *scratch)
 {
 	struct sbi_trap_info trap = {0};
-	struct hart_features *hfeatures;
+	struct hart_features *hfeatures =
+		sbi_scratch_offset_ptr(scratch, hart_features_offset);
 	unsigned long val, oldval;
 
-	/* Reset hart features */
-	hfeatures = sbi_scratch_offset_ptr(scratch, hart_features_offset);
+	/* If hart features already detected then do nothing */
+	if (hfeatures->detected)
+		return;
+
+	/* Clear hart features */
 	hfeatures->extensions = 0;
 	hfeatures->pmp_count = 0;
 	hfeatures->mhpm_count = 0;
@@ -642,6 +647,9 @@ __mhpm_skip:
 			hfeatures->extensions |= BIT(SBI_HART_EXT_SMSTATEEN);
 	}
 
+	/* Mark hart feature detection done */
+	hfeatures->detected = true;
+
 	return;
 }
 
-- 
2.34.1



  parent reply	other threads:[~2022-04-29 15:51 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-29 15:51 [PATCH 00/11] HART Feature Improvements Anup Patel
2022-04-29 15:51 ` [PATCH 01/11] lib: sbi: Detect and print privileged spec version Anup Patel
2022-05-04  1:42   ` Atish Patra
2022-05-07  4:57     ` Anup Patel
2022-04-29 15:51 ` [PATCH 02/11] lib: sbi: Remove 's' and 'u' from misa_string() output Anup Patel
2022-05-04  1:42   ` Atish Patra
2022-05-07  4:58     ` Anup Patel
2022-04-29 15:51 ` [PATCH 03/11] lib: sbi: Update the name of ISA string printed at boot time Anup Patel
2022-05-04  1:55   ` Atish Patra
2022-05-07  4:59     ` Anup Patel
2022-04-29 15:51 ` [PATCH 04/11] lib: sbi: Remove MCOUNTEREN and SCOUNTEREN hart features Anup Patel
2022-05-04  1:51   ` Atish Patra
2022-05-04  1:55     ` Atish Patra
2022-05-07  5:00     ` Anup Patel
2022-04-29 15:51 ` [PATCH 05/11] lib: sbi: Remove MCOUNTINHIBT hart feature Anup Patel
2022-05-04  1:56   ` Atish Patra
2022-05-07  5:00     ` Anup Patel
2022-04-29 15:51 ` [PATCH 06/11] lib: sbi: Remove MENVCFG " Anup Patel
2022-05-04  1:57   ` Atish Patra
2022-05-07  5:03     ` Anup Patel
2022-04-29 15:51 ` [PATCH 07/11] lib: sbi: Fix AIA feature detection Anup Patel
2022-05-04  1:57   ` Atish Patra
2022-05-07  5:03     ` Anup Patel
2022-04-29 15:51 ` [PATCH 08/11] lib: sbi: Convert hart features into hart extensions Anup Patel
2022-05-04  2:00   ` Atish Patra
2022-05-07  5:04     ` Anup Patel
2022-04-29 15:51 ` Anup Patel [this message]
2022-05-04  2:01   ` [PATCH 09/11] lib: sbi: Detect hart features only once for each hart Atish Patra
2022-05-07  5:04     ` Anup Patel
2022-04-29 15:51 ` [PATCH 10/11] lib: sbi: Add sbi_hart_update_extension() function Anup Patel
2022-05-04  2:02   ` Atish Patra
2022-05-07  5:04     ` Anup Patel
2022-04-29 15:51 ` [PATCH 11/11] lib: sbi_platform: Add callback to populate HART extensions Anup Patel
2022-05-04  2:05   ` Atish Patra
2022-05-07  5:05     ` Anup Patel
2022-05-05 16:30 ` [PATCH 00/11] HART Feature Improvements Xiang W
2022-05-06  3:21   ` 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=20220429155151.314788-10-apatel@ventanamicro.com \
    --to=apatel@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.