lkml.org 
[lkml]   [2011]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv2 7/9] KVM: Expose the architectural performance monitoring CPUID leaf
    Date
    Provide a CPUID leaf that describes the emulated PMU.

    Signed-off-by: Gleb Natapov <gleb@redhat.com>
    ---
    arch/x86/kvm/x86.c | 23 ++++++++++++++++++++++-
    1 files changed, 22 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
    index b88426c..3c9c8c9 100644
    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -2544,6 +2544,28 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
    }
    case 9:
    break;
    + case 0xa: { /* Architectural Performance Monitoring */
    + struct x86_pmu_capability cap;
    +
    + perf_get_x86_pmu_capability(&cap);
    +
    + /*
    + * Only support guest architectural pmu on a host
    + * with architectural pmu.
    + */
    + if (!cap.version)
    + memset(&cap, 0, sizeof(cap));
    +
    + entry->eax = min(cap.version, 2)
    + | (cap.num_counters_gp << 8)
    + | (cap.bit_width_gp << 16)
    + | (cap.events_mask_len << 24);
    + entry->ebx = cap.events_mask;
    + entry->ecx = 0;
    + entry->edx = cap.num_counters_fixed
    + | (cap.bit_width_fixed << 5);
    + break;
    + }
    /* function 0xb has additional index. */
    case 0xb: {
    int i, level_type;
    @@ -2638,7 +2660,6 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
    case 3: /* Processor serial number */
    case 5: /* MONITOR/MWAIT */
    case 6: /* Thermal management */
    - case 0xA: /* Architectural Performance Monitoring */
    case 0x80000007: /* Advanced power management */
    case 0xC0000002:
    case 0xC0000003:
    --
    1.7.5.3


    \
     
     \ /
      Last update: 2011-11-03 13:39    [W:0.020 / U:0.100 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site