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:
parent
e60a42f980
commit
9341362461
@ -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
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user