svn commit: r337771 - head/sys/mips/malta
Ruslan Bukin
br at FreeBSD.org
Tue Aug 14 16:29:11 UTC 2018
Author: br
Date: Tue Aug 14 16:29:10 2018
New Revision: 337771
URL: https://svnweb.freebsd.org/changeset/base/337771
Log:
Query MVPConf0.PVPE for number of CPUs.
Rather than hard-coding the number of CPUs to 2, look up the PVPE field
in MVPConf0, as the valid VPE numbers are from 0 to PVPE inclusive.
Submitted by: "James Clarke" <jrtc4 at cam.ac.uk>
Reviewed by: br
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D16644
Modified:
head/sys/mips/malta/malta_mp.c
Modified: head/sys/mips/malta/malta_mp.c
==============================================================================
--- head/sys/mips/malta/malta_mp.c Tue Aug 14 16:27:17 2018 (r337770)
+++ head/sys/mips/malta/malta_mp.c Tue Aug 14 16:29:10 2018 (r337771)
@@ -48,9 +48,10 @@ __FBSDID("$FreeBSD$");
#include <machine/md_var.h>
#include <machine/smp.h>
-#define MALTA_MAXCPU 2
#define VPECONF0_VPA (1 << 0)
#define MVPCONTROL_VPC (1 << 1)
+#define MVPCONF0_PVPE_SHIFT 10
+#define MVPCONF0_PVPE_MASK (0xf << MVPCONF0_PVPE_SHIFT)
#define TCSTATUS_A (1 << 13)
unsigned malta_ap_boot = ~0;
@@ -208,10 +209,13 @@ platform_init_ap(int cpuid)
void
platform_cpu_mask(cpuset_t *mask)
{
- uint32_t i, m;
+ uint32_t i, ncpus, reg;
+ reg = mftc0(0, 2);
+ ncpus = ((reg & MVPCONF0_PVPE_MASK) >> MVPCONF0_PVPE_SHIFT) + 1;
+
CPU_ZERO(mask);
- for (i = 0, m = 1 ; i < MALTA_MAXCPU; i++, m <<= 1)
+ for (i = 0; i < ncpus; i++)
CPU_SET(i, mask);
}
More information about the svn-src-all
mailing list