|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] xen: fix cpuid reporting on PVH Dom0
On 01/08/14 16:26, Roger Pau Monne wrote:
> dab11417d also caused some problems regarding HVM guest creation on
> PVH Dom0, mainly the CR4 mask returned by hvm_cr4_guest_reserved_bits
> changed from 0xfffffffffffff800 to 0xfffffffffffff893, which means HVM
> guests created from a PVH Dom0 are unable to set VME, PVI, PSE or PGE
> CR4 flags.
>
> This is because cpuid on PVH guests mask PSE, PGE, PSE36 and VME
> flags, so the white listing done in xc_cpuid_hvm_policy doesn't enable
> those features, and the guest ends up with a very restrictive cpuid
> policy.
>
> Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx>
> Cc: Jan Beulich <JBeulich@xxxxxxxx>
> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> ---
> Changes since RFC:
> - Expose the cpuid flags to all PVH guests and not only
> hardware/control domains.
> ---
> xen/arch/x86/traps.c | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
> index 677074b..465b196 100644
> --- a/xen/arch/x86/traps.c
> +++ b/xen/arch/x86/traps.c
> @@ -803,12 +803,16 @@ void pv_cpuid(struct cpu_user_regs *regs)
> if ( (regs->eax & 0x7fffffff) == 0x00000001 )
> {
> /* Modify Feature Information. */
> - __clear_bit(X86_FEATURE_VME, &d);
> if ( !cpu_has_apic )
> __clear_bit(X86_FEATURE_APIC, &d);
> - __clear_bit(X86_FEATURE_PSE, &d);
> - __clear_bit(X86_FEATURE_PGE, &d);
> - __clear_bit(X86_FEATURE_PSE36, &d);
Newline here...
> + if ( !is_pvh_vcpu(curr) )
> + {
> + __clear_bit(X86_FEATURE_PSE, &d);
> + __clear_bit(X86_FEATURE_PGE, &d);
> + __clear_bit(X86_FEATURE_PSE36, &d);
> + __clear_bit(X86_FEATURE_VME, &d);
Why do PVH guests care about VME? They can't use it as far as I am aware.
> + }
> +
... and not here.
> }
>
> switch ( (uint32_t)regs->eax )
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |