diff --git a/plat/arm/board/arm_fpga/fpga_bl31_setup.c b/plat/arm/board/arm_fpga/fpga_bl31_setup.c index d5478d2d63e8475eb8dccafca46dfa9020313359..a5f5ea0f3a5aba803e4679818a947d8a5d89f835 100644 --- a/plat/arm/board/arm_fpga/fpga_bl31_setup.c +++ b/plat/arm/board/arm_fpga/fpga_bl31_setup.c @@ -12,6 +12,7 @@ #include <drivers/arm/gicv3.h> #include <drivers/delay_timer.h> #include <drivers/generic_delay_timer.h> +#include <lib/extensions/spe.h> #include <libfdt.h> #include "fpga_private.h" @@ -224,6 +225,16 @@ static void fpga_prepare_dtb(void) } } + /* Check whether we support the SPE PMU. Remove the DT node if not. */ + if (!spe_supported()) { + int node = fdt_node_offset_by_compatible(fdt, 0, + "arm,statistical-profiling-extension-v1"); + + if (node >= 0) { + fdt_del_node(fdt, node); + } + } + err = fdt_pack(fdt); if (err < 0) { ERROR("Failed to pack Device Tree at %p: error %d\n", fdt, err);