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.
This commit is contained in:
gallatin 2003-03-29 18:22:29 +00:00
parent e60a42f980
commit 9341362461
2 changed files with 3 additions and 2 deletions

View File

@ -91,8 +91,9 @@
#include <machine/alpha_cpu.h>
#include <machine/cpu.h>
#define MAXSMPCPU 8
#ifdef SMP
#define MAXCPU 32
#define MAXCPU MAXSMPCPU
#else
#define MAXCPU 1
#endif

View File

@ -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. */