From patchwork Fri Jun 19 14:01:53 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jes Sorensen X-Patchwork-Id: 31362 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n5JE3fAr026489 for ; Fri, 19 Jun 2009 14:03:42 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751956AbZFSODN (ORCPT ); Fri, 19 Jun 2009 10:03:13 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750710AbZFSODM (ORCPT ); Fri, 19 Jun 2009 10:03:12 -0400 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) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:content-type; bh=BBjcrnR0qFtd+fNkU8k2cu9JZUjv4K8194esqXgDMx8=; b=lJV0S7xPMfwZeTZyRP4gcIjoteSW2dBIcTK7xiJexfZQtjchl+sODk73G87o9y5CBC HGsBfxRYWyRwf3xgfMXfVFKv3FVC1sXy0qFyT9/2ye82GPOwUaEUYWRyRKaEOCVeQl13 qgx7jkBMp7CiIEIhS+nXlJ/8SopOxYCaJCoz4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type; b=b/ErQrtgu4wBlCF30Tl+W5rQiBM57+6ArViV2Ud5tD541KfVlXFF3LkUFAVGfimkn0 vhlbVYFCTJbzoQLqb8tCosDe3mLx/cEeywijyz7D6yQcZ2Uq1GCMyZ16yWQZpE03I1lK rqzNT/yVFIcPq80c4X60UU0rorq+/F63nw5NM= Received: by 10.86.91.13 with SMTP id o13mr3274119fgb.7.1245420191845; Fri, 19 Jun 2009 07:03:11 -0700 (PDT) Received: from eye3.emea.sgi.com (77-59-223-90.static.cablecom.ch [77.59.223.90]) by mx.google.com with ESMTPS id l19sm996332fgb.1.2009.06.19.07.03.11 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 19 Jun 2009 07:03:11 -0700 (PDT) Message-ID: <4A3B9A51.6090900@gmail.com> Date: Fri, 19 Jun 2009 16:01:53 +0200 From: Jes Sorensen User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090513 Fedora/3.0-2.3.beta2.fc11 Thunderbird/3.0b2 MIME-Version: 1.0 To: Avi Kivity CC: Gleb Natapov , "kvm@vger.kernel.org" Subject: [patch] qemu-kvm, use max_cpus to size MADT table Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org 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 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;