From 62d8d852f4675e4ab4bc3dd339050d26d397c251 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Mar 02 2017 15:24:52 +0000 Subject: import seabios-1.9.1-5.el7_3.2 --- 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 new file mode 100644 index 0000000..e25c212 --- /dev/null +++ b/SOURCES/seabios-acpi-Don-t-build-SSDT-files-on-every-build-store-the.patch @@ -0,0 +1,837 @@ +From 5cd49fd2d2c32d93fa02716b5736c02aa0e5a4eb Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +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 +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 +RH-Acked-by: Igor Mammedov +RH-Acked-by: Miroslav Rezanina + +From: Kevin O'Connor + +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 +(cherry picked from commit 4373afaef34a76733638edc4e98f355b13c52f10) +Signed-off-by: Miroslav Rezanina +--- + 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 new file mode 100644 index 0000000..af6d19b --- /dev/null +++ b/SOURCES/seabios-acpi_extract-Don-t-generate-unused-and-empty-q35-acp.patch @@ -0,0 +1,40 @@ +From 8d46a40440ca9a8ea718b9938c82b1848866e0c3 Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +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 +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 +RH-Acked-by: Igor Mammedov +RH-Acked-by: Miroslav Rezanina + +From: Kevin O'Connor + +Signed-off-by: Kevin O'Connor +(cherry picked from commit b0d3cc36667b68e41ac816caa22802922400e5af) +Signed-off-by: Miroslav Rezanina +--- + 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 new file mode 100644 index 0000000..47eca0e --- /dev/null +++ b/SOURCES/seabios-acpi_extract-Make-the-generated-.hex-files-more-huma.patch @@ -0,0 +1,61 @@ +From dd0155d32ec0077505faa757fc7e05339400021b Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +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 +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 +RH-Acked-by: Igor Mammedov +RH-Acked-by: Miroslav Rezanina + +From: Kevin O'Connor + +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 +(cherry picked from commit 7fdd2fda3fc3ff46b0919e9fd47fcd19561bbb37) +Signed-off-by: Miroslav Rezanina +--- + 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 new file mode 100644 index 0000000..c7d07e2 --- /dev/null +++ b/SOURCES/seabios-acpi_extract-Move-main-code-to-new-function-main.patch @@ -0,0 +1,266 @@ +From ebd7700ccd3b4cc8344aefd57e1f6114848cc964 Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +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 +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 +RH-Acked-by: Igor Mammedov +RH-Acked-by: Miroslav Rezanina + +From: Kevin O'Connor + +Signed-off-by: Kevin O'Connor +(cherry picked from commit 1e7d2edab4bd24452fb45c60e8821569ff29c8fa) +Signed-off-by: Miroslav Rezanina +--- + 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/SPECS/seabios.spec b/SPECS/seabios.spec index 5103c72..8dff892 100644 --- a/SPECS/seabios.spec +++ b/SPECS/seabios.spec @@ -1,6 +1,6 @@ Name: seabios Version: 1.9.1 -Release: 5%{?dist}.1 +Release: 5%{?dist}.2 Summary: Open-source legacy BIOS implementation Group: Applications/Emulators @@ -31,6 +31,14 @@ Patch6: seabios-redhat-reserve-more-memory-on-fseg.patch 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 BuildRequires: python iasl ExclusiveArch: x86_64 %{power64} @@ -88,6 +96,10 @@ SeaVGABIOS is an open-source VGABIOS implementation. %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 # Store version to be used @@ -142,6 +154,14 @@ install -m 0644 binaries/vgabios*.bin $RPM_BUILD_ROOT%{_datadir}/seavgabios %endif %changelog +* Fri Feb 10 2017 Miroslav Rezanina - 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) + * Tue Nov 29 2016 Miroslav Rezanina - 1.9.1-5.el7_3.1 - seabios-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch [bz#1392028] - Resolves: bz#1392028