[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Xen-users] FreeBSD PVHVM call for testing

On Wed, May 29, 2013 at 06:25:56PM +0100, Ian Campbell wrote:
> On Wed, 2013-05-29 at 19:03 +0200, Roger Pau Monné wrote:
> > 
> > Since I'm not able to reproduce the cpuid != acpi_id case, could you
> > give it a try and report the results?
> Konrad,
> Might this same problem be related to the issue you saw doing PVHVM VCPU
> hotplug which you mentioned the other day?
> In general for HVM I suppose there isn't a strict relationship between
> the CPU number the kernel chooses for a CPU (which is somewhat
> arbitrarily up to the kernel) and the hypervisors VCPU number (which is
> exposed via the virtual APIC ID).

The CPU enumeration should follow the ACPI ID order in MADT (or
MP-table), right?  The local APIC ID (returned by cpuid
EAX=0000_0001h => EBX bits 31:24) shouldn't be used for
enumeration. Under Xen, the LAPIC ID is hardcoded to vCPU idx * 2:

void hvm_cpuid(unsigned int input, unsigned int *eax, unsigned int *ebx,
     case 0x1:
         /* Fix up VLAPIC details. */
         *ebx &= 0x00FFFFFFu;
         *ebx |= (v->vcpu_id * 2) << 24;
     case 0xb:
         /* Fix the x2APIC identifier. */
         *edx = v->vcpu_id * 2;

This isn't the way it works on some of our EC2 instances.  On our high
performance instance types, we provide x2APIC IDs that distinguish
threads, cores and sockets to provide the guest OS with CPU topology
information. The OS and applications can use CPUID EAX=0000_000Bh,
ECX=level (HT=0, Core=1, Socket=2) => EAX bits 4:0 to determine the


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.