• Kan Liang's avatar
    perf/x86/intel: Protect LBR and extra_regs against KVM lying · 338b522c
    Kan Liang authored
    With -cpu host, KVM reports LBR and extra_regs support, if the host has
    support.
    
    When the guest perf driver tries to access LBR or extra_regs MSR,
    it #GPs all MSR accesses,since KVM doesn't handle LBR and extra_regs support.
    So check the related MSRs access right once at initialization time to avoid
    the error access at runtime.
    
    For reproducing the issue, please build the kernel with CONFIG_KVM_INTEL = y
    (for host kernel).
    And CONFIG_PARAVIRT = n and CONFIG_KVM_GUEST = n (for guest kernel).
    Start the guest with -cpu host.
    Run perf record with --branch-any or --branch-filter in guest to trigger LBR
    Run perf stat offcore events (E.g. LLC-loads/LLC-load-misses ...) in guest to
    trigger offcore_rsp #GP
    Signed-off-by: default avatarKan Liang <kan.liang@intel.com>
    Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Maria Dimakopoulou <maria.n.dimakopoulou@gmail.com>
    Cc: Mark Davies <junk@eslaf.co.uk>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Yan, Zheng <zheng.z.yan@intel.com>
    Link: http://lkml.kernel.org/r/1405365957-20202-1-git-send-email-kan.liang@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    338b522c
perf_event.c 49.1 KB