lkml.org 
[lkml]   [2012]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/3] perf: require exclude_guest to use PEBS - kernel side enforcement
    Date
    From: Peter Zijlstra <peterz@infradead.org>

    Per Peter:
    "Intel PEBS in VT-x context uses the DS address as a guest linear address,
    even though its programmed by the host as a host linear address. This
    either results in guest memory corruption and or the hardware faulting and
    'crashing' the virtual machine. Therefore we have to disable PEBS on VT-x
    enter and re-enable on VT-x exit, enforcing a strict exclude_guest.

    This patch enforces exclude_guest kernel side.

    Signed-off-by: David Ahern <dsahern@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Robert Richter <robert.richter@amd.com>
    Cc: Gleb Natapov <gleb@redhat.com>
    Cc: Avi Kivity <avi@redhat.com>
    Link: https://lkml.org/lkml/2012/7/9/298
    ---
    arch/x86/kernel/cpu/perf_event.c | 6 ++++++
    1 file changed, 6 insertions(+)

    diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
    index 915b876..4bc96c5 100644
    --- a/arch/x86/kernel/cpu/perf_event.c
    +++ b/arch/x86/kernel/cpu/perf_event.c
    @@ -338,6 +338,9 @@ int x86_setup_perfctr(struct perf_event *event)
    /* BTS is currently only allowed for user-mode. */
    if (!attr->exclude_kernel)
    return -EOPNOTSUPP;
    +
    + if (!attr->exclude_guest)
    + return -EOPNOTSUPP;
    }

    hwc->config |= config;
    @@ -380,6 +383,9 @@ int x86_pmu_hw_config(struct perf_event *event)
    if (event->attr.precise_ip) {
    int precise = 0;

    + if (!event->attr.exclude_guest)
    + return -EOPNOTSUPP;
    +
    /* Support for constant skid */
    if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) {
    precise++;
    --
    1.7.10.1


    \
     
     \ /
      Last update: 2012-09-12 18:02    [W:4.022 / U:0.556 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site