qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 0/4] NUMA: Apply socket-NUMA-node boundary for aarch64 and


From: Daniel Henrique Barboza
Subject: Re: [PATCH v2 0/4] NUMA: Apply socket-NUMA-node boundary for aarch64 and RiscV machines
Date: Thu, 23 Feb 2023 10:18:55 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2



On 2/23/23 05:13, Gavin Shan wrote:
For arm64 and RiscV architecture, the driver (/base/arch_topology.c) is
used to populate the CPU topology in the Linux guest. It's required that
the CPUs in one socket can't span mutiple NUMA nodes. Otherwise, the Linux
scheduling domain can't be sorted out, as the following warning message
indicates. To avoid the unexpected confusion, this series attempts to
rejects such kind of insane configurations.

    -smp 6,maxcpus=6,sockets=2,clusters=1,cores=3,threads=1 \
    -numa node,nodeid=0,cpus=0-1,memdev=ram0                \
    -numa node,nodeid=1,cpus=2-3,memdev=ram1                \
    -numa node,nodeid=2,cpus=4-5,memdev=ram2                \


And why is this a QEMU problem? This doesn't hurt ACPI.

Also, this restriction impacts breaks ARM guests in the wild that are running
non-Linux OSes. I don't see why we should impact use cases that has nothing to
do with Linux Kernel feelings about sockets - NUMA nodes exclusivity.


Thanks,


Daniel


------------[ cut here ]------------
    WARNING: CPU: 0 PID: 1 at kernel/sched/topology.c:2271 
build_sched_domains+0x284/0x910
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.14.0-268.el9.aarch64 #1
    pstate: 00400005 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : build_sched_domains+0x284/0x910
    lr : build_sched_domains+0x184/0x910
    sp : ffff80000804bd50
    x29: ffff80000804bd50 x28: 0000000000000002 x27: 0000000000000000
    x26: ffff800009cf9a80 x25: 0000000000000000 x24: ffff800009cbf840
    x23: ffff000080325000 x22: ffff0000005df800 x21: ffff80000a4ce508
    x20: 0000000000000000 x19: ffff000080324440 x18: 0000000000000014
    x17: 00000000388925c0 x16: 000000005386a066 x15: 000000009c10cc2e
    x14: 00000000000001c0 x13: 0000000000000001 x12: ffff00007fffb1a0
    x11: ffff00007fffb180 x10: ffff80000a4ce508 x9 : 0000000000000041
    x8 : ffff80000a4ce500 x7 : ffff80000a4cf920 x6 : 0000000000000001
    x5 : 0000000000000001 x4 : 0000000000000007 x3 : 0000000000000002
    x2 : 0000000000001000 x1 : ffff80000a4cf928 x0 : 0000000000000001
    Call trace:
     build_sched_domains+0x284/0x910
     sched_init_domains+0xac/0xe0
     sched_init_smp+0x48/0xc8
     kernel_init_freeable+0x140/0x1ac
     kernel_init+0x28/0x140
     ret_from_fork+0x10/0x20

PATCH[1] Improves numa/test for aarch64 to follow socket-to-NUMA-node boundary
PATCH[2] Validate the configuration if required in the NUMA subsystem
PATCH[3] Enable the validation for aarch64 machines
PATCH[4] Enable the validation for RiscV machines

v1: https://lists.nongnu.org/archive/html/qemu-arm/2023-02/msg00886.html

Changelog
=========
v2:
   * Fix socket-NUMA-node boundary issues in qtests/numa-test  (Gavin)
   * Add helper set_numa_socket_boundary() and validate the
     boundary in the generic path                              (Philippe)

Gavin Shan (4):
   qtest/numa-test: Follow socket-NUMA-node boundary for aarch64
   numa: Validate socket and NUMA node boundary if required
   hw/arm: Validate socket and NUMA node boundary
   hw/riscv: Validate socket and NUMA node boundary

  hw/arm/sbsa-ref.c       |  2 ++
  hw/arm/virt.c           |  2 ++
  hw/core/machine.c       | 34 ++++++++++++++++++++++++++++++++++
  hw/core/numa.c          |  7 +++++++
  hw/riscv/spike.c        |  1 +
  hw/riscv/virt.c         |  1 +
  include/sysemu/numa.h   |  4 ++++
  tests/qtest/numa-test.c | 13 ++++++++++---
  8 files changed, 61 insertions(+), 3 deletions(-)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]