aboutsummaryrefslogtreecommitdiff
path: root/lib/utils/fdt/fdt_pmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils/fdt/fdt_pmu.c')
-rw-r--r--lib/utils/fdt/fdt_pmu.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/utils/fdt/fdt_pmu.c b/lib/utils/fdt/fdt_pmu.c
index 9ebf1c2..09c83c8 100644
--- a/lib/utils/fdt/fdt_pmu.c
+++ b/lib/utils/fdt/fdt_pmu.c
@@ -9,6 +9,7 @@
*/
#include <libfdt.h>
+#include <sbi/sbi_hart.h>
#include <sbi/sbi_error.h>
#include <sbi/sbi_pmu.h>
#include <sbi_utils/fdt/fdt_helper.h>
@@ -40,6 +41,7 @@ uint64_t fdt_pmu_get_select_value(uint32_t event_idx)
int fdt_pmu_fixup(void *fdt)
{
int pmu_offset;
+ struct sbi_scratch *scratch = sbi_scratch_thishart_ptr();
if (!fdt)
return SBI_EINVAL;
@@ -51,6 +53,8 @@ int fdt_pmu_fixup(void *fdt)
fdt_delprop(fdt, pmu_offset, "pmu,event-to-mhpmcounters");
fdt_delprop(fdt, pmu_offset, "pmu,event-to-mhpmevent");
fdt_delprop(fdt, pmu_offset, "pmu,raw-event-to-mhpmcounters");
+ if (!sbi_hart_has_feature(scratch, SBI_HART_HAS_SSCOFPMF))
+ fdt_delprop(fdt, pmu_offset, "interrupts-extended");
return 0;
}