diff options
author | Haik Aftandilian <Haik.Aftandilian@Sun.COM> | 2010-03-26 14:31:07 -0700 |
---|---|---|
committer | Haik Aftandilian <Haik.Aftandilian@Sun.COM> | 2010-03-26 14:31:07 -0700 |
commit | 183ef8a1713ca188e24d970f22c6f9cc333007fd (patch) | |
tree | be50ce43240c41683bda288eaa247b4b2d5a7462 /usr/src | |
parent | 2dd5848fa9da42f374782814f362e0afda124ecd (diff) | |
download | illumos-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.c | 4 | ||||
-rw-r--r-- | usr/src/uts/sun4v/os/mpo.c | 8 | ||||
-rw-r--r-- | usr/src/uts/sun4v/os/suspend.c | 3 | ||||
-rw-r--r-- | usr/src/uts/sun4v/sys/mpo.h | 4 |
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 |