xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/6] xen/PMU: PMU support for Xen PV guests
@ 2014-08-08 21:12 Boris Ostrovsky
  2014-08-08 21:12 ` [PATCH v4 1/6] xen: xensyms support Boris Ostrovsky
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Boris Ostrovsky @ 2014-08-08 21:12 UTC (permalink / raw)
  To: david.vrabel, konrad.wilk
  Cc: kevin.tian, andrew.cooper3, dietmar.hahn, xen-devel, jbeulich,
	boris.ostrovsky

Changes in v4:

* Don't write to APIC while processing PMU interrupt, defer until PMU flush
* pmu_mode_store() will verify whole string, not just first strlen(mode)
  characters
* Use get_zeroed_page() instead of vzalloc() in xen_pmu_init()
* Replace per_cpu() with this_cpu_ptr() where possible

Changes in v3:

* Handle cases when hypervisor symbols strings don't fit into the buffer
provided by kernel. (Buffer size is no longer a constant shared between
Xen and kernel)
* Reworked data structures in xensym.c to handle better the fact that
  buffer is a Xen handle.
* Changed VPMU modes' names to "self", "all", "off"
* Moved a few (fairly minor) things around to make things bisectable
* Added Documentation/ABI/testing/sysfs-hypervisor-pmu
* Added a blurb to describe XEN_SYMS in Kconfig
* Code style changes


This is the Linux side of Xen PMU support for PV(H) guests, including
dom0. Only kernel changes are here, toolstack patch will be provided
separately.

Here is description from the hypervisor patch submission that applies
to this series as well:

This version has following limitations:
* For accurate profiling of dom0/Xen dom0 VCPUs should be pinned.
* Hypervisor code is only profiled on processors that have running dom0 VCPUs
on them.
* No backtrace support.
* Will fail to load under XSM: we ran out of bits in permissions vector and
this needs to be fixed separately

A few notes that may help reviewing:

* A shared data structure (xenpmu_data_t) between each PV VPCU and hypervisor
CPU is used for passing registers' values as well as PMU state at the time of
PMU interrupt.
* PMU interrupts are taken by hypervisor either as NMIs or regular vector
interrupts for both HVM and PV(H). The interrupts are sent as NMIs to HVM guests
and as virtual interrupts to PV(H) guests
* PV guest's interrupt handler does not read/write PMU MSRs directly. Instead, it
accesses xenpmu_data_t and flushes it to HW it before returning.
* PMU mode is controlled at runtime via /sys/hypervisor/pmu/pmu/{pmu_mode,pmu_flags}
in addition to 'vpmu' boot option (which is preserved for back compatibility).
The following modes are provided:
  * disable: VPMU is off
  * enable: VPMU is on. Guests can profile themselves, dom0 profiles itself and Xen
  * priv_enable: dom0 only profiling. dom0 collects samples for everyone. Sampling
    in guests is suspended.
* /proc/xen/xensyms file exports hypervisor's symbols to dom0 (similar to
/proc/kallsyms)
* VPMU infrastructure is now used for HVM, PV and PVH and therefore has been moved
up from hvm subtree


Boris Ostrovsky (6):
  xen: xensyms support
  xen/PMU: Sysfs interface for setting Xen PMU mode
  xen/PMU: Initialization code for Xen PMU
  xen/PMU: Describe vendor-specific PMU registers
  xen/PMU: Intercept PMU-related MSR and APIC accesses
  xen/PMU: PMU emulation code

 Documentation/ABI/testing/sysfs-hypervisor-pmu |  22 +
 arch/x86/include/asm/xen/hypercall.h           |   6 +
 arch/x86/include/asm/xen/interface.h           |  41 ++
 arch/x86/xen/Makefile                          |   2 +-
 arch/x86/xen/enlighten.c                       |  24 +-
 arch/x86/xen/pmu.c                             | 546 +++++++++++++++++++++++++
 arch/x86/xen/pmu.h                             |  15 +
 arch/x86/xen/smp.c                             |  31 +-
 arch/x86/xen/xen-head.S                        |   5 +-
 drivers/xen/Kconfig                            |   8 +
 drivers/xen/sys-hypervisor.c                   | 118 ++++++
 drivers/xen/xenfs/Makefile                     |   1 +
 drivers/xen/xenfs/super.c                      |   3 +
 drivers/xen/xenfs/xenfs.h                      |   1 +
 drivers/xen/xenfs/xensyms.c                    | 152 +++++++
 include/xen/interface/platform.h               |  19 +
 include/xen/interface/xen.h                    |   2 +
 include/xen/interface/xenpmu.h                 |  67 +++
 18 files changed, 1057 insertions(+), 6 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-hypervisor-pmu
 create mode 100644 arch/x86/xen/pmu.c
 create mode 100644 arch/x86/xen/pmu.h
 create mode 100644 drivers/xen/xenfs/xensyms.c
 create mode 100644 include/xen/interface/xenpmu.h

-- 
1.8.1.4

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-08-08 21:12 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-08 21:12 [PATCH v4 0/6] xen/PMU: PMU support for Xen PV guests Boris Ostrovsky
2014-08-08 21:12 ` [PATCH v4 1/6] xen: xensyms support Boris Ostrovsky
2014-08-08 21:12 ` [PATCH v4 2/6] xen/PMU: Sysfs interface for setting Xen PMU mode Boris Ostrovsky
2014-08-08 21:12 ` [PATCH v4 3/6] xen/PMU: Initialization code for Xen PMU Boris Ostrovsky
2014-08-08 21:12 ` [PATCH v4 4/6] xen/PMU: Describe vendor-specific PMU registers Boris Ostrovsky
2014-08-08 21:12 ` [PATCH v4 5/6] xen/PMU: Intercept PMU-related MSR and APIC accesses Boris Ostrovsky
2014-08-08 21:12 ` [PATCH v4 6/6] xen/PMU: PMU emulation code Boris Ostrovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).