On Fri, Nov 3, 2023 at 5:02 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > Remove KVM's bogus restriction that the guest can't program an event whose > encoding matches an unsupported architectural event. The enumeration of > an architectural event only says that if a CPU supports an architectural > event, then the event can be programmed using the architectural encoding. > The enumeration does NOT say anything about the encoding when the CPU > doesn't report support the architectural event. > > Preventing the guest from counting events whose encoding happens to match > an architectural event breaks existing functionality whenever Intel adds > an architectural encoding that was *ever* used for a CPU that doesn't > enumerate support for the architectural event, even if the encoding is for > the exact same event! > > E.g. the architectural encoding for Top-Down Slots is 0x01a4. Broadwell > CPUs, which do not support the Top-Down Slots architectural event, 0x10a4 > is a valid, model-specific event. Denying guest usage of 0x01a4 if/when > KVM adds support for Top-Down slots would break any Broadwell-based guest. > > Reported-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx> > Closes: https://lore.kernel.org/all/2004baa6-b494-462c-a11f-8104ea152c6a@xxxxxxxxxxxxxxx > Cc: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx> > Fixes: a21864486f7e ("KVM: x86/pmu: Fix available_event_types check for REF_CPU_CYCLES event") > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> Yes! Finally! Reviewed-by: Jim Mattson <jmattson@xxxxxxxxxx>