:p
atchew
Login
The following changes since commit 76b56fdfc9fa43ec6e5986aee33f108c6c6a511e: Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging (2021-12-14 12:46:18 -0800) are available in the Git repository at: https://github.com/legoater/qemu/ tags/pull-ppc-20211215 for you to fetch changes up to cdf906d7ea79afb3283b57e3cf1b89f1334f7f2b: ppc/pnv: Use QOM hierarchy to scan PEC PHB4 devices (2021-12-15 08:20:37 +0100) ---------------------------------------------------------------- ppc 7.0 queue: * General cleanup for Mac machines (Peter) * Fixes for FPU exceptions (Lucas) * Support for new ISA31 instructions (Matheus) * Fixes for ivshmem (Daniel) * Cleanups for PowerNV PHB (Christophe and Cedric) * Updates of PowerNV and pSeries documentation (Leonardo and Daniel) * Fixes for PowerNV (Daniel) * Large cleanup of FPU implementation (Richard) * Removal of SoftTLBs support for PPC74x CPUs (Fabiano) * Fixes for exception models in MPCx and 60x CPUs (Fabiano) * Removal of 401/403 CPUs (Cedric) * Deprecation of taihu machine (Thomas) * Large rework of PPC405 machine (Cedric) * Fixes for VSX instructions (Victor and Matheus) * Fix for e6500 CPU (Fabiano) * Initial support for PMU (Daniel) ---------------------------------------------------------------- Alexey Kardashevskiy (1): pseries: Update SLOF firmware image Christophe Lombard (1): pci-host: Allow extended config space access for PowerNV PHB4 model Cédric Le Goater (28): Merge tag 'qemu-slof-20211112' of github.com:aik/qemu into ppc-next target/ppc: remove 401/403 CPUs ppc/ppc405: Change kernel load address ppc: Add trace-events for DCR accesses ppc/ppc405: Convert printfs to trace-events ppc/ppc405: Drop flag parameter in ppc405_set_bootinfo() ppc/ppc405: Change ppc405ep_init() return value ppc/ppc405: Add some address space definitions ppc/ppc405: Remove flash support ppc/ppc405: Rework FW load ppc/ppc405: Introduce ppc405_set_default_bootinfo() ppc/ppc405: Fix boot from kernel ppc/ppc405: Change default PLL values at reset ppc/ppc405: Fix bi_pci_enetaddr2 field in U-Boot board information ppc/ppc405: Add update of bi_procfreq field ppc/pnv: Introduce a "chip" property under PHB3 ppc/pnv: Use the chip class to check the index of PHB3 devices ppc/pnv: Drop the "num-phbs" property ppc/pnv: Move mapping of the PHB3 CQ regions under pnv_pbcq_realize() ppc/pnv: Use QOM hierarchy to scan PHB3 devices ppc/pnv: Introduce a num_pecs class attribute for PHB4 PEC devices ppc/pnv: Introduce version and device_id class atributes for PHB4 devices ppc/pnv: Introduce a "chip" property under the PHB4 model ppc/pnv: Introduce a num_stack class attribute ppc/pnv: Compute the PHB index from the PHB4 PEC model ppc/pnv: Remove "system-memory" property from PHB4 PEC ppc/pnv: Move realize of PEC stacks under the PEC model ppc/pnv: Use QOM hierarchy to scan PEC PHB4 devices Daniel Henrique Barboza (13): ivshmem.c: change endianness to LITTLE_ENDIAN ivshmem-test.c: enable test_ivshmem_server for ppc64 arch ppc/pnv.c: add a friendly warning when accel=kvm is used docs/system/ppc/powernv.rst: document KVM support status ppc/pnv.c: fix "system-id" FDT when -uuid is set target/ppc: introduce PMUEventType and PMU overflow timers target/ppc: PMU basic cycle count for pseries TCG target/ppc: PMU: update counters on PMCs r/w target/ppc: PMU: update counters on MMCR1 write target/ppc: enable PMU counter overflow with cycle events target/ppc: enable PMU instruction count target/ppc/power8-pmu.c: add PM_RUN_INST_CMPL (0xFA) event PPC64/TCG: Implement 'rfebb' instruction Fabiano Rosas (8): target/ppc: Disable software TLB for the 7450 family target/ppc: Disable unused facilities in the e600 CPU target/ppc: Remove the software TLB model of 7450 CPUs target/ppc: Fix MPCxxx FPU interrupt address target/ppc: Remove 603e exception model target/ppc: Set 601v exception model id target/ppc: Fix e6500 boot Revert "target/ppc: Move SPR_DSISR setting to powerpc_excp" Leonardo Garcia (5): docs: Minor updates on the powernv documentation. docs: Introducing pseries documentation. docs: rSTify ppc-spapr-hcalls.txt docs: Rename ppc-spapr-hcalls.txt to ppc-spapr-hcalls.rst. Link new ppc-spapr-hcalls.rst file to pseries.rst. Lucas Mateus Castro (alqotel) (3): target/ppc: Fixed call to deferred exception test/tcg/ppc64le: test mtfsf target/ppc: ppc_store_fpscr doesn't update bits 0 to 28 and 52 Matheus Ferst (6): target/ppc: Implement Vector Expand Mask target/ppc: Implement Vector Extract Mask target/ppc: Implement Vector Mask Move insns target/ppc: fix xscvqpdp register access target/ppc: move xscvqpdp to decodetree target/ppc: do not silence SNaN in xscvspdpn Peter Maydell (1): hw/ppc/mac.h: Remove MAX_CPUS macro Richard Henderson (34): softfloat: Extend float_exception_flags to 16 bits softfloat: Add flag specific to Inf - Inf softfloat: Add flag specific to Inf * 0 softfloat: Add flags specific to Inf / Inf and 0 / 0 softfloat: Add flag specific to sqrt(-x) softfloat: Add flag specific to convert non-nan to int softfloat: Add flag specific to signaling nans target/ppc: Update float_invalid_op_addsub for new flags target/ppc: Update float_invalid_op_mul for new flags target/ppc: Update float_invalid_op_div for new flags target/ppc: Move float_check_status from FPU_FCTI to translate target/ppc: Update float_invalid_cvt for new flags target/ppc: Fix VXCVI return value target/ppc: Remove inline from do_fri target/ppc: Use FloatRoundMode in do_fri target/ppc: Tidy inexact handling in do_fri target/ppc: Clean up do_fri target/ppc: Update fmadd for new flags target/ppc: Split out do_fmadd target/ppc: Do not call do_float_check_status from do_fmadd target/ppc: Split out do_frsp target/ppc: Update do_frsp for new flags target/ppc: Use helper_todouble in do_frsp target/ppc: Update sqrt for new flags target/ppc: Update xsrqpi and xsrqpxp to new flags target/ppc: Update fre to new flags softfloat: Add float64r32 arithmetic routines target/ppc: Add helpers for fmadds et al target/ppc: Add helper for fsqrts target/ppc: Add helpers for fadds, fsubs, fdivs target/ppc: Add helper for fmuls target/ppc: Add helper for frsqrtes target/ppc: Update fres to new flags and float64r32 target/ppc: Use helper_todouble/tosingle in helper_xststdcsp Thomas Huth (1): ppc: Mark the 'taihu' machine as deprecated Victor Colombo (2): target/ppc: Fix xs{max, min}[cj]dp to use VSX registers target/ppc: Move xs{max,min}[cj]dp to decodetree docs/about/deprecated.rst | 9 + docs/specs/ppc-spapr-hcalls.rst | 100 +++++ docs/specs/ppc-spapr-hcalls.txt | 78 ---- docs/system/ppc/powernv.rst | 68 ++-- docs/system/ppc/pseries.rst | 226 +++++++++++ hw/ppc/mac.h | 3 - hw/ppc/ppc405.h | 14 +- include/fpu/softfloat-types.h | 23 +- include/fpu/softfloat.h | 14 +- include/hw/pci-host/pnv_phb3.h | 3 + include/hw/pci-host/pnv_phb4.h | 5 + include/hw/ppc/pnv.h | 2 + target/ppc/cpu-models.h | 19 - target/ppc/cpu-qom.h | 12 +- target/ppc/cpu.h | 63 ++- target/ppc/helper.h | 29 +- target/ppc/power8-pmu.h | 26 ++ target/ppc/spr_tcg.h | 5 + target/ppc/insn32.decode | 54 ++- fpu/softfloat.c | 114 +++++- hw/misc/ivshmem.c | 2 +- hw/pci-host/pnv_phb3.c | 3 +- hw/pci-host/pnv_phb3_pbcq.c | 11 + hw/pci-host/pnv_phb4.c | 1 + hw/pci-host/pnv_phb4_pec.c | 75 +++- hw/ppc/mac_newworld.c | 3 +- hw/ppc/mac_oldworld.c | 3 +- hw/ppc/pnv.c | 177 +++++---- hw/ppc/ppc.c | 2 + hw/ppc/ppc405_boards.c | 245 ++++++------ hw/ppc/ppc405_uc.c | 225 +++++------ hw/ppc/spapr_cpu_core.c | 1 + target/ppc/cpu-models.c | 34 -- target/ppc/cpu.c | 2 +- target/ppc/cpu_init.c | 658 +++----------------------------- target/ppc/excp_helper.c | 95 +++-- target/ppc/fpu_helper.c | 598 ++++++++++++++++------------- target/ppc/helper_regs.c | 7 + target/ppc/mmu_common.c | 60 +-- target/ppc/mmu_helper.c | 32 -- target/ppc/power8-pmu.c | 350 +++++++++++++++++ target/ppc/translate.c | 104 +++-- tests/qtest/ivshmem-test.c | 5 +- tests/tcg/ppc64le/mtfsf.c | 61 +++ tests/tcg/ppc64le/non_signalling_xscv.c | 36 ++ fpu/softfloat-parts.c.inc | 57 +-- fpu/softfloat-specialize.c.inc | 12 +- target/ppc/power8-pmu-regs.c.inc | 69 +++- target/ppc/translate/branch-impl.c.inc | 33 ++ target/ppc/translate/fp-impl.c.inc | 53 +-- target/ppc/translate/vmx-impl.c.inc | 231 +++++++++++ target/ppc/translate/vsx-impl.c.inc | 55 ++- target/ppc/translate/vsx-ops.c.inc | 5 - hw/ppc/trace-events | 23 ++ pc-bios/README | 2 +- pc-bios/slof.bin | Bin 991744 -> 991920 bytes roms/SLOF | 2 +- target/ppc/meson.build | 1 + tests/tcg/ppc64/Makefile.target | 5 +- tests/tcg/ppc64le/Makefile.target | 5 +- 60 files changed, 2555 insertions(+), 1655 deletions(-) create mode 100644 docs/specs/ppc-spapr-hcalls.rst delete mode 100644 docs/specs/ppc-spapr-hcalls.txt create mode 100644 target/ppc/power8-pmu.h create mode 100644 target/ppc/power8-pmu.c create mode 100644 tests/tcg/ppc64le/mtfsf.c create mode 100644 tests/tcg/ppc64le/non_signalling_xscv.c create mode 100644 target/ppc/translate/branch-impl.c.inc
From: Alexey Kardashevskiy <aik@ozlabs.ru> This has really just one fix from Stefan, the rest is housekeeping. The full changelog is: Alexey Kardashevskiy (3): Revert "make: Define default rule for .c when V=1 or V=2" js2x: Fix compile and cleanup version: update to 20211112 Stefan Berger (1): tcgbios: Disable platform hierarchy in case of failure Thomas Huth (8): Mention the CR vs. LF problem in the documentation slof/fs/accept: Replace TABs with spaces Fix the URL to the Linux kernel coding style lib/libc/README.txt: Fix "cannel" typo travis.yml: Fix keywords travis.yml: Update to Focal Fossa travis.yml: Compile-test the qemu build Silence some trivial compiler warning in the js2x code Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- pc-bios/README | 2 +- pc-bios/slof.bin | Bin 991744 -> 991920 bytes roms/SLOF | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/README b/pc-bios/README index XXXXXXX..XXXXXXX 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -XXX,XX +XXX,XX @@ - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware implementation for certain IBM POWER hardware. The sources are at https://github.com/aik/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20210711. + built from git tag qemu-slof-20211112. - VOF (Virtual Open Firmware) is a minimalistic firmware to work with -machine pseries,x-vof=on. When enabled, the firmware acts as a slim shim and diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin index XXXXXXX..XXXXXXX 100644 GIT binary patch delta 125061 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⋘K9^I&EavM$MKDKka>A5Ec-OpVBJ&W1A{ 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 BLCgRE delta 124126 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 F{C~^ZQZ)bo diff --git a/roms/SLOF b/roms/SLOF index XXXXXXX..XXXXXXX 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit dd0dcaa1c1085c159ddab709c7f274b3917be8bd +Subproject commit a6906b024c6cca5a86496f51eb4bfee3a0c36148 -- 2.31.1
From: Peter Maydell <peter.maydell@linaro.org> The mac.h header defines a MAX_CPUS macro. This is confusingly named, because it suggests it's a generic setting, but in fact it's used by only the g3beige and mac99 machines. It's also using a single macro for two values which aren't inherently the same -- if one of these two machines was updated to support SMP configurations then it would want a different max_cpus value to the other. Since the macro is used in only two places, just expand it out and get rid of it. If hypothetical future work to support SMP in these boards needs a compile-time-known limit on the number of CPUs, we can give it a suitable name at that point. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20211105184216.120972-1-peter.maydell@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/ppc/mac.h | 3 --- hw/ppc/mac_newworld.c | 3 ++- hw/ppc/mac_oldworld.c | 3 ++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h index XXXXXXX..XXXXXXX 100644 --- a/hw/ppc/mac.h +++ b/hw/ppc/mac.h @@ -XXX,XX +XXX,XX @@ #include "hw/pci-host/uninorth.h" #include "qom/object.h" -/* SMP is not enabled, for now */ -#define MAX_CPUS 1 - #define NVRAM_SIZE 0x2000 #define PROM_FILENAME "openbios-ppc" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index XXXXXXX..XXXXXXX 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -XXX,XX +XXX,XX @@ static void core99_machine_class_init(ObjectClass *oc, void *data) mc->desc = "Mac99 based PowerMAC"; mc->init = ppc_core99_init; mc->block_default_type = IF_IDE; - mc->max_cpus = MAX_CPUS; + /* SMP is not supported currently */ + mc->max_cpus = 1; mc->default_boot_order = "cd"; mc->default_display = "std"; mc->kvm_type = core99_kvm_type; diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index XXXXXXX..XXXXXXX 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -XXX,XX +XXX,XX @@ static void heathrow_class_init(ObjectClass *oc, void *data) mc->desc = "Heathrow based PowerMAC"; mc->init = ppc_heathrow_init; mc->block_default_type = IF_IDE; - mc->max_cpus = MAX_CPUS; + /* SMP is not supported currently */ + mc->max_cpus = 1; #ifndef TARGET_PPC64 mc->is_default = true; #endif -- 2.31.1
From: "Lucas Mateus Castro (alqotel)" <lucas.araujo@eldorado.org.br> mtfsf, mtfsfi and mtfsb1 instructions call helper_float_check_status after updating the value of FPSCR, but helper_float_check_status checks fp_status and fp_status isn't updated based on FPSCR and since the value of fp_status is reset earlier in the instruction, it's always 0. Because of this helper_float_check_status would change the FI bit to 0 as this bit checks if the last operation was inexact and float_flag_inexact is always 0. These instructions also don't throw exceptions correctly since helper_float_check_status throw exceptions based on fp_status. This commit created a new helper, helper_fpscr_check_status that checks FPSCR value instead of fp_status and checks for a larger variety of exceptions than do_float_check_status. Since fp_status isn't used, gen_reset_fpstatus() was removed. The hardware used to compare QEMU's behavior to was a Power9. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Message-Id: <20211201163808.440385-2-lucas.araujo@eldorado.org.br> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/helper.h | 1 + target/ppc/fpu_helper.c | 48 ++++++++++++++++++++++++++++++ target/ppc/translate/fp-impl.c.inc | 9 ++---- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -XXX,XX +XXX,XX @@ DEF_HELPER_FLAGS_1(cntlzw32, TCG_CALL_NO_RWG_SE, i32, i32) DEF_HELPER_FLAGS_2(brinc, TCG_CALL_NO_RWG_SE, tl, tl, tl) DEF_HELPER_1(float_check_status, void, env) +DEF_HELPER_1(fpscr_check_status, void, env) DEF_HELPER_1(reset_fpstatus, void, env) DEF_HELPER_2(compute_fprf_float64, void, env, i64) DEF_HELPER_3(store_fpscr, void, env, i64, i32) diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -XXX,XX +XXX,XX @@ void helper_store_fpscr(CPUPPCState *env, uint64_t val, uint32_t nibbles) ppc_store_fpscr(env, val); } +void helper_fpscr_check_status(CPUPPCState *env) +{ + CPUState *cs = env_cpu(env); + target_ulong fpscr = env->fpscr; + int error = 0; + + if ((fpscr & FP_OX) && (fpscr & FP_OE)) { + error = POWERPC_EXCP_FP_OX; + } else if ((fpscr & FP_UX) && (fpscr & FP_UE)) { + error = POWERPC_EXCP_FP_UX; + } else if ((fpscr & FP_XX) && (fpscr & FP_XE)) { + error = POWERPC_EXCP_FP_XX; + } else if ((fpscr & FP_ZX) && (fpscr & FP_ZE)) { + error = POWERPC_EXCP_FP_ZX; + } else if (fpscr & FP_VE) { + if (fpscr & FP_VXSOFT) { + error = POWERPC_EXCP_FP_VXSOFT; + } else if (fpscr & FP_VXSNAN) { + error = POWERPC_EXCP_FP_VXSNAN; + } else if (fpscr & FP_VXISI) { + error = POWERPC_EXCP_FP_VXISI; + } else if (fpscr & FP_VXIDI) { + error = POWERPC_EXCP_FP_VXIDI; + } else if (fpscr & FP_VXZDZ) { + error = POWERPC_EXCP_FP_VXZDZ; + } else if (fpscr & FP_VXIMZ) { + error = POWERPC_EXCP_FP_VXIMZ; + } else if (fpscr & FP_VXVC) { + error = POWERPC_EXCP_FP_VXVC; + } else if (fpscr & FP_VXSQRT) { + error = POWERPC_EXCP_FP_VXSQRT; + } else if (fpscr & FP_VXCVI) { + error = POWERPC_EXCP_FP_VXCVI; + } else { + return; + } + } else { + return; + } + cs->exception_index = POWERPC_EXCP_PROGRAM; + env->error_code = error | POWERPC_EXCP_FP; + /* Deferred floating-point exception after target FPSCR update */ + if (fp_exceptions_enabled(env)) { + raise_exception_err_ra(env, cs->exception_index, + env->error_code, GETPC()); + } +} + static void do_float_check_status(CPUPPCState *env, uintptr_t raddr) { CPUState *cs = env_cpu(env); diff --git a/target/ppc/translate/fp-impl.c.inc b/target/ppc/translate/fp-impl.c.inc index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/translate/fp-impl.c.inc +++ b/target/ppc/translate/fp-impl.c.inc @@ -XXX,XX +XXX,XX @@ static void gen_mtfsb1(DisasContext *ctx) return; } crb = 31 - crbD(ctx->opcode); - gen_reset_fpstatus(); /* XXX: we pretend we can only do IEEE floating-point computations */ if (likely(crb != FPSCR_FEX && crb != FPSCR_VX && crb != FPSCR_NI)) { TCGv_i32 t0; @@ -XXX,XX +XXX,XX @@ static void gen_mtfsb1(DisasContext *ctx) tcg_gen_shri_i32(cpu_crf[1], cpu_crf[1], FPSCR_OX); } /* We can raise a deferred exception */ - gen_helper_float_check_status(cpu_env); + gen_helper_fpscr_check_status(cpu_env); } /* mtfsf */ @@ -XXX,XX +XXX,XX @@ static void gen_mtfsf(DisasContext *ctx) gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL); return; } - gen_reset_fpstatus(); if (l) { t0 = tcg_const_i32((ctx->insns_flags2 & PPC2_ISA205) ? 0xffff : 0xff); } else { @@ -XXX,XX +XXX,XX @@ static void gen_mtfsf(DisasContext *ctx) tcg_gen_shri_i32(cpu_crf[1], cpu_crf[1], FPSCR_OX); } /* We can raise a deferred exception */ - gen_helper_float_check_status(cpu_env); + gen_helper_fpscr_check_status(cpu_env); tcg_temp_free_i64(t1); } @@ -XXX,XX +XXX,XX @@ static void gen_mtfsfi(DisasContext *ctx) return; } sh = (8 * w) + 7 - bf; - gen_reset_fpstatus(); t0 = tcg_const_i64(((uint64_t)FPIMM(ctx->opcode)) << (4 * sh)); t1 = tcg_const_i32(1 << sh); gen_helper_store_fpscr(cpu_env, t0, t1); @@ -XXX,XX +XXX,XX @@ static void gen_mtfsfi(DisasContext *ctx) tcg_gen_shri_i32(cpu_crf[1], cpu_crf[1], FPSCR_OX); } /* We can raise a deferred exception */ - gen_helper_float_check_status(cpu_env); + gen_helper_fpscr_check_status(cpu_env); } static void gen_qemu_ld32fs(DisasContext *ctx, TCGv_i64 dest, TCGv addr) -- 2.31.1
From: "Lucas Mateus Castro (alqotel)" <lucas.araujo@eldorado.org.br> Added tests for the mtfsf to check if FI bit of FPSCR is being set and if exception calls are being made correctly. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Message-Id: <20211201163808.440385-3-lucas.araujo@eldorado.org.br> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- tests/tcg/ppc64le/mtfsf.c | 61 +++++++++++++++++++++++++++++++ tests/tcg/ppc64/Makefile.target | 1 + tests/tcg/ppc64le/Makefile.target | 1 + 3 files changed, 63 insertions(+) create mode 100644 tests/tcg/ppc64le/mtfsf.c diff --git a/tests/tcg/ppc64le/mtfsf.c b/tests/tcg/ppc64le/mtfsf.c new file mode 100644 index XXXXXXX..XXXXXXX --- /dev/null +++ b/tests/tcg/ppc64le/mtfsf.c @@ -XXX,XX +XXX,XX @@ +#include <stdlib.h> +#include <assert.h> +#include <signal.h> +#include <sys/prctl.h> + +#define FPSCR_VE 7 /* Floating-point invalid operation exception enable */ +#define FPSCR_VXSOFT 10 /* Floating-point invalid operation exception (soft) */ +#define FPSCR_FI 17 /* Floating-point fraction inexact */ + +#define FP_VE (1ull << FPSCR_VE) +#define FP_VXSOFT (1ull << FPSCR_VXSOFT) +#define FP_FI (1ull << FPSCR_FI) + +void sigfpe_handler(int sig, siginfo_t *si, void *ucontext) +{ + if (si->si_code == FPE_FLTINV) { + exit(0); + } + exit(1); +} + +int main(void) +{ + union { + double d; + long long ll; + } fpscr; + + struct sigaction sa = { + .sa_sigaction = sigfpe_handler, + .sa_flags = SA_SIGINFO + }; + + /* + * Enable the MSR bits F0 and F1 to enable exceptions. + * This shouldn't be needed in linux-user as these bits are enabled by + * default, but this allows to execute either in a VM or a real machine + * to compare the behaviors. + */ + prctl(PR_SET_FPEXC, PR_FP_EXC_PRECISE); + + /* First test if the FI bit is being set correctly */ + fpscr.ll = FP_FI; + __builtin_mtfsf(0b11111111, fpscr.d); + fpscr.d = __builtin_mffs(); + assert((fpscr.ll & FP_FI) != 0); + + /* Then test if the deferred exception is being called correctly */ + sigaction(SIGFPE, &sa, NULL); + + /* + * Although the VXSOFT exception has been chosen, based on test in a Power9 + * any combination of exception bit + its enabling bit should work. + * But if a different exception is chosen si_code check should + * change accordingly. + */ + fpscr.ll = FP_VE | FP_VXSOFT; + __builtin_mtfsf(0b11111111, fpscr.d); + + return 1; +} diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target index XXXXXXX..XXXXXXX 100644 --- a/tests/tcg/ppc64/Makefile.target +++ b/tests/tcg/ppc64/Makefile.target @@ -XXX,XX +XXX,XX @@ endif bcdsub: CFLAGS += -mpower8-vector PPC64_TESTS += byte_reverse +PPC64_TESTS += mtfsf ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),) run-byte_reverse: QEMU_OPTS+=-cpu POWER10 run-plugin-byte_reverse-with-%: QEMU_OPTS+=-cpu POWER10 diff --git a/tests/tcg/ppc64le/Makefile.target b/tests/tcg/ppc64le/Makefile.target index XXXXXXX..XXXXXXX 100644 --- a/tests/tcg/ppc64le/Makefile.target +++ b/tests/tcg/ppc64le/Makefile.target @@ -XXX,XX +XXX,XX @@ byte_reverse: CFLAGS += -mcpu=power10 run-byte_reverse: QEMU_OPTS+=-cpu POWER10 run-plugin-byte_reverse-with-%: QEMU_OPTS+=-cpu POWER10 +PPC64LE_TESTS += mtfsf PPC64LE_TESTS += signal_save_restore_xer TESTS += $(PPC64LE_TESTS) -- 2.31.1
From: "Lucas Mateus Castro (alqotel)" <lucas.araujo@eldorado.org.br> This commit fixes the difference reported in the bug in the reserved bit 52, it does this by adding this bit to the mask of bits to not be directly altered in the ppc_store_fpscr function (the hardware used to compare to QEMU was a Power9). The bits 0 to 27 were also added to the mask, as they are marked as reserved in the PowerISA and bit 28 is a reserved extension of the DRN field (bits 29:31) but can't be set using mtfsfi, while the other DRN bits may be set using mtfsfi instruction, so bit 28 was also added to the mask. Although this is a difference reported in the bug, since it's a reserved bit it may be a "don't care" case, as put in the bug report. Looking at the ISA it doesn't explicitly mention this bit can't be set, like it does for FEX and VX, so I'm unsure if this is necessary. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/266 Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Message-Id: <20211201163808.440385-4-lucas.araujo@eldorado.org.br> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/cpu.h | 4 ++++ target/ppc/cpu.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -XXX,XX +XXX,XX @@ enum { FP_VXZDZ | FP_VXIMZ | FP_VXVC | FP_VXSOFT | \ FP_VXSQRT | FP_VXCVI) +/* FPSCR bits that can be set by mtfsf, mtfsfi and mtfsb1 */ +#define FPSCR_MTFS_MASK (~(MAKE_64BIT_MASK(36, 28) | PPC_BIT(28) | \ + FP_FEX | FP_VX | PPC_BIT(52))) + /*****************************************************************************/ /* Vector status and control register */ #define VSCR_NJ 16 /* Vector non-java */ diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -XXX,XX +XXX,XX @@ static inline void fpscr_set_rounding_mode(CPUPPCState *env) void ppc_store_fpscr(CPUPPCState *env, target_ulong val) { - val &= ~(FP_VX | FP_FEX); + val &= FPSCR_MTFS_MASK; if (val & FPSCR_IX) { val |= FP_VX; } -- 2.31.1
From: Matheus Ferst <matheus.ferst@eldorado.org.br> Implement the following PowerISA v3.1 instructions: vexpandbm: Vector Expand Byte Mask vexpandhm: Vector Expand Halfword Mask vexpandwm: Vector Expand Word Mask vexpanddm: Vector Expand Doubleword Mask vexpandqm: Vector Expand Quadword Mask Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Message-Id: <20211203194229.746275-2-matheus.ferst@eldorado.org.br> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/insn32.decode | 11 ++++++++++ target/ppc/translate/vmx-impl.c.inc | 34 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -XXX,XX +XXX,XX @@ &VX_uim4 vrt uim vrb @VX_uim4 ...... vrt:5 . uim:4 vrb:5 ........... &VX_uim4 +&VX_tb vrt vrb +@VX_tb ...... vrt:5 ..... vrb:5 ........... &VX_tb + &X rt ra rb @X ...... rt:5 ra:5 rb:5 .......... . &X @@ -XXX,XX +XXX,XX @@ VINSWVRX 000100 ..... ..... ..... 00110001111 @VX VSLDBI 000100 ..... ..... ..... 00 ... 010110 @VN VSRDBI 000100 ..... ..... ..... 01 ... 010110 @VN +## Vector Mask Manipulation Instructions + +VEXPANDBM 000100 ..... 00000 ..... 11001000010 @VX_tb +VEXPANDHM 000100 ..... 00001 ..... 11001000010 @VX_tb +VEXPANDWM 000100 ..... 00010 ..... 11001000010 @VX_tb +VEXPANDDM 000100 ..... 00011 ..... 11001000010 @VX_tb +VEXPANDQM 000100 ..... 00100 ..... 11001000010 @VX_tb + # VSX Load/Store Instructions LXV 111101 ..... ..... ............ . 001 @DQ_TSX diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -XXX,XX +XXX,XX @@ static bool trans_VSRDBI(DisasContext *ctx, arg_VN *a) return true; } +static bool do_vexpand(DisasContext *ctx, arg_VX_tb *a, unsigned vece) +{ + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_sari(vece, avr_full_offset(a->vrt), avr_full_offset(a->vrb), + (8 << vece) - 1, 16, 16); + + return true; +} + +TRANS(VEXPANDBM, do_vexpand, MO_8) +TRANS(VEXPANDHM, do_vexpand, MO_16) +TRANS(VEXPANDWM, do_vexpand, MO_32) +TRANS(VEXPANDDM, do_vexpand, MO_64) + +static bool trans_VEXPANDQM(DisasContext *ctx, arg_VX_tb *a) +{ + TCGv_i64 tmp; + + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + tmp = tcg_temp_new_i64(); + + get_avr64(tmp, a->vrb, true); + tcg_gen_sari_i64(tmp, tmp, 63); + set_avr64(a->vrt, tmp, false); + set_avr64(a->vrt, tmp, true); + + tcg_temp_free_i64(tmp); + return true; +} + #define GEN_VAFORM_PAIRED(name0, name1, opc2) \ static void glue(gen_, name0##_##name1)(DisasContext *ctx) \ { \ -- 2.31.1
From: Matheus Ferst <matheus.ferst@eldorado.org.br> Implement the following PowerISA v3.1 instructions: vextractbm: Vector Extract Byte Mask vextracthm: Vector Extract Halfword Mask vextractwm: Vector Extract Word Mask vextractdm: Vector Extract Doubleword Mask vextractqm: Vector Extract Quadword Mask Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211203194229.746275-3-matheus.ferst@eldorado.org.br> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/insn32.decode | 6 +++ target/ppc/translate/vmx-impl.c.inc | 82 +++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -XXX,XX +XXX,XX @@ VEXPANDWM 000100 ..... 00010 ..... 11001000010 @VX_tb VEXPANDDM 000100 ..... 00011 ..... 11001000010 @VX_tb VEXPANDQM 000100 ..... 00100 ..... 11001000010 @VX_tb +VEXTRACTBM 000100 ..... 01000 ..... 11001000010 @VX_tb +VEXTRACTHM 000100 ..... 01001 ..... 11001000010 @VX_tb +VEXTRACTWM 000100 ..... 01010 ..... 11001000010 @VX_tb +VEXTRACTDM 000100 ..... 01011 ..... 11001000010 @VX_tb +VEXTRACTQM 000100 ..... 01100 ..... 11001000010 @VX_tb + # VSX Load/Store Instructions LXV 111101 ..... ..... ............ . 001 @DQ_TSX diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -XXX,XX +XXX,XX @@ static bool trans_VEXPANDQM(DisasContext *ctx, arg_VX_tb *a) return true; } +static bool do_vextractm(DisasContext *ctx, arg_VX_tb *a, unsigned vece) +{ + const uint64_t elem_width = 8 << vece, elem_count_half = 8 >> vece, + mask = dup_const(vece, 1 << (elem_width - 1)); + uint64_t i, j; + TCGv_i64 lo, hi, t0, t1; + + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + hi = tcg_temp_new_i64(); + lo = tcg_temp_new_i64(); + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + + get_avr64(lo, a->vrb, false); + get_avr64(hi, a->vrb, true); + + tcg_gen_andi_i64(lo, lo, mask); + tcg_gen_andi_i64(hi, hi, mask); + + /* + * Gather the most significant bit of each element in the highest element + * element. E.g. for bytes: + * aXXXXXXXbXXXXXXXcXXXXXXXdXXXXXXXeXXXXXXXfXXXXXXXgXXXXXXXhXXXXXXX + * & dup(1 << (elem_width - 1)) + * a0000000b0000000c0000000d0000000e0000000f0000000g0000000h0000000 + * << 32 - 4 + * 0000e0000000f0000000g0000000h00000000000000000000000000000000000 + * | + * a000e000b000f000c000g000d000h000e0000000f0000000g0000000h0000000 + * << 16 - 2 + * 00c000g000d000h000e0000000f0000000g0000000h000000000000000000000 + * | + * a0c0e0g0b0d0f0h0c0e0g000d0f0h000e0g00000f0h00000g0000000h0000000 + * << 8 - 1 + * 0b0d0f0h0c0e0g000d0f0h000e0g00000f0h00000g0000000h00000000000000 + * | + * abcdefghbcdefgh0cdefgh00defgh000efgh0000fgh00000gh000000h0000000 + */ + for (i = elem_count_half / 2, j = 32; i > 0; i >>= 1, j >>= 1) { + tcg_gen_shli_i64(t0, hi, j - i); + tcg_gen_shli_i64(t1, lo, j - i); + tcg_gen_or_i64(hi, hi, t0); + tcg_gen_or_i64(lo, lo, t1); + } + + tcg_gen_shri_i64(hi, hi, 64 - elem_count_half); + tcg_gen_extract2_i64(lo, lo, hi, 64 - elem_count_half); + tcg_gen_trunc_i64_tl(cpu_gpr[a->vrt], lo); + + tcg_temp_free_i64(hi); + tcg_temp_free_i64(lo); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); + + return true; +} + +TRANS(VEXTRACTBM, do_vextractm, MO_8) +TRANS(VEXTRACTHM, do_vextractm, MO_16) +TRANS(VEXTRACTWM, do_vextractm, MO_32) +TRANS(VEXTRACTDM, do_vextractm, MO_64) + +static bool trans_VEXTRACTQM(DisasContext *ctx, arg_VX_tb *a) +{ + TCGv_i64 tmp; + + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + tmp = tcg_temp_new_i64(); + + get_avr64(tmp, a->vrb, true); + tcg_gen_shri_i64(tmp, tmp, 63); + tcg_gen_trunc_i64_tl(cpu_gpr[a->vrt], tmp); + + tcg_temp_free_i64(tmp); + + return true; +} + #define GEN_VAFORM_PAIRED(name0, name1, opc2) \ static void glue(gen_, name0##_##name1)(DisasContext *ctx) \ { \ -- 2.31.1
From: Matheus Ferst <matheus.ferst@eldorado.org.br> Implement the following PowerISA v3.1 instructions: mtvsrbm: Move to VSR Byte Mask mtvsrhm: Move to VSR Halfword Mask mtvsrwm: Move to VSR Word Mask mtvsrdm: Move to VSR Doubleword Mask mtvsrqm: Move to VSR Quadword Mask mtvsrbmi: Move to VSR Byte Mask Immediate Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Message-Id: <20211203194229.746275-4-matheus.ferst@eldorado.org.br> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/insn32.decode | 11 +++ target/ppc/translate/vmx-impl.c.inc | 115 ++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -XXX,XX +XXX,XX @@ %ds_rtp 22:4 !function=times_2 @DS_rtp ...... ....0 ra:5 .............. .. &D rt=%ds_rtp si=%ds_si +&DX_b vrt b +%dx_b 6:10 16:5 0:1 +@DX_b ...... vrt:5 ..... .......... ..... . &DX_b b=%dx_b + &DX rt d %dx_d 6:s10 16:5 0:1 @DX ...... rt:5 ..... .......... ..... . &DX d=%dx_d @@ -XXX,XX +XXX,XX @@ VSRDBI 000100 ..... ..... ..... 01 ... 010110 @VN ## Vector Mask Manipulation Instructions +MTVSRBM 000100 ..... 10000 ..... 11001000010 @VX_tb +MTVSRHM 000100 ..... 10001 ..... 11001000010 @VX_tb +MTVSRWM 000100 ..... 10010 ..... 11001000010 @VX_tb +MTVSRDM 000100 ..... 10011 ..... 11001000010 @VX_tb +MTVSRQM 000100 ..... 10100 ..... 11001000010 @VX_tb +MTVSRBMI 000100 ..... ..... .......... 01010 . @DX_b + VEXPANDBM 000100 ..... 00000 ..... 11001000010 @VX_tb VEXPANDHM 000100 ..... 00001 ..... 11001000010 @VX_tb VEXPANDWM 000100 ..... 00010 ..... 11001000010 @VX_tb diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc index XXXXXXX..XXXXXXX 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -XXX,XX +XXX,XX @@ static bool trans_VEXTRACTQM(DisasContext *ctx, arg_VX_tb *a) return true; } +static bool do_mtvsrm(DisasContext *ctx, arg_VX_tb *a, unsigned vece) +{ + const uint64_t elem_width = 8 << vece, elem_count_half = 8 >> vece; + uint64_t c; + int i, j; + TCGv_i64 hi, lo, t0, t1; + + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + hi = tcg_temp_new_i64(); + lo = tcg_temp_new_i64(); + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + + tcg_gen_extu_tl_i64(t0, cpu_gpr[a->vrb]); + tcg_gen_extract_i64(hi, t0, elem_count_half, elem_count_half); + tcg_gen_extract_i64(lo, t0, 0, elem_count_half); + + /* + * Spread the bits into their respective elements. + * E.g. for bytes: + * 00000000000000000000000000000000000000000000000000000000abcdefgh + * << 32 - 4 + * 0000000000000000000000000000abcdefgh0000000000000000000000000000 + * | + * 0000000000000000000000000000abcdefgh00000000000000000000abcdefgh + * << 16 - 2 + * 00000000000000abcdefgh00000000000000000000abcdefgh00000000000000 + * | + * 00000000000000abcdefgh000000abcdefgh000000abcdefgh000000abcdefgh + * << 8 - 1 + * 0000000abcdefgh000000abcdefgh000000abcdefgh000000abcdefgh0000000 + * | + * 0000000abcdefgXbcdefgXbcdefgXbcdefgXbcdefgXbcdefgXbcdefgXbcdefgh + * & dup(1) + * 0000000a0000000b0000000c0000000d0000000e0000000f0000000g0000000h + * * 0xff + * aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffffgggggggghhhhhhhh + */ + for (i = elem_count_half / 2, j = 32; i > 0; i >>= 1, j >>= 1) { + tcg_gen_shli_i64(t0, hi, j - i); + tcg_gen_shli_i64(t1, lo, j - i); + tcg_gen_or_i64(hi, hi, t0); + tcg_gen_or_i64(lo, lo, t1); + } + + c = dup_const(vece, 1); + tcg_gen_andi_i64(hi, hi, c); + tcg_gen_andi_i64(lo, lo, c); + + c = MAKE_64BIT_MASK(0, elem_width); + tcg_gen_muli_i64(hi, hi, c); + tcg_gen_muli_i64(lo, lo, c); + + set_avr64(a->vrt, lo, false); + set_avr64(a->vrt, hi, true); + + tcg_temp_free_i64(hi); + tcg_temp_free_i64(lo); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); + + return true; +} + +TRANS(MTVSRBM, do_mtvsrm, MO_8) +TRANS(MTVSRHM, do_mtvsrm, MO_16) +TRANS(MTVSRWM, do_mtvsrm, MO_32) +TRANS(MTVSRDM, do_mtvsrm, MO_64) + +static bool trans_MTVSRQM(DisasContext *ctx, arg_VX_tb *a) +{ + TCGv_i64 tmp; + + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + tmp = tcg_temp_new_i64(); + + tcg_gen_ext_tl_i64(tmp, cpu_gpr[a->vrb]); + tcg_gen_sextract_i64(tmp, tmp, 0, 1); + set_avr64(a->vrt, tmp, false); + set_avr64(a->vrt, tmp, true); + + tcg_temp_free_i64(tmp); + + return true; +} + +static bool trans_MTVSRBMI(DisasContext *ctx, arg_DX_b *a) +{ + const uint64_t mask = dup_const(MO_8, 1); + uint64_t hi, lo; + + REQUIRE_INSNS_FLAGS2(ctx, ISA310); + REQUIRE_VECTOR(ctx); + + hi = extract16(a->b, 8, 8); + lo = extract16(a->b, 0, 8); + + for (int i = 4, j = 32; i > 0; i >>= 1, j >>= 1) { + hi |= hi << (j - i); + lo |= lo << (j - i); + } + + hi = (hi & mask) * 0xFF; + lo = (lo & mask) * 0xFF; + + set_avr64(a->vrt, tcg_constant_i64(hi), true); + set_avr64(a->vrt, tcg_constant_i64(lo), false); + + return true; +} + #define GEN_VAFORM_PAIRED(name0, name1, opc2) \ static void glue(gen_, name0##_##name1)(DisasContext *ctx) \ { \ -- 2.31.1
From: Daniel Henrique Barboza <danielhb413@gmail.com> The ivshmem device, as with most PCI devices, uses little endian byte order. However, the endianness of its mmio_ops is marked as DEVICE_NATIVE_ENDIAN. This presents not only the usual problems with big endian hosts but also with PowerPC little endian hosts as well, since the Power architecture in QEMU uses big endian hardware (XIVE controller, PCI Host Bridges, etc) even if the host is in little endian byte order. As it is today, the IVPosition of the device will be byte swapped when running in Power BE and LE. This can be seen by changing the existing qtest 'ivshmem-test' to run in ppc64 hosts and printing the IVPOSITION regs in test_ivshmem_server() right after the VM ids assert. For x86_64 the VM id values read are '0' and '1', for ppc64 (tested in a Power8 RHEL 7.9 BE server) and ppc64le (tested in a Power9 RHEL 8.6 LE server) the ids will be '0' and '0x1000000'. Change this device to LITTLE_ENDIAN fixes the issue for Power hosts of both endianness, and every other big-endian architecture that might use this device, without impacting x86 users. Fixes: cb06608e17f8 ("ivshmem: convert to memory API") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/168 Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20211124092948.335389-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/misc/ivshmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c index XXXXXXX..XXXXXXX 100644 --- a/hw/misc/ivshmem.c +++ b/hw/misc/ivshmem.c @@ -XXX,XX +XXX,XX @@ static uint64_t ivshmem_io_read(void *opaque, hwaddr addr, static const MemoryRegionOps ivshmem_mmio_ops = { .read = ivshmem_io_read, .write = ivshmem_io_write, - .endianness = DEVICE_NATIVE_ENDIAN, + .endianness = DEVICE_LITTLE_ENDIAN, .impl = { .min_access_size = 4, .max_access_size = 4, -- 2.31.1
From: Daniel Henrique Barboza <danielhb413@gmail.com> This test, if enabled by hand, was failing when the ivhsmem device was being declared as DEVICE_NATIVE_ENDIAN with the following error: /ppc64/ivshmem/pair: OK /ppc64/ivshmem/server: ** ERROR:/home/danielhb/qemu/tests/qtest/ivshmem-test.c:367:test_ivshmem_server: assertion failed (ret != 0): (0 != 0) Aborted After the endianness change done in the previous patch, we can verify in both a a Power 9 little-endian host and in a Power 8 big-endian host that this test is now passing: $ QTEST_QEMU_BINARY=./ppc64-softmmu/qemu-system-ppc64 ./tests/qtest/ivshmem-test -m slow /ppc64/ivshmem/single: OK /ppc64/ivshmem/hotplug: OK /ppc64/ivshmem/memdev: OK /ppc64/ivshmem/pair: OK /ppc64/ivshmem/server: OK Let's keep it that way by officially enabling it for ppc64. Acked-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20211124092948.335389-3-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- tests/qtest/ivshmem-test.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/qtest/ivshmem-test.c b/tests/qtest/ivshmem-test.c index XXXXXXX..XXXXXXX 100644 --- a/tests/qtest/ivshmem-test.c +++ b/tests/qtest/ivshmem-test.c @@ -XXX,XX +XXX,XX @@ static gchar *mktempshm(int size, int *fd) int main(int argc, char **argv) { int ret, fd; - const char *arch = qtest_get_arch(); gchar dir[] = "/tmp/ivshmem-test.XXXXXX"; g_test_init(&argc, &argv, NULL); @@ -XXX,XX +XXX,XX @@ int main(int argc, char **argv) qtest_add_func("/ivshmem/memdev", test_ivshmem_memdev); if (g_test_slow()) { qtest_add_func("/ivshmem/pair", test_ivshmem_pair); - if (strcmp(arch, "ppc64") != 0) { - qtest_add_func("/ivshmem/server", test_ivshmem_server); - } + qtest_add_func("/ivshmem/server", test_ivshmem_server); } out: -- 2.31.1
From: Christophe Lombard <clombard@linux.vnet.ibm.com> The PCIe extended configuration space on the device is not currently accessible to the host. if by default, it is still inaccessible for conventional for PCIe buses, add the current flag PCI_BUS_EXTENDED_CONFIG_SPACE on the root bus permits PCI-E extended config space access. Signed-off-by: Christophe Lombard <clombard@linux.vnet.ibm.com> Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20211109145053.43524-1-clombard@linux.vnet.ibm.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/pci-host/pnv_phb4.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index XXXXXXX..XXXXXXX 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -XXX,XX +XXX,XX @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp) &phb->pci_mmio, &phb->pci_io, 0, 4, TYPE_PNV_PHB4_ROOT_BUS); pci_setup_iommu(pci->bus, pnv_phb4_dma_iommu, phb); + pci->bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; /* Add a single Root port */ qdev_prop_set_uint8(DEVICE(&phb->root), "chassis", phb->chip_id); -- 2.31.1
From: Leonardo Garcia <lagarcia@br.ibm.com> Signed-off-by: Leonardo Garcia <lagarcia@br.ibm.com> [ clg: replaced Power9 by POWER9 ] Message-Id: <c387f883b3db34d9fcb44ccac2ef11c35a25e18c.1637669345.git.lagarcia@br.ibm.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- docs/system/ppc/powernv.rst | 55 +++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/docs/system/ppc/powernv.rst b/docs/system/ppc/powernv.rst index XXXXXXX..XXXXXXX 100644 --- a/docs/system/ppc/powernv.rst +++ b/docs/system/ppc/powernv.rst @@ -XXX,XX +XXX,XX @@ -PowerNV family boards (``powernv8``, ``powernv9``) +PowerNV family boards (``powernv8``, ``powernv9``, ``powernv10``) ================================================================== -PowerNV (as Non-Virtualized) is the "baremetal" platform using the +PowerNV (as Non-Virtualized) is the "bare metal" platform using the OPAL firmware. It runs Linux on IBM and OpenPOWER systems and it can be used as an hypervisor OS, running KVM guests, or simply as a host OS. @@ -XXX,XX +XXX,XX @@ Supported devices ----------------- * Multi processor support for POWER8, POWER8NVL and POWER9. - * XSCOM, serial communication sideband bus to configure chiplets - * Simple LPC Controller - * Processor Service Interface (PSI) Controller - * Interrupt Controller, XICS (POWER8) and XIVE (POWER9) - * POWER8 PHB3 PCIe Host bridge and POWER9 PHB4 PCIe Host bridge - * Simple OCC is an on-chip microcontroller used for power management - tasks - * iBT device to handle BMC communication, with the internal BMC - simulator provided by QEMU or an external BMC such as an Aspeed - QEMU machine. + * XSCOM, serial communication sideband bus to configure chiplets. + * Simple LPC Controller. + * Processor Service Interface (PSI) Controller. + * Interrupt Controller, XICS (POWER8) and XIVE (POWER9) and XIVE2 (Power10). + * POWER8 PHB3 PCIe Host bridge and POWER9 PHB4 PCIe Host bridge. + * Simple OCC is an on-chip micro-controller used for power management tasks. + * iBT device to handle BMC communication, with the internal BMC simulator + provided by QEMU or an external BMC such as an Aspeed QEMU machine. * PNOR containing the different firmware partitions. Missing devices @@ -XXX,XX +XXX,XX @@ Missing devices A lot is missing, among which : - * POWER10 processor - * XIVE2 (POWER10) interrupt controller - * I2C controllers (yet to be merged) - * NPU/NPU2/NPU3 controllers - * EEH support for PCIe Host bridge controllers - * NX controller - * VAS controller - * chipTOD (Time Of Day) + * I2C controllers (yet to be merged). + * NPU/NPU2/NPU3 controllers. + * EEH support for PCIe Host bridge controllers. + * NX controller. + * VAS controller. + * chipTOD (Time Of Day). * Self Boot Engine (SBE). - * FSI bus + * FSI bus. Firmware -------- The OPAL firmware (OpenPower Abstraction Layer) for OpenPower systems includes the runtime services ``skiboot`` and the bootloader kernel and -initramfs ``skiroot``. Source code can be found on GitHub: +initramfs ``skiroot``. Source code can be found on the `OpenPOWER account at +GitHub <https://github.com/open-power>`_. - https://github.com/open-power. - -Prebuilt images of ``skiboot`` and ``skiroot`` are made available on the `OpenPOWER <https://github.com/open-power/op-build/releases/>`__ site. +Prebuilt images of ``skiboot`` and ``skiroot`` are made available on the +`OpenPOWER <https://github.com/open-power/op-build/releases/>`__ site. QEMU includes a prebuilt image of ``skiboot`` which is updated when a more recent version is required by the models. @@ -XXX,XX +XXX,XX @@ and a SATA disk : Complex PCIe configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~ + Six PHBs are defined per chip (POWER9) but no default PCI layout is provided (to be compatible with libvirt). One PCI device can be added on any of the available PCIe slots using command line options such as: @@ -XXX,XX +XXX,XX @@ one on the command line : The files `palmetto-SDR.bin <http://www.kaod.org/qemu/powernv/palmetto-SDR.bin>`__ and `palmetto-FRU.bin <http://www.kaod.org/qemu/powernv/palmetto-FRU.bin>`__ define a Sensor Data Record repository and a Field Replaceable Unit -inventory for a palmetto BMC. They can be used to extend the QEMU BMC +inventory for a Palmetto BMC. They can be used to extend the QEMU BMC simulator. .. code-block:: bash @@ -XXX,XX +XXX,XX @@ CAVEATS ------- * No support for multiple HW threads (SMT=1). Same as pseries. - * CPU can hang when doing intensive I/Os. Use ``-append powersave=off`` in that case. + +Maintainer contact information +------------------------------ + +Cédric Le Goater <clg@kaod.org> -- 2.31.1
From: Daniel Henrique Barboza <danielhb413@gmail.com> If one tries to use -machine powernv9,accel=kvm in a Power9 host, a cryptic error will be shown: qemu-system-ppc64: Register sync failed... If you're using kvm-hv.ko, only "-cpu host" is possible qemu-system-ppc64: kvm_init_vcpu: kvm_arch_init_vcpu failed (0): Invalid argument Appending '-cpu host' will throw another error: qemu-system-ppc64: invalid chip model 'host' for powernv9 machine The root cause is that in IBM PowerPC we have different specs for the bare-metal and the guests. The bare-metal follows OPAL, the guests follow PAPR. The kernel KVM modules presented in the ppc kernels implements PAPR. This means that we can't use KVM accel when using the powernv machine, which is the emulation of the bare-metal host. All that said, let's give a more informative error in this case. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20211130133153.444601-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/ppc/pnv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index XXXXXXX..XXXXXXX 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -XXX,XX +XXX,XX @@ static void pnv_init(MachineState *machine) DriveInfo *pnor = drive_get(IF_MTD, 0, 0); DeviceState *dev; + if (kvm_enabled()) { + error_report("The powernv machine does not work with KVM acceleration"); + exit(EXIT_FAILURE); + } + /* allocate RAM */ if (machine->ram_size < mc->default_ram_size) { char *sz = size_to_str(mc->default_ram_size); -- 2.31.1
From: Daniel Henrique Barboza <danielhb413@gmail.com> If one tries to use -machine powernv9,accel=kvm in a Power9 host, a cryptic error will be shown: qemu-system-ppc64: Register sync failed... If you're using kvm-hv.ko, only "-cpu host" is possible qemu-system-ppc64: kvm_init_vcpu: kvm_arch_init_vcpu failed (0): Invalid argument Appending '-cpu host' will throw another error: qemu-system-ppc64: invalid chip model 'host' for powernv9 machine The root cause is that in IBM PowerPC we have different specs for the bare-metal and the guests. The bare-metal follows OPAL, the guests follow PAPR. The kernel KVM modules presented in the ppc kernels implements PAPR. This means that we can't use KVM accel when using the powernv machine, which is the emulation of the bare-metal host. All that said, let's give a more informative error in this case. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20211130133153.444601-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/ppc/pnv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index XXXXXXX..XXXXXXX 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -XXX,XX +XXX,XX @@ static void pnv_init(MachineState *machine) DriveInfo *pnor = drive_get(IF_MTD, 0, 0); DeviceState *dev; + if (kvm_enabled()) { + error_report("The powernv machine does not work with KVM acceleration"); + exit(EXIT_FAILURE); + } + /* allocate RAM */ if (machine->ram_size < mc->default_ram_size) { char *sz = size_to_str(mc->default_ram_size); -- 2.31.1
The following changes since commit 76b56fdfc9fa43ec6e5986aee33f108c6c6a511e: Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging (2021-12-14 12:46:18 -0800) are available in the Git repository at: https://github.com/legoater/qemu/ tags/pull-ppc-20211217 for you to fetch changes up to 0e6232bc3cb96bdf6fac1b5d7659aa9887afe657: ppc/pnv: Use QOM hierarchy to scan PEC PHB4 devices (2021-12-17 17:57:19 +0100) Changes in v3: - Fixed patch "docs: Introducing pseries documentation" with a newline and checked documentation generation with : make docker-test-build@ubuntu1804 TARGET_LIST=i386-softmmu Changes in v2: - Fixed patch "docs: rSTify ppc-spapr-hcalls.txt" with a newline - dropped patch "target/ppc: do not silence SNaN in xscvspdpn" which still had some comments pending. ---------------------------------------------------------------- ppc 7.0 queue: * General cleanup for Mac machines (Peter) * Fixes for FPU exceptions (Lucas) * Support for new ISA31 instructions (Matheus) * Fixes for ivshmem (Daniel) * Cleanups for PowerNV PHB (Christophe and Cedric) * Updates of PowerNV and pSeries documentation (Leonardo and Daniel) * Fixes for PowerNV (Daniel) * Large cleanup of FPU implementation (Richard) * Removal of SoftTLBs support for PPC74x CPUs (Fabiano) * Fixes for exception models in MPCx and 60x CPUs (Fabiano) * Removal of 401/403 CPUs (Cedric) * Deprecation of taihu machine (Thomas) * Large rework of PPC405 machine (Cedric) * Fixes for VSX instructions (Victor and Matheus) * Fix for e6500 CPU (Fabiano) * Initial support for PMU (Daniel) ---------------------------------------------------------------- Alexey Kardashevskiy (1): pseries: Update SLOF firmware image Christophe Lombard (1): pci-host: Allow extended config space access for PowerNV PHB4 model Cédric Le Goater (28): Merge tag 'qemu-slof-20211112' of github.com:aik/qemu into ppc-next target/ppc: remove 401/403 CPUs ppc/ppc405: Change kernel load address ppc: Add trace-events for DCR accesses ppc/ppc405: Convert printfs to trace-events ppc/ppc405: Drop flag parameter in ppc405_set_bootinfo() ppc/ppc405: Change ppc405ep_init() return value ppc/ppc405: Add some address space definitions ppc/ppc405: Remove flash support ppc/ppc405: Rework FW load ppc/ppc405: Introduce ppc405_set_default_bootinfo() ppc/ppc405: Fix boot from kernel ppc/ppc405: Change default PLL values at reset ppc/ppc405: Fix bi_pci_enetaddr2 field in U-Boot board information ppc/ppc405: Add update of bi_procfreq field ppc/pnv: Introduce a "chip" property under PHB3 ppc/pnv: Use the chip class to check the index of PHB3 devices ppc/pnv: Drop the "num-phbs" property ppc/pnv: Move mapping of the PHB3 CQ regions under pnv_pbcq_realize() ppc/pnv: Use QOM hierarchy to scan PHB3 devices ppc/pnv: Introduce a num_pecs class attribute for PHB4 PEC devices ppc/pnv: Introduce version and device_id class atributes for PHB4 devices ppc/pnv: Introduce a "chip" property under the PHB4 model ppc/pnv: Introduce a num_stack class attribute ppc/pnv: Compute the PHB index from the PHB4 PEC model ppc/pnv: Remove "system-memory" property from PHB4 PEC ppc/pnv: Move realize of PEC stacks under the PEC model ppc/pnv: Use QOM hierarchy to scan PEC PHB4 devices Daniel Henrique Barboza (13): ivshmem.c: change endianness to LITTLE_ENDIAN ivshmem-test.c: enable test_ivshmem_server for ppc64 arch ppc/pnv.c: add a friendly warning when accel=kvm is used docs/system/ppc/powernv.rst: document KVM support status ppc/pnv.c: fix "system-id" FDT when -uuid is set target/ppc: introduce PMUEventType and PMU overflow timers target/ppc: PMU basic cycle count for pseries TCG target/ppc: PMU: update counters on PMCs r/w target/ppc: PMU: update counters on MMCR1 write target/ppc: enable PMU counter overflow with cycle events target/ppc: enable PMU instruction count target/ppc/power8-pmu.c: add PM_RUN_INST_CMPL (0xFA) event PPC64/TCG: Implement 'rfebb' instruction Fabiano Rosas (8): target/ppc: Disable software TLB for the 7450 family target/ppc: Disable unused facilities in the e600 CPU target/ppc: Remove the software TLB model of 7450 CPUs target/ppc: Fix MPCxxx FPU interrupt address target/ppc: Remove 603e exception model target/ppc: Set 601v exception model id target/ppc: Fix e6500 boot Revert "target/ppc: Move SPR_DSISR setting to powerpc_excp" Leonardo Garcia (5): docs: Minor updates on the powernv documentation. docs: Introducing pseries documentation. docs: rSTify ppc-spapr-hcalls.txt docs: Rename ppc-spapr-hcalls.txt to ppc-spapr-hcalls.rst. Link new ppc-spapr-hcalls.rst file to pseries.rst. Lucas Mateus Castro (alqotel) (3): target/ppc: Fixed call to deferred exception test/tcg/ppc64le: test mtfsf target/ppc: ppc_store_fpscr doesn't update bits 0 to 28 and 52 Matheus Ferst (5): target/ppc: Implement Vector Expand Mask target/ppc: Implement Vector Extract Mask target/ppc: Implement Vector Mask Move insns target/ppc: fix xscvqpdp register access target/ppc: move xscvqpdp to decodetree Peter Maydell (1): hw/ppc/mac.h: Remove MAX_CPUS macro Richard Henderson (34): softfloat: Extend float_exception_flags to 16 bits softfloat: Add flag specific to Inf - Inf softfloat: Add flag specific to Inf * 0 softfloat: Add flags specific to Inf / Inf and 0 / 0 softfloat: Add flag specific to sqrt(-x) softfloat: Add flag specific to convert non-nan to int softfloat: Add flag specific to signaling nans target/ppc: Update float_invalid_op_addsub for new flags target/ppc: Update float_invalid_op_mul for new flags target/ppc: Update float_invalid_op_div for new flags target/ppc: Move float_check_status from FPU_FCTI to translate target/ppc: Update float_invalid_cvt for new flags target/ppc: Fix VXCVI return value target/ppc: Remove inline from do_fri target/ppc: Use FloatRoundMode in do_fri target/ppc: Tidy inexact handling in do_fri target/ppc: Clean up do_fri target/ppc: Update fmadd for new flags target/ppc: Split out do_fmadd target/ppc: Do not call do_float_check_status from do_fmadd target/ppc: Split out do_frsp target/ppc: Update do_frsp for new flags target/ppc: Use helper_todouble in do_frsp target/ppc: Update sqrt for new flags target/ppc: Update xsrqpi and xsrqpxp to new flags target/ppc: Update fre to new flags softfloat: Add float64r32 arithmetic routines target/ppc: Add helpers for fmadds et al target/ppc: Add helper for fsqrts target/ppc: Add helpers for fadds, fsubs, fdivs target/ppc: Add helper for fmuls target/ppc: Add helper for frsqrtes target/ppc: Update fres to new flags and float64r32 target/ppc: Use helper_todouble/tosingle in helper_xststdcsp Thomas Huth (1): ppc: Mark the 'taihu' machine as deprecated Victor Colombo (2): target/ppc: Fix xs{max, min}[cj]dp to use VSX registers target/ppc: Move xs{max,min}[cj]dp to decodetree docs/about/deprecated.rst | 9 + docs/specs/ppc-spapr-hcalls.rst | 100 +++++ docs/specs/ppc-spapr-hcalls.txt | 78 ---- docs/system/ppc/powernv.rst | 68 ++-- docs/system/ppc/pseries.rst | 226 +++++++++++ hw/ppc/mac.h | 3 - hw/ppc/ppc405.h | 14 +- include/fpu/softfloat-types.h | 23 +- include/fpu/softfloat.h | 14 +- include/hw/pci-host/pnv_phb3.h | 3 + include/hw/pci-host/pnv_phb4.h | 5 + include/hw/ppc/pnv.h | 2 + target/ppc/cpu-models.h | 19 - target/ppc/cpu-qom.h | 12 +- target/ppc/cpu.h | 63 +++- target/ppc/helper.h | 29 +- target/ppc/power8-pmu.h | 26 ++ target/ppc/spr_tcg.h | 5 + target/ppc/insn32.decode | 54 ++- fpu/softfloat.c | 114 +++++- hw/misc/ivshmem.c | 2 +- hw/pci-host/pnv_phb3.c | 3 +- hw/pci-host/pnv_phb3_pbcq.c | 11 + hw/pci-host/pnv_phb4.c | 1 + hw/pci-host/pnv_phb4_pec.c | 75 +++- hw/ppc/mac_newworld.c | 3 +- hw/ppc/mac_oldworld.c | 3 +- hw/ppc/pnv.c | 177 +++++---- hw/ppc/ppc.c | 2 + hw/ppc/ppc405_boards.c | 245 ++++++------ hw/ppc/ppc405_uc.c | 225 ++++++----- hw/ppc/spapr_cpu_core.c | 1 + target/ppc/cpu-models.c | 34 -- target/ppc/cpu.c | 2 +- target/ppc/cpu_init.c | 658 +++------------------------------ target/ppc/excp_helper.c | 95 +++-- target/ppc/fpu_helper.c | 593 +++++++++++++++-------------- target/ppc/helper_regs.c | 7 + target/ppc/mmu_common.c | 60 +-- target/ppc/mmu_helper.c | 32 -- target/ppc/power8-pmu.c | 350 ++++++++++++++++++ target/ppc/translate.c | 104 ++++-- tests/qtest/ivshmem-test.c | 5 +- tests/tcg/ppc64le/mtfsf.c | 61 +++ fpu/softfloat-parts.c.inc | 57 +-- fpu/softfloat-specialize.c.inc | 12 +- target/ppc/power8-pmu-regs.c.inc | 69 +++- target/ppc/translate/branch-impl.c.inc | 33 ++ target/ppc/translate/fp-impl.c.inc | 53 +-- target/ppc/translate/vmx-impl.c.inc | 231 ++++++++++++ target/ppc/translate/vsx-impl.c.inc | 55 ++- target/ppc/translate/vsx-ops.c.inc | 5 - hw/ppc/trace-events | 23 ++ pc-bios/README | 2 +- pc-bios/slof.bin | Bin 991744 -> 991920 bytes roms/SLOF | 2 +- target/ppc/meson.build | 1 + tests/tcg/ppc64/Makefile.target | 1 + tests/tcg/ppc64le/Makefile.target | 1 + 59 files changed, 2514 insertions(+), 1647 deletions(-) create mode 100644 docs/specs/ppc-spapr-hcalls.rst delete mode 100644 docs/specs/ppc-spapr-hcalls.txt create mode 100644 target/ppc/power8-pmu.h create mode 100644 target/ppc/power8-pmu.c create mode 100644 tests/tcg/ppc64le/mtfsf.c create mode 100644 target/ppc/translate/branch-impl.c.inc