qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Correctly re-init EFER state during INIT IPI


From: Eduardo Habkost
Subject: Re: [Qemu-devel] [PATCH] Correctly re-init EFER state during INIT IPI
Date: Fri, 2 Oct 2015 13:21:54 -0300
User-agent: Mutt/1.5.23 (2014-03-12)

On Wed, Sep 30, 2015 at 03:33:29PM -0700, Bill Paul wrote:
> When doing a re-initialization of a CPU core, the default state is to _not_
> have 64-bit long mode enabled. This means the LME (long mode enable) and LMA
> (long mode active) bits in the EFER model-specific register should be cleared.
> 
> However, the EFER state is part of the CPU environment which is
> preserved by do_cpu_init(), so if EFER.LME and EFER.LMA were set at the
> time an INIT IPI was received, they will remain set after the init completes.
> 
> This is contrary to what the Intel architecture manual describes and what
> happens on real hardware, and it leaves the CPU in a weird state that the
> guest can't clear.
> 
> To fix this, the 'efer' member of the CPUX86State structure has been moved
> to an area outside the region preserved by do_cpu_init(), so that it can
> be properly re-initialized by x86_cpu_reset().
> 
> Signed-off-by: Bill Paul <address@hidden>
> CC: Paolo Bonzini <address@hidden>
> CC: Richard Henderson <address@hidden>
> CC: Eduardo Habkost <address@hidden>

Applied to x86 tree. Thanks!

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]