Tegra186: mce: Uncore Perfmon ARI Programming
Uncore perfmon appears to the CPU as a set of uncore perfmon registers
which can be read and written using the ARI interface. The MCE code
sequence handles reads and writes to these registers by manipulating
the underlying T186 uncore hardware.

To access an uncore perfmon register, CPU software writes the ARI
request registers to specify

* whether the operation is a read or a write,
* which uncore perfmon register to access,
* the uncore perfmon unit, group, and counter number (if necessary),
* the data to write (if the operation is a write).

It then initiates an ARI request to run the uncore perfmon sequence in
the MCE and reads the resulting value of the uncore perfmon register
and any status information from the ARI response registers.

The NS world's MCE driver issues MCE_CMD_UNCORE_PERFMON_REQ command
for the EL3 layer to start the entire sequence. Once the request
completes, the NS world would receive the command status in the X0
register and the command data in the X1 register.

Change-Id: I20bf2eca2385f7c8baa81e9445617ae711ecceea
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
1 parent f3a20c3 commit c11e0ddfbff1475c581cfb2babc27d3e48984c74
@Varun Wadekar Varun Wadekar authored on 29 Apr 2016
Showing 4 changed files
View
plat/nvidia/tegra/soc/t186/drivers/include/mce.h
View
plat/nvidia/tegra/soc/t186/drivers/mce/ari.c
View
plat/nvidia/tegra/soc/t186/drivers/mce/mce.c
View
plat/nvidia/tegra/soc/t186/plat_sip_calls.c