lib: sbi: Extend hart protection abstraction to allow ID configuration

There are various ID configuration ISA extensions such as RISC-V Worlds,
Supervisor domain ID, QoS ID, etc which need to be re-configured upon
domain context switch on a hart. Extend hart protection abstraction to
support both memory protection and ID configuration ISA extensions.

Signed-off-by: Anup Patel <anup.patel@oss.qualcomm.com>
Reviewed-by: Rahul Pathak <rahul.pathak@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260727042504.1743250-5-anup.patel@oss.qualcomm.com
Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Anup Patel
2026-08-02 15:17:12 +05:30
committed by Anup Patel
parent 5053774c2f
commit 2636a9c2a8
5 changed files with 103 additions and 15 deletions
+13 -3
View File
@@ -13,6 +13,13 @@
struct sbi_scratch;
struct sbi_domain;
/** Different types of hart protection mechanisms */
enum sbi_hart_protection_type {
SBI_HART_PROTECTION_TYPE_MEMORY = 0,
SBI_HART_PROTECTION_TYPE_ID,
SBI_HART_PROTECTION_TYPE_MAX
};
/** Representation of hart protection mechanism */
struct sbi_hart_protection {
/** List head */
@@ -21,6 +28,9 @@ struct sbi_hart_protection {
/** Name of the hart protection mechanism */
char name[32];
/** Type of the hart protection mechanism */
enum sbi_hart_protection_type type;
/** Ratings of the hart protection mechanism (higher is better) */
unsigned long rating;
@@ -40,11 +50,11 @@ struct sbi_hart_protection {
};
/**
* Get the best hart protection mechanism
* Get the best hart memory protection mechanism
*
* @return pointer to best hart protection mechanism
* @return pointer to best hart memory protection mechanism
*/
struct sbi_hart_protection *sbi_hart_protection_best(void);
struct sbi_hart_protection *sbi_hart_memory_protection_best(void);
/**
* Register a hart protection mechanism