From 62f456b3159e00bb92fe7f341f151d6177e87f1f Mon Sep 17 00:00:00 2001 From: Andrew Gallatin Date: Sat, 29 Mar 2003 18:22:29 +0000 Subject: Fix the osf1 abi module on SMP systems by making the size of a struct pmap be the same on both SMP and UP kernels. It turns out that the size of a struct pmap is much larger on alpha SMP systems due to the number of pm_asn's being dependant on MAX_CPU. Since modules are supposed to be SMP agnostic, this has the affect of moving around the "interesting bits" of the vmspace (daddr, dsize) that the osf1 module wants to frob. So the module ends up scribbling in a pmap struct, and the user either sees a panic, or an application failure. While here, I've also shrunk MAXCPU to 8 now that it affects the size of pmap structs on UP systesm. This should be plenty, as I'm unware of any hardware we currently run in which supports more than 8 CPUs. --- sys/alpha/include/param.h | 3 ++- sys/alpha/include/pmap.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/alpha/include/param.h b/sys/alpha/include/param.h index 5a286f43df0b3..d75b932dd00a1 100644 --- a/sys/alpha/include/param.h +++ b/sys/alpha/include/param.h @@ -91,8 +91,9 @@ #include #include +#define MAXSMPCPU 8 #ifdef SMP -#define MAXCPU 32 +#define MAXCPU MAXSMPCPU #else #define MAXCPU 1 #endif diff --git a/sys/alpha/include/pmap.h b/sys/alpha/include/pmap.h index 01b29d5719204..981bea34cece1 100644 --- a/sys/alpha/include/pmap.h +++ b/sys/alpha/include/pmap.h @@ -177,7 +177,7 @@ struct pmap { struct { u_int32_t asn:ASN_BITS; /* address space number */ u_int32_t gen:ASNGEN_BITS; /* generation number */ - } pm_asn[MAXCPU]; + } pm_asn[MAXSMPCPU]; struct pmap_statistics pm_stats; /* pmap statistics */ struct vm_page *pm_ptphint; /* pmap ptp hint */ LIST_ENTRY(pmap) pm_list; /* list of all pmaps. */ -- cgit v1.3