ia64/xen-unstable

changeset 19578:9fdcd3ab84b7

x86 hvm: During task switch, LDT must be loaded before all other
segments, as some may be loaded from the LDT.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Mon Apr 27 15:40:09 2009 +0100 (2009-04-27)
parents 7809e0941b38
children d89f655e5698
files xen/arch/x86/hvm/hvm.c
line diff
     1.1 --- a/xen/arch/x86/hvm/hvm.c	Sat Apr 25 08:19:14 2009 +0100
     1.2 +++ b/xen/arch/x86/hvm/hvm.c	Mon Apr 27 15:40:09 2009 +0100
     1.3 @@ -1440,13 +1440,13 @@ void hvm_task_switch(
     1.4      }
     1.5  
     1.6      exn_raised = 0;
     1.7 -    if ( hvm_load_segment_selector(v, x86_seg_es, tss.es) ||
     1.8 +    if ( hvm_load_segment_selector(v, x86_seg_ldtr, tss.ldt) ||
     1.9 +         hvm_load_segment_selector(v, x86_seg_es, tss.es) ||
    1.10           hvm_load_segment_selector(v, x86_seg_cs, tss.cs) ||
    1.11           hvm_load_segment_selector(v, x86_seg_ss, tss.ss) ||
    1.12           hvm_load_segment_selector(v, x86_seg_ds, tss.ds) ||
    1.13           hvm_load_segment_selector(v, x86_seg_fs, tss.fs) ||
    1.14 -         hvm_load_segment_selector(v, x86_seg_gs, tss.gs) ||
    1.15 -         hvm_load_segment_selector(v, x86_seg_ldtr, tss.ldt) )
    1.16 +         hvm_load_segment_selector(v, x86_seg_gs, tss.gs) )
    1.17          exn_raised = 1;
    1.18  
    1.19      rc = hvm_copy_to_guest_virt(