xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Ian Campbell <ian.campbell@citrix.com>,
	George Dunlap <George.Dunlap@eu.citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Tim Deegan <tim@xen.org>,
	Stefano Stabellini <stefano.stabellini@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v6 24/29] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs
Date: Wed, 30 Sep 2015 14:19:17 +0200	[thread overview]
Message-ID: <560BD345.5090301@citrix.com> (raw)
In-Reply-To: <560BE9A502000078000A716C@prv-mh.provo.novell.com>

El 30/09/15 a les 13.54, Jan Beulich ha escrit:
>>>> On 30.09.15 at 13:37, <roger.pau@citrix.com> wrote:
>> This is what I currently have prototyped according to the comments, it 
>> should allow starting the vCPU in all possible modes AFAICT.
> 
> Looks okay, one more comment:
> 
>> struct vcpu_hvm_x86_32 {
>>     uint32_t eax;
>>     uint32_t ecx;
>>     uint32_t edx;
>>     uint32_t ebx;
>>     uint32_t esp;
>>     uint32_t ebp;
>>     uint32_t esi;
>>     uint32_t edi;
>>     uint32_t eip;
>>     uint32_t eflags;
>>
>>     uint32_t cr0;
>>     uint32_t cr3;
>>     uint32_t cr4;
>>
>>     /*
>>      * EFER should only be used to set the NXE bit (if required)
>>      * when starting a vCPU in 32bit mode with paging enabled or
>>      * to set the LME/LMA bits in order to start the vCPU in
>>      * compatibility mode.
>>      */
>>     uint64_t efer;
>>
>>     uint32_t cs_base;
>>     uint32_t ds_base;
>>     uint32_t ss_base;
>>     uint32_t es_base;
>>     uint32_t tr_base;
>>     uint32_t cs_limit;
>>     uint32_t ds_limit;
>>     uint32_t ss_limit;
>>     uint32_t es_limit;
>>     uint32_t tr_limit;
>>     uint16_t cs_ar;
>>     uint16_t ds_ar;
>>     uint16_t ss_ar;
>>     uint16_t es_ar;
>>     uint16_t tr_ar;
>> };
>>
>> struct vcpu_hvm_x86_64 {
>>     uint64_t rax;
>>     uint64_t rcx;
>>     uint64_t rdx;
>>     uint64_t rbx;
>>     uint64_t rsp;
>>     uint64_t rbp;
>>     uint64_t rsi;
>>     uint64_t rdi;
>>     uint64_t rip;
>>     uint64_t rflags;
>>
>>     uint64_t cr0;
>>     uint64_t cr3;
>>     uint64_t cr4;
>>     uint64_t efer;
>>
>>     /*
>>      * Using VCPU_HVM_MODE_64B implies that the vCPU is launched
>>      * directly in long mode, so the type of the cached part
>>      * of the TR register is set to describe a 64-bit TSS (Busy).
>>      * The cached part of the CS register will also have the L bit
>>      * set (64-bit code segment).
> 
> I'd leave out mentioning TR here (or else it'll be odd not to mention
> e.g. LDTR too). Perhaps just "..., so the cached parts of the segment
> registers get set to match that environment"?

That sounds fine. I'm going to update the patch and the FreeBSD part in
order to test it. Since we also spoke about adding sanity checks, I
wonder whether I should add those checks now, or leave them for a later
patch. IMHO those checks are only useful for developers.

For VCPU_HVM_MODE_32B:
 - rIP within CS limit.
 - Check that CS.DPL == SS.DPL.
 - rSP within SS limit.

TBH I don't think we should enforce the last two checks, starting with
an invalid stack should be fine as long as the user knows it. Maybe
print a warning/debug message in this case?

For VCPU_HVM_MODE_64B:
 - Check that cr0 has paging enabled.
 - Check that cr4 has pae enabled.
 - Check that efer has the LMA/LME bits set.

Those should be always enforced for long mode.

Roger.

  reply	other threads:[~2015-09-30 12:19 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-04 12:08 [PATCH v6 00/29] Introduce HVM without dm and new boot ABI Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 01/29] libxc: split x86 HVM setup_guest into smaller logical functions Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 02/29] libxc: unify xc_dom_p2m_{host/guest} Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 03/29] libxc: introduce the notion of a container type Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 04/29] libxc: introduce a domain loader for HVM guest firmware Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 05/29] libxc: make arch_setup_meminit a xc_dom_arch hook Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 06/29] libxc: make arch_setup_boot{init/late} xc_dom_arch hooks Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 07/29] libxc: rework BSP initialization Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 08/29] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Roger Pau Monne
2015-09-18 15:53   ` Anthony PERARD
2015-09-23 10:32     ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 09/29] libxl: switch HVM domain building to use xc_dom_* helpers Roger Pau Monne
2015-09-18 15:53   ` Anthony PERARD
2015-09-23 10:38     ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 10/29] libxc: remove dead HVM building code Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 11/29] xen/x86: add bitmap of enabled emulated devices Roger Pau Monne
2015-09-04 12:25   ` Wei Liu
2015-09-04 13:51     ` Roger Pau Monné
2015-09-04 13:55       ` Jan Beulich
2015-09-04 22:41         ` Andrew Cooper
2015-09-23 11:43         ` Roger Pau Monné
2015-09-04 13:56       ` Wei Liu
2015-09-09 14:27   ` Wei Liu
2015-09-16  9:50   ` Jan Beulich
2015-09-23 12:35     ` Roger Pau Monné
2015-09-23 13:24       ` Jan Beulich
2015-09-23 15:02         ` Roger Pau Monné
2015-09-16 10:10   ` Jan Beulich
2015-09-23 12:42     ` Roger Pau Monné
2015-09-23 12:46       ` Andrew Cooper
2015-09-04 12:08 ` [PATCH v6 12/29] xen/x86: allow disabling the emulated local apic Roger Pau Monne
2015-09-16 10:05   ` Jan Beulich
2015-09-23 15:45     ` Roger Pau Monné
2015-09-24  7:57       ` Jan Beulich
2015-09-25  9:00         ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 13/29] xen/x86: allow disabling the emulated HPET Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 14/29] xen/x86: allow disabling the pmtimer Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 15/29] xen/x86: allow disabling the emulated RTC Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 16/29] xen/x86: allow disabling the emulated IO APIC Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 17/29] xen/x86: allow disabling the emulated PIC Roger Pau Monne
2015-09-21 14:34   ` Jan Beulich
2015-09-25 15:01     ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 18/29] xen/x86: allow disabling the emulated pmu Roger Pau Monne
2015-09-21 14:36   ` Jan Beulich
2015-09-21 14:48     ` Boris Ostrovsky
2015-09-25 15:07       ` Roger Pau Monné
2015-09-25 15:13         ` Jan Beulich
2015-09-25 15:22           ` Roger Pau Monné
2015-09-25 15:41             ` Boris Ostrovsky
2015-09-04 12:08 ` [PATCH v6 19/29] xen/x86: allow disabling the emulated VGA Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 20/29] xen/x86: allow disabling the emulated IOMMU Roger Pau Monne
2015-09-28 13:58   ` Aravind Gopalakrishnan
2015-09-04 12:09 ` [PATCH v6 21/29] xen/x86: allow disabling all emulated devices inside of Xen Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 22/29] elfnotes: intorduce a new PHYS_ENTRY elfnote Roger Pau Monne
2015-09-21 14:47   ` Jan Beulich
2015-09-28 10:35     ` Roger Pau Monné
2015-09-28 10:56       ` Jan Beulich
2015-09-28 10:59         ` Andrew Cooper
2015-09-04 12:09 ` [PATCH v6 23/29] libxc: allow creating domains without emulated devices Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 24/29] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Roger Pau Monne
2015-09-21 15:44   ` Jan Beulich
2015-09-25 15:16     ` Andrew Cooper
2015-09-25 15:52       ` Jan Beulich
2015-09-28 16:09     ` Roger Pau Monné
2015-09-29  7:09       ` Jan Beulich
2015-09-29  8:53         ` Tim Deegan
2015-09-29 10:00         ` Andrew Cooper
2015-09-29 10:07           ` Jan Beulich
2015-09-29 10:25             ` Andrew Cooper
2015-09-29 10:33               ` Jan Beulich
2015-09-29 10:37                 ` Andrew Cooper
2015-09-29 10:48                   ` Jan Beulich
2015-09-29 14:01                     ` Roger Pau Monné
2015-09-29 15:29                       ` Jan Beulich
2015-09-29 16:01                         ` Roger Pau Monné
2015-09-29 16:20                           ` Jan Beulich
2015-09-29 16:49                             ` Roger Pau Monné
2015-09-29 16:58                               ` Roger Pau Monné
2015-09-30 10:03                               ` Jan Beulich
2015-09-30 11:37                                 ` Roger Pau Monné
2015-09-30 11:49                                   ` Andrew Cooper
2015-09-30 11:54                                   ` Jan Beulich
2015-09-30 12:19                                     ` Roger Pau Monné [this message]
2015-09-30 12:35                                       ` Jan Beulich
2015-09-30 12:50                                         ` Andrew Cooper
2015-09-30 15:33                                           ` Roger Pau Monné
2015-09-30 14:23                                         ` Roger Pau Monné
2015-09-30 15:41                                           ` Jan Beulich
2015-09-04 12:09 ` [PATCH v6 25/29] xenconsole: try to attach to PV console if HVM fails Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 26/29] libxc/xen: introduce a start info structure for HVMlite guests Roger Pau Monne
2015-09-10 16:00   ` Wei Liu
2015-09-21 15:53   ` Jan Beulich
2015-09-28 16:51     ` Roger Pau Monné
2015-09-04 12:09 ` [PATCH v6 27/29] libxc: switch xc_dom_elfloader to be used with HVMlite domains Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 28/29] libxl: allow the creation of HVM domains without a device model Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 29/29] libxl: add support for migrating HVM guests " Roger Pau Monne
2015-09-10 16:00   ` Wei Liu
2015-09-10 16:30   ` Andrew Cooper
2015-09-11 13:04 ` [PATCH v6 00/29] Introduce HVM without dm and new boot ABI Ian Campbell

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=560BD345.5090301@citrix.com \
    --to=roger.pau@citrix.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=tim@xen.org \
    --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 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).