diff --git a/.gitignore b/.gitignore
index 2114b13..8d27ae2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/seabios-1.7.5.tar.gz
+SOURCES/seabios-1.9.1.tar.gz
diff --git a/.seabios.metadata b/.seabios.metadata
index d1c44ef..80981d9 100644
--- a/.seabios.metadata
+++ b/.seabios.metadata
@@ -1 +1 @@
-456e418482044b19fe397075ca093ebcae0200c5 SOURCES/seabios-1.7.5.tar.gz
+f56011d5d942fc600ad9cd1cc38b9542b257f6bc SOURCES/seabios-1.9.1.tar.gz
diff --git a/SOURCES/0002-allow-1TB-of-RAM.patch b/SOURCES/0002-allow-1TB-of-RAM.patch
new file mode 100644
index 0000000..b16acf8
--- /dev/null
+++ b/SOURCES/0002-allow-1TB-of-RAM.patch
@@ -0,0 +1,67 @@
+From 4fee214c41b11b72b3427fda18e9eac1ee647746 Mon Sep 17 00:00:00 2001
+From: Andrea Arcangeli <aarcange@redhat.com>
+Date: Tue, 8 Oct 2013 17:07:23 +0200
+Subject: allow >1TB of RAM
+
+RH-Author: Andrea Arcangeli <aarcange@redhat.com>
+Message-id: <1381252043-13480-2-git-send-email-aarcange@redhat.com>
+Patchwork-id: 54785
+O-Subject: [RHEL-7.0 seabios PATCH] allow >1TB of RAM
+Bugzilla: 1016974
+RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
+RH-Acked-by: Gleb Natapov <gleb@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+
+Receive bits 40-48 from qemu to setup e820 maps with more than 1TB of ram.
+
+Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
+---
+ src/cmos.h | 7 ++++---
+ src/post.c | 7 ++++---
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/fw/paravirt.c | 7 ++++---
+ src/hw/rtc.h      | 7 ++++---
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c
+index 3fae13a..0ad2bd6 100644
+--- a/src/fw/paravirt.c
++++ b/src/fw/paravirt.c
+@@ -387,9 +387,10 @@ qemu_cfg_e820(void)
+     }
+ 
+     // Check for memory over 4Gig in cmos
+-    u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_LOW) << 16)
+-                | ((u32)rtc_read(CMOS_MEM_HIGHMEM_MID) << 24)
+-                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_HIGH) << 32));
++    u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_16) << 16)
++                | ((u32)rtc_read(CMOS_MEM_HIGHMEM_24) << 24)
++                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_32) << 32)
++                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_40) << 40));
+     RamSizeOver4G = high;
+     e820_add(0x100000000ull, high, E820_RAM);
+     dprintf(1, "RamSizeOver4G: 0x%016llx [cmos]\n", RamSizeOver4G);
+diff --git a/src/hw/rtc.h b/src/hw/rtc.h
+index 252e73a..c4369f8 100644
+--- a/src/hw/rtc.h
++++ b/src/hw/rtc.h
+@@ -41,9 +41,10 @@
+ #define CMOS_BIOS_BOOTFLAG1      0x38
+ #define CMOS_BIOS_DISKTRANSFLAG  0x39
+ #define CMOS_BIOS_BOOTFLAG2      0x3d
+-#define CMOS_MEM_HIGHMEM_LOW     0x5b
+-#define CMOS_MEM_HIGHMEM_MID     0x5c
+-#define CMOS_MEM_HIGHMEM_HIGH    0x5d
++#define CMOS_MEM_HIGHMEM_16      0x5b
++#define CMOS_MEM_HIGHMEM_24      0x5c
++#define CMOS_MEM_HIGHMEM_32      0x5d
++#define CMOS_MEM_HIGHMEM_40      0x5e
+ #define CMOS_BIOS_SMP_COUNT      0x5f
+ 
+ // RTC register flags
+-- 
+1.8.3.1
+
diff --git a/SOURCES/0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch b/SOURCES/0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
new file mode 100644
index 0000000..9d5656b
--- /dev/null
+++ b/SOURCES/0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
@@ -0,0 +1,45 @@
+From bf361def4623ac1942512f255e5c1450970b5092 Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Mon, 28 Jul 2014 12:14:11 +0200
+Subject: smbios: set bios vendor/version fields to Seabios/0.5.1
+
+Message-id: <1406549651-26021-2-git-send-email-kraxel@redhat.com>
+Patchwork-id: 60264
+O-Subject: [RHEL-7.1 seabios PATCH 1/1] smbios: set bios vendor/version fields to Seabios/0.5.1
+Bugzilla: 1123299
+RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
+
+Mimic rhel6/seabios commit 1389643dad35a63362cd7d8357693f01175ef473.
+Affects all 6.x and 7.0 machine types.
+
+Note: 7.1+ machine types will switch over to the new-style smbios
+handling in qemu 2.1 + seabios 1.7.5 (and ovmf), where seabios will
+fill in the actual version information instead of the bogous 0.5.1
+which we are using here for backward compatibility reasons.
+
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/fw/smbios.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/fw/smbios.c b/src/fw/smbios.c
+index f3b5ad9..2770ff7 100644
+--- a/src/fw/smbios.c
++++ b/src/fw/smbios.c
+@@ -174,8 +174,8 @@ smbios_init_type_0(void *start)
+     p->header.length = sizeof(struct smbios_type_0);
+     p->header.handle = 0;
+ 
+-    load_str_field_with_default(0, vendor_str, BUILD_APPNAME);
+-    load_str_field_with_default(0, bios_version_str, BUILD_APPNAME);
++    load_str_field_with_default(0, vendor_str, "Seabios");
++    load_str_field_with_default(0, bios_version_str, "0.5.1");
+ 
+     p->bios_starting_address_segment = 0xe800;
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch b/SOURCES/0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch
new file mode 100644
index 0000000..1346099
--- /dev/null
+++ b/SOURCES/0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch
@@ -0,0 +1,73 @@
+From aa1c26538deecfd820b7da9b3be09ebc20b7fef9 Mon Sep 17 00:00:00 2001
+From: Radim Krcmar <rkrcmar@redhat.com>
+Date: Mon, 10 Mar 2014 15:14:27 +0100
+Subject: Workaround for a win8.1-32 S4 resume bug
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+RH-Author: Radim Krcmar <rkrcmar@redhat.com>
+Message-id: <1394464467-23560-1-git-send-email-rkrcmar@redhat.com>
+Patchwork-id: 58069
+O-Subject: [RHEL7.0 seabios PATCH] Workaround for a win8.1-32 S4 resume bug
+Bugzilla: 1050775
+RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
+RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+
+bug:  https://bugzilla.redhat.com/show_bug.cgi?id=1050775
+brew: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=7176174
+This patch has no upstream equivalent.
+
+When a 32 bit version of windows 8.1 resumes from suspend, it writes 1
+into 0x72 in the early boot because it didn't expect a NULL pointer.
+0x72 is lower offset byte of 0x1c interrupt entry, so we jump into a
+middle of other function if this interrupt is triggered.
+
+Because 0x1c is only triggered from our handle_08, we detect if our
+default value (function that does only iret) has its lower offset byte
+overwritten and skip it in that case.
+(Windows never sets own callback there, so we always detect this bug
+ correctly, as seabios doesn't use it either
+ Other sources shouldn't incorrectly overwrite it or use seabios code,
+ but it is quite ok even if the guest did this on purpose.)
+
+The reason Windows uses NULL pointer is still unknown, but this bug is
+blocking WHQL certification, so we have to work around it in 7.0.
+
+Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
+---
+(It is either a Windows bug that is going to be solved on their side,
+ or we will find a better solution after consulting what went wrong.
+ Happens on RHEL6 too.)
+
+ src/clock.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/clock.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/clock.c b/src/clock.c
+index e83e0f3..bca5cd7 100644
+--- a/src/clock.c
++++ b/src/clock.c
+@@ -308,7 +308,13 @@ handle_08(void)
+     struct bregs br;
+     memset(&br, 0, sizeof(br));
+     br.flags = F_IF;
+-    call16_int(0x1c, &br);
++    struct segoff_s isr1c = GET_IVT(0x1c);
++    // hardcoded address of entry_iret_official with lower segment byte
++    // overwritten by 1
++    if (isr1c.seg == ((SEG_BIOS & ~0xff) | 0x1) && isr1c.offset == 0xff53)
++        dprintf(1, "Worked around win8.1-32 S4 resume bug\n");
++    else
++        call16_int(0x1c, &br);
+ 
+     pic_eoi1();
+ }
+-- 
+1.8.3.1
+
diff --git a/SOURCES/config.base b/SOURCES/config.base
index 0471a5e..f7ff3fa 100644
--- a/SOURCES/config.base
+++ b/SOURCES/config.base
@@ -4,4 +4,9 @@ CONFIG_LSI_SCSI=n
 CONFIG_USB_OHCI=n
 CONFIG_BOOTSPLASH=n
 CONFIG_MEGASAS=n
