Skip to content
  • Gavin Shan's avatar
    a494fdb7
    numa: Validate cluster and NUMA node boundary if required · a494fdb7
    Gavin Shan authored
    
    
    For some architectures like ARM64, multiple CPUs in one cluster can be
    associated with different NUMA nodes, which is irregular configuration
    because we shouldn't have this in baremetal environment. The irregular
    configuration causes Linux guest to misbehave, as the following warning
    messages indicate.
    
      -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                \
    
      ------------[ 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
    
    Improve the situation to warn when multiple CPUs in one cluster have
    been associated with different NUMA nodes. However, one NUMA node is
    allowed to be associated with different clusters.
    
    Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
    Acked-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
    Acked-by: default avatarIgor Mammedov <imammedo@redhat.com>
    Message-Id: <20230509002739.18388-2-gshan@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    a494fdb7
    numa: Validate cluster and NUMA node boundary if required
    Gavin Shan authored
    
    
    For some architectures like ARM64, multiple CPUs in one cluster can be
    associated with different NUMA nodes, which is irregular configuration
    because we shouldn't have this in baremetal environment. The irregular
    configuration causes Linux guest to misbehave, as the following warning
    messages indicate.
    
      -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                \
    
      ------------[ 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
    
    Improve the situation to warn when multiple CPUs in one cluster have
    been associated with different NUMA nodes. However, one NUMA node is
    allowed to be associated with different clusters.
    
    Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
    Acked-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
    Acked-by: default avatarIgor Mammedov <imammedo@redhat.com>
    Message-Id: <20230509002739.18388-2-gshan@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading