From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35667) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YTJhx-0003WT-Gz for qemu-devel@nongnu.org; Wed, 04 Mar 2015 19:32:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YTJhu-00089r-9J for qemu-devel@nongnu.org; Wed, 04 Mar 2015 19:32:09 -0500 Received: from cantor2.suse.de ([195.135.220.15]:57651 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YTJhu-00089n-2u for qemu-devel@nongnu.org; Wed, 04 Mar 2015 19:32:06 -0500 Message-ID: <54F7A402.6030103@suse.de> Date: Thu, 05 Mar 2015 01:32:02 +0100 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= MIME-Version: 1.0 References: <1425435224-2630-1-git-send-email-ehabkost@redhat.com> <1425435224-2630-5-git-send-email-ehabkost@redhat.com> In-Reply-To: <1425435224-2630-5-git-send-email-ehabkost@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v4 4/5] target-i386: Move APIC ID compatibility code to pc.c List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost , qemu-devel@nongnu.org Cc: Gu Zheng , Igor Mammedov , Paolo Bonzini Am 04.03.2015 um 03:13 schrieb Eduardo Habkost: > The APIC ID compatibility code is required only for PC, and now that > x86_cpu_initfn() doesn't use x86_cpu_apic_id_from_index() anymore, that > code can be moved to pc.c. >=20 > Reviewed-by: Paolo Bonzini > Reviewed-by: Andreas F=C3=A4rber > Signed-off-by: Eduardo Habkost > --- > hw/i386/pc.c | 35 +++++++++++++++++++++++++++++++++++ > target-i386/cpu.c | 34 ---------------------------------- > 2 files changed, 35 insertions(+), 34 deletions(-) >=20 > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index b229856..8c3c470 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -25,6 +25,8 @@ > #include "hw/i386/pc.h" > #include "hw/char/serial.h" > #include "hw/i386/apic.h" > +#include "hw/i386/topology.h" > +#include "sysemu/cpus.h" > #include "hw/block/fdc.h" > #include "hw/ide.h" > #include "hw/pci/pci.h" > @@ -629,6 +631,39 @@ bool e820_get_entry(int idx, uint32_t type, uint64= _t *address, uint64_t *length) > return false; > } > =20 > +/* Enables contiguous-apic-ID mode, for compatibility */ > +static bool compat_apic_id_mode; > + > +void enable_compat_apic_id_mode(void) > +{ > + compat_apic_id_mode =3D true; > +} > + > +/* Calculates initial APIC ID for a specific CPU index > + * > + * Currently we need to be able to calculate the APIC ID from the CPU = index > + * alone (without requiring a CPU object), as the QEMU<->Seabios inter= faces have > + * no concept of "CPU index", and the NUMA tables on fw_cfg need the A= PIC ID of > + * all CPUs up to max_cpus. > + */ > +uint32_t x86_cpu_apic_id_from_index(unsigned int cpu_index) Looking a bit closer here, as I am poking around its call site for the socket modeling, can't this be made static while at it? (If so, don't forget to drop the prototype.) Regards, Andreas > +{ > + uint32_t correct_id; > + static bool warned; > + > + correct_id =3D x86_apicid_from_cpu_idx(smp_cores, smp_threads, cpu= _index); > + if (compat_apic_id_mode) { > + if (cpu_index !=3D correct_id && !warned) { > + error_report("APIC IDs set in compatibility mode, " > + "CPU topology won't match the configuration")= ; > + warned =3D true; > + } > + return cpu_index; > + } else { > + return correct_id; > + } > +} > + > /* Calculates the limit to CPU APIC ID values > * > * This function returns the limit for the APIC ID value, so that all [snip] --=20 SUSE Linux GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Felix Imend=C3=B6rffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu, Graham Norton; HRB 21284 (AG N=C3=BCrnberg)