On Fri, Apr 15, 2016 at 11:18 AM, Andrew Cooper <andrew.coop...@citrix.com> wrote:
> On 15/04/16 18:12, Tamas K Lengyel wrote: > > > > On Fri, Apr 15, 2016 at 3:02 AM, Razvan Cojocaru < > <rcojoc...@bitdefender.com>rcojoc...@bitdefender.com> wrote: > >> Previously, subscribing to MSR write events was an all-or-none >> approach, with special cases for introspection MSR-s. This patch >> allows the vm_event consumer to specify exactly what MSR-s it is >> interested in, and as a side-effect gets rid of the >> vmx_introspection_force_enabled_msrs[] special case. >> This replaces the previously posted "xen: Filter out MSR write >> events" patch. >> >> Signed-off-by: Razvan Cojocaru < <rcojoc...@bitdefender.com> >> rcojoc...@bitdefender.com> >> >> --- >> Changes since V2: >> - Bumped XEN_DOMCTL_INTERFACE_VERSION. >> - Introduced struct monitor_msr_bitmap as recommended by Andrew >> Cooper, which allowed removing some pointer arithmetic magic. >> - Removed arch_ prefix from monitor functions, as recommended >> by Tamas Lengyel. >> - Replaced the page allocation code with xzalloc() / xfree() for >> struct monitor_msr_bitmap. >> - Now returning -ENXIO instead of -EINVAL from the monitor >> functions, as recommended by Konrad Rzeszutek Wilk. >> --- >> tools/libxc/include/xenctrl.h | 4 +- >> tools/libxc/xc_monitor.c | 6 +-- >> xen/arch/x86/hvm/event.c | 3 +- >> xen/arch/x86/hvm/hvm.c | 3 +- >> xen/arch/x86/hvm/vmx/vmcs.c | 26 ++--------- >> xen/arch/x86/hvm/vmx/vmx.c | 10 ++-- >> xen/arch/x86/monitor.c | 95 >> +++++++++++++++++++++++++++++++++----- >> xen/arch/x86/vm_event.c | 9 ++++ >> xen/include/asm-x86/domain.h | 4 +- >> xen/include/asm-x86/hvm/hvm.h | 8 ++-- >> xen/include/asm-x86/hvm/vmx/vmcs.h | 7 --- >> xen/include/asm-x86/monitor.h | 8 ++++ >> xen/include/public/domctl.h | 5 +- >> 13 files changed, 121 insertions(+), 67 deletions(-) >> >> diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h >> index f5a034a..9698d46 100644 >> --- a/tools/libxc/include/xenctrl.h >> +++ b/tools/libxc/include/xenctrl.h >> @@ -2183,8 +2183,8 @@ int xc_monitor_get_capabilities(xc_interface *xch, >> domid_t domain_id, >> int xc_monitor_write_ctrlreg(xc_interface *xch, domid_t domain_id, >> uint16_t index, bool enable, bool sync, >> bool onchangeonly); >> -int xc_monitor_mov_to_msr(xc_interface *xch, domid_t domain_id, bool >> enable, >> - bool extended_capture); >> +int xc_monitor_mov_to_msr(xc_interface *xch, domid_t domain_id, uint32_t >> msr, >> + bool enable); >> > > So my only concern with this approach here is that the MSR index > definitions that are supposed to be passed are never exported via a public > header, are only defined in asm-x86/msr-index.h. Should that also be moved > to be a public header as part of this patch? > > > The MSRs are specified by the Intel/AMD manuals. Furthermore, for the > non-architectural ones, it is quite possible that the same index maps to > different MSRs on different hardware. It is definitely the case that > different hadware has the same MSR at different indices. (The Intel cpuid > masking MSRs have this propery across different CPU generations). > > I expect the monitoring application to know the current hardware, and > which MSRs are applicable. > > ~Andrew > Fair enough. Tamas
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel