All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <ian.campbell@citrix.com>
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Wei Liu <wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [PATCH] libxc: create an initial FPU state for HVM guests
Date: Tue, 13 Oct 2015 14:42:25 +0100	[thread overview]
Message-ID: <1444743745.23192.91.camel@citrix.com> (raw)
In-Reply-To: <1444743155-3469-1-git-send-email-roger.pau@citrix.com>

On Tue, 2015-10-13 at 15:32 +0200, Roger Pau Monne wrote:
> Xen always set the FPU as initialized when loading a HVM context, so
> libxc
> has to provide a valid FPU context when setting the CPU registers.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Cc: Jan Beulich <jbeulich@suse.com>
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Wei Liu <wei.liu2@citrix.com>
> ---
>  tools/libxc/xc_dom_x86.c | 34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
> 
> diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c
> index dd331bf..f8d580c 100644
> --- a/tools/libxc/xc_dom_x86.c
> +++ b/tools/libxc/xc_dom_x86.c
> @@ -841,6 +841,23 @@ static int vcpu_hvm(struct xc_dom_image *dom)
>          struct hvm_save_descriptor end_d;
>          HVM_SAVE_TYPE(END) end;
>      } bsp_ctx;
> +    struct {
> +        uint16_t fcw;
> +        uint16_t fsw;
> +        uint8_t ftw;
> +        uint8_t rsvd1;
> +        uint16_t fop;
> +        union {
> +            uint64_t addr;
> +            struct {
> +                uint32_t offs;
> +                uint16_t sel;
> +                uint16_t rsvd;
> +            };
> +        } fip, fdp;
> +        uint32_t mxcsr;
> +        uint32_t mxcsr_mask;
> +    } *fpu_ctxt;
>      uint8_t *full_ctx = NULL;
>      int rc;
>  
> @@ -908,6 +925,23 @@ static int vcpu_hvm(struct xc_dom_image *dom)
>      /* Set the control registers. */
>      bsp_ctx.cpu.cr0 = X86_CR0_PE | X86_CR0_ET;
>  
> +    /*
> +     * XXX: Set initial FPU state.
> +     *
> +     * This should be removed once Xen is able to know if the
> +     * FPU state saved is valid or not, now Xen always sets
> +     * fpu_initialised to true regardless of the FPU state.

I suppose we aren't just doing that now because there is some complexity in
doing so? Can that be mentioned in the commit log please.

Other than that if the hypervisor folks are happy with a) the approach and
b) the specifics of fpu_ctxt described below then it's fine by me too.


> +     *
> +     * The code below mimics the FPU sate after executing
> +     * fninit
> +     * ldmxcsr 0x1f80
> +     */
> +    fpu_ctxt = (typeof(fpu_ctxt))bsp_ctx.cpu.fpu_regs;
> +
> +    fpu_ctxt->fcw = 0x37f;
> +    fpu_ctxt->ftw = 0xff;
> +    fpu_ctxt->mxcsr = 0x1f80;
> +
>      /* Set the IP. */
>      bsp_ctx.cpu.rip = dom->parms.phys_entry;
>  

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

  parent reply	other threads:[~2015-10-13 13:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-13 13:32 [PATCH] libxc: create an initial FPU state for HVM guests Roger Pau Monne
2015-10-13 13:36 ` Andrew Cooper
2015-10-13 13:42 ` Ian Campbell [this message]
2015-10-13 16:17   ` Roger Pau Monné
2015-10-13 14:43 ` Jan Beulich
2015-10-13 16:18   ` Roger Pau Monné
2015-10-14  9:52     ` Jan Beulich

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=1444743745.23192.91.camel@citrix.com \
    --to=ian.campbell@citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=roger.pau@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.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.