• Mukesh Rathor's avatar
    xen/pvh: Load GDT/GS in early PV bootup code for BSP. · 8d656bbe
    Mukesh Rathor authored
    During early bootup we start life using the Xen provided
    GDT, which means that we are running with %cs segment set
    to FLAT_KERNEL_CS (FLAT_RING3_CS64 0xe033, GDT index 261).
    
    But for PVH we want to be use HVM type mechanism for
    segment operations. As such we need to switch to the HVM
    one and also reload ourselves with the __KERNEL_CS:eip
    to run in the proper GDT and segment.
    
    For HVM this is usually done in 'secondary_startup_64' in
    (head_64.S) but since we are not taking that bootup
    path (we start in PV - xen_start_kernel) we need to do
    that in the early PV bootup paths.
    
    For good measure we also zero out the %fs, %ds, and %es
    (not strictly needed as Xen has already cleared them
    for us). The %gs is loaded by 'switch_to_new_gdt'.
    Signed-off-by: default avatarMukesh Rathor <mukesh.rathor@oracle.com>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    8d656bbe
enlighten.c 43.3 KB