Re: [PATCH 0/9] KVM in-guest performance monitoring

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hmm, linux-kernel address is broken. Sorry about that. Just drop it when
replying please. The patchset is mostly interesting to kvm developers
anyway.

On Sun, Oct 30, 2011 at 06:53:35PM +0200, Gleb Natapov wrote:
> This patchset exposes an emulated version 2 architectural performance
> monitoring unit to KVM guests.  The PMU is emulated using perf_events,
> so the host kernel can multiplex host-wide, host-user, and the
> guest on available resources.
> 
> The patches should be applied on top of KVM patches from the patch series
> "[PATCH v2 0/9] perf support for x86 guest/host-only bits" [1]
> 
> If you want to try running perf in a guest you need to apply the patch
> below to qemu-kvm and use -cpu host on qemu command line. But DO NOT
> TRY those patches without applying [2][3] to the host kernel first.
> Don't tell me I didn't warn you!
> 
> [1] https://lkml.org/lkml/2011/10/5/153
> [2] https://lkml.org/lkml/2011/10/18/390
> [3] https://lkml.org/lkml/2011/10/23/163
> 
> Avi Kivity (8):
>   KVM: Expose kvm_lapic_local_deliver()
>   KVM: Expose a version 2 architectural PMU to a guests
>   KVM: Add generic RDPMC support
>   KVM: SVM: Intercept RDPMC
>   KVM: VMX: Intercept RDPMC
>   KVM: Expose the architectural performance monitoring CPUID leaf
>   KVM: x86 emulator: fix RDPMC privilege check
>   KVM: x86 emulator: implement RDPMC (0F 33)
> 
> Gleb Natapov (1):
>   perf: expose perf capability to other modules.
> 
>  arch/x86/include/asm/kvm_emulate.h     |    1 +
>  arch/x86/include/asm/kvm_host.h        |   44 +++
>  arch/x86/include/asm/perf_event.h      |   11 +
>  arch/x86/kernel/cpu/perf_event.c       |   11 +
>  arch/x86/kernel/cpu/perf_event.h       |    2 +
>  arch/x86/kernel/cpu/perf_event_intel.c |    3 +
>  arch/x86/kvm/Makefile                  |    2 +-
>  arch/x86/kvm/emulate.c                 |   13 +-
>  arch/x86/kvm/lapic.c                   |    2 +-
>  arch/x86/kvm/lapic.h                   |    1 +
>  arch/x86/kvm/pmu.c                     |  513 ++++++++++++++++++++++++++++++++
>  arch/x86/kvm/svm.c                     |   15 +
>  arch/x86/kvm/vmx.c                     |   15 +-
>  arch/x86/kvm/x86.c                     |   65 ++++-
>  include/linux/kvm_host.h               |    1 +
>  15 files changed, 686 insertions(+), 13 deletions(-)
>  create mode 100644 arch/x86/kvm/pmu.c
> 
> diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c
> index f179999..ff2a0ca 100644
> --- a/target-i386/cpuid.c
> +++ b/target-i386/cpuid.c
> @@ -1178,11 +1178,20 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
>          *edx = 0;
>          break;
>      case 0xA:
> -        /* Architectural Performance Monitoring Leaf */
> -        *eax = 0;
> -        *ebx = 0;
> -        *ecx = 0;
> -        *edx = 0;
> +	if (kvm_enabled()) {
> +            KVMState *s = env->kvm_state;
> +
> +            *eax = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EAX);
> +            *ebx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EBX);
> +            *ecx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_ECX);
> +            *edx = kvm_arch_get_supported_cpuid(s, 0xA, count, R_EDX);
> +	} else {
> +		/* Architectural Performance Monitoring Leaf */
> +		*eax = 0; //0x07280402;
> +		*ebx = 0;
> +		*ecx = 0;
> +		*edx = 0; //0x00000503;
> +	}
>          break;
>      case 0xD:
>          /* Processor Extended State */
> -- 
> 1.7.5.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
			Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux