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

Re: [PATCH v8 12/16] xen/domctl: Add XEN_DOMCTL_vmtrace_op


  • To: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Mon, 1 Feb 2021 13:01:22 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Wb6ot+QJdkaYDefg/rBunuBoFJoz9ePHqO3a3cXrWYg=; b=KSULxET2KxlwOgezFzVoWFV9eRjyJUUhsglQ9peYAf5Xz2WgIBJsCYQQ42H+SMXFbKzMYJb1fzEA73nl07AJ4z5TCkKBszIQUhjnFHRJBHWw8tDSu4468YrRtzUFFlJetAir1KU8XGSocUOmveSMSuFgIO/X4Rb7etLA5rhQkqzdDeZjz4zMFhxjtmJfjhDIrKpCcoBVdZfbS5xuUgNxA90+1CGI54AFB7lZ/VQM90cT+lkjGDy0WtdhzwiDYzFtGWF5dkTV0RinMaVsR0MUEUN3er0eaL1ILTUsMjYBdwv4B97r7A9Z0FNfrZqRTQZCP+cyeRhz7kkK97b578v/rQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PKQq6uAklNpjYkR3dgGGQWXShFJzpbSBhvFhN1V5AElPvERyVdFV7umln+4ReeO/9zBhHlUL24y66DKoW0IXUjgzc0MXBFJAwxHz2p13QhI4x0iLwdljF+yYgPTBz7KE3n3fi0vQlkevBEjKZHDzmtUMOy1tnBV0SKY2NbL9EWJgRLfRr1lK2kMYV4Shw0wkCUq32ciFN0+EsL3Y4DGa+1KVha+bIXSkR8XtGITu0RytpQH96BfgCbweWz5/ZoTNJJuyd9nInDf05gE4ioGOKJiXTPh0ULTeg3edJHKYWtlG0Zry8cNbeMjImhMmUd251D6Nh3QCghMcDESQRZLscg==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Michał Leszczyński <michal.leszczynski@xxxxxxx>, "Jan Beulich" <JBeulich@xxxxxxxx>, Wei Liu <wl@xxxxxxx>, Jun Nakajima <jun.nakajima@xxxxxxxxx>, Kevin Tian <kevin.tian@xxxxxxxxx>, Tamas K Lengyel <tamas@xxxxxxxxxxxxx>
  • Delivery-date: Mon, 01 Feb 2021 12:02:08 +0000
  • Ironport-sdr: 27X+8H/vSHJyFvUg9iqvwAIbGVc9jT64oyDYHZt8JlQB1+30KEwmFy4sY5124KBcBmWbWSdp8J DteaPlZdPgheN4W2Jm/fk3Qc4MyQf+LtZUOwLx0MIidEjROE01wuF/B06Ay0qu8NkDZl0QdhA4 ZjqVbGJmcGxtLc6yPNeXFk9plgBFGqUAFcWYcoLl4HqozvK2L1f2792QuCJO13GAEXCXviSXxt 8B2q1X+EIisHxUN5QtbJkMiEPOQV09peMzRzhs8GOgdsMpQOi/QTstEXSjBcWTR7fHgXnTfycX ugY=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Sat, Jan 30, 2021 at 02:58:48AM +0000, Andrew Cooper wrote:
> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
> index 12b961113e..a64c4e4177 100644
> --- a/xen/arch/x86/hvm/vmx/vmx.c
> +++ b/xen/arch/x86/hvm/vmx/vmx.c
> @@ -2261,6 +2261,157 @@ static bool vmx_get_pending_event(struct vcpu *v, 
> struct x86_event *info)
>      return true;
>  }
>  
> +/*
> + * We only let vmtrace agents see and modify a subset of bits in 
> MSR_RTIT_CTL.
> + * These all pertain to data-emitted into the trace buffer(s).  Must not
> + * include controls pertaining to the structure/position of the trace
> + * buffer(s).
> + */
> +#define RTIT_CTL_MASK                                                   \
> +    (RTIT_CTL_TRACE_EN | RTIT_CTL_OS | RTIT_CTL_USR | RTIT_CTL_TSC_EN | \
> +     RTIT_CTL_DIS_RETC | RTIT_CTL_BRANCH_EN)
> +
> +/*
> + * Status bits restricted to the first-gen subset (i.e. no further CPUID
> + * requirements.)
> + */
> +#define RTIT_STATUS_MASK                                                \
> +    (RTIT_STATUS_FILTER_EN | RTIT_STATUS_CONTEXT_EN | RTIT_STATUS_TRIGGER_EN 
> | \
> +     RTIT_STATUS_ERROR | RTIT_STATUS_STOPPED)
> +
> +static int vmtrace_get_option(struct vcpu *v, uint64_t key, uint64_t *output)
> +{
> +    const struct vcpu_msrs *msrs = v->arch.msrs;
> +
> +    switch ( key )
> +    {
> +    case MSR_RTIT_OUTPUT_MASK:

Is there any value in returning the raw value of this MSR instead of
just using XEN_DOMCTL_vmtrace_output_position?

The size of the buffer should be known to user-space, and then setting
the offset could be done by adding a XEN_DOMCTL_vmtrace_set_output_position?

Also the contents of this MSR depend on whether ToPA mode is used, and
that's not under the control of the guest. So if Xen is switched to
use ToPA mode at some point the value of this MSR might not be what a
user of the interface expects.

>From an interface PoV it might be better to offer:

XEN_DOMCTL_vmtrace_get_limit
XEN_DOMCTL_vmtrace_get_output_position
XEN_DOMCTL_vmtrace_set_output_position

IMO, as that would be compatible with ToPA if we ever switch to it.

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.