diff mbox

qemu-kvm, use max_cpus to size MADT table

Message ID 4A3B9A51.6090900@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jes Sorensen June 19, 2009, 2:01 p.m. UTC
Hi,

This one goes on top of the -maxcpus patch. It changes the bios to use 
max_cpus to determine the size of the MADT table.

When no -maxcpus argument is given, we still fall back to the old 
default of 16.

Cheers,
Jes
diff mbox

Patch

Build madt table based on max_cpus count.

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

---
 kvm/bios/rombios32.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: qemu-kvm/kvm/bios/rombios32.c
===================================================================
--- qemu-kvm.orig/kvm/bios/rombios32.c
+++ qemu-kvm/kvm/bios/rombios32.c
@@ -1168,13 +1168,13 @@  static void mptable_init(void)
     putstr(&q, "0.1         "); /* vendor id */
     putle32(&q, 0); /* OEM table ptr */
     putle16(&q, 0); /* OEM table size */
-    putle16(&q, MAX_CPUS + 18); /* entry count */
+    putle16(&q, max_cpus + 18); /* entry count */
     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 < MAX_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 */
@@ -1700,7 +1700,7 @@  void acpi_bios_init(void)
     addr = (addr + 7) & ~7;
     madt_addr = addr;
     madt_size = sizeof(*madt) +
-        sizeof(struct madt_processor_apic) * MAX_CPUS +
+        sizeof(struct madt_processor_apic) * max_cpus +
 #ifdef BX_QEMU
         sizeof(struct madt_io_apic)  + sizeof(struct madt_int_override) * MAX_INT_OVERRIDES;
 #else
@@ -1778,7 +1778,7 @@  void acpi_bios_init(void)
         madt->local_apic_address = cpu_to_le32(0xfee00000);
         madt->flags = cpu_to_le32(1);
         *(uint32_t*)APIC_MADT_PTR = apic = (void *)(madt + 1);
-        for(i=0;i<MAX_CPUS;i++) {
+        for(i=0; i < max_cpus; i++) {
             apic->type = APIC_PROCESSOR;
             apic->length = sizeof(*apic);
             apic->processor_id = i;