+CONFIG_PVSCSI=n
 CONFIG_ROM_SIZE=128
+CONFIG_USB_OHCI=n
+CONFIG_USB_XHCI=n
+CONFIG_USB_UAS=n
+CONFIG_TCGBIOS=n
diff --git a/SOURCES/config.vga.virtio b/SOURCES/config.vga.virtio
new file mode 100644
index 0000000..aa7a15b
--- /dev/null
+++ b/SOURCES/config.vga.virtio
@@ -0,0 +1,6 @@
+CONFIG_BUILD_VGABIOS=y
+CONFIG_VGA_BOCHS=y
+CONFIG_VGA_PCI=y
+CONFIG_OVERRIDE_PCI_ID=y
+CONFIG_VGA_VID=0x1af4
+CONFIG_VGA_DID=0x1050
diff --git a/SOURCES/seabios-Place-rpm-version-info-into-version-banner.patch b/SOURCES/seabios-Place-rpm-version-info-into-version-banner.patch
deleted file mode 100644
index 1e5f210..0000000
--- a/SOURCES/seabios-Place-rpm-version-info-into-version-banner.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From af34ffb86a1b8717e542edca97d7d96e6bd90f08 Mon Sep 17 00:00:00 2001
-From: Miroslav Rezanina <mrezanin@redhat.com>
-Date: Thu, 22 Aug 2013 12:06:40 +0200
-Subject: Place rpm version info into version banner
-
-RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
-Message-id: <1377173200-17433-1-git-send-email-mrezanin@redhat.com>
-Patchwork-id: 53692
-O-Subject: [RHEL7 seabios PATCH] Place rpm version info into version banner
-Bugzilla: 894979
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Bandan Das <bsd@redhat.com>
-RH-Acked-by: Michal Novotny <minovotn@redhat.com>
-
-From: Miroslav Rezanina <mrezanin@redhat.com>
-
-Bugzilla: 894979
-Brew: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=6199274
-
-This patch introduces two changes:
-
-1) Do not append date and hostname to version string.
-
-2) Use rpm version insted of git commit as the version string.
-
-Both changes are trivial so they are not posted in separate patches.
-
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- redhat/seabios.spec.template | 5 ++---
- tools/buildversion.sh        | 1 -
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
-
-Conflicts:
-	redhat/seabios.spec.template - We solved 1) in rebase commit
----
- scripts/buildversion.sh | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/scripts/buildversion.sh b/scripts/buildversion.sh
-index e5ce96c..338b7f0 100755
---- a/scripts/buildversion.sh
-+++ b/scripts/buildversion.sh
-@@ -11,7 +11,6 @@ elif [ -f .version ]; then
- else
-     VERSION="?"
- fi
--VERSION="${VERSION}-`date +"%Y%m%d_%H%M%S"`-`hostname`"
- echo "Version: ${VERSION}"
- 
- # Build header file
--- 
-1.9.3
-
diff --git a/SOURCES/seabios-Workaround-for-a-win8.1-32-S4-resume-bug.patch b/SOURCES/seabios-Workaround-for-a-win8.1-32-S4-resume-bug.patch
deleted file mode 100644
index 2d7deeb..0000000
--- a/SOURCES/seabios-Workaround-for-a-win8.1-32-S4-resume-bug.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From ce6fabfc8e1d11c70d83404c56464252c6eacac6 Mon Sep 17 00:00:00 2001
-From: Radim Krcmar <rkrcmar@redhat.com>
-Date: Mon, 10 Mar 2014 15:14:27 +0100
-Subject: [PATCH 1/2] Workaround for a win8.1-32 S4 resume bug
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-RH-Author: Radim Krcmar <rkrcmar@redhat.com>
-Message-id: <1394464467-23560-1-git-send-email-rkrcmar@redhat.com>
-Patchwork-id: 58069
-O-Subject: [RHEL7.0 seabios PATCH] Workaround for a win8.1-32 S4 resume bug
-Bugzilla: 1050775
-RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-bug:  https://bugzilla.redhat.com/show_bug.cgi?id=1050775
-brew: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=7176174
-This patch has no upstream equivalent.
-
-When a 32 bit version of windows 8.1 resumes from suspend, it writes 1
-into 0x72 in the early boot because it didn't expect a NULL pointer.
-0x72 is lower offset byte of 0x1c interrupt entry, so we jump into a
-middle of other function if this interrupt is triggered.
-
-Because 0x1c is only triggered from our handle_08, we detect if our
-default value (function that does only iret) has its lower offset byte
-overwritten and skip it in that case.
-(Windows never sets own callback there, so we always detect this bug
- correctly, as seabios doesn't use it either
- Other sources shouldn't incorrectly overwrite it or use seabios code,
- but it is quite ok even if the guest did this on purpose.)
-
-The reason Windows uses NULL pointer is still unknown, but this bug is
-blocking WHQL certification, so we have to work around it in 7.0.
-
-Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
----
-(It is either a Windows bug that is going to be solved on their side,
- or we will find a better solution after consulting what went wrong.
- Happens on RHEL6 too.)
-
- src/clock.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/clock.c |    8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/src/clock.c b/src/clock.c
-index 9ab0ac0..456849e 100644
---- a/src/clock.c
-+++ b/src/clock.c
-@@ -289,7 +289,13 @@ handle_08(void)
-     struct bregs br;
-     memset(&br, 0, sizeof(br));
-     br.flags = F_IF;
--    call16_int(0x1c, &br);
-+    struct segoff_s isr1c = GET_IVT(0x1c);
-+    // hardcoded address of entry_iret_official with lower segment byte
-+    // overwritten by 1
-+    if (isr1c.seg == ((SEG_BIOS & ~0xff) | 0x1) && isr1c.offset == 0xff53)
-+        dprintf(1, "Worked around win8.1-32 S4 resume bug\n");
-+    else
-+        call16_int(0x1c, &br);
- 
-     pic_eoi1();
- }
--- 
-1.7.1
-
diff --git a/SOURCES/seabios-allow-1TB-of-RAM.patch b/SOURCES/seabios-allow-1TB-of-RAM.patch
deleted file mode 100644
index b069dc0..0000000
--- a/SOURCES/seabios-allow-1TB-of-RAM.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From f8461b3d0468a0ff2807ba1445513f3725ba350a Mon Sep 17 00:00:00 2001
-From: Andrea Arcangeli <aarcange@redhat.com>
-Date: Tue, 8 Oct 2013 17:07:23 +0200
-Subject: allow >1TB of RAM
-
-RH-Author: Andrea Arcangeli <aarcange@redhat.com>
-Message-id: <1381252043-13480-2-git-send-email-aarcange@redhat.com>
-Patchwork-id: 54785
-O-Subject: [RHEL-7.0 seabios PATCH] allow >1TB of RAM
-Bugzilla: 1016974
-RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
-RH-Acked-by: Gleb Natapov <gleb@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-Receive bits 40-48 from qemu to setup e820 maps with more than 1TB of ram.
-
-Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
----
- src/cmos.h | 7 ++++---
- src/post.c | 7 ++++---
- 2 files changed, 8 insertions(+), 6 deletions(-)
-
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/fw/paravirt.c | 7 ++++---
- src/hw/rtc.h      | 7 ++++---
- 2 files changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c
-index db22ae8..34fd0ac 100644
---- a/src/fw/paravirt.c
-+++ b/src/fw/paravirt.c
-@@ -334,9 +334,10 @@ qemu_cfg_e820(void)
-     }
- 
-     // Check for memory over 4Gig in cmos
--    u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_LOW) << 16)
--                | ((u32)rtc_read(CMOS_MEM_HIGHMEM_MID) << 24)
--                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_HIGH) << 32));
-+    u64 high = ((rtc_read(CMOS_MEM_HIGHMEM_16) << 16)
-+                | ((u32)rtc_read(CMOS_MEM_HIGHMEM_24) << 24)
-+                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_32) << 32)
-+                | ((u64)rtc_read(CMOS_MEM_HIGHMEM_40) << 40));
-     RamSizeOver4G = high;
-     add_e820(0x100000000ull, high, E820_RAM);
-     dprintf(1, "RamSizeOver4G: 0x%016llx [cmos]\n", RamSizeOver4G);
-diff --git a/src/hw/rtc.h b/src/hw/rtc.h
-index 252e73a..c4369f8 100644
---- a/src/hw/rtc.h
-+++ b/src/hw/rtc.h
-@@ -41,9 +41,10 @@
- #define CMOS_BIOS_BOOTFLAG1      0x38
- #define CMOS_BIOS_DISKTRANSFLAG  0x39
- #define CMOS_BIOS_BOOTFLAG2      0x3d
--#define CMOS_MEM_HIGHMEM_LOW     0x5b
--#define CMOS_MEM_HIGHMEM_MID     0x5c
--#define CMOS_MEM_HIGHMEM_HIGH    0x5d
-+#define CMOS_MEM_HIGHMEM_16      0x5b
-+#define CMOS_MEM_HIGHMEM_24      0x5c
-+#define CMOS_MEM_HIGHMEM_32      0x5d
-+#define CMOS_MEM_HIGHMEM_40      0x5e
- #define CMOS_BIOS_SMP_COUNT      0x5f
- 
- // RTC register flags
--- 
-1.9.3
-
diff --git a/SOURCES/seabios-boot-Fix-boot-order-for-SCSI-target-lun-9.patch b/SOURCES/seabios-boot-Fix-boot-order-for-SCSI-target-lun-9.patch
deleted file mode 100644
index d5688cd..0000000
--- a/SOURCES/seabios-boot-Fix-boot-order-for-SCSI-target-lun-9.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 4ca7fbed401c2aa39fea49859f4b89c839a36684 Mon Sep 17 00:00:00 2001
-From: Markus Armbruster <armbru@pond.sub.org>
-Date: Fri, 15 Aug 2014 15:05:26 +0200
-Subject: [PATCH 2/2] boot: Fix boot order for SCSI target, lun > 9
-
-Message-id: <1408115126-2841-2-git-send-email-armbru@pond.sub.org>
-Patchwork-id: 60594
-O-Subject: [PATCH RHEL-7.1 seabios 1/1] boot: Fix boot order for SCSI target, lun > 9
-Bugzilla: 1096560
-RH-Acked-by: Amos Kong <akong@redhat.com>
-RH-Acked-by: Jeff Nelson <jenelson@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-From: Markus Armbruster <armbru@redhat.com>
-
-We identify devices by their Open Firmware device paths.  The path
-component for the logical unit on a bus is incorrect:
-bootprio_find_scsi_device() and bootprio_find_usb() format target
-(a.k.a. SCSI ID) and lun in decimal, while QEMU uses hexadecimal.
-Bootorder list entries with target, lun > 9 aren't found (lucky case),
-or attributed to the wrong logical unit (unlucky case).
-
-The relevant spec[*] agrees with QEMU (and OVMF, for that matter).
-Change %d to %x.
-
-No actual impact on USB, because QEMU only uses LUN 0 there.
-
-RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1096560
-
-[*] Open Firmware Recommended Practice: SCSI-3 Parallel Interface,
-Version 1, Section 3.1 Physical Address Formats and Representations
-http://www.openfirmware.org/1275/practice/spi/spi1_0.ps
-IEEE Standard for Boot (Initialization Configuration) Firmware: Core
-Requirements and Practices, IEEE Std 1275-1994, Annex E SCSI host
-adapter package class, section E.2.1 Physical address formats and
-representations
-
-Signed-off-by: Markus Armbruster <armbru@redhat.com>
-(cherry picked from commit 275672eb70efdf81c51b997d41a4409b404aa8f6)
-Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
----
- src/boot.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/boot.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/boot.c b/src/boot.c
-index 133e206..e60ed3e 100644
---- a/src/boot.c
-+++ b/src/boot.c
-@@ -145,7 +145,7 @@ int bootprio_find_scsi_device(struct pci_device *pci, int target, int lun)
-     // Find scsi drive - for example: /pci@i0cf8/scsi@5/channel@0/disk@1,0
-     char desc[256], *p;
-     p = build_pci_path(desc, sizeof(desc), "*", pci);
--    snprintf(p, desc+sizeof(desc)-p, "/*@0/*@%d,%d", target, lun);
-+    snprintf(p, desc+sizeof(desc)-p, "/*@0/*@%x,%x", target, lun);
-     return find_prio(desc);
- }
- 
-@@ -224,7 +224,7 @@ int bootprio_find_usb(struct usbdevice_s *usbdev, int lun)
-     char desc[256], *p;
-     p = build_pci_path(desc, sizeof(desc), "usb", usbdev->hub->cntl->pci);
-     p = build_usb_path(p, desc+sizeof(desc)-p, usbdev->hub);
--    snprintf(p, desc+sizeof(desc)-p, "/storage@%x/*@0/*@0,%d"
-+    snprintf(p, desc+sizeof(desc)-p, "/storage@%x/*@0/*@0,%x"
-              , usbdev->port+1, lun);
-     int ret = find_prio(desc);
-     if (ret >= 0)
--- 
-1.7.1
-
diff --git a/SOURCES/seabios-boot-switch-default-menu-key-to-ESC.patch b/SOURCES/seabios-boot-switch-default-menu-key-to-ESC.patch
deleted file mode 100644
index cea5605..0000000
--- a/SOURCES/seabios-boot-switch-default-menu-key-to-ESC.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 24de64725e1000741dc9694464a3c4db4eaa0e36 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Thu, 9 Apr 2015 13:17:21 +0200
-Subject: [PATCH 2/2] boot: switch default menu key to ESC
-
-Message-id: <1428585441-26367-3-git-send-email-pbonzini@redhat.com>
-Patchwork-id: 64759
-O-Subject: [PATCH RHEL7.2 seabios 2/2] boot: switch default menu key to ESC
-Bugzilla: 841638
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-On some platforms, F12 may be hard to access; for example, on OS X
-machines F9-F12 have been intercepted by the OS for a long time, and
-on newer OS X releases function keys are basically gone for good.
-
-Which keys are and are not available depends on the client, not on
-the server, but only function keys are usually trapped by terminals.
-Hence, using ESC for the boot menu avoids the problems associated
-with F12.
-
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-(cherry picked from commit a1ac8861049a5ffefc26ca294293ad666954fcc8)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
-
-Conflicts:
-	docs/Runtime_config.md [not in RHEL].
----
- src/boot.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/boot.c b/src/boot.c
-index ac79724..a719349 100644
---- a/src/boot.c
-+++ b/src/boot.c
-@@ -459,8 +459,8 @@ interactive_bootmenu(void)
-         ;
- 
-     char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL);
--    int menukey = romfile_loadint("etc/boot-menu-key", 0x86);
--    printf("%s", bootmsg ?: "\nPress F12 for boot menu.\n\n");
-+    int menukey = romfile_loadint("etc/boot-menu-key", 1);
-+    printf("%s", bootmsg ?: "\nPress ESC for boot menu.\n\n");
-     free(bootmsg);
- 
-     u32 menutime = romfile_loadint("etc/boot-menu-wait", DEFAULT_BOOTMENU_WAIT);
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-boot.c-delay-exiting-boot-if-menu-key-is-ESC.patch b/SOURCES/seabios-boot.c-delay-exiting-boot-if-menu-key-is-ESC.patch
deleted file mode 100644
index 7c22a4f..0000000
--- a/SOURCES/seabios-boot.c-delay-exiting-boot-if-menu-key-is-ESC.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 268461b7509f5d5a6b9b6d37ee8178966a3ff855 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Thu, 9 Apr 2015 13:17:20 +0200
-Subject: [PATCH 1/2] boot.c: delay exiting boot if menu key is ESC
-
-Message-id: <1428585441-26367-2-git-send-email-pbonzini@redhat.com>
-Patchwork-id: 64758
-O-Subject: [PATCH RHEL7.2 seabios 1/2] boot.c: delay exiting boot if menu key is ESC
-Bugzilla: 841638
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-If the menu key is ESC, do not restart boot unless
-1.5 seconds have passed.  Otherwise users (trained by years of
-repeatedly hitting keys to enter the BIOS) will end up hitting ESC
-multiple times and immediately booting the primary boot device.
-
-Suggested-by: Matt DeVillier <matt.devillier@gmail.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-(cherry picked from commit 80aae26c9ef060bde15aebd84d0cc79a978706a9)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/boot.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/boot.c b/src/boot.c
-index e60ed3e..ac79724 100644
---- a/src/boot.c
-+++ b/src/boot.c
-@@ -486,9 +486,15 @@ interactive_bootmenu(void)
-                , strtcpy(desc, pos->description, ARRAY_SIZE(desc)));
-     }
- 
--    // Get key press
-+    // Get key press.  If the menu key is ESC, do not restart boot unless
-+    // 1.5 seconds have passed.  Otherwise users (trained by years of
-+    // repeatedly hitting keys to enter the BIOS) will end up hitting ESC
-+    // multiple times and immediately booting the primary boot device.
-+    int esc_accepted_time = irqtimer_calc(menukey == 1 ? 1500 : 0);
-     for (;;) {
-         scan_code = get_keystroke(1000);
-+        if (scan_code == 1 && !irqtimer_check(esc_accepted_time))
-+            continue;
-         if (scan_code >= 1 && scan_code <= maxmenu+1)
-             break;
-     }
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-bootorder-Update-extra-pci-root-buses-bootorder-form.patch b/SOURCES/seabios-bootorder-Update-extra-pci-root-buses-bootorder-form.patch
deleted file mode 100644
index 6614e9e..0000000
--- a/SOURCES/seabios-bootorder-Update-extra-pci-root-buses-bootorder-form.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 1522cd13558aa821de7435b291d47009907f3466 Mon Sep 17 00:00:00 2001
-From: Marcel Apfelbaum <marcel@redhat.com>
-Date: Tue, 14 Jul 2015 15:23:13 -0400
-Subject: [PATCH] bootorder: Update "extra pci root" buses bootorder format to
- match qemu
-
-Message-id: <1436887393-17958-1-git-send-email-marcel@redhat.com>
-Patchwork-id: 67011
-O-Subject: [RHEL-7.2 seabios PATCH] bootorder: Update "extra pci root" buses bootorder format to match qemu
-Bugzilla: 1242968
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-From: Kevin O'Connor <kevin@koconnor.net>
-
-The QEMU code will use the prefix "/pci@i0cf8,%x/" for devices on
-extra pci root buses, so change the SeaBIOS code to match that.
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-(cherry picked from commit 1202f03583f3b8b46e2de6b82630054d53e24801)
-Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
-Signed-off-by: ymankad <ymankad@redhat.com>
----
- src/boot.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/boot.c b/src/boot.c
-index a719349..05cb3e4 100644
---- a/src/boot.c
-+++ b/src/boot.c
-@@ -111,9 +111,9 @@ build_pci_path(char *buf, int max, const char *devname, struct pci_device *pci)
-     if (pci->parent) {
-         p = build_pci_path(p, max, "pci-bridge", pci->parent);
-     } else {
--        if (pci->rootbus)
--            p += snprintf(p, max, "/pci-root@%x", pci->rootbus);
-         p += snprintf(p, buf+max-p, "%s", FW_PCI_DOMAIN);
-+        if (pci->rootbus)
-+            p += snprintf(p, buf+max-p, ",%x", pci->rootbus);
-     }
- 
-     int dev = pci_bdf_to_dev(pci->bdf), fn = pci_bdf_to_fn(pci->bdf);
--- 
-2.4.0
-
diff --git a/SOURCES/seabios-fw-pci-add-Q35-S3-support.patch b/SOURCES/seabios-fw-pci-add-Q35-S3-support.patch
new file mode 100644
index 0000000..902e4ef
--- /dev/null
+++ b/SOURCES/seabios-fw-pci-add-Q35-S3-support.patch
@@ -0,0 +1,167 @@
+From 64181e8938e1ebb31375bfb5372190a2f3f1ad60 Mon Sep 17 00:00:00 2001
+From: Marcel Apfelbaum <marcel@redhat.com>
+Date: Thu, 31 Mar 2016 16:19:03 +0200
+Subject: [PATCH] fw/pci: add Q35 S3 support
+
+RH-Author: Marcel Apfelbaum <marcel@redhat.com>
+Message-id: <1459441143-24378-1-git-send-email-marcel@redhat.com>
+Patchwork-id: 69965
+O-Subject: [RHEL-7.3 seabios PATCH] fw/pci: add Q35 S3 support
+Bugzilla: 1185721
+RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
+
+Following the i440fx example, save the LPC, SMBUS and PCIEXBAR bdfs
+between OS sleeps and use them to re-configure the
+corresponding registers.
+
+Tested-by: Gal Hammer <ghammer@redhat.com>
+Reviewed-by: Laszlo Ersek <lersek@redhat.com>
+Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
+(cherry picked from commit dce99e01b6bfc51175bdf32612fd4f2738e5c3c8)
+Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/fw/pciinit.c | 73 +++++++++++++++++++++++++++++++++++++++++++-------------
+ 1 file changed, 56 insertions(+), 17 deletions(-)
+
+diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c
+index c31c2fa..7896600 100644
+--- a/src/fw/pciinit.c
++++ b/src/fw/pciinit.c
+@@ -149,6 +149,22 @@ static void piix_isa_bridge_setup(struct pci_device *pci, void *arg)
+     dprintf(1, "PIIX3/PIIX4 init: elcr=%02x %02x\n", elcr[0], elcr[1]);
+ }
+ 
++static void mch_isa_lpc_setup(u16 bdf)
++{
++    /* pm io base */
++    pci_config_writel(bdf, ICH9_LPC_PMBASE,
++                      acpi_pm_base | ICH9_LPC_PMBASE_RTE);
++
++    /* acpi enable, SCI: IRQ9 000b = irq9*/
++    pci_config_writeb(bdf, ICH9_LPC_ACPI_CTRL, ICH9_LPC_ACPI_CTRL_ACPI_EN);
++
++    /* set root complex register block BAR */
++    pci_config_writel(bdf, ICH9_LPC_RCBA,
++                      ICH9_LPC_RCBA_ADDR | ICH9_LPC_RCBA_EN);
++}
++
++static int ICH9LpcBDF = -1;
++
+ /* ICH9 LPC PCI to ISA bridge */
+ /* PCI_VENDOR_ID_INTEL && PCI_DEVICE_ID_INTEL_ICH9_LPC */
+ static void mch_isa_bridge_setup(struct pci_device *dev, void *arg)
+@@ -176,16 +192,10 @@ static void mch_isa_bridge_setup(struct pci_device *dev, void *arg)
+     outb(elcr[1], ICH9_LPC_PORT_ELCR2);
+     dprintf(1, "Q35 LPC init: elcr=%02x %02x\n", elcr[0], elcr[1]);
+ 
+-    /* pm io base */
+-    pci_config_writel(bdf, ICH9_LPC_PMBASE,
+-                      acpi_pm_base | ICH9_LPC_PMBASE_RTE);
++    ICH9LpcBDF = bdf;
+ 
+-    /* acpi enable, SCI: IRQ9 000b = irq9*/
+-    pci_config_writeb(bdf, ICH9_LPC_ACPI_CTRL, ICH9_LPC_ACPI_CTRL_ACPI_EN);
++    mch_isa_lpc_setup(bdf);
+ 
+-    /* set root complex register block BAR */
+-    pci_config_writel(bdf, ICH9_LPC_RCBA,
+-                      ICH9_LPC_RCBA_ADDR | ICH9_LPC_RCBA_EN);
+     e820_add(ICH9_LPC_RCBA_ADDR, 16*1024, E820_RESERVED);
+ 
+     acpi_pm1a_cnt = acpi_pm_base + 0x04;
+@@ -244,11 +254,8 @@ static void piix4_pm_setup(struct pci_device *pci, void *arg)
+     pmtimer_setup(acpi_pm_base + 0x08);
+ }
+ 
+-/* ICH9 SMBUS */
+-/* PCI_VENDOR_ID_INTEL && PCI_DEVICE_ID_INTEL_ICH9_SMBUS */
+-static void ich9_smbus_setup(struct pci_device *dev, void *arg)
++static void ich9_smbus_enable(u16 bdf)
+ {
+-    u16 bdf = dev->bdf;
+     /* map smbus into io space */
+     pci_config_writel(bdf, ICH9_SMB_SMB_BASE,
+                       (acpi_pm_base + 0x100) | PCI_BASE_ADDRESS_SPACE_IO);
+@@ -257,6 +264,17 @@ static void ich9_smbus_setup(struct pci_device *dev, void *arg)
+     pci_config_writeb(bdf, ICH9_SMB_HOSTC, ICH9_SMB_HOSTC_HST_EN);
+ }
+ 
++static int ICH9SmbusBDF = -1;
++
++/* ICH9 SMBUS */
++/* PCI_VENDOR_ID_INTEL && PCI_DEVICE_ID_INTEL_ICH9_SMBUS */
++static void ich9_smbus_setup(struct pci_device *dev, void *arg)
++{
++    ICH9SmbusBDF = dev->bdf;
++
++    ich9_smbus_enable(dev->bdf);
++}
++
+ static const struct pci_device_id pci_device_tbl[] = {
+     /* PIIX3/PIIX4 PCI to ISA bridge */
+     PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_0,
+@@ -293,6 +311,9 @@ static const struct pci_device_id pci_device_tbl[] = {
+     PCI_DEVICE_END,
+ };
+ 
++static int MCHMmcfgBDF = -1;
++static void mch_mmconfig_setup(u16 bdf);
++
+ void pci_resume(void)
+ {
+     if (!CONFIG_QEMU) {
+@@ -302,6 +323,18 @@ void pci_resume(void)
+     if (PiixPmBDF >= 0) {
+         piix4_pm_config_setup(PiixPmBDF);
+     }
++
++    if (ICH9LpcBDF >= 0) {
++        mch_isa_lpc_setup(ICH9LpcBDF);
++    }
++
++    if (ICH9SmbusBDF >= 0) {
++        ich9_smbus_enable(ICH9SmbusBDF);
++    }
++
++    if(MCHMmcfgBDF >= 0) {
++        mch_mmconfig_setup(MCHMmcfgBDF);
++    }
+ }
+ 
+ static void pci_bios_init_device(struct pci_device *pci)
+@@ -388,18 +421,24 @@ static void i440fx_mem_addr_setup(struct pci_device *dev, void *arg)
+     pci_slot_get_irq = piix_pci_slot_get_irq;
+ }
+ 
+-static void mch_mem_addr_setup(struct pci_device *dev, void *arg)
++static void mch_mmconfig_setup(u16 bdf)
+ {
+     u64 addr = Q35_HOST_BRIDGE_PCIEXBAR_ADDR;
+-    u32 size = Q35_HOST_BRIDGE_PCIEXBAR_SIZE;
+-
+-    /* setup mmconfig */
+-    u16 bdf = dev->bdf;
+     u32 upper = addr >> 32;
+     u32 lower = (addr & 0xffffffff) | Q35_HOST_BRIDGE_PCIEXBAREN;
+     pci_config_writel(bdf, Q35_HOST_BRIDGE_PCIEXBAR, 0);
+     pci_config_writel(bdf, Q35_HOST_BRIDGE_PCIEXBAR + 4, upper);
+     pci_config_writel(bdf, Q35_HOST_BRIDGE_PCIEXBAR, lower);
++}
++
++static void mch_mem_addr_setup(struct pci_device *dev, void *arg)
++{
++    u64 addr = Q35_HOST_BRIDGE_PCIEXBAR_ADDR;
++    u32 size = Q35_HOST_BRIDGE_PCIEXBAR_SIZE;
++
++    /* setup mmconfig */
++    MCHMmcfgBDF = dev->bdf;
++    mch_mmconfig_setup(dev->bdf);
+     e820_add(addr, size, E820_RESERVED);
+ 
+     /* setup pci i/o window (above mmconfig) */
+-- 
+1.8.3.1
+
diff --git a/SOURCES/seabios-fw-pci-map-memory-and-IO-regions-for-multiple-pci-ro.patch b/SOURCES/seabios-fw-pci-map-memory-and-IO-regions-for-multiple-pci-ro.patch
deleted file mode 100644
index f6d217e..0000000
--- a/SOURCES/seabios-fw-pci-map-memory-and-IO-regions-for-multiple-pci-ro.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 6a0ca65b28bdc8a4ddde752602cc36d4b825464a Mon Sep 17 00:00:00 2001
-From: Marcel Apfelbaum <marcel@redhat.com>
-Date: Wed, 24 Jun 2015 13:45:13 +0200
-Subject: [PATCH 2/2] fw/pci: map memory and IO regions for multiple pci root
- buses
-
-Message-id: <1435153513-25431-3-git-send-email-marcel@redhat.com>
-Patchwork-id: 66383
-O-Subject: [RHEL-7.2 seabios PATCH 2/2] fw/pci: map memory and IO regions for multiple pci root buses
-Bugzilla: 1235381
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-For resource sizing and mapping purposes treat devices on extra root
-buses as if they are on the default root bus (bus 0).
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-(cherry picked from commit 0fe4c9ee7af5f6bb3a1fcbf1d39116a894600c90)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/fw/pciinit.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c
-index b2fd659..0ce7325 100644
---- a/src/fw/pciinit.c
-+++ b/src/fw/pciinit.c
-@@ -655,6 +655,11 @@ static int pci_bios_check_devices(struct pci_bus *busses)
-             busses[pci->secondary_bus].bus_dev = pci;
- 
-         struct pci_bus *bus = &busses[pci_bdf_to_bus(pci->bdf)];
-+        if (!bus->bus_dev)
-+            /*
-+             * Resources for all root busses go in busses[0]
-+             */
-+            bus = &busses[0];
-         int i;
-         for (i = 0; i < PCI_NUM_REGIONS; i++) {
-             if ((pci->class == PCI_CLASS_BRIDGE_PCI) &&
-@@ -685,6 +690,11 @@ static int pci_bios_check_devices(struct pci_bus *busses)
-         if (!s->bus_dev)
-             continue;
-         struct pci_bus *parent = &busses[pci_bdf_to_bus(s->bus_dev->bdf)];
-+        if (!parent->bus_dev)
-+            /*
-+             * Resources for all root busses go in busses[0]
-+             */
-+            parent = &busses[0];
-         int type;
-         u8 shpc_cap = pci_find_capability(s->bus_dev, PCI_CAP_ID_SHPC);
-         for (type = 0; type < PCI_REGION_TYPE_COUNT; type++) {
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-fw-pci-scan-all-buses-if-extraroots-romfile-is-prese.patch b/SOURCES/seabios-fw-pci-scan-all-buses-if-extraroots-romfile-is-prese.patch
deleted file mode 100644
index 13e0352..0000000
--- a/SOURCES/seabios-fw-pci-scan-all-buses-if-extraroots-romfile-is-prese.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 25940705b84d4e1148789f018738a2cfeec74ab6 Mon Sep 17 00:00:00 2001
-From: Marcel Apfelbaum <marcel@redhat.com>
-Date: Wed, 24 Jun 2015 13:45:12 +0200
-Subject: [PATCH 1/2] fw/pci: scan all buses if extraroots romfile is present
-
-Message-id: <1435153513-25431-2-git-send-email-marcel@redhat.com>
-Patchwork-id: 66382
-O-Subject: [RHEL-7.2 seabios PATCH 1/2] fw/pci: scan all buses if extraroots romfile is present
-Bugzilla: 1235381
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-
-From: Marcel Apfelbaum <marcel.a@redhat.com>
-
-If there are extra primary root buses, scanning the bus's 0
-subtree is not enough. Scan all the range.
-
-Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-(cherry picked from commit 5cc7eece39721f20b417770374a4112c454be801)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/fw/pciinit.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c
-index 2e6382f..b2fd659 100644
---- a/src/fw/pciinit.c
-+++ b/src/fw/pciinit.c
-@@ -498,8 +498,17 @@ pci_bios_init_bus_rec(int bus, u8 *pci_bus)
- static void
- pci_bios_init_bus(void)
- {
-+    u8 extraroots = romfile_loadint("etc/extra-pci-roots", 0);
-     u8 pci_bus = 0;
-+
-     pci_bios_init_bus_rec(0 /* host bus */, &pci_bus);
-+
-+    if (extraroots) {
-+        while (pci_bus < 0xff) {
-+            pci_bus++;
-+            pci_bios_init_bus_rec(pci_bus, &pci_bus);
-+        }
-+    }
- }
- 
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch b/SOURCES/seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch
new file mode 100644
index 0000000..1497d8d
--- /dev/null
+++ b/SOURCES/seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch
@@ -0,0 +1,57 @@
+From 01549028733315a513b1b5fcc1951fd271e8a531 Mon Sep 17 00:00:00 2001
+From: Marcel Apfelbaum <marcel@redhat.com>
+Date: Tue, 13 Sep 2016 13:20:45 +0200
+Subject: [PATCH] pci: don't map virtio 1.0 storage devices above 4G
+
+RH-Author: Marcel Apfelbaum <marcel@redhat.com>
+Message-id: <1473772845-913-1-git-send-email-marcel@redhat.com>
+Patchwork-id: 72292
+O-Subject: [RHEL-7.3 seabios PATCH V2] pci: don't map virtio 1.0 storage devices above 4G
+Bugzilla: 1373154
+RH-Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
+RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>
+
+v1->v2:
+  - add the note to the commit message (Gerd)
+
+BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1373154
+Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=11741451
+Upstream: Fixed upstream by commit: 0e21548b15 (virtio: pci cfg access)
+Tests: Checked the virtio BARs are placed in the 32-bit range and
+       the guest boots successfully.
+
+Otherwise SeaBIOS can't access virtio's modern BAR.
+
+Note: It works in the master branch but can't be merged easily
+into 1.9 branch, so use this as an interim solution
+until we'll rebase to 1.10.
+
+Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/fw/pciinit.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c
+index 7896600..4ff1262 100644
+--- a/src/fw/pciinit.c
++++ b/src/fw/pciinit.c
+@@ -650,6 +650,13 @@ static void pci_region_migrate_64bit_entries(struct pci_region *from,
+             continue;
+         if (entry->dev->class == PCI_CLASS_SERIAL_USB)
+             continue;
++        if (entry->dev->vendor == PCI_VENDOR_ID_REDHAT_QUMRANET &&
++            (entry->dev->device == PCI_DEVICE_ID_VIRTIO_BLK_09  ||
++             entry->dev->device == PCI_DEVICE_ID_VIRTIO_BLK_10  ||
++             entry->dev->device == PCI_DEVICE_ID_VIRTIO_SCSI_09 ||
++             entry->dev->device == PCI_DEVICE_ID_VIRTIO_SCSI_10))
++            continue;
++
+         // Move from source list to destination list.
+         hlist_del(&entry->node);
+         hlist_add(&entry->node, last);
+-- 
+1.8.3.1
+
diff --git a/SOURCES/seabios-redhat-reserve-more-memory-on-fseg.patch b/SOURCES/seabios-redhat-reserve-more-memory-on-fseg.patch
new file mode 100644
index 0000000..03cad29
--- /dev/null
+++ b/SOURCES/seabios-redhat-reserve-more-memory-on-fseg.patch
@@ -0,0 +1,43 @@
+From 0561b82b0470679505d62f49eec83adb01eec0ab Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Tue, 19 Apr 2016 11:27:50 +0200
+Subject: [PATCH 1/2] redhat: reserve more memory on fseg
+
+RH-Author: Gerd Hoffmann <kraxel@redhat.com>
+Message-id: <1461065271-22039-2-git-send-email-kraxel@redhat.com>
+Patchwork-id: 70213
+O-Subject: [RHEL-7.1 seabios PATCH 1/2] redhat: reserve more memory on fseg
+Bugzilla: 1327060
+RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
+RH-Acked-by: Marcel Apfelbaum <marcel@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+
+seabios 1.7.5 has about 8k free space in fseg.
+
+configure 1.9.1 to keep the same amout space in fseg, so the amout of
+disks we are able to handle stays roughly the same.  ahci + scsi are
+slightly below the 1.7.5 numbers but stay above the documented limits.
+virtio-block numbers are higher than the 1.7.5 numbers.
+
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ scripts/layoutrom.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/layoutrom.py b/scripts/layoutrom.py
+index b976fb0..f1cee6b 100755
+--- a/scripts/layoutrom.py
++++ b/scripts/layoutrom.py
+@@ -62,7 +62,7 @@ BUILD_BIOS_SIZE = 0x10000
+ BUILD_ROM_START = 0xc0000
+ BUILD_LOWRAM_END = 0xa0000
+ # Space to reserve in f-segment for dynamic allocations
+-BUILD_MIN_BIOSTABLE = 2048
++BUILD_MIN_BIOSTABLE = 8192
+ 
+ # Layout the 16bit code.  This ensures sections with fixed offset
+ # requirements are placed in the correct location.  It also places the
+-- 
+1.8.3.1
+
diff --git a/SOURCES/seabios-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch b/SOURCES/seabios-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
deleted file mode 100644
index f5bf3f0..0000000
--- a/SOURCES/seabios-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 1141076a607c566707186d5e6e317d79b16b2661 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Mon, 28 Jul 2014 12:14:11 +0200
-Subject: [PATCH] smbios: set bios vendor/version fields to Seabios/0.5.1
-
-Message-id: <1406549651-26021-2-git-send-email-kraxel@redhat.com>
-Patchwork-id: 60264
-O-Subject: [RHEL-7.1 seabios PATCH 1/1] smbios: set bios vendor/version fields to Seabios/0.5.1
-Bugzilla: 1123299
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
-
-Mimic rhel6/seabios commit 1389643dad35a63362cd7d8357693f01175ef473.
-Affects all 6.x and 7.0 machine types.
-
-Note: 7.1+ machine types will switch over to the new-style smbios
-handling in qemu 2.1 + seabios 1.7.5 (and ovmf), where seabios will
-fill in the actual version information instead of the bogous 0.5.1
-which we are using here for backward compatibility reasons.
-
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/fw/smbios.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/fw/smbios.c b/src/fw/smbios.c
-index dba0541..465b9ee 100644
---- a/src/fw/smbios.c
-+++ b/src/fw/smbios.c
-@@ -174,8 +174,8 @@ smbios_init_type_0(void *start)
-     p->header.length = sizeof(struct smbios_type_0);
-     p->header.handle = 0;
- 
--    load_str_field_with_default(0, vendor_str, BUILD_APPNAME);
--    load_str_field_with_default(0, bios_version_str, BUILD_APPNAME);
-+    load_str_field_with_default(0, vendor_str, "Seabios");
-+    load_str_field_with_default(0, bios_version_str, "0.5.1");
- 
-     p->bios_starting_address_segment = 0xe800;
- 
--- 
-1.7.1
-
diff --git a/SPECS/seabios.spec b/SPECS/seabios.spec
index 1a9d475..ebf33a7 100644
--- a/SPECS/seabios.spec
+++ b/SPECS/seabios.spec
@@ -1,6 +1,6 @@
 Name:           seabios
-Version:        1.7.5
-Release:        11%{?dist}
+Version:        1.9.1
+Release:        5%{?dist}
 Summary:        Open-source legacy BIOS implementation
 
 Group:          Applications/Emulators
@@ -8,11 +8,7 @@ License:        LGPLv3
 URL:            http://www.coreboot.org/SeaBIOS
 
 
-# No source releases of seabios stable. To generate:
-# git clone git://git.seabios.org/seabios.git && cd seabios
-# git archive --output seabios-1.7.2.2.tar.gz --prefix seabios-1.7.2.2/ rel-1.7.2.2
-#Source0:        http://code.coreboot.org/p/seabios/downloads/get/%{name}-%{version}.tar.gz
-Source0: seabios-%{version}.tar.gz
+Source0:        http://code.coreboot.org/p/seabios/downloads/get/%{name}-%{version}.tar.gz
 
 Source10:       config.vga.cirrus
 Source11:       config.vga.isavga
@@ -21,27 +17,18 @@ Source13:       config.vga.stdvga
 Source14:       config.vga.vmware
 Source15:       config.base
 Source16:       config.base-256k
-
-
-Patch0002: seabios-Place-rpm-version-info-into-version-banner.patch
-Patch0003: seabios-allow-1TB-of-RAM.patch
-# For bz#1123299 - smbios table 0 vendor string should be Seabios (for rhel6 compatibility) [7.1+7.0.z]
-Patch4: seabios-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
-# For bz#1050775 - [whql]KVM internal error. Suberror: 1 when win8.1-32 guest run HCK jobs
-Patch5: seabios-Workaround-for-a-win8.1-32-S4-resume-bug.patch
-# For bz#1096560 - fail to assign correct order for the boot device in seabios as we specified the bootindex in qemu-kvm cli(under the same virtio-scsi-pci)
-Patch6: seabios-boot-Fix-boot-order-for-SCSI-target-lun-9.patch
-# For bz#841638 - Provide a platform agnostic approach to invoking the BIOS, boot menu, or other BIOS functions
-Patch7: seabios-boot.c-delay-exiting-boot-if-menu-key-is-ESC.patch
-# For bz#841638 - Provide a platform agnostic approach to invoking the BIOS, boot menu, or other BIOS functions
-Patch8: seabios-boot-switch-default-menu-key-to-ESC.patch
-# For bz#1235381 - RFE: configure guest NUMA node locality for guest PCI devices
-Patch9: seabios-fw-pci-scan-all-buses-if-extraroots-romfile-is-prese.patch
-# For bz#1235381 - RFE: configure guest NUMA node locality for guest PCI devices
-Patch10: seabios-fw-pci-map-memory-and-IO-regions-for-multiple-pci-ro.patch
-# For bz#1242968 - pci: support booting of devices behind PXB
-Patch11: seabios-bootorder-Update-extra-pci-root-buses-bootorder-form.patch
-
+Source17:       config.vga.virtio
+
+
+Patch0002: 0002-allow-1TB-of-RAM.patch
+Patch0003: 0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
+Patch0004: 0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch
+# For bz#1185721 - win7 guest (boot with q35) show dark screen after do S3
+Patch5: seabios-fw-pci-add-Q35-S3-support.patch
+# For bz#1327060 - [Seabios]Limited boot number supported for SCSI/SATA
+Patch6: seabios-redhat-reserve-more-memory-on-fseg.patch
+# For bz#1373154 - Guest fails boot up with ivshmem-plain and virtio-pci device
+Patch7: seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch
 BuildRequires: python iasl
 ExclusiveArch: x86_64 %{power64}
 
@@ -94,17 +81,12 @@ SeaVGABIOS is an open-source VGABIOS implementation.
 
 %patch0002 -p1
 %patch0003 -p1
-%patch4 -p1
+%patch0004 -p1
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
-%patch11 -p1
 
 # Store version to be used
-echo "%{name}-%{version}-%release" > .version
 
 %build
 %ifarch x86_64
@@ -115,13 +97,14 @@ build_bios() {
     make clean distclean
     cp $1 .config
     echo "CONFIG_DEBUG_LEVEL=%{debug_level}" >> .config
-    make oldnoconfig V=1
+    make oldnoconfig V=1 EXTRAVERSION="-%release"
 
-    make V=1 $4
+    make V=1 $4 EXTRAVERSION="-%release"
 
     cp out/$2 binaries/$3
 }
 
+
 # seabios 128k
 build_bios %{SOURCE15} bios.bin bios.bin
 
@@ -129,7 +112,7 @@ build_bios %{SOURCE15} bios.bin bios.bin
 build_bios %{SOURCE16} bios.bin bios-256k.bin
 
 # seavgabios
-for config in %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14}; do
+for config in %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE17}; do
 	name=${config#*config.vga.}
     build_bios ${config} vgabios.bin vgabios-${name}.bin out/vgabios.bin
 done
@@ -143,7 +126,7 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
 
 
 %files
-%doc COPYING COPYING.LESSER README TODO
+%doc COPYING COPYING.LESSER README
 
 
 %files bin
@@ -156,6 +139,32 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
 %endif
 
 %changelog
+* Thu Sep 15 2016 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-5.el7
+- seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch [bz#1373154]
+- Resolves: bz#1373154
+  (Guest fails boot up with ivshmem-plain and virtio-pci device)
+
+* Wed May 11 2016 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-4.el7
+- seabios-Build-vgabios-virtio.bin.patch [bz#1327001]
+- Resolves: bz#1327001
+  (vgabios-virtio.bin should be included  in seavgabios-bin package)
+
+* Tue Apr 26 2016 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-3.el7
+- seabios-redhat-reserve-more-memory-on-fseg.patch [bz#1327060]
+- seabios-redhat-turn-off-some-config-options.patch [bz#1327060]
+- Resolves: bz#1327060
+  ([Seabios]Limited boot number supported for SCSI/SATA)
+
+* Wed Apr 06 2016 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-2.el7
+- seabios-fw-pci-add-Q35-S3-support.patch [bz#1185721]
+- Resolves: bz#1185721
+  (win7 guest (boot with q35) show dark screen after do S3)
+
+* Tue Feb 16 2016 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-1.el7
+- Rebase to 1.9.1 [bz#1257052]
+- Resolves: bz#1257052
+  (rebase seabios to 1.9)
+
 * Wed Jul 15 2015 Yash Mankad <ymankad@redhat.com> - 1.7.5-11.el7
 - seabios-bootorder-Update-extra-pci-root-buses-bootorder-form.patch [bz#1242968]
 - Resolves: bz#1242968
@@ -178,10 +187,6 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
 - Resolves: bz#1182634
   (Remove CONFIG_VGA_ALLOCATE_EXTRA_STACK)
 
-* Wed Jan 14 2015 jblazek@redhat.com - 1.7.5-7
-- rebuilt with rpm-4.11.1-25.el7
-- Resolves: bz#1163924
-
 * Thu Nov 20 2014 Miroslav Rezanina <mrezanin@redhat.com> - 1.7.5-6.el7
 - seabios-Extend-ExclusiveArch-to-power64-architectures.patch [bz#1163924]
 - Resolves: bz#1163924
@@ -193,7 +198,7 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
 - Resolves: bz#1096560
   (fail to assign correct order for the boot device in seabios as we specified the bootindex in qemu-kvm cli(under the same virtio-scsi-pci))
 
-* Wed Aug 13 2014 Miroslav Rezanina <mrezanin@redhat.com> - 1.7.5-4.el7
+* Wed Aug 13 2014  Miroslav Rezanina <mrezanin@redhat.com> - 1.7.5-4.el7
 - seabios-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch [bz#1123299]
 - Resolves: bz#1123299
   (smbios table 0 vendor string should be Seabios (for rhel6 compatibility) [7.1+7.0.z])