Page MenuHomeFreeBSD

D28579.id83663.diff
No OneTemporary

D28579.id83663.diff

Index: sys/arm64/arm64/mp_machdep.c
===================================================================
--- sys/arm64/arm64/mp_machdep.c
+++ sys/arm64/arm64/mp_machdep.c
@@ -437,8 +437,27 @@
struct cpu_group *
cpu_topo(void)
{
-
- return (smp_topo_none());
+ cpuset_t dom;
+ int cpuspdom, i, j;
+
+ if (vm_ndomains == 1)
+ return (smp_topo_none());
+ if (mp_ncpus % vm_ndomains != 0) {
+ printf("%s: unbalanced NUMA domains detected\n", __func__);
+ return (smp_topo_none());
+ }
+ cpuspdom = mp_ncpus / vm_ndomains;
+ for (i = 0; i < vm_ndomains; i++) {
+ CPU_ZERO(&dom);
+ for (j = 0; j < cpuspdom; j++)
+ CPU_SET(i * cpuspdom + j, &dom);
+ if (CPU_CMP(&dom, &cpuset_domain[i]) != 0) {
+ printf("%s: non-contiguous NUMA domains detected\n",
+ __func__);
+ return (smp_topo_none());
+ }
+ }
+ return (smp_topo_1level(CG_SHARE_L3, cpuspdom, 0));
}
/* Determine if we running MP machine */

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 8, 9:48 PM (14 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40445795
Default Alt Text
D28579.id83663.diff (915 B)

Event Timeline