lkml.org 
[lkml]   [2019]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] x86/boot/compressed/64: Do not corrupt EDX on EFER.LME=1 setting
    From
    Date


    On 2/6/19 5:52 AM, Kirill A. Shutemov wrote:
    > RDMSR in the trampoline code overrides EDX, but we use the register to
    > indicate if 5-level paging has to enabled. It leads to failure to boot
    > on a 5-level paging machine.
    >
    > Preserve EDX on the stack while we are dealing with EFER.
    >
    > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    > Fixes: b677dfae5aa1 ("x86/boot/compressed/64: Set EFER.LME=1 in 32-bit trampoline before returning to long mode")
    > Reported-by: Kyle D Pelton <kyle.d.pelton@intel.com>
    > Cc: Wei Huang <wei@redhat.com>
    > ---
    > arch/x86/boot/compressed/head_64.S | 2 ++
    > 1 file changed, 2 insertions(+)
    >
    > diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
    > index f105ae8651c9..f62e347862cc 100644
    > --- a/arch/x86/boot/compressed/head_64.S
    > +++ b/arch/x86/boot/compressed/head_64.S
    > @@ -602,10 +602,12 @@ ENTRY(trampoline_32bit_src)
    > 3:
    > /* Set EFER.LME=1 as a precaution in case hypervsior pulls the rug */
    > pushl %ecx
    > + pushl %edx
    > movl $MSR_EFER, %ecx
    > rdmsr
    > btsl $_EFER_LME, %eax
    > wrmsr
    > + popl %edx
    > popl %ecx
    >
    > /* Enable PAE and LA57 (if required) paging modes */
    >

    Oops, rdmsr indeed corrupts EDX.

    Acked-by: Wei Huang <wei@redhat.com>

    \
     
     \ /
      Last update: 2019-02-06 20:51    [W:2.909 / U:0.808 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site