Read max_cpus variable from QEMU_CFG. If not provided, use value of
smp_cpus.

Signed-off-by: Jes Sorensen <jes@sgi.com>

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) {
