diff --git a/qemu-fix-broken-elf-coredump-build-on-ppc.patch b/qemu-fix-broken-elf-coredump-build-on-ppc.patch
deleted file mode 100644
index 1871e94..0000000
--- a/qemu-fix-broken-elf-coredump-build-on-ppc.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 7697e70aaabc5b0ab3426274652db09117f8f7fe Mon Sep 17 00:00:00 2001
-From: Mark McLoughlin <markmc@redhat.com>
-Date: Mon, 29 Jun 2009 14:49:03 +0100
-Subject: [PATCH] Fix broken ELF coredump build on ppc
-
-kvm-87 build fails on ppc:
-
-  https://koji.fedoraproject.org/koji/getfile?taskID=1441042&name=build.log
-
-  gcc -I. -I.. -I/builddir/build/BUILD/qemu-kvm-devel-87/target-i386
-  -I/builddir/build/BUILD/qemu-kvm-devel-87 -MMD -MT elfload.o -MP
-  -DNEED_CPU_H -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-  -D__user= -I/builddir/build/BUILD/qemu-kvm-devel-87/tcg
-  -I/builddir/build/BUILD/qemu-kvm-devel-87/tcg/ppc64
-  -I/builddir/build/BUILD/qemu-kvm-devel-87/fpu
-  -I/builddir/build/BUILD/qemu-kvm-devel-87/linux-user
-  -I/builddir/build/BUILD/qemu-kvm-devel-87/linux-user/i386 -O2 -g -pipe
-  -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
-  --param=ssp-buffer-size=4 -m64 -mminimal-toc -g -fno-strict-aliasing
-  -O2 -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes
-  -Wstrict-prototypes -Wredundant-decls    -c -o elfload.o
-  /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c
-  /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:214: error: conflicting types for 'elf_greg_t'
-  /usr/include/asm/elf.h:123: note: previous declaration of 'elf_greg_t' was here
-  /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:220: error: conflicting types for 'elf_gregset_t'
-  /usr/include/asm/elf.h:124: note: previous declaration of 'elf_gregset_t' was here
-  In file included from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:697:
-  ../elf.h:457:1: warning: "R_PPC_NUM" redefined
-  In file included from /usr/include/asm/sigcontext.h:13,
-                   from /usr/include/bits/sigcontext.h:28,
-                   from /usr/include/signal.h:339,
-                   from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/qemu.h:4,
-                   from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:16:
-  /usr/include/asm/elf.h:81:1: warning: this is the location of the previous definition
-
-Code was introduced in kvm-87 by:
-
-  9edc5d7966 linux-user: added x86 and x86_64 support for ELF coredump
-  edf8e2af14 linux-user: implemented ELF coredump support for ARM target
-
-It seems ppc kernel-headers is unusual in exposing elf_greg_t
-definitions. Other arches seem to avoid doing that.
-
-Signed-off-by: Mark McLoughlin <markmc@redhat.com>
----
- linux-user/elfload.c |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/linux-user/elfload.c b/linux-user/elfload.c
-index d31cca7..f6488c7 100644
---- a/linux-user/elfload.c
-+++ b/linux-user/elfload.c
-@@ -134,6 +134,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
-     regs->rip = infop->entry;
- }
- 
-+#ifdef FIX_BROKEN_PPC_BUILD
- typedef target_ulong    elf_greg_t;
- typedef uint32_t        target_uid_t;
- typedef uint32_t        target_gid_t;
-@@ -179,6 +180,7 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
-     (*regs)[25] = env->segs[R_FS].selector & 0xffff;
-     (*regs)[26] = env->segs[R_GS].selector & 0xffff;
- }
-+#endif /* FIX_BROKEN_PPC_BUILD */
- 
- #else
- 
-@@ -211,6 +213,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
-     regs->edx = 0;
- }
- 
-+#ifdef FIX_BROKEN_PPC_BUILD
- typedef target_ulong    elf_greg_t;
- typedef uint16_t        target_uid_t;
- typedef uint16_t        target_gid_t;
-@@ -246,9 +249,12 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
-     (*regs)[15] = env->regs[R_ESP];
-     (*regs)[16] = env->segs[R_SS].selector & 0xffff;
- }
-+#endif /* FIX_BROKEN_PPC_BUILD */
- #endif
- 
-+#ifdef FIX_BROKEN_PPC_BUILD
- #define USE_ELF_CORE_DUMP
-+#endif /* FIX_BROKEN_PPC_BUILD */
- #define ELF_EXEC_PAGESIZE	4096
- 
- #endif
-@@ -286,6 +292,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
-     regs->ARM_r10 = infop->start_data;
- }
- 
-+#ifdef FIX_BROKEN_PPC_BUILD
- typedef uint32_t elf_greg_t;
- typedef uint16_t target_uid_t;
- typedef uint16_t target_gid_t;
-@@ -318,6 +325,7 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env)
- }
- 
- #define USE_ELF_CORE_DUMP
-+#endif /* FIX_BROKEN_PPC_BUILD */
- #define ELF_EXEC_PAGESIZE	4096
- 
- enum
--- 
-1.6.2.5
-
diff --git a/qemu-fix-ppc-softmmu-kvm-disabled-build.patch b/qemu-fix-ppc-softmmu-kvm-disabled-build.patch
new file mode 100644
index 0000000..314488f
--- /dev/null
+++ b/qemu-fix-ppc-softmmu-kvm-disabled-build.patch
@@ -0,0 +1,97 @@
+From 398e45e57ee98e9d1a7387816b53d7038d1c3283 Mon Sep 17 00:00:00 2001
+From: Anthony Liguori <aliguori@us.ibm.com>
+Date: Wed, 24 Jun 2009 14:25:15 -0500
+Subject: [PATCH] Fix ppc-softmmu kvm-disabled build
+
+This gets ppc-softmmu building when KVM is not enabled.  It may be enough to get
+it working with KVM enabled but I haven't checked.
+
+(cherry picked from commit 9011bae8e2101095aae53f1f1553ca3e72919f9b)
+
+Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
+Signed-off-by: Avi Kivity <avi@redhat.com>
+Signed-off-by: Mark McLoughlin <markmc@redhat.com>
+---
+ hw/ppc440.c            |    1 +
+ hw/ppc440_bamboo.c     |    1 +
+ hw/ppce500_mpc8544ds.c |    1 +
+ qemu-kvm.h             |    1 +
+ target-ppc/helper.c    |    1 +
+ target-ppc/machine.c   |    1 +
+ 6 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/hw/ppc440.c b/hw/ppc440.c
+index 00d82e4..c2c9e65 100644
+--- a/hw/ppc440.c
++++ b/hw/ppc440.c
+@@ -19,6 +19,7 @@
+ #include "ppc405.h"
+ #include "sysemu.h"
+ #include "kvm.h"
++#include "qemu-kvm.h"
+ 
+ #define PPC440EP_PCI_CONFIG     0xeec00000
+ #define PPC440EP_PCI_INTACK     0xeed00000
+diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c
+index 00aa2c7..e4aad39 100644
+--- a/hw/ppc440_bamboo.c
++++ b/hw/ppc440_bamboo.c
+@@ -22,6 +22,7 @@
+ #include "kvm.h"
+ #include "kvm_ppc.h"
+ #include "device_tree.h"
++#include "qemu-kvm.h"
+ 
+ #define BINARY_DEVICE_TREE_FILE "bamboo.dtb"
+ 
+diff --git a/hw/ppce500_mpc8544ds.c b/hw/ppce500_mpc8544ds.c
+index d9ed36c..1099b99 100644
+--- a/hw/ppce500_mpc8544ds.c
++++ b/hw/ppce500_mpc8544ds.c
+@@ -29,6 +29,7 @@
+ #include "device_tree.h"
+ #include "openpic.h"
+ #include "ppce500.h"
++#include "qemu-kvm.h"
+ 
+ #define BINARY_DEVICE_TREE_FILE    "mpc8544ds.dtb"
+ #define UIMAGE_LOAD_BASE           0
+diff --git a/qemu-kvm.h b/qemu-kvm.h
+index 68a5b40..9341d0c 100644
+--- a/qemu-kvm.h
++++ b/qemu-kvm.h
+@@ -169,6 +169,7 @@ int kvm_has_sync_mmu(void);
+ void kvm_init_vcpu(CPUState *env);
+ void kvm_load_tsc(CPUState *env);
+ #else
++#define kvm_has_sync_mmu() (0)
+ #define kvm_enabled() (0)
+ #define kvm_nested 0
+ #define qemu_kvm_irqchip_in_kernel() (0)
+diff --git a/target-ppc/helper.c b/target-ppc/helper.c
+index 5a7a935..3629c99 100644
+--- a/target-ppc/helper.c
++++ b/target-ppc/helper.c
+@@ -29,6 +29,7 @@
+ #include "helper_regs.h"
+ #include "qemu-common.h"
+ #include "kvm.h"
++#include "qemu-kvm.h"
+ 
+ //#define DEBUG_MMU
+ //#define DEBUG_BATS
+diff --git a/target-ppc/machine.c b/target-ppc/machine.c
+index 99ba3eb..ec8e197 100644
+--- a/target-ppc/machine.c
++++ b/target-ppc/machine.c
+@@ -1,6 +1,7 @@
+ #include "hw/hw.h"
+ #include "hw/boards.h"
+ #include "kvm.h"
++#include "qemu-kvm.h"
+ 
+ void cpu_save(QEMUFile *f, void *opaque)
+ {
+-- 
+1.6.2.5
+
diff --git a/qemu.spec b/qemu.spec
index 03211cf..3e9c33c 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -19,11 +19,11 @@ Source2: kvm.modules
 # Not upstream, why?
 Patch01: qemu-bios-bigger-roms.patch
 
-# Fixes linux-user build on ppc
-Patch02: qemu-fix-linux-user-build-on-ppc.patch
+# Fixes ppc-softmmu target build, cherry-picked from upstream
+Patch02: qemu-fix-ppc-softmmu-kvm-disabled-build.patch
 
 # Works around broken linux-user build on ppc
-Patch03: qemu-fix-broken-elf-coredump-build-on-ppc.patch
+Patch03: qemu-fix-linux-user-build-on-ppc.patch
 
 # Fix for hw/pcspk.c errors with --disable-kvm
 Patch04: qemu-fix-pcspk-build-with-kvm-disabled.patch