# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID f933aae43044d89de2a6e4c2ab2416cb91869a92
# Parent 0851d92183a131702700f557b1ca26b1c8a17ff4
Svm patch to fix asid logic on multicore.
Signed-off-by: Tom Woller <thomas.woller@xxxxxxx>
diff -r 0851d92183a1 -r f933aae43044 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Sat Feb 18 00:01:31 2006
+++ b/xen/arch/x86/hvm/svm/svm.c Sat Feb 18 00:01:52 2006
@@ -2666,18 +2666,22 @@
struct vcpu *v = current;
struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
int core = smp_processor_id();
+ int oldcore = v->arch.hvm_svm.core;
/*
* if need to assign new asid or if switching cores,
* then retire asid for old core, and assign new for new core.
*/
- if( svm_dbg_on)
- printk("old core %d new core
%d\n",(int)v->arch.hvm_svm.core,(int)core);
-
+ if( v->arch.hvm_svm.core != core ) {
+ if (svm_dbg_on)
+ printk("old core %d new core
%d\n",(int)v->arch.hvm_svm.core,(int)core);
+ v->arch.hvm_svm.core = core;
+ }
if( test_bit(ARCH_SVM_VMCB_ASSIGN_ASID, &v->arch.hvm_svm.flags) ||
- (v->arch.hvm_svm.core != core)) {
+ (oldcore != core)) {
if(!asidpool_assign_next(vmcb, 1,
- v->arch.hvm_svm.core, core)) {
- BUG();
+ oldcore, core)) {
+ /* If we get here, we have a major problem */
+ domain_crash_synchronous();
}
}
clear_bit(ARCH_SVM_VMCB_ASSIGN_ASID, &v->arch.hvm_svm.flags);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|