]> git.proxmox.com Git - mirror_qemu.git/commit - hw/core/numa.c
numa: move source of default CPUs to NUMA node mapping into boards
authorIgor Mammedov <imammedo@redhat.com>
Wed, 10 May 2017 11:29:45 +0000 (13:29 +0200)
committerEduardo Habkost <ehabkost@redhat.com>
Thu, 11 May 2017 19:08:48 +0000 (16:08 -0300)
commitea089eebbd80e61d3c3cd03741dd5d9535c551fc
treef868c4e6bc6f311b8513aaf465da5f343f96d6db
parentd9c34f9c6c745f6a8123a872b33990ab564c614a
numa: move source of default CPUs to NUMA node mapping into boards

Originally CPU threads were by default assigned in
round-robin fashion. However it was causing issues in
guest since CPU threads from the same socket/core could
be placed on different NUMA nodes.
Commit fb43b73b (pc: fix default VCPU to NUMA node mapping)
fixed it by grouping threads within a socket on the same node
introducing cpu_index_to_socket_id() callback and commit
20bb648d (spapr: Fix default NUMA node allocation for threads)
reused callback to fix similar issues for SPAPR machine
even though socket doesn't make much sense there.

As result QEMU ended up having 3 default distribution rules
used by 3 targets /virt-arm, spapr, pc/.

In effort of moving NUMA mapping for CPUs into possible_cpus,
generalize default mapping in numa.c by making boards decide
on default mapping and let them explicitly tell generic
numa code to which node a CPU thread belongs to by replacing
cpu_index_to_socket_id() with @cpu_index_to_instance_props()
which provides default node_id assigned by board to specified
cpu_index.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <1494415802-227633-2-git-send-email-imammedo@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
hw/arm/virt.c
hw/i386/pc.c
hw/ppc/spapr.c
include/hw/boards.h
include/sysemu/numa.h
numa.c
vl.c