Am 17.01.2013 21:59, schrieb Eduardo Habkost: > 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 Applied these to qom-cpu (for 1.4, with some typo fixes): https://github.com/afaerber/qemu-cpu/commits/qom-cpu For the rest there's either open questions or still ongoing review. Andreas > 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 > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html