lib: sbi: detect features before everything else in sbi_hart_init()

We should detect HART features in sbi_hart_init() before
mstatus_init(), delegate_traps() and pmp_init().

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
This commit is contained in:
Anup Patel
2020-05-10 11:13:00 +05:30
committed by Anup Patel
parent 38a4b54cdc
commit 28b4052849

View File

@@ -247,7 +247,7 @@ static inline char *sbi_hart_feature_id2string(unsigned long feature)
fstr = "pmp";
break;
case SBI_HART_HAS_SCOUNTEREN:
fstr = "scountern";
fstr = "scounteren";
break;
case SBI_HART_HAS_MCOUNTEREN:
fstr = "mcounteren";
@@ -371,8 +371,10 @@ int sbi_hart_init(struct sbi_scratch *scratch, u32 hartid, bool cold_boot)
if (!hart_features_offset)
return SBI_ENOMEM;
}
hart_features = sbi_scratch_offset_ptr(scratch, hart_features_offset);
*hart_features = 0;
sbi_hart_detect_features(hartid);
mstatus_init(scratch, hartid);
@@ -384,8 +386,6 @@ int sbi_hart_init(struct sbi_scratch *scratch, u32 hartid, bool cold_boot)
if (rc)
return rc;
sbi_hart_detect_features(hartid);
return pmp_init(scratch, hartid);
}