From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Wilson Subject: Re: [Xen-users] FreeBSD PVHVM call for testing Date: Wed, 29 May 2013 15:10:37 -0700 Message-ID: <20130529221036.GB20973@u109add4315675089e695.ant.amazon.com> References: <519CAFC7.1070908@citrix.com> <519D24A9.3050407@freebsd.org> <519DDC0A.9000201@citrix.com> <519E6958.6020606@freebsd.org> <519F3CD0.5090405@citrix.com> <51A4D804.9050208@citrix.com> <20130528191855.GA13736@u109add4315675089e695.ant.amazon.com> <51A5229F.80205@freebsd.org> <51A634EC.7050805@citrix.com> <1369848356.22605.51.camel@dagon.hellion.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Content-Disposition: inline In-Reply-To: <1369848356.22605.51.camel@dagon.hellion.org.uk> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: xen-devel , Konrad Rzeszutek Wilk , Roger Pau =?iso-8859-1?Q?Monn=E9?= List-Id: xen-devel@lists.xenproject.org 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=E9 wrote: > > = > > Since I'm not able to reproduce the cpuid !=3D 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=3D0000_0001h =3D> 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 &=3D 0x00FFFFFFu; *ebx |=3D (v->vcpu_id * 2) << 24; [...] case 0xb: /* Fix the x2APIC identifier. */ *edx =3D 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=3D0000_000Bh, ECX=3Dlevel (HT=3D0, Core=3D1, Socket=3D2) =3D> EAX bits 4:0 to determine t= he topology. --msw