[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] hvm: Fix task switch update of TR state.
# HG changeset patch # User Keir Fraser <keir@xxxxxxxxxxxxx> # Date 1190821828 -3600 # Node ID d4511c625a508a1530d7e066025ff83213536dba # Parent 69879c7bf4b539cd1a9908be43b67016fddcdc24 hvm: Fix task switch update of TR state. Also remove unneeded duplicate paging_update_cr3(). Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/arch/x86/hvm/hvm.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff -r 69879c7bf4b5 -r d4511c625a50 xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Wed Sep 26 14:39:56 2007 +0100 +++ b/xen/arch/x86/hvm/hvm.c Wed Sep 26 16:50:28 2007 +0100 @@ -943,9 +943,11 @@ void hvm_task_switch( tr.base = (((tss_desc.b << 0) & 0xff000000u) | ((tss_desc.b << 16) & 0x00ff0000u) | ((tss_desc.a >> 16) & 0x0000ffffu)); + tr.attr.bytes = (((tss_desc.b >> 8) & 0x00ffu) | + ((tss_desc.b >> 12) & 0x0f00u)); tr.limit = (tss_desc.b & 0x000f0000u) | (tss_desc.a & 0x0000ffffu); - tr.attr.bytes = (((tss_desc.b >> 8) & 0x00ffu) | - ((tss_desc.b >> 20) & 0x0f00u)); + if ( tr.attr.fields.g ) + tr.limit = (tr.limit << 12) | 0xfffu; if ( !tr.attr.fields.p ) { @@ -1048,7 +1050,6 @@ void hvm_task_switch( tr.attr.fields.type = 0xb; /* busy 32-bit tss */ hvm_set_segment_register(v, x86_seg_tr, &tr); - paging_update_cr3(v); v->arch.hvm_vcpu.guest_cr[0] |= X86_CR0_TS; hvm_update_guest_cr(v, 0); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |