From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:41133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TvwXN-0004kf-GX for qemu-devel@nongnu.org; Thu, 17 Jan 2013 15:58:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TvwXL-000753-JJ for qemu-devel@nongnu.org; Thu, 17 Jan 2013 15:58:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39927) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TvwXL-00074j-Al for qemu-devel@nongnu.org; Thu, 17 Jan 2013 15:58:11 -0500 From: Eduardo Habkost Date: Thu, 17 Jan 2013 18:59:26 -0200 Message-Id: <1358456378-29248-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PATCH for-1.4 00/12] target-i386: Fix APIC-ID-based topology (v4) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Anthony Liguori Cc: Igor Mammedov , =?UTF-8?q?Andreas=20F=C3=A4rber?= I am hoping to get this bug fixed in 1.4. I didn't get much feedback on the RFC I sent last week, though. Igor argued that APIC ID should be set by the board and not by the CPU itself, but I am not doing that because: - I want to keep the bug fix simple and isolated as we are past soft freeze - I believe the creator of the CPU object shouldn't be forced to provide the APIC ID, so the APIC ID is not unnecessarily exposed on the CPU hotplug device_add interface in the future - The APIC ID _is_ set by the CPU itself (because each CPU package may have multiple core/threads, and each core/thread has a different APIC ID). What needs to be provided by the board to the CPU package in the future is the package ID and the bit width of the core/thread IDs. Git tree for reference: git://github.com/ehabkost/qemu-hacks.git apicid-topology.v5 https://github.com/ehabkost/qemu-hacks/tree/apicid-topology.v5 Eduardo Habkost (12): kvm: Add fake KVM_FEATURE_CLOCKSOURCE_STABLE_BIT for builds withou KVM target-i386: Don't set any KVM flag by default if KVM is disabled pc: Reverse pc_init_pci() compatibility logic kvm: Create kvm_arch_vcpu_id() function target-i386: kvm: Set vcpu_id to APIC ID instead of CPU index fw_cfg: Remove FW_CFG_MAX_CPUS from fw_cfg_init() target-i386/cpu: Introduce apic_id_for_cpu() function cpus.h: Make constant smp_cores/smp_threads available on *-user pc: Set fw_cfg data based on APIC ID calculation tests: Support target-specific unit tests target-i386: Topology & APIC ID utility functions pc: Generate APIC IDs according to CPU topology hw/fw_cfg.c | 1 - hw/pc.c | 44 +++++++++++++--- hw/pc_piix.c | 26 +++++++--- hw/ppc_newworld.c | 1 + hw/ppc_oldworld.c | 1 + hw/sun4m.c | 3 ++ hw/sun4u.c | 1 + include/sysemu/cpus.h | 7 +++ include/sysemu/kvm.h | 4 ++ kvm-all.c | 2 +- target-i386/cpu.c | 52 +++++++++++++++---- target-i386/cpu.h | 5 +- target-i386/kvm.c | 6 +++ target-i386/topology.h | 133 +++++++++++++++++++++++++++++++++++++++++++++++++ target-ppc/kvm.c | 5 ++ target-s390x/kvm.c | 5 ++ tests/.gitignore | 1 + tests/Makefile | 21 +++++++- tests/test-x86-cpuid.c | 101 +++++++++++++++++++++++++++++++++++++ 19 files changed, 391 insertions(+), 28 deletions(-) create mode 100644 target-i386/topology.h create mode 100644 tests/test-x86-cpuid.c -- 1.7.11.7