From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jes Sorensen Subject: [patch] qemu-kvm, use max_cpus to size MADT table Date: Fri, 19 Jun 2009 16:01:53 +0200 Message-ID: <4A3B9A51.6090900@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060909020501000503030005" Cc: Gleb Natapov , "kvm@vger.kernel.org" To: Avi Kivity Return-path: Received: from fg-out-1718.google.com ([72.14.220.152]:27044 "EHLO fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751956AbZFSODK (ORCPT ); Fri, 19 Jun 2009 10:03:10 -0400 Received: by fg-out-1718.google.com with SMTP id 16so584550fgg.17 for ; Fri, 19 Jun 2009 07:03:12 -0700 (PDT) Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------060909020501000503030005 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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 --------------060909020501000503030005 Content-Type: text/x-patch; name="0003-qemu-madt-maxcpus.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0003-qemu-madt-maxcpus.patch" Build madt table based on max_cpus count. Signed-off-by: Jes Sorensen --- 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;itype = APIC_PROCESSOR; apic->length = sizeof(*apic); apic->processor_id = i; --------------060909020501000503030005--