qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 7/7] Remove BIOS patches from the queue and update t


From: Anthony Liguori
Subject: [Qemu-devel] [PATCH 7/7] Remove BIOS patches from the queue and update the README
Date: Wed, 29 Jul 2009 13:45:59 -0500

Signed-off-by: Anthony Liguori <address@hidden>
---
 pc-bios/README                                     |   25 -
 pc-bios/bios-pq/0001_bx-qemu.patch                 |   18 -
 ...te-smbios-table-to-report-memory-above-4g.patch |   58 ---
 ...kvm-bios-generate-mptable-unconditionally.patch |   28 --
 ...ll-over-reporting--issues-with-32g-guests.patch |  187 --------
 ...-memory-device-length-boundary--condition.patch |   26 --
 ...ios-use-preprocessor-for-pci-link-routing.patch |   76 ----
 ...dd-26-pci-slots,-bringing-the-total-to-32.patch |   52 ---
 .../0008_qemu-bios-provide-gpe-_l0x-methods.patch  |   95 ----
 .../0009_qemu-bios-pci-hotplug-support.patch       |  131 ------
 ...-acpi-sci-interrupt-as-connected-to-irq-9.patch |   29 --
 ...011_read-additional-acpi-tables-from-a-vm.patch |  153 -------
 ...2-load-smbios-entries-and-files-from-qemu.patch |  473 --------------------
 ...0013_fix-non-acpi-timer-interrupt-routing.patch |   60 ---
 .../bios-pq/0014_add-srat-acpi-table-support.patch |  308 -------------
 .../0015_enable-power-button-even-generation.patch |   23 -
 ...e-correct-mask-to-size-pci-option-rom-bar.patch |   35 --
 ...bios-Move-QEMU_CFG-constants-to-rombios.h.patch |   59 ---
 ...0018-bochs-bios-Make-boot-prompt-optional.patch |   68 ---
 pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch |   38 --
 pc-bios/bios-pq/0020-qemu-kvm-cfg-maxcpus.patch    |   65 ---
 pc-bios/bios-pq/0021-qemu-madt-maxcpus.patch       |  121 -----
 pc-bios/bios-pq/HEAD                               |    1 -
 pc-bios/bios-pq/series                             |   21 -
 24 files changed, 0 insertions(+), 2150 deletions(-)
 delete mode 100644 pc-bios/bios-pq/0001_bx-qemu.patch
 delete mode 100644 
pc-bios/bios-pq/0002_kvm-bios-update-smbios-table-to-report-memory-above-4g.patch
 delete mode 100644 
pc-bios/bios-pq/0003_kvm-bios-generate-mptable-unconditionally.patch
 delete mode 100644 
pc-bios/bios-pq/0004_kvm-bios-resolve-memory-device-roll-over-reporting--issues-with-32g-guests.patch
 delete mode 100644 
pc-bios/bios-pq/0005_kvm-bios-fix-smbios-memory-device-length-boundary--condition.patch
 delete mode 100644 
pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
 delete mode 100644 
pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
 delete mode 100644 
pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch
 delete mode 100644 pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
 delete mode 100644 
pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
 delete mode 100644 
pc-bios/bios-pq/0011_read-additional-acpi-tables-from-a-vm.patch
 delete mode 100644 
pc-bios/bios-pq/0012-load-smbios-entries-and-files-from-qemu.patch
 delete mode 100644 
pc-bios/bios-pq/0013_fix-non-acpi-timer-interrupt-routing.patch
 delete mode 100644 pc-bios/bios-pq/0014_add-srat-acpi-table-support.patch
 delete mode 100644 
pc-bios/bios-pq/0015_enable-power-button-even-generation.patch
 delete mode 100644 
pc-bios/bios-pq/0016-use-correct-mask-to-size-pci-option-rom-bar.patch
 delete mode 100644 
pc-bios/bios-pq/0017-bochs-bios-Move-QEMU_CFG-constants-to-rombios.h.patch
 delete mode 100644 
pc-bios/bios-pq/0018-bochs-bios-Make-boot-prompt-optional.patch
 delete mode 100644 pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch
 delete mode 100644 pc-bios/bios-pq/0020-qemu-kvm-cfg-maxcpus.patch
 delete mode 100644 pc-bios/bios-pq/0021-qemu-madt-maxcpus.patch
 delete mode 100644 pc-bios/bios-pq/HEAD
 delete mode 100644 pc-bios/bios-pq/series

