mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-08-18 01:21:49 +01:00
lib: sbi: Add domain parameter to hart protection (un)configure()
The switch_to_next_domain_context() already has the pointers to current and next domains so pass them as parameters to hart protection configure() and unconfigure() callbacks. 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-4-anup.patel@oss.qualcomm.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
@@ -50,41 +50,47 @@ void sbi_hart_protection_unregister(struct sbi_hart_protection *hprot)
|
||||
}
|
||||
|
||||
static int __hart_protection_configure(struct sbi_scratch *scratch,
|
||||
struct sbi_hart_protection *hprot)
|
||||
struct sbi_hart_protection *hprot,
|
||||
struct sbi_domain *dom)
|
||||
{
|
||||
if (!hprot)
|
||||
return 0;
|
||||
if (!hprot->configure)
|
||||
return SBI_ENOSYS;
|
||||
|
||||
return hprot->configure(scratch);
|
||||
return hprot->configure(scratch, dom);
|
||||
}
|
||||
|
||||
static void __hart_protection_unconfigure(struct sbi_scratch *scratch,
|
||||
struct sbi_hart_protection *hprot)
|
||||
struct sbi_hart_protection *hprot,
|
||||
struct sbi_domain *dom)
|
||||
{
|
||||
if (!hprot || !hprot->unconfigure)
|
||||
return;
|
||||
|
||||
hprot->unconfigure(scratch);
|
||||
hprot->unconfigure(scratch, dom);
|
||||
}
|
||||
|
||||
int sbi_hart_protection_configure(struct sbi_scratch *scratch)
|
||||
int sbi_hart_protection_configure(struct sbi_scratch *scratch,
|
||||
struct sbi_domain *dom)
|
||||
{
|
||||
return __hart_protection_configure(scratch, sbi_hart_protection_best());
|
||||
return __hart_protection_configure(scratch, sbi_hart_protection_best(), dom);
|
||||
}
|
||||
|
||||
void sbi_hart_protection_unconfigure(struct sbi_scratch *scratch)
|
||||
void sbi_hart_protection_unconfigure(struct sbi_scratch *scratch,
|
||||
struct sbi_domain *dom)
|
||||
{
|
||||
__hart_protection_unconfigure(scratch, sbi_hart_protection_best());
|
||||
__hart_protection_unconfigure(scratch, sbi_hart_protection_best(), dom);
|
||||
}
|
||||
|
||||
int sbi_hart_protection_reconfigure(struct sbi_scratch *scratch)
|
||||
int sbi_hart_protection_reconfigure(struct sbi_scratch *scratch,
|
||||
struct sbi_domain *current_dom,
|
||||
struct sbi_domain *next_dom)
|
||||
{
|
||||
struct sbi_hart_protection *hprot = sbi_hart_protection_best();
|
||||
|
||||
__hart_protection_unconfigure(scratch, hprot);
|
||||
return __hart_protection_configure(scratch, hprot);
|
||||
__hart_protection_unconfigure(scratch, hprot, current_dom);
|
||||
return __hart_protection_configure(scratch, hprot, next_dom);
|
||||
}
|
||||
|
||||
int sbi_hart_protection_map_range(unsigned long base, unsigned long size)
|
||||
|
||||
Reference in New Issue
Block a user