Some recent change made PPC guests always start at address 0x0 because env isn't synced to kvm_state on first bootup.
I'm not sure if this is the correct bugfix, but at least it makes PPC boot again with KVM enabled. Signed-off-by: Alexander Graf <ag...@suse.de> --- hw/ppc_newworld.c | 4 ++++ hw/ppc_oldworld.c | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c index da868d3..2f2f091 100644 --- a/hw/ppc_newworld.c +++ b/hw/ppc_newworld.c @@ -38,6 +38,7 @@ #include "ide.h" #include "loader.h" #include "elf.h" +#include "kvm.h" #define MAX_IDE_BUS 2 #define VGA_BIOS_SIZE 65536 @@ -134,6 +135,9 @@ static void ppc_core99_init (ram_addr_t ram_size, envs[i] = env; } + /* Make sure all register sets take effect */ + cpu_synchronize_state(env); + /* allocate RAM */ ram_offset = qemu_ram_alloc(ram_size); cpu_register_physical_memory(0, ram_size, ram_offset); diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c index 9b49a3d..4d89805 100644 --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -38,6 +38,7 @@ #include "ide.h" #include "loader.h" #include "elf.h" +#include "kvm.h" #define MAX_IDE_BUS 2 #define VGA_BIOS_SIZE 65536 @@ -162,6 +163,9 @@ static void ppc_heathrow_init (ram_addr_t ram_size, envs[i] = env; } + /* Make sure all register sets take effect */ + cpu_synchronize_state(env); + /* allocate RAM */ if (ram_size > (2047 << 20)) { fprintf(stderr, -- 1.6.0.2