From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58301) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XrnTv-0000zS-Ua for qemu-devel@nongnu.org; Fri, 21 Nov 2014 07:38:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XrnTp-0006SY-PG for qemu-devel@nongnu.org; Fri, 21 Nov 2014 07:38:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:57769) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XrnTp-0006SP-IX for qemu-devel@nongnu.org; Fri, 21 Nov 2014 07:38:29 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id sALCcSS1010590 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Fri, 21 Nov 2014 07:38:28 -0500 Date: Fri, 21 Nov 2014 13:38:26 +0100 From: Igor Mammedov Message-ID: <20141121133826.0887182e@nial.usersys.redhat.com> In-Reply-To: <1415636450-18674-1-git-send-email-imammedo@redhat.com> References: <1415636450-18674-1-git-send-email-imammedo@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH for-2.2] pc: acpi: mark all possible CPUs as enabled in SRAT List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mst@redhat.com On Mon, 10 Nov 2014 16:20:50 +0000 Igor Mammedov wrote: > If QEMU is started with -numa ... Windows only notices that > CPU has been hot-added but it will not online such CPUs. > > It's caused by the fact that possible CPUs are flagged as > not enabled in SRAT and Windows honoring that information > doesn't use corresponding CPU. > > ACPI 5.0 Spec regarding to flag says: > " > Table 5-47 Local APIC Flags > ... > Enabled: if zero, this processor is unusable, and the operating system > support will not attempt to use it. > " > > Fix QEMU to adhere to spec and mark possible CPUs as enabled > in SRAT. > > With that Windows onlines hot-added CPUs as expected. > > Signed-off-by: Igor Mammedov ping > --- > hw/i386/acpi-build.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > index 4003b6b..06499da 100644 > --- a/hw/i386/acpi-build.c > +++ b/hw/i386/acpi-build.c > @@ -1269,8 +1269,7 @@ acpi_build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base, > } > > static void > -build_srat(GArray *table_data, GArray *linker, > - AcpiCpuInfo *cpu, PcGuestInfo *guest_info) > +build_srat(GArray *table_data, GArray *linker, PcGuestInfo *guest_info) > { > AcpiSystemResourceAffinityTable *srat; > AcpiSratProcessorAffinity *core; > @@ -1300,11 +1299,7 @@ build_srat(GArray *table_data, GArray *linker, > core->proximity_lo = curnode; > memset(core->proximity_hi, 0, 3); > core->local_sapic_eid = 0; > - if (test_bit(i, cpu->found_cpus)) { > - core->flags = cpu_to_le32(1); > - } else { > - core->flags = cpu_to_le32(0); > - } > + core->flags = cpu_to_le32(1); > } > > > @@ -1622,7 +1617,7 @@ void acpi_build(PcGuestInfo *guest_info, AcpiBuildTables *tables) > } > if (guest_info->numa_nodes) { > acpi_add_table(table_offsets, tables->table_data); > - build_srat(tables->table_data, tables->linker, &cpu, guest_info); > + build_srat(tables->table_data, tables->linker, guest_info); > } > if (acpi_get_mcfg(&mcfg)) { > acpi_add_table(table_offsets, tables->table_data);