diff --git a/pc-bios/README b/pc-bios/README
index 269f1e5..021c310 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -1,29 +1,4 @@
 - The PC BIOS comes from the Bochs project (http://bochs.sourceforge.net/).
-  The patches in bios-pq have been applied. The binary is based on the revision
-  in bios-pq/HEAD with the patches in bios-pq/series applied.  The git repo
-  that HEAD refers to is located at
-  git://git.kernel.org/pub/scm/virt/bochs/bochs.git
-
-  To build these use the following instructions:
-  using guilt:
-  $ export QEMUSRC=/path/to/qemu/svn
-  $ git clone git://git.kernel.org/pub/scm/virt/bochs/bochs.git
-  $ cd bochs
-  $ git checkout -b qemu-bios $(cat $QEMUSRC/pc-bios/bios-pq/HEAD)
-
-  $ mkdir -p .git/patches
-  $ ln -s $QEMUSRC/pc-bios/bios-pq .git/patches/qemu-bios
-  $ touch .git/patches/qemu-bios/status
-  $ guilt push -a
-  $ ./configure
-  $ cd bios
-  $ make
-  $ cp BIOS-bochs-latest $QEMUSRC/pc-bios/bios.bin
-
-  or alternatively (after the git checkout):
-  $ for p in $(cat $QEMUSRC/pc-bios/bios-pq/series); do git am $p; done
-  $ ./configure
-  $ make bios
 
 - The VGA BIOS and the Cirrus VGA BIOS come from the LGPL VGA bios
   project (http://www.nongnu.org/vgabios/).  The binary is based on the 
revision
diff --git a/pc-bios/bios-pq/0001_bx-qemu.patch 
b/pc-bios/bios-pq/0001_bx-qemu.patch
deleted file mode 100644
index 47a21b3..0000000
--- a/pc-bios/bios-pq/0001_bx-qemu.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-From ca7b25e3ab8a49e46484bd436fedf72940f02887 Mon Sep 17 00:00:00 2001
-Date: Wed, 17 Dec 2008 21:35:49 +0000
-Subject: Enable BX_QEMU
-From: Anthony Liguori <address@hidden>
-
-Signed-off-by: Anthony Liguori <address@hidden>
-
---- bochs-2.3.7.orig/bios/rombios.h
-+++ bochs-2.3.7/bios/rombios.h
-@@ -19,7 +19,7 @@
- //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 
USA
- 
- /* define it to include QEMU specific code */
--//#define BX_QEMU
-+#define BX_QEMU
- 
- #ifndef LEGACY
- #  define BX_ROMBIOS32     1
diff --git 
a/pc-bios/bios-pq/0002_kvm-bios-update-smbios-table-to-report-memory-above-4g.patch
 
b/pc-bios/bios-pq/0002_kvm-bios-update-smbios-table-to-report-memory-above-4g.patch
deleted file mode 100644
index 7b85418..0000000
--- 
a/pc-bios/bios-pq/0002_kvm-bios-update-smbios-table-to-report-memory-above-4g.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 9a717b55df29b2b0dd0553ccfa656671bad043d1 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 14:55:47 +0000
-Subject: update SMBIOS table to report memory above 4G
-From: Alex Williamson <address@hidden>
-
-Signed-off-by: Alex Williamson <address@hidden>
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/rombios32.c
-===================================================================
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 3269be5..9587288 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -429,6 +429,7 @@ uint32_t cpuid_signature;
- uint32_t cpuid_features;
- uint32_t cpuid_ext_features;
- unsigned long ram_size;
-+uint64_t ram_end;
- uint8_t bios_uuid[16];
- #ifdef BX_USE_EBDA_TABLES
- unsigned long ebda_cur_addr;
-@@ -571,6 +572,13 @@ void ram_probe(void)
-     ram_size = (cmos_readb(0x30) | (cmos_readb(0x31) << 8)) * 1024 +
-         1 * 1024 * 1024;
-   BX_INFO("ram_size=0x%08lx\n", ram_size);
-+  if (cmos_readb(0x5b) | cmos_readb(0x5c) | cmos_readb(0x5d))
-+    ram_end = (((uint64_t)cmos_readb(0x5b) << 16) |
-+               ((uint64_t)cmos_readb(0x5c) << 24) |
-+               ((uint64_t)cmos_readb(0x5d) << 32)) + (1ull << 32);
-+  else
-+    ram_end = ram_size;
-+  BX_INFO("end of ram=%ldMB\n", ram_end >> 20);
- #ifdef BX_USE_EBDA_TABLES
-   ebda_cur_addr = ((*(uint16_t *)(0x40e)) << 4) + 0x380;
-   BX_INFO("ebda_cur_addr: 0x%08lx\n", ebda_cur_addr);
-@@ -2174,7 +2182,8 @@ void smbios_init(void)
- {
-     unsigned cpu_num, nr_structs = 0, max_struct_size = 0;
-     char *start, *p, *q;
--    int memsize = ram_size / (1024 * 1024);
-+    int memsize = (ram_end == ram_size) ? ram_size / (1024 * 1024) :
-+                  (ram_end - (1ull << 32) + ram_size) / (1024 * 1024);
- 
- #ifdef BX_USE_EBDA_TABLES
-     ebda_cur_addr = align(ebda_cur_addr, 16);
-@@ -2201,8 +2210,8 @@ void smbios_init(void)
-         add_struct(smbios_type_4_init(p, cpu_num));
-     add_struct(smbios_type_16_init(p, memsize));
-     add_struct(smbios_type_17_init(p, memsize));
--    add_struct(smbios_type_19_init(p, memsize));
--    add_struct(smbios_type_20_init(p, memsize));
-+    add_struct(smbios_type_19_init(p, ram_end / (1024 * 1024)));
-+    add_struct(smbios_type_20_init(p, ram_end / (1024 * 1024)));
-     add_struct(smbios_type_32_init(p));
-     add_struct(smbios_type_127_init(p));
- 
diff --git 
a/pc-bios/bios-pq/0003_kvm-bios-generate-mptable-unconditionally.patch 
b/pc-bios/bios-pq/0003_kvm-bios-generate-mptable-unconditionally.patch
deleted file mode 100644
index ae2fbf6..0000000
--- a/pc-bios/bios-pq/0003_kvm-bios-generate-mptable-unconditionally.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 9a717b55df29b2b0dd0553ccfa656671bad043d1 Mon Sep 17 00:00:00 2001
-Date: Wed, 21 Jan 2009 21:46:20 +0000
-Subject: generate mptable unconditionally
-From: Avi Kivity <address@hidden>
-
-VMware ESX requires an mptable even for uniprocessor guests.
-
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/rombios32.c
-===================================================================
---- bochs.orig/bios/rombios32.c
-+++ bochs/bios/rombios32.c
-@@ -970,11 +970,6 @@ static void mptable_init(void)
-     int ioapic_id, i, len;
-     int mp_config_table_size;
-
--#ifdef BX_QEMU
--    if (smp_cpus <= 1)
--        return;
--#endif
--
- #ifdef BX_USE_EBDA_TABLES
-     mp_config_table = (uint8_t *)(ram_size - ACPI_DATA_SIZE - 
MPTABLE_MAX_SIZE);
- #else
-
-
diff --git 
a/pc-bios/bios-pq/0004_kvm-bios-resolve-memory-device-roll-over-reporting--issues-with-32g-guests.patch
 
b/pc-bios/bios-pq/0004_kvm-bios-resolve-memory-device-roll-over-reporting--issues-with-32g-guests.patch
deleted file mode 100644
index 252effc..0000000
--- 
a/pc-bios/bios-pq/0004_kvm-bios-resolve-memory-device-roll-over-reporting--issues-with-32g-guests.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From 7217e1240340ab49878c4e415df40aa0c6376eb9 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 14:55:47 +0000
-Subject: resolve memory device roll over reporting issues with >32G guests
-From: Bill Rieske <address@hidden>
-
-The field within the Memory Device type 17 is only a word with the MSB being
-used to report MB/KB.  Thereby, a guest with 32G and greater would report
-incorrect memory device information rolling over to 0.
-
-This presents more than one memory device and associated memory structures
-if the memory is larger than 16G
-
-Signed-off-by: Bill Rieske <address@hidden>
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/rombios32.c
-===================================================================
---- bochs.orig/bios/rombios32.c
-+++ bochs/bios/rombios32.c
-@@ -381,6 +381,17 @@ int vsnprintf(char *buf, int buflen, con
-     return buf - buf0;
- }
-
-+int snprintf(char * buf, size_t size, const char *fmt, ...)
-+{
-+      va_list args;
-+      int i;
-+
-+      va_start(args, fmt);
-+      i=vsnprintf(buf,size,fmt,args);
-+      va_end(args);
-+      return i;
-+}
-+
- void bios_printf(int flags, const char *fmt, ...)
- {
-     va_list ap;
-@@ -2039,7 +2050,7 @@ smbios_type_4_init(void *start, unsigned
-
- /* Type 16 -- Physical Memory Array */
- static void *
--smbios_type_16_init(void *start, uint32_t memsize)
-+smbios_type_16_init(void *start, uint32_t memsize, int nr_mem_devs)
- {
-     struct smbios_type_16 *p = (struct smbios_type_16*)start;
-
-@@ -2052,7 +2063,7 @@ smbios_type_16_init(void *start, uint32_
-     p->error_correction = 0x01; /* other */
-     p->maximum_capacity = memsize * 1024;
-     p->memory_error_information_handle = 0xfffe; /* none provided */
--    p->number_of_memory_devices = 1;
-+    p->number_of_memory_devices = nr_mem_devs;
-
-     start += sizeof(struct smbios_type_16);
-     *((uint16_t *)start) = 0;
-@@ -2062,20 +2073,19 @@ smbios_type_16_init(void *start, uint32_
-
- /* Type 17 -- Memory Device */
- static void *
--smbios_type_17_init(void *start, uint32_t memory_size_mb)
-+smbios_type_17_init(void *start, uint32_t memory_size_mb, int instance)
- {
-     struct smbios_type_17 *p = (struct smbios_type_17 *)start;
-
-     p->header.type = 17;
-     p->header.length = sizeof(struct smbios_type_17);
--    p->header.handle = 0x1100;
-+    p->header.handle = 0x1100 + instance;
-
-     p->physical_memory_array_handle = 0x1000;
-     p->total_width = 64;
-     p->data_width = 64;
--    /* truncate memory_size_mb to 16 bits and clear most significant
--       bit [indicates size in MB] */
--    p->size = (uint16_t) memory_size_mb & 0x7fff;
-+/* TODO: should assert in case something is wrong   ASSERT((memory_size_mb & 
~0x7fff) == 0); */
-+    p->size = memory_size_mb;
-     p->form_factor = 0x09; /* DIMM */
-     p->device_set = 0;
-     p->device_locator_str = 1;
-@@ -2084,8 +2094,8 @@ smbios_type_17_init(void *start, uint32_
-     p->type_detail = 0;
-
-     start += sizeof(struct smbios_type_17);
--    memcpy((char *)start, "DIMM 1", 7);
--    start += 7;
-+    snprintf(start, 8, "DIMM %d", instance);
-+    start += strlen(start) + 1;
-     *((uint8_t *)start) = 0;
-
-     return start+1;
-@@ -2093,16 +2103,16 @@ smbios_type_17_init(void *start, uint32_
-
- /* Type 19 -- Memory Array Mapped Address */
- static void *
--smbios_type_19_init(void *start, uint32_t memory_size_mb)
-+smbios_type_19_init(void *start, uint32_t memory_size_mb, int instance)
- {
-     struct smbios_type_19 *p = (struct smbios_type_19 *)start;
-
-     p->header.type = 19;
-     p->header.length = sizeof(struct smbios_type_19);
--    p->header.handle = 0x1300;
-+    p->header.handle = 0x1300 + instance;
-
--    p->starting_address = 0;
--    p->ending_address = (memory_size_mb * 1024) - 1;
-+    p->starting_address = instance << 24;
-+    p->ending_address = p->starting_address + (memory_size_mb << 10) - 1;
-     p->memory_array_handle = 0x1000;
-     p->partition_width = 1;
-
-@@ -2114,18 +2124,18 @@ smbios_type_19_init(void *start, uint32_
-
- /* Type 20 -- Memory Device Mapped Address */
- static void *
--smbios_type_20_init(void *start, uint32_t memory_size_mb)
-+smbios_type_20_init(void *start, uint32_t memory_size_mb, int instance)
- {
-     struct smbios_type_20 *p = (struct smbios_type_20 *)start;
-
-     p->header.type = 20;
-     p->header.length = sizeof(struct smbios_type_20);
--    p->header.handle = 0x1400;
-+    p->header.handle = 0x1400 + instance;
-
--    p->starting_address = 0;
--    p->ending_address = (memory_size_mb * 1024) - 1;
--    p->memory_device_handle = 0x1100;
--    p->memory_array_mapped_address_handle = 0x1300;
-+    p->starting_address = instance << 24;
-+    p->ending_address = p->starting_address + (memory_size_mb << 10) - 1;
-+    p->memory_device_handle = 0x1100 + instance;
-+    p->memory_array_mapped_address_handle = 0x1300 + instance;
-     p->partition_row_position = 1;
-     p->interleave_position = 0;
-     p->interleaved_data_depth = 0;
-@@ -2176,6 +2186,7 @@ void smbios_init(void)
-     char *start, *p, *q;
-     int memsize = (ram_end == ram_size) ? ram_size / (1024 * 1024) :
-                   (ram_end - (1ull << 32) + ram_size) / (1024 * 1024);
-+    int i, nr_mem_devs;
-
- #ifdef BX_USE_EBDA_TABLES
-     ebda_cur_addr = align(ebda_cur_addr, 16);
-@@ -2187,23 +2198,32 @@ void smbios_init(void)
-
-       p = (char *)start + sizeof(struct smbios_entry_point);
-
--#define add_struct(fn) { \
-+#define add_struct(fn) do{ \
-     q = (fn); \
-     nr_structs++; \
-     if ((q - p) > max_struct_size) \
-         max_struct_size = q - p; \
-     p = q; \
--}
-+}while (0)
-
-     add_struct(smbios_type_0_init(p));
-     add_struct(smbios_type_1_init(p));
-     add_struct(smbios_type_3_init(p));
-     for (cpu_num = 1; cpu_num <= smp_cpus; cpu_num++)
-         add_struct(smbios_type_4_init(p, cpu_num));
--    add_struct(smbios_type_16_init(p, memsize));
--    add_struct(smbios_type_17_init(p, memsize));
--    add_struct(smbios_type_19_init(p, ram_end / (1024 * 1024)));
--    add_struct(smbios_type_20_init(p, ram_end / (1024 * 1024)));
-+
-+    /* Each 'memory device' covers up to 16GB of address space. */
-+    nr_mem_devs = (memsize + 0x3fff) >> 14;
-+    add_struct(smbios_type_16_init(p, memsize, nr_mem_devs));
-+    for ( i = 0; i < nr_mem_devs; i++ )
-+    {
-+        uint32_t dev_memsize = ((i == (nr_mem_devs - 1))
-+                                ? (memsize & 0x3fff) : 0x4000);
-+        add_struct(smbios_type_17_init(p, dev_memsize, i));
-+        add_struct(smbios_type_19_init(p, dev_memsize, i));
-+        add_struct(smbios_type_20_init(p, dev_memsize, i));
-+    }
-+
-     add_struct(smbios_type_32_init(p));
-     add_struct(smbios_type_127_init(p));
-
-
-
diff --git 
a/pc-bios/bios-pq/0005_kvm-bios-fix-smbios-memory-device-length-boundary--condition.patch
 
b/pc-bios/bios-pq/0005_kvm-bios-fix-smbios-memory-device-length-boundary--condition.patch
deleted file mode 100644
index 0a9e0b0..0000000
--- 
a/pc-bios/bios-pq/0005_kvm-bios-fix-smbios-memory-device-length-boundary--condition.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 7217e1240340ab49878c4e415df40aa0c6376eb9 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 14:55:47 +0000
-Subject: fix smbios memory device length boundary  condition
-From: Bill Rieske <address@hidden>
-
-dev_memsize ends up 0 when it shouldn't be on 16G boundary conditions.
-    
-Signed-off-by: Bill Rieske <address@hidden>
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/rombios32.c
-===================================================================
---- bochs.orig/bios/rombios32.c
-+++ bochs/bios/rombios32.c
-@@ -2218,7 +2218,7 @@ void smbios_init(void)
-     for ( i = 0; i < nr_mem_devs; i++ )
-     {
-         uint32_t dev_memsize = ((i == (nr_mem_devs - 1))
--                                ? (memsize & 0x3fff) : 0x4000);
-+                                ? (((memsize-1) & 0x3fff)+1) : 0x4000);
-         add_struct(smbios_type_17_init(p, dev_memsize, i));
-         add_struct(smbios_type_19_init(p, dev_memsize, i));
-         add_struct(smbios_type_20_init(p, dev_memsize, i));
-
-
diff --git 
a/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch 
b/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
deleted file mode 100644
index 27a1a33..0000000
--- a/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 6d2550ea5002feac408ed252f45066aaa0af8b19 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 15:11:43 +0000
-Subject: qemu: bios: use preprocessor for pci link routing
-From: Avi Kivity <address@hidden>
-
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/acpi-dsdt.dsl
-===================================================================
---- bochs.orig/bios/acpi-dsdt.dsl
-+++ bochs/bios/acpi-dsdt.dsl
-@@ -47,42 +47,22 @@ DefinitionBlock (
-                    section 6.2.8.1 */
-                 /* Note: we provide the same info as the PCI routing
-                    table of the Bochs BIOS */
--
--                // PCI Slot 0
--                Package() {0x0000ffff, 0, LNKD, 0},
--                Package() {0x0000ffff, 1, LNKA, 0},
--                Package() {0x0000ffff, 2, LNKB, 0},
--                Package() {0x0000ffff, 3, LNKC, 0},
--
--                // PCI Slot 1
--                Package() {0x0001ffff, 0, LNKA, 0},
--                Package() {0x0001ffff, 1, LNKB, 0},
--                Package() {0x0001ffff, 2, LNKC, 0},
--                Package() {0x0001ffff, 3, LNKD, 0},
--
--                // PCI Slot 2
--                Package() {0x0002ffff, 0, LNKB, 0},
--                Package() {0x0002ffff, 1, LNKC, 0},
--                Package() {0x0002ffff, 2, LNKD, 0},
--                Package() {0x0002ffff, 3, LNKA, 0},
--
--                // PCI Slot 3
--                Package() {0x0003ffff, 0, LNKC, 0},
--                Package() {0x0003ffff, 1, LNKD, 0},
--                Package() {0x0003ffff, 2, LNKA, 0},
--                Package() {0x0003ffff, 3, LNKB, 0},
--
--                // PCI Slot 4
--                Package() {0x0004ffff, 0, LNKD, 0},
--                Package() {0x0004ffff, 1, LNKA, 0},
--                Package() {0x0004ffff, 2, LNKB, 0},
--                Package() {0x0004ffff, 3, LNKC, 0},
--
--                // PCI Slot 5
--                Package() {0x0005ffff, 0, LNKA, 0},
--                Package() {0x0005ffff, 1, LNKB, 0},
--                Package() {0x0005ffff, 2, LNKC, 0},
--                Package() {0x0005ffff, 3, LNKD, 0},
-+#define prt_slot(nr, lnk0, lnk1, lnk2, lnk3) \
-+       Package() { nr##ffff, 0, lnk0, 0 }, \
-+       Package() { nr##ffff, 1, lnk1, 0 }, \
-+       Package() { nr##ffff, 2, lnk2, 0 }, \
-+       Package() { nr##ffff, 3, lnk3, 0 }
-+
-+#define prt_slot0(nr) prt_slot(nr, LNKD, LNKA, LNKB, LNKC)
-+#define prt_slot1(nr) prt_slot(nr, LNKA, LNKB, LNKC, LNKD)
-+#define prt_slot2(nr) prt_slot(nr, LNKB, LNKC, LNKD, LNKA)
-+#define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB)
-+               prt_slot0(0x0000),
-+               prt_slot1(0x0001),
-+               prt_slot2(0x0002),
-+               prt_slot3(0x0003),
-+               prt_slot0(0x0004),
-+               prt_slot1(0x0005),
-             })
- 
-             Name (_CRS, ResourceTemplate ()
-
--- 
-
-
-
diff --git 
a/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch 
b/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
deleted file mode 100644
index a5e72d3..0000000
--- a/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 6d2550ea5002feac408ed252f45066aaa0af8b19 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 15:11:43 +0000
-Subject: bios: add 26 pci slots, bringing the total to 32
-From: Avi Kivity <address@hidden>
-
-lack of pci slots causes Windows to complain when installing too many devices.
-
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/acpi-dsdt.dsl
-===================================================================
---- bochs.orig/bios/acpi-dsdt.dsl
-+++ bochs/bios/acpi-dsdt.dsl
-@@ -63,6 +63,32 @@ DefinitionBlock (
-                prt_slot3(0x0003),
-                prt_slot0(0x0004),
-                prt_slot1(0x0005),
-+               prt_slot2(0x0006),
-+               prt_slot3(0x0007),
-+               prt_slot0(0x0008),
-+               prt_slot1(0x0009),
-+               prt_slot2(0x000a),
-+               prt_slot3(0x000b),
-+               prt_slot0(0x000c),
-+               prt_slot1(0x000d),
-+               prt_slot2(0x000e),
-+               prt_slot3(0x000f),
-+               prt_slot0(0x0010),
-+               prt_slot1(0x0011),
-+               prt_slot2(0x0012),
-+               prt_slot3(0x0013),
-+               prt_slot0(0x0014),
-+               prt_slot1(0x0015),
-+               prt_slot2(0x0016),
-+               prt_slot3(0x0017),
-+               prt_slot0(0x0018),
-+               prt_slot1(0x0019),
-+               prt_slot2(0x001a),
-+               prt_slot3(0x001b),
-+               prt_slot0(0x001c),
-+               prt_slot1(0x001d),
-+               prt_slot2(0x001e),
-+               prt_slot3(0x001f),
-             })
- 
-             Name (_CRS, ResourceTemplate ()
-
--- 
-
-
-
diff --git a/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch 
b/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch
deleted file mode 100644
index 004fd9e..0000000
--- a/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 6d2550ea5002feac408ed252f45066aaa0af8b19 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 15:11:43 +0000
-Subject: qemu: bios: provide gpe _L0x methods
-From: Glauber Costa <address@hidden>
-
-provide methods for gpe blk 0, even though they do nothing atm
-    
-Signed-off-by: Glauber Costa <address@hidden>
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/acpi-dsdt.dsl
-===================================================================
---- bochs.orig/bios/acpi-dsdt.dsl
-+++ bochs/bios/acpi-dsdt.dsl
-@@ -597,4 +597,59 @@ DefinitionBlock (
-         Zero,  /* reserved */
-         Zero   /* reserved */
-     })
-+
-+    Scope (\_GPE)
-+    {
-+        Name(_HID, "ACPI0006")
-+
-+        Method(_L00) {
-+            Return(0x01)
-+        }
-+        Method(_L01) {
-+            Return(0x01)
-+        }
-+        Method(_L02) {
-+            Return(0x01)
-+        }
-+        Method(_L03) {
-+            Return(0x01)
-+        }
-+        Method(_L04) {
-+            Return(0x01)
-+        }
-+        Method(_L05) {
-+            Return(0x01)
-+        }
-+        Method(_L06) {
-+            Return(0x01)
-+        }
-+        Method(_L07) {
-+            Return(0x01)
-+        }
-+        Method(_L08) {
-+            Return(0x01)
-+        }
-+        Method(_L09) {
-+            Return(0x01)
-+        }
-+        Method(_L0A) {
-+            Return(0x01)
-+        }
-+        Method(_L0B) {
-+            Return(0x01)
-+        }
-+        Method(_L0C) {
-+            Return(0x01)
-+        }
-+        Method(_L0D) {
-+            Return(0x01)
-+        }
-+        Method(_L0E) {
-+            Return(0x01)
-+        }
-+        Method(_L0F) {
-+            Return(0x01)
-+        }
-+    }
-+
- }
-Index: bochs/bios/rombios32.c
-===================================================================
---- bochs.orig/bios/rombios32.c
-+++ bochs/bios/rombios32.c
-@@ -1647,6 +1647,8 @@ void acpi_bios_init(void)
-     fadt->pm_tmr_len = 4;
-     fadt->plvl2_lat = cpu_to_le16(0xfff); // C2 state not supported
-     fadt->plvl3_lat = cpu_to_le16(0xfff); // C3 state not supported
-+    fadt->gpe0_blk = cpu_to_le32(0xafe0);
-+    fadt->gpe0_blk_len = 4;
-     /* WBINVD + PROC_C1 + PWR_BUTTON + SLP_BUTTON + FIX_RTC */
-     fadt->flags = cpu_to_le32((1 << 0) | (1 << 2) | (1 << 4) | (1 << 5) | (1 
<< 6));
-     acpi_build_table_header((struct acpi_table_header *)fadt, "FACP",
-
--- 
-
-
-
-
-
diff --git a/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch 
b/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
deleted file mode 100644
index 524cc48..0000000
--- a/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 6d2550ea5002feac408ed252f45066aaa0af8b19 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 15:11:43 +0000
-Subject: qemu: bios: pci hotplug support
-From: Marcelo Tosatti <address@hidden>
-
-Signed-off-by: Marcelo Tosatti <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/acpi-dsdt.dsl
-===================================================================
---- bochs.orig/bios/acpi-dsdt.dsl
-+++ bochs/bios/acpi-dsdt.dsl
-@@ -91,6 +91,61 @@ DefinitionBlock (
-                prt_slot3(0x001f),
-             })
- 
-+            OperationRegion(PCST, SystemIO, 0xae00, 0x08)
-+            Field (PCST, DWordAcc, NoLock, WriteAsZeros)
-+            {
-+                PCIU, 32,
-+                PCID, 32,
-+            }
-+
-+            OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
-+            Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
-+            {
-+                B0EJ, 32,
-+            }
-+
-+#define hotplug_slot(name, nr) \
-+            Device (S##name) {                    \
-+               Name (_ADR, nr##0000)              \
-+               Method (_EJ0,1) {                  \
-+                    Store(ShiftLeft(1, nr), B0EJ) \
-+                    Return (0x0)                  \
-+               }                                  \
-+               Name (_SUN, name)                  \
-+            }
-+
-+          hotplug_slot(1, 0x0001)
-+          hotplug_slot(2, 0x0002)
-+          hotplug_slot(3, 0x0003)
-+          hotplug_slot(4, 0x0004)
-+          hotplug_slot(5, 0x0005)
-+          hotplug_slot(6, 0x0006)
-+          hotplug_slot(7, 0x0007)
-+          hotplug_slot(8, 0x0008)
-+          hotplug_slot(9, 0x0009)
-+          hotplug_slot(10, 0x000a)
-+          hotplug_slot(11, 0x000b)
-+          hotplug_slot(12, 0x000c)
-+          hotplug_slot(13, 0x000d)
-+          hotplug_slot(14, 0x000e)
-+          hotplug_slot(15, 0x000f)
-+          hotplug_slot(16, 0x0010)
-+          hotplug_slot(17, 0x0011)
-+          hotplug_slot(18, 0x0012)
-+          hotplug_slot(19, 0x0013)
-+          hotplug_slot(20, 0x0014)
-+          hotplug_slot(21, 0x0015)
-+          hotplug_slot(22, 0x0016)
-+          hotplug_slot(23, 0x0017)
-+          hotplug_slot(24, 0x0018)
-+          hotplug_slot(25, 0x0019)
-+          hotplug_slot(26, 0x001a)
-+          hotplug_slot(27, 0x001b)
-+          hotplug_slot(28, 0x001c)
-+          hotplug_slot(29, 0x001d)
-+          hotplug_slot(30, 0x001e)
-+          hotplug_slot(31, 0x001f)
-+
-             Name (_CRS, ResourceTemplate ()
-             {
-                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, 
PosDecode,
-@@ -605,8 +660,50 @@ DefinitionBlock (
-         Method(_L00) {
-             Return(0x01)
-         }
-+
-+#define gen_pci_hotplug(nr)                                       \
-+            If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) {          \
-+                Notify(\_SB.PCI0.S##nr, 1)                        \
-+            }                                                     \
-+            If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) {          \
-+                Notify(\_SB.PCI0.S##nr, 3)                        \
-+            }
-+
-         Method(_L01) {
--            Return(0x01)
-+            gen_pci_hotplug(1)
-+            gen_pci_hotplug(2)
-+            gen_pci_hotplug(3)
-+            gen_pci_hotplug(4)
-+            gen_pci_hotplug(5)
-+            gen_pci_hotplug(6)
-+            gen_pci_hotplug(7)
-+            gen_pci_hotplug(8)
-+            gen_pci_hotplug(9)
-+            gen_pci_hotplug(10)
-+            gen_pci_hotplug(11)
-+            gen_pci_hotplug(12)
-+            gen_pci_hotplug(13)
-+            gen_pci_hotplug(14)
-+            gen_pci_hotplug(15)
-+            gen_pci_hotplug(16)
-+            gen_pci_hotplug(17)
-+            gen_pci_hotplug(18)
-+            gen_pci_hotplug(19)
-+            gen_pci_hotplug(20)
-+            gen_pci_hotplug(21)
-+            gen_pci_hotplug(22)
-+            gen_pci_hotplug(23)
-+            gen_pci_hotplug(24)
-+            gen_pci_hotplug(25)
-+            gen_pci_hotplug(26)
-+            gen_pci_hotplug(27)
-+            gen_pci_hotplug(28)
-+            gen_pci_hotplug(29)
-+            gen_pci_hotplug(30)
-+            gen_pci_hotplug(31)
-+
-+            Return (0x01)
-+
-         }
-         Method(_L02) {
-             Return(0x01)
-
--- 
-
-
-
diff --git 
a/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
 
b/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
deleted file mode 100644
index 6675694..0000000
--- 
a/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 6d2550ea5002feac408ed252f45066aaa0af8b19 Mon Sep 17 00:00:00 2001
-Date: Wed, 11 Feb 2009 15:11:43 +0000
-Subject: bios: mark the acpi sci interrupt as connected to irq 9
-From: Avi Kivity <address@hidden>
-
-Due to a chipset bug, the sci interrupt is hardwired to irq 9.  Set the
-pci interrupt line register accordingly.
-    
-Signed-off-by: Avi Kivity <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-Index: bochs/bios/rombios32.c
-===================================================================
---- bochs.orig/bios/rombios32.c
-+++ bochs/bios/rombios32.c
-@@ -981,6 +981,8 @@ static void pci_bios_init_device(PCIDevi
-         /* PIIX4 Power Management device (for ACPI) */
-         pm_io_base = PM_IO_BASE;
-         smb_io_base = SMB_IO_BASE;
-+        // acpi sci is hardwired to 9
-+        pci_config_writeb(d, PCI_INTERRUPT_LINE, 9);
-         pm_sci_int = pci_config_readb(d, PCI_INTERRUPT_LINE);
-         piix4_pm_enable(d);
-         acpi_enabled = 1;
-
--- 
-
-
-
diff --git a/pc-bios/bios-pq/0011_read-additional-acpi-tables-from-a-vm.patch 
b/pc-bios/bios-pq/0011_read-additional-acpi-tables-from-a-vm.patch
deleted file mode 100644
index e8aa544..0000000
--- a/pc-bios/bios-pq/0011_read-additional-acpi-tables-from-a-vm.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 8a92ea2f2c7b3e185ef6f4d8d3c376b752275ec7 Mon Sep 17 00:00:00 2001
-Date: Fri, 10 Apr 2009 20:48:17 +0000
-Subject: Read additional ACPI tables from a VM
-From: Gleb Natapov <address@hidden>
-
-Signed-off-by: Gleb Natapov <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 27c5952..7be4216 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -469,6 +469,8 @@ void wrmsr_smp(uint32_t index, uint64_t val)
- #define QEMU_CFG_SIGNATURE  0x00
- #define QEMU_CFG_ID         0x01
- #define QEMU_CFG_UUID       0x02
-+#define QEMU_CFG_ARCH_LOCAL     0x8000
-+#define QEMU_CFG_ACPI_TABLES  (QEMU_CFG_ARCH_LOCAL + 0)
- 
- int qemu_cfg_port;
- 
-@@ -496,6 +498,27 @@ void qemu_cfg_read(uint8_t *buf, int len)
-     while (len--)
-         *(buf++) = inb(QEMU_CFG_DATA_PORT);
- }
-+
-+static uint16_t acpi_additional_tables(void)
-+{
-+    uint16_t cnt;
-+
-+    qemu_cfg_select(QEMU_CFG_ACPI_TABLES);
-+    qemu_cfg_read((uint8_t*)&cnt, sizeof(cnt));
-+
-+    return cnt;
-+}
-+
-+static int acpi_load_table(int i, uint32_t addr, uint16_t *len)
-+{
-+    qemu_cfg_read((uint8_t*)len, sizeof(*len));
-+
-+    if (!*len)
-+        return -1;
-+
-+    qemu_cfg_read((uint8_t*)addr, *len);
-+    return 0;
-+}
- #endif
- 
- void uuid_probe(void)
-@@ -1550,8 +1573,8 @@ void acpi_bios_init(void)
-     uint32_t hpet_addr;
- #endif
-     uint32_t base_addr, rsdt_addr, fadt_addr, addr, facs_addr, dsdt_addr, 
ssdt_addr;
--    uint32_t acpi_tables_size, madt_addr, madt_size;
--    int i;
-+    uint32_t acpi_tables_size, madt_addr, madt_size, rsdt_size;
-+    uint16_t i, external_tables;
- 
-     /* reserve memory space for tables */
- #ifdef BX_USE_EBDA_TABLES
-@@ -1564,10 +1587,17 @@ void acpi_bios_init(void)
-     bios_table_cur_addr += sizeof(*rsdp);
- #endif
- 
-+#ifdef BX_QEMU
-+    external_tables = acpi_additional_tables();
-+#else
-+    external_tables = 0;
-+#endif
-+
-     addr = base_addr = ram_size - ACPI_DATA_SIZE;
-     rsdt_addr = addr;
-     rsdt = (void *)(addr);
--    addr += sizeof(*rsdt);
-+    rsdt_size = sizeof(*rsdt) + external_tables * 4;
-+    addr += rsdt_size;
- 
-     fadt_addr = addr;
-     fadt = (void *)(addr);
-@@ -1606,12 +1636,6 @@ void acpi_bios_init(void)
-     addr += sizeof(*hpet);
- #endif
- 
--    acpi_tables_size = addr - base_addr;
--
--    BX_INFO("ACPI tables: RSDP addr=0x%08lx ACPI DATA addr=0x%08lx 
size=0x%x\n",
--            (unsigned long)rsdp,
--            (unsigned long)rsdt, acpi_tables_size);
--
-     /* RSDP */
-     memset(rsdp, 0, sizeof(*rsdp));
-     memcpy(rsdp->signature, "RSD PTR ", 8);
-@@ -1623,17 +1647,6 @@ void acpi_bios_init(void)
-     rsdp->rsdt_physical_address = cpu_to_le32(rsdt_addr);
-     rsdp->checksum = acpi_checksum((void *)rsdp, 20);
- 
--    /* RSDT */
--    memset(rsdt, 0, sizeof(*rsdt));
--    rsdt->table_offset_entry[0] = cpu_to_le32(fadt_addr);
--    rsdt->table_offset_entry[1] = cpu_to_le32(madt_addr);
--    rsdt->table_offset_entry[2] = cpu_to_le32(ssdt_addr);
--#ifdef BX_QEMU
--    rsdt->table_offset_entry[3] = cpu_to_le32(hpet_addr);
--#endif
--    acpi_build_table_header((struct acpi_table_header *)rsdt,
--                            "RSDT", sizeof(*rsdt), 1);
--
-     /* FADT */
-     memset(fadt, 0, sizeof(*fadt));
-     fadt->firmware_ctrl = cpu_to_le32(facs_addr);
-@@ -1710,6 +1723,7 @@ void acpi_bios_init(void)
-                                 "APIC", madt_size, 1);
-     }
- 
-+    memset(rsdt, 0, rsdt_size);
- #ifdef BX_QEMU
-     /* HPET */
-     memset(hpet, 0, sizeof(*hpet));
-@@ -1720,7 +1734,34 @@ void acpi_bios_init(void)
-     hpet->addr.address = cpu_to_le32(ACPI_HPET_ADDRESS);
-     acpi_build_table_header((struct  acpi_table_header *)hpet,
-                              "HPET", sizeof(*hpet), 1);
-+
-+    acpi_additional_tables(); /* resets cfg to required entry */
-+    for(i = 0; i < external_tables; i++) {
-+        uint16_t len;
-+        if(acpi_load_table(i, addr, &len) < 0)
-+            BX_PANIC("Failed to load ACPI table from QEMU\n");
-+        rsdt->table_offset_entry[i+4] = cpu_to_le32(addr);
-+        addr += len;
-+        if(addr >= ram_size)
-+            BX_PANIC("ACPI table overflow\n");
-+    }
-+#endif
-+
-+    /* RSDT */
-+    rsdt->table_offset_entry[0] = cpu_to_le32(fadt_addr);
-+    rsdt->table_offset_entry[1] = cpu_to_le32(madt_addr);
-+    rsdt->table_offset_entry[2] = cpu_to_le32(ssdt_addr);
-+#ifdef BX_QEMU
-+    rsdt->table_offset_entry[3] = cpu_to_le32(hpet_addr);
- #endif
-+    acpi_build_table_header((struct acpi_table_header *)rsdt,
-+                            "RSDT", rsdt_size, 1);
-+
-+    acpi_tables_size = addr - base_addr;
-+
-+    BX_INFO("ACPI tables: RSDP addr=0x%08lx ACPI DATA addr=0x%08lx 
size=0x%x\n",
-+            (unsigned long)rsdp,
-+            (unsigned long)rsdt, acpi_tables_size);
- 
- }
- 
diff --git a/pc-bios/bios-pq/0012-load-smbios-entries-and-files-from-qemu.patch 
b/pc-bios/bios-pq/0012-load-smbios-entries-and-files-from-qemu.patch
deleted file mode 100644
index e304b40..0000000
--- a/pc-bios/bios-pq/0012-load-smbios-entries-and-files-from-qemu.patch
+++ /dev/null
@@ -1,473 +0,0 @@
-From b6f6e3d3a71cee61320216a42940cfaa9b42a162 Mon Sep 17 00:00:00 2001
-Date: Fri, 17 Apr 2009 18:59:56 +0000
-Subject: qemu:bios: Load SMBIOS entries and files from qemu
-From: Alex Williamson <address@hidden>
-
-Allow SMBIOS fields to be overridden and entries replaced by those
-read from qemu.
-
-Signed-off-by: Alex Williamson <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 7be4216..1a1ed64 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -441,7 +441,6 @@ uint32_t cpuid_features;
- uint32_t cpuid_ext_features;
- unsigned long ram_size;
- uint64_t ram_end;
--uint8_t bios_uuid[16];
- #ifdef BX_USE_EBDA_TABLES
- unsigned long ebda_cur_addr;
- #endif
-@@ -471,6 +470,7 @@ void wrmsr_smp(uint32_t index, uint64_t val)
- #define QEMU_CFG_UUID       0x02
- #define QEMU_CFG_ARCH_LOCAL     0x8000
- #define QEMU_CFG_ACPI_TABLES  (QEMU_CFG_ARCH_LOCAL + 0)
-+#define QEMU_CFG_SMBIOS_ENTRIES  (QEMU_CFG_ARCH_LOCAL + 1)
- 
- int qemu_cfg_port;
- 
-@@ -519,19 +519,17 @@ static int acpi_load_table(int i, uint32_t addr, 
uint16_t *len)
-     qemu_cfg_read((uint8_t*)addr, *len);
-     return 0;
- }
--#endif
- 
--void uuid_probe(void)
-+static uint16_t smbios_entries(void)
- {
--#ifdef BX_QEMU
--    if(qemu_cfg_port) {
--        qemu_cfg_select(QEMU_CFG_UUID);
--        qemu_cfg_read(bios_uuid, 16);
--        return;
--    }
--#endif
--    memset(bios_uuid, 0, 16);
-+    uint16_t cnt;
-+
-+    qemu_cfg_select(QEMU_CFG_SMBIOS_ENTRIES);
-+    qemu_cfg_read((uint8_t*)&cnt, sizeof(cnt));
-+
-+    return cnt;
- }
-+#endif
- 
- void cpu_probe(void)
- {
-@@ -1963,21 +1961,105 @@ smbios_entry_point_init(void *start,
-     ep->intermediate_checksum = -sum;
-     }
- 
-+struct smbios_header {
-+    uint16_t length;
-+    uint8_t type;
-+} __attribute__((__packed__));
-+
-+struct smbios_field {
-+    struct smbios_header header;
-+    uint8_t type;
-+    uint16_t offset;
-+    uint8_t data[];
-+} __attribute__((__packed__));
-+
-+struct smbios_table {
-+    struct smbios_header header;
-+    uint8_t data[];
-+} __attribute__((__packed__));
-+
-+#define SMBIOS_FIELD_ENTRY 0
-+#define SMBIOS_TABLE_ENTRY 1
-+
-+static size_t
-+smbios_load_field(int type, size_t offset, void *addr)
-+{
-+#ifdef BX_QEMU
-+    int i;
-+
-+    for (i = smbios_entries(); i > 0; i--) {
-+        struct smbios_field field;
-+
-+        qemu_cfg_read((uint8_t *)&field, sizeof(struct smbios_header));
-+        field.header.length -= sizeof(struct smbios_header);
-+
-+        if (field.header.type != SMBIOS_FIELD_ENTRY) {
-+            while (field.header.length--)
-+                inb(QEMU_CFG_DATA_PORT);
-+            continue;
-+        }
-+
-+        qemu_cfg_read((uint8_t *)&field.type,
-+                      sizeof(field) - sizeof(struct smbios_header));
-+        field.header.length -= sizeof(field) - sizeof(struct smbios_header);
-+
-+        if (field.type != type || field.offset != offset) {
-+            while (field.header.length--)
-+                inb(QEMU_CFG_DATA_PORT);
-+            continue;
-+        }
-+
-+        qemu_cfg_read(addr, field.header.length);
-+        return (size_t)field.header.length;
-+    }
-+#endif
-+    return 0;
-+}
-+ 
-+#define load_str_field_with_default(type, field, def) do {             \
-+    size = smbios_load_field(type, offsetof(struct smbios_type_##type, \
-+                                            field), end);              \
-+    if (size > 0) {                                                    \
-+        end += size;                                                   \
-+    } else {                                                           \
-+        memcpy(end, def, sizeof(def));                                 \
-+        end += sizeof(def);                                            \
-+    }                                                                  \
-+    p->field = ++str_index;                                            \
-+} while (0)
-+
-+#define load_str_field_or_skip(type, field) do {                       \
-+    size = smbios_load_field(type, offsetof(struct smbios_type_##type, \
-+                                            field), end);              \
-+    if (size > 0) {                                                    \
-+        end += size;                                                   \
-+        p->field = ++str_index;                                        \
-+    } else {                                                           \
-+        p->field = 0;                                                  \
-+    }                                                                  \
-+} while (0)
-+
- /* Type 0 -- BIOS Information */
- #define RELEASE_DATE_STR "01/01/2007"
- static void *
--smbios_type_0_init(void *start)
-+smbios_init_type_0(void *start)
- {
-     struct smbios_type_0 *p = (struct smbios_type_0 *)start;
-+    char *end = (char *)start + sizeof(struct smbios_type_0);
-+    size_t size;
-+    int str_index = 0;
- 
-     p->header.type = 0;
-     p->header.length = sizeof(struct smbios_type_0);
-     p->header.handle = 0;
- 
--    p->vendor_str = 1;
--    p->bios_version_str = 1;
-+    load_str_field_with_default(0, vendor_str, BX_APPNAME);
-+    load_str_field_with_default(0, bios_version_str, BX_APPNAME);
-+
-     p->bios_starting_address_segment = 0xe800;
--    p->bios_release_date_str = 2;
-+
-+    load_str_field_with_default(0, bios_release_date_str, RELEASE_DATE_STR);
-+
-     p->bios_rom_size = 0; /* FIXME */
- 
-     memset(p->bios_characteristics, 0, 8);
-@@ -1985,50 +2067,66 @@ smbios_type_0_init(void *start)
-     p->bios_characteristics_extension_bytes[0] = 0;
-     p->bios_characteristics_extension_bytes[1] = 0;
- 
--    p->system_bios_major_release = 1;
--    p->system_bios_minor_release = 0;
-+    if (!smbios_load_field(0, offsetof(struct smbios_type_0,
-+                                       system_bios_major_release),
-+                           &p->system_bios_major_release))
-+        p->system_bios_major_release = 1;
-+
-+    if (!smbios_load_field(0, offsetof(struct smbios_type_0,
-+                                       system_bios_minor_release),
-+                           &p->system_bios_minor_release))
-+        p->system_bios_minor_release = 0;
-+
-     p->embedded_controller_major_release = 0xff;
-     p->embedded_controller_minor_release = 0xff;
- 
--    start += sizeof(struct smbios_type_0);
--    memcpy((char *)start, BX_APPNAME, sizeof(BX_APPNAME));
--    start += sizeof(BX_APPNAME);
--    memcpy((char *)start, RELEASE_DATE_STR, sizeof(RELEASE_DATE_STR));
--    start += sizeof(RELEASE_DATE_STR);
--    *((uint8_t *)start) = 0;
-+    *end = 0;
-+    end++;
- 
--    return start+1;
-+    return end;
- }
- 
- /* Type 1 -- System Information */
- static void *
--smbios_type_1_init(void *start)
-+smbios_init_type_1(void *start)
- {
-     struct smbios_type_1 *p = (struct smbios_type_1 *)start;
-+    char *end = (char *)start + sizeof(struct smbios_type_1);
-+    size_t size;
-+    int str_index = 0;
-+
-     p->header.type = 1;
-     p->header.length = sizeof(struct smbios_type_1);
-     p->header.handle = 0x100;
- 
--    p->manufacturer_str = 0;
--    p->product_name_str = 0;
--    p->version_str = 0;
--    p->serial_number_str = 0;
-+    load_str_field_or_skip(1, manufacturer_str);
-+    load_str_field_or_skip(1, product_name_str);
-+    load_str_field_or_skip(1, version_str);
-+    load_str_field_or_skip(1, serial_number_str);
- 
--    memcpy(p->uuid, bios_uuid, 16);
-+    size = smbios_load_field(1, offsetof(struct smbios_type_1,
-+                                         uuid), &p->uuid);
-+    if (size == 0)
-+        memset(p->uuid, 0, 16);
- 
-     p->wake_up_type = 0x06; /* power switch */
--    p->sku_number_str = 0;
--    p->family_str = 0;
- 
--    start += sizeof(struct smbios_type_1);
--    *((uint16_t *)start) = 0;
-+    load_str_field_or_skip(1, sku_number_str);
-+    load_str_field_or_skip(1, family_str);
- 
--    return start+2;
-+    *end = 0;
-+    end++;
-+    if (!str_index) {
-+        *end = 0;
-+        end++;
-+    }
-+
-+    return end;
- }
- 
- /* Type 3 -- System Enclosure */
- static void *
--smbios_type_3_init(void *start)
-+smbios_init_type_3(void *start)
- {
-     struct smbios_type_3 *p = (struct smbios_type_3 *)start;
- 
-@@ -2058,7 +2156,7 @@ smbios_type_3_init(void *start)
- 
- /* Type 4 -- Processor Information */
- static void *
--smbios_type_4_init(void *start, unsigned int cpu_number)
-+smbios_init_type_4(void *start, unsigned int cpu_number)
- {
-     struct smbios_type_4 *p = (struct smbios_type_4 *)start;
- 
-@@ -2098,7 +2196,7 @@ smbios_type_4_init(void *start, unsigned int cpu_number)
- 
- /* Type 16 -- Physical Memory Array */
- static void *
--smbios_type_16_init(void *start, uint32_t memsize, int nr_mem_devs)
-+smbios_init_type_16(void *start, uint32_t memsize, int nr_mem_devs)
- {
-     struct smbios_type_16 *p = (struct smbios_type_16*)start;
- 
-@@ -2121,7 +2219,7 @@ smbios_type_16_init(void *start, uint32_t memsize, int 
nr_mem_devs)
- 
- /* Type 17 -- Memory Device */
- static void *
--smbios_type_17_init(void *start, uint32_t memory_size_mb, int instance)
-+smbios_init_type_17(void *start, uint32_t memory_size_mb, int instance)
- {
-     struct smbios_type_17 *p = (struct smbios_type_17 *)start;
- 
-@@ -2151,7 +2249,7 @@ smbios_type_17_init(void *start, uint32_t 
memory_size_mb, int instance)
- 
- /* Type 19 -- Memory Array Mapped Address */
- static void *
--smbios_type_19_init(void *start, uint32_t memory_size_mb, int instance)
-+smbios_init_type_19(void *start, uint32_t memory_size_mb, int instance)
- {
-     struct smbios_type_19 *p = (struct smbios_type_19 *)start;
- 
-@@ -2172,7 +2270,7 @@ smbios_type_19_init(void *start, uint32_t 
memory_size_mb, int instance)
- 
- /* Type 20 -- Memory Device Mapped Address */
- static void *
--smbios_type_20_init(void *start, uint32_t memory_size_mb, int instance)
-+smbios_init_type_20(void *start, uint32_t memory_size_mb, int instance)
- {
-     struct smbios_type_20 *p = (struct smbios_type_20 *)start;
- 
-@@ -2196,7 +2294,7 @@ smbios_type_20_init(void *start, uint32_t 
memory_size_mb, int instance)
- 
- /* Type 32 -- System Boot Information */
- static void *
--smbios_type_32_init(void *start)
-+smbios_init_type_32(void *start)
- {
-     struct smbios_type_32 *p = (struct smbios_type_32 *)start;
- 
-@@ -2214,7 +2312,7 @@ smbios_type_32_init(void *start)
- 
- /* Type 127 -- End of Table */
- static void *
--smbios_type_127_init(void *start)
-+smbios_init_type_127(void *start)
- {
-     struct smbios_type_127 *p = (struct smbios_type_127 *)start;
- 
-@@ -2228,6 +2326,78 @@ smbios_type_127_init(void *start)
-     return start + 2;
- }
- 
-+static int
-+smbios_load_external(int type, char **p, unsigned *nr_structs,
-+                     unsigned *max_struct_size)
-+{
-+#ifdef BX_QEMU
-+    static uint64_t used_bitmap[4] = { 0 };
-+    char *start = *p;
-+    int i;
-+
-+    /* Check if we've already reported these tables */
-+    if (used_bitmap[(type >> 6) & 0x3] & (1ULL << (type & 0x3f)))
-+        return 1;
-+
-+    /* Don't introduce spurious end markers */
-+    if (type == 127)
-+        return 0;
-+
-+    for (i = smbios_entries(); i > 0; i--) {
-+        struct smbios_table table;
-+        struct smbios_structure_header *header = (void *)*p;
-+        int string;
-+
-+        qemu_cfg_read((uint8_t *)&table, sizeof(struct smbios_header));
-+        table.header.length -= sizeof(struct smbios_header);
-+
-+        if (table.header.type != SMBIOS_TABLE_ENTRY) {
-+            while (table.header.length--)
-+                inb(QEMU_CFG_DATA_PORT);
-+            continue;
-+        }
-+
-+        qemu_cfg_read((uint8_t *)*p, sizeof(struct smbios_structure_header));
-+        table.header.length -= sizeof(struct smbios_structure_header);
-+
-+        if (header->type != type) {
-+            while (table.header.length--)
-+                inb(QEMU_CFG_DATA_PORT);
-+            continue;
-+        }
-+
-+        *p += sizeof(struct smbios_structure_header);
-+
-+        /* Entries end with a double NULL char, if there's a string at
-+         * the end (length is greater than formatted length), the string
-+         * terminator provides the first NULL. */
-+        string = header->length < table.header.length +
-+                 sizeof(struct smbios_structure_header);
-+
-+        /* Read the rest and terminate the entry */
-+        qemu_cfg_read((uint8_t *)*p, table.header.length);
-+        *p += table.header.length;
-+        *((uint8_t*)*p) = 0;
-+        (*p)++;
-+        if (!string) {
-+            *((uint8_t*)*p) = 0;
-+            (*p)++;
-+        }
-+
-+        (*nr_structs)++;
-+        if (*p - (char *)header > *max_struct_size)
-+            *max_struct_size = *p - (char *)header;
-+    }
-+
-+    /* Mark that we've reported on this type */
-+    used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
-+
-+    return (start != *p);
-+#else /* !BX_QEMU */
-+    return 0;
-+#endif
-+}
-+
- void smbios_init(void)
- {
-     unsigned cpu_num, nr_structs = 0, max_struct_size = 0;
-@@ -2246,34 +2416,39 @@ void smbios_init(void)
- 
-       p = (char *)start + sizeof(struct smbios_entry_point);
- 
--#define add_struct(fn) do{ \
--    q = (fn); \
--    nr_structs++; \
--    if ((q - p) > max_struct_size) \
--        max_struct_size = q - p; \
--    p = q; \
--}while (0)
--
--    add_struct(smbios_type_0_init(p));
--    add_struct(smbios_type_1_init(p));
--    add_struct(smbios_type_3_init(p));
-+#define add_struct(type, args...) do {                                    \
-+    if (!smbios_load_external(type, &p, &nr_structs, &max_struct_size)) { \
-+        q = smbios_init_type_##type(args);                                \
-+        nr_structs++;                                                     \
-+        if ((q - p) > max_struct_size)                                    \
-+            max_struct_size = q - p;                                      \
-+        p = q;                                                            \
-+    }                                                                     \
-+} while (0)
-+
-+    add_struct(0, p);
-+    add_struct(1, p);
-+    add_struct(3, p);
-     for (cpu_num = 1; cpu_num <= smp_cpus; cpu_num++)
--        add_struct(smbios_type_4_init(p, cpu_num));
-+        add_struct(4, p, cpu_num);
- 
-     /* Each 'memory device' covers up to 16GB of address space. */
-     nr_mem_devs = (memsize + 0x3fff) >> 14;
--    add_struct(smbios_type_16_init(p, memsize, nr_mem_devs));
-+    add_struct(16, p, memsize, nr_mem_devs);
-     for ( i = 0; i < nr_mem_devs; i++ )
-     {
-         uint32_t dev_memsize = ((i == (nr_mem_devs - 1))
-                                 ? (((memsize-1) & 0x3fff)+1) : 0x4000);
--        add_struct(smbios_type_17_init(p, dev_memsize, i));
--        add_struct(smbios_type_19_init(p, dev_memsize, i));
--        add_struct(smbios_type_20_init(p, dev_memsize, i));
-+        add_struct(17, p, dev_memsize, i);
-+        add_struct(19, p, dev_memsize, i);
-+        add_struct(20, p, dev_memsize, i);
-     }
- 
--    add_struct(smbios_type_32_init(p));
--    add_struct(smbios_type_127_init(p));
-+    add_struct(32, p);
-+    /* Add any remaining provided entries before the end marker */
-+    for (i = 0; i < 256; i++)
-+        smbios_load_external(i, &p, &nr_structs, &max_struct_size);
-+    add_struct(127, p);
- 
- #undef add_struct
- 
-@@ -2380,8 +2555,6 @@ void rombios32_init(uint32_t *s3_resume_vector, uint8_t 
*shutdown_flag)
- 
-         mptable_init();
- 
--        uuid_probe();
--
-         smbios_init();
- 
-         if (acpi_enabled)
-
-
---
-To unsubscribe from this list: send the line "unsubscribe kvm" in
-the body of a message to address@hidden
-More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
diff --git a/pc-bios/bios-pq/0013_fix-non-acpi-timer-interrupt-routing.patch 
b/pc-bios/bios-pq/0013_fix-non-acpi-timer-interrupt-routing.patch
deleted file mode 100644
index 80e7716..0000000
--- a/pc-bios/bios-pq/0013_fix-non-acpi-timer-interrupt-routing.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From c09142004a409bf27070939f470c5e0b37595a5a Mon Sep 17 00:00:00 2001
-From: Beth Kon <address@hidden>
-Date: Fri, 19 Jun 2009 14:22:00 -0400
-Subject: [PATCH] Fix non-ACPI Timer Interrupt Routing - v3
-
-Replicate ACPI irq0->inti2 override in mp table for non-acpi case.
-
-v1 -> v2 adds comment suggested by Ryan.
-v2 -> v3 clarifies comment and corrects entry count
-
-Signed-off-by: Beth Kon <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
----
- bios/rombios32.c |   14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 1a1ed64..d789e20 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -1124,7 +1124,11 @@ static void mptable_init(void)
-     putstr(&q, "0.1         "); /* vendor id */
-     putle32(&q, 0); /* OEM table ptr */
-     putle16(&q, 0); /* OEM table size */
-+#ifdef BX_QEMU
-+    putle16(&q, smp_cpus + 17); /* entry count */
-+#else
-     putle16(&q, smp_cpus + 18); /* entry count */
-+#endif
-     putle32(&q, 0xfee00000); /* local APIC addr */
-     putle16(&q, 0); /* ext table length */
-     putb(&q, 0); /* ext table checksum */
-@@ -1166,6 +1170,12 @@ static void mptable_init(void)
- 
-     /* irqs */
-     for(i = 0; i < 16; i++) {
-+#ifdef BX_QEMU
-+        /* One entry per ioapic interrupt destination. Destination 2 is 
covered
-+           by irq0->inti2 override (i == 0). Source IRQ 2 is unused */
-+        if (i == 2)
-+            continue;
-+#endif
-         putb(&q, 3); /* entry type = I/O interrupt */
-         putb(&q, 0); /* interrupt type = vectored interrupt */
-         putb(&q, 0); /* flags: po=0, el=0 */
-@@ -1173,7 +1183,11 @@ static void mptable_init(void)
-         putb(&q, 0); /* source bus ID = ISA */
-         putb(&q, i); /* source bus IRQ */
-         putb(&q, ioapic_id); /* dest I/O APIC ID */
-+#ifdef BX_QEMU
-+        putb(&q, i == 0 ? 2 : i); /* dest I/O APIC interrupt in */
-+#else
-         putb(&q, i); /* dest I/O APIC interrupt in */
-+#endif
-     }
-     /* patch length */
-     len = q - mp_config_table;
--- 
-1.6.2.5
-
diff --git a/pc-bios/bios-pq/0014_add-srat-acpi-table-support.patch 
b/pc-bios/bios-pq/0014_add-srat-acpi-table-support.patch
deleted file mode 100644
index 0fa94df..0000000
--- a/pc-bios/bios-pq/0014_add-srat-acpi-table-support.patch
+++ /dev/null
@@ -1,308 +0,0 @@
-From 11c2fd3e01835fe8562a7dae4842a645c9fe8bb5 Mon Sep 17 00:00:00 2001
-Date: Tue, 21 Apr 2009 22:31:41 +0000
-Subject: add SRAT ACPI table support
-From: Andre Przywara <address@hidden>
-
-Take NUMA topology info from the QEMU firmware configuration interface
-(number of nodes, node for each (V)CPU and amount of memory) and build
-a SRAT table describing this topology for the guest OS. Handles more than
-4 GB of RAM by including a hole for 32bit PCI memory mapping.
-
-Signed-off-by: Andre Przywara <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 49dfd62..d8f6d4e 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -450,6 +450,11 @@ int pm_sci_int;
- unsigned long bios_table_cur_addr;
- unsigned long bios_table_end_addr;
-
-+static inline uint64_t le64_to_cpu(uint64_t x)
-+{
-+    return x;
-+}
-+
- void wrmsr_smp(uint32_t index, uint64_t val)
- {
-     static struct { uint32_t ecx, eax, edx; } *p = (void *)SMP_MSR_ADDR;
-@@ -468,6 +473,7 @@ void wrmsr_smp(uint32_t index, uint64_t val)
- #define QEMU_CFG_SIGNATURE  0x00
- #define QEMU_CFG_ID         0x01
- #define QEMU_CFG_UUID       0x02
-+#define QEMU_CFG_NUMA       0x0D
- #define QEMU_CFG_ARCH_LOCAL     0x8000
- #define QEMU_CFG_ACPI_TABLES  (QEMU_CFG_ARCH_LOCAL + 0)
- #define QEMU_CFG_SMBIOS_ENTRIES  (QEMU_CFG_ARCH_LOCAL + 1)
-@@ -529,6 +535,14 @@ static uint16_t smbios_entries(void)
-
-     return cnt;
- }
-+
-+uint64_t qemu_cfg_get64 (void)
-+{
-+    uint64_t ret;
-+
-+    qemu_cfg_read((uint8_t*)&ret, 8);
-+    return le64_to_cpu(ret);
-+}
- #endif
-
- void cpu_probe(void)
-@@ -1281,7 +1295,7 @@ struct rsdt_descriptor_rev1
- {
-       ACPI_TABLE_HEADER_DEF                           /* ACPI common table 
header */
- #ifdef BX_QEMU
--      uint32_t                             table_offset_entry [4]; /* Array 
of pointers to other */
-+      uint32_t                             table_offset_entry [5]; /* Array 
of pointers to other */
- #else
-       uint32_t                             table_offset_entry [3]; /* Array 
of pointers to other */
- #endif
-@@ -1389,7 +1403,7 @@ struct multiple_apic_table
- } __attribute__((__packed__));
-
-
--/* Values for Type in APIC_HEADER_DEF */
-+/* Values for Type in APIC sub-headers */
-
- #define APIC_PROCESSOR          0
- #define APIC_IO                 1
-@@ -1402,18 +1416,18 @@ struct multiple_apic_table
- #define APIC_XRUPT_SOURCE       8
- #define APIC_RESERVED           9           /* 9 and greater are reserved */
-
--/*
-- * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
-- */
--#define APIC_HEADER_DEF                     /* Common APIC sub-structure 
header */\
-+#define ACPI_SUB_HEADER_DEF                 /* Common ACPI sub-structure 
header */\
-       uint8_t                              type; \
-       uint8_t                              length;
-
-+/*
-+ * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
-+ */
- /* Sub-structures for MADT */
-
- struct madt_processor_apic
- {
--      APIC_HEADER_DEF
-+      ACPI_SUB_HEADER_DEF
-       uint8_t                              processor_id;           /* ACPI 
processor id */
-       uint8_t                              local_apic_id;          /* 
Processor's local APIC id */
- #if 0
-@@ -1424,6 +1438,43 @@ struct madt_processor_apic
- #endif
- } __attribute__((__packed__));
-
-+/*
-+ * SRAT (NUMA topology description) table
-+ */
-+
-+#define SRAT_PROCESSOR          0
-+#define SRAT_MEMORY             1
-+
-+struct system_resource_affinity_table
-+{
-+    ACPI_TABLE_HEADER_DEF
-+    uint32_t    reserved1;
-+    uint32_t    reserved2[2];
-+};
-+
-+struct srat_processor_affinity
-+{
-+    ACPI_SUB_HEADER_DEF
-+    uint8_t     proximity_lo;
-+    uint8_t     local_apic_id;
-+    uint32_t    flags;
-+    uint8_t     local_sapic_eid;
-+    uint8_t     proximity_hi[3];
-+    uint32_t    reserved;
-+};
-+
-+struct srat_memory_affinity
-+{
-+    ACPI_SUB_HEADER_DEF
-+    uint8_t     proximity[4];
-+    uint16_t    reserved1;
-+    uint32_t    base_addr_low,base_addr_high;
-+    uint32_t    length_low,length_high;
-+    uint32_t    reserved2;
-+    uint32_t    flags;
-+    uint32_t    reserved3[2];
-+};
-+
- #ifdef BX_QEMU
- /*
-  *  * ACPI 2.0 Generic Address Space definition.
-@@ -1452,7 +1503,7 @@ struct acpi_20_hpet {
-
- struct madt_io_apic
- {
--      APIC_HEADER_DEF
-+      ACPI_SUB_HEADER_DEF
-       uint8_t                              io_apic_id;             /* I/O 
APIC ID */
-       uint8_t                              reserved;               /* 
Reserved - must be zero */
-       uint32_t                             address;                /* APIC 
physical address */
-@@ -1463,7 +1514,7 @@ struct madt_io_apic
- #ifdef BX_QEMU
- struct madt_int_override
- {
--      APIC_HEADER_DEF
-+      ACPI_SUB_HEADER_DEF
-       uint8_t                bus;     /* Identifies ISA Bus */
-       uint8_t                source;  /* Bus-relative interrupt source */
-       uint32_t               gsi;     /* GSI that source will signal */
-@@ -1567,6 +1618,21 @@ int acpi_build_processor_ssdt(uint8_t *ssdt)
-     return ssdt_ptr - ssdt;
- }
-
-+static void acpi_build_srat_memory(struct srat_memory_affinity *numamem,
-+    uint64_t base, uint64_t len, int node, int enabled)
-+{
-+     numamem->type = SRAT_MEMORY;
-+     numamem->length = sizeof(*numamem);
-+     memset (numamem->proximity, 0 ,4);
-+     numamem->proximity[0] = node;
-+     numamem->flags = cpu_to_le32(!!enabled);
-+     numamem->base_addr_low = base & 0xFFFFFFFF;
-+     numamem->base_addr_high = base >> 32;
-+     numamem->length_low = len & 0xFFFFFFFF;
-+     numamem->length_high = len >> 32;
-+     return;
-+}
-+
- /* base_addr must be a multiple of 4KB */
- void acpi_bios_init(void)
- {
-@@ -1577,12 +1643,15 @@ void acpi_bios_init(void)
-     struct multiple_apic_table *madt;
-     uint8_t *dsdt, *ssdt;
- #ifdef BX_QEMU
-+    struct system_resource_affinity_table *srat;
-     struct acpi_20_hpet *hpet;
-     uint32_t hpet_addr;
- #endif
-     uint32_t base_addr, rsdt_addr, fadt_addr, addr, facs_addr, dsdt_addr, 
ssdt_addr;
-     uint32_t acpi_tables_size, madt_addr, madt_size, rsdt_size;
-+    uint32_t srat_addr,srat_size;
-     uint16_t i, external_tables;
-+    int nb_numa_nodes;
-
-     /* reserve memory space for tables */
- #ifdef BX_USE_EBDA_TABLES
-@@ -1624,6 +1693,25 @@ void acpi_bios_init(void)
-     ssdt_addr = addr;
-     ssdt = (void *)(addr);
-     addr += acpi_build_processor_ssdt(ssdt);
-+#ifdef BX_QEMU
-+    qemu_cfg_select(QEMU_CFG_NUMA);
-+    nb_numa_nodes = qemu_cfg_get64();
-+#else
-+    nb_numa_nodes = 0;
-+#endif
-+    if (nb_numa_nodes > 0) {
-+        addr = (addr + 7) & ~7;
-+        srat_addr = addr;
-+        srat_size = sizeof(*srat) +
-+            sizeof(struct srat_processor_affinity) * smp_cpus +
-+            sizeof(struct srat_memory_affinity) * (nb_numa_nodes + 2);
-+        srat = (void *)(addr);
-+        addr += srat_size;
-+    } else {
-+        srat_addr = addr;
-+        srat = (void*)(addr);
-+        srat_size = 0;
-+    }
-
-     addr = (addr + 7) & ~7;
-     madt_addr = addr;
-@@ -1733,6 +1821,69 @@ void acpi_bios_init(void)
-
-     memset(rsdt, 0, rsdt_size);
- #ifdef BX_QEMU
-+    /* SRAT */
-+    if (nb_numa_nodes > 0) {
-+        struct srat_processor_affinity *core;
-+        struct srat_memory_affinity *numamem;
-+        int slots;
-+        uint64_t mem_len, mem_base, next_base = 0, curnode;
-+
-+        qemu_cfg_select(QEMU_CFG_NUMA);
-+        qemu_cfg_get64();
-+        memset (srat, 0 , srat_size);
-+        srat->reserved1=1;
-+ 
-+        core = (void*)(srat + 1);
-+        for (i = 0; i < smp_cpus; ++i) {
-+             core->type = SRAT_PROCESSOR;
-+             core->length = sizeof(*core);
-+             core->local_apic_id = i;
-+             curnode = qemu_cfg_get64();
-+             core->proximity_lo = curnode;
-+             memset (core->proximity_hi, 0, 3);
-+             core->local_sapic_eid = 0;
-+             if (i < smp_cpus)
-+                 core->flags = cpu_to_le32(1);
-+             else
-+                 core->flags = 0;
-+             core++;
-+        }
-+
-+        /* the memory map is a bit tricky, it contains at least one hole
-+         * from 640k-1M and possibly another one from 3.5G-4G.
-+         */
-+        numamem = (void*)core; slots = 0;
-+        acpi_build_srat_memory(numamem, 0, 640*1024, 0, 1);
-+        next_base = 1024 * 1024; numamem++;slots++;
-+        for (i = 1; i < nb_numa_nodes + 1; ++i) {
-+            mem_base = next_base;
-+            mem_len = qemu_cfg_get64();
-+            if (i == 1) mem_len -= 1024 * 1024;
-+            next_base = mem_base + mem_len;
-+ 
-+            /* Cut out the PCI hole */
-+            if (mem_base <= ram_size && next_base > ram_size) {
-+                mem_len -= next_base - ram_size;
-+                if (mem_len > 0) {
-+                    acpi_build_srat_memory(numamem, mem_base, mem_len, i-1, 
1);
-+                    numamem++; slots++;
-+                }
-+                mem_base = 1ULL << 32;
-+                mem_len = next_base - ram_size;
-+                next_base += (1ULL << 32) - ram_size;
-+            }
-+            acpi_build_srat_memory(numamem, mem_base, mem_len, i-1, 1);
-+            numamem++; slots++;
-+        }
-+        for (; slots < nb_numa_nodes + 2; slots++) {
-+            acpi_build_srat_memory(numamem, 0, 0, 0, 0);
-+            numamem++;
-+        }
-+
-+         acpi_build_table_header((struct acpi_table_header *)srat,
-+                                "SRAT", srat_size, 1);
-+    }
-+
-     /* HPET */
-     memset(hpet, 0, sizeof(*hpet));
-     /* Note timer_block_id value must be kept in sync with value advertised by
-@@ -1761,9 +1912,11 @@ void acpi_bios_init(void)
-     rsdt->table_offset_entry[2] = cpu_to_le32(ssdt_addr);
- #ifdef BX_QEMU
-     rsdt->table_offset_entry[3] = cpu_to_le32(hpet_addr);
-+    if (nb_numa_nodes > 0)
-+        rsdt->table_offset_entry[4] = cpu_to_le32(srat_addr);
- #endif
--    acpi_build_table_header((struct acpi_table_header *)rsdt,
--                            "RSDT", rsdt_size, 1);
-+    acpi_build_table_header((struct acpi_table_header *)rsdt, "RSDT",
-+        rsdt_size - (nb_numa_nodes > 0? 0: sizeof(uint32_t)), 1);
-
-     acpi_tables_size = addr - base_addr;
-
--- 
-1.6.1.3
-
-
diff --git a/pc-bios/bios-pq/0015_enable-power-button-even-generation.patch 
b/pc-bios/bios-pq/0015_enable-power-button-even-generation.patch
deleted file mode 100644
index ee6d028..0000000
--- a/pc-bios/bios-pq/0015_enable-power-button-even-generation.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From a6d6552426dcbf726e5549f08b70c9318d6be14b Mon Sep 17 00:00:00 2001
-Date: Fri, 8 May 2009 10:13:01 -0500
-Subject: Enable power button event generation.
-From: Gleb Natapov <address@hidden>
-
-Signed-off-by: Gleb Natapov <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 81e3bad..9986531 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -1767,8 +1767,8 @@ void acpi_bios_init(void)
-     fadt->plvl3_lat = cpu_to_le16(0xfff); // C3 state not supported
-     fadt->gpe0_blk = cpu_to_le32(0xafe0);
-     fadt->gpe0_blk_len = 4;
--    /* WBINVD + PROC_C1 + PWR_BUTTON + SLP_BUTTON + FIX_RTC */
--    fadt->flags = cpu_to_le32((1 << 0) | (1 << 2) | (1 << 4) | (1 << 5) | (1 
<< 6));
-+    /* WBINVD + PROC_C1 + SLP_BUTTON + FIX_RTC */
-+    fadt->flags = cpu_to_le32((1 << 0) | (1 << 2) | (1 << 5) | (1 << 6));
-     acpi_build_table_header((struct acpi_table_header *)fadt, "FACP",
-                             sizeof(*fadt), 1);
- 
diff --git 
a/pc-bios/bios-pq/0016-use-correct-mask-to-size-pci-option-rom-bar.patch 
b/pc-bios/bios-pq/0016-use-correct-mask-to-size-pci-option-rom-bar.patch
deleted file mode 100644
index f94fd12..0000000
--- a/pc-bios/bios-pq/0016-use-correct-mask-to-size-pci-option-rom-bar.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 00070396b06392fadcee0e19d499a43b81c63c45 Mon Sep 17 00:00:00 2001
-Date: Fri, 22 May 2009 09:57:32 -0500
-Subject: [PATCH] bios: Use the correct mask to size the PCI option ROM BAR
-From: Alex Williamson <address@hidden>
-
-Bit 0 is the enable bit, which we not only don't want to set, but
-it will stick and make us think it's an I/O port resource.
-
-Signed-off-by: Alex Williamson <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
----
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index d7e18e9..f861f81 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -985,11 +985,13 @@ static void pci_bios_init_device(PCIDevice *d)
-             int ofs;
-             uint32_t val, size ;
- 
--            if (i == PCI_ROM_SLOT)
-+            if (i == PCI_ROM_SLOT) {
-                 ofs = 0x30;
--            else
-+                pci_config_writel(d, ofs, 0xfffffffe);
-+            } else {
-                 ofs = 0x10 + i * 4;
--            pci_config_writel(d, ofs, 0xffffffff);
-+                pci_config_writel(d, ofs, 0xffffffff);
-+            }
-             val = pci_config_readl(d, ofs);
-             if (val != 0) {
-                 size = (~(val & ~0xf)) + 1;
-
-
diff --git 
a/pc-bios/bios-pq/0017-bochs-bios-Move-QEMU_CFG-constants-to-rombios.h.patch 
b/pc-bios/bios-pq/0017-bochs-bios-Move-QEMU_CFG-constants-to-rombios.h.patch
deleted file mode 100644
index f6a1788..0000000
--- a/pc-bios/bios-pq/0017-bochs-bios-Move-QEMU_CFG-constants-to-rombios.h.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From f371c480cb93f3516f34af5e3a4524ee6ba43c24 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <address@hidden>
-Date: Thu, 2 Jul 2009 00:11:38 +0200
-Subject: [PATCH 1/2] bochs-bios: Move QEMU_CFG constants to rombios.h
-
-We will need them outside of rombios32.c.
-
-Signed-off-by: Jan Kiszka <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
----
- bios/rombios.h   |   10 ++++++++++
- bios/rombios32.c |   10 ----------
- 2 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/bios/rombios.h b/bios/rombios.h
-index 6f9cbb1..59ce19d 100644
---- a/bios/rombios.h
-+++ b/bios/rombios.h
-@@ -58,6 +58,16 @@
- #define SMB_IO_BASE       0xb100
- #define SMP_MSR_ADDR      0x0510
- 
-+#define QEMU_CFG_CTL_PORT         0x510
-+#define QEMU_CFG_DATA_PORT        0x511
-+#define QEMU_CFG_SIGNATURE        0x00
-+#define QEMU_CFG_ID               0x01
-+#define QEMU_CFG_UUID             0x02
-+#define QEMU_CFG_NUMA             0x0d
-+#define QEMU_CFG_ARCH_LOCAL       0x8000
-+#define QEMU_CFG_ACPI_TABLES      (QEMU_CFG_ARCH_LOCAL + 0)
-+#define QEMU_CFG_SMBIOS_ENTRIES   (QEMU_CFG_ARCH_LOCAL + 1)
-+
-   // Define the application NAME
- #if defined(BX_QEMU)
- #  define BX_APPNAME "QEMU"
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index f861f81..3fe4e48 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -468,16 +468,6 @@ void wrmsr_smp(uint32_t index, uint64_t val)
- }
- 
- #ifdef BX_QEMU
--#define QEMU_CFG_CTL_PORT 0x510
--#define QEMU_CFG_DATA_PORT 0x511
--#define QEMU_CFG_SIGNATURE  0x00
--#define QEMU_CFG_ID         0x01
--#define QEMU_CFG_UUID       0x02
--#define QEMU_CFG_NUMA       0x0D
--#define QEMU_CFG_ARCH_LOCAL     0x8000
--#define QEMU_CFG_ACPI_TABLES  (QEMU_CFG_ARCH_LOCAL + 0)
--#define QEMU_CFG_SMBIOS_ENTRIES  (QEMU_CFG_ARCH_LOCAL + 1)
--
- int qemu_cfg_port;
- 
- void qemu_cfg_select(int f)
--- 
-1.6.2.5
-
diff --git a/pc-bios/bios-pq/0018-bochs-bios-Make-boot-prompt-optional.patch 
b/pc-bios/bios-pq/0018-bochs-bios-Make-boot-prompt-optional.patch
deleted file mode 100644
index cda9757..0000000
--- a/pc-bios/bios-pq/0018-bochs-bios-Make-boot-prompt-optional.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From fff8ffe1c92474ee58ebd6da82fede0ab7929214 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <address@hidden>
-Date: Thu, 2 Jul 2009 00:11:44 +0200
-Subject: [PATCH 2/2] bochs-bios: Make boot prompt optional
-
-Check via QEMU's firmware configuration interface if the boot prompt
-should be given. This allows to disable the prompt with its several
-seconds long delay, speeding up the common boot case.
-
-Signed-off-by: Jan Kiszka <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
----
- bios/rombios.c |   19 +++++++++++++++++++
- bios/rombios.h |    1 +
- 2 files changed, 20 insertions(+), 0 deletions(-)
-
-diff --git a/bios/rombios.c b/bios/rombios.c
-index 0f13b53..560e6d5 100644
---- a/bios/rombios.c
-+++ b/bios/rombios.c
-@@ -2015,6 +2015,21 @@ Bit16u i; ipl_entry_t *e;
- }
- 
- #if BX_ELTORITO_BOOT
-+#ifdef BX_QEMU
-+int
-+qemu_cfg_probe_bootkey()
-+{
-+  outw(QEMU_CFG_CTL_PORT, QEMU_CFG_SIGNATURE);
-+  if (inb(QEMU_CFG_DATA_PORT) != 'Q' ||
-+      inb(QEMU_CFG_DATA_PORT) != 'E' ||
-+      inb(QEMU_CFG_DATA_PORT) != 'M' ||
-+      inb(QEMU_CFG_DATA_PORT) != 'U') return 1;
-+
-+  outw(QEMU_CFG_CTL_PORT, QEMU_CFG_BOOT_MENU);
-+  return inb(QEMU_CFG_DATA_PORT);
-+}
-+#endif // BX_QEMU
-+
-   void
- interactive_bootkey()
- {
-@@ -2026,6 +2041,10 @@ interactive_bootkey()
-   Bit16u ss = get_SS();
-   Bit16u valid_choice = 0;
- 
-+#ifdef BX_QEMU
-+  if (!qemu_cfg_probe_bootkey()) return;
-+#endif
-+
-   while (check_for_keystroke())
-     get_keystroke();
- 
-diff --git a/bios/rombios.h b/bios/rombios.h
-index 59ce19d..8ece2ee 100644
---- a/bios/rombios.h
-+++ b/bios/rombios.h
-@@ -64,6 +64,7 @@
- #define QEMU_CFG_ID               0x01
- #define QEMU_CFG_UUID             0x02
- #define QEMU_CFG_NUMA             0x0d
-+#define QEMU_CFG_BOOT_MENU        0x0e
- #define QEMU_CFG_ARCH_LOCAL       0x8000
- #define QEMU_CFG_ACPI_TABLES      (QEMU_CFG_ARCH_LOCAL + 0)
- #define QEMU_CFG_SMBIOS_ENTRIES   (QEMU_CFG_ARCH_LOCAL + 1)
--- 
-1.6.2.5
-
diff --git a/pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch 
b/pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch
deleted file mode 100644
index 47d3a55..0000000
--- a/pc-bios/bios-pq/0019-bios-fix-multiple-calls.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From e1e8f35a4f59d82ab9a5361c3990c8dadd2e7678 Mon Sep 17 00:00:00 2001
-Date: Fri, 10 Jul 2009 14:52:56 -0500
-Subject: bios: Fix multiple calls into smbios_load_ex
-From: Alex Williamson <address@hidden>
-
-We're marking the used entry bitmap in smbios_load_external() for each
-type we check, regardless of whether we loaded anything.  This makes
-subsequent calls behave as if we've already loaded the tables from qemu
-and can result in missing tables (ex. multiple type4 entries on an SMP
-guest).  Only mark the bitmap if we actually load something.
-
-Signed-off-by: Alex Williamson <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index f861f81..c869798 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -2554,13 +2554,14 @@ smbios_load_external(int type, char **p, unsigned 
*nr_structs,
-             *max_struct_size = *p - (char *)header;
-     }
- 
--    /* Mark that we've reported on this type */
--    used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
-+    if (start != *p) {
-+        /* Mark that we've reported on this type */
-+        used_bitmap[(type >> 6) & 0x3] |= (1ULL << (type & 0x3f));
-+        return 1;
-+    }
- 
--    return (start != *p);
--#else /* !BX_QEMU */
-+#endif /* !BX_QEMU */
-     return 0;
--#endif
- }
- 
- void smbios_init(void)
diff --git a/pc-bios/bios-pq/0020-qemu-kvm-cfg-maxcpus.patch 
b/pc-bios/bios-pq/0020-qemu-kvm-cfg-maxcpus.patch
deleted file mode 100644
index 75b2ad2..0000000
--- a/pc-bios/bios-pq/0020-qemu-kvm-cfg-maxcpus.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From baef8a666c137fae513a195c8abeb80e1806d7bd Mon Sep 17 00:00:00 2001
-Date: Thu, 23 Jul 2009 17:03:43 +0200
-Subject: Read max_cpus variable from QEMU_CFG. If not provided, use value of 
smp_cpus.
-From: Jes Sorensen <address@hidden>
-
-Signed-off-by: Jes Sorensen <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios.h b/bios/rombios.h
-index 8ece2ee..dbf3bd3 100644
---- a/bios/rombios.h
-+++ b/bios/rombios.h
-@@ -65,6 +65,7 @@
- #define QEMU_CFG_UUID             0x02
- #define QEMU_CFG_NUMA             0x0d
- #define QEMU_CFG_BOOT_MENU        0x0e
-+#define QEMU_CFG_MAX_CPUS         0x0f
- #define QEMU_CFG_ARCH_LOCAL       0x8000
- #define QEMU_CFG_ACPI_TABLES      (QEMU_CFG_ARCH_LOCAL + 0)
- #define QEMU_CFG_SMBIOS_ENTRIES   (QEMU_CFG_ARCH_LOCAL + 1)
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index 69e82b1..610fc1f 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -436,6 +436,7 @@ void delay_ms(int n)
- }
- 
- uint16_t smp_cpus;
-+uint16_t max_cpus;
- uint32_t cpuid_signature;
- uint32_t cpuid_features;
- uint32_t cpuid_ext_features;
-@@ -526,6 +527,19 @@ static uint16_t smbios_entries(void)
-     return cnt;
- }
- 
-+static uint16_t get_max_cpus(void)
-+{
-+    uint16_t cnt;
-+
-+    qemu_cfg_select(QEMU_CFG_MAX_CPUS);
-+    qemu_cfg_read((uint8_t*)&cnt, sizeof(cnt));
-+
-+    if (!cnt)
-+        cnt = smp_cpus;
-+
-+    return cnt;
-+}
-+
- uint64_t qemu_cfg_get64 (void)
- {
-     uint64_t ret;
-@@ -2689,6 +2703,12 @@ void rombios32_init(uint32_t *s3_resume_vector, uint8_t 
*shutdown_flag)
- 
-     smp_probe();
- 
-+#ifdef BX_QEMU
-+    max_cpus = get_max_cpus();
-+#else
-+    max_cpus = smp_cpus;
-+#endif
-+
-     find_bios_table_area();
- 
-     if (*shutdown_flag == 0xfe) {
diff --git a/pc-bios/bios-pq/0021-qemu-madt-maxcpus.patch 
b/pc-bios/bios-pq/0021-qemu-madt-maxcpus.patch
deleted file mode 100644
index 270eece..0000000
--- a/pc-bios/bios-pq/0021-qemu-madt-maxcpus.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From baef8a666c137fae513a195c8abeb80e1806d7bd Mon Sep 17 00:00:00 2001
-Date: Thu, 23 Jul 2009 17:03:43 +0200
-Subject: Use max_cpus when building bios tables.
-From: Jes Sorensen <address@hidden>
-
-Signed-off-by: Jes Sorensen <address@hidden>
-Signed-off-by: Anthony Liguori <address@hidden>
-
-diff --git a/bios/rombios32.c b/bios/rombios32.c
-index e6bb164..3d15283 100644
---- a/bios/rombios32.c
-+++ b/bios/rombios32.c
-@@ -1145,23 +1145,25 @@ static void mptable_init(void)
-     putle32(&q, 0); /* OEM table ptr */
-     putle16(&q, 0); /* OEM table size */
- #ifdef BX_QEMU
--    putle16(&q, smp_cpus + 17); /* entry count */
-+    putle16(&q, max_cpus + 17); /* entry count */
- #else
--    putle16(&q, smp_cpus + 18); /* entry count */
-+    putle16(&q, max_cpus + 18); /* entry count */
- #endif
-     putle32(&q, 0xfee00000); /* local APIC addr */
-     putle16(&q, 0); /* ext table length */
-     putb(&q, 0); /* ext table checksum */
-     putb(&q, 0); /* reserved */
- 
--    for(i = 0; i < smp_cpus; i++) {
-+    for(i = 0; i < max_cpus; i++) {
-         putb(&q, 0); /* entry type = processor */
-         putb(&q, i); /* APIC id */
-         putb(&q, 0x11); /* local APIC version number */
-         if (i == 0)
-             putb(&q, 3); /* cpu flags: enabled, bootstrap cpu */
--        else
-+        else if (i < smp_cpus)
-             putb(&q, 1); /* cpu flags: enabled */
-+        else
-+            putb(&q, 0); /* cpu flags: disabled */
-         putb(&q, 0); /* cpu signature */
-         putb(&q, 6);
-         putb(&q, 0);
-@@ -1181,7 +1183,7 @@ static void mptable_init(void)
-     putstr(&q, "ISA   ");
- 
-     /* ioapic */
--    ioapic_id = smp_cpus;
-+    ioapic_id = max_cpus;
-     putb(&q, 2); /* entry type = I/O APIC */
-     putb(&q, ioapic_id); /* apic ID */
-     putb(&q, 0x11); /* I/O APIC version number */
-@@ -1581,7 +1583,7 @@ int acpi_build_processor_ssdt(uint8_t *ssdt)
- {
-     uint8_t *ssdt_ptr = ssdt;
-     int i, length;
--    int acpi_cpus = smp_cpus > 0xff ? 0xff : smp_cpus;
-+    int acpi_cpus = max_cpus > 0xff ? 0xff : max_cpus;
- 
-     ssdt_ptr[9] = 0; // checksum;
-     ssdt_ptr += sizeof(struct acpi_table_header);
-@@ -1713,7 +1715,7 @@ void acpi_bios_init(void)
-         addr = (addr + 7) & ~7;
-         srat_addr = addr;
-         srat_size = sizeof(*srat) +
--            sizeof(struct srat_processor_affinity) * smp_cpus +
-+            sizeof(struct srat_processor_affinity) * max_cpus +
-             sizeof(struct srat_memory_affinity) * (nb_numa_nodes + 2);
-         srat = (void *)(addr);
-         addr += srat_size;
-@@ -1726,7 +1728,7 @@ void acpi_bios_init(void)
-     addr = (addr + 7) & ~7;
-     madt_addr = addr;
-     madt_size = sizeof(*madt) +
--        sizeof(struct madt_processor_apic) * smp_cpus +
-+        sizeof(struct madt_processor_apic) * max_cpus +
- #ifdef BX_QEMU
-         sizeof(struct madt_io_apic) + sizeof(struct madt_int_override);
- #else
-@@ -1799,18 +1801,21 @@ void acpi_bios_init(void)
-         madt->local_apic_address = cpu_to_le32(0xfee00000);
-         madt->flags = cpu_to_le32(1);
-         apic = (void *)(madt + 1);
--        for(i=0;i<smp_cpus;i++) {
-+        for(i = 0;i < max_cpus; i++) {
-             apic->type = APIC_PROCESSOR;
-             apic->length = sizeof(*apic);
-             apic->processor_id = i;
-             apic->local_apic_id = i;
--            apic->flags = cpu_to_le32(1);
-+            if (i < smp_cpus)
-+                apic->flags = cpu_to_le32(1);
-+            else
-+                apic->flags = 0;
-             apic++;
-         }
-         io_apic = (void *)apic;
-         io_apic->type = APIC_IO;
-         io_apic->length = sizeof(*io_apic);
--        io_apic->io_apic_id = smp_cpus;
-+        io_apic->io_apic_id = max_cpus;
-         io_apic->address = cpu_to_le32(0xfec00000);
-         io_apic->interrupt = cpu_to_le32(0);
- #ifdef BX_QEMU
-@@ -1844,7 +1849,7 @@ void acpi_bios_init(void)
-         srat->reserved1=1;
-  
-         core = (void*)(srat + 1);
--        for (i = 0; i < smp_cpus; ++i) {
-+        for (i = 0; i < max_cpus; ++i) {
-              core->type = SRAT_PROCESSOR;
-              core->length = sizeof(*core);
-              core->local_apic_id = i;
-@@ -2603,7 +2608,7 @@ void smbios_init(void)
-     add_struct(0, p);
-     add_struct(1, p);
-     add_struct(3, p);
--    for (cpu_num = 1; cpu_num <= smp_cpus; cpu_num++)
-+    for (cpu_num = 1; cpu_num <= max_cpus; cpu_num++)
-         add_struct(4, p, cpu_num);
- 
-     /* Each 'memory device' covers up to 16GB of address space. */
diff --git a/pc-bios/bios-pq/HEAD b/pc-bios/bios-pq/HEAD
deleted file mode 100644
index 3a849d8..0000000
--- a/pc-bios/bios-pq/HEAD
+++ /dev/null
@@ -1 +0,0 @@
-04387139e3b5ac97b5633cd40b3d87cdf45efd6c
diff --git a/pc-bios/bios-pq/series b/pc-bios/bios-pq/series
deleted file mode 100644
index 0422dec..0000000
--- a/pc-bios/bios-pq/series
+++ /dev/null
@@ -1,21 +0,0 @@
-0001_bx-qemu.patch
-0002_kvm-bios-update-smbios-table-to-report-memory-above-4g.patch
-0003_kvm-bios-generate-mptable-unconditionally.patch
-0004_kvm-bios-resolve-memory-device-roll-over-reporting--issues-with-32g-guests.patch
-0005_kvm-bios-fix-smbios-memory-device-length-boundary--condition.patch
-0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
-0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
-0008_qemu-bios-provide-gpe-_l0x-methods.patch
-0009_qemu-bios-pci-hotplug-support.patch
-0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
-0011_read-additional-acpi-tables-from-a-vm.patch
-0012-load-smbios-entries-and-files-from-qemu.patch
-0013_fix-non-acpi-timer-interrupt-routing.patch
-0014_add-srat-acpi-table-support.patch
-0015_enable-power-button-even-generation.patch
-0016-use-correct-mask-to-size-pci-option-rom-bar.patch
-0017-bochs-bios-Move-QEMU_CFG-constants-to-rombios.h.patch
-0018-bochs-bios-Make-boot-prompt-optional.patch
-0019-bios-fix-multiple-calls.patch
-0020-qemu-kvm-cfg-maxcpus.patch
-0021-qemu-madt-maxcpus.patch
-- 
1.6.2.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]