[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86 hvm: Allow restore of old images with different segment attribute format.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1234517392 0 # Node ID e6f1c66874d55fcf76ebdd4130ba55a3c8952b55 # Parent 726b56720b16e5e0effe24fbddac78d8af4c2125 x86 hvm: Allow restore of old images with different segment attribute format. Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxx> --- xen/arch/x86/hvm/hvm.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+) diff -r 726b56720b16 -r e6f1c66874d5 xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Fri Feb 13 11:23:16 2009 +0900 +++ b/xen/arch/x86/hvm/hvm.c Fri Feb 13 09:29:52 2009 +0000 @@ -542,6 +542,22 @@ static int hvm_load_cpu_ctxt(struct doma return -EINVAL; } + /* Older Xen versions used to save the segment arbytes directly + * from the VMCS on Intel hosts. Detect this and rearrange them + * into the struct segment_register format. */ +#define UNFOLD_ARBYTES(_r) \ + if ( (_r & 0xf000) && !(_r & 0x0f00) ) \ + _r = ((_r & 0xff) | ((_r >> 4) & 0xf00)) + UNFOLD_ARBYTES(ctxt.cs_arbytes); + UNFOLD_ARBYTES(ctxt.ds_arbytes); + UNFOLD_ARBYTES(ctxt.es_arbytes); + UNFOLD_ARBYTES(ctxt.fs_arbytes); + UNFOLD_ARBYTES(ctxt.gs_arbytes); + UNFOLD_ARBYTES(ctxt.ss_arbytes); + UNFOLD_ARBYTES(ctxt.tr_arbytes); + UNFOLD_ARBYTES(ctxt.ldtr_arbytes); +#undef UNFOLD_ARBYTES + /* Architecture-specific vmcs/vmcb bits */ if ( hvm_funcs.load_cpu_ctxt(v, &ctxt) < 0 ) return -EINVAL; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |