diff --git a/.gitignore b/.gitignore
index 1ddbab3..096eada 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
 /qemu-2.9.0-rc1.tar.xz
 /qemu-2.9.0-rc2.tar.xz
 /qemu-2.9.0-rc3.tar.xz
+/qemu-2.9.0-rc4.tar.xz
diff --git a/0001-block-Don-t-check-permissions-for-copy-on-read.patch b/0001-block-Don-t-check-permissions-for-copy-on-read.patch
deleted file mode 100644
index 9403ec5..0000000
--- a/0001-block-Don-t-check-permissions-for-copy-on-read.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 1bf03e66fd03af46ff0f98dd04b6e28f432ac1e3 Mon Sep 17 00:00:00 2001
-From: Kevin Wolf <kwolf@redhat.com>
-Date: Fri, 7 Apr 2017 12:29:05 +0200
-Subject: [PATCH] block: Don't check permissions for copy on read
-
-The assertion is currently failing. We can't require callers to have
-write permissions when all they are doing is a read, so comment it out.
-Add a FIXME comment in the code so that the check is re-enabled when
-copy on read is refactored into its own filter driver.
-
-Reported-by: Richard W.M. Jones <rjones@redhat.com>
-Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
----
- block/io.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/block/io.c b/block/io.c
-index 2709a7007f..7321ddab3d 100644
---- a/block/io.c
-+++ b/block/io.c
-@@ -945,7 +945,14 @@ static int coroutine_fn bdrv_co_do_copy_on_readv(BdrvChild *child,
-     size_t skip_bytes;
-     int ret;
- 
--    assert(child->perm & (BLK_PERM_WRITE_UNCHANGED | BLK_PERM_WRITE));
-+    /* FIXME We cannot require callers to have write permissions when all they
-+     * are doing is a read request. If we did things right, write permissions
-+     * would be obtained anyway, but internally by the copy-on-read code. As
-+     * long as it is implemented here rather than in a separat filter driver,
-+     * the copy-on-read code doesn't have its own BdrvChild, however, for which
-+     * it could request permissions. Therefore we have to bypass the permission
-+     * system for the moment. */
-+    // assert(child->perm & (BLK_PERM_WRITE_UNCHANGED | BLK_PERM_WRITE));
- 
-     /* Cover entire cluster so no additional backing file I/O is required when
-      * allocating cluster in the image file.
--- 
-2.12.0
-
diff --git a/qemu.spec b/qemu.spec
index fb494b3..02bef75 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -82,7 +82,7 @@ Requires: %{name}-block-ssh = %{epoch}:%{version}-%{release}
 %undefine _hardened_build
 
 # Release candidate version tracking
-%global rcver rc3
+%global rcver rc4
 %if 0%{?rcver:1}
 %global rcrel .%{rcver}
 %global rcstr -%{rcver}
@@ -126,8 +126,6 @@ Source21: 50-kvm-s390x.conf
 # /etc/security/limits.d/95-kvm-ppc64-memlock.conf
 Source22: 95-kvm-ppc64-memlock.conf
 
-# Upstream commit 1bf03e66fd03af46ff0f98dd04b6e28f432ac1e3.
-Patch1: 0001-block-Don-t-check-permissions-for-copy-on-read.patch
 
 # documentation deps
 BuildRequires: texinfo
@@ -294,6 +292,7 @@ As QEMU requires no host kernel patches to run, it is safe and easy to use.
 %package  common
 Summary: QEMU common files needed by all QEMU targets
 Group: Development/Tools
+Requires: ipxe-roms-qemu
 Requires(post): /usr/bin/getent
 Requires(post): /usr/sbin/groupadd
 Requires(post): /usr/sbin/useradd
@@ -532,7 +531,6 @@ Requires: %{name}-common = %{epoch}:%{version}-%{release}
 Requires: seabios-bin
 Requires: sgabios-bin
 Requires: seavgabios-bin
-Requires: ipxe-roms-qemu
 %if 0%{?have_edk2:1}
 Requires: edk2-ovmf
 %endif
@@ -813,7 +811,6 @@ Requires: %{name}-common = %{epoch}:%{version}-%{release}
 Requires: openbios
 Requires: SLOF
 Requires: seavgabios-bin
-Requires: ipxe-roms-qemu
 %description system-ppc-core
 QEMU is a generic and open source processor emulator which achieves a good
 emulation speed by using dynamic translation.
@@ -2003,6 +2000,10 @@ getent passwd qemu >/dev/null || \
 
 
 %changelog
+* Thu Apr 13 2017 Cole Robinson <crobinso@redhat.com> - 2:2.9.0-0.2-rc4
+- Rebase to qemu-2.9.0-rc4
+- Fix ipxe rom links for aarch64
+
 * Sat Apr 08 2017 Richard W.M. Jones <rjones@redhat.com> - 2:2.9.0-0.2-rc3
 - Backport upstream fix for assertion when copy-on-read=true (RHBZ#1439922).
 
diff --git a/sources b/sources
index 222c7ef..ee80fb0 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qemu-2.9.0-rc3.tar.xz) = 42ae57184c100d610a284aa4ce523373b124326f346fb31b26d113feb244425b9ca2c196d7b9218f233cd5ea5253454beb7c4370ab82ab92828c555ac6583a86
+SHA512 (qemu-2.9.0-rc4.tar.xz) = ff981d1a56edbc69715e0c7671b50f068b8255da4df7ce8368ef6807dd7976f9bfa6f1790a688780f01970a1de5bd91047cfc2444f14881e6ce9fb64842ec3d2