diff --git a/.gitignore b/.gitignore
index 8d27ae2..e859e52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/seabios-1.9.1.tar.gz
+SOURCES/seabios-1.10.2.tar.gz
diff --git a/.seabios.metadata b/.seabios.metadata
index 80981d9..e89212d 100644
--- a/.seabios.metadata
+++ b/.seabios.metadata
@@ -1 +1 @@
-f56011d5d942fc600ad9cd1cc38b9542b257f6bc SOURCES/seabios-1.9.1.tar.gz
+a0d4c4ed618919c7dd7bcef9757dab74b4df819c SOURCES/seabios-1.10.2.tar.gz
diff --git a/SOURCES/0002-allow-1TB-of-RAM.patch b/SOURCES/0002-allow-1TB-of-RAM.patch
index b16acf8..0eac29f 100644
--- a/SOURCES/0002-allow-1TB-of-RAM.patch
+++ b/SOURCES/0002-allow-1TB-of-RAM.patch
@@ -1,4 +1,4 @@
-From 4fee214c41b11b72b3427fda18e9eac1ee647746 Mon Sep 17 00:00:00 2001
+From 771b0509836828093091cfcf9bae8954928b6a02 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
@@ -21,16 +21,17 @@ Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
  2 files changed, 8 insertions(+), 6 deletions(-)
 
 Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+(cherry picked from commit 4fee214c41b11b72b3427fda18e9eac1ee647746)
 ---
  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
+index 707502d..5df3e00 100644
 --- a/src/fw/paravirt.c
 +++ b/src/fw/paravirt.c
-@@ -387,9 +387,10 @@ qemu_cfg_e820(void)
+@@ -481,9 +481,10 @@ qemu_cfg_e820(void)
      }
  
      // Check for memory over 4Gig in cmos
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
index 9d5656b..ed32750 100644
--- 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
@@ -1,4 +1,4 @@
-From bf361def4623ac1942512f255e5c1450970b5092 Mon Sep 17 00:00:00 2001
+From 2bcdafa98a14ac600bde1e4e9cb5bc07c01fd366 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
@@ -21,6 +21,7 @@ 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>
+(cherry picked from commit bf361def4623ac1942512f255e5c1450970b5092)
 ---
  src/fw/smbios.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
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
index 1346099..0075979 100644
--- 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
@@ -1,4 +1,4 @@
-From aa1c26538deecfd820b7da9b3be09ebc20b7fef9 Mon Sep 17 00:00:00 2001
+From 18be18890b42ad842b421bc82af75a86eae5580a 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
@@ -45,6 +45,7 @@ Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+(cherry picked from commit aa1c26538deecfd820b7da9b3be09ebc20b7fef9)
 ---
  src/clock.c | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/SOURCES/0005-redhat-reserve-more-memory-on-fseg.patch b/SOURCES/0005-redhat-reserve-more-memory-on-fseg.patch
new file mode 100644
index 0000000..fba32da
--- /dev/null
+++ b/SOURCES/0005-redhat-reserve-more-memory-on-fseg.patch
@@ -0,0 +1,44 @@
+From 4dcafd1a32949713abe7b5842cfebf851934ecb7 Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Tue, 19 Apr 2016 11:27:50 +0200
+Subject: 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>
+(cherry picked from commit 0561b82b0470679505d62f49eec83adb01eec0ab)
+---
+ scripts/layoutrom.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/layoutrom.py b/scripts/layoutrom.py
+index 6616721..71841aa 100755
+--- a/scripts/layoutrom.py
++++ b/scripts/layoutrom.py
+@@ -66,7 +66,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/0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch b/SOURCES/0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
new file mode 100644
index 0000000..88e9277
--- /dev/null
+++ b/SOURCES/0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
@@ -0,0 +1,124 @@
+From 2857f5445ef55ece7011d49937e6c3fd7444a1dc Mon Sep 17 00:00:00 2001
+From: Ladi Prosek <lprosek@redhat.com>
+Date: Mon, 31 Oct 2016 19:33:05 +0100
+Subject: vgabios: Reorder video modes to work around a Windows bug
+
+RH-Author: Ladi Prosek <lprosek@redhat.com>
+Message-id: <1477924385-6169-1-git-send-email-lprosek@redhat.com>
+Patchwork-id: 72677
+O-Subject: [RHEL-7.4/7.3.z seabios PATCH] vgabios: Reorder video modes to work around a Windows bug
+Bugzilla: 1392028
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
+RH-Acked-by: vrozenfe <vrozenfe@redhat.com>
+
+Windows Server 2016 and Windows 10 RS1 come with a bug in its blue screen
+of death rendering logic which prevents it from generating crash dumps.
+
+The bug does not manifest if Windows sees a suitable 32 bpp video mode
+before a suitable 24 bpp video mode in the list of modes returned from
+vgabios. This commit moves all 32 bpp modes to the front of the list to
+make sure that this is always the case.
+
+Upstream patch:
+https://www.coreboot.org/pipermail/seabios/2016-October/010963.html
+
+There are valid concerns upstream about the breaking nature of the fix
+but for the limited set of operating systems supported by RHEL/RHEV we
+can easily verify that they are unaffected. So as things stand now, this
+is a downstream-only patch which will be reverted in the near future;
+the exact time will depend on Windows 10 RS2 schedule and other factors.
+The goal is to make sure that our customers running Windows 10 VMs can
+generate crash dumps.
+
+Signed-off-by: Ladi Prosek <lprosek@redhat.com>
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ vgasrc/bochsvga.c | 39 ++++++++++++++++++++-------------------
+ 1 file changed, 20 insertions(+), 19 deletions(-)
+
+diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c
+index ec5d101..c5d1511 100644
+--- a/vgasrc/bochsvga.c
++++ b/vgasrc/bochsvga.c
+@@ -28,6 +28,25 @@ static struct bochsvga_mode
+     u16 mode;
+     struct vgamode_s info;
+ } bochsvga_modes[] VAR16 = {
++    /* 32 bpp BOCHS modes */
++    { 0x140, { MM_DIRECT, 320,  200,  32, 8, 16, SEG_GRAPH } },
++    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, SEG_GRAPH } },
++    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, SEG_GRAPH } },
++    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, SEG_GRAPH } },
++    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, SEG_GRAPH } },
++    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
++    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
++    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, SEG_GRAPH } },
++    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, SEG_GRAPH } },
++    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, SEG_GRAPH } },
++    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, SEG_GRAPH } },
++    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, SEG_GRAPH } },
++    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
++    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
++    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
++    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
++    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, SEG_GRAPH } },
++    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
+     /* standard modes */
+     { 0x100, { MM_PACKED, 640,  400,  8,  8, 16, SEG_GRAPH } },
+     { 0x101, { MM_PACKED, 640,  480,  8,  8, 16, SEG_GRAPH } },
+@@ -56,50 +75,32 @@ static struct bochsvga_mode
+     { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
+     { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
+     { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
+-    /* BOCHS modes */
+-    { 0x140, { MM_DIRECT, 320,  200,  32, 8, 16, SEG_GRAPH } },
+-    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, SEG_GRAPH } },
+-    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, SEG_GRAPH } },
+-    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, SEG_GRAPH } },
+-    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, SEG_GRAPH } },
+-    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
++    /* 8, 15, 16, and 24 bpp BOCHS modes */
+     { 0x146, { MM_PACKED, 320,  200,  8,  8, 16, SEG_GRAPH } },
+-    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
+     { 0x148, { MM_PACKED, 1152, 864,  8,  8, 16, SEG_GRAPH } },
+     { 0x149, { MM_DIRECT, 1152, 864,  15, 8, 16, SEG_GRAPH } },
+     { 0x14a, { MM_DIRECT, 1152, 864,  16, 8, 16, SEG_GRAPH } },
+     { 0x14b, { MM_DIRECT, 1152, 864,  24, 8, 16, SEG_GRAPH } },
+-    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, SEG_GRAPH } },
+     { 0x175, { MM_DIRECT, 1280, 768,  16, 8, 16, SEG_GRAPH } },
+     { 0x176, { MM_DIRECT, 1280, 768,  24, 8, 16, SEG_GRAPH } },
+-    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, SEG_GRAPH } },
+     { 0x178, { MM_DIRECT, 1280, 800,  16, 8, 16, SEG_GRAPH } },
+     { 0x179, { MM_DIRECT, 1280, 800,  24, 8, 16, SEG_GRAPH } },
+-    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, SEG_GRAPH } },
+     { 0x17b, { MM_DIRECT, 1280, 960,  16, 8, 16, SEG_GRAPH } },
+     { 0x17c, { MM_DIRECT, 1280, 960,  24, 8, 16, SEG_GRAPH } },
+-    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, SEG_GRAPH } },
+     { 0x17e, { MM_DIRECT, 1440, 900,  16, 8, 16, SEG_GRAPH } },
+     { 0x17f, { MM_DIRECT, 1440, 900,  24, 8, 16, SEG_GRAPH } },
+-    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, SEG_GRAPH } },
+     { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
+     { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
+-    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
+     { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
+     { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
+-    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
+     { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
+     { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
+-    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
+     { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
+     { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
+-    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
+     { 0x18d, { MM_DIRECT, 1280, 720,  16, 8, 16, SEG_GRAPH } },
+     { 0x18e, { MM_DIRECT, 1280, 720,  24, 8, 16, SEG_GRAPH } },
+-    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, SEG_GRAPH } },
+     { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
+     { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
+-    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
+ };
+ 
+ static int dispi_found VAR16 = 0;
+-- 
+1.8.3.1
+
diff --git a/SOURCES/config.base b/SOURCES/config.base
index f7ff3fa..e06bba6 100644
--- a/SOURCES/config.base
+++ b/SOURCES/config.base
@@ -10,3 +10,4 @@ CONFIG_USB_OHCI=n
 CONFIG_USB_XHCI=n
 CONFIG_USB_UAS=n
 CONFIG_TCGBIOS=n
+CONFIG_USE_SMM=n
diff --git a/SOURCES/config.base-256k b/SOURCES/config.base-256k
index 59b3036..f1910a7 100644
--- a/SOURCES/config.base-256k
+++ b/SOURCES/config.base-256k
@@ -5,3 +5,4 @@ CONFIG_USB_OHCI=n
 CONFIG_BOOTSPLASH=n
 CONFIG_MEGASAS=n
 CONFIG_ROM_SIZE=256
+CONFIG_USE_SMM=n
diff --git a/SOURCES/seabios-acpi-Don-t-build-SSDT-files-on-every-build-store-the.patch b/SOURCES/seabios-acpi-Don-t-build-SSDT-files-on-every-build-store-the.patch
deleted file mode 100644
index e25c212..0000000
--- a/SOURCES/seabios-acpi-Don-t-build-SSDT-files-on-every-build-store-the.patch
+++ /dev/null
@@ -1,837 +0,0 @@
-From 5cd49fd2d2c32d93fa02716b5736c02aa0e5a4eb Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Tue, 24 Jan 2017 11:41:11 +0100
-Subject: [PATCH 4/4] acpi: Don't build SSDT files on every build; store them
- in git
-
-RH-Author: Gerd Hoffmann <kraxel@redhat.com>
-Message-id: <1485258071-13209-5-git-send-email-kraxel@redhat.com>
-Patchwork-id: 73328
-O-Subject: [RHEL-7.3.z seabios PATCH 4/4] acpi: Don't build SSDT files on every build; store them in git
-Bugzilla: 1400102
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-
-From: Kevin O'Connor <kevin@koconnor.net>
-
-The SSDT files are rarely modified - recent QEMU versions don't use
-them at all and adding features to them in SeaBIOS has been
-deprecated.  It no longer makes sense to generate them on every build.
-The content will remain (for use on old machine types in QEMU) in
-static files committed to the SeaBIOS git repo.  If the contents do
-need to be generated a new build target (make iasl) is available.
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-(cherry picked from commit 4373afaef34a76733638edc4e98f355b13c52f10)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- Makefile              |   4 +-
- src/fw/acpi-dsdt.hex  | 554 ++++++++++++++++++++++++++++++++++++++++++++++++++
- src/fw/acpi.c         |   8 +-
- src/fw/ssdt-misc.hex  |  88 ++++++++
- src/fw/ssdt-pcihp.hex |  38 ++++
- src/fw/ssdt-proc.hex  |  35 ++++
- 6 files changed, 721 insertions(+), 6 deletions(-)
- create mode 100644 src/fw/acpi-dsdt.hex
- create mode 100644 src/fw/ssdt-misc.hex
- create mode 100644 src/fw/ssdt-pcihp.hex
- create mode 100644 src/fw/ssdt-proc.hex
-
-diff --git a/Makefile b/Makefile
-index 6f1bb68..cbe9454 100644
---- a/Makefile
-+++ b/Makefile
-@@ -248,7 +248,7 @@ $(OUT)vgabios.bin: $(OUT)vgabios.bin.raw scripts/buildrom.py
- iasl-option=$(shell if test -z "`$(1) $(2) 2>&1 > /dev/null`" \
-     ; then echo "$(2)"; else echo "$(3)"; fi ;)
- 
--$(OUT)%.hex: %.dsl ./scripts/acpi_extract_preprocess.py ./scripts/acpi_extract.py
-+%.hex: %.dsl ./scripts/acpi_extract_preprocess.py ./scripts/acpi_extract.py
- 	@echo "  Compiling IASL $@"
- 	$(Q)$(CPP) $(CPPFLAGS) $< -o $(OUT)$*.dsl.i.orig
- 	$(Q)$(PYTHON) ./scripts/acpi_extract_preprocess.py $(OUT)$*.dsl.i.orig > $(OUT)$*.dsl.i
-@@ -256,7 +256,7 @@ $(OUT)%.hex: %.dsl ./scripts/acpi_extract_preprocess.py ./scripts/acpi_extract.p
- 	$(Q)$(PYTHON) ./scripts/acpi_extract.py $(OUT)$*.lst > $(OUT)$*.off
- 	$(Q)cat $(OUT)$*.off > $@
- 
--$(OUT)src/fw/acpi.o: $(OUT)src/fw/acpi-dsdt.hex $(OUT)src/fw/ssdt-proc.hex $(OUT)src/fw/ssdt-pcihp.hex $(OUT)src/fw/ssdt-misc.hex
-+iasl: src/fw/acpi-dsdt.hex src/fw/ssdt-proc.hex src/fw/ssdt-pcihp.hex src/fw/ssdt-misc.hex
- 
- ################ Kconfig rules
- 
-diff --git a/src/fw/acpi-dsdt.hex b/src/fw/acpi-dsdt.hex
-new file mode 100644
-index 0000000..6a113cd
---- /dev/null
-+++ b/src/fw/acpi-dsdt.hex
-@@ -0,0 +1,554 @@
-+/* DO NOT EDIT!  This is an autogenerated file.  See scripts/acpi_extract.py. */
-+static unsigned char AmlCode[] = {
-+    0x44, 0x53, 0x44, 0x54, 0x35, 0x11, 0x00, 0x00,
-+    0x01, 0x8b, 0x42, 0x58, 0x50, 0x43, 0x00, 0x00,
-+    0x42, 0x58, 0x44, 0x53, 0x44, 0x54, 0x00, 0x00,
-+    0x01, 0x00, 0x00, 0x00, 0x49, 0x4e, 0x54, 0x4c,
-+    0x18, 0x08, 0x15, 0x20, 0x10, 0x49, 0x04, 0x5c,
-+    0x00, 0x5b, 0x80, 0x44, 0x42, 0x47, 0x5f, 0x01,
-+    0x0b, 0x02, 0x04, 0x01, 0x5b, 0x81, 0x0b, 0x44,
-+    0x42, 0x47, 0x5f, 0x01, 0x44, 0x42, 0x47, 0x42,
-+    0x08, 0x14, 0x2c, 0x44, 0x42, 0x55, 0x47, 0x01,
-+    0x98, 0x68, 0x60, 0x96, 0x60, 0x60, 0x74, 0x87,
-+    0x60, 0x01, 0x61, 0x70, 0x00, 0x62, 0xa2, 0x10,
-+    0x95, 0x62, 0x61, 0x70, 0x83, 0x88, 0x60, 0x62,
-+    0x00, 0x44, 0x42, 0x47, 0x42, 0x75, 0x62, 0x70,
-+    0x0a, 0x0a, 0x44, 0x42, 0x47, 0x42, 0x10, 0x22,
-+    0x5f, 0x53, 0x42, 0x5f, 0x5b, 0x82, 0x1b, 0x50,
-+    0x43, 0x49, 0x30, 0x08, 0x5f, 0x48, 0x49, 0x44,
-+    0x0c, 0x41, 0xd0, 0x0a, 0x03, 0x08, 0x5f, 0x41,
-+    0x44, 0x52, 0x00, 0x08, 0x5f, 0x55, 0x49, 0x44,
-+    0x01, 0x10, 0x4e, 0x15, 0x2e, 0x5f, 0x53, 0x42,
-+    0x5f, 0x50, 0x43, 0x49, 0x30, 0x08, 0x43, 0x52,
-+    0x45, 0x53, 0x11, 0x42, 0x07, 0x0a, 0x6e, 0x88,
-+    0x0d, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00,
-+    0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x47,
-+    0x01, 0xf8, 0x0c, 0xf8, 0x0c, 0x01, 0x08, 0x88,
-+    0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+    0x00, 0xf7, 0x0c, 0x00, 0x00, 0xf8, 0x0c, 0x88,
-+    0x0d, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+    0x0d, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x87,
-+    0x17, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x0b,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-+    0x00, 0x87, 0x17, 0x00, 0x00, 0x0c, 0x01, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
-+    0xff, 0xbf, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
-+    0x00, 0xc0, 0x1e, 0x79, 0x00, 0x08, 0x43, 0x52,
-+    0x36, 0x34, 0x11, 0x33, 0x0a, 0x30, 0x8a, 0x2b,
-+    0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+    0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-+    0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+    0x80, 0x00, 0x00, 0x00, 0x79, 0x00, 0x14, 0x41,
-+    0x0a, 0x5f, 0x43, 0x52, 0x53, 0x00, 0x8a, 0x43,
-+    0x52, 0x45, 0x53, 0x0a, 0x5c, 0x50, 0x53, 0x33,
-+    0x32, 0x8a, 0x43, 0x52, 0x45, 0x53, 0x0a, 0x60,
-+    0x50, 0x45, 0x33, 0x32, 0x8a, 0x43, 0x52, 0x45,
-+    0x53, 0x0a, 0x68, 0x50, 0x4c, 0x33, 0x32, 0x70,
-+    0x50, 0x30, 0x53, 0x5f, 0x50, 0x53, 0x33, 0x32,
-+    0x70, 0x50, 0x30, 0x45, 0x5f, 0x50, 0x45, 0x33,
-+    0x32, 0x70, 0x72, 0x74, 0x50, 0x30, 0x45, 0x5f,
-+    0x50, 0x30, 0x53, 0x5f, 0x00, 0x01, 0x00, 0x50,
-+    0x4c, 0x33, 0x32, 0xa0, 0x0c, 0x93, 0x50, 0x31,
-+    0x56, 0x5f, 0x00, 0xa4, 0x43, 0x52, 0x45, 0x53,
-+    0x8f, 0x43, 0x52, 0x36, 0x34, 0x0a, 0x0e, 0x50,
-+    0x53, 0x36, 0x34, 0x8f, 0x43, 0x52, 0x36, 0x34,
-+    0x0a, 0x16, 0x50, 0x45, 0x36, 0x34, 0x8f, 0x43,
-+    0x52, 0x36, 0x34, 0x0a, 0x26, 0x50, 0x4c, 0x36,
-+    0x34, 0x70, 0x50, 0x31, 0x53, 0x5f, 0x50, 0x53,
-+    0x36, 0x34, 0x70, 0x50, 0x31, 0x45, 0x5f, 0x50,
-+    0x45, 0x36, 0x34, 0x70, 0x50, 0x31, 0x4c, 0x5f,
-+    0x50, 0x4c, 0x36, 0x34, 0x84, 0x43, 0x52, 0x45,
-+    0x53, 0x43, 0x52, 0x36, 0x34, 0x60, 0xa4, 0x60,
-+    0x10, 0x4d, 0x08, 0x5f, 0x53, 0x42, 0x5f, 0x5b,
-+    0x82, 0x45, 0x08, 0x48, 0x50, 0x45, 0x54, 0x08,
-+    0x5f, 0x48, 0x49, 0x44, 0x0c, 0x41, 0xd0, 0x01,
-+    0x03, 0x08, 0x5f, 0x55, 0x49, 0x44, 0x00, 0x5b,
-+    0x80, 0x48, 0x50, 0x54, 0x4d, 0x00, 0x0c, 0x00,
-+    0x00, 0xd0, 0xfe, 0x0b, 0x00, 0x04, 0x5b, 0x81,
-+    0x10, 0x48, 0x50, 0x54, 0x4d, 0x13, 0x56, 0x45,
-+    0x4e, 0x44, 0x20, 0x50, 0x52, 0x44, 0x5f, 0x20,
-+    0x14, 0x36, 0x5f, 0x53, 0x54, 0x41, 0x00, 0x70,
-+    0x56, 0x45, 0x4e, 0x44, 0x60, 0x70, 0x50, 0x52,
-+    0x44, 0x5f, 0x61, 0x7a, 0x60, 0x0a, 0x10, 0x60,
-+    0xa0, 0x0c, 0x91, 0x93, 0x60, 0x00, 0x93, 0x60,
-+    0x0b, 0xff, 0xff, 0xa4, 0x00, 0xa0, 0x0e, 0x91,
-+    0x93, 0x61, 0x00, 0x94, 0x61, 0x0c, 0x00, 0xe1,
-+    0xf5, 0x05, 0xa4, 0x00, 0xa4, 0x0a, 0x0f, 0x08,
-+    0x5f, 0x43, 0x52, 0x53, 0x11, 0x11, 0x0a, 0x0e,
-+    0x86, 0x09, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xfe,
-+    0x00, 0x04, 0x00, 0x00, 0x79, 0x00, 0x10, 0x40,
-+    0x06, 0x2e, 0x5f, 0x53, 0x42, 0x5f, 0x50, 0x43,
-+    0x49, 0x30, 0x5b, 0x82, 0x43, 0x05, 0x56, 0x47,
-+    0x41, 0x5f, 0x08, 0x5f, 0x41, 0x44, 0x52, 0x0c,
-+    0x00, 0x00, 0x02, 0x00, 0x5b, 0x80, 0x50, 0x43,
-+    0x49, 0x43, 0x02, 0x00, 0x0a, 0x04, 0x5b, 0x81,
-+    0x0b, 0x50, 0x43, 0x49, 0x43, 0x03, 0x56, 0x45,
-+    0x4e, 0x44, 0x20, 0x14, 0x08, 0x5f, 0x53, 0x31,
-+    0x44, 0x00, 0xa4, 0x00, 0x14, 0x08, 0x5f, 0x53,
-+    0x32, 0x44, 0x00, 0xa4, 0x00, 0x14, 0x19, 0x5f,
-+    0x53, 0x33, 0x44, 0x00, 0xa0, 0x0e, 0x93, 0x56,
-+    0x45, 0x4e, 0x44, 0x0c, 0x36, 0x1b, 0x00, 0x01,
-+    0xa4, 0x0a, 0x03, 0xa1, 0x03, 0xa4, 0x00, 0x10,
-+    0x25, 0x2e, 0x5f, 0x53, 0x42, 0x5f, 0x50, 0x43,
-+    0x49, 0x30, 0x5b, 0x82, 0x19, 0x50, 0x58, 0x31,
-+    0x33, 0x08, 0x5f, 0x41, 0x44, 0x52, 0x0c, 0x03,
-+    0x00, 0x01, 0x00, 0x5b, 0x80, 0x50, 0x31, 0x33,
-+    0x43, 0x02, 0x00, 0x0a, 0xff, 0x10, 0x46, 0x05,
-+    0x2e, 0x5f, 0x53, 0x42, 0x5f, 0x50, 0x43, 0x49,
-+    0x30, 0x5b, 0x82, 0x49, 0x04, 0x49, 0x53, 0x41,
-+    0x5f, 0x08, 0x5f, 0x41, 0x44, 0x52, 0x0c, 0x00,
-+    0x00, 0x01, 0x00, 0x5b, 0x80, 0x50, 0x34, 0x30,
-+    0x43, 0x02, 0x0a, 0x60, 0x0a, 0x04, 0x5b, 0x81,
-+    0x26, 0x5e, 0x2e, 0x50, 0x58, 0x31, 0x33, 0x50,
-+    0x31, 0x33, 0x43, 0x00, 0x00, 0x48, 0x2f, 0x00,
-+    0x07, 0x4c, 0x50, 0x45, 0x4e, 0x01, 0x00, 0x38,
-+    0x00, 0x03, 0x43, 0x41, 0x45, 0x4e, 0x01, 0x00,
-+    0x03, 0x43, 0x42, 0x45, 0x4e, 0x01, 0x08, 0x46,
-+    0x44, 0x45, 0x4e, 0x01, 0x10, 0x4c, 0x1b, 0x2f,
-+    0x03, 0x5f, 0x53, 0x42, 0x5f, 0x50, 0x43, 0x49,
-+    0x30, 0x49, 0x53, 0x41, 0x5f, 0x5b, 0x82, 0x2d,
-+    0x52, 0x54, 0x43, 0x5f, 0x08, 0x5f, 0x48, 0x49,
-+    0x44, 0x0c, 0x41, 0xd0, 0x0b, 0x00, 0x08, 0x5f,
-+    0x43, 0x52, 0x53, 0x11, 0x18, 0x0a, 0x15, 0x47,
-+    0x01, 0x70, 0x00, 0x70, 0x00, 0x10, 0x02, 0x22,
-+    0x00, 0x01, 0x47, 0x01, 0x72, 0x00, 0x72, 0x00,
-+    0x02, 0x06, 0x79, 0x00, 0x5b, 0x82, 0x37, 0x4b,
-+    0x42, 0x44, 0x5f, 0x08, 0x5f, 0x48, 0x49, 0x44,
-+    0x0c, 0x41, 0xd0, 0x03, 0x03, 0x14, 0x09, 0x5f,
-+    0x53, 0x54, 0x41, 0x00, 0xa4, 0x0a, 0x0f, 0x08,
-+    0x5f, 0x43, 0x52, 0x53, 0x11, 0x18, 0x0a, 0x15,
-+    0x47, 0x01, 0x60, 0x00, 0x60, 0x00, 0x01, 0x01,
-+    0x47, 0x01, 0x64, 0x00, 0x64, 0x00, 0x01, 0x01,
-+    0x22, 0x02, 0x00, 0x79, 0x00, 0x5b, 0x82, 0x27,
-+    0x4d, 0x4f, 0x55, 0x5f, 0x08, 0x5f, 0x48, 0x49,
-+    0x44, 0x0c, 0x41, 0xd0, 0x0f, 0x13, 0x14, 0x09,
-+    0x5f, 0x53, 0x54, 0x41, 0x00, 0xa4, 0x0a, 0x0f,
-+    0x08, 0x5f, 0x43, 0x52, 0x53, 0x11, 0x08, 0x0a,
-+    0x05, 0x22, 0x00, 0x10, 0x79, 0x00, 0x5b, 0x82,
-+    0x4a, 0x04, 0x46, 0x44, 0x43, 0x30, 0x08, 0x5f,
-+    0x48, 0x49, 0x44, 0x0c, 0x41, 0xd0, 0x07, 0x00,
-+    0x14, 0x18, 0x5f, 0x53, 0x54, 0x41, 0x00, 0x70,
-+    0x46, 0x44, 0x45, 0x4e, 0x60, 0xa0, 0x06, 0x93,
-+    0x60, 0x00, 0xa4, 0x00, 0xa1, 0x04, 0xa4, 0x0a,
-+    0x0f, 0x08, 0x5f, 0x43, 0x52, 0x53, 0x11, 0x1b,
-+    0x0a, 0x18, 0x47, 0x01, 0xf2, 0x03, 0xf2, 0x03,
-+    0x00, 0x04, 0x47, 0x01, 0xf7, 0x03, 0xf7, 0x03,
-+    0x00, 0x01, 0x22, 0x40, 0x00, 0x2a, 0x04, 0x00,
-+    0x79, 0x00, 0x5b, 0x82, 0x3e, 0x4c, 0x50, 0x54,
-+    0x5f, 0x08, 0x5f, 0x48, 0x49, 0x44, 0x0c, 0x41,
-+    0xd0, 0x04, 0x00, 0x14, 0x18, 0x5f, 0x53, 0x54,
-+    0x41, 0x00, 0x70, 0x4c, 0x50, 0x45, 0x4e, 0x60,
-+    0xa0, 0x06, 0x93, 0x60, 0x00, 0xa4, 0x00, 0xa1,
-+    0x04, 0xa4, 0x0a, 0x0f, 0x08, 0x5f, 0x43, 0x52,
-+    0x53, 0x11, 0x10, 0x0a, 0x0d, 0x47, 0x01, 0x78,
-+    0x03, 0x78, 0x03, 0x08, 0x08, 0x22, 0x80, 0x00,
-+    0x79, 0x00, 0x5b, 0x82, 0x45, 0x04, 0x43, 0x4f,
-+    0x4d, 0x31, 0x08, 0x5f, 0x48, 0x49, 0x44, 0x0c,
-+    0x41, 0xd0, 0x05, 0x01, 0x08, 0x5f, 0x55, 0x49,
-+    0x44, 0x01, 0x14, 0x18, 0x5f, 0x53, 0x54, 0x41,
-+    0x00, 0x70, 0x43, 0x41, 0x45, 0x4e, 0x60, 0xa0,
-+    0x06, 0x93, 0x60, 0x00, 0xa4, 0x00, 0xa1, 0x04,
-+    0xa4, 0x0a, 0x0f, 0x08, 0x5f, 0x43, 0x52, 0x53,
-+    0x11, 0x10, 0x0a, 0x0d, 0x47, 0x01, 0xf8, 0x03,
-+    0xf8, 0x03, 0x00, 0x08, 0x22, 0x10, 0x00, 0x79,
-+    0x00, 0x5b, 0x82, 0x46, 0x04, 0x43, 0x4f, 0x4d,
-+    0x32, 0x08, 0x5f, 0x48, 0x49, 0x44, 0x0c, 0x41,
-+    0xd0, 0x05, 0x01, 0x08, 0x5f, 0x55, 0x49, 0x44,
-+    0x0a, 0x02, 0x14, 0x18, 0x5f, 0x53, 0x54, 0x41,
-+    0x00, 0x70, 0x43, 0x42, 0x45, 0x4e, 0x60, 0xa0,
-+    0x06, 0x93, 0x60, 0x00, 0xa4, 0x00, 0xa1, 0x04,
-+    0xa4, 0x0a, 0x0f, 0x08, 0x5f, 0x43, 0x52, 0x53,
-+    0x11, 0x10, 0x0a, 0x0d, 0x47, 0x01, 0xf8, 0x02,
-+    0xf8, 0x02, 0x00, 0x08, 0x22, 0x08, 0x00, 0x79,
-+    0x00, 0x10, 0x49, 0x08, 0x2e, 0x5f, 0x53, 0x42,
-+    0x5f, 0x50, 0x43, 0x49, 0x30, 0x5b, 0x80, 0x50,
-+    0x43, 0x53, 0x54, 0x01, 0x0b, 0x00, 0xae, 0x0a,
-+    0x08, 0x5b, 0x81, 0x10, 0x50, 0x43, 0x53, 0x54,
-+    0x43, 0x50, 0x43, 0x49, 0x55, 0x20, 0x50, 0x43,
-+    0x49, 0x44, 0x20, 0x5b, 0x80, 0x53, 0x45, 0x4a,
-+    0x5f, 0x01, 0x0b, 0x08, 0xae, 0x0a, 0x04, 0x5b,
-+    0x81, 0x0b, 0x53, 0x45, 0x4a, 0x5f, 0x43, 0x42,
-+    0x30, 0x45, 0x4a, 0x20, 0x14, 0x0f, 0x50, 0x43,
-+    0x45, 0x4a, 0x01, 0x70, 0x79, 0x01, 0x68, 0x00,
-+    0x42, 0x30, 0x45, 0x4a, 0x14, 0x36, 0x50, 0x43,
-+    0x4e, 0x46, 0x00, 0x70, 0x00, 0x60, 0xa2, 0x2c,
-+    0x95, 0x60, 0x0a, 0x1f, 0x75, 0x60, 0xa0, 0x11,
-+    0x7b, 0x50, 0x43, 0x49, 0x55, 0x79, 0x01, 0x60,
-+    0x00, 0x00, 0x50, 0x43, 0x4e, 0x54, 0x60, 0x01,
-+    0xa0, 0x12, 0x7b, 0x50, 0x43, 0x49, 0x44, 0x79,
-+    0x01, 0x60, 0x00, 0x00, 0x50, 0x43, 0x4e, 0x54,
-+    0x60, 0x0a, 0x03, 0x10, 0x4a, 0xa0, 0x5f, 0x53,
-+    0x42, 0x5f, 0x10, 0x47, 0x74, 0x50, 0x43, 0x49,
-+    0x30, 0x08, 0x5f, 0x50, 0x52, 0x54, 0x12, 0x4b,
-+    0x73, 0x80, 0x12, 0x0b, 0x04, 0x0b, 0xff, 0xff,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0b,
-+    0x04, 0x0b, 0xff, 0xff, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0c, 0x04, 0x0b, 0xff, 0xff,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12,
-+    0x0c, 0x04, 0x0b, 0xff, 0xff, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x01, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x53, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x01, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x01, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x01, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x02, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x02, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x02, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x02,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x03, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x03, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x03, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x03, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x04, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x04, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x04, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x04, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x05, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x05, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x05, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x05, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x06, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x06, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x06, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x06,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x07, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x07, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x07, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x07, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x08, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x08, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x08, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x08, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x09, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x09, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x09, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x09, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x0a, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x0a, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x0a,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x0b, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x0b, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x0b, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x0b, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x0c, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x0c, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x0c, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x0c, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x0d, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x0d, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x0d, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x0d, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x0e, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x0e, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x0e,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x0f, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x0f, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x0f, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x0f, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x10, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x10, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x10, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x10, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x11, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x11, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x11, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x11, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x12, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x12, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x12, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x12,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x13, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x13, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x13, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x13, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x14, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x14, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x14, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x14, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x15, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x15, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x15, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x15, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x16, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x16, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x16, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x16,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x17, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x17, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x17, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x17, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x18, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x18, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x18, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x18, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x19, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x19, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x19, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x19, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x1a, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x1a, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x1a, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x1a,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x1b, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x1b, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x1b, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x1b, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x1c, 0x00, 0x00, 0x4c, 0x4e, 0x4b, 0x44, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x1c, 0x00,
-+    0x01, 0x4c, 0x4e, 0x4b, 0x41, 0x00, 0x12, 0x0e,
-+    0x04, 0x0c, 0xff, 0xff, 0x1c, 0x00, 0x0a, 0x02,
-+    0x4c, 0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0e, 0x04,
-+    0x0c, 0xff, 0xff, 0x1c, 0x00, 0x0a, 0x03, 0x4c,
-+    0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x1d, 0x00, 0x00, 0x4c, 0x4e, 0x4b,
-+    0x41, 0x00, 0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff,
-+    0x1d, 0x00, 0x01, 0x4c, 0x4e, 0x4b, 0x42, 0x00,
-+    0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x1d, 0x00,
-+    0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12,
-+    0x0e, 0x04, 0x0c, 0xff, 0xff, 0x1d, 0x00, 0x0a,
-+    0x03, 0x4c, 0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x4c,
-+    0x4e, 0x4b, 0x42, 0x00, 0x12, 0x0d, 0x04, 0x0c,
-+    0xff, 0xff, 0x1e, 0x00, 0x01, 0x4c, 0x4e, 0x4b,
-+    0x43, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff,
-+    0x1e, 0x00, 0x0a, 0x02, 0x4c, 0x4e, 0x4b, 0x44,
-+    0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff, 0xff, 0x1e,
-+    0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b, 0x41, 0x00,
-+    0x12, 0x0d, 0x04, 0x0c, 0xff, 0xff, 0x1f, 0x00,
-+    0x00, 0x4c, 0x4e, 0x4b, 0x43, 0x00, 0x12, 0x0d,
-+    0x04, 0x0c, 0xff, 0xff, 0x1f, 0x00, 0x01, 0x4c,
-+    0x4e, 0x4b, 0x44, 0x00, 0x12, 0x0e, 0x04, 0x0c,
-+    0xff, 0xff, 0x1f, 0x00, 0x0a, 0x02, 0x4c, 0x4e,
-+    0x4b, 0x41, 0x00, 0x12, 0x0e, 0x04, 0x0c, 0xff,
-+    0xff, 0x1f, 0x00, 0x0a, 0x03, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x00, 0x5b, 0x81, 0x24, 0x2f, 0x03, 0x50,
-+    0x43, 0x49, 0x30, 0x49, 0x53, 0x41, 0x5f, 0x50,
-+    0x34, 0x30, 0x43, 0x01, 0x50, 0x52, 0x51, 0x30,
-+    0x08, 0x50, 0x52, 0x51, 0x31, 0x08, 0x50, 0x52,
-+    0x51, 0x32, 0x08, 0x50, 0x52, 0x51, 0x33, 0x08,
-+    0x14, 0x13, 0x49, 0x51, 0x53, 0x54, 0x01, 0xa0,
-+    0x09, 0x7b, 0x0a, 0x80, 0x68, 0x00, 0xa4, 0x0a,
-+    0x09, 0xa4, 0x0a, 0x0b, 0x14, 0x36, 0x49, 0x51,
-+    0x43, 0x52, 0x09, 0x08, 0x50, 0x52, 0x52, 0x30,
-+    0x11, 0x0e, 0x0a, 0x0b, 0x89, 0x06, 0x00, 0x09,
-+    0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x8a,
-+    0x50, 0x52, 0x52, 0x30, 0x0a, 0x05, 0x50, 0x52,
-+    0x52, 0x49, 0xa0, 0x0b, 0x95, 0x68, 0x0a, 0x80,
-+    0x70, 0x68, 0x50, 0x52, 0x52, 0x49, 0xa4, 0x50,
-+    0x52, 0x52, 0x30, 0x5b, 0x82, 0x4c, 0x07, 0x4c,
-+    0x4e, 0x4b, 0x41, 0x08, 0x5f, 0x48, 0x49, 0x44,
-+    0x0c, 0x41, 0xd0, 0x0c, 0x0f, 0x08, 0x5f, 0x55,
-+    0x49, 0x44, 0x00, 0x08, 0x5f, 0x50, 0x52, 0x53,
-+    0x11, 0x16, 0x0a, 0x13, 0x89, 0x0e, 0x00, 0x09,
-+    0x03, 0x05, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00,
-+    0x00, 0x0b, 0x00, 0x00, 0x00, 0x79, 0x00, 0x14,
-+    0x0f, 0x5f, 0x53, 0x54, 0x41, 0x00, 0xa4, 0x49,
-+    0x51, 0x53, 0x54, 0x50, 0x52, 0x51, 0x30, 0x14,
-+    0x11, 0x5f, 0x44, 0x49, 0x53, 0x00, 0x7d, 0x50,
-+    0x52, 0x51, 0x30, 0x0a, 0x80, 0x50, 0x52, 0x51,
-+    0x30, 0x14, 0x0f, 0x5f, 0x43, 0x52, 0x53, 0x00,
-+    0xa4, 0x49, 0x51, 0x43, 0x52, 0x50, 0x52, 0x51,
-+    0x30, 0x14, 0x17, 0x5f, 0x53, 0x52, 0x53, 0x01,
-+    0x8a, 0x68, 0x0a, 0x05, 0x50, 0x52, 0x52, 0x49,
-+    0x70, 0x50, 0x52, 0x52, 0x49, 0x50, 0x52, 0x51,
-+    0x30, 0x5b, 0x82, 0x4c, 0x07, 0x4c, 0x4e, 0x4b,
-+    0x42, 0x08, 0x5f, 0x48, 0x49, 0x44, 0x0c, 0x41,
-+    0xd0, 0x0c, 0x0f, 0x08, 0x5f, 0x55, 0x49, 0x44,
-+    0x01, 0x08, 0x5f, 0x50, 0x52, 0x53, 0x11, 0x16,
-+    0x0a, 0x13, 0x89, 0x0e, 0x00, 0x09, 0x03, 0x05,
-+    0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b,
-+    0x00, 0x00, 0x00, 0x79, 0x00, 0x14, 0x0f, 0x5f,
-+    0x53, 0x54, 0x41, 0x00, 0xa4, 0x49, 0x51, 0x53,
-+    0x54, 0x50, 0x52, 0x51, 0x31, 0x14, 0x11, 0x5f,
-+    0x44, 0x49, 0x53, 0x00, 0x7d, 0x50, 0x52, 0x51,
-+    0x31, 0x0a, 0x80, 0x50, 0x52, 0x51, 0x31, 0x14,
-+    0x0f, 0x5f, 0x43, 0x52, 0x53, 0x00, 0xa4, 0x49,
-+    0x51, 0x43, 0x52, 0x50, 0x52, 0x51, 0x31, 0x14,
-+    0x17, 0x5f, 0x53, 0x52, 0x53, 0x01, 0x8a, 0x68,
-+    0x0a, 0x05, 0x50, 0x52, 0x52, 0x49, 0x70, 0x50,
-+    0x52, 0x52, 0x49, 0x50, 0x52, 0x51, 0x31, 0x5b,
-+    0x82, 0x4d, 0x07, 0x4c, 0x4e, 0x4b, 0x43, 0x08,
-+    0x5f, 0x48, 0x49, 0x44, 0x0c, 0x41, 0xd0, 0x0c,
-+    0x0f, 0x08, 0x5f, 0x55, 0x49, 0x44, 0x0a, 0x02,
-+    0x08, 0x5f, 0x50, 0x52, 0x53, 0x11, 0x16, 0x0a,
-+    0x13, 0x89, 0x0e, 0x00, 0x09, 0x03, 0x05, 0x00,
-+    0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00,
-+    0x00, 0x00, 0x79, 0x00, 0x14, 0x0f, 0x5f, 0x53,
-+    0x54, 0x41, 0x00, 0xa4, 0x49, 0x51, 0x53, 0x54,
-+    0x50, 0x52, 0x51, 0x32, 0x14, 0x11, 0x5f, 0x44,
-+    0x49, 0x53, 0x00, 0x7d, 0x50, 0x52, 0x51, 0x32,
-+    0x0a, 0x80, 0x50, 0x52, 0x51, 0x32, 0x14, 0x0f,
-+    0x5f, 0x43, 0x52, 0x53, 0x00, 0xa4, 0x49, 0x51,
-+    0x43, 0x52, 0x50, 0x52, 0x51, 0x32, 0x14, 0x17,
-+    0x5f, 0x53, 0x52, 0x53, 0x01, 0x8a, 0x68, 0x0a,
-+    0x05, 0x50, 0x52, 0x52, 0x49, 0x70, 0x50, 0x52,
-+    0x52, 0x49, 0x50, 0x52, 0x51, 0x32, 0x5b, 0x82,
-+    0x4d, 0x07, 0x4c, 0x4e, 0x4b, 0x44, 0x08, 0x5f,
-+    0x48, 0x49, 0x44, 0x0c, 0x41, 0xd0, 0x0c, 0x0f,
-+    0x08, 0x5f, 0x55, 0x49, 0x44, 0x0a, 0x03, 0x08,
-+    0x5f, 0x50, 0x52, 0x53, 0x11, 0x16, 0x0a, 0x13,
-+    0x89, 0x0e, 0x00, 0x09, 0x03, 0x05, 0x00, 0x00,
-+    0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00,
-+    0x00, 0x79, 0x00, 0x14, 0x0f, 0x5f, 0x53, 0x54,
-+    0x41, 0x00, 0xa4, 0x49, 0x51, 0x53, 0x54, 0x50,
-+    0x52, 0x51, 0x33, 0x14, 0x11, 0x5f, 0x44, 0x49,
-+    0x53, 0x00, 0x7d, 0x50, 0x52, 0x51, 0x33, 0x0a,
-+    0x80, 0x50, 0x52, 0x51, 0x33, 0x14, 0x0f, 0x5f,
-+    0x43, 0x52, 0x53, 0x00, 0xa4, 0x49, 0x51, 0x43,
-+    0x52, 0x50, 0x52, 0x51, 0x33, 0x14, 0x17, 0x5f,
-+    0x53, 0x52, 0x53, 0x01, 0x8a, 0x68, 0x0a, 0x05,
-+    0x50, 0x52, 0x52, 0x49, 0x70, 0x50, 0x52, 0x52,
-+    0x49, 0x50, 0x52, 0x51, 0x33, 0x5b, 0x82, 0x4f,
-+    0x04, 0x4c, 0x4e, 0x4b, 0x53, 0x08, 0x5f, 0x48,
-+    0x49, 0x44, 0x0c, 0x41, 0xd0, 0x0c, 0x0f, 0x08,
-+    0x5f, 0x55, 0x49, 0x44, 0x0a, 0x04, 0x08, 0x5f,
-+    0x50, 0x52, 0x53, 0x11, 0x0e, 0x0a, 0x0b, 0x89,
-+    0x06, 0x00, 0x09, 0x01, 0x09, 0x00, 0x00, 0x00,
-+    0x79, 0x00, 0x14, 0x09, 0x5f, 0x53, 0x54, 0x41,
-+    0x00, 0xa4, 0x0a, 0x0b, 0x14, 0x06, 0x5f, 0x44,
-+    0x49, 0x53, 0x00, 0x14, 0x0b, 0x5f, 0x43, 0x52,
-+    0x53, 0x00, 0xa4, 0x5f, 0x50, 0x52, 0x53, 0x14,
-+    0x06, 0x5f, 0x53, 0x52, 0x53, 0x01, 0x10, 0x47,
-+    0x0e, 0x5f, 0x53, 0x42, 0x5f, 0x14, 0x35, 0x43,
-+    0x50, 0x4d, 0x41, 0x01, 0x70, 0x83, 0x88, 0x43,
-+    0x50, 0x4f, 0x4e, 0x68, 0x00, 0x60, 0x70, 0x11,
-+    0x0b, 0x0a, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x61, 0x70, 0x68, 0x88, 0x61,
-+    0x0a, 0x02, 0x00, 0x70, 0x68, 0x88, 0x61, 0x0a,
-+    0x03, 0x00, 0x70, 0x60, 0x88, 0x61, 0x0a, 0x04,
-+    0x00, 0xa4, 0x61, 0x14, 0x1a, 0x43, 0x50, 0x53,
-+    0x54, 0x01, 0x70, 0x83, 0x88, 0x43, 0x50, 0x4f,
-+    0x4e, 0x68, 0x00, 0x60, 0xa0, 0x05, 0x60, 0xa4,
-+    0x0a, 0x0f, 0xa1, 0x03, 0xa4, 0x00, 0x14, 0x0a,
-+    0x43, 0x50, 0x45, 0x4a, 0x02, 0x5b, 0x22, 0x0a,
-+    0xc8, 0x5b, 0x80, 0x50, 0x52, 0x53, 0x54, 0x01,
-+    0x0b, 0x00, 0xaf, 0x0a, 0x20, 0x5b, 0x81, 0x0c,
-+    0x50, 0x52, 0x53, 0x54, 0x01, 0x50, 0x52, 0x53,
-+    0x5f, 0x40, 0x10, 0x14, 0x4a, 0x06, 0x50, 0x52,
-+    0x53, 0x43, 0x00, 0x70, 0x50, 0x52, 0x53, 0x5f,
-+    0x65, 0x70, 0x00, 0x62, 0x70, 0x00, 0x60, 0xa2,
-+    0x46, 0x05, 0x95, 0x60, 0x87, 0x43, 0x50, 0x4f,
-+    0x4e, 0x70, 0x83, 0x88, 0x43, 0x50, 0x4f, 0x4e,
-+    0x60, 0x00, 0x61, 0xa0, 0x0a, 0x7b, 0x60, 0x0a,
-+    0x07, 0x00, 0x7a, 0x62, 0x01, 0x62, 0xa1, 0x0c,
-+    0x70, 0x83, 0x88, 0x65, 0x7a, 0x60, 0x0a, 0x03,
-+    0x00, 0x00, 0x62, 0x70, 0x7b, 0x62, 0x01, 0x00,
-+    0x63, 0xa0, 0x22, 0x92, 0x93, 0x61, 0x63, 0x70,
-+    0x63, 0x88, 0x43, 0x50, 0x4f, 0x4e, 0x60, 0x00,
-+    0xa0, 0x0a, 0x93, 0x63, 0x01, 0x4e, 0x54, 0x46,
-+    0x59, 0x60, 0x01, 0xa1, 0x08, 0x4e, 0x54, 0x46,
-+    0x59, 0x60, 0x0a, 0x03, 0x75, 0x60, 0x10, 0x4e,
-+    0x09, 0x5f, 0x47, 0x50, 0x45, 0x08, 0x5f, 0x48,
-+    0x49, 0x44, 0x0d, 0x41, 0x43, 0x50, 0x49, 0x30,
-+    0x30, 0x30, 0x36, 0x00, 0x14, 0x06, 0x5f, 0x4c,
-+    0x30, 0x30, 0x00, 0x14, 0x15, 0x5f, 0x45, 0x30,
-+    0x31, 0x00, 0x5c, 0x2f, 0x03, 0x5f, 0x53, 0x42,
-+    0x5f, 0x50, 0x43, 0x49, 0x30, 0x50, 0x43, 0x4e,
-+    0x46, 0x14, 0x10, 0x5f, 0x45, 0x30, 0x32, 0x00,
-+    0x5c, 0x2e, 0x5f, 0x53, 0x42, 0x5f, 0x50, 0x52,
-+    0x53, 0x43, 0x14, 0x06, 0x5f, 0x4c, 0x30, 0x33,
-+    0x00, 0x14, 0x06, 0x5f, 0x4c, 0x30, 0x34, 0x00,
-+    0x14, 0x06, 0x5f, 0x4c, 0x30, 0x35, 0x00, 0x14,
-+    0x06, 0x5f, 0x4c, 0x30, 0x36, 0x00, 0x14, 0x06,
-+    0x5f, 0x4c, 0x30, 0x37, 0x00, 0x14, 0x06, 0x5f,
-+    0x4c, 0x30, 0x38, 0x00, 0x14, 0x06, 0x5f, 0x4c,
-+    0x30, 0x39, 0x00, 0x14, 0x06, 0x5f, 0x4c, 0x30,
-+    0x41, 0x00, 0x14, 0x06, 0x5f, 0x4c, 0x30, 0x42,
-+    0x00, 0x14, 0x06, 0x5f, 0x4c, 0x30, 0x43, 0x00,
-+    0x14, 0x06, 0x5f, 0x4c, 0x30, 0x44, 0x00, 0x14,
-+    0x06, 0x5f, 0x4c, 0x30, 0x45, 0x00, 0x14, 0x06,
-+    0x5f, 0x4c, 0x30, 0x46, 0x00
-+};
-diff --git a/src/fw/acpi.c b/src/fw/acpi.c
-index ecd1adc..b805b44 100644
---- a/src/fw/acpi.c
-+++ b/src/fw/acpi.c
-@@ -22,7 +22,7 @@
- #include "util.h" // MaxCountCPUs
- #include "x86.h" // readl
- 
--#include "src/fw/acpi-dsdt.hex"
-+#include "fw/acpi-dsdt.hex"
- 
- static void
- build_header(struct acpi_table_header *h, u32 sig, int len, u8 rev)
-@@ -235,7 +235,7 @@ encodeLen(u8 *ssdt_ptr, int length, int bytes)
-     return ssdt_ptr + bytes;
- }
- 
--#include "src/fw/ssdt-proc.hex"
-+#include "fw/ssdt-proc.hex"
- 
- /* 0x5B 0x83 ProcessorOp PkgLength NameString ProcID */
- #define PROC_OFFSET_CPUHEX (*ssdt_proc_name - *ssdt_proc_start + 2)
-@@ -256,8 +256,8 @@ encodeLen(u8 *ssdt_ptr, int length, int bytes)
- #define SSDT_SIGNATURE 0x54445353 // SSDT
- #define SSDT_HEADER_LENGTH 36
- 
--#include "src/fw/ssdt-misc.hex"
--#include "src/fw/ssdt-pcihp.hex"
-+#include "fw/ssdt-misc.hex"
-+#include "fw/ssdt-pcihp.hex"
- 
- #define PCI_RMV_BASE 0xae0c
- 
-diff --git a/src/fw/ssdt-misc.hex b/src/fw/ssdt-misc.hex
-new file mode 100644
-index 0000000..6eb1c6d
---- /dev/null
-+++ b/src/fw/ssdt-misc.hex
-@@ -0,0 +1,88 @@
-+/* DO NOT EDIT!  This is an autogenerated file.  See scripts/acpi_extract.py. */
-+static unsigned char acpi_pci64_length[] = {
-+    0x6f
-+};
-+
-+static unsigned char acpi_s4_pkg[] = {
-+    0x8f
-+};
-+
-+static unsigned char acpi_s3_name[] = {
-+    0x7c
-+};
-+
-+static unsigned char acpi_pci32_start[] = {
-+    0x2f
-+};
-+
-+static unsigned char acpi_pci64_valid[] = {
-+    0x43
-+};
-+
-+static unsigned char ssdp_misc_aml[] = {
-+    0x53, 0x53, 0x44, 0x54, 0x62, 0x01, 0x00, 0x00,
-+    0x01, 0x7f, 0x42, 0x58, 0x50, 0x43, 0x00, 0x00,
-+    0x42, 0x58, 0x53, 0x53, 0x44, 0x54, 0x53, 0x55,
-+    0x01, 0x00, 0x00, 0x00, 0x49, 0x4e, 0x54, 0x4c,
-+    0x18, 0x08, 0x15, 0x20, 0x10, 0x42, 0x05, 0x5c,
-+    0x00, 0x08, 0x50, 0x30, 0x53, 0x5f, 0x0c, 0x78,
-+    0x56, 0x34, 0x12, 0x08, 0x50, 0x30, 0x45, 0x5f,
-+    0x0c, 0x78, 0x56, 0x34, 0x12, 0x08, 0x50, 0x31,
-+    0x56, 0x5f, 0x0a, 0x12, 0x08, 0x50, 0x31, 0x53,
-+    0x5f, 0x11, 0x0b, 0x0a, 0x08, 0x00, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x50, 0x31,
-+    0x45, 0x5f, 0x11, 0x0b, 0x0a, 0x08, 0x00, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x50,
-+    0x31, 0x4c, 0x5f, 0x11, 0x0b, 0x0a, 0x08, 0x00,
-+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-+    0x29, 0x5c, 0x00, 0x08, 0x5f, 0x53, 0x33, 0x5f,
-+    0x12, 0x06, 0x04, 0x01, 0x01, 0x00, 0x00, 0x08,
-+    0x5f, 0x53, 0x34, 0x5f, 0x12, 0x08, 0x04, 0x0a,
-+    0x02, 0x0a, 0x02, 0x00, 0x00, 0x08, 0x5f, 0x53,
-+    0x35, 0x5f, 0x12, 0x06, 0x04, 0x00, 0x00, 0x00,
-+    0x00, 0x10, 0x40, 0x0c, 0x5c, 0x2f, 0x03, 0x5f,
-+    0x53, 0x42, 0x5f, 0x50, 0x43, 0x49, 0x30, 0x49,
-+    0x53, 0x41, 0x5f, 0x5b, 0x82, 0x4d, 0x0a, 0x50,
-+    0x45, 0x56, 0x54, 0x08, 0x5f, 0x48, 0x49, 0x44,
-+    0x0d, 0x51, 0x45, 0x4d, 0x55, 0x30, 0x30, 0x30,
-+    0x31, 0x00, 0x08, 0x50, 0x45, 0x53, 0x54, 0x0b,
-+    0xff, 0xff, 0x5b, 0x80, 0x50, 0x45, 0x4f, 0x52,
-+    0x01, 0x50, 0x45, 0x53, 0x54, 0x01, 0x5b, 0x81,
-+    0x0b, 0x50, 0x45, 0x4f, 0x52, 0x01, 0x50, 0x45,
-+    0x50, 0x54, 0x08, 0x14, 0x18, 0x5f, 0x53, 0x54,
-+    0x41, 0x00, 0x70, 0x50, 0x45, 0x53, 0x54, 0x60,
-+    0xa0, 0x06, 0x93, 0x60, 0x00, 0xa4, 0x00, 0xa1,
-+    0x04, 0xa4, 0x0a, 0x0f, 0x14, 0x0e, 0x52, 0x44,
-+    0x50, 0x54, 0x00, 0x70, 0x50, 0x45, 0x50, 0x54,
-+    0x60, 0xa4, 0x60, 0x14, 0x0c, 0x57, 0x52, 0x50,
-+    0x54, 0x01, 0x70, 0x68, 0x50, 0x45, 0x50, 0x54,
-+    0x08, 0x5f, 0x43, 0x52, 0x53, 0x11, 0x0d, 0x0a,
-+    0x0a, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
-+    0x01, 0x79, 0x00, 0x8b, 0x5f, 0x43, 0x52, 0x53,
-+    0x0a, 0x02, 0x49, 0x4f, 0x4d, 0x4e, 0x8b, 0x5f,
-+    0x43, 0x52, 0x53, 0x0a, 0x04, 0x49, 0x4f, 0x4d,
-+    0x58, 0x14, 0x18, 0x5f, 0x49, 0x4e, 0x49, 0x00,
-+    0x70, 0x50, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4d,
-+    0x4e, 0x70, 0x50, 0x45, 0x53, 0x54, 0x49, 0x4f,
-+    0x4d, 0x58
-+};
-+
-+static unsigned char ssdt_isa_pest[] = {
-+    0xd0
-+};
-+
-+static unsigned char acpi_s4_name[] = {
-+    0x88
-+};
-+
-+static unsigned char acpi_pci64_start[] = {
-+    0x4d
-+};
-+
-+static unsigned char acpi_pci64_end[] = {
-+    0x5e
-+};
-+
-+static unsigned char acpi_pci32_end[] = {
-+    0x39
-+};
-diff --git a/src/fw/ssdt-pcihp.hex b/src/fw/ssdt-pcihp.hex
-new file mode 100644
-index 0000000..79b67f7
---- /dev/null
-+++ b/src/fw/ssdt-pcihp.hex
-@@ -0,0 +1,38 @@
-+/* DO NOT EDIT!  This is an autogenerated file.  See scripts/acpi_extract.py. */
-+static unsigned char ssdt_pcihp_name[] = {
-+    0x33
-+};
-+
-+static unsigned char ssdt_pcihp_adr[] = {
-+    0x44
-+};
-+
-+static unsigned char ssdt_pcihp_end[] = {
-+    0x57
-+};
-+
-+static unsigned char ssdp_pcihp_aml[] = {
-+    0x53, 0x53, 0x44, 0x54, 0x57, 0x00, 0x00, 0x00,
-+    0x01, 0x27, 0x42, 0x58, 0x50, 0x43, 0x00, 0x00,
-+    0x42, 0x58, 0x53, 0x53, 0x44, 0x54, 0x50, 0x43,
-+    0x01, 0x00, 0x00, 0x00, 0x49, 0x4e, 0x54, 0x4c,
-+    0x18, 0x08, 0x15, 0x20, 0x10, 0x32, 0x5c, 0x2e,
-+    0x5f, 0x53, 0x42, 0x5f, 0x50, 0x43, 0x49, 0x30,
-+    0x5b, 0x82, 0x25, 0x53, 0x41, 0x41, 0x5f, 0x08,
-+    0x5f, 0x53, 0x55, 0x4e, 0x0a, 0xaa, 0x08, 0x5f,
-+    0x41, 0x44, 0x52, 0x0c, 0x00, 0x00, 0xaa, 0x00,
-+    0x14, 0x0e, 0x5f, 0x45, 0x4a, 0x30, 0x01, 0x50,
-+    0x43, 0x45, 0x4a, 0x5f, 0x53, 0x55, 0x4e
-+};
-+
-+static unsigned char ssdt_pcihp_start[] = {
-+    0x30
-+};
-+
-+static unsigned char ssdt_pcihp_id[] = {
-+    0x3d
-+};
-+
-+static unsigned char ssdt_pcihp_ej0[] = {
-+    0x4a
-+};
-diff --git a/src/fw/ssdt-proc.hex b/src/fw/ssdt-proc.hex
-new file mode 100644
-index 0000000..b6a5778
---- /dev/null
-+++ b/src/fw/ssdt-proc.hex
-@@ -0,0 +1,35 @@
-+/* DO NOT EDIT!  This is an autogenerated file.  See scripts/acpi_extract.py. */
-+static unsigned char ssdt_proc_name[] = {
-+    0x28
-+};
-+
-+static unsigned char ssdp_proc_aml[] = {
-+    0x53, 0x53, 0x44, 0x54, 0x78, 0x00, 0x00, 0x00,
-+    0x01, 0xbb, 0x42, 0x58, 0x50, 0x43, 0x00, 0x00,
-+    0x42, 0x58, 0x53, 0x53, 0x44, 0x54, 0x00, 0x00,
-+    0x01, 0x00, 0x00, 0x00, 0x49, 0x4e, 0x54, 0x4c,
-+    0x18, 0x08, 0x15, 0x20, 0x5b, 0x83, 0x42, 0x05,
-+    0x43, 0x50, 0x41, 0x41, 0xaa, 0x10, 0xb0, 0x00,
-+    0x00, 0x06, 0x08, 0x49, 0x44, 0x5f, 0x5f, 0x0a,
-+    0xaa, 0x08, 0x5f, 0x48, 0x49, 0x44, 0x0d, 0x41,
-+    0x43, 0x50, 0x49, 0x30, 0x30, 0x30, 0x37, 0x00,
-+    0x14, 0x0f, 0x5f, 0x4d, 0x41, 0x54, 0x00, 0xa4,
-+    0x43, 0x50, 0x4d, 0x41, 0x49, 0x44, 0x5f, 0x5f,
-+    0x14, 0x0f, 0x5f, 0x53, 0x54, 0x41, 0x00, 0xa4,
-+    0x43, 0x50, 0x53, 0x54, 0x49, 0x44, 0x5f, 0x5f,
-+    0x14, 0x0f, 0x5f, 0x45, 0x4a, 0x30, 0x01, 0x43,
-+    0x50, 0x45, 0x4a, 0x49, 0x44, 0x5f, 0x5f, 0x68,
-+    
-+};
-+
-+static unsigned char ssdt_proc_id[] = {
-+    0x38
-+};
-+
-+static unsigned char ssdt_proc_end[] = {
-+    0x78
-+};
-+
-+static unsigned char ssdt_proc_start[] = {
-+    0x24
-+};
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-acpi_extract-Don-t-generate-unused-and-empty-q35-acp.patch b/SOURCES/seabios-acpi_extract-Don-t-generate-unused-and-empty-q35-acp.patch
deleted file mode 100644
index af6d19b..0000000
--- a/SOURCES/seabios-acpi_extract-Don-t-generate-unused-and-empty-q35-acp.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 8d46a40440ca9a8ea718b9938c82b1848866e0c3 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Tue, 24 Jan 2017 11:41:10 +0100
-Subject: [PATCH 3/4] acpi_extract: Don't generate unused (and empty)
- q35-acpi-dsdt.hex file
-
-RH-Author: Gerd Hoffmann <kraxel@redhat.com>
-Message-id: <1485258071-13209-4-git-send-email-kraxel@redhat.com>
-Patchwork-id: 73324
-O-Subject: [RHEL-7.3.z seabios PATCH 3/4] acpi_extract: Don't generate unused (and empty) q35-acpi-dsdt.hex file
-Bugzilla: 1400102
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-
-From: Kevin O'Connor <kevin@koconnor.net>
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-(cherry picked from commit b0d3cc36667b68e41ac816caa22802922400e5af)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 4e4092d..6f1bb68 100644
---- a/Makefile
-+++ b/Makefile
-@@ -256,7 +256,7 @@ $(OUT)%.hex: %.dsl ./scripts/acpi_extract_preprocess.py ./scripts/acpi_extract.p
- 	$(Q)$(PYTHON) ./scripts/acpi_extract.py $(OUT)$*.lst > $(OUT)$*.off
- 	$(Q)cat $(OUT)$*.off > $@
- 
--$(OUT)src/fw/acpi.o: $(OUT)src/fw/acpi-dsdt.hex $(OUT)src/fw/ssdt-proc.hex $(OUT)src/fw/ssdt-pcihp.hex $(OUT)src/fw/ssdt-misc.hex $(OUT)src/fw/q35-acpi-dsdt.hex
-+$(OUT)src/fw/acpi.o: $(OUT)src/fw/acpi-dsdt.hex $(OUT)src/fw/ssdt-proc.hex $(OUT)src/fw/ssdt-pcihp.hex $(OUT)src/fw/ssdt-misc.hex
- 
- ################ Kconfig rules
- 
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-acpi_extract-Make-the-generated-.hex-files-more-huma.patch b/SOURCES/seabios-acpi_extract-Make-the-generated-.hex-files-more-huma.patch
deleted file mode 100644
index 47eca0e..0000000
--- a/SOURCES/seabios-acpi_extract-Make-the-generated-.hex-files-more-huma.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From dd0155d32ec0077505faa757fc7e05339400021b Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Tue, 24 Jan 2017 11:41:09 +0100
-Subject: [PATCH 2/4] acpi_extract: Make the generated .hex files more human
- readable
-
-RH-Author: Gerd Hoffmann <kraxel@redhat.com>
-Message-id: <1485258071-13209-3-git-send-email-kraxel@redhat.com>
-Patchwork-id: 73326
-O-Subject: [RHEL-7.3.z seabios PATCH 2/4] acpi_extract: Make the generated .hex files more human readable
-Bugzilla: 1400102
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-
-From: Kevin O'Connor <kevin@koconnor.net>
-
-Add a comment to the top of the generated file indicating that is is
-an automatically generated file.  Compress output so that up to eight
-hex values are placed on a single line.
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-(cherry picked from commit 7fdd2fda3fc3ff46b0919e9fd47fcd19561bbb37)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- scripts/acpi_extract.py | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
-diff --git a/scripts/acpi_extract.py b/scripts/acpi_extract.py
-index 24ff0d1..3ed863b 100755
---- a/scripts/acpi_extract.py
-+++ b/scripts/acpi_extract.py
-@@ -346,14 +346,21 @@ def main():
-     debug = "at end of file"
- 
-     # Pretty print output
-+    outstrs = ["/* DO NOT EDIT!  This is an autogenerated file."
-+               "  See scripts/acpi_extract.py. */"]
-     for array in output.keys():
-         otype = get_value_type(max(output[array]))
-+        outstrs.append("static unsigned %s %s[] = {" % (otype, array))
-         odata = []
-         for value in output[array]:
--            odata.append("0x%x" % value)
--        sys.stdout.write("static unsigned %s %s[] = {\n" % (otype, array))
--        sys.stdout.write(",\n".join(odata))
--        sys.stdout.write('\n};\n')
-+            odata.append("0x%02x" % value)
-+            if len(odata) >= 8:
-+                outstrs.append("    %s," % (', '.join(odata),))
-+                del odata[:]
-+        outstrs.append("    %s" % (', '.join(odata),))
-+        outstrs.append('};')
-+        outstrs.append('')
-+    sys.stdout.write('\n'.join(outstrs))
- 
- if __name__ == '__main__':
-     main()
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-acpi_extract-Move-main-code-to-new-function-main.patch b/SOURCES/seabios-acpi_extract-Move-main-code-to-new-function-main.patch
deleted file mode 100644
index c7d07e2..0000000
--- a/SOURCES/seabios-acpi_extract-Move-main-code-to-new-function-main.patch
+++ /dev/null
@@ -1,266 +0,0 @@
-From ebd7700ccd3b4cc8344aefd57e1f6114848cc964 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Tue, 24 Jan 2017 11:41:08 +0100
-Subject: [PATCH 1/4] acpi_extract: Move main code to new function main()
-
-RH-Author: Gerd Hoffmann <kraxel@redhat.com>
-Message-id: <1485258071-13209-2-git-send-email-kraxel@redhat.com>
-Patchwork-id: 73327
-O-Subject: [RHEL-7.3.z seabios PATCH 1/4] acpi_extract: Move main code to new function main()
-Bugzilla: 1400102
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
-RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
-
-From: Kevin O'Connor <kevin@koconnor.net>
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-(cherry picked from commit 1e7d2edab4bd24452fb45c60e8821569ff29c8fa)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- scripts/acpi_extract.py | 225 +++++++++++++++++++++++++-----------------------
- 1 file changed, 115 insertions(+), 110 deletions(-)
-
-diff --git a/scripts/acpi_extract.py b/scripts/acpi_extract.py
-index 60bbac3..24ff0d1 100755
---- a/scripts/acpi_extract.py
-+++ b/scripts/acpi_extract.py
-@@ -233,107 +233,6 @@ def aml_package_start(offset):
-     offset += 1
-     return offset + aml_pkglen_bytes(offset) + 1
- 
--lineno = 0
--for line in fileinput.input():
--    # Strip trailing newline
--    line = line.rstrip()
--    # line number and debug string to output in case of errors
--    lineno = lineno + 1
--    debug = "input line %d: %s" % (lineno, line)
--    #ASL listing: space, then line#, then ...., then code
--    pasl = re.compile('^\s+([0-9]+)(:\s\s|\.\.\.\.)\s*')
--    m = pasl.search(line)
--    if (m):
--        add_asl(lineno, pasl.sub("", line))
--    # AML listing: offset in hex, then ...., then code
--    paml = re.compile('^([0-9A-Fa-f]+)(:\s\s|\.\.\.\.)\s*')
--    m = paml.search(line)
--    if (m):
--        add_aml(m.group(1), paml.sub("", line))
--
--# Now go over code
--# Track AML offset of a previous non-empty ASL command
--prev_aml_offset = -1
--for i in range(len(asl)):
--    debug = "input line %d: %s" % (asl[i].lineno, asl[i].line)
--
--    l = asl[i].line
--
--    # skip if not an extract directive
--    a = len(re.findall(r'ACPI_EXTRACT', l))
--    if (not a):
--        # If not empty, store AML offset. Will be used for sanity checks
--        # IASL seems to put {}. at random places in the listing.
--        # Ignore any non-words for the purpose of this test.
--        m = re.search(r'\w+', l)
--        if (m):
--            prev_aml_offset = asl[i].aml_offset
--        continue
--
--    if (a > 1):
--        die("Expected at most one ACPI_EXTRACT per line, actual %d" % a)
--
--    mext = re.search(r'''
--                      ^\s* # leading whitespace
--                      /\*\s* # start C comment
--                      (ACPI_EXTRACT_\w+) # directive: group(1)
--                      \s+ # whitspace separates directive from array name
--                      (\w+) # array name: group(2)
--                      \s*\*/ # end of C comment
--                      \s*$ # trailing whitespace
--                      ''', l, re.VERBOSE)
--    if (not mext):
--        die("Stray ACPI_EXTRACT in input")
--
--    # previous command must have produced some AML,
--    # otherwise we are in a middle of a block
--    if (prev_aml_offset == asl[i].aml_offset):
--        die("ACPI_EXTRACT directive in the middle of a block")
--
--    directive = mext.group(1)
--    array = mext.group(2)
--    offset = asl[i].aml_offset
--
--    if (directive == "ACPI_EXTRACT_ALL_CODE"):
--        if array in output:
--            die("%s directive used more than once" % directive)
--        output[array] = aml
--        continue
--    if (directive == "ACPI_EXTRACT_NAME_BUFFER8"):
--        offset = aml_name_buffer8(offset)
--    elif (directive == "ACPI_EXTRACT_NAME_DWORD_CONST"):
--        offset = aml_name_dword_const(offset)
--    elif (directive == "ACPI_EXTRACT_NAME_WORD_CONST"):
--        offset = aml_name_word_const(offset)
--    elif (directive == "ACPI_EXTRACT_NAME_BYTE_CONST"):
--        offset = aml_name_byte_const(offset)
--    elif (directive == "ACPI_EXTRACT_NAME_STRING"):
--        offset = aml_name_string(offset)
--    elif (directive == "ACPI_EXTRACT_METHOD_STRING"):
--        offset = aml_method_string(offset)
--    elif (directive == "ACPI_EXTRACT_DEVICE_START"):
--        offset = aml_device_start(offset)
--    elif (directive == "ACPI_EXTRACT_DEVICE_STRING"):
--        offset = aml_device_string(offset)
--    elif (directive == "ACPI_EXTRACT_DEVICE_END"):
--        offset = aml_device_end(offset)
--    elif (directive == "ACPI_EXTRACT_PROCESSOR_START"):
--        offset = aml_processor_start(offset)
--    elif (directive == "ACPI_EXTRACT_PROCESSOR_STRING"):
--        offset = aml_processor_string(offset)
--    elif (directive == "ACPI_EXTRACT_PROCESSOR_END"):
--        offset = aml_processor_end(offset)
--    elif (directive == "ACPI_EXTRACT_PKG_START"):
--        offset = aml_package_start(offset)
--    else:
--        die("Unsupported directive %s" % directive)
--
--    if array not in output:
--        output[array] = []
--    output[array].append(offset)
--
--debug = "at end of file"
--
- def get_value_type(maxvalue):
-     #Use type large enough to fit the table
-     if (maxvalue >= 0x10000):
-@@ -343,12 +242,118 @@ def get_value_type(maxvalue):
-     else:
-         return "char"
- 
--# Pretty print output
--for array in output.keys():
--    otype = get_value_type(max(output[array]))
--    odata = []
--    for value in output[array]:
--        odata.append("0x%x" % value)
--    sys.stdout.write("static unsigned %s %s[] = {\n" % (otype, array))
--    sys.stdout.write(",\n".join(odata))
--    sys.stdout.write('\n};\n')
-+def main():
-+    global debug
-+    lineno = 0
-+    for line in fileinput.input():
-+        # Strip trailing newline
-+        line = line.rstrip()
-+        # line number and debug string to output in case of errors
-+        lineno = lineno + 1
-+        debug = "input line %d: %s" % (lineno, line)
-+        #ASL listing: space, then line#, then ...., then code
-+        pasl = re.compile('^\s+([0-9]+)(:\s\s|\.\.\.\.)\s*')
-+        m = pasl.search(line)
-+        if (m):
-+            add_asl(lineno, pasl.sub("", line))
-+        # AML listing: offset in hex, then ...., then code
-+        paml = re.compile('^([0-9A-Fa-f]+)(:\s\s|\.\.\.\.)\s*')
-+        m = paml.search(line)
-+        if (m):
-+            add_aml(m.group(1), paml.sub("", line))
-+
-+    # Now go over code
-+    # Track AML offset of a previous non-empty ASL command
-+    prev_aml_offset = -1
-+    for i in range(len(asl)):
-+        debug = "input line %d: %s" % (asl[i].lineno, asl[i].line)
-+
-+        l = asl[i].line
-+
-+        # skip if not an extract directive
-+        a = len(re.findall(r'ACPI_EXTRACT', l))
-+        if (not a):
-+            # If not empty, store AML offset. Will be used for sanity checks
-+            # IASL seems to put {}. at random places in the listing.
-+            # Ignore any non-words for the purpose of this test.
-+            m = re.search(r'\w+', l)
-+            if (m):
-+                prev_aml_offset = asl[i].aml_offset
-+            continue
-+
-+        if (a > 1):
-+            die("Expected at most one ACPI_EXTRACT per line, actual %d" % a)
-+
-+        mext = re.search(r'''
-+                          ^\s* # leading whitespace
-+                          /\*\s* # start C comment
-+                          (ACPI_EXTRACT_\w+) # directive: group(1)
-+                          \s+ # whitspace separates directive from array name
-+                          (\w+) # array name: group(2)
-+                          \s*\*/ # end of C comment
-+                          \s*$ # trailing whitespace
-+                          ''', l, re.VERBOSE)
-+        if (not mext):
-+            die("Stray ACPI_EXTRACT in input")
-+
-+        # previous command must have produced some AML,
-+        # otherwise we are in a middle of a block
-+        if (prev_aml_offset == asl[i].aml_offset):
-+            die("ACPI_EXTRACT directive in the middle of a block")
-+
-+        directive = mext.group(1)
-+        array = mext.group(2)
-+        offset = asl[i].aml_offset
-+
-+        if (directive == "ACPI_EXTRACT_ALL_CODE"):
-+            if array in output:
-+                die("%s directive used more than once" % directive)
-+            output[array] = aml
-+            continue
-+        if (directive == "ACPI_EXTRACT_NAME_BUFFER8"):
-+            offset = aml_name_buffer8(offset)
-+        elif (directive == "ACPI_EXTRACT_NAME_DWORD_CONST"):
-+            offset = aml_name_dword_const(offset)
-+        elif (directive == "ACPI_EXTRACT_NAME_WORD_CONST"):
-+            offset = aml_name_word_const(offset)
-+        elif (directive == "ACPI_EXTRACT_NAME_BYTE_CONST"):
-+            offset = aml_name_byte_const(offset)
-+        elif (directive == "ACPI_EXTRACT_NAME_STRING"):
-+            offset = aml_name_string(offset)
-+        elif (directive == "ACPI_EXTRACT_METHOD_STRING"):
-+            offset = aml_method_string(offset)
-+        elif (directive == "ACPI_EXTRACT_DEVICE_START"):
-+            offset = aml_device_start(offset)
-+        elif (directive == "ACPI_EXTRACT_DEVICE_STRING"):
-+            offset = aml_device_string(offset)
-+        elif (directive == "ACPI_EXTRACT_DEVICE_END"):
-+            offset = aml_device_end(offset)
-+        elif (directive == "ACPI_EXTRACT_PROCESSOR_START"):
-+            offset = aml_processor_start(offset)
-+        elif (directive == "ACPI_EXTRACT_PROCESSOR_STRING"):
-+            offset = aml_processor_string(offset)
-+        elif (directive == "ACPI_EXTRACT_PROCESSOR_END"):
-+            offset = aml_processor_end(offset)
-+        elif (directive == "ACPI_EXTRACT_PKG_START"):
-+            offset = aml_package_start(offset)
-+        else:
-+            die("Unsupported directive %s" % directive)
-+
-+        if array not in output:
-+            output[array] = []
-+        output[array].append(offset)
-+
-+    debug = "at end of file"
-+
-+    # Pretty print output
-+    for array in output.keys():
-+        otype = get_value_type(max(output[array]))
-+        odata = []
-+        for value in output[array]:
-+            odata.append("0x%x" % value)
-+        sys.stdout.write("static unsigned %s %s[] = {\n" % (otype, array))
-+        sys.stdout.write(",\n".join(odata))
-+        sys.stdout.write('\n};\n')
-+
-+if __name__ == '__main__':
-+    main()
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-blockcmd-accept-only-disks-and-CD-ROMs.patch b/SOURCES/seabios-blockcmd-accept-only-disks-and-CD-ROMs.patch
new file mode 100644
index 0000000..3367a56
--- /dev/null
+++ b/SOURCES/seabios-blockcmd-accept-only-disks-and-CD-ROMs.patch
@@ -0,0 +1,47 @@
+From a40b8bfb775945aa62510f0a3f4a3301aa3d65fc Mon Sep 17 00:00:00 2001
+From: Paolo Bonzini <pbonzini@redhat.com>
+Date: Tue, 9 May 2017 11:24:34 +0200
+Subject: [PATCH 1/4] blockcmd: accept only disks and CD-ROMs
+
+RH-Author: Paolo Bonzini <pbonzini@redhat.com>
+Message-id: <20170509112437.30666-2-pbonzini@redhat.com>
+Patchwork-id: 75050
+O-Subject: [RHEL7.4 seabios PATCH 1/4] blockcmd: accept only disks and CD-ROMs
+Bugzilla: 1020622
+RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Fam Zheng <famz@redhat.com>
+
+From: Roman Kagan <rkagan@virtuozzo.com>
+
+Luns that report to INQUIRY with a type other than CD-ROM are considered
+disks.  This isn't necessarily the case; working with such luns as disks
+may lead to unpredictable results.
+
+So bail out if the lun is neither CD-ROM nor disk.
+
+Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+(cherry picked from commit 177aecfcf4161c53f503782e68608284b198c0f9)
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/hw/blockcmd.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/hw/blockcmd.c b/src/hw/blockcmd.c
+index f147100..5ad128e 100644
+--- a/src/hw/blockcmd.c
++++ b/src/hw/blockcmd.c
+@@ -217,6 +217,9 @@ scsi_drive_setup(struct drive_s *drive, const char *s, int prio)
+         return 0;
+     }
+ 
++    if (pdt != SCSI_TYPE_DISK)
++        return -1;
++
+     ret = scsi_is_ready(&dop);
+     if (ret) {
+         dprintf(1, "scsi_is_ready returned %d\n", ret);
+-- 
+1.8.3.1
+
diff --git a/SOURCES/seabios-blockcmd-generic-SCSI-luns-enumeration.patch b/SOURCES/seabios-blockcmd-generic-SCSI-luns-enumeration.patch
new file mode 100644
index 0000000..ab97951
--- /dev/null
+++ b/SOURCES/seabios-blockcmd-generic-SCSI-luns-enumeration.patch
@@ -0,0 +1,169 @@
+From 456d0bab4f280e3fe4b8041a89385547b02454e0 Mon Sep 17 00:00:00 2001
+From: Paolo Bonzini <pbonzini@redhat.com>
+Date: Tue, 9 May 2017 11:24:35 +0200
+Subject: [PATCH 2/4] blockcmd: generic SCSI luns enumeration
+
+RH-Author: Paolo Bonzini <pbonzini@redhat.com>
+Message-id: <20170509112437.30666-3-pbonzini@redhat.com>
+Patchwork-id: 75051
+O-Subject: [RHEL7.4 seabios PATCH 2/4] blockcmd: generic SCSI luns enumeration
+Bugzilla: 1020622
+RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Fam Zheng <famz@redhat.com>
+
+From: Roman Kagan <rkagan@virtuozzo.com>
+
+Add two generic functions to discover active LUNs on a SCSI target.
+
+The functions take a temporary drive descriptor on the target, and a
+callback to create a new drive descriptor with a new LUN using the
+temporary one as a template.
+
+One of the functions performs REPORT LUNS on the temporary drive to
+obtain the list of candidate luns; the other sequentially iterates the
+lun numbers up to the given maximum, and is meant as a fallback.  Both
+functions return the number of successfully created drive descriptors,
+or a negative number if an error occured.
+
+This will allow to lift the limitation of most of the SCSI drivers that
+support booting off the LUN #0 only.
+
+Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+(cherry picked from commit 750188dfb35f61f1533f1138d6972b19f36f1a2c)
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/hw/blockcmd.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/hw/blockcmd.h |  4 +++
+ 2 files changed, 98 insertions(+)
+
+diff --git a/src/hw/blockcmd.c b/src/hw/blockcmd.c
+index 5ad128e..324188d 100644
+--- a/src/hw/blockcmd.c
++++ b/src/hw/blockcmd.c
+@@ -13,6 +13,7 @@
+ #include "std/disk.h" // DISK_RET_EPARAM
+ #include "string.h" // memset
+ #include "util.h" // timer_calc
++#include "malloc.h"
+ 
+ 
+ /****************************************************************
+@@ -181,6 +182,99 @@ scsi_is_ready(struct disk_op_s *op)
+     return 0;
+ }
+ 
++#define CDB_CMD_REPORT_LUNS  0xA0
++
++struct cdb_report_luns {
++    u8 command;
++    u8 reserved_01[5];
++    u32 length;
++    u8 pad[6];
++} PACKED;
++
++struct scsi_lun {
++    u16 lun[4];
++};
++
++struct cdbres_report_luns {
++    u32 length;
++    u32 reserved;
++    struct scsi_lun luns[];
++};
++
++static u64 scsilun2u64(struct scsi_lun *scsi_lun)
++{
++    int i;
++    u64 ret = 0;
++    for (i = 0; i < ARRAY_SIZE(scsi_lun->lun); i++)
++        ret |= be16_to_cpu(scsi_lun->lun[i]) << (16 * i);
++    return ret;
++}
++
++// Issue REPORT LUNS on a temporary drive and iterate reported luns calling
++// @add_lun for each
++int scsi_rep_luns_scan(struct drive_s *tmp_drive, scsi_add_lun add_lun)
++{
++    int ret = -1;
++    u32 maxluns = 511;
++    u32 nluns, i;
++    struct cdb_report_luns cdb = {
++        .command = CDB_CMD_REPORT_LUNS,
++    };
++    struct disk_op_s op = {
++        .drive_gf = tmp_drive,
++        .command = CMD_SCSI,
++        .count = 1,
++        .cdbcmd = &cdb,
++    };
++    struct cdbres_report_luns *resp;
++
++    ASSERT32FLAT();
++
++    while (1) {
++        op.blocksize = sizeof(struct cdbres_report_luns) +
++            maxluns * sizeof(struct scsi_lun);
++        op.buf_fl = malloc_tmp(op.blocksize);
++        if (!op.buf_fl) {
++            warn_noalloc();
++            return -1;
++        }
++
++        cdb.length = cpu_to_be32(op.blocksize);
++        if (process_op(&op) != DISK_RET_SUCCESS)
++            goto out;
++
++        resp = op.buf_fl;
++        nluns = be32_to_cpu(resp->length) / sizeof(struct scsi_lun);
++        if (nluns <= maxluns)
++            break;
++
++        free(op.buf_fl);
++        maxluns = nluns;
++    }
++
++    for (i = 0, ret = 0; i < nluns; i++) {
++        u64 lun = scsilun2u64(&resp->luns[i]);
++        if (lun >> 32)
++            continue;
++        ret += !add_lun((u32)lun, tmp_drive);
++    }
++out:
++    free(op.buf_fl);
++    return ret;
++}
++
++// Iterate LUNs on the target and call @add_lun for each
++int scsi_sequential_scan(struct drive_s *tmp_drive, u32 maxluns,
++                         scsi_add_lun add_lun)
++{
++    int ret;
++    u32 lun;
++
++    for (lun = 0, ret = 0; lun < maxluns; lun++)
++        ret += !add_lun(lun, tmp_drive);
++    return ret;
++}
++
+ // Validate drive, find block size / sector count, and register drive.
+ int
+ scsi_drive_setup(struct drive_s *drive, const char *s, int prio)
+diff --git a/src/hw/blockcmd.h b/src/hw/blockcmd.h
+index b543f85..f18543e 100644
+--- a/src/hw/blockcmd.h
++++ b/src/hw/blockcmd.h
+@@ -106,5 +106,9 @@ int scsi_is_read(struct disk_op_s *op);
+ int scsi_is_ready(struct disk_op_s *op);
+ struct drive_s;
+ int scsi_drive_setup(struct drive_s *drive, const char *s, int prio);
++typedef int (*scsi_add_lun)(u32 lun, struct drive_s *tmpl_drv);
++int scsi_rep_luns_scan(struct drive_s *tmp_drive, scsi_add_lun add_lun);
++int scsi_sequential_scan(struct drive_s *tmp_drive, u32 maxluns,
++                         scsi_add_lun add_lun);
+ 
+ #endif // blockcmd.h
+-- 
+1.8.3.1
+
diff --git a/SOURCES/seabios-fw-pci-add-Q35-S3-support.patch b/SOURCES/seabios-fw-pci-add-Q35-S3-support.patch
deleted file mode 100644
index 902e4ef..0000000
--- a/SOURCES/seabios-fw-pci-add-Q35-S3-support.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-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-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
deleted file mode 100644
index 1497d8d..0000000
--- a/SOURCES/seabios-pci-don-t-map-virtio-1.0-storage-devices-above-4G.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-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
deleted file mode 100644
index 03cad29..0000000
--- a/SOURCES/seabios-redhat-reserve-more-memory-on-fseg.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-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-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch b/SOURCES/seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch
index f5b86d3..a1b7b2e 100644
--- a/SOURCES/seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch
+++ b/SOURCES/seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch
@@ -1,17 +1,17 @@
-From 18b770a509ef5d3404f1ddfae74c019d7029445e Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Wed, 12 Apr 2017 06:36:21 +0200
-Subject: [PATCH 2/2] resume: Don't attempt to use generic reboot mechanisms on
+From adb570cb9034f647c0be5d1161be0e8699688cfa Mon Sep 17 00:00:00 2001
+From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
+Date: Wed, 29 Mar 2017 17:22:07 +0200
+Subject: [PATCH] resume: Don't attempt to use generic reboot mechanisms on
  QEMU
 
-RH-Author: Gerd Hoffmann <kraxel@redhat.com>
-Message-id: <20170412063621.25904-3-kraxel@redhat.com>
-Patchwork-id: 74683
-O-Subject: [RHEL-7.3.z seabios PATCH 2/2] resume: Don't attempt to use generic reboot mechanisms on QEMU
-Bugzilla: 1440706
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Author: Dr. David Alan Gilbert <dgilbert@redhat.com>
+Message-id: <20170329172207.15471-2-dgilbert@redhat.com>
+Patchwork-id: 74584
+O-Subject: [RHEL-7.4 seabios PATCH 1/1] resume: Don't attempt to use generic reboot mechanisms on QEMU
+Bugzilla: 1428347
 RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
-RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
+RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
 
 From: Kevin O'Connor <kevin@koconnor.net>
 
@@ -25,10 +25,6 @@ This fixes a bug that could cause code corruption on reboots - calling
 the udelay() function (as invoked by i8042_reboot and/or pci_reboot)
 was not valid after the BIOS was memcpy'd.
 
-RHEL-7.3.z note: no need to move PORT_PCI_REBOOT around, we don't
-have upstream 4d8510cdcca0 ("pci: Split low-level pci code from
-higher-level 'struct pci_device' code", 2016-02-03).
-
 Reported-by: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
 Tested-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
 Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
@@ -36,15 +32,17 @@ Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
 Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
 ---
  src/fw/shadow.c | 14 +++++++++++++-
+ src/hw/pci.c    |  1 -
+ src/hw/pci.h    |  2 ++
  src/resume.c    |  4 ++--
  src/util.h      |  2 +-
- 3 files changed, 16 insertions(+), 4 deletions(-)
+ 5 files changed, 18 insertions(+), 5 deletions(-)
 
 diff --git a/src/fw/shadow.c b/src/fw/shadow.c
-index 4486884..e91202a 100644
+index cd02d3a..c80b266 100644
 --- a/src/fw/shadow.c
 +++ b/src/fw/shadow.c
-@@ -157,7 +157,7 @@ make_bios_readonly(void)
+@@ -167,7 +167,7 @@ make_bios_readonly(void)
  }
  
  void
@@ -53,7 +51,7 @@ index 4486884..e91202a 100644
  {
      if (!CONFIG_QEMU || runningOnXen())
          return;
-@@ -177,4 +177,16 @@ qemu_prep_reset(void)
+@@ -187,4 +187,16 @@ qemu_prep_reset(void)
      memcpy(hrp + 4, hrp + 4 + BIOS_SRC_OFFSET, cend - (hrp + 4));
      barrier();
      HaveRunPost = 0;
@@ -70,11 +68,36 @@ index 4486884..e91202a 100644
 +    // Next try triple faulting the CPU to force a reset
 +    asm volatile("int3");
  }
+diff --git a/src/hw/pci.c b/src/hw/pci.c
+index 506ee56..8e3d617 100644
+--- a/src/hw/pci.c
++++ b/src/hw/pci.c
+@@ -12,7 +12,6 @@
+ #include "x86.h" // outl
+ 
+ #define PORT_PCI_CMD           0x0cf8
+-#define PORT_PCI_REBOOT        0x0cf9
+ #define PORT_PCI_DATA          0x0cfc
+ 
+ void pci_config_writel(u16 bdf, u32 addr, u32 val)
+diff --git a/src/hw/pci.h b/src/hw/pci.h
+index bf50430..ee6e196 100644
+--- a/src/hw/pci.h
++++ b/src/hw/pci.h
+@@ -3,6 +3,8 @@
+ 
+ #include "types.h" // u32
+ 
++#define PORT_PCI_REBOOT        0x0cf9
++
+ static inline u8 pci_bdf_to_bus(u16 bdf) {
+     return bdf >> 8;
+ }
 diff --git a/src/resume.c b/src/resume.c
-index afeadcf..9f264fb 100644
+index 99fa34f..fb0b8a8 100644
 --- a/src/resume.c
 +++ b/src/resume.c
-@@ -120,8 +120,8 @@ tryReboot(void)
+@@ -125,8 +125,8 @@ tryReboot(void)
  {
      dprintf(1, "Attempting a hard reboot\n");
  
@@ -86,10 +109,10 @@ index afeadcf..9f264fb 100644
      // Reboot using ACPI RESET_REG
      acpi_reboot();
 diff --git a/src/util.h b/src/util.h
-index cba3359..b6b7dd3 100644
+index 557eb8b..1dfe463 100644
 --- a/src/util.h
 +++ b/src/util.h
-@@ -119,7 +119,7 @@ void pirtable_setup(void);
+@@ -122,7 +122,7 @@ void pirtable_setup(void);
  // fw/shadow.c
  void make_bios_writable(void);
  void make_bios_readonly(void);
diff --git a/SOURCES/seabios-resume-Make-KVM-soft-reboot-loop-detection-more-flex.patch b/SOURCES/seabios-resume-Make-KVM-soft-reboot-loop-detection-more-flex.patch
deleted file mode 100644
index 14d9d09..0000000
--- a/SOURCES/seabios-resume-Make-KVM-soft-reboot-loop-detection-more-flex.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 51e8e987d3156c4a16428f922b1c0e5984451c39 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Wed, 12 Apr 2017 06:36:20 +0200
-Subject: [PATCH 1/2] resume: Make KVM soft reboot loop detection more flexible
-
-RH-Author: Gerd Hoffmann <kraxel@redhat.com>
-Message-id: <20170412063621.25904-2-kraxel@redhat.com>
-Patchwork-id: 74685
-O-Subject: [RHEL-7.3.z seabios PATCH 1/2] resume: Make KVM soft reboot loop detection more flexible
-Bugzilla: 1440706
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
-RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
-
-From: Kevin O'Connor <kevin@koconnor.net>
-
-Move the check for soft reboot loops from resume.c to shadow.c and
-directly check for the case where the copy of the BIOS in flash
-appears to be a memory alias instead.  This prevents a hang if an
-external reboot request occurs during the BIOS memcpy.
-
-Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-(cherry picked from commit b837e68d5a6c1a5945513f1995875445a1594c8a)
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- src/fw/shadow.c | 15 +++++++++++++--
- src/resume.c    |  9 ---------
- 2 files changed, 13 insertions(+), 11 deletions(-)
-
-diff --git a/src/fw/shadow.c b/src/fw/shadow.c
-index ee87d36..4486884 100644
---- a/src/fw/shadow.c
-+++ b/src/fw/shadow.c
-@@ -163,7 +163,18 @@ qemu_prep_reset(void)
-         return;
-     // QEMU doesn't map 0xc0000-0xfffff back to the original rom on a
-     // reset, so do that manually before invoking a hard reset.
-+    void *cstart = VSYMBOL(code32flat_start), *cend = VSYMBOL(code32flat_end);
-+    void *hrp = &HaveRunPost;
-+    if (readl(hrp + BIOS_SRC_OFFSET)) {
-+        // Some old versions of KVM don't store a pristine copy of the
-+        // BIOS in high memory.  Try to shutdown the machine instead.
-+        dprintf(1, "Unable to hard-reboot machine - attempting shutdown.\n");
-+        apm_shutdown();
-+    }
-+    // Copy the BIOS making sure to only reset HaveRunPost at end
-     make_bios_writable();
--    memcpy(VSYMBOL(code32flat_start), VSYMBOL(code32flat_start) + BIOS_SRC_OFFSET
--           , SYMBOL(code32flat_end) - SYMBOL(code32flat_start));
-+    memcpy(cstart, cstart + BIOS_SRC_OFFSET, hrp - cstart);
-+    memcpy(hrp + 4, hrp + 4 + BIOS_SRC_OFFSET, cend - (hrp + 4));
-+    barrier();
-+    HaveRunPost = 0;
- }
-diff --git a/src/resume.c b/src/resume.c
-index a5465d8..afeadcf 100644
---- a/src/resume.c
-+++ b/src/resume.c
-@@ -114,19 +114,10 @@ s3_resume(void)
-     farcall16big(&br);
- }
- 
--u8 HaveAttemptedReboot VARLOW;
--
- // Attempt to invoke a hard-reboot.
- static void
- tryReboot(void)
- {
--    if (HaveAttemptedReboot) {
--        // Hard reboot has failed - try to shutdown machine.
--        dprintf(1, "Unable to hard-reboot machine - attempting shutdown.\n");
--        apm_shutdown();
--    }
--    HaveAttemptedReboot = 1;
--
-     dprintf(1, "Attempting a hard reboot\n");
- 
-     // Setup for reset on qemu.
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-usb-uas-enumerate-luns-with-REPORT-LUNS.patch b/SOURCES/seabios-usb-uas-enumerate-luns-with-REPORT-LUNS.patch
new file mode 100644
index 0000000..3284b09
--- /dev/null
+++ b/SOURCES/seabios-usb-uas-enumerate-luns-with-REPORT-LUNS.patch
@@ -0,0 +1,110 @@
+From bd21ce9f5a9ba8539e3b44b635d10cce501f58bf Mon Sep 17 00:00:00 2001
+From: Paolo Bonzini <pbonzini@redhat.com>
+Date: Tue, 9 May 2017 11:24:37 +0200
+Subject: [PATCH 4/4] usb-uas: enumerate luns with REPORT LUNS
+
+RH-Author: Paolo Bonzini <pbonzini@redhat.com>
+Message-id: <20170509112437.30666-5-pbonzini@redhat.com>
+Patchwork-id: 75054
+O-Subject: [RHEL7.4 seabios PATCH 4/4] usb-uas: enumerate luns with REPORT LUNS
+Bugzilla: 1020622
+RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Fam Zheng <famz@redhat.com>
+
+From: Roman Kagan <rkagan@virtuozzo.com>
+
+Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+(cherry picked from commit 8579fd20c89f0bbc258d6eedb993ecb1bf431027)
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/hw/usb-uas.c | 45 +++++++++++++++++++++++++++++----------------
+ 1 file changed, 29 insertions(+), 16 deletions(-)
+
+diff --git a/src/hw/usb-uas.c b/src/hw/usb-uas.c
+index 10e3845..f00221a 100644
+--- a/src/hw/usb-uas.c
++++ b/src/hw/usb-uas.c
+@@ -86,8 +86,9 @@ typedef struct {
+ 
+ struct uasdrive_s {
+     struct drive_s drive;
++    struct usbdevice_s *usbdev;
+     struct usb_pipe *command, *status, *data_in, *data_out;
+-    int lun;
++    u32 lun;
+ };
+ 
+ int
+@@ -168,30 +169,41 @@ fail:
+     return DISK_RET_EBADTRACK;
+ }
+ 
+-static int
+-uas_lun_setup(struct usbdevice_s *usbdev,
+-              struct usb_pipe *command, struct usb_pipe *status,
+-              struct usb_pipe *data_in, struct usb_pipe *data_out,
+-              int lun)
++static void
++uas_init_lun(struct uasdrive_s *drive, struct usbdevice_s *usbdev,
++             struct usb_pipe *command, struct usb_pipe *status,
++             struct usb_pipe *data_in, struct usb_pipe *data_out,
++             u32 lun)
+ {
+-    // Allocate drive structure.
+-    struct uasdrive_s *drive = malloc_fseg(sizeof(*drive));
+-    if (!drive) {
+-        warn_noalloc();
+-        return -1;
+-    }
+     memset(drive, 0, sizeof(*drive));
+     if (usb_32bit_pipe(data_in))
+         drive->drive.type = DTYPE_UAS_32;
+     else
+         drive->drive.type = DTYPE_UAS;
++    drive->usbdev = usbdev;
+     drive->command = command;
+     drive->status = status;
+     drive->data_in = data_in;
+     drive->data_out = data_out;
+     drive->lun = lun;
++}
++
++static int
++uas_add_lun(u32 lun, struct drive_s *tmpl_drv)
++{
++    struct uasdrive_s *tmpl_lun =
++        container_of(tmpl_drv, struct uasdrive_s, drive);
++    struct uasdrive_s *drive = malloc_fseg(sizeof(*drive));
++    if (!drive) {
++        warn_noalloc();
++        return -1;
++    }
++    uas_init_lun(drive, tmpl_lun->usbdev,
++                 tmpl_lun->command, tmpl_lun->status,
++                 tmpl_lun->data_in, tmpl_lun->data_out,
++                 lun);
+ 
+-    int prio = bootprio_find_usb(usbdev, lun);
++    int prio = bootprio_find_usb(drive->usbdev, drive->lun);
+     int ret = scsi_drive_setup(&drive->drive, "USB UAS", prio);
+     if (ret) {
+         free(drive);
+@@ -258,9 +270,10 @@ usb_uas_setup(struct usbdevice_s *usbdev)
+     if (!command || !status || !data_in || !data_out)
+         goto fail;
+ 
+-    /* TODO: send REPORT LUNS.  For now, only LUN 0 is recognized.  */
+-    int ret = uas_lun_setup(usbdev, command, status, data_in, data_out, 0);
+-    if (ret < 0) {
++    struct uasdrive_s lun0;
++    uas_init_lun(&lun0, usbdev, command, status, data_in, data_out, 0);
++    int ret = scsi_rep_luns_scan(&lun0.drive, uas_add_lun);
++    if (ret <= 0) {
+         dprintf(1, "Unable to configure UAS drive.\n");
+         goto fail;
+     }
+-- 
+1.8.3.1
+
diff --git a/SOURCES/seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch b/SOURCES/seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
deleted file mode 100644
index 96f5a86..0000000
--- a/SOURCES/seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From d4b8b97fab7f66875dfc212a7e18f16436d79340 Mon Sep 17 00:00:00 2001
-From: Ladi Prosek <lprosek@redhat.com>
-Date: Mon, 31 Oct 2016 19:33:05 +0100
-Subject: [PATCH] vgabios: Reorder video modes to work around a Windows bug
-
-RH-Author: Ladi Prosek <lprosek@redhat.com>
-Message-id: <1477924385-6169-1-git-send-email-lprosek@redhat.com>
-Patchwork-id: 72677
-O-Subject: [RHEL-7.4/7.3.z seabios PATCH] vgabios: Reorder video modes to work around a Windows bug
-Bugzilla: 1392028
-RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
-RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-RH-Acked-by: vrozenfe <vrozenfe@redhat.com>
-
-Windows Server 2016 and Windows 10 RS1 come with a bug in its blue screen
-of death rendering logic which prevents it from generating crash dumps.
-
-The bug does not manifest if Windows sees a suitable 32 bpp video mode
-before a suitable 24 bpp video mode in the list of modes returned from
-vgabios. This commit moves all 32 bpp modes to the front of the list to
-make sure that this is always the case.
-
-Upstream patch:
-https://www.coreboot.org/pipermail/seabios/2016-October/010963.html
-
-There are valid concerns upstream about the breaking nature of the fix
-but for the limited set of operating systems supported by RHEL/RHEV we
-can easily verify that they are unaffected. So as things stand now, this
-is a downstream-only patch which will be reverted in the near future;
-the exact time will depend on Windows 10 RS2 schedule and other factors.
-The goal is to make sure that our customers running Windows 10 VMs can
-generate crash dumps.
-
-Signed-off-by: Ladi Prosek <lprosek@redhat.com>
-Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
----
- vgasrc/bochsvga.c | 39 ++++++++++++++++++++-------------------
- 1 file changed, 20 insertions(+), 19 deletions(-)
-
-diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c
-index aa82fc5..a43a21f 100644
---- a/vgasrc/bochsvga.c
-+++ b/vgasrc/bochsvga.c
-@@ -27,6 +27,25 @@ static struct bochsvga_mode
-     u16 mode;
-     struct vgamode_s info;
- } bochsvga_modes[] VAR16 = {
-+    /* 32 bpp BOCHS modes */
-+    { 0x140, { MM_DIRECT, 320,  200,  32, 8, 16, SEG_GRAPH } },
-+    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, SEG_GRAPH } },
-+    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, SEG_GRAPH } },
-+    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, SEG_GRAPH } },
-+    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, SEG_GRAPH } },
-+    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
-+    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
-+    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, SEG_GRAPH } },
-+    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, SEG_GRAPH } },
-+    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, SEG_GRAPH } },
-+    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, SEG_GRAPH } },
-+    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, SEG_GRAPH } },
-+    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
-+    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
-+    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
-+    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
-+    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, SEG_GRAPH } },
-+    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
-     /* standard modes */
-     { 0x100, { MM_PACKED, 640,  400,  8,  8, 16, SEG_GRAPH } },
-     { 0x101, { MM_PACKED, 640,  480,  8,  8, 16, SEG_GRAPH } },
-@@ -55,50 +74,32 @@ static struct bochsvga_mode
-     { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
-     { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
-     { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
--    /* BOCHS modes */
--    { 0x140, { MM_DIRECT, 320,  200,  32, 8, 16, SEG_GRAPH } },
--    { 0x141, { MM_DIRECT, 640,  400,  32, 8, 16, SEG_GRAPH } },
--    { 0x142, { MM_DIRECT, 640,  480,  32, 8, 16, SEG_GRAPH } },
--    { 0x143, { MM_DIRECT, 800,  600,  32, 8, 16, SEG_GRAPH } },
--    { 0x144, { MM_DIRECT, 1024, 768,  32, 8, 16, SEG_GRAPH } },
--    { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
-+    /* 8, 15, 16, and 24 bpp BOCHS modes */
-     { 0x146, { MM_PACKED, 320,  200,  8,  8, 16, SEG_GRAPH } },
--    { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
-     { 0x148, { MM_PACKED, 1152, 864,  8,  8, 16, SEG_GRAPH } },
-     { 0x149, { MM_DIRECT, 1152, 864,  15, 8, 16, SEG_GRAPH } },
-     { 0x14a, { MM_DIRECT, 1152, 864,  16, 8, 16, SEG_GRAPH } },
-     { 0x14b, { MM_DIRECT, 1152, 864,  24, 8, 16, SEG_GRAPH } },
--    { 0x14c, { MM_DIRECT, 1152, 864,  32, 8, 16, SEG_GRAPH } },
-     { 0x175, { MM_DIRECT, 1280, 768,  16, 8, 16, SEG_GRAPH } },
-     { 0x176, { MM_DIRECT, 1280, 768,  24, 8, 16, SEG_GRAPH } },
--    { 0x177, { MM_DIRECT, 1280, 768,  32, 8, 16, SEG_GRAPH } },
-     { 0x178, { MM_DIRECT, 1280, 800,  16, 8, 16, SEG_GRAPH } },
-     { 0x179, { MM_DIRECT, 1280, 800,  24, 8, 16, SEG_GRAPH } },
--    { 0x17a, { MM_DIRECT, 1280, 800,  32, 8, 16, SEG_GRAPH } },
-     { 0x17b, { MM_DIRECT, 1280, 960,  16, 8, 16, SEG_GRAPH } },
-     { 0x17c, { MM_DIRECT, 1280, 960,  24, 8, 16, SEG_GRAPH } },
--    { 0x17d, { MM_DIRECT, 1280, 960,  32, 8, 16, SEG_GRAPH } },
-     { 0x17e, { MM_DIRECT, 1440, 900,  16, 8, 16, SEG_GRAPH } },
-     { 0x17f, { MM_DIRECT, 1440, 900,  24, 8, 16, SEG_GRAPH } },
--    { 0x180, { MM_DIRECT, 1440, 900,  32, 8, 16, SEG_GRAPH } },
-     { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
-     { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
--    { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
-     { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
-     { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
--    { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
-     { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
-     { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
--    { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
-     { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
-     { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
--    { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
-     { 0x18d, { MM_DIRECT, 1280, 720,  16, 8, 16, SEG_GRAPH } },
-     { 0x18e, { MM_DIRECT, 1280, 720,  24, 8, 16, SEG_GRAPH } },
--    { 0x18f, { MM_DIRECT, 1280, 720,  32, 8, 16, SEG_GRAPH } },
-     { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
-     { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
--    { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
- };
- 
- static int dispi_found VAR16 = 0;
--- 
-1.8.3.1
-
diff --git a/SOURCES/seabios-virtio-scsi-enumerate-luns-with-REPORT-LUNS.patch b/SOURCES/seabios-virtio-scsi-enumerate-luns-with-REPORT-LUNS.patch
new file mode 100644
index 0000000..a25febf
--- /dev/null
+++ b/SOURCES/seabios-virtio-scsi-enumerate-luns-with-REPORT-LUNS.patch
@@ -0,0 +1,92 @@
+From bc962ebe743f27b3f939239a6193a3f93643ae7a Mon Sep 17 00:00:00 2001
+From: Paolo Bonzini <pbonzini@redhat.com>
+Date: Tue, 9 May 2017 11:24:36 +0200
+Subject: [PATCH 3/4] virtio-scsi: enumerate luns with REPORT LUNS
+
+RH-Author: Paolo Bonzini <pbonzini@redhat.com>
+Message-id: <20170509112437.30666-4-pbonzini@redhat.com>
+Patchwork-id: 75053
+O-Subject: [RHEL7.4 seabios PATCH 3/4] virtio-scsi: enumerate luns with REPORT LUNS
+Bugzilla: 1020622
+RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
+RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
+RH-Acked-by: Fam Zheng <famz@redhat.com>
+
+From: Roman Kagan <rkagan@virtuozzo.com>
+
+Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+(cherry picked from commit 69ebdef9bdb7f0f4f7bd9b5f30ef0bf687d6c918)
+Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
+---
+ src/hw/virtio-scsi.c | 38 ++++++++++++++++++++++++++------------
+ 1 file changed, 26 insertions(+), 12 deletions(-)
+
+diff --git a/src/hw/virtio-scsi.c b/src/hw/virtio-scsi.c
+index 5fb9409..7490ec0 100644
+--- a/src/hw/virtio-scsi.c
++++ b/src/hw/virtio-scsi.c
+@@ -94,15 +94,11 @@ virtio_scsi_process_op(struct disk_op_s *op)
+     return DISK_RET_EBADTRACK;
+ }
+ 
+-static int
+-virtio_scsi_add_lun(struct pci_device *pci, struct vp_device *vp,
+-                    struct vring_virtqueue *vq, u16 target, u16 lun)
++static void
++virtio_scsi_init_lun(struct virtio_lun_s *vlun, struct pci_device *pci,
++                     struct vp_device *vp, struct vring_virtqueue *vq,
++                     u16 target, u16 lun)
+ {
+-    struct virtio_lun_s *vlun = malloc_fseg(sizeof(*vlun));
+-    if (!vlun) {
+-        warn_noalloc();
+-        return -1;
+-    }
+     memset(vlun, 0, sizeof(*vlun));
+     vlun->drive.type = DTYPE_VIRTIO_SCSI;
+     vlun->drive.cntl_id = pci->bdf;
+@@ -111,8 +107,22 @@ virtio_scsi_add_lun(struct pci_device *pci, struct vp_device *vp,
+     vlun->vq = vq;
+     vlun->target = target;
+     vlun->lun = lun;
++}
+ 
+-    int prio = bootprio_find_scsi_device(pci, target, lun);
++static int
++virtio_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv)
++{
++    struct virtio_lun_s *tmpl_vlun =
++        container_of(tmpl_drv, struct virtio_lun_s, drive);
++    struct virtio_lun_s *vlun = malloc_fseg(sizeof(*vlun));
++    if (!vlun) {
++        warn_noalloc();
++        return -1;
++    }
++    virtio_scsi_init_lun(vlun, tmpl_vlun->pci, tmpl_vlun->vp, tmpl_vlun->vq,
++                         tmpl_vlun->target, lun);
++
++    int prio = bootprio_find_scsi_device(vlun->pci, vlun->target, vlun->lun);
+     int ret = scsi_drive_setup(&vlun->drive, "virtio-scsi", prio);
+     if (ret)
+         goto fail;
+@@ -127,9 +137,13 @@ static int
+ virtio_scsi_scan_target(struct pci_device *pci, struct vp_device *vp,
+                         struct vring_virtqueue *vq, u16 target)
+ {
+-    /* TODO: send REPORT LUNS.  For now, only LUN 0 is recognized.  */
+-    int ret = virtio_scsi_add_lun(pci, vp, vq, target, 0);
+-    return ret < 0 ? 0 : 1;
++
++    struct virtio_lun_s vlun0;
++
++    virtio_scsi_init_lun(&vlun0, pci, vp, vq, target, 0);
++
++    int ret = scsi_rep_luns_scan(&vlun0.drive, virtio_scsi_add_lun);
++    return ret < 0 ? 0 : ret;
+ }
+ 
+ static void
+-- 
+1.8.3.1
+
diff --git a/SPECS/seabios.spec b/SPECS/seabios.spec
index 436e821..20e6694 100644
--- a/SPECS/seabios.spec
+++ b/SPECS/seabios.spec
@@ -1,6 +1,6 @@
 Name:           seabios
-Version:        1.9.1
-Release:        5%{?dist}.3
+Version:        1.10.2
+Release:        3%{?dist}
 Summary:        Open-source legacy BIOS implementation
 
 Group:          Applications/Emulators
@@ -8,7 +8,7 @@ License:        LGPLv3
 URL:            http://www.coreboot.org/SeaBIOS
 
 
-Source0:        http://code.coreboot.org/p/seabios/downloads/get/%{name}-%{version}.tar.gz
+Source0: http://code.coreboot.org/p/seabios/downloads/get/seabios-1.10.2.tar.gz
 
 Source10:       config.vga.cirrus
 Source11:       config.vga.isavga
@@ -20,29 +20,21 @@ Source16:       config.base-256k
 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
-# For bz#1392028 - [virtio-win][svvp][ws2016] cannot generate dump file when using nmi on ws2016 and win10-32/64
-Patch8: seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
-# For bz#1400102 - decouple the SeaBIOS build from iasl
-Patch9: seabios-acpi_extract-Move-main-code-to-new-function-main.patch
-# For bz#1400102 - decouple the SeaBIOS build from iasl
-Patch10: seabios-acpi_extract-Make-the-generated-.hex-files-more-huma.patch
-# For bz#1400102 - decouple the SeaBIOS build from iasl
-Patch11: seabios-acpi_extract-Don-t-generate-unused-and-empty-q35-acp.patch
-# For bz#1400102 - decouple the SeaBIOS build from iasl
-Patch12: seabios-acpi-Don-t-build-SSDT-files-on-every-build-store-the.patch
-# For bz#1440706 - reboot hangs on rhel6 machine types (~1/20 times)
-Patch13: seabios-resume-Make-KVM-soft-reboot-loop-detection-more-flex.patch
-# For bz#1440706 - reboot hangs on rhel6 machine types (~1/20 times)
-Patch14: seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch
+Patch2: 0002-allow-1TB-of-RAM.patch
+Patch3: 0003-smbios-set-bios-vendor-version-fields-to-Seabios-0.5.patch
+Patch4: 0004-Workaround-for-a-win8.1-32-S4-resume-bug.patch
+Patch5: 0005-redhat-reserve-more-memory-on-fseg.patch
+Patch6: 0006-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
+# For bz#1428347 - reboot hangs on rhel6 machine types (~1/20 times)
+Patch7: seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch
+# For bz#1020622 - seabios fail to recognize virtio-scsi device if specify LUN not 0
+Patch8: seabios-blockcmd-accept-only-disks-and-CD-ROMs.patch
+# For bz#1020622 - seabios fail to recognize virtio-scsi device if specify LUN not 0
+Patch9: seabios-blockcmd-generic-SCSI-luns-enumeration.patch
+# For bz#1020622 - seabios fail to recognize virtio-scsi device if specify LUN not 0
+Patch10: seabios-virtio-scsi-enumerate-luns-with-REPORT-LUNS.patch
+# For bz#1020622 - seabios fail to recognize virtio-scsi device if specify LUN not 0
+Patch11: seabios-usb-uas-enumerate-luns-with-REPORT-LUNS.patch
 BuildRequires: python iasl
 ExclusiveArch: x86_64 %{power64}
 
@@ -93,9 +85,9 @@ SeaVGABIOS is an open-source VGABIOS implementation.
 %prep
 %setup -q
 
-%patch0002 -p1
-%patch0003 -p1
-%patch0004 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
@@ -103,11 +95,6 @@ SeaVGABIOS is an open-source VGABIOS implementation.
 %patch9 -p1
 %patch10 -p1
 %patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%patch14 -p1
-
-# Store version to be used
 
 %build
 %ifarch x86_64
@@ -160,19 +147,36 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios
 %endif
 
 %changelog
-* Thu May 11 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-5.el7_3.3
-- seabios-resume-Make-KVM-soft-reboot-loop-detection-more-flex.patch [bz#1440706]
-- seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch [bz#1440706]
-- Resolves: bz#1440706
+* Fri May 12 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.2-3.el7
+- seabios-blockcmd-accept-only-disks-and-CD-ROMs.patch [bz#1020622]
+- seabios-blockcmd-generic-SCSI-luns-enumeration.patch [bz#1020622]
+- seabios-virtio-scsi-enumerate-luns-with-REPORT-LUNS.patch [bz#1020622]
+- seabios-usb-uas-enumerate-luns-with-REPORT-LUNS.patch [bz#1020622]
+- Resolves: bz#1020622
+  (seabios fail to recognize virtio-scsi device if specify LUN not 0)
+
+* Thu Mar 30 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.2-2.el7
+- seabios-resume-Don-t-attempt-to-use-generic-reboot-mechanism.patch [bz#1428347]
+- Resolves: bz#1428347
   (reboot hangs on rhel6 machine types (~1/20 times))
 
-* Fri Feb 10 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-5.el7_3.2
-- seabios-acpi_extract-Move-main-code-to-new-function-main.patch [bz#1400102]
-- seabios-acpi_extract-Make-the-generated-.hex-files-more-huma.patch [bz#1400102]
-- seabios-acpi_extract-Don-t-generate-unused-and-empty-q35-acp.patch [bz#1400102]
-- seabios-acpi-Don-t-build-SSDT-files-on-every-build-store-the.patch [bz#1400102]
-- Resolves: bz#1400102
-  (decouple the SeaBIOS build from iasl)
+* Fri Mar 10 2017 Miroslav Rezanina <mrezanin@redhta.com> - 1.10.2-1.el7
+- Rebase to 1.10.2 [bz#1392821]
+- Resolves:  bz#1392821
+ (Rebase seabios to 1.10.1)
+
+* Fri Feb 03 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.1-2.el7
+- seabios-smm-disable-by-default.patch [bz#1378006]
+- seabios-ahci-Set-upper-32-bit-registers-to-zero.patch [bz#1418320]
+- Resolves: bz#1378006
+  (guest paused on target host sometimes when do migration during guest boot)
+- Resolves: bz#1418320
+  (Seabios does not fully reset AHCI adapters)
+
+* Tue Jan 10 2017 Miroslav Rezanina <mrezanin@redhat.com> - 1.10.1-1.el7
+- Rebase to seabios 1.10.1 [bz#1392821]
+- Resolves: bz#1392821
+  (Rebase seabios to 1.10.1)
 
 * Tue Nov 29 2016 Miroslav Rezanina <mrezanin@redhat.com> - 1.9.1-5.el7_3.1
 - seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch [bz#1392028]