summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbm42561 <none@none>2007-03-13 16:38:14 -0700
committerbm42561 <none@none>2007-03-13 16:38:14 -0700
commitafc2fd2a5a871e36a0a9d4caf75440127f572f5f (patch)
tree98e3cbea749e55de7f8aa40d86f454b6031fd7fc
parent501890288d7a6781332f8ae811fd7bdacfe31e10 (diff)
downloadillumos-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.c5
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)