Lines Matching refs:devi

258 	struct dev_info *devi;  in i_ddi_alloc_node()  local
264 if ((devi = kmem_cache_alloc(ddi_node_cache, flag)) == NULL) { in i_ddi_alloc_node()
269 bzero(devi, sizeof (struct dev_info)); in i_ddi_alloc_node()
272 devi->devi_audit = kmem_zalloc(sizeof (devinfo_audit_t), flag); in i_ddi_alloc_node()
273 if (devi->devi_audit == NULL) in i_ddi_alloc_node()
277 if ((devi->devi_node_name = i_ddi_strdup(node_name, flag)) == NULL) in i_ddi_alloc_node()
281 devi->devi_binding_name = devi->devi_node_name; in i_ddi_alloc_node()
282 devi->devi_major = DDI_MAJOR_T_NONE; /* unbound by default */ in i_ddi_alloc_node()
288 (devi->devi_sys_prop_ptr = i_ddi_prop_list_dup(sys_prop, flag)) in i_ddi_alloc_node()
312 devi->devi_node_attributes = 0; in i_ddi_alloc_node()
315 devi->devi_node_attributes |= DDI_HIDDEN_NODE; in i_ddi_alloc_node()
319 devi->devi_node_attributes |= DDI_HOTPLUG_NODE; in i_ddi_alloc_node()
323 devi->devi_node_attributes |= DDI_HIDDEN_NODE; in i_ddi_alloc_node()
324 devi->devi_node_attributes |= DDI_HOTPLUG_NODE; in i_ddi_alloc_node()
328 sid: devi->devi_node_attributes |= DDI_PERSISTENT; in i_ddi_alloc_node()
334 devi->devi_node_attributes |= DDI_AUTO_ASSIGNED_NODEID; in i_ddi_alloc_node()
335 devi->devi_node_class = DDI_NC_PSEUDO; in i_ddi_alloc_node()
336 if (impl_ddi_alloc_nodeid(&devi->devi_nodeid)) { in i_ddi_alloc_node()
355 devi->devi_nodeid = nodeid; in i_ddi_alloc_node()
356 devi->devi_node_class = DDI_NC_PROM; in i_ddi_alloc_node()
357 devi->devi_node_attributes = DDI_PERSISTENT; in i_ddi_alloc_node()
361 if (ndi_dev_is_persistent_node((dev_info_t *)devi)) { in i_ddi_alloc_node()
372 devi->devi_instance = instance; in i_ddi_alloc_node()
377 devi->devi_parent = DEVI(pdip); in i_ddi_alloc_node()
378 devi->devi_bus_ctl = DEVI(pdip); in i_ddi_alloc_node()
381 "i_ddi_alloc_node: name=%s id=%d\n", node_name, devi->devi_nodeid)); in i_ddi_alloc_node()
383 cv_init(&(devi->devi_cv), NULL, CV_DEFAULT, NULL); in i_ddi_alloc_node()
384 mutex_init(&(devi->devi_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
385 mutex_init(&(devi->devi_pm_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
386 mutex_init(&(devi->devi_pm_busy_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
389 "dip=%p, name=%s", (void *)devi, node_name)); in i_ddi_alloc_node()
391 mutex_init(&(devi->devi_ct_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
392 cv_init(&(devi->devi_ct_cv), NULL, CV_DEFAULT, NULL); in i_ddi_alloc_node()
393 devi->devi_ct_count = -1; /* counter not in use if -1 */ in i_ddi_alloc_node()
394 list_create(&(devi->devi_ct), sizeof (cont_device_t), in i_ddi_alloc_node()
397 i_ddi_set_node_state((dev_info_t *)devi, DS_PROTO); in i_ddi_alloc_node()
398 da_log_enter((dev_info_t *)devi); in i_ddi_alloc_node()
399 return ((dev_info_t *)devi); in i_ddi_alloc_node()
402 if (devi->devi_sys_prop_ptr) in i_ddi_alloc_node()
403 i_ddi_prop_list_delete(devi->devi_sys_prop_ptr); in i_ddi_alloc_node()
404 if (devi->devi_node_name) in i_ddi_alloc_node()
405 kmem_free(devi->devi_node_name, strlen(node_name) + 1); in i_ddi_alloc_node()
406 if (devi->devi_audit) in i_ddi_alloc_node()
407 kmem_free(devi->devi_audit, sizeof (devinfo_audit_t)); in i_ddi_alloc_node()
408 kmem_cache_free(ddi_node_cache, devi); in i_ddi_alloc_node()
420 struct dev_info *devi = DEVI(dip); in i_ddi_free_node() local
423 ASSERT(devi->devi_ref == 0); in i_ddi_free_node()
424 ASSERT(devi->devi_addr == NULL); in i_ddi_free_node()
425 ASSERT(devi->devi_node_state == DS_PROTO); in i_ddi_free_node()
426 ASSERT(devi->devi_child == NULL); in i_ddi_free_node()
427 ASSERT(devi->devi_hp_hdlp == NULL); in i_ddi_free_node()
430 if (devi->devi_addr_buf) in i_ddi_free_node()
431 kmem_free(devi->devi_addr_buf, 2 * MAXNAMELEN); in i_ddi_free_node()
453 if (devi->devi_sys_prop_ptr) in i_ddi_free_node()
454 i_ddi_prop_list_delete(devi->devi_sys_prop_ptr); in i_ddi_free_node()
455 if (devi->devi_hw_prop_ptr) in i_ddi_free_node()
456 i_ddi_prop_list_delete(devi->devi_hw_prop_ptr); in i_ddi_free_node()
463 if (devi->devi_audit) { in i_ddi_free_node()
464 kmem_free(devi->devi_audit, sizeof (devinfo_audit_t)); in i_ddi_free_node()
466 if (devi->devi_device_class) in i_ddi_free_node()
467 kmem_free(devi->devi_device_class, in i_ddi_free_node()
468 strlen(devi->devi_device_class) + 1); in i_ddi_free_node()
469 cv_destroy(&(devi->devi_cv)); in i_ddi_free_node()
470 mutex_destroy(&(devi->devi_lock)); in i_ddi_free_node()
471 mutex_destroy(&(devi->devi_pm_lock)); in i_ddi_free_node()
472 mutex_destroy(&(devi->devi_pm_busy_lock)); in i_ddi_free_node()
477 ASSERT(devi->devi_ct_count == -1); in i_ddi_free_node()
478 ASSERT(list_is_empty(&(devi->devi_ct))); in i_ddi_free_node()
479 cv_destroy(&(devi->devi_ct_cv)); in i_ddi_free_node()
480 list_destroy(&(devi->devi_ct)); in i_ddi_free_node()
482 mutex_destroy(&(devi->devi_ct_lock)); in i_ddi_free_node()
484 "dip=%p, name=%s", (void *)dip, devi->devi_node_name)); in i_ddi_free_node()
486 kmem_free(devi->devi_node_name, strlen(devi->devi_node_name) + 1); in i_ddi_free_node()
489 if (devi->devi_ev_path) in i_ddi_free_node()
490 kmem_free(devi->devi_ev_path, MAXPATHLEN); in i_ddi_free_node()
492 kmem_cache_free(ddi_node_cache, devi); in i_ddi_free_node()
632 struct dev_info *devi = DEVI(dip); in link_node() local
633 struct dev_info *parent = devi->devi_parent; in link_node()
639 parent->devi_node_name, devi->devi_node_name)); in link_node()
675 if (strcmp(devi->devi_binding_name, "scsi_vhci") == 0) { in link_node()
679 devi->devi_sibling = parent->devi_child; in link_node()
680 parent->devi_child = devi; in link_node()
681 } else if (strcmp(devi->devi_binding_name, "ib") == 0) { in link_node()
707 struct dev_info *devi = DEVI(dip); in unlink_node() local
708 struct dev_info *parent = devi->devi_parent; in unlink_node()
713 ASSERT(devi->devi_node_state == DS_LINKED); in unlink_node()
719 if (devi->devi_ref || i_ddi_remove_devimap(dip) != DDI_SUCCESS) in unlink_node()
734 *dipp = (dev_info_t *)(devi->devi_sibling); in unlink_node()
735 devi->devi_sibling = NULL; in unlink_node()
738 devi->devi_node_name)); in unlink_node()
780 struct dev_info *devi = DEVI(dip); in bind_node() local
783 ASSERT(devi->devi_node_state == DS_LINKED); in bind_node()
800 devi->devi_major = major; in bind_node()
804 devi->devi_node_name, p)); in bind_node()
1915 struct dev_info *devi = DEVI(dip); in ndi_devi_enter() local
1922 mutex_enter(&devi->devi_lock); in ndi_devi_enter()
1923 if (devi->devi_busy_thread == curthread) { in ndi_devi_enter()
1924 devi->devi_circular++; in ndi_devi_enter()
1926 while (DEVI_BUSY_CHANGING(devi) && !panicstr) in ndi_devi_enter()
1927 cv_wait(&(devi->devi_cv), &(devi->devi_lock)); in ndi_devi_enter()
1929 mutex_exit(&devi->devi_lock); in ndi_devi_enter()
1932 devi->devi_flags |= DEVI_BUSY; in ndi_devi_enter()
1933 devi->devi_busy_thread = curthread; in ndi_devi_enter()
1935 *circular = devi->devi_circular; in ndi_devi_enter()
1936 mutex_exit(&devi->devi_lock); in ndi_devi_enter()
1945 struct dev_info *devi = DEVI(dip); in ndi_devi_exit() local
1952 mutex_enter(&(devi->devi_lock)); in ndi_devi_exit()
1954 devi->devi_circular--; in ndi_devi_exit()
1956 devi->devi_flags &= ~DEVI_BUSY; in ndi_devi_exit()
1957 ASSERT(devi->devi_busy_thread == curthread); in ndi_devi_exit()
1958 devi->devi_busy_thread = NULL; in ndi_devi_exit()
1959 cv_broadcast(&(devi->devi_cv)); in ndi_devi_exit()
1961 mutex_exit(&(devi->devi_lock)); in ndi_devi_exit()
1987 struct dev_info *devi = DEVI(dip); in ndi_devi_exit_and_wait() local
2000 mutex_enter(&(devi->devi_lock)); in ndi_devi_exit_and_wait()
2001 devi->devi_flags &= ~DEVI_BUSY; in ndi_devi_exit_and_wait()
2002 ASSERT(devi->devi_busy_thread == curthread); in ndi_devi_exit_and_wait()
2003 devi->devi_busy_thread = NULL; in ndi_devi_exit_and_wait()
2004 cv_broadcast(&(devi->devi_cv)); in ndi_devi_exit_and_wait()
2007 (void) cv_timedwait(&devi->devi_cv, &(devi->devi_lock), end_time); in ndi_devi_exit_and_wait()
2008 mutex_exit(&(devi->devi_lock)); in ndi_devi_exit_and_wait()
2018 struct dev_info *devi = DEVI(dip); in ndi_devi_tryenter() local
2021 mutex_enter(&devi->devi_lock); in ndi_devi_tryenter()
2022 if (devi->devi_busy_thread == (void *)curthread) { in ndi_devi_tryenter()
2023 devi->devi_circular++; in ndi_devi_tryenter()
2025 if (!DEVI_BUSY_CHANGING(devi)) { in ndi_devi_tryenter()
2026 devi->devi_flags |= DEVI_BUSY; in ndi_devi_tryenter()
2027 devi->devi_busy_thread = (void *)curthread; in ndi_devi_tryenter()
2032 *circular = devi->devi_circular; in ndi_devi_tryenter()
2033 mutex_exit(&devi->devi_lock); in ndi_devi_tryenter()
2768 struct dev_info *devi = DEVI(dip); in ddi_compatible_driver_major() local
2792 if (devi->devi_flags & DEVI_REBIND) { in ddi_compatible_driver_major()
2793 p = devi->devi_rebinding_name; in ddi_compatible_driver_major()
2805 mutex_enter(&devi->devi_lock); in ddi_compatible_driver_major()
2806 devi->devi_flags &= ~DEVI_REBIND; in ddi_compatible_driver_major()
2807 mutex_exit(&devi->devi_lock); in ddi_compatible_driver_major()
2812 compat = (void *)(devi->devi_compat_names); in ddi_compatible_driver_major()
2813 len = devi->devi_compat_length; in ddi_compatible_driver_major()
3151 debug_dtree(dev_info_t *devi, struct dev_info *adevi, char *service) in debug_dtree() argument
3167 ddi_deviname(devi, buf), service, adeviname); in debug_dtree()
3176 ddi_optimize_dtree(dev_info_t *devi) in ddi_optimize_dtree() argument
3181 pdevi = DEVI(devi)->devi_parent; in ddi_optimize_dtree()
3187 DEVI(devi)->devi_bus_map_fault = pdevi; in ddi_optimize_dtree()
3188 DEVI(devi)->devi_bus_dma_allochdl = pdevi; in ddi_optimize_dtree()
3189 DEVI(devi)->devi_bus_dma_freehdl = pdevi; in ddi_optimize_dtree()
3190 DEVI(devi)->devi_bus_dma_bindhdl = pdevi; in ddi_optimize_dtree()
3191 DEVI(devi)->devi_bus_dma_bindfunc = in ddi_optimize_dtree()
3193 DEVI(devi)->devi_bus_dma_unbindhdl = pdevi; in ddi_optimize_dtree()
3194 DEVI(devi)->devi_bus_dma_unbindfunc = in ddi_optimize_dtree()
3196 DEVI(devi)->devi_bus_dma_flush = pdevi; in ddi_optimize_dtree()
3197 DEVI(devi)->devi_bus_dma_win = pdevi; in ddi_optimize_dtree()
3198 DEVI(devi)->devi_bus_dma_ctl = pdevi; in ddi_optimize_dtree()
3199 DEVI(devi)->devi_bus_ctl = pdevi; in ddi_optimize_dtree()
3209 DEVI(devi)->devi_bus_map_fault = pdevi->devi_bus_map_fault; in ddi_optimize_dtree()
3210 debug_dtree(devi, DEVI(devi)->devi_bus_map_fault, in ddi_optimize_dtree()
3215 DEVI(devi)->devi_bus_dma_allochdl = in ddi_optimize_dtree()
3217 debug_dtree(devi, DEVI(devi)->devi_bus_dma_allochdl, in ddi_optimize_dtree()
3222 DEVI(devi)->devi_bus_dma_freehdl = pdevi->devi_bus_dma_freehdl; in ddi_optimize_dtree()
3223 debug_dtree(devi, DEVI(devi)->devi_bus_dma_freehdl, in ddi_optimize_dtree()
3228 DEVI(devi)->devi_bus_dma_bindhdl = pdevi->devi_bus_dma_bindhdl; in ddi_optimize_dtree()
3229 DEVI(devi)->devi_bus_dma_bindfunc = in ddi_optimize_dtree()
3232 debug_dtree(devi, DEVI(devi)->devi_bus_dma_bindhdl, in ddi_optimize_dtree()
3237 DEVI(devi)->devi_bus_dma_unbindhdl = in ddi_optimize_dtree()
3239 DEVI(devi)->devi_bus_dma_unbindfunc = in ddi_optimize_dtree()
3242 debug_dtree(devi, DEVI(devi)->devi_bus_dma_unbindhdl, in ddi_optimize_dtree()
3247 DEVI(devi)->devi_bus_dma_flush = pdevi->devi_bus_dma_flush; in ddi_optimize_dtree()
3248 debug_dtree(devi, DEVI(devi)->devi_bus_dma_flush, in ddi_optimize_dtree()
3253 DEVI(devi)->devi_bus_dma_win = pdevi->devi_bus_dma_win; in ddi_optimize_dtree()
3254 debug_dtree(devi, DEVI(devi)->devi_bus_dma_win, in ddi_optimize_dtree()
3259 DEVI(devi)->devi_bus_dma_ctl = pdevi->devi_bus_dma_ctl; in ddi_optimize_dtree()
3260 debug_dtree(devi, DEVI(devi)->devi_bus_dma_ctl, "bus_dma_ctl"); in ddi_optimize_dtree()
3264 DEVI(devi)->devi_bus_ctl = pdevi->devi_bus_ctl; in ddi_optimize_dtree()
3265 debug_dtree(devi, DEVI(devi)->devi_bus_ctl, "bus_ctl"); in ddi_optimize_dtree()
4069 struct dev_info *devi = DEVI(dip); in should_implement_quiesce() local
4098 if (skip_non_hw && devi->devi_hw_prop_ptr == NULL) in should_implement_quiesce()
5932 struct dev_info *devi = DEVI(dip); in devi_detach_node() local
5934 if (devi->devi_ev_path == NULL) { in devi_detach_node()
5935 devi->devi_ev_path = kmem_alloc(MAXPATHLEN, KM_SLEEP); in devi_detach_node()
5936 (void) ddi_pathname(dip, devi->devi_ev_path); in devi_detach_node()
5940 devi->devi_ev_path); in devi_detach_node()
5947 devi->devi_ev_instance = ddi_get_instance(dip); in devi_detach_node()