All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: "Kang, Luwei" <luwei.kang@intel.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	"Nakajima, Jun" <jun.nakajima@intel.com>,
	"Tian, Kevin" <kevin.tian@intel.com>
Cc: "sstabellini@kernel.org" <sstabellini@kernel.org>,
	"wei.liu2@citrix.com" <wei.liu2@citrix.com>,
	"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	"George.Dunlap@eu.citrix.com" <George.Dunlap@eu.citrix.com>,
	"ian.jackson@eu.citrix.com" <ian.jackson@eu.citrix.com>,
	"tim@xen.org" <tim@xen.org>,
	"jbeulich@suse.com" <jbeulich@suse.com>
Subject: Re: [PATCH 0/6] Intel Processor Trace virtulization enabling
Date: Thu, 26 Oct 2017 14:28:22 +0100	[thread overview]
Message-ID: <fbb92420-63be-df37-b072-7b9e176992e4@citrix.com> (raw)
In-Reply-To: <82D7661F83C1A047AF7DC287873BF1E167E23FFF@SHSMSX101.ccr.corp.intel.com>

On 26/10/17 05:13, Kang, Luwei wrote:
>>> Hi All,
>>>
>>> Here is a patch-series which adding Processor Trace enabling in XEN guest. You can get It's software developer manuals from:
>>> https://software.intel.com/sites/default/files/managed/c5/15/architect
>>> ure-instruction-set-extensions-programming-reference.pdf
>>> In Chapter 5 INTEL PROCESSOR TRACE: VMX IMPROVEMENTS.
>>>
>>> Introduction:
>>> Intel Processor Trace (Intel PT) is an extension of Intel Architecture that captures information about software execution using
>> dedicated hardware facilities that cause only minimal performance perturbation to the software being traced. Details on the Intel PT
>> infrastructure and trace capabilities can be found in the Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 3C.
>>> The suite of architecture changes serve to simplify the process of virtualizing Intel PT for use by a guest software. There are two
>> primary elements to this new architecture support for VMX support improvements made for Intel PT.
>>> 1. Addition of a new guest IA32_RTIT_CTL value field to the VMCS.
>>>   — This serves to speed and simplify the process of disabling trace on VM exit, and restoring it on VM entry.
>>> 2. Enabling use of EPT to redirect PT output.
>>>   — This enables the VMM to elect to virtualize the PT output buffer using EPT. In this mode, the CPU will treat PT output
>> addresses as Guest Physical Addresses (GPAs) and translate them using EPT. This means that Intel PT output reads (of the ToPA
>> table) and writes (of trace output) can cause EPT violations, and other output events.
>>
>> Hello,
>>
>> Having read the new proposed extensions, I've got some architecture questions before diving into the patches themselves.
>>
>> First of all, is this technology expected to end up in Icelake, or something later?
> Yes, this would be enabled on Icelake.

Thanks.

>
>> In Vol 3, the existing VMX support describes a number of scenarios (system wide, VMM-only, VM-only, guest aware), which require
>> the use of MSR load lists to atomically alter the IA32_RTIT_* msrs.
> Currently, I just enabling the guest only mode(VM-only) in my patches.

That is fine.  I'm not asking you to implement these modes; I am just
trying to work out how they would interact.

>
>> Obviously, system wide mode is incompatible with also allowing the guest to use PT itself, 
> Yes, system mode(collect trace packets of the entire system) can't work with guest only mode at the same time.
>
>> but what about Xen wanting to use PT for itself, and for the guest to use PT as well?
> I think this can be named by host-guest mode. This may need add new command or interface to enable PT in Xen hypervisor. Trace vmm-only and guest simultaneous and output to their respective buffer.
>
>> Previously, this appears to be possible using the MSR load lists (albeit with Xen needing to shadow the ToPA records to cause the
>> packet stream to end up in the right place).
> Yes.
>
>> However, the new VM consistency checks require that using EPT redirection requires clear/load CTL on exit/entry be set, and having
>> load on entry set requires the host TraceEn to be clear.
> Yes. New bits added in VMCS can make sure PT be disabled before VM exit and IA32_RTIT_CTL MSR will be written with the value of the associated Guest State field of the VMCS on VM entry.

I am not sure I explained myself clearly.

It appears that it is possible to implement host-guest mode using MSR
load lists, because all the host configuration gets replaced by guest
configuration on vmentry, and host configuration gets restored at vmexit.

However with these PT extension, a new restriction is that a vmentry
failure will occur if we try to load the guest RTIT_CTL value while the
current RTIT_CTL.TraceEn is set.

As far as I can tell, this prohibits host-guest mode from working,
unless we tolerate having Xen clear RTIT_CTL before restoring guest GPR
state.

Is this correct, or have I missed something?

Thanks,

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2017-10-26 13:28 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-21 20:02 [PATCH 0/6] Intel Processor Trace virtulization enabling Luwei Kang
2017-10-21 20:02 ` [PATCH 1/6] x86: add a flag to enable Intel processor trace Luwei Kang
2017-10-21 20:02 ` [PATCH 2/6] x86: configure vmcs for Intel processor trace virtualization Luwei Kang
2017-10-21 20:02 ` [PATCH 3/6] x86: add intel proecessor trace support for cpuid Luwei Kang
2017-10-21 20:02 ` [PATCH 4/6] x86: add intel processor trace context Luwei Kang
2017-10-21 20:02 ` [PATCH 5/6] x86: implement intel processor trace context switch Luwei Kang
2017-10-21 20:02 ` [PATCH 6/6] x86: Pass through intel processor trace MSRs Luwei Kang
2017-10-24 19:13 ` [PATCH 0/6] Intel Processor Trace virtulization enabling Andrew Cooper
2017-10-26  4:13   ` Kang, Luwei
2017-10-26 13:28     ` Andrew Cooper [this message]
2017-10-27  5:04       ` Kang, Luwei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fbb92420-63be-df37-b072-7b9e176992e4@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jun.nakajima@intel.com \
    --cc=kevin.tian@intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=luwei.kang@intel.com \
    --cc=sstabellini@kernel.org \
    --cc=tim@xen.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.