From: George Dunlap <george.dunlap@eu.citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
Keir Fraser <keir@xen.org>, Tim Deegan <tim@xen.org>
Subject: Re: [PATCH RFC v13 06/20] pvh: vmx-specific changes
Date: Thu, 7 Nov 2013 14:14:36 +0000 [thread overview]
Message-ID: <527BA04C.4070407@eu.citrix.com> (raw)
In-Reply-To: <52446EE202000078000F70AD@nat28.tlf.novell.com>
On 26/09/13 16:29, Jan Beulich wrote:
>>>> On 23.09.13 at 18:49, George Dunlap <george.dunlap@eu.citrix.com> wrote:
>> Changes:
>> * Enforce HAP mode for now
>> * Disable exits related to virtual interrupts or emulated APICs
>> * Disable changing paging mode
>> - "unrestricted guest" (i.e., real mode for EPT) disabled
>> - write guest EFER disabled
>> * Start in 64-bit mode
>> * Force TSC mode to be "none"
>> * Paging mode update to happen in arch_set_info_guest
>>
>> Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
>> Signed-off-by: Mukesh Rathor <mukesh.rathor@oracle.com>
>> ---
>> v13:
>> - Fix up default cr0 settings
>> - Get rid of some unnecessary PVH-related changes
>> - Return EOPNOTSUPP instead of ENOSYS if hardware features are not present
>> - Remove an unnecessary variable from pvh_check_requirements
>> CC: Jan Beulich <jbeulich@suse.com>
>> CC: Tim Deegan <tim@xen.org>
>> CC: Keir Fraser <keir@xen.org>
>> ---
>> xen/arch/x86/hvm/vmx/vmcs.c | 130
>> +++++++++++++++++++++++++++++++++++++++++--
>> 1 file changed, 126 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
>> index cf54d18..53fccdf 100644
>> --- a/xen/arch/x86/hvm/vmx/vmcs.c
>> +++ b/xen/arch/x86/hvm/vmx/vmcs.c
>> @@ -828,6 +828,60 @@ void virtual_vmcs_vmwrite(void *vvmcs, u32
>> vmcs_encoding, u64 val)
>> virtual_vmcs_exit(vvmcs);
>> }
>>
>> +static int pvh_check_requirements(struct vcpu *v)
>> +{
>> + u64 required;
>> +
>> + /* Check for required hardware features */
>> + if ( !cpu_has_vmx_ept )
>> + {
>> + printk(XENLOG_G_INFO "PVH: CPU does not have EPT support\n");
>> + return -EOPNOTSUPP;
>> + }
>> + if ( !cpu_has_vmx_pat )
>> + {
>> + printk(XENLOG_G_INFO "PVH: CPU does not have PAT support\n");
>> + return -EOPNOTSUPP;
>> + }
>> + if ( !cpu_has_vmx_msr_bitmap )
>> + {
>> + printk(XENLOG_G_INFO "PVH: CPU does not have msr bitmap\n");
>> + return -EOPNOTSUPP;
>> + }
>> + if ( !cpu_has_vmx_secondary_exec_control )
>> + {
>> + printk(XENLOG_G_INFO "CPU Secondary exec is required to run PVH\n");
>> + return -EOPNOTSUPP;
>> + }
> Up to here the checks are VMX specific, and hence belong in a VMX
> specific file, ...
>
>> + required = X86_CR4_PAE | X86_CR4_VMXE | X86_CR4_OSFXSR;
>> + if ( (real_cr4_to_pv_guest_cr4(mmu_cr4_features) & required) != required )
>> + {
>> + printk(XENLOG_G_INFO "PVH: required CR4 features not available:%lx\n",
>> + required);
>> + return -EOPNOTSUPP;
>> + }
>> +
>> + /* Check for required configuration options */
>> + if ( !paging_mode_hap(v->domain) )
>> + {
>> + printk(XENLOG_G_INFO "HAP is required for PVH guest.\n");
>> + return -EINVAL;
>> + }
>> + /*
>> + * If rdtsc exiting is turned on and it goes thru emulate_privileged_op,
>> + * then pv_vcpu.ctrlreg must be added to the pvh struct.
>> + */
>> + if ( v->domain->arch.vtsc )
>> + {
>> + printk(XENLOG_G_INFO
>> + "At present PVH only supports the default timer mode\n");
>> + return -EINVAL;
>> + }
> ... but all of these are pretty generic (apart from the X86_CR4_VMXE
> in the CR4 mask checked above, but I wonder whether that
> shouldn't be checked much earlier - for HVM guests no such check
> exists here afaik).
The hap check can be removed and checked in hvm_domain_initialise(), and
the vtsc one moved to tsc_set_info().
Is it really necessary to check these bits in cr4? Or is this more or
less an ASSERT() to make sure people haven't accidentally disabled these
in the real->guest cr4 conversion?
-George
next prev parent reply other threads:[~2013-11-07 14:14 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-23 16:49 [PATCH RFC v13 00/20] Introduce PVH domU support George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 01/20] Allow vmx_update_debug_state to be called when v!=current George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 02/20] pvh prep: code motion George Dunlap
2013-09-26 9:20 ` Tim Deegan
2013-10-04 15:29 ` Roger Pau Monné
2013-09-23 16:49 ` [PATCH RFC v13 03/20] Introduce pv guest type and has_hvm_container macros George Dunlap
2013-09-26 11:53 ` Tim Deegan
2013-09-26 12:54 ` Ian Campbell
2013-09-26 13:46 ` George Dunlap
2013-09-26 15:31 ` Konrad Rzeszutek Wilk
2013-09-26 16:24 ` Tim Deegan
2013-09-23 16:49 ` [PATCH RFC v13 04/20] pvh: Introduce PVH guest type George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 05/20] pvh: Disable unneeded features of HVM containers George Dunlap
2013-09-26 15:22 ` Jan Beulich
2013-11-04 12:31 ` George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 06/20] pvh: vmx-specific changes George Dunlap
2013-09-26 15:29 ` Jan Beulich
2013-11-07 14:14 ` George Dunlap [this message]
2013-11-07 14:29 ` Jan Beulich
2013-10-07 15:55 ` Roger Pau Monné
2013-10-07 16:06 ` George Dunlap
2013-10-07 16:12 ` Tim Deegan
2013-10-07 16:20 ` George Dunlap
2013-10-07 17:08 ` Tim Deegan
2013-10-08 8:45 ` Jan Beulich
2013-11-07 12:02 ` George Dunlap
2013-11-07 13:12 ` Jan Beulich
2013-09-23 16:49 ` [PATCH RFC v13 07/20] pvh: Do not allow PVH guests to change paging modes George Dunlap
2013-09-26 15:30 ` Jan Beulich
2013-09-23 16:49 ` [PATCH RFC v13 08/20] pvh: PVH access to hypercalls George Dunlap
2013-09-26 15:33 ` Jan Beulich
2013-09-27 21:15 ` Mukesh Rathor
2013-09-30 6:38 ` Jan Beulich
2013-09-23 16:49 ` [PATCH RFC v13 09/20] pvh: Use PV e820 George Dunlap
2013-09-27 17:57 ` Konrad Rzeszutek Wilk
2013-09-23 16:49 ` [PATCH RFC v13 10/20] pvh: Support guest_kernel_mode for PVH George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 11/20] pvh: Support read_segment_register " George Dunlap
2013-09-26 15:36 ` Jan Beulich
2013-09-23 16:49 ` [PATCH RFC v13 12/20] pvh: read_descriptor for PVH guests George Dunlap
2013-09-27 18:34 ` Konrad Rzeszutek Wilk
2013-09-23 16:49 ` [PATCH RFC v13 13/20] pvh: Set up more PV stuff in set_info_guest George Dunlap
2013-09-26 15:43 ` Jan Beulich
2013-11-07 15:57 ` George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 14/20] pvh: Use PV handlers for emulated forced invalid ops, cpuid, and IO George Dunlap
2013-09-26 15:52 ` Jan Beulich
2013-09-23 16:49 ` [PATCH RFC v13 15/20] pvh: Disable 32-bit guest support for now George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 16/20] pvh: Restrict tsc_mode to NEVER_EMULATE " George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 17/20] pvh: Disable debug traps when doing pv emulation for PVH domains George Dunlap
2013-09-26 15:55 ` Jan Beulich
2013-09-23 16:49 ` [PATCH RFC v13 18/20] pvh: Documentation George Dunlap
2013-09-23 16:49 ` [PATCH RFC v13 19/20] PVH xen tools: libxc changes to build a PVH guest George Dunlap
2013-09-27 18:37 ` Konrad Rzeszutek Wilk
2013-10-18 16:45 ` Roger Pau Monné
2013-11-04 11:56 ` George Dunlap
2013-11-04 13:18 ` Roger Pau Monné
2013-09-23 16:50 ` [PATCH RFC v13 20/20] PVH xen tools: libxl changes to create " George Dunlap
2013-09-27 18:38 ` Konrad Rzeszutek Wilk
2013-09-27 13:08 ` [PATCH RFC v13 00/20] Introduce PVH domU support Konrad Rzeszutek Wilk
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=527BA04C.4070407@eu.citrix.com \
--to=george.dunlap@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=keir@xen.org \
--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 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.