lib: sbi: Disable m/scounteren & enable mcountinhibit
authorAtish Patra <atish.patra@wdc.com>
Sat, 10 Jul 2021 16:18:06 +0000 (09:18 -0700)
committerAnup Patel <anup@brainfault.org>
Sun, 11 Jul 2021 04:44:26 +0000 (10:14 +0530)
commit9c9b4ad24bf5891272679a6e994c64463db8ca03
treec16842683e501f499693201a4884c338bb81c558
parent0829f2bc284c07576a0dc9a569beea2a2d68dc3d
lib: sbi: Disable m/scounteren & enable mcountinhibit

Currently, all bits in mcountern are enabled unconditionally at boot time.
With SBI PMU extension, all the programmable counters should enabled only
during performance monitoring for a particular event. However, this is done
only if mcountinhibit is implemented because the supervisor mode can not
start/stop any event without mcountinhibit.

Similarly, supervisor should take care enabling scounteren which allows
U-mode to access programmable pmu counters. All the non-programmable ones
(CY, TM, IR) should be enabled in M-mode because some userspace may rely on
builtins such as __builtin_readcyclecounter. Supervisor OS can still disable
them during initial configuration.

Reviewed-by: Anup Patel <anup.patel@wdc.com>
Signed-off-by: Atish Patra <atish.patra@wdc.com>
lib/sbi/sbi_hart.c