qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, ehabkost@redhat.com, mtosatti@redhat.com,
	rkrcmar@redhat.com, mst@redhat.com, kevin@koconnor.net,
	lersek@redhat.com
Subject: [Qemu-devel] [PATCH for-2.8 02/18] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
Date: Fri,  5 Aug 2016 11:46:01 +0200	[thread overview]
Message-ID: <1470390377-228219-3-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1470390377-228219-1-git-send-email-imammedo@redhat.com>

Workaround for long standing issue where Linux kernel
assigns hotplugged CPU to 1st numa node as it discards
proximity for possible CPUs from SRAT after it's parsed.

_PXM method allows linux query proximity directly from
hotplugged CPU object, which allows Linux to assing CPU
to the correct numa node.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
---
v3:
 - use numa_get_node_for_cpu() instead of duplicating lookup code
 - added comment in code blaming linux
---
 hw/acpi/cpu.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
index c13b65c..902f5c9 100644
--- a/hw/acpi/cpu.c
+++ b/hw/acpi/cpu.c
@@ -4,6 +4,7 @@
 #include "qapi/error.h"
 #include "qapi-event.h"
 #include "trace.h"
+#include "sysemu/numa.h"
 
 #define ACPI_CPU_HOTPLUG_REG_LEN 12
 #define ACPI_CPU_SELECTOR_OFFSET_WR 0
@@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
 
         /* build Processor object for each processor */
         for (i = 0; i < arch_ids->len; i++) {
+            int j;
             Aml *dev;
             Aml *uid = aml_int(i);
             GArray *madt_buf = g_array_new(0, 1, 1);
@@ -546,6 +548,16 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
                           aml_arg(1), aml_arg(2))
             );
             aml_append(dev, method);
+
+            /* Linux guests discard SRAT info for non-present CPUs
+             * as a result _PXM is required for all CPUs which might
+             * be hot-plugged. For simplicity, add it for all CPUs.
+             */
+            j = numa_get_node_for_cpu(i);
+            if (j < nb_numa_nodes) {
+                aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
+            }
+
             aml_append(cpus_dev, dev);
         }
     }
-- 
2.7.4

  parent reply	other threads:[~2016-08-05  9:46 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-05  9:45 [Qemu-devel] [PATCH for-2.8 00/18] pc: q35: x2APIC support in kvm_apic mode Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 01/18] numa: reduce code duplication by adding helper numa_get_node_for_cpu() Igor Mammedov
2016-08-05  9:46 ` Igor Mammedov [this message]
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 03/18] tests: acpi: extend cphp testcase with numa check Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 04/18] linux-headers: update to v4.8-rc1 Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 05/18] pc: acpi: x2APIC support for MADT table Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 06/18] pc: acpi: x2APIC support for SRAT table Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 07/18] acpi: cphp: support x2APIC entry in cpu._MAT Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 08/18] acpi: cphp: force switch to modern cpu hotplug if APIC ID > 254 Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 09/18] pc: leave max apic_id_limit only in legacy cpu hotplug code Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 10/18] pc: apic_common: extend APIC ID property to 32bit Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 11/18] pc: apic_common: restore APIC ID to initial ID on reset Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 12/18] pc: apic_common: reset APIC ID to initial ID when switching into x2APIC mode Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 13/18] pc: kvm_apic: pass APIC ID depending on xAPIC/x2APIC mode Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 14/18] pc: clarify FW_CFG_MAX_CPUS usage comment Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 15/18] increase MAX_CPUMASK_BITS from 255 to 288 Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 16/18] pc: add 'etc/boot-cpus' fw_cfg file for machine with more than 255 CPUs Igor Mammedov
2016-08-07  6:02   ` Michael S. Tsirkin
2016-08-08 11:40     ` Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 17/18] pc: add 2.8 machine Igor Mammedov
2016-08-05  9:46 ` [Qemu-devel] [PATCH for-2.8 18/18] pc: q35: bump max_cpus to 288 Igor Mammedov
2016-08-08  7:41 ` [Qemu-devel] [PATCH for-2.8 00/18] pc: q35: x2APIC support in kvm_apic mode Chao Gao
2016-08-08  8:57   ` Peter Xu
2016-08-09  4:33     ` Chao Gao
2016-08-09  6:18       ` Peter Xu
2016-08-09  6:24         ` Peter Xu
2016-08-09  6:33           ` Jan Kiszka
2016-08-09  7:09             ` Peter Xu
2016-08-09 12:41               ` Radim Krčmář
2016-08-09  8:19         ` Chao Gao
2016-08-09 12:51           ` Radim Krčmář
2016-09-22  4:34             ` Chao Gao
2016-09-23  5:26               ` Peter Xu
2016-09-23  5:58                 ` Lan Tianyu
2016-08-09  8:28     ` Igor Mammedov
2016-08-09 13:35       ` Peter Xu
2016-08-09 13:39         ` Luiz Capitulino
2016-08-10  8:51         ` Igor Mammedov
2016-08-11  5:10           ` Peter Xu
2016-08-11  8:56             ` Igor Mammedov
2016-08-08  9:18   ` Igor Mammedov
2016-08-09  3:23     ` Chao Gao
2016-08-09  8:18       ` Igor Mammedov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1470390377-228219-3-git-send-email-imammedo@redhat.com \
    --to=imammedo@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kevin@koconnor.net \
    --cc=lersek@redhat.com \
    --cc=mst@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rkrcmar@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).