diff --git a/qemu.spec b/qemu.spec
index 4647a9f..75ef1af 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -166,13 +166,6 @@ Requires: %{name}-img = %{epoch}:%{version}-%{release}
 Obsoletes: %{name}-system-ppc
 Obsoletes: %{name}-system-sparc
 
-# Needed for F14->F16+ upgrade
-# https://bugzilla.redhat.com/show_bug.cgi?id=694802
-Obsoletes: openbios-common
-Obsoletes: openbios-ppc
-Obsoletes: openbios-sparc32
-Obsoletes: openbios-sparc64
-
 %define qemudocdir %{_docdir}/%{name}
 
 %description
@@ -380,23 +373,28 @@ such as kvm_stat.
 
 
 %build
-# By default we build everything, but allow x86 to build a minimal version
-# with only similar arch target support
+buildarch="i386-softmmu x86_64-softmmu arm-softmmu cris-softmmu \
+    m68k-softmmu mips-softmmu mipsel-softmmu mips64-softmmu \
+    mips64el-softmmu sh4-softmmu sh4eb-softmmu \
+    i386-linux-user x86_64-linux-user alpha-linux-user arm-linux-user \
+    armeb-linux-user cris-linux-user m68k-linux-user mips-linux-user \
+    mipsel-linux-user ppc-linux-user ppc64-linux-user \
+    ppc64abi32-linux-user sh4-linux-user sh4eb-linux-user \
+    sparc-linux-user sparc64-linux-user sparc32plus-linux-user"
 %if %{with x86only}
     buildarch="i386-softmmu x86_64-softmmu i386-linux-user x86_64-linux-user"
-%else
-    buildarch="i386-softmmu x86_64-softmmu arm-softmmu cris-softmmu m68k-softmmu \
-           mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu \
-           sh4-softmmu sh4eb-softmmu \
-           i386-linux-user x86_64-linux-user alpha-linux-user arm-linux-user \
-           armeb-linux-user cris-linux-user m68k-linux-user mips-linux-user \
-           mipsel-linux-user ppc-linux-user ppc64-linux-user ppc64abi32-linux-user \
-           sh4-linux-user sh4eb-linux-user sparc-linux-user sparc64-linux-user \
-           sparc32plus-linux-user" \
 %endif
 
+# Targets we don't build as of qemu 1.1.50
+# alpha-softmmu lm32-softmmu microblaze-softmmu microblazeel-softmmu
+# or32-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu
+# sparc-softmmu sparc64-softmmu s390x-softmmu xtensa-softmmu xtensaeb-softmmu
+# unicore32-softmmu
+# alpha-linux-user microblaze-linux-user microblazeel-linux-user
+# or32-linux-user unicore32-linux-user s390x-linux-user
+
 
-# --build-id option is used fedora 8 onwards for giving info to the debug packages.
+# --build-id option is used for giving info to the debug packages.
 extraldflags="-Wl,--build-id";
 buildldflags="VL_LDFLAGS=-Wl,--build-id"
 
@@ -406,35 +404,43 @@ buildldflags="VL_LDFLAGS=-Wl,--build-id"
 sed -i.debug 's/"-g $CFLAGS"/"$CFLAGS"/g' configure
 %endif
 
+
+dobuild() {
+    ./configure \
+        --prefix=%{_prefix} \
+        --sysconfdir=%{_sysconfdir} \
+        --audio-drv-list=pa,sdl,alsa,oss \
+        --disable-strip \
+        --extra-ldflags="$extraldflags -pie -Wl,-z,relro -Wl,-z,now" \
+        --extra-cflags="%{optflags} -fPIE -DPIE" \
 %ifarch %{ix86} x86_64
-# sdl outputs to alsa or pulseaudio depending on system config, but it's broken (#495964)
-# alsa works, but causes huge CPU load due to bugs
-# oss works, but is very problematic because it grabs exclusive control of the device causing other apps to go haywire
-./configure --target-list=x86_64-softmmu \
-            --prefix=%{_prefix} \
-            --sysconfdir=%{_sysconfdir} \
-            --audio-drv-list=pa,sdl,alsa,oss \
-            --disable-strip \
-            --extra-ldflags="$extraldflags -pie -Wl,-z,relro -Wl,-z,now" \
-            --extra-cflags="%{optflags} -fPIE -DPIE" \
-            --enable-spice \
-            --enable-mixemu \
+        --enable-spice \
+        --enable-mixemu \
+%endif
 %if %{without rbd}
-            --disable-rbd \
+        --disable-rbd \
 %endif
 %if %{without fdt}
-            --disable-fdt \
+        --disable-fdt \
 %endif
-            --enable-trace-backend=dtrace \
-            --disable-werror \
-            --disable-xen
+        --enable-trace-backend=dtrace \
+        --disable-werror \
+        --disable-xen \
+        "$@"
 
-echo "config-host.mak contents:"
-echo "==="
-cat config-host.mak
-echo "==="
+    echo "config-host.mak contents:"
+    echo "==="
+    cat config-host.mak
+    echo "==="
+
+    make V=1 %{?_smp_mflags} $buildldflags
+}
+
+
+# KVM enabled builds
+%ifarch %{ix86} x86_64
+dobuild --target-list=x86_64-softmmu
 
