[PATCH v3 4/5] KVM: arm64: Mask out filtered events in PCMEID{0,1}_EL1
Auger Eric
eric.auger at redhat.com
Wed Sep 9 14:07:50 EDT 2020
Hi Marc,
On 9/9/20 7:50 PM, Marc Zyngier wrote:
> Hi Eric,
>
> On 2020-09-09 18:43, Auger Eric wrote:
>> Hi Marc,
>>
>> On 9/8/20 9:58 AM, Marc Zyngier wrote:
>>> As we can now hide events from the guest, let's also adjust its view of
>>> PCMEID{0,1}_EL1 so that it can figure out why some common events are not
>>> counting as they should.
>> Referring to my previous comment should we filter the cycle counter out?
>>>
>>> The astute user can still look into the TRM for their CPU and find out
>>> they've been cheated, though. Nobody's perfect.
>>>
>>> Signed-off-by: Marc Zyngier <maz at kernel.org>
>>> ---
>>> arch/arm64/kvm/pmu-emul.c | 29 +++++++++++++++++++++++++++++
>>> arch/arm64/kvm/sys_regs.c | 5 +----
>>> include/kvm/arm_pmu.h | 5 +++++
>>> 3 files changed, 35 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/arch/arm64/kvm/pmu-emul.c b/arch/arm64/kvm/pmu-emul.c
>>> index 67a731bafbc9..0458860bade2 100644
>>> --- a/arch/arm64/kvm/pmu-emul.c
>>> +++ b/arch/arm64/kvm/pmu-emul.c
>>> @@ -765,6 +765,35 @@ static int kvm_pmu_probe_pmuver(void)
>>> return pmuver;
>>> }
>>>
>>> +u64 kvm_pmu_get_pmceid(struct kvm_vcpu *vcpu, bool pmceid1)
>>> +{
>>> + unsigned long *bmap = vcpu->kvm->arch.pmu_filter;
>>> + u64 val, mask = 0;
>>> + int base, i;
>>> +
>>> + if (!pmceid1) {
>>> + val = read_sysreg(pmceid0_el0);
>>> + base = 0;
>>> + } else {
>>> + val = read_sysreg(pmceid1_el0);
>>> + base = 32;
>>> + }
>>> +
>>> + if (!bmap)
>>> + return val;
>>> +
>>> + for (i = 0; i < 32; i += 8) {
>> s/32/4?
>
> I don't think so, see below.
>
>>
>> Thanks
>>
>> Eric
>>> + u64 byte;
>>> +
>>> + byte = bitmap_get_value8(bmap, base + i);
>>> + mask |= byte << i;
>
> For each iteration of the loop, we read a byte from the bitmap
> (hence the += 8 above), and orr it into the mask. This makes 4
> iteration of the loop.
>
> Or am I missing your point entirely?
Hum no you're right. Sorry for the noise.
Looks good to me:
Reviewed-by: Eric Auger <eric.auger at redhat.com>
Eric
>
> Thanks,
>
> M.
More information about the linux-arm-kernel
mailing list