Due to popular demand, I got involved in the dirty arts of SMP programming :). This patch set adds support for the MPC8544DS board (e500v2) to run with up to 32 virtual CPUs.
This works fine with emulation and Linux guests. It also works with KVM when disabling the DEC trick in ppc_spin.c - something seems to be broken in KVM there. For non-Linux guests, TLB invalidation broadcasting is still missing, but for now this is enough to get Linux up and running. I've used the chance while touching the code to also clean up ugly code that just diverged over time between the 3 KVM capable PPC targets (frequency device-tree entries). They're intertwined with this series, but I hope not too hard to understand, so they don't hurt being there. Alexander Graf (23): PPC: Add secondary CPU spinning code PPC: Move openpic to target specific code compilation PPC: Add CPU definitions for up to 32 guest CPUs PPC: Add CPU local MMIO regions to MPIC PPC: Extend MPIC MMIO range PPC: Fix IPI support in MPIC PPC: Remove cINT code from MPIC PPC: Bump MPIC up to 32 supported CPUs PPC: E500: create multiple envs PPC: E500: Generate IRQ lines for many CPUs PPC: E500: Use spin code for secondary CPUs device tree: add nop_node PPC: bamboo: Move host fdt copy to target PPC: KVM: Add generic function to read host clockfreq PPC: E500: Use generic kvm function for freq PPC: E500: Remove mpc8544_copy_soc_cell PPC: bamboo: Use kvm api for freq and clock frequencies PPC: KVM: Remove kvmppc_read_host_property PPC: KVM: Add stubs for kvm helper functions PPC: E500: Update freqs for all CPUs PPC: E500: Remove unneeded CPU nodes PPC: E500: Update cpu-release-addr property in cpu nodes PPC: E500: Bump CPU count to 32 Makefile.objs | 1 - Makefile.target | 2 + device_tree.c | 11 ++ device_tree.h | 1 + hw/openpic.c | 148 ++++++++++------ hw/ppc440_bamboo.c | 16 ++- hw/ppce500_mpc8544ds.c | 159 +++++++++--------- pc-bios/mpc8544ds.dtb | Bin 2277 -> 9699 bytes pc-bios/mpc8544ds.dts | 437 ++++++++++++++++++++++++++++++++++++++++++++++++ pc-bios/ppc_spin.c | 97 +++++++++++ pc-bios/ppc_spin.elf | Bin 0 -> 66553 bytes target-ppc/kvm.c | 65 +++++++ target-ppc/kvm_ppc.c | 65 ------- target-ppc/kvm_ppc.h | 39 +++-- 14 files changed, 823 insertions(+), 218 deletions(-) create mode 100644 pc-bios/ppc_spin.c create mode 100755 pc-bios/ppc_spin.elf