This series adds PSCI support to ARM and AArch64 system emulation when running in TCG mode. It's an update of the patchsent Ard sent out earlier in September which in turn is based on work by Rob Herring.
Changes v5->v6: * minor rebasing * redid the way that PSCI is plumbed into SMC/HVC handling, to fit into the support for EL2/EL3 which has landed since v5. In particular we now test for whether this is a PSCI call as a separate step from actually doing the call, since we want to prefer doing PSCI to UNDEF, but UNDEF will happen first if it happens at all. NB: this works for the virt board for both 32 bit and 64 bit CPUs. There is one bug I've seen where if you have an SMP configuration of 32 bit CPUs and do a guest reset then the guest misbehaves (segfaults, etc) after the reboot when it gets up to userspace. I'm not sure if this is the fault of these patches or just a revealed bug, so I'm sending them out for review anyway and will investigate further... thanks -- PMM Ard Biesheuvel (1): target-arm: add missing PSCI constants needed for PSCI emulation Peter Maydell (2): target-arm: Handle SMC/HVC undef-if-no-ELx in pre_* helpers target-arm: Add support for A32 and T32 HVC and SMC insns Rob Herring (4): target-arm: add powered off cpu state target-arm: do not set do_interrupt handlers for ARM and AArch64 user modes target-arm: add emulation of PSCI calls for system emulation arm/virt: enable PSCI emulation support for system emulation hw/arm/virt.c | 82 +++++++-------- target-arm/Makefile.objs | 1 + target-arm/cpu-qom.h | 7 ++ target-arm/cpu.c | 20 +++- target-arm/cpu.h | 6 ++ target-arm/cpu64.c | 2 + target-arm/helper-a64.c | 9 ++ target-arm/helper.c | 11 ++- target-arm/internals.h | 22 +++++ target-arm/kvm-consts.h | 40 ++++++++ target-arm/machine.c | 5 +- target-arm/op_helper.c | 33 +++++-- target-arm/psci.c | 242 +++++++++++++++++++++++++++++++++++++++++++++ target-arm/translate-a64.c | 4 +- target-arm/translate.c | 103 ++++++++++++++++--- target-arm/translate.h | 2 + 16 files changed, 513 insertions(+), 76 deletions(-) create mode 100644 target-arm/psci.c -- 1.9.1