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

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



On Wed, 2013-05-29 at 15:10 -0700, Matt Wilson wrote:
> 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?

You mean the guest's enumeration? I'd have thought that was entirely up
to the guest. Using the APIC ID might be a reasonable implementation but
there are surely others (e.g. collapsing sparse LAPIC IDs into
contiguous cpu ids, using the top bits for NUMA node, etc etc).

>   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;
>          break;
> 
> 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
> topology.

Hrm, that does beg the question of how an HVM guest is supposed to
determine what Xen's idea of the VCPU number is for a given CPU.

I can't see anything which reverses that * 2 on the vcpu_op path and I
don't suppose you implemented the inverse of your scheme.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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