summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorHaik Aftandilian <Haik.Aftandilian@Sun.COM>2010-03-26 14:31:07 -0700
committerHaik Aftandilian <Haik.Aftandilian@Sun.COM>2010-03-26 14:31:07 -0700
commit183ef8a1713ca188e24d970f22c6f9cc333007fd (patch)
treebe50ce43240c41683bda288eaa247b4b2d5a7462 /usr/src
parent2dd5848fa9da42f374782814f362e0afda124ecd (diff)
downloadillumos-gate-183ef8a1713ca188e24d970f22c6f9cc333007fd.tar.gz
6908683 cooperative guest migration panic in cmt_balance
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/sun4v/os/mach_mp_startup.c4
-rw-r--r--usr/src/uts/sun4v/os/mpo.c8
-rw-r--r--usr/src/uts/sun4v/os/suspend.c3
-rw-r--r--usr/src/uts/sun4v/sys/mpo.h4
4 files changed, 9 insertions, 10 deletions
diff --git a/usr/src/uts/sun4v/os/mach_mp_startup.c b/usr/src/uts/sun4v/os/mach_mp_startup.c
index fc10bb666e..ffa55e2e89 100644
--- a/usr/src/uts/sun4v/os/mach_mp_startup.c
+++ b/usr/src/uts/sun4v/os/mach_mp_startup.c
@@ -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 @@ mp_cpu_configure(int cpuid)
kmem_free(listp, listsz);
- mpo_cpu_add(cpuid);
+ mpo_cpu_add(mdp, cpuid);
/*
* Note: uses cpu_lock to protect cpunodes
diff --git a/usr/src/uts/sun4v/os/mpo.c b/usr/src/uts/sun4v/os/mpo.c
index 44cf19fd6d..4bf7dea82d 100644
--- a/usr/src/uts/sun4v/os/mpo.c
+++ b/usr/src/uts/sun4v/os/mpo.c
@@ -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 @@ to_lgrp_done:
/* 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 @@ mpo_cpu_add(int cpuid)
if (n_lgrpnodes <= 0)
return;
- md = md_get_handle();
-
if (md == NULL)
goto add_fail;
@@ -409,7 +406,6 @@ mpo_cpu_add(int cpuid)
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");
diff --git a/usr/src/uts/sun4v/os/suspend.c b/usr/src/uts/sun4v/os/suspend.c
index 6a8302115a..d4cd260d7d 100644
--- a/usr/src/uts/sun4v/os/suspend.c
+++ b/usr/src/uts/sun4v/os/suspend.c
@@ -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 @@ update_cpu_mappings(void)
if ((cp = cpu_get(id)) == NULL)
continue;
pg_cpu_fini(cp, pgps[id]);
+ mpo_cpu_remove(id);
}
/*
@@ -305,6 +307,7 @@ update_cpu_mappings(void)
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);
}
diff --git a/usr/src/uts/sun4v/sys/mpo.h b/usr/src/uts/sun4v/sys/mpo.h
index e1f251c618..349ad23865 100644
--- a/usr/src/uts/sun4v/sys/mpo.h
+++ b/usr/src/uts/sun4v/sys/mpo.h
@@ -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 @@ typedef struct {
/* 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