diff -r f8db1c6baad9 xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c Tue Feb 05 23:27:12 2008 +0000 +++ b/xen/arch/x86/hvm/svm/svm.c Wed Feb 06 13:36:50 2008 +0100 @@ -1015,6 +1015,8 @@ static void svm_vmexit_do_cpuid(struct v __clear_bit(X86_FEATURE_HT & 31, &edx); ebx &= 0xFF00FFFF; /* clear the logical processor count when HTT=0 */ ebx |= 0x00010000; /* set to 1 just for precaution */ + ebx &= 0x00FFFFFF; /* clear the APIC ID */ + ebx |= (current->vcpu_id&0xFF)<<24; /* replace with vcpu_id */ break; case 0x80000001: diff -r f8db1c6baad9 xen/arch/x86/hvm/vmx/vmx.c --- a/xen/arch/x86/hvm/vmx/vmx.c Tue Feb 05 23:27:12 2008 +0000 +++ b/xen/arch/x86/hvm/vmx/vmx.c Wed Feb 06 13:36:50 2008 +0100 @@ -1311,6 +1311,8 @@ void vmx_cpuid_intercept( case 0x00000001: *ecx &= ~VMX_VCPU_CPUID_L1_ECX_RESERVED; *ebx &= NUM_THREADS_RESET_MASK; + *ebx &= 0x00FFFFFF; + *ebx |= (current->vcpu_id&0xFF)<<24; *ecx &= ~(bitmaskof(X86_FEATURE_VMXE) | bitmaskof(X86_FEATURE_EST) | bitmaskof(X86_FEATURE_TM2) |