[PATCH v6 15/21] KVM: ARM64: Add reset and access handlers for PMUSERENR register
From: Shannon Zhao <hidden>
Date: 2015-12-09 09:18:02
Also in:
kvm, kvmarm
From: Shannon Zhao <hidden>
Date: 2015-12-09 09:18:02
Also in:
kvm, kvmarm
On 2015/12/9 1:03, Marc Zyngier wrote:
On 08/12/15 12:47, Shannon Zhao wrote:quoted
quoted
From: Shannon Zhao <redacted> The reset value of PMUSERENR_EL0 is UNKNOWN, use reset_unknown. Signed-off-by: Shannon Zhao <redacted> --- arch/arm64/kvm/sys_regs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index c830fde..80b66c0 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c@@ -880,7 +880,7 @@ static const struct sys_reg_desc sys_reg_descs[] = { access_pmu_pmxevcntr }, /* PMUSERENR_EL0 */ { Op0(0b11), Op1(0b011), CRn(0b1001), CRm(0b1110), Op2(0b000), - trap_raz_wi }, + access_pmu_regs, reset_unknown, PMUSERENR_EL0 },So while the 64bit view of the register resets as unknown, a CPU resetting in 32bit mode resets as 0. I suggest you reset it as zero, and document that choice. You may have to revisit all the other registers that do reset as unknown for 64bit as well.
Sure. BTW, here I didn't handle the bits of PMUSERENR which are used to permit/forbid accessing some PMU registers from EL0. Does it need to add the handler? Is there any way to get the exceptional level of the accessing in hypervisor? Thanks, -- Shannon