--- a/usr/src/uts/sun4v/os/mach_mp_startup.c Fri Mar 26 14:22:56 2010 -0700
+++ b/usr/src/uts/sun4v/os/mach_mp_startup.c Fri Mar 26 14:31:07 2010 -0700
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -207,7 +207,7 @@
kmem_free(listp, listsz);
- mpo_cpu_add(cpuid);
+ mpo_cpu_add(mdp, cpuid);
/*
* Note: uses cpu_lock to protect cpunodes
--- a/usr/src/uts/sun4v/os/mpo.c Fri Mar 26 14:22:56 2010 -0700
+++ b/usr/src/uts/sun4v/os/mpo.c Fri Mar 26 14:31:07 2010 -0700
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -382,9 +382,8 @@
/* Called when DR'ing in a CPU */
void
-mpo_cpu_add(int cpuid)
+mpo_cpu_add(md_t *md, int cpuid)
{
- md_t *md;
mde_cookie_t cpunode;
int i;
@@ -392,8 +391,6 @@
if (n_lgrpnodes <= 0)
return;
- md = md_get_handle();
-
if (md == NULL)
goto add_fail;
@@ -409,7 +406,6 @@
mpo_cpu[cpuid].home = mpo_lgroup[i].addr_match >> home_mask_shift;
mpo_lgroup[i].ncpu++;
mpo_update_tunables();
- (void) md_fini_handle(md);
return;
add_fail:
panic("mpo_cpu_add: Cannot read MD");
--- a/usr/src/uts/sun4v/os/suspend.c Fri Mar 26 14:22:56 2010 -0700
+++ b/usr/src/uts/sun4v/os/suspend.c Fri Mar 26 14:31:07 2010 -0700
@@ -44,6 +44,7 @@
#include <sys/sunddi.h>
#include <sys/cpupart.h>
#include <sys/hsvc.h>
+#include <sys/mpo.h>
#include <vm/hat_sfmmu.h>
/*
@@ -295,6 +296,7 @@
if ((cp = cpu_get(id)) == NULL)
continue;
pg_cpu_fini(cp, pgps[id]);
+ mpo_cpu_remove(id);
}
/*
@@ -305,6 +307,7 @@
for (id = 0; id < NCPU; id++) {
if ((cp = cpu_get(id)) == NULL)
continue;
+ mpo_cpu_add(mdp, id);
pgps[id] = pg_cpu_init(cp, B_TRUE);
}
--- a/usr/src/uts/sun4v/sys/mpo.h Fri Mar 26 14:22:56 2010 -0700
+++ b/usr/src/uts/sun4v/sys/mpo.h Fri Mar 26 14:31:07 2010 -0700
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -114,7 +114,7 @@
/* These are used when MPO requires preallocated kvseg32 space */
extern caddr_t mpo_heap32_buf;
extern size_t mpo_heap32_bufsz;
-extern void mpo_cpu_add(int cpuid);
+extern void mpo_cpu_add(md_t *md, int cpuid);
extern void mpo_cpu_remove(int cpuid);
#ifdef __cplusplus