xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Wei Huang <wei.huang2@amd.com>
To: "'xen-devel@lists.xensource.com'" <xen-devel@lists.xensource.com>,
	keir@xen.org, Jan Beulich <JBeulich@novell.com>
Subject: [PATCH] FPU LWP 0/8: patch description
Date: Tue, 3 May 2011 15:14:59 -0500	[thread overview]
Message-ID: <4DC06243.2090409@amd.com> (raw)

This patch set supports AMD lightweight profiling for SVM guests. 
Because LWP isn't tracked by CR0.TS bit, we clean up the FPU code to 
handle lazy and unlazy FPU states differently. Lazy FPU state (such as 
SSE, YMM) is handled when #NM is triggered. Unlazy state, such as LWP, 
is saved and restored on each vcpu context switch.

Per Keir's comments, I moved extended state related code into xstate.c 
and xstate.h. The FPU related code in i387.c was also cleaned up and has 
consistent names now. The comments from Jan Beulich were also taken.

====== i387.c ======
* void vcpu_restore_fpu_eager(struct vcpu *v);
* void vcpu_restore_fpu_lazy(struct vcpu *v);
* void vcpu_save_fpu(struct vcpu *v);
* int vcpu_init_fpu(struct vcpu *v);
* void vcpu_destroy_fpu(struct vcpu *v);

====== xstate.c ======
* void set_xcr0(u64 xfeatures);
* uint64_t get_xcr0(void);
* void xsave(struct vcpu *v, uint64_t mask);
* void xrstor(struct vcpu *v, uint64_t mask);
* bool_t xsave_enabled(const struct vcpu *v);
* void xstate_free_save_area(struct vcpu *v);
* int xstate_alloc_save_area(struct vcpu *v);
* void xstate_init(void);


This code has been tested on real hardware. Please comment.

-Wei


  b/xen/arch/x86/xstate.c            |  188 +++++++++++++++
  b/xen/include/asm-x86/xstate.h     |   72 +++++
  tools/libxc/xc_cpuid_x86.c         |    6
  xen/arch/x86/Makefile              |    1
  xen/arch/x86/acpi/suspend.c        |    2
  xen/arch/x86/cpu/common.c          |    4
  xen/arch/x86/domain.c              |   29 --
  xen/arch/x86/domctl.c              |    2
  xen/arch/x86/hvm/hvm.c             |    3
  xen/arch/x86/hvm/svm/svm.c         |   72 +++++
  xen/arch/x86/hvm/svm/vmcb.c        |    5
  xen/arch/x86/hvm/vmx/vmcs.c        |    1
  xen/arch/x86/hvm/vmx/vmx.c         |    2
  xen/arch/x86/i387.c                |  450 
++++++++++++++++---------------------
  xen/arch/x86/traps.c               |    3
  xen/include/asm-x86/cpufeature.h   |    2
  xen/include/asm-x86/hvm/svm/vmcb.h |    3
  xen/include/asm-x86/i387.h         |   71 -----
  xen/include/asm-x86/msr-index.h    |    4
  19 files changed, 566 insertions(+), 354 deletions(-)

                 reply	other threads:[~2011-05-03 20:14 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=4DC06243.2090409@amd.com \
    --to=wei.huang2@amd.com \
    --cc=JBeulich@novell.com \
    --cc=keir@xen.org \
    --cc=xen-devel@lists.xensource.com \
    /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 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).