diff options
author | bm42561 <none@none> | 2007-03-13 16:38:14 -0700 |
---|---|---|
committer | bm42561 <none@none> | 2007-03-13 16:38:14 -0700 |
commit | afc2fd2a5a871e36a0a9d4caf75440127f572f5f (patch) | |
tree | 98e3cbea749e55de7f8aa40d86f454b6031fd7fc | |
parent | 501890288d7a6781332f8ae811fd7bdacfe31e10 (diff) | |
download | illumos-gate-afc2fd2a5a871e36a0a9d4caf75440127f572f5f.tar.gz |
6479888 dtrace_detach() deadlocks with cpu_configure() via cpu_lock
-rw-r--r-- | usr/src/uts/sun4u/ngdr/io/dr_cpu.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/usr/src/uts/sun4u/ngdr/io/dr_cpu.c b/usr/src/uts/sun4u/ngdr/io/dr_cpu.c index 0c6b037777..547ad10816 100644 --- a/usr/src/uts/sun4u/ngdr/io/dr_cpu.c +++ b/usr/src/uts/sun4u/ngdr/io/dr_cpu.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -319,6 +319,7 @@ dr_pre_attach_cpu(dr_handle_t *hp, dr_common_unit_t **devlist, int devnum) * devinfo tree branches */ dr_lock_status(hp->h_bd); + ndi_devi_enter(ddi_root_node(), (int *)(&hp->h_ndi)); mutex_enter(&cpu_lock); return (0); @@ -368,7 +369,6 @@ dr_post_attach_cpu(dr_handle_t *hp, dr_common_unit_t **devlist, int devnum) static fn_t f = "dr_post_attach_cpu"; PR_CPU("%s...\n", f); - hp->h_ndi = 0; /* Startup and online newly-attached CPUs */ for (i = 0; i < devnum; i++) { @@ -404,6 +404,7 @@ dr_post_attach_cpu(dr_handle_t *hp, dr_common_unit_t **devlist, int devnum) } mutex_exit(&cpu_lock); + ndi_devi_exit(ddi_root_node(), hp->h_ndi); dr_unlock_status(hp->h_bd); if (errflag) |