• Steven Rostedt's avatar
    [PATCH] x86-64: shorten the x86_64 boot setup GDT to what the comment says · 51d67a48
    Steven Rostedt authored
    Stephen Tweedie, Herbert Xu, and myself have been struggling with a very
    nasty bug in Xen.  But it also pointed out a small bug in the x86_64
    kernel boot setup.
    
    The GDT limit being setup by the initial bzImage code when entering into
    protected mode is way too big.  The comment by the code states that the
    size of the GDT is 2048, but the actual size being set up is much bigger
    (32768). This happens simply because of one extra '0'.
    
    Instead of setting up a 0x800 size, 0x8000 is set up.  On bare metal this
    is fine because the CPU wont load any segments unless  they are
    explicitly used.  But unfortunately, this breaks Xen on vmx FV, since it
    (for now) blindly loads all the segments into the VMCS if they are less
    than the gdt limit. Since the real mode segments are around 0x3000, we are
    getting junk into the VMCS and that later causes an exception.
    
    Stephen Tweedie has written up a patch to fix the Xen side and will be
    submitting that to those folks. But that doesn't excuse the GDT limit
    being a magnitude too big.
    
    AK: changed to compute true gdt size in assembler, fixed comment
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    51d67a48
setup.S 21.9 KB