#include <asm/sbi.h>
  #include <asm/hwcap.h>
  
- union sbi_pmu_ctr_info {
-       unsigned long value;
-       struct {
-               unsigned long csr:12;
-               unsigned long width:6;
- #if __riscv_xlen == 32
-               unsigned long reserved:13;
- #else
-               unsigned long reserved:45;
- #endif
-               unsigned long type:1;
-       };
- };
- 
 +PMU_FORMAT_ATTR(event, "config:0-47");
 +PMU_FORMAT_ATTR(firmware, "config:63");
 +
 +static struct attribute *riscv_arch_formats_attr[] = {
 +      &format_attr_event.attr,
 +      &format_attr_firmware.attr,
 +      NULL,
 +};
 +
 +static struct attribute_group riscv_pmu_format_group = {
 +      .name = "format",
 +      .attrs = riscv_arch_formats_attr,
 +};
 +
 +static const struct attribute_group *riscv_pmu_attr_groups[] = {
 +      &riscv_pmu_format_group,
 +      NULL,
 +};
 +
  /*
   * RISC-V doesn't have hetergenous harts yet. This need to be part of
   * per_cpu in case of harts with different pmu counters