On 2023-10-31 11:31 p.m., Mi, Dapeng wrote:
On 11/1/2023 11:04 AM, Jim Mattson wrote:The user can program any events on the GP counter. The perf doesn't
On Tue, Oct 31, 2023 at 6:59 PM Mi, Dapeng
<dapeng1.mi@xxxxxxxxxxxxxxx> wrote:
On 11/1/2023 2:22 AM, Jim Mattson wrote:On physical hardware, it is possible to program a GP counter with the
On Tue, Oct 31, 2023 at 1:58 AM Dapeng MiActually defining this new slots arch event is to do the sanity check
<dapeng1.mi@xxxxxxxxxxxxxxx> wrote:
This patch adds support for the architectural topdown slots eventCan't a guest already program an event selector to count event select
which
is hinted by CPUID.0AH.EBX.
0xa4, unit mask 1, unless the event is prohibited by
KVM_SET_PMU_EVENT_FILTER?
for supported arch-events which is enumerated by CPUID.0AH.EBX.
Currently vPMU would check if the arch event from guest is supported by
KVM. If not, it would be rejected just like intel_hw_event_available()
shows.
If we don't add the slots event in the intel_arch_events[] array, guest
may program the slots event and pass the sanity check of KVM on a
platform which actually doesn't support slots event and program the
event on a real GP counter and got an invalid count. This is not
correct.
event selector and unit mask of the slots event whether or not the
platform supports it. Isn't KVM wrong to disallow something that a
physical CPU allows?
Yeah, I agree. But I'm not sure if this is a flaw on PMU driver. If an
event is not supported by the hardware, we can't predict the PMU's
behavior and a meaningless count may be returned and this could mislead
the user.
limit it. For the unsupported event, 0 should be returned. Please keep
in mind, the event list keeps updating. If the kernel checks for each
event, it could be a disaster. I don't think it's a flaw.
Thanks,
Kan
Add Kan to confirm this.
Hi Kan,
Have you any comments on this? Thanks.
I think there is no difference in the conclusion but with two differentHow is clearing CPUID.0AH:EBX[bit 7] any different from putting {eventAFAICT, this change just enables event filtering based onIMO, these are two different things. this change is just to enable the
CPUID.0AH:EBX[bit 7] (though it's not clear to me why two independent
mechanisms are necessary for event filtering).
supported arch events check for slot events, the event filtering is
another thing.
select 0xa4, unit mask 1} in a deny list with the PMU event filter?
methods.