• Nadav Amit's avatar
    KVM: x86: Fix wrong/stuck PMU when guest does not use PMI · 671bd993
    Nadav Amit authored
    If a guest enables a performance counter but does not enable PMI, the
    hypervisor currently does not reprogram the performance counter once it
    overflows.  As a result the host performance counter is kept with the original
    sampling period which was configured according to the value of the guest's
    counter when the counter was enabled.
    
    Such behaviour can cause very bad consequences. The most distrubing one can
    cause the guest not to make any progress at all, and keep exiting due to host
    PMI before any guest instructions is exeucted. This situation occurs when the
    performance counter holds a very high value when the guest enables the
    performance counter. As a result the host's sampling period is configured to be
    very short. The host then never reconfigures the sampling period and get stuck
    at entry->PMI->exit loop. We encountered such a scenario in our experiments.
    
    The solution is to reprogram the counter even if the guest does not use PMI.
    Signed-off-by: default avatarNadav Amit <namit@cs.technion.ac.il>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    671bd993
pmu.c 14.1 KB