* [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 @ 2011-10-30 20:22 Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf ` (25 more replies) 0 siblings, 26 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc Hi Blue, This is my current patch queue for ppc. Please pull. Alex The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e: Max Filippov (1): MAINTAINERS: update wiki URL and machine names for target-xtensa are available in the git repository at: git://repo.or.cz/qemu/agraf.git ppc-next Alexander Graf (4): PPC: Bump qemu-system-ppc to 64-bit physical address space PPC: Disable non-440 CPUs for ppcemb target PPC: Fail configure when libfdt is not available KVM: PPC: Override host vmx/vsx/dfp only when information known David Gibson (15): pseries: Support SMT systems for KVM Book3S-HV pseries: Allow KVM Book3S-HV on PPC970 CPUS pseries: Use Book3S-HV TCE acceleration capabilities pseries: Update SLOF firmware image ppc: Generalize the kvmppc_get_clockfreq() function pseries: Add device tree properties for VMX/VSX and DFP under kvm pseries: Update SLOF firmware image ppc: Remove broken partial PVR matching ppc: First cut implementation of -cpu host ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 pseries: Under kvm use guest cpu = host cpu by default ppc: Avoid decrementer related kvm exits pseries: Correct vmx/dfp handling in both KVM and TCG cases ppc: Fix up usermode only builds pseries: Allow writes to KVM accelerated TCE table Fabien Chouteau (1): Set an invalid-bits mask for each SPE instructions Liu Yu-B13201 (2): ppc/e500_pci: Fix code style ppc/e500_pci: Fix an array overflow issue configure | 13 +- hw/ppc.c | 6 + hw/ppce500_pci.c | 82 ++++++-- hw/spapr.c | 99 +++++++-- hw/spapr_vio.c | 8 +- hw/spapr_vio.h | 1 + pc-bios/README | 2 +- pc-bios/slof.bin | Bin 579072 -> 738744 bytes roms/SLOF | 2 +- target-ppc/cpu.h | 23 ++- target-ppc/helper.c | 11 + target-ppc/kvm.c | 197 ++++++++++++++++- target-ppc/kvm_ppc.h | 50 +++++ target-ppc/translate.c | 500 +++++++++++++++++++++++-------------------- target-ppc/translate_init.c | 90 ++++---- 15 files changed, 755 insertions(+), 329 deletions(-) ^ permalink raw reply [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue Alexander Graf ` (24 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, Liu Yu, qemu-ppc From: Liu Yu-B13201 <Yu.Liu@freescale.com> Put trailing statements on next line. Signed-off-by: Liu Yu <yu.liu@freescale.com> Reviewed-by: Andreas Färber <andreas.faerber@web.de> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/ppce500_pci.c | 76 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 56 insertions(+), 20 deletions(-) diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c index 2db365d..0ece422 100644 --- a/hw/ppce500_pci.c +++ b/hw/ppce500_pci.c @@ -98,11 +98,20 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr) case PPCE500_PCI_OW3: case PPCE500_PCI_OW4: switch (addr & 0xC) { - case PCI_POTAR: value = pci->pob[(addr >> 5) & 0x7].potar; break; - case PCI_POTEAR: value = pci->pob[(addr >> 5) & 0x7].potear; break; - case PCI_POWBAR: value = pci->pob[(addr >> 5) & 0x7].powbar; break; - case PCI_POWAR: value = pci->pob[(addr >> 5) & 0x7].powar; break; - default: break; + case PCI_POTAR: + value = pci->pob[(addr >> 5) & 0x7].potar; + break; + case PCI_POTEAR: + value = pci->pob[(addr >> 5) & 0x7].potear; + break; + case PCI_POWBAR: + value = pci->pob[(addr >> 5) & 0x7].powbar; + break; + case PCI_POWAR: + value = pci->pob[(addr >> 5) & 0x7].powar; + break; + default: + break; } break; @@ -110,11 +119,20 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr) case PPCE500_PCI_IW2: case PPCE500_PCI_IW1: switch (addr & 0xC) { - case PCI_PITAR: value = pci->pib[(addr >> 5) & 0x3].pitar; break; - case PCI_PIWBAR: value = pci->pib[(addr >> 5) & 0x3].piwbar; break; - case PCI_PIWBEAR: value = pci->pib[(addr >> 5) & 0x3].piwbear; break; - case PCI_PIWAR: value = pci->pib[(addr >> 5) & 0x3].piwar; break; - default: break; + case PCI_PITAR: + value = pci->pib[(addr >> 5) & 0x3].pitar; + break; + case PCI_PIWBAR: + value = pci->pib[(addr >> 5) & 0x3].piwbar; + break; + case PCI_PIWBEAR: + value = pci->pib[(addr >> 5) & 0x3].piwbear; + break; + case PCI_PIWAR: + value = pci->pib[(addr >> 5) & 0x3].piwar; + break; + default: + break; }; break; @@ -154,11 +172,20 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr, case PPCE500_PCI_OW3: case PPCE500_PCI_OW4: switch (addr & 0xC) { - case PCI_POTAR: pci->pob[(addr >> 5) & 0x7].potar = value; break; - case PCI_POTEAR: pci->pob[(addr >> 5) & 0x7].potear = value; break; - case PCI_POWBAR: pci->pob[(addr >> 5) & 0x7].powbar = value; break; - case PCI_POWAR: pci->pob[(addr >> 5) & 0x7].powar = value; break; - default: break; + case PCI_POTAR: + pci->pob[(addr >> 5) & 0x7].potar = value; + break; + case PCI_POTEAR: + pci->pob[(addr >> 5) & 0x7].potear = value; + break; + case PCI_POWBAR: + pci->pob[(addr >> 5) & 0x7].powbar = value; + break; + case PCI_POWAR: + pci->pob[(addr >> 5) & 0x7].powar = value; + break; + default: + break; }; break; @@ -166,11 +193,20 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr, case PPCE500_PCI_IW2: case PPCE500_PCI_IW1: switch (addr & 0xC) { - case PCI_PITAR: pci->pib[(addr >> 5) & 0x3].pitar = value; break; - case PCI_PIWBAR: pci->pib[(addr >> 5) & 0x3].piwbar = value; break; - case PCI_PIWBEAR: pci->pib[(addr >> 5) & 0x3].piwbear = value; break; - case PCI_PIWAR: pci->pib[(addr >> 5) & 0x3].piwar = value; break; - default: break; + case PCI_PITAR: + pci->pib[(addr >> 5) & 0x3].pitar = value; + break; + case PCI_PIWBAR: + pci->pib[(addr >> 5) & 0x3].piwbar = value; + break; + case PCI_PIWBEAR: + pci->pib[(addr >> 5) & 0x3].piwbear = value; + break; + case PCI_PIWAR: + pci->pib[(addr >> 5) & 0x3].piwar = value; + break; + default: + break; }; break; -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV Alexander Graf ` (23 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, Liu Yu, qemu-ppc From: Liu Yu-B13201 <Yu.Liu@freescale.com> When access PPCE500_PCI_IW1 the previous index get overflow. The patch fix the issue and update all to keep consistent style. Signed-off-by: Liu Yu <yu.liu@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/ppce500_pci.c | 38 ++++++++++++++++++++++---------------- 1 files changed, 22 insertions(+), 16 deletions(-) diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c index 0ece422..960a5d0 100644 --- a/hw/ppce500_pci.c +++ b/hw/ppce500_pci.c @@ -89,6 +89,7 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr) PPCE500PCIState *pci = opaque; unsigned long win; uint32_t value = 0; + int idx; win = addr & 0xfe0; @@ -97,18 +98,19 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr) case PPCE500_PCI_OW2: case PPCE500_PCI_OW3: case PPCE500_PCI_OW4: + idx = (addr >> 5) & 0x7; switch (addr & 0xC) { case PCI_POTAR: - value = pci->pob[(addr >> 5) & 0x7].potar; + value = pci->pob[idx].potar; break; case PCI_POTEAR: - value = pci->pob[(addr >> 5) & 0x7].potear; + value = pci->pob[idx].potear; break; case PCI_POWBAR: - value = pci->pob[(addr >> 5) & 0x7].powbar; + value = pci->pob[idx].powbar; break; case PCI_POWAR: - value = pci->pob[(addr >> 5) & 0x7].powar; + value = pci->pob[idx].powar; break; default: break; @@ -118,18 +120,19 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr) case PPCE500_PCI_IW3: case PPCE500_PCI_IW2: case PPCE500_PCI_IW1: + idx = ((addr >> 5) & 0x3) - 1; switch (addr & 0xC) { case PCI_PITAR: - value = pci->pib[(addr >> 5) & 0x3].pitar; + value = pci->pib[idx].pitar; break; case PCI_PIWBAR: - value = pci->pib[(addr >> 5) & 0x3].piwbar; + value = pci->pib[idx].piwbar; break; case PCI_PIWBEAR: - value = pci->pib[(addr >> 5) & 0x3].piwbear; + value = pci->pib[idx].piwbear; break; case PCI_PIWAR: - value = pci->pib[(addr >> 5) & 0x3].piwar; + value = pci->pib[idx].piwar; break; default: break; @@ -160,6 +163,7 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr, { PPCE500PCIState *pci = opaque; unsigned long win; + int idx; win = addr & 0xfe0; @@ -171,18 +175,19 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr, case PPCE500_PCI_OW2: case PPCE500_PCI_OW3: case PPCE500_PCI_OW4: + idx = (addr >> 5) & 0x7; switch (addr & 0xC) { case PCI_POTAR: - pci->pob[(addr >> 5) & 0x7].potar = value; + pci->pob[idx].potar = value; break; case PCI_POTEAR: - pci->pob[(addr >> 5) & 0x7].potear = value; + pci->pob[idx].potear = value; break; case PCI_POWBAR: - pci->pob[(addr >> 5) & 0x7].powbar = value; + pci->pob[idx].powbar = value; break; case PCI_POWAR: - pci->pob[(addr >> 5) & 0x7].powar = value; + pci->pob[idx].powar = value; break; default: break; @@ -192,18 +197,19 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr, case PPCE500_PCI_IW3: case PPCE500_PCI_IW2: case PPCE500_PCI_IW1: + idx = ((addr >> 5) & 0x3) - 1; switch (addr & 0xC) { case PCI_PITAR: - pci->pib[(addr >> 5) & 0x3].pitar = value; + pci->pib[idx].pitar = value; break; case PCI_PIWBAR: - pci->pib[(addr >> 5) & 0x3].piwbar = value; + pci->pib[idx].piwbar = value; break; case PCI_PIWBEAR: - pci->pib[(addr >> 5) & 0x3].piwbear = value; + pci->pib[idx].piwbear = value; break; case PCI_PIWAR: - pci->pib[(addr >> 5) & 0x3].piwar = value; + pci->pib[idx].piwar = value; break; default: break; -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS Alexander Graf ` (22 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> Alex Graf has already made qemu support KVM for the pseries machine when using the Book3S-PR KVM variant (which runs the guest in usermode, emulating supervisor operations). This code allows gets us very close to also working with KVM Book3S-HV (using the hypervisor capabilities of recent POWER CPUs). This patch moves us another step towards Book3S-HV support by correctly handling SMT (multithreaded) POWER CPUs. There are two parts to this: * Querying KVM to check SMT capability, and if present, adjusting the cpu numbers that qemu assigns to cause KVM to assign guest threads to cores in the right way (this isn't automatic, because the POWER HV support has a limitation that different threads on a single core cannot be in different guests at the same time). * Correctly informing the guest OS of the SMT thread to core mappings via the device tree. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/spapr.c | 24 +++++++++++++++++++++--- target-ppc/helper.c | 11 +++++++++++ target-ppc/kvm.c | 8 ++++++++ target-ppc/kvm_ppc.h | 6 ++++++ 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/hw/spapr.c b/hw/spapr.c index 63e5d33..c2675e1 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -29,6 +29,9 @@ #include "elf.h" #include "net.h" #include "blockdev.h" +#include "cpus.h" +#include "kvm.h" +#include "kvm_ppc.h" #include "hw/boards.h" #include "hw/ppc.h" @@ -105,6 +108,7 @@ static void *spapr_create_fdt_skel(const char *cpu_model, uint32_t interrupt_server_ranges_prop[] = {0, cpu_to_be32(smp_cpus)}; int i; char *modelname; + int smt = kvmppc_smt_threads(); #define _FDT(exp) \ do { \ @@ -164,13 +168,18 @@ static void *spapr_create_fdt_skel(const char *cpu_model, for (env = first_cpu; env != NULL; env = env->next_cpu) { int index = env->cpu_index; - uint32_t gserver_prop[] = {cpu_to_be32(index), 0}; /* HACK! */ + uint32_t servers_prop[smp_threads]; + uint32_t gservers_prop[smp_threads * 2]; char *nodename; uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40), 0xffffffff, 0xffffffff}; uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ; uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 1000000000; + if ((index % smt) != 0) { + continue; + } + if (asprintf(&nodename, "%s@%x", modelname, index) < 0) { fprintf(stderr, "Allocation failure\n"); exit(1); @@ -195,9 +204,18 @@ static void *spapr_create_fdt_skel(const char *cpu_model, pft_size_prop, sizeof(pft_size_prop)))); _FDT((fdt_property_string(fdt, "status", "okay"))); _FDT((fdt_property(fdt, "64-bit", NULL, 0))); - _FDT((fdt_property_cell(fdt, "ibm,ppc-interrupt-server#s", index))); + + /* Build interrupt servers and gservers properties */ + for (i = 0; i < smp_threads; i++) { + servers_prop[i] = cpu_to_be32(index + i); + /* Hack, direct the group queues back to cpu 0 */ + gservers_prop[i*2] = cpu_to_be32(index + i); + gservers_prop[i*2 + 1] = 0; + } + _FDT((fdt_property(fdt, "ibm,ppc-interrupt-server#s", + servers_prop, sizeof(servers_prop)))); _FDT((fdt_property(fdt, "ibm,ppc-interrupt-gserver#s", - gserver_prop, sizeof(gserver_prop)))); + gservers_prop, sizeof(gservers_prop)))); if (env->mmu_model & POWERPC_MMU_1TSEG) { _FDT((fdt_property(fdt, "ibm,processor-segment-sizes", diff --git a/target-ppc/helper.c b/target-ppc/helper.c index 6339be3..137a494 100644 --- a/target-ppc/helper.c +++ b/target-ppc/helper.c @@ -26,6 +26,8 @@ #include "helper_regs.h" #include "qemu-common.h" #include "kvm.h" +#include "kvm_ppc.h" +#include "cpus.h" //#define DEBUG_MMU //#define DEBUG_BATS @@ -3189,6 +3191,15 @@ CPUPPCState *cpu_ppc_init (const char *cpu_model) if (tcg_enabled()) { ppc_translate_init(); } + /* Adjust cpu index for SMT */ +#if !defined(CONFIG_USER_ONLY) + if (kvm_enabled()) { + int smt = kvmppc_smt_threads(); + + env->cpu_index = (env->cpu_index / smp_threads)*smt + + (env->cpu_index % smp_threads); + } +#endif /* !CONFIG_USER_ONLY */ env->cpu_model_str = cpu_model; cpu_ppc_register_internal(env, def); diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 75832d8..6c7ca6f 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -28,6 +28,7 @@ #include "kvm_ppc.h" #include "cpu.h" #include "device_tree.h" +#include "hw/spapr.h" #include "hw/sysbus.h" #include "hw/spapr.h" @@ -53,6 +54,7 @@ static int cap_interrupt_unset = false; static int cap_interrupt_level = false; static int cap_segstate; static int cap_booke_sregs; +static int cap_ppc_smt; /* XXX We have a race condition where we actually have a level triggered * interrupt, but the infrastructure can't expose that yet, so the guest @@ -76,6 +78,7 @@ int kvm_arch_init(KVMState *s) cap_interrupt_level = kvm_check_extension(s, KVM_CAP_PPC_IRQ_LEVEL); cap_segstate = kvm_check_extension(s, KVM_CAP_PPC_SEGSTATE); cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS); + cap_ppc_smt = kvm_check_extension(s, KVM_CAP_PPC_SMT); if (!cap_interrupt_level) { fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the " @@ -750,6 +753,11 @@ fail: cpu_abort(env, "This KVM version does not support PAPR\n"); } +int kvmppc_smt_threads(void) +{ + return cap_ppc_smt ? cap_ppc_smt : 1; +} + bool kvm_arch_stop_on_emulation_error(CPUState *env) { return true; diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index c484e60..c298411 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -18,6 +18,7 @@ uint64_t kvmppc_get_clockfreq(void); int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len); int kvmppc_set_interrupt(CPUState *env, int irq, int level); void kvmppc_set_papr(CPUState *env); +int kvmppc_smt_threads(void); #else @@ -45,6 +46,11 @@ static inline void kvmppc_set_papr(CPUState *env) { } +static inline int kvmppc_smt_threads(void) +{ + return 1; +} + #endif #ifndef CONFIG_KVM -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (2 preceding siblings ...) 2011-10-30 20:22 ` [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities Alexander Graf ` (21 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, Paul Mackerras, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> At present, using the hypervisor aware Book3S-HV KVM will only work with qemu on POWER7 CPUs. PPC970 CPUs also have hypervisor capability, but they lack the VRMA feature which makes assigning guest memory easier. In order to allow KVM Book3S-HV on PPC970, we need to specially allocate the first chunk of guest memory (the "Real Mode Area" or RMA), so that it is physically contiguous. Sufficiently recent host kernels allow such contiguous RMAs to be allocated, with a kvm capability advertising whether the feature is available and/or necessary on this hardware. This patch enables qemu to use this support, thus allowing kvm acceleration of pseries qemu machines on PPC970 hardware. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- agraf: fix to use memory api --- hw/spapr.c | 56 +++++++++++++++++++++++++++++++++++++++---------- target-ppc/kvm.c | 44 +++++++++++++++++++++++++++++++++++++++ target-ppc/kvm_ppc.h | 8 +++++++ 3 files changed, 96 insertions(+), 12 deletions(-) diff --git a/hw/spapr.c b/hw/spapr.c index c2675e1..193398b 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -91,6 +91,7 @@ qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num) } static void *spapr_create_fdt_skel(const char *cpu_model, + target_phys_addr_t rma_size, target_phys_addr_t initrd_base, target_phys_addr_t initrd_size, const char *boot_device, @@ -99,7 +100,9 @@ static void *spapr_create_fdt_skel(const char *cpu_model, { void *fdt; CPUState *env; - uint64_t mem_reg_property[] = { 0, cpu_to_be64(ram_size) }; + uint64_t mem_reg_property_rma[] = { 0, cpu_to_be64(rma_size) }; + uint64_t mem_reg_property_nonrma[] = { cpu_to_be64(rma_size), + cpu_to_be64(ram_size - rma_size) }; uint32_t start_prop = cpu_to_be32(initrd_base); uint32_t end_prop = cpu_to_be32(initrd_base + initrd_size); uint32_t pft_size_prop[] = {0, cpu_to_be32(hash_shift)}; @@ -145,15 +148,25 @@ static void *spapr_create_fdt_skel(const char *cpu_model, _FDT((fdt_end_node(fdt))); - /* memory node */ + /* memory node(s) */ _FDT((fdt_begin_node(fdt, "memory@0"))); _FDT((fdt_property_string(fdt, "device_type", "memory"))); - _FDT((fdt_property(fdt, "reg", - mem_reg_property, sizeof(mem_reg_property)))); - + _FDT((fdt_property(fdt, "reg", mem_reg_property_rma, + sizeof(mem_reg_property_rma)))); _FDT((fdt_end_node(fdt))); + if (ram_size > rma_size) { + char mem_name[32]; + + sprintf(mem_name, "memory@%" PRIx64, (uint64_t)rma_size); + _FDT((fdt_begin_node(fdt, mem_name))); + _FDT((fdt_property_string(fdt, "device_type", "memory"))); + _FDT((fdt_property(fdt, "reg", mem_reg_property_nonrma, + sizeof(mem_reg_property_nonrma)))); + _FDT((fdt_end_node(fdt))); + } + /* cpus */ _FDT((fdt_begin_node(fdt, "cpus"))); @@ -346,6 +359,7 @@ static void ppc_spapr_init(ram_addr_t ram_size, int i; MemoryRegion *sysmem = get_system_memory(); MemoryRegion *ram = g_new(MemoryRegion, 1); + target_phys_addr_t rma_alloc_size, rma_size; uint32_t initrd_base; long kernel_size, initrd_size, fw_size; long pteg_shift = 17; @@ -354,10 +368,23 @@ static void ppc_spapr_init(ram_addr_t ram_size, spapr = g_malloc(sizeof(*spapr)); cpu_ppc_hypercall = emulate_spapr_hypercall; - /* We place the device tree just below either the top of RAM, or - * 2GB, so that it can be processed with 32-bit code if - * necessary */ - spapr->fdt_addr = MIN(ram_size, 0x80000000) - FDT_MAX_SIZE; + /* Allocate RMA if necessary */ + rma_alloc_size = kvmppc_alloc_rma("ppc_spapr.rma", sysmem); + + if (rma_alloc_size == -1) { + hw_error("qemu: Unable to create RMA\n"); + exit(1); + } + if (rma_alloc_size && (rma_alloc_size < ram_size)) { + rma_size = rma_alloc_size; + } else { + rma_size = ram_size; + } + + /* We place the device tree just below either the top of the RMA, + * or just below 2GB, whichever is lowere, so that it can be + * processed with 32-bit real mode code if necessary */ + spapr->fdt_addr = MIN(rma_size, 0x80000000) - FDT_MAX_SIZE; spapr->rtas_addr = spapr->fdt_addr - RTAS_MAX_SIZE; /* init CPUs */ @@ -382,8 +409,13 @@ static void ppc_spapr_init(ram_addr_t ram_size, /* allocate RAM */ spapr->ram_limit = ram_size; - memory_region_init_ram(ram, NULL, "ppc_spapr.ram", spapr->ram_limit); - memory_region_add_subregion(sysmem, 0, ram); + if (spapr->ram_limit > rma_alloc_size) { + ram_addr_t nonrma_base = rma_alloc_size; + ram_addr_t nonrma_size = spapr->ram_limit - rma_alloc_size; + + memory_region_init_ram(ram, NULL, "ppc_spapr.ram", nonrma_size); + memory_region_add_subregion(sysmem, nonrma_base, ram); + } /* allocate hash page table. For now we always make this 16mb, * later we should probably make it scale to the size of guest @@ -507,7 +539,7 @@ static void ppc_spapr_init(ram_addr_t ram_size, } /* Prepare the device tree */ - spapr->fdt_skel = spapr_create_fdt_skel(cpu_model, + spapr->fdt_skel = spapr_create_fdt_skel(cpu_model, rma_size, initrd_base, initrd_size, boot_device, kernel_cmdline, pteg_shift + 7); diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 6c7ca6f..fd17d23 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -55,6 +55,7 @@ static int cap_interrupt_level = false; static int cap_segstate; static int cap_booke_sregs; static int cap_ppc_smt; +static int cap_ppc_rma; /* XXX We have a race condition where we actually have a level triggered * interrupt, but the infrastructure can't expose that yet, so the guest @@ -79,6 +80,7 @@ int kvm_arch_init(KVMState *s) cap_segstate = kvm_check_extension(s, KVM_CAP_PPC_SEGSTATE); cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS); cap_ppc_smt = kvm_check_extension(s, KVM_CAP_PPC_SMT); + cap_ppc_rma = kvm_check_extension(s, KVM_CAP_PPC_RMA); if (!cap_interrupt_level) { fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the " @@ -758,6 +760,48 @@ int kvmppc_smt_threads(void) return cap_ppc_smt ? cap_ppc_smt : 1; } +off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem) +{ + void *rma; + off_t size; + int fd; + struct kvm_allocate_rma ret; + MemoryRegion *rma_region; + + /* If cap_ppc_rma == 0, contiguous RMA allocation is not supported + * if cap_ppc_rma == 1, contiguous RMA allocation is supported, but + * not necessary on this hardware + * if cap_ppc_rma == 2, contiguous RMA allocation is needed on this hardware + * + * FIXME: We should allow the user to force contiguous RMA + * allocation in the cap_ppc_rma==1 case. + */ + if (cap_ppc_rma < 2) { + return 0; + } + + fd = kvm_vm_ioctl(kvm_state, KVM_ALLOCATE_RMA, &ret); + if (fd < 0) { + fprintf(stderr, "KVM: Error on KVM_ALLOCATE_RMA: %s\n", + strerror(errno)); + return -1; + } + + size = MIN(ret.rma_size, 256ul << 20); + + rma = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + if (rma == MAP_FAILED) { + fprintf(stderr, "KVM: Error mapping RMA: %s\n", strerror(errno)); + return -1; + }; + + rma_region = g_new(MemoryRegion, 1); + memory_region_init_ram_ptr(rma_region, NULL, name, size, rma); + memory_region_add_subregion(sysmem, 0, rma_region); + + return size; +} + bool kvm_arch_stop_on_emulation_error(CPUState *env) { return true; diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index c298411..82f32f4 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -9,6 +9,8 @@ #ifndef __KVM_PPC_H__ #define __KVM_PPC_H__ +#include "memory.h" + void kvmppc_init(void); #ifdef CONFIG_KVM @@ -19,6 +21,7 @@ int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len); int kvmppc_set_interrupt(CPUState *env, int irq, int level); void kvmppc_set_papr(CPUState *env); int kvmppc_smt_threads(void); +off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem); #else @@ -51,6 +54,11 @@ static inline int kvmppc_smt_threads(void) return 1; } +static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem) +{ + return 0; +} + #endif #ifndef CONFIG_KVM -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (3 preceding siblings ...) 2011-10-30 20:22 ` [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image Alexander Graf ` (20 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> The pseries machine of qemu implements the TCE mechanism used as a virtual IOMMU for the PAPR defined virtual IO devices. Because the PAPR spec only defines a small DMA address space, the guest VIO drivers need to update TCE mappings very frequently - the virtual network device is particularly bad. This means many slow exits to qemu to emulate the H_PUT_TCE hypercall. Sufficiently recent kernels allow this to be mitigated by implementing H_PUT_TCE in the host kernel. To make use of this, however, qemu needs to initialize the necessary TCE tables, and map them into itself so that the VIO device implementations can retrieve the mappings when they access guest memory (which is treated as a virtual DMA operation). This patch adds the necessary calls to use the KVM TCE acceleration. If the kernel does not support acceleration, or there is some other error creating the accelerated TCE table, then it will still fall back to full userspace TCE implementation. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/spapr_vio.c | 8 ++++++- hw/spapr_vio.h | 1 + target-ppc/kvm.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ target-ppc/kvm_ppc.h | 14 +++++++++++++ 4 files changed, 76 insertions(+), 1 deletions(-) diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c index 35818e1..1da3032 100644 --- a/hw/spapr_vio.c +++ b/hw/spapr_vio.c @@ -165,7 +165,13 @@ static void rtce_init(VIOsPAPRDevice *dev) * sizeof(VIOsPAPR_RTCE); if (size) { - dev->rtce_table = g_malloc0(size); + dev->rtce_table = kvmppc_create_spapr_tce(dev->reg, + dev->rtce_window_size, + &dev->kvmtce_fd); + + if (!dev->rtce_table) { + dev->rtce_table = g_malloc0(size); + } } } diff --git a/hw/spapr_vio.h b/hw/spapr_vio.h index 4fe5f74..a325a5f 100644 --- a/hw/spapr_vio.h +++ b/hw/spapr_vio.h @@ -57,6 +57,7 @@ typedef struct VIOsPAPRDevice { target_ulong signal_state; uint32_t rtce_window_size; VIOsPAPR_RTCE *rtce_table; + int kvmtce_fd; VIOsPAPR_CRQ crq; } VIOsPAPRDevice; diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index fd17d23..06cad41 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -28,6 +28,7 @@ #include "kvm_ppc.h" #include "cpu.h" #include "device_tree.h" +#include "hw/sysbus.h" #include "hw/spapr.h" #include "hw/sysbus.h" @@ -56,6 +57,7 @@ static int cap_segstate; static int cap_booke_sregs; static int cap_ppc_smt; static int cap_ppc_rma; +static int cap_spapr_tce; /* XXX We have a race condition where we actually have a level triggered * interrupt, but the infrastructure can't expose that yet, so the guest @@ -81,6 +83,7 @@ int kvm_arch_init(KVMState *s) cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS); cap_ppc_smt = kvm_check_extension(s, KVM_CAP_PPC_SMT); cap_ppc_rma = kvm_check_extension(s, KVM_CAP_PPC_RMA); + cap_spapr_tce = kvm_check_extension(s, KVM_CAP_SPAPR_TCE); if (!cap_interrupt_level) { fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the " @@ -802,6 +805,57 @@ off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem) return size; } +void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd) +{ + struct kvm_create_spapr_tce args = { + .liobn = liobn, + .window_size = window_size, + }; + long len; + int fd; + void *table; + + if (!cap_spapr_tce) { + return NULL; + } + + fd = kvm_vm_ioctl(kvm_state, KVM_CREATE_SPAPR_TCE, &args); + if (fd < 0) { + return NULL; + } + + len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE) * sizeof(VIOsPAPR_RTCE); + /* FIXME: round this up to page size */ + + table = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + if (table == MAP_FAILED) { + close(fd); + return NULL; + } + + *pfd = fd; + return table; +} + +int kvmppc_remove_spapr_tce(void *table, int fd, uint32_t window_size) +{ + long len; + + if (fd < 0) { + return -1; + } + + len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE)*sizeof(VIOsPAPR_RTCE); + if ((munmap(table, len) < 0) || + (close(fd) < 0)) { + fprintf(stderr, "KVM: Unexpected error removing KVM SPAPR TCE " + "table: %s", strerror(errno)); + /* Leak the table */ + } + + return 0; +} + bool kvm_arch_stop_on_emulation_error(CPUState *env) { return true; diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index 82f32f4..87d1bdd 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -22,6 +22,8 @@ int kvmppc_set_interrupt(CPUState *env, int irq, int level); void kvmppc_set_papr(CPUState *env); int kvmppc_smt_threads(void); off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem); +void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd); +int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size); #else @@ -59,6 +61,18 @@ static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem) return 0; } +static inline void *kvmppc_create_spapr_tce(uint32_t liobn, + uint32_t window_size, int *fd) +{ + return NULL; +} + +static inline int kvmppc_remove_spapr_tce(void *table, int pfd, + uint32_t window_size) +{ + return -1; +} + #endif #ifndef CONFIG_KVM -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (4 preceding siblings ...) 2011-10-30 20:22 ` [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions Alexander Graf ` (19 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> This patch updates the SLOF submodule and precompiled image. The new SLOF versions contains two changes of note: * The previous SLOF has a bug in SCSI condition handling that was exposed by recent updates to qemu's SCSI emulation. This update fixes the bug. * The previous SLOF has a bug in its addressing of SCSI devices, which can be exposed under certain conditions. The new SLOF also fixes this. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- pc-bios/README | 2 +- pc-bios/slof.bin | Bin 579072 -> 578968 bytes roms/SLOF | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/README b/pc-bios/README index 4d1d816..32a438e 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -17,7 +17,7 @@ - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware implementation for certain IBM POWER hardware. The sources are at https://github.com/dgibson/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20110323. + built from git tag qemu-slof-20110930. - The PXE roms come from the iPXE project. Built with BANNER_TIME 0. Sources available at http://ipxe.org. Vendor:Device ID -> ROM mapping: diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin index 22c4c7f5c448e3002aefecf3438f5d080586d666..b9d4f35053be2cd6f599bffddf0ee99627eb00a9 100644 GIT binary patch delta 2772 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 Q4T`A&VCCzx5WKqkKRH*`cmMzZ delta 2943 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 BHl6?g diff --git a/roms/SLOF b/roms/SLOF index d1d6b53..b94bde0 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit d1d6b53b713a2b7c2c25685268fa932d28a4b4c0 +Subproject commit b94bde008b0d49ec4bfe933e110d0952d032ac28 -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (5 preceding siblings ...) 2011-10-30 20:22 ` [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function Alexander Graf ` (18 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, Fabien Chouteau From: Fabien Chouteau <chouteau@adacore.com> SPE instructions are defined by pairs. Currently, the invalid-bits mask is set for the first instruction, but the second one can have a different mask. example: GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE), Signed-off-by: Fabien Chouteau <chouteau@adacore.com> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/translate.c | 500 ++++++++++++++++++++++++++---------------------- 1 files changed, 271 insertions(+), 229 deletions(-) diff --git a/target-ppc/translate.c b/target-ppc/translate.c index 1e362fc..99e995c 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -205,8 +205,10 @@ typedef struct DisasContext { } DisasContext; struct opc_handler_t { - /* invalid bits */ - uint32_t inval; + /* invalid bits for instruction 1 (Rc(opcode) == 0) */ + uint32_t inval1; + /* invalid bits for instruction 2 (Rc(opcode) == 1) */ + uint32_t inval2; /* instruction type */ uint64_t type; /* extended instruction type */ @@ -478,7 +480,23 @@ static inline target_ulong MASK(uint32_t start, uint32_t end) .opc3 = op3, \ .pad = { 0, }, \ .handler = { \ - .inval = invl, \ + .inval1 = invl, \ + .type = _typ, \ + .type2 = _typ2, \ + .handler = &gen_##name, \ + .oname = stringify(name), \ + }, \ + .oname = stringify(name), \ +} +#define GEN_OPCODE_DUAL(name, op1, op2, op3, invl1, invl2, _typ, _typ2) \ +{ \ + .opc1 = op1, \ + .opc2 = op2, \ + .opc3 = op3, \ + .pad = { 0, }, \ + .handler = { \ + .inval1 = invl1, \ + .inval2 = invl2, \ .type = _typ, \ .type2 = _typ2, \ .handler = &gen_##name, \ @@ -493,7 +511,7 @@ static inline target_ulong MASK(uint32_t start, uint32_t end) .opc3 = op3, \ .pad = { 0, }, \ .handler = { \ - .inval = invl, \ + .inval1 = invl, \ .type = _typ, \ .type2 = _typ2, \ .handler = &gen_##name, \ @@ -509,7 +527,22 @@ static inline target_ulong MASK(uint32_t start, uint32_t end) .opc3 = op3, \ .pad = { 0, }, \ .handler = { \ - .inval = invl, \ + .inval1 = invl, \ + .type = _typ, \ + .type2 = _typ2, \ + .handler = &gen_##name, \ + }, \ + .oname = stringify(name), \ +} +#define GEN_OPCODE_DUAL(name, op1, op2, op3, invl1, invl2, _typ, _typ2) \ +{ \ + .opc1 = op1, \ + .opc2 = op2, \ + .opc3 = op3, \ + .pad = { 0, }, \ + .handler = { \ + .inval1 = invl1, \ + .inval2 = invl2, \ .type = _typ, \ .type2 = _typ2, \ .handler = &gen_##name, \ @@ -523,7 +556,7 @@ static inline target_ulong MASK(uint32_t start, uint32_t end) .opc3 = op3, \ .pad = { 0, }, \ .handler = { \ - .inval = invl, \ + .inval1 = invl, \ .type = _typ, \ .type2 = _typ2, \ .handler = &gen_##name, \ @@ -550,7 +583,8 @@ static void gen_invalid(DisasContext *ctx) } static opc_handler_t invalid_handler = { - .inval = 0xFFFFFFFF, + .inval1 = 0xFFFFFFFF, + .inval2 = 0xFFFFFFFF, .type = PPC_NONE, .type2 = PPC_NONE, .handler = gen_invalid, @@ -6693,7 +6727,7 @@ static inline void gen_store_gpr64(int reg, TCGv_i64 t) #endif } -#define GEN_SPE(name0, name1, opc2, opc3, inval, type) \ +#define GEN_SPE(name0, name1, opc2, opc3, inval0, inval1, type) \ static void glue(gen_, name0##_##name1)(DisasContext *ctx) \ { \ if (Rc(ctx->opcode)) \ @@ -7416,35 +7450,35 @@ static inline void gen_evmwsmiaa(DisasContext *ctx) tcg_temp_free_i64(tmp); } -GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, PPC_SPE); -GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, PPC_SPE); -GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, PPC_SPE); //// -GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, PPC_SPE); //// -GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, PPC_SPE); //// -GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x00000000, PPC_SPE); // -GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, PPC_SPE); -GEN_SPE(speundef, evand, 0x08, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evorc, 0x0D, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, PPC_SPE); -GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, PPC_SPE); -GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, PPC_SPE); // -GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, PPC_SPE); -GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, PPC_SPE); //// -GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, PPC_SPE); //// -GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, PPC_SPE); //// -GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, PPC_SPE); //// +GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); //// +GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); +GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); //// +GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); +GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, 0x0000F800, PPC_SPE); //// +GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, 0x0000F800, PPC_SPE); //// +GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, 0x0000F800, PPC_SPE); //// +GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x0000F800, 0x00000000, PPC_SPE); // +GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, 0xFFFFFFFF, PPC_SPE); +GEN_SPE(speundef, evand, 0x08, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE); //// +GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); //// +GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, 0x00000000, PPC_SPE); //// +GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, 0x00000000, PPC_SPE); //// +GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evorc, 0x0D, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE); //// +GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); //// +GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, 0x00000000, PPC_SPE); //// +GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); //// +GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); +GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, 0x0000F800, PPC_SPE); // +GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, 0x0000F800, PPC_SPE); +GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, 0x00000000, PPC_SPE); //// +GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, 0x00000000, PPC_SPE); //// +GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, 0x00600000, PPC_SPE); //// +GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, 0x00600000, PPC_SPE); //// +GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, 0xFFFFFFFF, PPC_SPE); //// /* SPE load and stores */ static inline void gen_addr_spe_imm_index(DisasContext *ctx, TCGv EA, int sh) @@ -7803,74 +7837,74 @@ GEN_SPEOP_LDST(evstwwo, 0x1E, 2); /* Multiply and add - TODO */ #if 0 -GEN_SPE(speundef, evmhessf, 0x01, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhossf, 0x03, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(evmheumi, evmhesmi, 0x04, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhesmf, 0x05, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(evmhoumi, evmhosmi, 0x06, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhosmf, 0x07, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhessfa, 0x11, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhossfa, 0x13, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(evmheumia, evmhesmia, 0x14, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhesmfa, 0x15, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(evmhoumia, evmhosmia, 0x16, 0x10, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhosmfa, 0x17, 0x10, 0x00000000, PPC_SPE); - -GEN_SPE(speundef, evmwhssf, 0x03, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(evmwlumi, speundef, 0x04, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(evmwhumi, evmwhsmi, 0x06, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwhsmf, 0x07, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwssf, 0x09, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwsmf, 0x0D, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwhssfa, 0x13, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(evmwlumia, speundef, 0x14, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(evmwhumia, evmwhsmia, 0x16, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwhsmfa, 0x17, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwssfa, 0x19, 0x11, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwsmfa, 0x1D, 0x11, 0x00000000, PPC_SPE); - -GEN_SPE(evadduiaaw, evaddsiaaw, 0x00, 0x13, 0x0000F800, PPC_SPE); -GEN_SPE(evsubfusiaaw, evsubfssiaaw, 0x01, 0x13, 0x0000F800, PPC_SPE); -GEN_SPE(evaddumiaaw, evaddsmiaaw, 0x04, 0x13, 0x0000F800, PPC_SPE); -GEN_SPE(evsubfumiaaw, evsubfsmiaaw, 0x05, 0x13, 0x0000F800, PPC_SPE); -GEN_SPE(evdivws, evdivwu, 0x06, 0x13, 0x00000000, PPC_SPE); - -GEN_SPE(evmheusiaaw, evmhessiaaw, 0x00, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhessfaaw, 0x01, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(evmhousiaaw, evmhossiaaw, 0x02, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhossfaaw, 0x03, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(evmheumiaaw, evmhesmiaaw, 0x04, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhesmfaaw, 0x05, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(evmhoumiaaw, evmhosmiaaw, 0x06, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhosmfaaw, 0x07, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(evmhegumiaa, evmhegsmiaa, 0x14, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhegsmfaa, 0x15, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(evmhogumiaa, evmhogsmiaa, 0x16, 0x14, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhogsmfaa, 0x17, 0x14, 0x00000000, PPC_SPE); - -GEN_SPE(evmwlusiaaw, evmwlssiaaw, 0x00, 0x15, 0x00000000, PPC_SPE); -GEN_SPE(evmwlumiaaw, evmwlsmiaaw, 0x04, 0x15, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwssfaa, 0x09, 0x15, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwsmfaa, 0x0D, 0x15, 0x00000000, PPC_SPE); - -GEN_SPE(evmheusianw, evmhessianw, 0x00, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhessfanw, 0x01, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(evmhousianw, evmhossianw, 0x02, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhossfanw, 0x03, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(evmheumianw, evmhesmianw, 0x04, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhesmfanw, 0x05, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(evmhoumianw, evmhosmianw, 0x06, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhosmfanw, 0x07, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(evmhegumian, evmhegsmian, 0x14, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhegsmfan, 0x15, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(evmhigumian, evmhigsmian, 0x16, 0x16, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmhogsmfan, 0x17, 0x16, 0x00000000, PPC_SPE); - -GEN_SPE(evmwlusianw, evmwlssianw, 0x00, 0x17, 0x00000000, PPC_SPE); -GEN_SPE(evmwlumianw, evmwlsmianw, 0x04, 0x17, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwssfan, 0x09, 0x17, 0x00000000, PPC_SPE); -GEN_SPE(evmwumian, evmwsmian, 0x0C, 0x17, 0x00000000, PPC_SPE); -GEN_SPE(speundef, evmwsmfan, 0x0D, 0x17, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhessf, 0x01, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);// +GEN_SPE(speundef, evmhossf, 0x03, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmheumi, evmhesmi, 0x04, 0x10, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhesmf, 0x05, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhoumi, evmhosmi, 0x06, 0x10, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhosmf, 0x07, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhessfa, 0x11, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhossfa, 0x13, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmheumia, evmhesmia, 0x14, 0x10, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhesmfa, 0x15, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhoumia, evmhosmia, 0x16, 0x10, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhosmfa, 0x17, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE); + +GEN_SPE(speundef, evmwhssf, 0x03, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmwlumi, speundef, 0x04, 0x11, 0x00000000, 0xFFFFFFFF, PPC_SPE); +GEN_SPE(evmwhumi, evmwhsmi, 0x06, 0x11, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwhsmf, 0x07, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwssf, 0x09, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwsmf, 0x0D, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwhssfa, 0x13, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmwlumia, speundef, 0x14, 0x11, 0x00000000, 0xFFFFFFFF, PPC_SPE); +GEN_SPE(evmwhumia, evmwhsmia, 0x16, 0x11, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwhsmfa, 0x17, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwssfa, 0x19, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwsmfa, 0x1D, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE); + +GEN_SPE(evadduiaaw, evaddsiaaw, 0x00, 0x13, 0x0000F800, 0x0000F800, PPC_SPE); +GEN_SPE(evsubfusiaaw, evsubfssiaaw, 0x01, 0x13, 0x0000F800, 0x0000F800, PPC_SPE); +GEN_SPE(evaddumiaaw, evaddsmiaaw, 0x04, 0x13, 0x0000F800, 0x0000F800, PPC_SPE); +GEN_SPE(evsubfumiaaw, evsubfsmiaaw, 0x05, 0x13, 0x0000F800, 0x0000F800, PPC_SPE); +GEN_SPE(evdivws, evdivwu, 0x06, 0x13, 0x00000000, 0x00000000, PPC_SPE); + +GEN_SPE(evmheusiaaw, evmhessiaaw, 0x00, 0x14, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhessfaaw, 0x01, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhousiaaw, evmhossiaaw, 0x02, 0x14, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhossfaaw, 0x03, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmheumiaaw, evmhesmiaaw, 0x04, 0x14, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhesmfaaw, 0x05, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhoumiaaw, evmhosmiaaw, 0x06, 0x14, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhosmfaaw, 0x07, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhegumiaa, evmhegsmiaa, 0x14, 0x14, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhegsmfaa, 0x15, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhogumiaa, evmhogsmiaa, 0x16, 0x14, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhogsmfaa, 0x17, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE); + +GEN_SPE(evmwlusiaaw, evmwlssiaaw, 0x00, 0x15, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(evmwlumiaaw, evmwlsmiaaw, 0x04, 0x15, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwssfaa, 0x09, 0x15, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwsmfaa, 0x0D, 0x15, 0xFFFFFFFF, 0x00000000, PPC_SPE); + +GEN_SPE(evmheusianw, evmhessianw, 0x00, 0x16, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhessfanw, 0x01, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhousianw, evmhossianw, 0x02, 0x16, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhossfanw, 0x03, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmheumianw, evmhesmianw, 0x04, 0x16, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhesmfanw, 0x05, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhoumianw, evmhosmianw, 0x06, 0x16, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhosmfanw, 0x07, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhegumian, evmhegsmian, 0x14, 0x16, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhegsmfan, 0x15, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmhigumian, evmhigsmian, 0x16, 0x16, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmhogsmfan, 0x17, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE); + +GEN_SPE(evmwlusianw, evmwlssianw, 0x00, 0x17, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(evmwlumianw, evmwlsmianw, 0x04, 0x17, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwssfan, 0x09, 0x17, 0xFFFFFFFF, 0x00000000, PPC_SPE); +GEN_SPE(evmwumian, evmwsmian, 0x0C, 0x17, 0x00000000, 0x00000000, PPC_SPE); +GEN_SPE(speundef, evmwsmfan, 0x0D, 0x17, 0xFFFFFFFF, 0x00000000, PPC_SPE); #endif /*** SPE floating-point extension ***/ @@ -8131,20 +8165,20 @@ GEN_SPEFPUOP_COMP_64(evfststlt); GEN_SPEFPUOP_COMP_64(evfststeq); /* Opcodes definitions */ -GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, PPC_SPE_SINGLE); // -GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, PPC_SPE_SINGLE); // -GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, PPC_SPE_SINGLE); // -GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, PPC_SPE_SINGLE); // -GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, PPC_SPE_SINGLE); // -GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, PPC_SPE_SINGLE); // -GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, PPC_SPE_SINGLE); // -GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, PPC_SPE_SINGLE); // +GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE); // +GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE); // +GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE); // +GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE); // +GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE); // +GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE); // /* Single precision floating-point operations */ /* Arithmetic */ @@ -8199,20 +8233,20 @@ GEN_SPEFPUOP_COMP_32(efststlt); GEN_SPEFPUOP_COMP_32(efststeq); /* Opcodes definitions */ -GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, PPC_SPE_SINGLE); // -GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, PPC_SPE_SINGLE); // -GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, PPC_SPE_SINGLE); // -GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, PPC_SPE_SINGLE); // -GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, PPC_SPE_SINGLE); // -GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, PPC_SPE_SINGLE); // -GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, PPC_SPE_SINGLE); // -GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, PPC_SPE_SINGLE); // -GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, PPC_SPE_SINGLE); // +GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE); // +GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE); // +GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE); // +GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE); // +GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); // +GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); // +GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE); // +GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE); // /* Double precision floating-point operations */ /* Arithmetic */ @@ -8286,22 +8320,22 @@ GEN_SPEFPUOP_COMP_64(efdtstlt); GEN_SPEFPUOP_COMP_64(efdtsteq); /* Opcodes definitions */ -GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, PPC_SPE_DOUBLE); // -GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, PPC_SPE_DOUBLE); // -GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, PPC_SPE_DOUBLE); // -GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, PPC_SPE_DOUBLE); // -GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, PPC_SPE_DOUBLE); // -GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, PPC_SPE_DOUBLE); // -GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, PPC_SPE_DOUBLE); // -GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, PPC_SPE_DOUBLE); // -GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, PPC_SPE_DOUBLE); // +GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE); // +GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_DOUBLE); // +GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_DOUBLE); // +GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE); // +GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE); // +GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); // +GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE); // +GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE); // +GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE); // +GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_DOUBLE); // static opcode_t opcodes[] = { GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE), @@ -9070,84 +9104,84 @@ GEN_VAFORM_PAIRED(vsel, vperm, 21), GEN_VAFORM_PAIRED(vmaddfp, vnmsubfp, 23), #undef GEN_SPE -#define GEN_SPE(name0, name1, opc2, opc3, inval, type) \ -GEN_HANDLER(name0##_##name1, 0x04, opc2, opc3, inval, type) -GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, PPC_SPE), -GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, PPC_SPE), -GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, PPC_SPE), -GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, PPC_SPE), -GEN_SPE(speundef, evand, 0x08, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, PPC_SPE), -GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, PPC_SPE), -GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, PPC_SPE), -GEN_SPE(speundef, evorc, 0x0D, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, PPC_SPE), -GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, PPC_SPE), -GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, PPC_SPE), -GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, PPC_SPE), - -GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, PPC_SPE_SINGLE), -GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, PPC_SPE_SINGLE), -GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, PPC_SPE_SINGLE), -GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, PPC_SPE_SINGLE), -GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, PPC_SPE_SINGLE), -GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, PPC_SPE_SINGLE), -GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, PPC_SPE_SINGLE), -GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, PPC_SPE_SINGLE), - -GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, PPC_SPE_SINGLE), -GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, PPC_SPE_SINGLE), -GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, PPC_SPE_SINGLE), -GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, PPC_SPE_SINGLE), -GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, PPC_SPE_SINGLE), -GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, PPC_SPE_SINGLE), -GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, PPC_SPE_SINGLE), -GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, PPC_SPE_SINGLE), -GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, PPC_SPE_SINGLE), - -GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, PPC_SPE_DOUBLE), -GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, PPC_SPE_DOUBLE), -GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, PPC_SPE_DOUBLE), -GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, PPC_SPE_DOUBLE), -GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, PPC_SPE_DOUBLE), -GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, PPC_SPE_DOUBLE), -GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, PPC_SPE_DOUBLE), -GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, PPC_SPE_DOUBLE), -GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, PPC_SPE_DOUBLE), +#define GEN_SPE(name0, name1, opc2, opc3, inval0, inval1, type) \ + GEN_OPCODE_DUAL(name0##_##name1, 0x04, opc2, opc3, inval0, inval1, type, PPC_NONE) +GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, 0x0000F800, PPC_SPE), +GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, 0x0000F800, PPC_SPE), +GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, 0x0000F800, PPC_SPE), +GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x0000F800, 0x00000000, PPC_SPE), +GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(speundef, evand, 0x08, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE), +GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(speundef, evorc, 0x0D, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE), +GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), +GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, 0x0000F800, PPC_SPE), +GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, 0x0000F800, PPC_SPE), +GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, 0x00000000, PPC_SPE), +GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, 0x00600000, PPC_SPE), +GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, 0x00600000, PPC_SPE), +GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, 0xFFFFFFFF, PPC_SPE), + +GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE), +GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE), +GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE), +GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE), +GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE), +GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE), + +GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE), +GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE), +GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE), +GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE), +GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), +GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), +GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE), +GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE), + +GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE), +GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_DOUBLE), +GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_DOUBLE), +GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE), +GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE), +GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), +GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE), +GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE), +GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE), +GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_DOUBLE), #undef GEN_SPEOP_LDST #define GEN_SPEOP_LDST(name, opc2, sh) \ @@ -9484,11 +9518,19 @@ static inline void gen_intermediate_code_internal(CPUState *env, opc3(ctx.opcode), ctx.opcode, ctx.nip - 4, (int)msr_ir); } } else { - if (unlikely((ctx.opcode & handler->inval) != 0)) { + uint32_t inval; + + if (unlikely(handler->type & (PPC_SPE | PPC_SPE_SINGLE | PPC_SPE_DOUBLE) && Rc(ctx.opcode))) { + inval = handler->inval2; + } else { + inval = handler->inval1; + } + + if (unlikely((ctx.opcode & inval) != 0)) { if (qemu_log_enabled()) { qemu_log("invalid bits: %08x for opcode: " "%02x - %02x - %02x (%08x) " TARGET_FMT_lx "\n", - ctx.opcode & handler->inval, opc1(ctx.opcode), + ctx.opcode & inval, opc1(ctx.opcode), opc2(ctx.opcode), opc3(ctx.opcode), ctx.opcode, ctx.nip - 4); } -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (6 preceding siblings ...) 2011-10-30 20:22 ` [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions Alexander Graf @ 2011-10-30 20:22 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm Alexander Graf ` (17 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> Currently the kvmppc_get_clockfreq() function reads the host's clock frequency from /proc/device-tree, which is useful to past to the guest in KVM setups. However, there are some other host properties advertised in the device tree which can also be relevant to the guests. This patch, therefore, replaces kvmppc_get_clockfreq() which can retrieve any named, single integer property from the host device tree's CPU node. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/kvm.c | 35 ++++++++++++++++++++++++----------- 1 files changed, 24 insertions(+), 11 deletions(-) diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 06cad41..c48cd76 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -650,37 +650,50 @@ static int kvmppc_find_cpu_dt(char *buf, int buf_len) return 0; } -uint64_t kvmppc_get_clockfreq(void) +/* Read a CPU node property from the host device tree that's a single + * integer (32-bit or 64-bit). Returns 0 if anything goes wrong + * (can't find or open the property, or doesn't understand the + * format) */ +static uint64_t kvmppc_read_int_cpu_dt(const char *propname) { - char buf[512]; - uint32_t tb[2]; + char buf[PATH_MAX]; + union { + uint32_t v32; + uint64_t v64; + } u; FILE *f; int len; if (kvmppc_find_cpu_dt(buf, sizeof(buf))) { - return 0; + return -1; } - strncat(buf, "/clock-frequency", sizeof(buf) - strlen(buf)); + strncat(buf, "/", sizeof(buf) - strlen(buf)); + strncat(buf, propname, sizeof(buf) - strlen(buf)); f = fopen(buf, "rb"); if (!f) { return -1; } - len = fread(tb, sizeof(tb[0]), 2, f); + len = fread(&u, 1, sizeof(u), f); fclose(f); switch (len) { - case 1: - /* freq is only a single cell */ - return tb[0]; - case 2: - return *(uint64_t*)tb; + case 4: + /* property is a 32-bit quantity */ + return be32_to_cpu(u.v32); + case 8: + return be64_to_cpu(u.v64); } return 0; } +uint64_t kvmppc_get_clockfreq(void) +{ + return kvmppc_read_int_cpu_dt("clock-frequency"); +} + int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len) { uint32_t *hc = (uint32_t*)buf; -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (7 preceding siblings ...) 2011-10-30 20:22 ` [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image Alexander Graf ` (16 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> Sufficiently recent PAPR specifications define properties "ibm,vmx" and "ibm,dfp" on the CPU node which advertise whether the VMX vector extensions (or the later VSX version) and/or the Decimal Floating Point operations from IBM's recent POWER CPUs are available. Currently we do not put these in the guest device tree and the guest kernel will consequently assume they are not available. This is good, because they are not supported under TCG. VMX is similar enough to Altivec that it might be trivial to support, but VSX and DFP would both require significant work to support in TCG. However, when running under kvm on a host which supports these instructions, there's no reason not to let the guest use them. This patch, therefore, checks for the relevant support on the host CPU and, if present, advertises them to the guest as well. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/spapr.c | 17 +++++++++++++++++ target-ppc/kvm.c | 10 ++++++++++ target-ppc/kvm_ppc.h | 12 ++++++++++++ 3 files changed, 39 insertions(+), 0 deletions(-) diff --git a/hw/spapr.c b/hw/spapr.c index 193398b..4d2a55e 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -188,6 +188,8 @@ static void *spapr_create_fdt_skel(const char *cpu_model, 0xffffffff, 0xffffffff}; uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ; uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 1000000000; + uint32_t vmx = kvm_enabled() ? kvmppc_get_vmx() : 0; + uint32_t dfp = kvm_enabled() ? kvmppc_get_dfp() : 0; if ((index % smt) != 0) { continue; @@ -235,6 +237,21 @@ static void *spapr_create_fdt_skel(const char *cpu_model, segs, sizeof(segs)))); } + /* Advertise VMX/VSX (vector extensions) if available + * 0 / no property == no vector extensions + * 1 == VMX / Altivec available + * 2 == VSX available */ + if (vmx) { + _FDT((fdt_property_cell(fdt, "ibm,vmx", vmx))); + } + + /* Advertise DFP (Decimal Floating Point) if available + * 0 / no property == no DFP + * 1 == DFP available */ + if (dfp) { + _FDT((fdt_property_cell(fdt, "ibm,dfp", dfp))); + } + _FDT((fdt_end_node(fdt))); } diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index c48cd76..96139ac 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -694,6 +694,16 @@ uint64_t kvmppc_get_clockfreq(void) return kvmppc_read_int_cpu_dt("clock-frequency"); } +uint32_t kvmppc_get_vmx(void) +{ + return kvmppc_read_int_cpu_dt("ibm,vmx"); +} + +uint32_t kvmppc_get_dfp(void) +{ + return kvmppc_read_int_cpu_dt("ibm,dfp"); +} + int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len) { uint32_t *hc = (uint32_t*)buf; diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index 87d1bdd..955729a 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -17,6 +17,8 @@ void kvmppc_init(void); uint32_t kvmppc_get_tbfreq(void); uint64_t kvmppc_get_clockfreq(void); +uint32_t kvmppc_get_vmx(void); +uint32_t kvmppc_get_dfp(void); int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len); int kvmppc_set_interrupt(CPUState *env, int irq, int level); void kvmppc_set_papr(CPUState *env); @@ -37,6 +39,16 @@ static inline uint64_t kvmppc_get_clockfreq(void) return 0; } +static inline uint32_t kvmppc_get_vmx(void) +{ + return 0; +} + +static inline uint32_t kvmppc_get_dfp(void) +{ + return 0; +} + static inline int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len) { return -1; -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (8 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching Alexander Graf ` (15 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> This patch is a general update to the SLOF firmware image used on the pseries machine. This doesn't contain updates for specific features but contains a number of bugfixes and enhancements in the main SLOF tree from Thomas Huth. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- pc-bios/README | 2 +- pc-bios/slof.bin | Bin 578968 -> 738744 bytes roms/SLOF | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/README b/pc-bios/README index 32a438e..0668559 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -17,7 +17,7 @@ - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware implementation for certain IBM POWER hardware. The sources are at https://github.com/dgibson/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20110930. + built from git tag qemu-slof-20111013. - The PXE roms come from the iPXE project. Built with BANNER_TIME 0. Sources available at http://ipxe.org. Vendor:Device ID -> ROM mapping: diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin index b9d4f35053be2cd6f599bffddf0ee99627eb00a9..1e84582cc695ff6e5973e045ef31ca951ca15c79 100644 GIT binary patch literal 738744 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%0Amv}IrUkZ6u!@qTPI!D(^a=}uTc;vb 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 delta 63814 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 diff --git a/roms/SLOF b/roms/SLOF index b94bde0..32e3430 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit b94bde008b0d49ec4bfe933e110d0952d032ac28 +Subproject commit 32e3430c018ceb8413cb808477449d1968c42497 -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (9 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host Alexander Graf ` (14 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> The ppc target contains a ppc_find_by_pvr() function, which looks up a CPU spec based on a PVR (that is, based on the value in the target cpu's Processor Version Register). PVR values contain information on both the cpu model (upper 16 bits, usually) and on the precise revision (low 16 bits, usually). ppc_find_by_pvr, as well as making exact PVR matches, attempts to find "close" PVR matches, when we don't have a CPU spec for the exact revision specified. This sounds like a good idea, execpt that the current logic is completely nonsensical. It seems to assume CPU families are subdivided bit by bit in the PVR in a way they just aren't. Specifically, it requires a match on all bits of the specified pvr up to the last non-zero bit. This has the bizarre effect that when the low bits are simply a sequential revision number (a common though not universal pattern), then odd specified revisions must be matched exactly, whereas even specified revisions will also match the next odd revision, likewise for powers of 4, 8 and so forth. To correctly do inexact matching we'd need to re-organize the table of CPU specs to include a mask showing what PVR range the spec is compatible with (similar to the cputable code in the Linux kernel). For now, just remove the bogosity by only permitting exact PVR matches. That at least makes the matching simple and consistent. If we need inexact matching we can add the necessary per-subfamily masks later. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/translate_init.c | 38 +++++++------------------------------- 1 files changed, 7 insertions(+), 31 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index ca0d852..73b49cf 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -10043,40 +10043,16 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def) static const ppc_def_t *ppc_find_by_pvr (uint32_t pvr) { - const ppc_def_t *ret; - uint32_t pvr_rev; - int i, best, match, best_match, max; + int i; - ret = NULL; - max = ARRAY_SIZE(ppc_defs); - best = -1; - pvr_rev = pvr & 0xFFFF; - /* We want all specified bits to match */ - best_match = 32 - ctz32(pvr_rev); - for (i = 0; i < max; i++) { - /* We check that the 16 higher bits are the same to ensure the CPU - * model will be the choosen one. - */ - if (((pvr ^ ppc_defs[i].pvr) >> 16) == 0) { - /* We want as much as possible of the low-level 16 bits - * to be the same but we allow inexact matches. - */ - match = clz32(pvr_rev ^ (ppc_defs[i].pvr & 0xFFFF)); - /* We check '>=' instead of '>' because the PPC_defs table - * is ordered by increasing revision. - * Then, we will match the higher revision compatible - * with the requested PVR - */ - if (match >= best_match) { - best = i; - best_match = match; - } + for (i = 0; i < ARRAY_SIZE(ppc_defs); i++) { + /* If we have an exact match, we're done */ + if (pvr == ppc_defs[i].pvr) { + return &ppc_defs[i]; } } - if (best != -1) - ret = &ppc_defs[best]; - return ret; + return NULL; } #include <ctype.h> -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (10 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 Alexander Graf ` (13 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> For convenience with kvm, x86 allows the user to specify -cpu host on the qemu command line, which means make the guest cpu the same as the host cpu. This patch implements the same option for ppc targets. For now, this just read the host PVR (Processor Version Register) and selects one of our existing CPU specs based on it. This means that the option will not work if the host cpu is not supported by TCG, even if that wouldn't matter for use under kvm. In future, we can extend this in future to override parts of the cpu spec based on information obtained from the host (via /proc/cpuinfo, the host device tree, or explicit KVM calls). That will let us handle cases where the real kvm-virtualized CPU doesn't behave exactly like the TCG-emulated CPU. With appropriate annotation of the CPU specs we'll also then be able to use host cpus under kvm even when there isn't a matching full TCG model. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/cpu.h | 1 + target-ppc/kvm.c | 19 +++++++++++++++++++ target-ppc/kvm_ppc.h | 6 ++++++ target-ppc/translate_init.c | 8 +++++++- 4 files changed, 33 insertions(+), 1 deletions(-) diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index 3f77e30..8e5c85c 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -1107,6 +1107,7 @@ void ppc_store_msr (CPUPPCState *env, target_ulong value); void ppc_cpu_list (FILE *f, fprintf_function cpu_fprintf); +const ppc_def_t *ppc_find_by_pvr(uint32_t pvr); const ppc_def_t *cpu_ppc_find_by_name (const char *name); int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def); diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 96139ac..313c7b2 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -879,6 +879,25 @@ int kvmppc_remove_spapr_tce(void *table, int fd, uint32_t window_size) return 0; } +static inline uint32_t mfpvr(void) +{ + uint32_t pvr; + + asm ("mfpvr %0" + : "=r"(pvr)); + return pvr; +} + +const ppc_def_t *kvmppc_host_cpu_def(void) +{ + uint32_t host_pvr = mfpvr(); + const ppc_def_t *base_spec; + + base_spec = ppc_find_by_pvr(host_pvr); + + return base_spec; +} + bool kvm_arch_stop_on_emulation_error(CPUState *env) { return true; diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index 955729a..b0d6fb6 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -26,6 +26,7 @@ int kvmppc_smt_threads(void); off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem); void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd); int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size); +const ppc_def_t *kvmppc_host_cpu_def(void); #else @@ -85,6 +86,11 @@ static inline int kvmppc_remove_spapr_tce(void *table, int pfd, return -1; } +static inline const ppc_def_t *kvmppc_host_cpu_def(void) +{ + return NULL; +} + #endif #ifndef CONFIG_KVM diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 73b49cf..62f0a6b 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -24,6 +24,8 @@ #include "dis-asm.h" #include "gdbstub.h" +#include <kvm.h> +#include "kvm_ppc.h" //#define PPC_DUMP_CPU //#define PPC_DEBUG_SPR @@ -10041,7 +10043,7 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def) return 0; } -static const ppc_def_t *ppc_find_by_pvr (uint32_t pvr) +const ppc_def_t *ppc_find_by_pvr(uint32_t pvr) { int i; @@ -10063,6 +10065,10 @@ const ppc_def_t *cpu_ppc_find_by_name (const char *name) const char *p; int i, max, len; + if (kvm_enabled() && (strcasecmp(name, "host") == 0)) { + return kvmppc_host_cpu_def(); + } + /* Check if the given name is a PVR */ len = strlen(name); if (len == 10 && name[0] == '0' && name[1] == 'x') { -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (11 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default Alexander Graf ` (12 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> This patch adds cpu specs to the table for POWER7 revisions 2.1 and 2.3. This allows -cpu host to be used on these host cpus. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/translate_init.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 62f0a6b..7de097d 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -7333,6 +7333,8 @@ enum { CPU_POWERPC_POWER6A = 0x0F000002, #define CPU_POWERPC_POWER7 CPU_POWERPC_POWER7_v20 CPU_POWERPC_POWER7_v20 = 0x003F0200, + CPU_POWERPC_POWER7_v21 = 0x003F0201, + CPU_POWERPC_POWER7_v23 = 0x003F0203, CPU_POWERPC_970 = 0x00390202, #define CPU_POWERPC_970FX CPU_POWERPC_970FX_v31 CPU_POWERPC_970FX_v10 = 0x00391100, @@ -9139,6 +9141,8 @@ static const ppc_def_t ppc_defs[] = { /* POWER7 */ POWERPC_DEF("POWER7", CPU_POWERPC_POWER7, POWER7), POWERPC_DEF("POWER7_v2.0", CPU_POWERPC_POWER7_v20, POWER7), + POWERPC_DEF("POWER7_v2.1", CPU_POWERPC_POWER7_v21, POWER7), + POWERPC_DEF("POWER7_v2.3", CPU_POWERPC_POWER7_v23, POWER7), /* PowerPC 970 */ POWERPC_DEF("970", CPU_POWERPC_970, 970), /* PowerPC 970FX (G5) */ -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (12 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space Alexander Graf ` (11 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> Now that we've implemented -cpu host for ppc, this patch updates the pseries machine to use the host cpu as the guest cpu by default when running under KVM. This is important because under KVM Book3S-HV the guest cpu _cannot_ be of a different type to the host cpu (at the moment KVM Book3S-HV will silently virtualize the host cpu instead of whatever was requested, but in future it is likely to simply refuse to run the VM if a cpu model other than the host's is requested). Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/spapr.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hw/spapr.c b/hw/spapr.c index 4d2a55e..08c7399 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -406,7 +406,7 @@ static void ppc_spapr_init(ram_addr_t ram_size, /* init CPUs */ if (cpu_model == NULL) { - cpu_model = "POWER7"; + cpu_model = kvm_enabled() ? "host" : "POWER7"; } for (i = 0; i < smp_cpus; i++) { env = cpu_init(cpu_model); -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (13 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target Alexander Graf ` (10 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc Some 32-bit PPC CPUs can use up to 36 bit of physical address space. Treat them accordingly in the qemu-system-ppc binary type. Signed-off-by: Alexander Graf <agraf@suse.de> --- configure | 2 +- target-ppc/cpu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 4f87e0a..f8dd4db 100755 --- a/configure +++ b/configure @@ -3309,7 +3309,7 @@ case "$target_arch2" in ;; ppc) gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" - target_phys_bits=32 + target_phys_bits=64 target_nptl="yes" target_libs_softmmu="$fdt_libs" ;; diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index 8e5c85c..f36f375 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -66,7 +66,7 @@ #define TARGET_PAGE_BITS 12 #endif /* defined(TARGET_PPCEMB) */ -#define TARGET_PHYS_ADDR_SPACE_BITS 32 +#define TARGET_PHYS_ADDR_SPACE_BITS 36 #define TARGET_VIRT_ADDR_SPACE_BITS 32 #endif /* defined (TARGET_PPC64) */ -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (14 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits Alexander Graf ` (9 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc The sole reason we have the ppcemb target is to support MMUs that have less than the usual 4k possible page size. There are very few of these chips and I don't want to add additional QA and testing burden to everyone to ensure that code still works when TARGET_PAGE_SIZE is not 4k. So this patch disables all CPUs except for MMU_BOOKE capable ones from the ppcemb target. Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/translate_init.c | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0 deletions(-) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 7de097d..f0ae1d1 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -10047,11 +10047,27 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def) return 0; } +static bool ppc_cpu_usable(const ppc_def_t *def) +{ +#if defined(TARGET_PPCEMB) + /* When using the ppcemb target, we only support 440 style cores */ + if (def->mmu_model != POWERPC_MMU_BOOKE) { + return false; + } +#endif + + return true; +} + const ppc_def_t *ppc_find_by_pvr(uint32_t pvr) { int i; for (i = 0; i < ARRAY_SIZE(ppc_defs); i++) { + if (!ppc_cpu_usable(&ppc_defs[i])) { + continue; + } + /* If we have an exact match, we're done */ if (pvr == ppc_defs[i].pvr) { return &ppc_defs[i]; @@ -10091,6 +10107,10 @@ const ppc_def_t *cpu_ppc_find_by_name (const char *name) ret = NULL; max = ARRAY_SIZE(ppc_defs); for (i = 0; i < max; i++) { + if (!ppc_cpu_usable(&ppc_defs[i])) { + continue; + } + if (strcasecmp(name, ppc_defs[i].name) == 0) { ret = &ppc_defs[i]; break; @@ -10106,6 +10126,10 @@ void ppc_cpu_list (FILE *f, fprintf_function cpu_fprintf) max = ARRAY_SIZE(ppc_defs); for (i = 0; i < max; i++) { + if (!ppc_cpu_usable(&ppc_defs[i])) { + continue; + } + (*cpu_fprintf)(f, "PowerPC %-16s PVR %08x\n", ppc_defs[i].name, ppc_defs[i].pvr); } -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (15 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf ` (8 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, Anton Blanchard, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> In __cpu_ppc_store_decr(), we set up a regular timer used to trigger decrementer interrupts. This is necessary to implement the decrementer properly under TCG, but is unnecessary under KVM (true for both Book3S-PR and Book3S-HV KVM variants), because the kernel handles generating and delivering decrementer exceptions. Under kvm, in fact, the timer causes expensive and unnecessary exits from kvm to qemu. This patch, therefore, disables setting the timer when kvm is in use. Signed-off-by: Anton Blanchard <anton@au1.ibm.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/ppc.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/hw/ppc.c b/hw/ppc.c index 25b59dd..d29af0b 100644 --- a/hw/ppc.c +++ b/hw/ppc.c @@ -662,6 +662,12 @@ static void __cpu_ppc_store_decr (CPUState *env, uint64_t *nextp, LOG_TB("%s: %08" PRIx32 " => %08" PRIx32 "\n", __func__, decr, value); + + if (kvm_enabled()) { + /* KVM handles decrementer exceptions, we don't need our own timer */ + return; + } + now = qemu_get_clock_ns(vm_clock); next = now + muldiv64(value, get_ticks_per_sec(), tb_env->decr_freq); if (is_excp) { -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (16 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-11-01 19:28 ` Blue Swirl 2011-10-30 20:23 ` [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases Alexander Graf ` (7 subsequent siblings) 25 siblings, 1 reply; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc We have several targets in the PPC tree now that basically require libfdt to function properly, namely the pseries and the e500 targets. This dependency will rather increase than decrease in the future, so I want to make sure that people building shiny new 1.0 actually have libfdt installed to get rid of a few ifdefs in the code. Warning: This patch will likely make configure fail for people who don't select their own --target-list, but don't have libfdt development packages installed. However, we really need this new dependency to move on. Signed-off-by: Alexander Graf <agraf@suse.de> --- v1 -> v2: - no paranthesis - no fdt check for config_pseries - add . in error message --- configure | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/configure b/configure index f8dd4db..18537e8 100755 --- a/configure +++ b/configure @@ -3422,7 +3422,16 @@ case "$target_arch2" in fi fi esac -if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then +if test "$fdt" != "yes" && test "$target_arch2" = "ppc" -o \ + "$target_arch2" = "ppc64" -o "$target_arch2" = "ppcemb"; then + echo + echo "Error: libfdt missing" + echo "The PowerPC target requires libfdt to work properly." + echo "Please make sure to have it and its development packages installed." + echo + exit 1 +fi +if test "$target_arch2" = "ppc64"; then echo "CONFIG_PSERIES=y" >> $config_target_mak fi if test "$target_bigendian" = "yes" ; then -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available 2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf @ 2011-11-01 19:28 ` Blue Swirl 2011-11-01 20:42 ` Alexander Graf 2011-11-01 23:59 ` [Qemu-devel] [Qemu-ppc] " David Gibson 0 siblings, 2 replies; 39+ messages in thread From: Blue Swirl @ 2011-11-01 19:28 UTC (permalink / raw) To: Alexander Graf; +Cc: qemu-ppc, qemu-devel On Sun, Oct 30, 2011 at 20:23, Alexander Graf <agraf@suse.de> wrote: > We have several targets in the PPC tree now that basically require libfdt > to function properly, namely the pseries and the e500 targets. This dependency > will rather increase than decrease in the future, so I want to make sure > that people building shiny new 1.0 actually have libfdt installed to get > rid of a few ifdefs in the code. > > Warning: This patch will likely make configure fail for people who don't > select their own --target-list, but don't have libfdt development packages > installed. However, we really need this new dependency to move on. I'd still prefer the submodule approach to help win32 and OSX users, assuming that libfdt builds on those platforms. > Signed-off-by: Alexander Graf <agraf@suse.de> > > --- > > v1 -> v2: > > - no paranthesis > - no fdt check for config_pseries > - add . in error message > --- > configure | 11 ++++++++++- > 1 files changed, 10 insertions(+), 1 deletions(-) > > diff --git a/configure b/configure > index f8dd4db..18537e8 100755 > --- a/configure > +++ b/configure > @@ -3422,7 +3422,16 @@ case "$target_arch2" in > fi > fi > esac > -if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then > +if test "$fdt" != "yes" && test "$target_arch2" = "ppc" -o \ > + "$target_arch2" = "ppc64" -o "$target_arch2" = "ppcemb"; then > + echo > + echo "Error: libfdt missing" > + echo "The PowerPC target requires libfdt to work properly." > + echo "Please make sure to have it and its development packages installed." > + echo > + exit 1 > +fi > +if test "$target_arch2" = "ppc64"; then > echo "CONFIG_PSERIES=y" >> $config_target_mak > fi > if test "$target_bigendian" = "yes" ; then > -- > 1.6.0.2 > > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available 2011-11-01 19:28 ` Blue Swirl @ 2011-11-01 20:42 ` Alexander Graf 2011-11-01 23:59 ` [Qemu-devel] [Qemu-ppc] " David Gibson 1 sibling, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-11-01 20:42 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 01.11.2011, at 12:28, Blue Swirl <blauwirbel@gmail.com> wrote: > On Sun, Oct 30, 2011 at 20:23, Alexander Graf <agraf@suse.de> wrote: >> We have several targets in the PPC tree now that basically require libfdt >> to function properly, namely the pseries and the e500 targets. This dependency >> will rather increase than decrease in the future, so I want to make sure >> that people building shiny new 1.0 actually have libfdt installed to get >> rid of a few ifdefs in the code. >> >> Warning: This patch will likely make configure fail for people who don't >> select their own --target-list, but don't have libfdt development packages >> installed. However, we really need this new dependency to move on. > > I'd still prefer the submodule approach to help win32 and OSX users, > assuming that libfdt builds on those platforms. Then pull and reverse this patch please. I want at least the rest in before the freeze. Alex > >> Signed-off-by: Alexander Graf <agraf@suse.de> >> >> --- >> >> v1 -> v2: >> >> - no paranthesis >> - no fdt check for config_pseries >> - add . in error message >> --- >> configure | 11 ++++++++++- >> 1 files changed, 10 insertions(+), 1 deletions(-) >> >> diff --git a/configure b/configure >> index f8dd4db..18537e8 100755 >> --- a/configure >> +++ b/configure >> @@ -3422,7 +3422,16 @@ case "$target_arch2" in >> fi >> fi >> esac >> -if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then >> +if test "$fdt" != "yes" && test "$target_arch2" = "ppc" -o \ >> + "$target_arch2" = "ppc64" -o "$target_arch2" = "ppcemb"; then >> + echo >> + echo "Error: libfdt missing" >> + echo "The PowerPC target requires libfdt to work properly." >> + echo "Please make sure to have it and its development packages installed." >> + echo >> + exit 1 >> +fi >> +if test "$target_arch2" = "ppc64"; then >> echo "CONFIG_PSERIES=y" >> $config_target_mak >> fi >> if test "$target_bigendian" = "yes" ; then >> -- >> 1.6.0.2 >> >> ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 18/22] PPC: Fail configure when libfdt is not available 2011-11-01 19:28 ` Blue Swirl 2011-11-01 20:42 ` Alexander Graf @ 2011-11-01 23:59 ` David Gibson 1 sibling, 0 replies; 39+ messages in thread From: David Gibson @ 2011-11-01 23:59 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-ppc, Alexander Graf, qemu-devel On Tue, Nov 01, 2011 at 07:28:45PM +0000, Blue Swirl wrote: > On Sun, Oct 30, 2011 at 20:23, Alexander Graf <agraf@suse.de> wrote: > > We have several targets in the PPC tree now that basically require libfdt > > to function properly, namely the pseries and the e500 targets. This dependency > > will rather increase than decrease in the future, so I want to make sure > > that people building shiny new 1.0 actually have libfdt installed to get > > rid of a few ifdefs in the code. > > > > Warning: This patch will likely make configure fail for people who don't > > select their own --target-list, but don't have libfdt development packages > > installed. However, we really need this new dependency to move on. > > I'd still prefer the submodule approach to help win32 and OSX users, > assuming that libfdt builds on those platforms. I've never tried compiling libfdt on win32 or OSX. I did help someone out to get it compiling on FreeBSD, so OSX is likely to be fine. In any case the core of the library is pretty much pure C with only a tiny set of library functions used, even. So no changes to the core code should be necessary, but it is possibly win32 may need changes to libfdt_env.h (which provides that small set of functions). Actually, if using a submodule, arguably libfdt_env.h should be replaced anyway with a version which uses existing qemu primitives for things (byteswapping, in particular). -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (17 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds Alexander Graf ` (6 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> Currently, when KVM is enabled, the pseries machine checks if the host CPU supports VMX, VSX and/or DFP instructions and advertises accordingly in the guest device tree. It does this regardless of what CPU is selected on the command line. On the other hand, when in TCG mode, it never advertises any of these facilities, even basic VMX (Altivec) which is supported in TCG. Now that we have a -cpu host option for ppc, it is fairly straightforward to fix both problems. This patch changes the -cpu host code to override the basic cpu spec derived from the PVR with information queried from the host avout VMX, VSX and DFP capability. The pseries code then uses the instruction availability advertised in the cpu state to set the guest device tree correctly for both the KVM and TCG cases. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/spapr.c | 10 +++++----- target-ppc/cpu.h | 20 ++++++++++++++++++++ target-ppc/kvm.c | 23 ++++++++++++++++++++++- target-ppc/translate_init.c | 18 ++---------------- 4 files changed, 49 insertions(+), 22 deletions(-) diff --git a/hw/spapr.c b/hw/spapr.c index 08c7399..933af32 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -188,8 +188,6 @@ static void *spapr_create_fdt_skel(const char *cpu_model, 0xffffffff, 0xffffffff}; uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ; uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 1000000000; - uint32_t vmx = kvm_enabled() ? kvmppc_get_vmx() : 0; - uint32_t dfp = kvm_enabled() ? kvmppc_get_dfp() : 0; if ((index % smt) != 0) { continue; @@ -241,15 +239,17 @@ static void *spapr_create_fdt_skel(const char *cpu_model, * 0 / no property == no vector extensions * 1 == VMX / Altivec available * 2 == VSX available */ - if (vmx) { + if (env->insns_flags & PPC_ALTIVEC) { + uint32_t vmx = (env->insns_flags2 & PPC2_VSX) ? 2 : 1; + _FDT((fdt_property_cell(fdt, "ibm,vmx", vmx))); } /* Advertise DFP (Decimal Floating Point) if available * 0 / no property == no DFP * 1 == DFP available */ - if (dfp) { - _FDT((fdt_property_cell(fdt, "ibm,dfp", dfp))); + if (env->insns_flags2 & PPC2_DFP) { + _FDT((fdt_property_cell(fdt, "ibm,dfp", 1))); } _FDT((fdt_end_node(fdt))); diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index f36f375..3ef4eba 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -858,6 +858,22 @@ enum { /* The whole PowerPC CPU context */ #define NB_MMU_MODES 3 +struct ppc_def_t { + const char *name; + uint32_t pvr; + uint32_t svr; + uint64_t insns_flags; + uint64_t insns_flags2; + uint64_t msr_mask; + powerpc_mmu_t mmu_model; + powerpc_excp_t excp_model; + powerpc_input_t bus_model; + uint32_t flags; + int bfd_mach; + void (*init_proc)(CPUPPCState *env); + int (*check_pow)(CPUPPCState *env); +}; + struct CPUPPCState { /* First are the most commonly used resources * during translated code execution @@ -1844,6 +1860,10 @@ enum { /* BookE 2.06 PowerPC specification */ PPC2_BOOKE206 = 0x0000000000000001ULL, + /* VSX (extensions to Altivec / VMX) */ + PPC2_VSX = 0x0000000000000002ULL, + /* Decimal Floating Point (DFP) */ + PPC2_DFP = 0x0000000000000004ULL, }; /*****************************************************************************/ diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 313c7b2..a090d79 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -888,14 +888,35 @@ static inline uint32_t mfpvr(void) return pvr; } +static void alter_insns(uint64_t *word, uint64_t flags, bool on) +{ + if (on) { + *word |= flags; + } else { + *word &= ~flags; + } +} + const ppc_def_t *kvmppc_host_cpu_def(void) { uint32_t host_pvr = mfpvr(); const ppc_def_t *base_spec; + ppc_def_t *spec; + uint32_t vmx = kvmppc_get_vmx(); + uint32_t dfp = kvmppc_get_dfp(); base_spec = ppc_find_by_pvr(host_pvr); - return base_spec; + spec = g_malloc0(sizeof(*spec)); + memcpy(spec, base_spec, sizeof(*spec)); + + /* Now fix up the spec with information we can query from the host */ + + alter_insns(&spec->insns_flags, PPC_ALTIVEC, vmx > 0); + alter_insns(&spec->insns_flags2, PPC2_VSX, vmx > 1); + alter_insns(&spec->insns_flags2, PPC2_DFP, dfp); + + return spec; } bool kvm_arch_stop_on_emulation_error(CPUState *env) diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index f0ae1d1..4dfd7f3 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -34,22 +34,6 @@ #define TODO_USER_ONLY 1 #endif -struct ppc_def_t { - const char *name; - uint32_t pvr; - uint32_t svr; - uint64_t insns_flags; - uint64_t insns_flags2; - uint64_t msr_mask; - powerpc_mmu_t mmu_model; - powerpc_excp_t excp_model; - powerpc_input_t bus_model; - uint32_t flags; - int bfd_mach; - void (*init_proc)(CPUPPCState *env); - int (*check_pow)(CPUPPCState *env); -}; - /* For user-mode emulation, we don't emulate any IRQ controller */ #if defined(CONFIG_USER_ONLY) #define PPC_IRQ_INIT_FN(name) \ @@ -6535,6 +6519,8 @@ static void init_proc_970MP (CPUPPCState *env) PPC_64B | PPC_ALTIVEC | \ PPC_SEGMENT_64B | PPC_SLBI | \ PPC_POPCNTB | PPC_POPCNTWD) +/* FIXME: Should also have PPC2_VSX and PPC2_DFP, but we don't + * implement those in TCG yet */ #define POWERPC_INSNS2_POWER7 (PPC_NONE) #define POWERPC_MSRM_POWER7 (0x800000000204FF36ULL) #define POWERPC_MMU_POWER7 (POWERPC_MMU_2_06) -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (18 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known Alexander Graf ` (5 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> The recent usage of MemoryRegion in kvm_ppc.h breaks builds with CONFIG_USER_ONLY=y. This patch fixes it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/kvm_ppc.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h index b0d6fb6..f9c0198 100644 --- a/target-ppc/kvm_ppc.h +++ b/target-ppc/kvm_ppc.h @@ -23,9 +23,11 @@ int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len); int kvmppc_set_interrupt(CPUState *env, int irq, int level); void kvmppc_set_papr(CPUState *env); int kvmppc_smt_threads(void); +#ifndef CONFIG_USER_ONLY off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem); void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd); int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size); +#endif /* !CONFIG_USER_ONLY */ const ppc_def_t *kvmppc_host_cpu_def(void); #else @@ -69,6 +71,7 @@ static inline int kvmppc_smt_threads(void) return 1; } +#ifndef CONFIG_USER_ONLY static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem) { return 0; @@ -85,6 +88,7 @@ static inline int kvmppc_remove_spapr_tce(void *table, int pfd, { return -1; } +#endif /* !CONFIG_USER_ONLY */ static inline const ppc_def_t *kvmppc_host_cpu_def(void) { -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (19 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table Alexander Graf ` (4 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc The -cpu host feature tries to find out the host capabilities based on device tree information. However, we don't always have that available because it's an optional property in dt. So instead of force unsetting values depending on an unreliable source of information, let's just try to be clever about it and not override capabilities when we don't know the device tree pieces. This fixes altivec with -cpu host on YDL PowerStations. Reported-by: Nishanth Aravamudan <nacc@us.ibm.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/kvm.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index a090d79..f3d0861 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -912,9 +912,15 @@ const ppc_def_t *kvmppc_host_cpu_def(void) /* Now fix up the spec with information we can query from the host */ - alter_insns(&spec->insns_flags, PPC_ALTIVEC, vmx > 0); - alter_insns(&spec->insns_flags2, PPC2_VSX, vmx > 1); - alter_insns(&spec->insns_flags2, PPC2_DFP, dfp); + if (vmx != -1) { + /* Only override when we know what the host supports */ + alter_insns(&spec->insns_flags, PPC_ALTIVEC, vmx > 0); + alter_insns(&spec->insns_flags2, PPC2_VSX, vmx > 1); + } + if (dfp != -1) { + /* Only override when we know what the host supports */ + alter_insns(&spec->insns_flags2, PPC2_DFP, dfp); + } return spec; } -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (20 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known Alexander Graf @ 2011-10-30 20:23 ` Alexander Graf 2011-10-31 4:03 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (3 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> Sufficiently recent kernels include a KVM call to accelerate use of PAPR TCE tables (IOMMU), which are used by PAPR virtual IO devices. This involves qemu mapping the TCE table in from a kernel obtained fd, which currently we do with PROT_READ only. This is a hangover from early (never released) versions of this kernel interface which only permitted read-only mappings and required us to destroy and recreate the table when we needed to clear it from qemu. Now, the kernel permits read-write mappings, and we rely on this to clear the table in spapr_vio_quiesce_one(). However, due to insufficient testing, I forgot to update the actual mapping of the table in kvmppc_create_spapr_tce() to add PROT_WRITE to the mmap(). This patch corrects the oversight. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/kvm.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index f3d0861..429349f 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c @@ -850,7 +850,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd) len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE) * sizeof(VIOsPAPR_RTCE); /* FIXME: round this up to page size */ - table = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + table = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if (table == MAP_FAILED) { close(fd); return NULL; -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (21 preceding siblings ...) 2011-10-30 20:23 ` [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table Alexander Graf @ 2011-10-31 4:03 ` Alexander Graf 2011-10-31 4:12 ` [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate Alexander Graf ` (2 subsequent siblings) 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-31 4:03 UTC (permalink / raw) To: Alexander Graf; +Cc: Blue Swirl, qemu-ppc, qemu-devel On 30.10.2011, at 21:22, Alexander Graf wrote: > Hi Blue, > > This is my current patch queue for ppc. Please pull. > > Alex > > > The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e: > Max Filippov (1): > MAINTAINERS: update wiki URL and machine names for target-xtensa > > are available in the git repository at: > > git://repo.or.cz/qemu/agraf.git ppc-next > > Alexander Graf (4): > PPC: Bump qemu-system-ppc to 64-bit physical address space > PPC: Disable non-440 CPUs for ppcemb target > PPC: Fail configure when libfdt is not available > KVM: PPC: Override host vmx/vsx/dfp only when information known > > David Gibson (15): > pseries: Support SMT systems for KVM Book3S-HV > pseries: Allow KVM Book3S-HV on PPC970 CPUS > pseries: Use Book3S-HV TCE acceleration capabilities > pseries: Update SLOF firmware image > ppc: Generalize the kvmppc_get_clockfreq() function > pseries: Add device tree properties for VMX/VSX and DFP under kvm > pseries: Update SLOF firmware image > ppc: Remove broken partial PVR matching > ppc: First cut implementation of -cpu host > ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 > pseries: Under kvm use guest cpu = host cpu by default > ppc: Avoid decrementer related kvm exits > pseries: Correct vmx/dfp handling in both KVM and TCG cases > ppc: Fix up usermode only builds > pseries: Allow writes to KVM accelerated TCE table I added these patches in between as well: ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate pseries: Add partial support for PCI Alex ^ permalink raw reply [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (22 preceding siblings ...) 2011-10-31 4:03 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf @ 2011-10-31 4:12 ` Alexander Graf 2011-10-31 4:12 ` [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI Alexander Graf 2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-31 4:12 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> The CPU state contains two bitmaps, initialized from the CPU spec which describes which instructions are implemented on the CPU. A couple of bits are defined which cover instructions (VSX and DFP) which are not currently implemented in TCG. So far, these are only used to handle the case of -cpu host because a KVM guest can use the instructions when the host CPU supports them. However, it's a mild layering violation to simply not include those bits in the CPU descriptions for those CPUs that do support them, just because we can't handle them in TCG. This patch corrects the situation, so that the instruction bits _are_ shown correctly in the cpu spec table, but are masked out from the cpu state in the non-KVM case. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- target-ppc/cpu.h | 26 ++++++++++++++++++++++++++ target-ppc/translate_init.c | 20 +++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index 3ef4eba..e84108c 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -1856,6 +1856,30 @@ enum { /* popcntw and popcntd instructions */ PPC_POPCNTWD = 0x8000000000000000ULL, +#define PPC_TCG_INSNS (PPC_INSNS_BASE | PPC_POWER | PPC_POWER2 \ + | PPC_POWER_RTC | PPC_POWER_BR | PPC_64B \ + | PPC_64BX | PPC_64H | PPC_WAIT | PPC_MFTB \ + | PPC_602_SPEC | PPC_ISEL | PPC_POPCNTB \ + | PPC_STRING | PPC_FLOAT | PPC_FLOAT_EXT \ + | PPC_FLOAT_FSQRT | PPC_FLOAT_FRES \ + | PPC_FLOAT_FRSQRTE | PPC_FLOAT_FRSQRTES \ + | PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX \ + | PPC_ALTIVEC | PPC_SPE | PPC_SPE_SINGLE \ + | PPC_SPE_DOUBLE | PPC_MEM_TLBIA \ + | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC \ + | PPC_MEM_SYNC | PPC_MEM_EIEIO \ + | PPC_CACHE | PPC_CACHE_ICBI \ + | PPC_CACHE_DCBZ | PPC_CACHE_DCBZT \ + | PPC_CACHE_DCBA | PPC_CACHE_LOCK \ + | PPC_EXTERN | PPC_SEGMENT | PPC_6xx_TLB \ + | PPC_74xx_TLB | PPC_40x_TLB | PPC_SEGMENT_64B \ + | PPC_SLBI | PPC_WRTEE | PPC_40x_EXCP \ + | PPC_405_MAC | PPC_440_SPEC | PPC_BOOKE \ + | PPC_MFAPIDI | PPC_TLBIVA | PPC_TLBIVAX \ + | PPC_4xx_COMMON | PPC_40x_ICBT | PPC_RFMCI \ + | PPC_RFDI | PPC_DCR | PPC_DCRX | PPC_DCRUX \ + | PPC_POPCNTWD) + /* extended type values */ /* BookE 2.06 PowerPC specification */ @@ -1864,6 +1888,8 @@ enum { PPC2_VSX = 0x0000000000000002ULL, /* Decimal Floating Point (DFP) */ PPC2_DFP = 0x0000000000000004ULL, + +#define PPC_TCG_INSNS2 (PPC2_BOOKE206) }; /*****************************************************************************/ diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 4dfd7f3..8a7233f 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -6519,9 +6519,7 @@ static void init_proc_970MP (CPUPPCState *env) PPC_64B | PPC_ALTIVEC | \ PPC_SEGMENT_64B | PPC_SLBI | \ PPC_POPCNTB | PPC_POPCNTWD) -/* FIXME: Should also have PPC2_VSX and PPC2_DFP, but we don't - * implement those in TCG yet */ -#define POWERPC_INSNS2_POWER7 (PPC_NONE) +#define POWERPC_INSNS2_POWER7 (PPC2_VSX | PPC2_DFP) #define POWERPC_MSRM_POWER7 (0x800000000204FF36ULL) #define POWERPC_MMU_POWER7 (POWERPC_MMU_2_06) #define POWERPC_EXCP_POWER7 (POWERPC_EXCP_POWER7) @@ -9848,6 +9846,22 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def) env->bus_model = def->bus_model; env->insns_flags = def->insns_flags; env->insns_flags2 = def->insns_flags2; + if (!kvm_enabled()) { + /* TCG doesn't (yet) emulate some groups of instructions that + * are implemented on some otherwise supported CPUs (e.g. VSX + * and decimal floating point instructions on POWER7). We + * remove unsupported instruction groups from the cpu state's + * instruction masks and hope the guest can cope. For at + * least the pseries machine, the unavailability of these + * instructions can be advertise to the guest via the device + * tree. + * + * FIXME: we should have a similar masking for CPU features + * not accessible under KVM, but so far, there aren't any of + * those. */ + env->insns_flags &= PPC_TCG_INSNS; + env->insns_flags2 &= PPC_TCG_INSNS2; + } env->flags = def->flags; env->bfd_mach = def->bfd_mach; env->check_pow = def->check_pow; -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (23 preceding siblings ...) 2011-10-31 4:12 ` [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate Alexander Graf @ 2011-10-31 4:12 ` Alexander Graf 2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl 25 siblings, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-10-31 4:12 UTC (permalink / raw) To: qemu-devel; +Cc: Blue Swirl, Alexey Kardashevskiy, qemu-ppc, David Gibson From: David Gibson <david@gibson.dropbear.id.au> This patch adds a PCI bus to the pseries machine. This instantiates the qemu generic PCI bus code, advertises a PCI host bridge in the guest's device tree and implements the RTAS methods specified by PAPR to access PCI config space. It also sets up the memory regions we need to provide windows into the PCI memory and IO space, and advertises those to the guest. However, because qemu can't yet emulate an IOMMU, which is mandatory on pseries, PCI devices which use DMA (i.e. most of them) will not work with this code alone. Still, this is enough to support the virtio_pci device (which probably _should_ use emulated PCI DMA, but is specced to use direct hypervisor access to guest physical memory instead). [agraf] remove typedef which could cause compile errors Signed-off-by: Alexey Kardashevskiy <aik@au1.ibm.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de> --- Makefile.target | 1 + hw/spapr.c | 36 ++++- hw/spapr.h | 2 + hw/spapr_pci.c | 508 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ hw/spapr_pci.h | 61 +++++++ 5 files changed, 604 insertions(+), 4 deletions(-) create mode 100644 hw/spapr_pci.c create mode 100644 hw/spapr_pci.h diff --git a/Makefile.target b/Makefile.target index fe5f6f7..2329df5 100644 --- a/Makefile.target +++ b/Makefile.target @@ -248,6 +248,7 @@ obj-ppc-y += ppc_newworld.o # IBM pSeries (sPAPR) obj-ppc-$(CONFIG_PSERIES) += spapr.o spapr_hcall.o spapr_rtas.o spapr_vio.o obj-ppc-$(CONFIG_PSERIES) += xics.o spapr_vty.o spapr_llan.o spapr_vscsi.o +obj-ppc-$(CONFIG_PSERIES) += spapr_pci.o device-hotplug.o pci-hotplug.o # PowerPC 4xx boards obj-ppc-y += ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o obj-ppc-y += ppc440.o ppc440_bamboo.o diff --git a/hw/spapr.c b/hw/spapr.c index 933af32..bdaa938 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -39,10 +39,12 @@ #include "hw/spapr.h" #include "hw/spapr_vio.h" +#include "hw/spapr_pci.h" #include "hw/xics.h" #include "kvm.h" #include "kvm_ppc.h" +#include "pci.h" #include "exec-memory.h" @@ -62,6 +64,11 @@ #define MAX_CPUS 256 #define XICS_IRQS 1024 +#define SPAPR_PCI_BUID 0x800000020000001ULL +#define SPAPR_PCI_MEM_WIN_ADDR (0x10000000000ULL + 0xA0000000) +#define SPAPR_PCI_MEM_WIN_SIZE 0x20000000 +#define SPAPR_PCI_IO_WIN_ADDR (0x10000000000ULL + 0x80000000) + #define PHANDLE_XICP 0x00001111 sPAPREnvironment *spapr; @@ -146,6 +153,14 @@ static void *spapr_create_fdt_skel(const char *cpu_model, &end_prop, sizeof(end_prop)))); _FDT((fdt_property_string(fdt, "qemu,boot-device", boot_device))); + /* + * Because we don't always invoke any firmware, we can't rely on + * that to do BAR allocation. Long term, we should probably do + * that ourselves, but for now, this setting (plus advertising the + * current BARs as 0) causes sufficiently recent kernels to to the + * BAR assignment themselves */ + _FDT((fdt_property_cell(fdt, "linux,pci-probe-only", 0))); + _FDT((fdt_end_node(fdt))); /* memory node(s) */ @@ -308,6 +323,7 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr, { int ret; void *fdt; + sPAPRPHBState *phb; fdt = g_malloc(FDT_MAX_SIZE); @@ -320,6 +336,15 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr, exit(1); } + QLIST_FOREACH(phb, &spapr->phbs, list) { + ret = spapr_populate_pci_devices(phb, PHANDLE_XICP, fdt); + } + + if (ret < 0) { + fprintf(stderr, "couldn't setup PCI devices in fdt\n"); + exit(1); + } + /* RTAS */ ret = spapr_rtas_device_tree_setup(fdt, rtas_addr, rtas_size); if (ret < 0) { @@ -478,6 +503,12 @@ static void ppc_spapr_init(ram_addr_t ram_size, } } + /* Set up PCI */ + spapr_create_phb(spapr, "pci", SPAPR_PCI_BUID, + SPAPR_PCI_MEM_WIN_ADDR, + SPAPR_PCI_MEM_WIN_SIZE, + SPAPR_PCI_IO_WIN_ADDR); + for (i = 0; i < nb_nics; i++) { NICInfo *nd = &nd_table[i]; @@ -488,10 +519,7 @@ static void ppc_spapr_init(ram_addr_t ram_size, if (strcmp(nd->model, "ibmveth") == 0) { spapr_vlan_create(spapr->vio_bus, 0x1000 + i, nd); } else { - fprintf(stderr, "pSeries (sPAPR) platform does not support " - "NIC model '%s' (only ibmveth is supported)\n", - nd->model); - exit(1); + pci_nic_init_nofail(&nd_table[i], nd->model, NULL); } } diff --git a/hw/spapr.h b/hw/spapr.h index 6657c33..df88f6a 100644 --- a/hw/spapr.h +++ b/hw/spapr.h @@ -4,10 +4,12 @@ #include "hw/xics.h" struct VIOsPAPRBus; +struct sPAPRPHBState; struct icp_state; typedef struct sPAPREnvironment { struct VIOsPAPRBus *vio_bus; + QLIST_HEAD(, sPAPRPHBState) phbs; struct icp_state *icp; target_phys_addr_t ram_limit; diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c new file mode 100644 index 0000000..2a5e637 --- /dev/null +++ b/hw/spapr_pci.c @@ -0,0 +1,508 @@ +/* + * QEMU sPAPR PCI host originated from Uninorth PCI host + * + * Copyright (c) 2011 Alexey Kardashevskiy, IBM Corporation. + * Copyright (C) 2011 David Gibson, IBM Corporation. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "hw.h" +#include "pci.h" +#include "pci_host.h" +#include "hw/spapr.h" +#include "hw/spapr_pci.h" +#include "exec-memory.h" +#include <libfdt.h> + +#include "hw/pci_internals.h" + +static const uint32_t bars[] = { + PCI_BASE_ADDRESS_0, PCI_BASE_ADDRESS_1, + PCI_BASE_ADDRESS_2, PCI_BASE_ADDRESS_3, + PCI_BASE_ADDRESS_4, PCI_BASE_ADDRESS_5 + /*, PCI_ROM_ADDRESS*/ +}; + +static PCIDevice *find_dev(sPAPREnvironment *spapr, + uint64_t buid, uint32_t config_addr) +{ + DeviceState *qdev; + int devfn = (config_addr >> 8) & 0xFF; + sPAPRPHBState *phb; + + QLIST_FOREACH(phb, &spapr->phbs, list) { + if (phb->buid != buid) { + continue; + } + + QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) { + PCIDevice *dev = (PCIDevice *)qdev; + if (dev->devfn == devfn) { + return dev; + } + } + } + + return NULL; +} + +static void rtas_ibm_read_pci_config(sPAPREnvironment *spapr, + uint32_t token, uint32_t nargs, + target_ulong args, + uint32_t nret, target_ulong rets) +{ + uint32_t val, size, addr; + uint64_t buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2); + PCIDevice *dev = find_dev(spapr, buid, rtas_ld(args, 0)); + + if (!dev) { + rtas_st(rets, 0, -1); + return; + } + size = rtas_ld(args, 3); + addr = rtas_ld(args, 0) & 0xFF; + val = pci_default_read_config(dev, addr, size); + rtas_st(rets, 0, 0); + rtas_st(rets, 1, val); +} + +static void rtas_read_pci_config(sPAPREnvironment *spapr, + uint32_t token, uint32_t nargs, + target_ulong args, + uint32_t nret, target_ulong rets) +{ + uint32_t val, size, addr; + PCIDevice *dev = find_dev(spapr, 0, rtas_ld(args, 0)); + + if (!dev) { + rtas_st(rets, 0, -1); + return; + } + size = rtas_ld(args, 1); + addr = rtas_ld(args, 0) & 0xFF; + val = pci_default_read_config(dev, addr, size); + rtas_st(rets, 0, 0); + rtas_st(rets, 1, val); +} + +static void rtas_ibm_write_pci_config(sPAPREnvironment *spapr, + uint32_t token, uint32_t nargs, + target_ulong args, + uint32_t nret, target_ulong rets) +{ + uint32_t val, size, addr; + uint64_t buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2); + PCIDevice *dev = find_dev(spapr, buid, rtas_ld(args, 0)); + + if (!dev) { + rtas_st(rets, 0, -1); + return; + } + val = rtas_ld(args, 4); + size = rtas_ld(args, 3); + addr = rtas_ld(args, 0) & 0xFF; + pci_default_write_config(dev, addr, val, size); + rtas_st(rets, 0, 0); +} + +static void rtas_write_pci_config(sPAPREnvironment *spapr, + uint32_t token, uint32_t nargs, + target_ulong args, + uint32_t nret, target_ulong rets) +{ + uint32_t val, size, addr; + PCIDevice *dev = find_dev(spapr, 0, rtas_ld(args, 0)); + + if (!dev) { + rtas_st(rets, 0, -1); + return; + } + val = rtas_ld(args, 2); + size = rtas_ld(args, 1); + addr = rtas_ld(args, 0) & 0xFF; + pci_default_write_config(dev, addr, val, size); + rtas_st(rets, 0, 0); +} + +static int pci_spapr_map_irq(PCIDevice *pci_dev, int irq_num) +{ + /* + * Here we need to convert pci_dev + irq_num to some unique value + * which is less than number of IRQs on the specific bus (now it + * is 16). At the moment irq_num == device_id (number of the + * slot?) + * FIXME: we should swizzle in fn and irq_num + */ + return (pci_dev->devfn >> 3) % SPAPR_PCI_NUM_LSI; +} + +static void pci_spapr_set_irq(void *opaque, int irq_num, int level) +{ + /* + * Here we use the number returned by pci_spapr_map_irq to find a + * corresponding qemu_irq. + */ + sPAPRPHBState *phb = opaque; + + qemu_set_irq(phb->lsi_table[irq_num].qirq, level); +} + +static int spapr_phb_init(SysBusDevice *s) +{ + sPAPRPHBState *phb = FROM_SYSBUS(sPAPRPHBState, s); + int i; + + /* Initialize the LSI table */ + for (i = 0; i < SPAPR_PCI_NUM_LSI; i++) { + qemu_irq qirq; + uint32_t num; + + qirq = spapr_allocate_irq(0, &num); + if (!qirq) { + return -1; + } + + phb->lsi_table[i].dt_irq = num; + phb->lsi_table[i].qirq = qirq; + } + + return 0; +} + +static int spapr_main_pci_host_init(PCIDevice *d) +{ + return 0; +} + +static PCIDeviceInfo spapr_main_pci_host_info = { + .qdev.name = "spapr-pci-host-bridge", + .qdev.size = sizeof(PCIDevice), + .init = spapr_main_pci_host_init, +}; + +static void spapr_register_devices(void) +{ + sysbus_register_dev("spapr-pci-host-bridge", sizeof(sPAPRPHBState), + spapr_phb_init); + pci_qdev_register(&spapr_main_pci_host_info); +} + +device_init(spapr_register_devices) + +static uint64_t spapr_io_read(void *opaque, target_phys_addr_t addr, + unsigned size) +{ + switch (size) { + case 1: + return cpu_inb(addr); + case 2: + return cpu_inw(addr); + case 4: + return cpu_inl(addr); + } + assert(0); +} + +static void spapr_io_write(void *opaque, target_phys_addr_t addr, + uint64_t data, unsigned size) +{ + switch (size) { + case 1: + cpu_outb(addr, data); + return; + case 2: + cpu_outw(addr, data); + return; + case 4: + cpu_outl(addr, data); + return; + } + assert(0); +} + +static MemoryRegionOps spapr_io_ops = { + .endianness = DEVICE_LITTLE_ENDIAN, + .read = spapr_io_read, + .write = spapr_io_write +}; + +void spapr_create_phb(sPAPREnvironment *spapr, + const char *busname, uint64_t buid, + uint64_t mem_win_addr, uint64_t mem_win_size, + uint64_t io_win_addr) +{ + DeviceState *dev; + SysBusDevice *s; + sPAPRPHBState *phb; + PCIBus *bus; + char namebuf[strlen(busname)+11]; + + dev = qdev_create(NULL, "spapr-pci-host-bridge"); + qdev_init_nofail(dev); + s = sysbus_from_qdev(dev); + phb = FROM_SYSBUS(sPAPRPHBState, s); + + phb->mem_win_addr = mem_win_addr; + + sprintf(namebuf, "%s-mem", busname); + memory_region_init(&phb->memspace, namebuf, INT64_MAX); + + sprintf(namebuf, "%s-memwindow", busname); + memory_region_init_alias(&phb->memwindow, namebuf, &phb->memspace, + SPAPR_PCI_MEM_WIN_BUS_OFFSET, mem_win_size); + memory_region_add_subregion(get_system_memory(), mem_win_addr, + &phb->memwindow); + + phb->io_win_addr = io_win_addr; + + /* On ppc, we only have MMIO no specific IO space from the CPU + * perspective. In theory we ought to be able to embed the PCI IO + * memory region direction in the system memory space. However, + * if any of the IO BAR subregions use the old_portio mechanism, + * that won't be processed properly unless accessed from the + * system io address space. This hack to bounce things via + * system_io works around the problem until all the users of + * old_portion are updated */ + sprintf(namebuf, "%s-io", busname); + memory_region_init(&phb->iospace, namebuf, SPAPR_PCI_IO_WIN_SIZE); + /* FIXME: fix to support multiple PHBs */ + memory_region_add_subregion(get_system_io(), 0, &phb->iospace); + + sprintf(namebuf, "%s-iowindow", busname); + memory_region_init_io(&phb->iowindow, &spapr_io_ops, phb, + namebuf, SPAPR_PCI_IO_WIN_SIZE); + memory_region_add_subregion(get_system_memory(), io_win_addr, + &phb->iowindow); + + phb->host_state.bus = bus = pci_register_bus(&phb->busdev.qdev, busname, + pci_spapr_set_irq, + pci_spapr_map_irq, + phb, + &phb->memspace, &phb->iospace, + PCI_DEVFN(0, 0), + SPAPR_PCI_NUM_LSI); + + spapr_rtas_register("read-pci-config", rtas_read_pci_config); + spapr_rtas_register("write-pci-config", rtas_write_pci_config); + spapr_rtas_register("ibm,read-pci-config", rtas_ibm_read_pci_config); + spapr_rtas_register("ibm,write-pci-config", rtas_ibm_write_pci_config); + + QLIST_INSERT_HEAD(&spapr->phbs, phb, list); + + /* pci_bus_set_mem_base(bus, mem_va_start - SPAPR_PCI_MEM_BAR_START); */ +} + +/* Macros to operate with address in OF binding to PCI */ +#define b_x(x, p, l) (((x) & ((1<<(l))-1)) << (p)) +#define b_n(x) b_x((x), 31, 1) /* 0 if relocatable */ +#define b_p(x) b_x((x), 30, 1) /* 1 if prefetchable */ +#define b_t(x) b_x((x), 29, 1) /* 1 if the address is aliased */ +#define b_ss(x) b_x((x), 24, 2) /* the space code */ +#define b_bbbbbbbb(x) b_x((x), 16, 8) /* bus number */ +#define b_ddddd(x) b_x((x), 11, 5) /* device number */ +#define b_fff(x) b_x((x), 8, 3) /* function number */ +#define b_rrrrrrrr(x) b_x((x), 0, 8) /* register number */ + +static uint32_t regtype_to_ss(uint8_t type) +{ + if (type & PCI_BASE_ADDRESS_MEM_TYPE_64) { + return 3; + } + if (type == PCI_BASE_ADDRESS_SPACE_IO) { + return 1; + } + return 2; +} + +int spapr_populate_pci_devices(sPAPRPHBState *phb, + uint32_t xics_phandle, + void *fdt) +{ + PCIBus *bus = phb->host_state.bus; + int bus_off, node_off = 0, devid, fn, i, n, devices; + DeviceState *qdev; + char nodename[256]; + struct { + uint32_t hi; + uint64_t addr; + uint64_t size; + } __attribute__((packed)) reg[PCI_NUM_REGIONS + 1], + assigned_addresses[PCI_NUM_REGIONS]; + uint32_t bus_range[] = { cpu_to_be32(0), cpu_to_be32(0xff) }; + struct { + uint32_t hi; + uint64_t child; + uint64_t parent; + uint64_t size; + } __attribute__((packed)) ranges[] = { + { + cpu_to_be32(b_ss(1)), cpu_to_be64(0), + cpu_to_be64(phb->io_win_addr), + cpu_to_be64(memory_region_size(&phb->iospace)), + }, + { + cpu_to_be32(b_ss(2)), cpu_to_be64(SPAPR_PCI_MEM_WIN_BUS_OFFSET), + cpu_to_be64(phb->mem_win_addr), + cpu_to_be64(memory_region_size(&phb->memwindow)), + }, + }; + uint64_t bus_reg[] = { cpu_to_be64(phb->buid), 0 }; + uint32_t interrupt_map_mask[] = { + cpu_to_be32(b_ddddd(-1)|b_fff(-1)), 0x0, 0x0, 0x0}; + uint32_t interrupt_map[bus->nirq][7]; + + /* Start populating the FDT */ + sprintf(nodename, "pci@%" PRIx64, phb->buid); + bus_off = fdt_add_subnode(fdt, 0, nodename); + if (bus_off < 0) { + return bus_off; + } + +#define _FDT(exp) \ + do { \ + int ret = (exp); \ + if (ret < 0) { \ + return ret; \ + } \ + } while (0) + + /* Write PHB properties */ + _FDT(fdt_setprop_string(fdt, bus_off, "device_type", "pci")); + _FDT(fdt_setprop_string(fdt, bus_off, "compatible", "IBM,Logical_PHB")); + _FDT(fdt_setprop_cell(fdt, bus_off, "#address-cells", 0x3)); + _FDT(fdt_setprop_cell(fdt, bus_off, "#size-cells", 0x2)); + _FDT(fdt_setprop_cell(fdt, bus_off, "#interrupt-cells", 0x1)); + _FDT(fdt_setprop(fdt, bus_off, "used-by-rtas", NULL, 0)); + _FDT(fdt_setprop(fdt, bus_off, "bus-range", &bus_range, sizeof(bus_range))); + _FDT(fdt_setprop(fdt, bus_off, "ranges", &ranges, sizeof(ranges))); + _FDT(fdt_setprop(fdt, bus_off, "reg", &bus_reg, sizeof(bus_reg))); + _FDT(fdt_setprop(fdt, bus_off, "interrupt-map-mask", + &interrupt_map_mask, sizeof(interrupt_map_mask))); + + /* Populate PCI devices and allocate IRQs */ + devices = 0; + QLIST_FOREACH(qdev, &bus->qbus.children, sibling) { + PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev); + int irq_index = pci_spapr_map_irq(dev, 0); + uint32_t *irqmap = interrupt_map[devices]; + uint8_t *config = dev->config; + + devid = dev->devfn >> 3; + fn = dev->devfn & 7; + + sprintf(nodename, "pci@%u,%u", devid, fn); + + /* Allocate interrupt from the map */ + if (devid > bus->nirq) { + printf("Unexpected behaviour in spapr_populate_pci_devices," + "wrong devid %u\n", devid); + exit(-1); + } + irqmap[0] = cpu_to_be32(b_ddddd(devid)|b_fff(fn)); + irqmap[1] = 0; + irqmap[2] = 0; + irqmap[3] = 0; + irqmap[4] = cpu_to_be32(xics_phandle); + irqmap[5] = cpu_to_be32(phb->lsi_table[irq_index].dt_irq); + irqmap[6] = cpu_to_be32(0x8); + + /* Add node to FDT */ + node_off = fdt_add_subnode(fdt, bus_off, nodename); + if (node_off < 0) { + return node_off; + } + + _FDT(fdt_setprop_cell(fdt, node_off, "vendor-id", + pci_get_word(&config[PCI_VENDOR_ID]))); + _FDT(fdt_setprop_cell(fdt, node_off, "device-id", + pci_get_word(&config[PCI_DEVICE_ID]))); + _FDT(fdt_setprop_cell(fdt, node_off, "revision-id", + pci_get_byte(&config[PCI_REVISION_ID]))); + _FDT(fdt_setprop_cell(fdt, node_off, "class-code", + pci_get_long(&config[PCI_CLASS_REVISION]) >> 8)); + _FDT(fdt_setprop_cell(fdt, node_off, "subsystem-id", + pci_get_word(&config[PCI_SUBSYSTEM_ID]))); + _FDT(fdt_setprop_cell(fdt, node_off, "subsystem-vendor-id", + pci_get_word(&config[PCI_SUBSYSTEM_VENDOR_ID]))); + + /* Config space region comes first */ + reg[0].hi = cpu_to_be32( + b_n(0) | + b_p(0) | + b_t(0) | + b_ss(0/*config*/) | + b_bbbbbbbb(0) | + b_ddddd(devid) | + b_fff(fn)); + reg[0].addr = 0; + reg[0].size = 0; + + n = 0; + for (i = 0; i < PCI_NUM_REGIONS; ++i) { + if (0 == dev->io_regions[i].size) { + continue; + } + + reg[n+1].hi = cpu_to_be32( + b_n(0) | + b_p(0) | + b_t(0) | + b_ss(regtype_to_ss(dev->io_regions[i].type)) | + b_bbbbbbbb(0) | + b_ddddd(devid) | + b_fff(fn) | + b_rrrrrrrr(bars[i])); + reg[n+1].addr = 0; + reg[n+1].size = cpu_to_be64(dev->io_regions[i].size); + + assigned_addresses[n].hi = cpu_to_be32( + b_n(1) | + b_p(0) | + b_t(0) | + b_ss(regtype_to_ss(dev->io_regions[i].type)) | + b_bbbbbbbb(0) | + b_ddddd(devid) | + b_fff(fn) | + b_rrrrrrrr(bars[i])); + + /* + * Writing zeroes to assigned_addresses causes the guest kernel to + * reassign BARs + */ + assigned_addresses[n].addr = cpu_to_be64(dev->io_regions[i].addr); + assigned_addresses[n].size = reg[n+1].size; + + ++n; + } + _FDT(fdt_setprop(fdt, node_off, "reg", reg, sizeof(reg[0])*(n+1))); + _FDT(fdt_setprop(fdt, node_off, "assigned-addresses", + assigned_addresses, + sizeof(assigned_addresses[0])*(n))); + _FDT(fdt_setprop_cell(fdt, node_off, "interrupts", + pci_get_byte(&config[PCI_INTERRUPT_PIN]))); + + ++devices; + } + + /* Write interrupt map */ + _FDT(fdt_setprop(fdt, bus_off, "interrupt-map", &interrupt_map, + devices * sizeof(interrupt_map[0]))); + + return 0; +} diff --git a/hw/spapr_pci.h b/hw/spapr_pci.h new file mode 100644 index 0000000..213340c --- /dev/null +++ b/hw/spapr_pci.h @@ -0,0 +1,61 @@ +/* + * QEMU SPAPR PCI BUS definitions + * + * Copyright (c) 2011 Alexey Kardashevskiy <aik@au1.ibm.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <http://www.gnu.org/licenses/>. + */ +#if !defined(__HW_SPAPR_H__) +#error Please include spapr.h before this file! +#endif + +#if !defined(__HW_SPAPR_PCI_H__) +#define __HW_SPAPR_PCI_H__ + +#include "hw/pci_host.h" +#include "hw/xics.h" + +#define SPAPR_PCI_NUM_LSI 16 + +typedef struct sPAPRPHBState { + SysBusDevice busdev; + PCIHostState host_state; + + uint64_t buid; + + MemoryRegion memspace, iospace; + target_phys_addr_t mem_win_addr, io_win_addr; + MemoryRegion memwindow, iowindow; + + struct { + uint32_t dt_irq; + qemu_irq qirq; + } lsi_table[SPAPR_PCI_NUM_LSI]; + + QLIST_ENTRY(sPAPRPHBState) list; +} sPAPRPHBState; + +#define SPAPR_PCI_MEM_WIN_BUS_OFFSET 0x80000000ULL +#define SPAPR_PCI_IO_WIN_SIZE 0x10000 + +void spapr_create_phb(sPAPREnvironment *spapr, + const char *busname, uint64_t buid, + uint64_t mem_win_addr, uint64_t mem_win_size, + uint64_t io_win_addr); + +int spapr_populate_pci_devices(sPAPRPHBState *phb, + uint32_t xics_phandle, + void *fdt); + +#endif /* __HW_SPAPR_PCI_H__ */ -- 1.6.0.2 ^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf ` (24 preceding siblings ...) 2011-10-31 4:12 ` [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI Alexander Graf @ 2011-11-01 21:05 ` Blue Swirl 2011-11-01 21:41 ` Anthony Liguori 25 siblings, 1 reply; 39+ messages in thread From: Blue Swirl @ 2011-11-01 21:05 UTC (permalink / raw) To: Alexander Graf; +Cc: qemu-ppc, qemu-devel Thanks, pulled and reverted libfdt patch. On Sun, Oct 30, 2011 at 20:22, Alexander Graf <agraf@suse.de> wrote: > Hi Blue, > > This is my current patch queue for ppc. Please pull. > > Alex > > > The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e: > Max Filippov (1): > MAINTAINERS: update wiki URL and machine names for target-xtensa > > are available in the git repository at: > > git://repo.or.cz/qemu/agraf.git ppc-next > > Alexander Graf (4): > PPC: Bump qemu-system-ppc to 64-bit physical address space > PPC: Disable non-440 CPUs for ppcemb target > PPC: Fail configure when libfdt is not available > KVM: PPC: Override host vmx/vsx/dfp only when information known > > David Gibson (15): > pseries: Support SMT systems for KVM Book3S-HV > pseries: Allow KVM Book3S-HV on PPC970 CPUS > pseries: Use Book3S-HV TCE acceleration capabilities > pseries: Update SLOF firmware image > ppc: Generalize the kvmppc_get_clockfreq() function > pseries: Add device tree properties for VMX/VSX and DFP under kvm > pseries: Update SLOF firmware image > ppc: Remove broken partial PVR matching > ppc: First cut implementation of -cpu host > ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 > pseries: Under kvm use guest cpu = host cpu by default > ppc: Avoid decrementer related kvm exits > pseries: Correct vmx/dfp handling in both KVM and TCG cases > ppc: Fix up usermode only builds > pseries: Allow writes to KVM accelerated TCE table > > Fabien Chouteau (1): > Set an invalid-bits mask for each SPE instructions > > Liu Yu-B13201 (2): > ppc/e500_pci: Fix code style > ppc/e500_pci: Fix an array overflow issue > > configure | 13 +- > hw/ppc.c | 6 + > hw/ppce500_pci.c | 82 ++++++-- > hw/spapr.c | 99 +++++++-- > hw/spapr_vio.c | 8 +- > hw/spapr_vio.h | 1 + > pc-bios/README | 2 +- > pc-bios/slof.bin | Bin 579072 -> 738744 bytes > roms/SLOF | 2 +- > target-ppc/cpu.h | 23 ++- > target-ppc/helper.c | 11 + > target-ppc/kvm.c | 197 ++++++++++++++++- > target-ppc/kvm_ppc.h | 50 +++++ > target-ppc/translate.c | 500 +++++++++++++++++++++++-------------------- > target-ppc/translate_init.c | 90 ++++---- > 15 files changed, 755 insertions(+), 329 deletions(-) > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl @ 2011-11-01 21:41 ` Anthony Liguori 2011-11-01 22:14 ` Alexander Graf 2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl 0 siblings, 2 replies; 39+ messages in thread From: Anthony Liguori @ 2011-11-01 21:41 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-ppc, Alexander Graf, qemu-devel On 11/01/2011 04:05 PM, Blue Swirl wrote: > Thanks, pulled and reverted libfdt patch. Er, this broke the build: CC ppc64-softmmu/spapr_pci.o /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’: /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has no member named ‘lh_first’ /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has no member named ‘le_next’ /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘spapr_populate_pci_devices’: /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ has no member named ‘lh_first’ /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has no member named ‘le_next’ make[1]: *** [spapr_pci.o] Error 1 make: *** [subdir-ppc64-softmmu] Error 2 This is from commit: commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8 Author: David Gibson <david@gibson.dropbear.id.au> Date: Sun Oct 30 17:16:46 2011 +0000 pseries: Add partial support for PCI And specifically: QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) { PCIDevice *dev = (PCIDevice *)qdev; if (dev->devfn == devfn) { return dev; } } QBus::children is a QTAILQ, not a QLIST. Was this code tested at all? Regards, Anthony Liguori > > On Sun, Oct 30, 2011 at 20:22, Alexander Graf<agraf@suse.de> wrote: >> Hi Blue, >> >> This is my current patch queue for ppc. Please pull. >> >> Alex >> >> >> The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e: >> Max Filippov (1): >> MAINTAINERS: update wiki URL and machine names for target-xtensa >> >> are available in the git repository at: >> >> git://repo.or.cz/qemu/agraf.git ppc-next >> >> Alexander Graf (4): >> PPC: Bump qemu-system-ppc to 64-bit physical address space >> PPC: Disable non-440 CPUs for ppcemb target >> PPC: Fail configure when libfdt is not available >> KVM: PPC: Override host vmx/vsx/dfp only when information known >> >> David Gibson (15): >> pseries: Support SMT systems for KVM Book3S-HV >> pseries: Allow KVM Book3S-HV on PPC970 CPUS >> pseries: Use Book3S-HV TCE acceleration capabilities >> pseries: Update SLOF firmware image >> ppc: Generalize the kvmppc_get_clockfreq() function >> pseries: Add device tree properties for VMX/VSX and DFP under kvm >> pseries: Update SLOF firmware image >> ppc: Remove broken partial PVR matching >> ppc: First cut implementation of -cpu host >> ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 >> pseries: Under kvm use guest cpu = host cpu by default >> ppc: Avoid decrementer related kvm exits >> pseries: Correct vmx/dfp handling in both KVM and TCG cases >> ppc: Fix up usermode only builds >> pseries: Allow writes to KVM accelerated TCE table >> >> Fabien Chouteau (1): >> Set an invalid-bits mask for each SPE instructions >> >> Liu Yu-B13201 (2): >> ppc/e500_pci: Fix code style >> ppc/e500_pci: Fix an array overflow issue >> >> configure | 13 +- >> hw/ppc.c | 6 + >> hw/ppce500_pci.c | 82 ++++++-- >> hw/spapr.c | 99 +++++++-- >> hw/spapr_vio.c | 8 +- >> hw/spapr_vio.h | 1 + >> pc-bios/README | 2 +- >> pc-bios/slof.bin | Bin 579072 -> 738744 bytes >> roms/SLOF | 2 +- >> target-ppc/cpu.h | 23 ++- >> target-ppc/helper.c | 11 + >> target-ppc/kvm.c | 197 ++++++++++++++++- >> target-ppc/kvm_ppc.h | 50 +++++ >> target-ppc/translate.c | 500 +++++++++++++++++++++++-------------------- >> target-ppc/translate_init.c | 90 ++++---- >> 15 files changed, 755 insertions(+), 329 deletions(-) >> > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 21:41 ` Anthony Liguori @ 2011-11-01 22:14 ` Alexander Graf 2011-11-01 22:16 ` Anthony Liguori 2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl 1 sibling, 1 reply; 39+ messages in thread From: Alexander Graf @ 2011-11-01 22:14 UTC (permalink / raw) To: Anthony Liguori; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 01.11.2011, at 14:41, Anthony Liguori <anthony@codemonkey.ws> wrote: > On 11/01/2011 04:05 PM, Blue Swirl wrote: >> Thanks, pulled and reverted libfdt patch. > > Er, this broke the build: > > CC ppc64-softmmu/spapr_pci.o > /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’: > /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has no member named ‘lh_first’ > /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has no member named ‘le_next’ > /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘spapr_populate_pci_devices’: > /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ has no member named ‘lh_first’ > /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has no member named ‘le_next’ > make[1]: *** [spapr_pci.o] Error 1 > make: *** [subdir-ppc64-softmmu] Error 2 > > This is from commit: > > commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8 > Author: David Gibson <david@gibson.dropbear.id.au> > Date: Sun Oct 30 17:16:46 2011 +0000 > > pseries: Add partial support for PCI > > And specifically: > > QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) { > PCIDevice *dev = (PCIDevice *)qdev; > if (dev->devfn == devfn) { > return dev; > } > } > > QBus::children is a QTAILQ, not a QLIST. > > Was this code tested at all? Uh, yeah. Compile and execution tested O_o. Alex ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 22:14 ` Alexander Graf @ 2011-11-01 22:16 ` Anthony Liguori 2011-11-01 22:28 ` Alexander Graf 0 siblings, 1 reply; 39+ messages in thread From: Anthony Liguori @ 2011-11-01 22:16 UTC (permalink / raw) To: Alexander Graf; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 11/01/2011 05:14 PM, Alexander Graf wrote: >> And specifically: >> >> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) { >> PCIDevice *dev = (PCIDevice *)qdev; >> if (dev->devfn == devfn) { >> return dev; >> } >> } >> >> QBus::children is a QTAILQ, not a QLIST. >> >> Was this code tested at all? > > Uh, yeah. Compile and execution tested O_o. Do you not have libfdt installed? Regards, Anthony Liguori > > Alex > > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 22:16 ` Anthony Liguori @ 2011-11-01 22:28 ` Alexander Graf 2011-11-01 22:32 ` Anthony Liguori 2011-11-02 0:12 ` [Qemu-devel] [Qemu-ppc] " David Gibson 0 siblings, 2 replies; 39+ messages in thread From: Alexander Graf @ 2011-11-01 22:28 UTC (permalink / raw) To: Anthony Liguori; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 01.11.2011, at 15:16, Anthony Liguori <anthony@codemonkey.ws> wrote: > On 11/01/2011 05:14 PM, Alexander Graf wrote: >>> And specifically: >>> >>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) { >>> PCIDevice *dev = (PCIDevice *)qdev; >>> if (dev->devfn == devfn) { >>> return dev; >>> } >>> } >>> >>> QBus::children is a QTAILQ, not a QLIST. >>> >>> Was this code tested at all? >> >> Uh, yeah. Compile and execution tested O_o. > > Do you not have libfdt installed? I have libfdt installed on all boxes. I also verified that I could see a PCI device in the guest, so the code worked. Maybe the list type was changed between the pullreq and now? Alex > > Regards, > > Anthony Liguori > >> >> Alex >> >> > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 22:28 ` Alexander Graf @ 2011-11-01 22:32 ` Anthony Liguori 2011-11-02 0:12 ` [Qemu-devel] [Qemu-ppc] " David Gibson 1 sibling, 0 replies; 39+ messages in thread From: Anthony Liguori @ 2011-11-01 22:32 UTC (permalink / raw) To: Alexander Graf; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 11/01/2011 05:28 PM, Alexander Graf wrote: > > On 01.11.2011, at 15:16, Anthony Liguori<anthony@codemonkey.ws> wrote: > >> On 11/01/2011 05:14 PM, Alexander Graf wrote: >>>> And specifically: >>>> >>>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) { >>>> PCIDevice *dev = (PCIDevice *)qdev; >>>> if (dev->devfn == devfn) { >>>> return dev; >>>> } >>>> } >>>> >>>> QBus::children is a QTAILQ, not a QLIST. >>>> >>>> Was this code tested at all? >>> >>> Uh, yeah. Compile and execution tested O_o. >> >> Do you not have libfdt installed? > > I have libfdt installed on all boxes. I also verified that I could see a PCI device in the guest, so the code worked. > > Maybe the list type was changed between the pullreq and now? Yes. The patch that did it was old but only recently got into the tree. Regards, Anthony Liguori > > Alex > >> >> Regards, >> >> Anthony Liguori >> >>> >>> Alex >>> >>> >> > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 22:28 ` Alexander Graf 2011-11-01 22:32 ` Anthony Liguori @ 2011-11-02 0:12 ` David Gibson 1 sibling, 0 replies; 39+ messages in thread From: David Gibson @ 2011-11-02 0:12 UTC (permalink / raw) To: Alexander Graf; +Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org On Tue, Nov 01, 2011 at 03:28:05PM -0700, Alexander Graf wrote: > > On 01.11.2011, at 15:16, Anthony Liguori <anthony@codemonkey.ws> wrote: > > > On 11/01/2011 05:14 PM, Alexander Graf wrote: > >>> And specifically: > >>> > >>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) { > >>> PCIDevice *dev = (PCIDevice *)qdev; > >>> if (dev->devfn == devfn) { > >>> return dev; > >>> } > >>> } > >>> > >>> QBus::children is a QTAILQ, not a QLIST. > >>> > >>> Was this code tested at all? > >> > >> Uh, yeah. Compile and execution tested O_o. > > > > Do you not have libfdt installed? > > I have libfdt installed on all boxes. I also verified that I could > see a PCI device in the guest, so the code worked. > > Maybe the list type was changed between the pullreq and now? It did. I actually found this one yesterday when I rebased agraf's series, but didn't get around to sending the fix out. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-01 21:41 ` Anthony Liguori 2011-11-01 22:14 ` Alexander Graf @ 2011-11-02 19:59 ` Blue Swirl 2011-11-02 20:11 ` Anthony Liguori 2011-11-02 20:38 ` Alexander Graf 1 sibling, 2 replies; 39+ messages in thread From: Blue Swirl @ 2011-11-02 19:59 UTC (permalink / raw) To: Anthony Liguori; +Cc: qemu-ppc, Alexander Graf, qemu-devel On Tue, Nov 1, 2011 at 21:41, Anthony Liguori <anthony@codemonkey.ws> wrote: > On 11/01/2011 04:05 PM, Blue Swirl wrote: >> >> Thanks, pulled and reverted libfdt patch. > > Er, this broke the build: > > CC ppc64-softmmu/spapr_pci.o > /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’: > /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has > no member named ‘lh_first’ > /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has > no member named ‘le_next’ > /home/anthony/git/qemu/hw/spapr_pci.c: In function > ‘spapr_populate_pci_devices’: > /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ > has no member named ‘lh_first’ > /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has > no member named ‘le_next’ > make[1]: *** [spapr_pci.o] Error 1 > make: *** [subdir-ppc64-softmmu] Error 2 > > This is from commit: > > commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8 > Author: David Gibson <david@gibson.dropbear.id.au> > Date: Sun Oct 30 17:16:46 2011 +0000 > > pseries: Add partial support for PCI > > And specifically: > > QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) { > PCIDevice *dev = (PCIDevice *)qdev; > if (dev->devfn == devfn) { > return dev; > } > } > > QBus::children is a QTAILQ, not a QLIST. > > Was this code tested at all? I built it and ran a quick test for PPC. 7f7623662781fa152c5aa39fd63a2e8766516a2c still builds fine here. Though I don't have libfdt and no test for pseries. > Regards, > > Anthony Liguori > >> >> On Sun, Oct 30, 2011 at 20:22, Alexander Graf<agraf@suse.de> wrote: >>> >>> Hi Blue, >>> >>> This is my current patch queue for ppc. Please pull. >>> >>> Alex >>> >>> >>> The following changes since commit >>> 375847a6c0330e3de0fd1589eeb5a364692b791e: >>> Max Filippov (1): >>> MAINTAINERS: update wiki URL and machine names for target-xtensa >>> >>> are available in the git repository at: >>> >>> git://repo.or.cz/qemu/agraf.git ppc-next >>> >>> Alexander Graf (4): >>> PPC: Bump qemu-system-ppc to 64-bit physical address space >>> PPC: Disable non-440 CPUs for ppcemb target >>> PPC: Fail configure when libfdt is not available >>> KVM: PPC: Override host vmx/vsx/dfp only when information known >>> >>> David Gibson (15): >>> pseries: Support SMT systems for KVM Book3S-HV >>> pseries: Allow KVM Book3S-HV on PPC970 CPUS >>> pseries: Use Book3S-HV TCE acceleration capabilities >>> pseries: Update SLOF firmware image >>> ppc: Generalize the kvmppc_get_clockfreq() function >>> pseries: Add device tree properties for VMX/VSX and DFP under kvm >>> pseries: Update SLOF firmware image >>> ppc: Remove broken partial PVR matching >>> ppc: First cut implementation of -cpu host >>> ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 >>> pseries: Under kvm use guest cpu = host cpu by default >>> ppc: Avoid decrementer related kvm exits >>> pseries: Correct vmx/dfp handling in both KVM and TCG cases >>> ppc: Fix up usermode only builds >>> pseries: Allow writes to KVM accelerated TCE table >>> >>> Fabien Chouteau (1): >>> Set an invalid-bits mask for each SPE instructions >>> >>> Liu Yu-B13201 (2): >>> ppc/e500_pci: Fix code style >>> ppc/e500_pci: Fix an array overflow issue >>> >>> configure | 13 +- >>> hw/ppc.c | 6 + >>> hw/ppce500_pci.c | 82 ++++++-- >>> hw/spapr.c | 99 +++++++-- >>> hw/spapr_vio.c | 8 +- >>> hw/spapr_vio.h | 1 + >>> pc-bios/README | 2 +- >>> pc-bios/slof.bin | Bin 579072 -> 738744 bytes >>> roms/SLOF | 2 +- >>> target-ppc/cpu.h | 23 ++- >>> target-ppc/helper.c | 11 + >>> target-ppc/kvm.c | 197 ++++++++++++++++- >>> target-ppc/kvm_ppc.h | 50 +++++ >>> target-ppc/translate.c | 500 >>> +++++++++++++++++++++++-------------------- >>> target-ppc/translate_init.c | 90 ++++---- >>> 15 files changed, 755 insertions(+), 329 deletions(-) >>> >> > > ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl @ 2011-11-02 20:11 ` Anthony Liguori 2011-11-02 20:38 ` Alexander Graf 1 sibling, 0 replies; 39+ messages in thread From: Anthony Liguori @ 2011-11-02 20:11 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-ppc, Alexander Graf, qemu-devel On 11/02/2011 02:59 PM, Blue Swirl wrote: > On Tue, Nov 1, 2011 at 21:41, Anthony Liguori<anthony@codemonkey.ws> wrote: >> On 11/01/2011 04:05 PM, Blue Swirl wrote: >>> >>> Thanks, pulled and reverted libfdt patch. >> >> Er, this broke the build: >> >> CC ppc64-softmmu/spapr_pci.o >> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’: >> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has >> no member named ‘lh_first’ >> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct<anonymous>’ has >> no member named ‘le_next’ >> /home/anthony/git/qemu/hw/spapr_pci.c: In function >> ‘spapr_populate_pci_devices’: >> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ >> has no member named ‘lh_first’ >> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct<anonymous>’ has >> no member named ‘le_next’ >> make[1]: *** [spapr_pci.o] Error 1 >> make: *** [subdir-ppc64-softmmu] Error 2 >> >> This is from commit: >> >> commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8 >> Author: David Gibson<david@gibson.dropbear.id.au> >> Date: Sun Oct 30 17:16:46 2011 +0000 >> >> pseries: Add partial support for PCI >> >> And specifically: >> >> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) { >> PCIDevice *dev = (PCIDevice *)qdev; >> if (dev->devfn == devfn) { >> return dev; >> } >> } >> >> QBus::children is a QTAILQ, not a QLIST. >> >> Was this code tested at all? > > I built it and ran a quick test for PPC. > 7f7623662781fa152c5aa39fd63a2e8766516a2c still builds fine here. > Though I don't have libfdt and no test for pseries. Yeah, libfdt isn't packaged widely still so it's understandable. We run into this a lot. Pulling it in as a submodule is probably a good idea. Regards, Anthony Liguori ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl 2011-11-02 20:11 ` Anthony Liguori @ 2011-11-02 20:38 ` Alexander Graf 1 sibling, 0 replies; 39+ messages in thread From: Alexander Graf @ 2011-11-02 20:38 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-ppc, qemu-devel Blue Swirl wrote: > On Tue, Nov 1, 2011 at 21:41, Anthony Liguori <anthony@codemonkey.ws> wrote: > >> On 11/01/2011 04:05 PM, Blue Swirl wrote: >> >>> Thanks, pulled and reverted libfdt patch. >>> >> Er, this broke the build: >> >> CC ppc64-softmmu/spapr_pci.o >> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’: >> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has >> no member named ‘lh_first’ >> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has >> no member named ‘le_next’ >> /home/anthony/git/qemu/hw/spapr_pci.c: In function >> ‘spapr_populate_pci_devices’: >> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ >> has no member named ‘lh_first’ >> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has >> no member named ‘le_next’ >> make[1]: *** [spapr_pci.o] Error 1 >> make: *** [subdir-ppc64-softmmu] Error 2 >> >> This is from commit: >> >> commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8 >> Author: David Gibson <david@gibson.dropbear.id.au> >> Date: Sun Oct 30 17:16:46 2011 +0000 >> >> pseries: Add partial support for PCI >> >> And specifically: >> >> QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) { >> PCIDevice *dev = (PCIDevice *)qdev; >> if (dev->devfn == devfn) { >> return dev; >> } >> } >> >> QBus::children is a QTAILQ, not a QLIST. >> >> Was this code tested at all? >> > > I built it and ran a quick test for PPC. > 7f7623662781fa152c5aa39fd63a2e8766516a2c still builds fine here. > Though I don't have libfdt and no test for pseries. > Testing is easy. You can either run it without -kernel which should boot up SLOF. Or you find a random ppc64 kernel and boot it with -kernel :). Anthony did fix the problem immediately after though. It was basically a merge conflict. Alex ^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2011-11-02 20:38 UTC | newest] Thread overview: 39+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions Alexander Graf 2011-10-30 20:22 ` [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf 2011-11-01 19:28 ` Blue Swirl 2011-11-01 20:42 ` Alexander Graf 2011-11-01 23:59 ` [Qemu-devel] [Qemu-ppc] " David Gibson 2011-10-30 20:23 ` [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known Alexander Graf 2011-10-30 20:23 ` [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table Alexander Graf 2011-10-31 4:03 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf 2011-10-31 4:12 ` [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate Alexander Graf 2011-10-31 4:12 ` [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI Alexander Graf 2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl 2011-11-01 21:41 ` Anthony Liguori 2011-11-01 22:14 ` Alexander Graf 2011-11-01 22:16 ` Anthony Liguori 2011-11-01 22:28 ` Alexander Graf 2011-11-01 22:32 ` Anthony Liguori 2011-11-02 0:12 ` [Qemu-devel] [Qemu-ppc] " David Gibson 2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl 2011-11-02 20:11 ` Anthony Liguori 2011-11-02 20:38 ` Alexander Graf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).