qemu/target-ppc
David Gibson f1af19d767 ppc: Make kvm_arch_put_registers() put *all* the registers
At least when invoked with high enough 'level' arguments,
kvm_arch_put_registers() is supposed to copy essentially all the cpu state
as encoded in qemu's internal structures into the kvm state.  Currently
the ppc version does not do this - it never calls KVM_SET_SREGS, for
example, and therefore never sets the SDR1 and various other important
though rarely changed registers.

Instead, the code paths which need to set these registers need to
explicitly make (conditional) kvm calls which transfer the changes to kvm.
This breaks the usual model of handling state updates in qemu, where code
just changes the internal model and has it flushed out to kvm automatically
at some later point.

This patch fixes this for Book S ppc CPUs by adding a suitable call to
KVM_SET_SREGS and als to KVM_SET_ONE_REG to set the HIOR (the only register
that is set with that call so far).  This lets us remove the hacks to
explicitly set these registers from the kvmppc_set_papr() function.

The problem still exists for Book E CPUs (which use a different version of
the kvm_sregs structure).  But fixing that has some complications of its
own so can be left to another day.

Lkewise, there is still some ugly code for setting the PVR through special
calls to SET_SREGS which is left in for now.  The PVR needs to be set
especially early because it can affect what other features are available
on the CPU, so I need to do more thinking to see if it can be integrated
into the normal paths or not.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
2012-10-04 15:54:17 +02:00
..
cpu-qom.h target-ppc: QOM'ify CPU 2012-04-15 17:10:30 +02:00
cpu.h PPC: BookE206: Bump MAS2 to 64bit 2012-06-24 01:04:52 +02:00
excp_helper.c PPC: Add support for MSR_CM 2012-06-24 01:04:51 +02:00
fpu_helper.c ppc: Add missing break 2012-06-24 01:04:43 +02:00
helper_regs.h Replace always_inline with inline 2009-08-16 09:06:54 +00:00
helper.c ppc: Move misc helpers from helper.c to misc_helper.c 2012-06-24 01:04:43 +02:00
helper.h PPC: BookE: Implement EPR SPR 2012-06-24 01:04:52 +02:00
int_helper.c target-ppc: get rid of the HANDLE_NAN{1, 2, 3} macros 2012-10-04 15:54:17 +02:00
kvm_ppc.c Replace Qemu by QEMU in comments 2012-04-07 14:00:45 +00:00
kvm_ppc.h ppc64: Rudimentary Support for extra page sizes on server CPUs 2012-06-24 01:04:44 +02:00
kvm.c ppc: Make kvm_arch_put_registers() put *all* the registers 2012-10-04 15:54:17 +02:00
machine.c target-ppc/machine.c: Drop unnecessary ifdefs 2012-04-15 18:23:47 +02:00
Makefile.objs PPC: BookE: Implement EPR SPR 2012-06-24 01:04:52 +02:00
mem_helper.c PPC: Add support for MSR_CM 2012-06-24 01:04:51 +02:00
mfrom_table_gen.c fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
mfrom_table.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
misc_helper.c ppc: Move misc helpers from helper.c to misc_helper.c 2012-06-24 01:04:43 +02:00
mmu_helper.c ppc64: Rudimentary Support for extra page sizes on server CPUs 2012-06-24 01:04:44 +02:00
mpic_helper.c PPC: BookE: Implement EPR SPR 2012-06-24 01:04:52 +02:00
STATUS Fix typos in comments (chek -> check) 2011-05-22 22:31:45 +01:00
timebase_helper.c ppc: Avoid AREG0 for timebase helpers 2012-06-24 01:04:43 +02:00
translate_init.c win32: provide separate macros for weak decls and definitions 2012-08-15 13:26:03 -05:00
translate.c Emit debug_insn for CPU_LOG_TB_OP_OPT as well. 2012-09-27 21:38:50 +02:00