-make V=1 %{?_smp_mflags} $buildldflags
 ./scripts/tracetool.py --backend dtrace --format stap \
   --binary %{_bindir}/qemu-kvm --target-arch x86_64 --target-type system \
   --probe-prefix qemu.kvm < ./trace-events > qemu-kvm.stp
@@ -442,36 +448,10 @@ cp -a x86_64-softmmu/qemu-system-x86_64 qemu-kvm
 make clean
 %endif
 
-./configure \
-    --target-list="$buildarch" \
-    --prefix=%{_prefix} \
-    --sysconfdir=%{_sysconfdir} \
+# KVM disabled builds
+dobuild --target-list="$buildarch" \
     --interp-prefix=%{_prefix}/qemu-%%M \
-    --audio-drv-list=pa,sdl,alsa,oss \
-    --disable-kvm \
-    --disable-strip \
-    --extra-ldflags="$extraldflags -pie -Wl,-z,relro -Wl,-z,now" \
-    --extra-cflags="%{optflags} -fPIE -DPIE" \
-    --disable-xen \
-%ifarch %{ix86} x86_64
-    --enable-spice \
-    --enable-mixemu \
-%endif
-%if %{without rbd}
-    --disable-rbd \
-%endif
-%if %{without fdt}
-    --disable-fdt \
-%endif
-    --enable-trace-backend=dtrace \
-    --disable-werror
-
-echo "config-host.mak contents:"
-echo "==="
-cat config-host.mak
-echo "==="
-
-make V=1 %{?_smp_mflags} $buildldflags
+    --disable-kvm
 
 gcc %{SOURCE6} -O2 -g -o ksmctl
 
@@ -508,22 +488,35 @@ install -D -p -m 0644 -t ${RPM_BUILD_ROOT}%{qemudocdir} Changelog README TODO CO
 
 install -D -p -m 0644 qemu.sasl $RPM_BUILD_ROOT%{_sysconfdir}/sasl2/qemu.conf
 
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/pxe*bin
+# Provided by package ipxe
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/pxe*rom
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/gpxe*rom
+# Provided by package vgabios
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/vgabios*bin
+# Provided by package seabios
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/bios.bin
+# Provided by package sgabios
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/sgabios.bin
+# Provided by package openbios
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/openbios-ppc
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/openbios-sparc32
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/openbios-sparc64
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/petalogix*.dtb
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/s390-zipl.rom
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/bamboo.dtb
+# Provided by package SLOF
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/slof.bin
+# Used by PPC pSeries. We 'build' this, but it's not needed ATM
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/spapr-rtas.bin
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/ppc_rom.bin
-rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/sgabios.bin
+
+# The following aren't provided by any Fedora package
+
+# Used by target s390/s390x
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/s390-zipl.rom
 rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/palcode-clipper
+# Binary device trees for microblaze target
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/petalogix*.dtb
+# openhackware, used by PPC prep
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/ppc_rom.bin
+# Binary device tree for PPC bamboo target
+rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}/bamboo.dtb
+
 
 # the pxe gpxe images will be symlinks to the images on
 # /usr/share/ipxe, as QEMU doesn't know how to look
@@ -537,13 +530,18 @@ pxe_link ne2k_pci 10ec8029
 pxe_link pcnet 10222000
 pxe_link rtl8139 10ec8139
 pxe_link virtio 1af41000
-ln -s ../vgabios/VGABIOS-lgpl-latest.bin  %{buildroot}/%{_datadir}/%{name}/vgabios.bin
-ln -s ../vgabios/VGABIOS-lgpl-latest.cirrus.bin %{buildroot}/%{_datadir}/%{name}/vgabios-cirrus.bin
-ln -s ../vgabios/VGABIOS-lgpl-latest.qxl.bin %{buildroot}/%{_datadir}/%{name}/vgabios-qxl.bin
-ln -s ../vgabios/VGABIOS-lgpl-latest.stdvga.bin %{buildroot}/%{_datadir}/%{name}/vgabios-stdvga.bin
-ln -s ../vgabios/VGABIOS-lgpl-latest.vmware.bin %{buildroot}/%{_datadir}/%{name}/vgabios-vmware.bin
-ln -s ../seabios/bios.bin %{buildroot}/%{_datadir}/%{name}/bios.bin
-ln -s ../sgabios/sgabios.bin %{buildroot}/%{_datadir}/%{name}/sgabios.bin
+
+rom_link() {
+    ln -s $1 %{buildroot}%{_datadir}/%{name}/$2
+}
+
+rom_link ../vgabios/VGABIOS-lgpl-latest.bin vgabios.bin
+rom_link ../vgabios/VGABIOS-lgpl-latest.cirrus.bin vgabios-cirrus.bin
+rom_link ../vgabios/VGABIOS-lgpl-latest.qxl.bin vgabios-qxl.bin
+rom_link ../vgabios/VGABIOS-lgpl-latest.stdvga.bin vgabios-stdvga.bin
+rom_link ../vgabios/VGABIOS-lgpl-latest.vmware.bin vgabios-vmware.bin
+rom_link ../seabios/bios.bin bios.bin
+rom_link ../sgabios/sgabios.bin sgabios.bin
 
 mkdir -p $RPM_BUILD_ROOT%{_exec_prefix}/lib/binfmt.d
 for i in dummy \