diff -r eccfdeb41b80 tools/libxc/xc_cpuid_x86.c --- a/tools/libxc/xc_cpuid_x86.c Tue Aug 24 18:42:59 2010 +0100 +++ b/tools/libxc/xc_cpuid_x86.c Wed Aug 25 13:34:54 2010 +0200 @@ -117,9 +117,8 @@ case 0x80000008: /* * ECX[15:12] is ApicIdCoreSize: ECX[7:0] is NumberOfCores (minus one). - * Update to reflect vLAPIC_ID = vCPU_ID * 2. */ - regs[2] = ((regs[2] & 0xf000u) + 1) | ((regs[2] & 0xffu) << 1) | 1u; + regs[2] &= 0xf0ffu; break; } } @@ -134,11 +133,9 @@ case 0x00000004: /* * EAX[31:26] is Maximum Cores Per Package (minus one). - * Update to reflect vLAPIC_ID = vCPU_ID * 2. */ - regs[0] = (((regs[0] & 0x7c000000u) << 1) | 0x04000000u | - (regs[0] & 0x3ffu)); - regs[3] &= 0x3ffu; + regs[0] &= 0xfc0003ffu; + regs[3] &= 0x00000003u; break; case 0x80000001: { @@ -185,9 +182,8 @@ case 0x00000001: /* * EBX[23:16] is Maximum Logical Processors Per Package. - * Update to reflect vLAPIC_ID = vCPU_ID * 2. */ - regs[1] = (regs[1] & 0x0000ffffu) | ((regs[1] & 0x007f0000u) << 1); + regs[1] & 0x00ffffffu; regs[2] &= (bitmaskof(X86_FEATURE_XMM3) | bitmaskof(X86_FEATURE_SSSE3) |