Module Name: src Committed By: jmcneill Date: Mon Dec 9 21:55:06 UTC 2024
Modified Files: src/sys/arch/arm/arm: arm_cpu_topology.c Log Message: arm64: Fix Oryon topology. The Oryon CPUs don't set the MT bit in MPIDR_EL1, leading to a bogus topology. Work around this for now - long term fix will be to support PPTT. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/arm/arm_cpu_topology.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/arm/arm_cpu_topology.c diff -u src/sys/arch/arm/arm/arm_cpu_topology.c:1.7 src/sys/arch/arm/arm/arm_cpu_topology.c:1.8 --- src/sys/arch/arm/arm/arm_cpu_topology.c:1.7 Sun Jun 30 17:58:08 2024 +++ src/sys/arch/arm/arm/arm_cpu_topology.c Mon Dec 9 21:55:06 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_cpu_topology.c,v 1.7 2024/06/30 17:58:08 jmcneill Exp $ */ +/* $NetBSD: arm_cpu_topology.c,v 1.8 2024/12/09 21:55:06 jmcneill Exp $ */ /* * Copyright (c) 2020 Matthew R. Green @@ -31,7 +31,7 @@ #include "opt_multiprocessor.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm_cpu_topology.c,v 1.7 2024/06/30 17:58:08 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm_cpu_topology.c,v 1.8 2024/12/09 21:55:06 jmcneill Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -49,11 +49,13 @@ arm_cpu_topology_set(struct cpu_info * c { #ifdef MULTIPROCESSOR uint pkgid, coreid, smtid, numaid; + bool use_aff0 = (mpidr & MPIDR_MT) != 0 || + CPU_ID_ORYON_P(ci->ci_id.ac_midr); /* NUMA info comes from firmware tables (ACPI or FDT). */ numaid = ci->ci_numa_id; - if (mpidr & MPIDR_MT) { + if (use_aff0) { pkgid = __SHIFTOUT(mpidr, MPIDR_AFF2); coreid = __SHIFTOUT(mpidr, MPIDR_AFF1); smtid = __SHIFTOUT(mpidr, MPIDR_AFF0);