[PATCH v4 12/16] KVM: arm64: PMU: Allow ID_DFR0_EL1.PerfMon to be set from userspace
Marc Zyngier
maz at kernel.org
Sat Nov 19 04:54:02 PST 2022
On 2022-11-19 05:52, Reiji Watanabe wrote:
> Hi Marc,
>
> On Sun, Nov 13, 2022 at 8:46 AM Marc Zyngier <maz at kernel.org> wrote:
>>
>> Allow userspace to write ID_DFR0_EL1, on the condition that only
>> the PerfMon field can be altered and be something that is compatible
>> with what was computed for the AArch64 view of the guest.
>>
>> Signed-off-by: Marc Zyngier <maz at kernel.org>
>> ---
>> arch/arm64/kvm/sys_regs.c | 57
>> ++++++++++++++++++++++++++++++++++++++-
>> 1 file changed, 56 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
>> index 3cbcda665d23..dc201a0557c0 100644
>> --- a/arch/arm64/kvm/sys_regs.c
>> +++ b/arch/arm64/kvm/sys_regs.c
>> @@ -1070,6 +1070,19 @@ static u8 vcpu_pmuver(const struct kvm_vcpu
>> *vcpu)
>> return vcpu->kvm->arch.dfr0_pmuver.unimp;
>> }
>>
>> +static u8 perfmon_to_pmuver(u8 perfmon)
>> +{
>> + switch (perfmon) {
>> + case ID_DFR0_PERFMON_8_0:
>> + return ID_AA64DFR0_EL1_PMUVer_IMP;
>> + case ID_DFR0_PERFMON_IMP_DEF:
>> + return ID_AA64DFR0_EL1_PMUVer_IMP_DEF;
>
> Nit: Since IMP_DEF is 0xf for both PMUVER and PERFMON,
> I think the 'default' can handle IMP_DEF (I have the same
> comment for pmuver_to_perfmon in the patch-10).
It sure can, but IMP_DEF is special enough in its treatment
(we explicitly check this value in set_id_dfr0_el1()) that
it actually helps the reader to keep the explicit conversion
here.
>
>> + default:
>> + /* Anything ARMv8.1+ has the same value. For now. */
>
> Nit: Shouldn't the comment also mention NI (and IMP_DEF) ?
> (I have the same comment for pmuver_to_perfmon in the patch-10)
I can expand the comment to include NI.
> Otherwise:
> Reviewed-by: Reiji Watanabe <reijiw at google.com>
Thanks,
M.
--
Jazz is not dead. It just smells funny...
More information about the linux-arm-kernel
mailing list