Lines Matching refs:devi
255 struct dev_info *devi; in i_ddi_alloc_node() local
261 if ((devi = kmem_cache_alloc(ddi_node_cache, flag)) == NULL) { in i_ddi_alloc_node()
266 bzero(devi, sizeof (struct dev_info)); in i_ddi_alloc_node()
269 devi->devi_audit = kmem_zalloc(sizeof (devinfo_audit_t), flag); in i_ddi_alloc_node()
270 if (devi->devi_audit == NULL) in i_ddi_alloc_node()
274 if ((devi->devi_node_name = i_ddi_strdup(node_name, flag)) == NULL) in i_ddi_alloc_node()
278 devi->devi_binding_name = devi->devi_node_name; in i_ddi_alloc_node()
279 devi->devi_major = DDI_MAJOR_T_NONE; /* unbound by default */ in i_ddi_alloc_node()
285 (devi->devi_sys_prop_ptr = i_ddi_prop_list_dup(sys_prop, flag)) in i_ddi_alloc_node()
309 devi->devi_node_attributes = 0; in i_ddi_alloc_node()
312 devi->devi_node_attributes |= DDI_HIDDEN_NODE; in i_ddi_alloc_node()
316 devi->devi_node_attributes |= DDI_HOTPLUG_NODE; in i_ddi_alloc_node()
320 devi->devi_node_attributes |= DDI_HIDDEN_NODE; in i_ddi_alloc_node()
321 devi->devi_node_attributes |= DDI_HOTPLUG_NODE; in i_ddi_alloc_node()
325 sid: devi->devi_node_attributes |= DDI_PERSISTENT; in i_ddi_alloc_node()
331 devi->devi_node_attributes |= DDI_AUTO_ASSIGNED_NODEID; in i_ddi_alloc_node()
332 devi->devi_node_class = DDI_NC_PSEUDO; in i_ddi_alloc_node()
333 if (impl_ddi_alloc_nodeid(&devi->devi_nodeid)) { in i_ddi_alloc_node()
352 devi->devi_nodeid = nodeid; in i_ddi_alloc_node()
353 devi->devi_node_class = DDI_NC_PROM; in i_ddi_alloc_node()
354 devi->devi_node_attributes = DDI_PERSISTENT; in i_ddi_alloc_node()
358 if (ndi_dev_is_persistent_node((dev_info_t *)devi)) { in i_ddi_alloc_node()
369 devi->devi_instance = instance; in i_ddi_alloc_node()
374 devi->devi_parent = DEVI(pdip); in i_ddi_alloc_node()
375 devi->devi_bus_ctl = DEVI(pdip); in i_ddi_alloc_node()
378 "i_ddi_alloc_node: name=%s id=%d\n", node_name, devi->devi_nodeid)); in i_ddi_alloc_node()
380 cv_init(&(devi->devi_cv), NULL, CV_DEFAULT, NULL); in i_ddi_alloc_node()
381 mutex_init(&(devi->devi_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
382 mutex_init(&(devi->devi_pm_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
383 mutex_init(&(devi->devi_pm_busy_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
386 "dip=%p, name=%s", (void *)devi, node_name)); in i_ddi_alloc_node()
388 mutex_init(&(devi->devi_ct_lock), NULL, MUTEX_DEFAULT, NULL); in i_ddi_alloc_node()
389 cv_init(&(devi->devi_ct_cv), NULL, CV_DEFAULT, NULL); in i_ddi_alloc_node()
390 devi->devi_ct_count = -1; /* counter not in use if -1 */ in i_ddi_alloc_node()
391 list_create(&(devi->devi_ct), sizeof (cont_device_t), in i_ddi_alloc_node()
394 i_ddi_set_node_state((dev_info_t *)devi, DS_PROTO); in i_ddi_alloc_node()
395 da_log_enter((dev_info_t *)devi); in i_ddi_alloc_node()
396 return ((dev_info_t *)devi); in i_ddi_alloc_node()
399 if (devi->devi_sys_prop_ptr) in i_ddi_alloc_node()
400 i_ddi_prop_list_delete(devi->devi_sys_prop_ptr); in i_ddi_alloc_node()
401 if (devi->devi_node_name) in i_ddi_alloc_node()
402 kmem_free(devi->devi_node_name, strlen(node_name) + 1); in i_ddi_alloc_node()
403 if (devi->devi_audit) in i_ddi_alloc_node()
404 kmem_free(devi->devi_audit, sizeof (devinfo_audit_t)); in i_ddi_alloc_node()
405 kmem_cache_free(ddi_node_cache, devi); in i_ddi_alloc_node()
417 struct dev_info *devi = DEVI(dip); in i_ddi_free_node() local
420 ASSERT(devi->devi_ref == 0); in i_ddi_free_node()
421 ASSERT(devi->devi_addr == NULL); in i_ddi_free_node()
422 ASSERT(devi->devi_node_state == DS_PROTO); in i_ddi_free_node()
423 ASSERT(devi->devi_child == NULL); in i_ddi_free_node()
424 ASSERT(devi->devi_hp_hdlp == NULL); in i_ddi_free_node()
427 if (devi->devi_addr_buf) in i_ddi_free_node()
428 kmem_free(devi->devi_addr_buf, 2 * MAXNAMELEN); in i_ddi_free_node()
450 if (devi->devi_sys_prop_ptr) in i_ddi_free_node()
451 i_ddi_prop_list_delete(devi->devi_sys_prop_ptr); in i_ddi_free_node()
452 if (devi->devi_hw_prop_ptr) in i_ddi_free_node()
453 i_ddi_prop_list_delete(devi->devi_hw_prop_ptr); in i_ddi_free_node()
460 if (devi->devi_audit) { in i_ddi_free_node()
461 kmem_free(devi->devi_audit, sizeof (devinfo_audit_t)); in i_ddi_free_node()
463 if (devi->devi_device_class) in i_ddi_free_node()
464 kmem_free(devi->devi_device_class, in i_ddi_free_node()
465 strlen(devi->devi_device_class) + 1); in i_ddi_free_node()
466 cv_destroy(&(devi->devi_cv)); in i_ddi_free_node()
467 mutex_destroy(&(devi->devi_lock)); in i_ddi_free_node()
468 mutex_destroy(&(devi->devi_pm_lock)); in i_ddi_free_node()
469 mutex_destroy(&(devi->devi_pm_busy_lock)); in i_ddi_free_node()
474 ASSERT(devi->devi_ct_count == -1); in i_ddi_free_node()
475 ASSERT(list_is_empty(&(devi->devi_ct))); in i_ddi_free_node()
476 cv_destroy(&(devi->devi_ct_cv)); in i_ddi_free_node()
477 list_destroy(&(devi->devi_ct)); in i_ddi_free_node()
479 mutex_destroy(&(devi->devi_ct_lock)); in i_ddi_free_node()
481 "dip=%p, name=%s", (void *)dip, devi->devi_node_name)); in i_ddi_free_node()
483 kmem_free(devi->devi_node_name, strlen(devi->devi_node_name) + 1); in i_ddi_free_node()
486 if (devi->devi_ev_path) in i_ddi_free_node()
487 kmem_free(devi->devi_ev_path, MAXPATHLEN); in i_ddi_free_node()
489 kmem_cache_free(ddi_node_cache, devi); in i_ddi_free_node()
629 struct dev_info *devi = DEVI(dip); in link_node() local
630 struct dev_info *parent = devi->devi_parent; in link_node()
636 parent->devi_node_name, devi->devi_node_name)); in link_node()
672 if (strcmp(devi->devi_binding_name, "scsi_vhci") == 0) { in link_node()
676 devi->devi_sibling = parent->devi_child; in link_node()
677 parent->devi_child = devi; in link_node()
678 } else if (strcmp(devi->devi_binding_name, "ib") == 0) { in link_node()
704 struct dev_info *devi = DEVI(dip); in unlink_node() local
705 struct dev_info *parent = devi->devi_parent; in unlink_node()
710 ASSERT(devi->devi_node_state == DS_LINKED); in unlink_node()
716 if (devi->devi_ref || i_ddi_remove_devimap(dip) != DDI_SUCCESS) in unlink_node()
731 *dipp = (dev_info_t *)(devi->devi_sibling); in unlink_node()
732 devi->devi_sibling = NULL; in unlink_node()
735 devi->devi_node_name)); in unlink_node()
777 struct dev_info *devi = DEVI(dip); in bind_node() local
780 ASSERT(devi->devi_node_state == DS_LINKED); in bind_node()
797 devi->devi_major = major; in bind_node()
801 devi->devi_node_name, p)); in bind_node()
1912 struct dev_info *devi = DEVI(dip); in ndi_devi_enter() local
1919 mutex_enter(&devi->devi_lock); in ndi_devi_enter()
1920 if (devi->devi_busy_thread == curthread) { in ndi_devi_enter()
1921 devi->devi_circular++; in ndi_devi_enter()
1923 while (DEVI_BUSY_CHANGING(devi) && !panicstr) in ndi_devi_enter()
1924 cv_wait(&(devi->devi_cv), &(devi->devi_lock)); in ndi_devi_enter()
1926 mutex_exit(&devi->devi_lock); in ndi_devi_enter()
1929 devi->devi_flags |= DEVI_BUSY; in ndi_devi_enter()
1930 devi->devi_busy_thread = curthread; in ndi_devi_enter()
1932 *circular = devi->devi_circular; in ndi_devi_enter()
1933 mutex_exit(&devi->devi_lock); in ndi_devi_enter()
1942 struct dev_info *devi = DEVI(dip); in ndi_devi_exit() local
1949 mutex_enter(&(devi->devi_lock)); in ndi_devi_exit()
1951 devi->devi_circular--; in ndi_devi_exit()
1953 devi->devi_flags &= ~DEVI_BUSY; in ndi_devi_exit()
1954 ASSERT(devi->devi_busy_thread == curthread); in ndi_devi_exit()
1955 devi->devi_busy_thread = NULL; in ndi_devi_exit()
1956 cv_broadcast(&(devi->devi_cv)); in ndi_devi_exit()
1958 mutex_exit(&(devi->devi_lock)); in ndi_devi_exit()
1984 struct dev_info *devi = DEVI(dip); in ndi_devi_exit_and_wait() local
1997 mutex_enter(&(devi->devi_lock)); in ndi_devi_exit_and_wait()
1998 devi->devi_flags &= ~DEVI_BUSY; in ndi_devi_exit_and_wait()
1999 ASSERT(devi->devi_busy_thread == curthread); in ndi_devi_exit_and_wait()
2000 devi->devi_busy_thread = NULL; in ndi_devi_exit_and_wait()
2001 cv_broadcast(&(devi->devi_cv)); in ndi_devi_exit_and_wait()
2004 (void) cv_timedwait(&devi->devi_cv, &(devi->devi_lock), end_time); in ndi_devi_exit_and_wait()
2005 mutex_exit(&(devi->devi_lock)); in ndi_devi_exit_and_wait()
2015 struct dev_info *devi = DEVI(dip); in ndi_devi_tryenter() local
2018 mutex_enter(&devi->devi_lock); in ndi_devi_tryenter()
2019 if (devi->devi_busy_thread == (void *)curthread) { in ndi_devi_tryenter()
2020 devi->devi_circular++; in ndi_devi_tryenter()
2022 if (!DEVI_BUSY_CHANGING(devi)) { in ndi_devi_tryenter()
2023 devi->devi_flags |= DEVI_BUSY; in ndi_devi_tryenter()
2024 devi->devi_busy_thread = (void *)curthread; in ndi_devi_tryenter()
2029 *circular = devi->devi_circular; in ndi_devi_tryenter()
2030 mutex_exit(&devi->devi_lock); in ndi_devi_tryenter()
2765 struct dev_info *devi = DEVI(dip); in ddi_compatible_driver_major() local
2789 if (devi->devi_flags & DEVI_REBIND) { in ddi_compatible_driver_major()
2790 p = devi->devi_rebinding_name; in ddi_compatible_driver_major()
2802 mutex_enter(&devi->devi_lock); in ddi_compatible_driver_major()
2803 devi->devi_flags &= ~DEVI_REBIND; in ddi_compatible_driver_major()
2804 mutex_exit(&devi->devi_lock); in ddi_compatible_driver_major()
2809 compat = (void *)(devi->devi_compat_names); in ddi_compatible_driver_major()
2810 len = devi->devi_compat_length; in ddi_compatible_driver_major()
3148 debug_dtree(dev_info_t *devi, struct dev_info *adevi, char *service) in debug_dtree() argument
3164 ddi_deviname(devi, buf), service, adeviname); in debug_dtree()
3173 ddi_optimize_dtree(dev_info_t *devi) in ddi_optimize_dtree() argument
3178 pdevi = DEVI(devi)->devi_parent; in ddi_optimize_dtree()
3184 DEVI(devi)->devi_bus_map_fault = pdevi; in ddi_optimize_dtree()
3185 DEVI(devi)->devi_bus_dma_map = pdevi; in ddi_optimize_dtree()
3186 DEVI(devi)->devi_bus_dma_allochdl = pdevi; in ddi_optimize_dtree()
3187 DEVI(devi)->devi_bus_dma_freehdl = pdevi; in ddi_optimize_dtree()
3188 DEVI(devi)->devi_bus_dma_bindhdl = pdevi; in ddi_optimize_dtree()
3189 DEVI(devi)->devi_bus_dma_bindfunc = in ddi_optimize_dtree()
3191 DEVI(devi)->devi_bus_dma_unbindhdl = pdevi; in ddi_optimize_dtree()
3192 DEVI(devi)->devi_bus_dma_unbindfunc = in ddi_optimize_dtree()
3194 DEVI(devi)->devi_bus_dma_flush = pdevi; in ddi_optimize_dtree()
3195 DEVI(devi)->devi_bus_dma_win = pdevi; in ddi_optimize_dtree()
3196 DEVI(devi)->devi_bus_dma_ctl = pdevi; in ddi_optimize_dtree()
3197 DEVI(devi)->devi_bus_ctl = pdevi; in ddi_optimize_dtree()
3207 DEVI(devi)->devi_bus_map_fault = pdevi->devi_bus_map_fault; in ddi_optimize_dtree()
3208 debug_dtree(devi, DEVI(devi)->devi_bus_map_fault, in ddi_optimize_dtree()
3213 DEVI(devi)->devi_bus_dma_map = pdevi->devi_bus_dma_map; in ddi_optimize_dtree()
3214 debug_dtree(devi, DEVI(devi)->devi_bus_dma_map, "bus_dma_map"); in ddi_optimize_dtree()
3218 DEVI(devi)->devi_bus_dma_allochdl = in ddi_optimize_dtree()
3220 debug_dtree(devi, DEVI(devi)->devi_bus_dma_allochdl, in ddi_optimize_dtree()
3225 DEVI(devi)->devi_bus_dma_freehdl = pdevi->devi_bus_dma_freehdl; in ddi_optimize_dtree()
3226 debug_dtree(devi, DEVI(devi)->devi_bus_dma_freehdl, in ddi_optimize_dtree()
3231 DEVI(devi)->devi_bus_dma_bindhdl = pdevi->devi_bus_dma_bindhdl; in ddi_optimize_dtree()
3232 DEVI(devi)->devi_bus_dma_bindfunc = in ddi_optimize_dtree()
3235 debug_dtree(devi, DEVI(devi)->devi_bus_dma_bindhdl, in ddi_optimize_dtree()
3240 DEVI(devi)->devi_bus_dma_unbindhdl = in ddi_optimize_dtree()
3242 DEVI(devi)->devi_bus_dma_unbindfunc = in ddi_optimize_dtree()
3245 debug_dtree(devi, DEVI(devi)->devi_bus_dma_unbindhdl, in ddi_optimize_dtree()
3250 DEVI(devi)->devi_bus_dma_flush = pdevi->devi_bus_dma_flush; in ddi_optimize_dtree()
3251 debug_dtree(devi, DEVI(devi)->devi_bus_dma_flush, in ddi_optimize_dtree()
3256 DEVI(devi)->devi_bus_dma_win = pdevi->devi_bus_dma_win; in ddi_optimize_dtree()
3257 debug_dtree(devi, DEVI(devi)->devi_bus_dma_win, in ddi_optimize_dtree()
3262 DEVI(devi)->devi_bus_dma_ctl = pdevi->devi_bus_dma_ctl; in ddi_optimize_dtree()
3263 debug_dtree(devi, DEVI(devi)->devi_bus_dma_ctl, "bus_dma_ctl"); in ddi_optimize_dtree()
3267 DEVI(devi)->devi_bus_ctl = pdevi->devi_bus_ctl; in ddi_optimize_dtree()
3268 debug_dtree(devi, DEVI(devi)->devi_bus_ctl, "bus_ctl"); in ddi_optimize_dtree()
4072 struct dev_info *devi = DEVI(dip); in should_implement_quiesce() local
4101 if (skip_non_hw && devi->devi_hw_prop_ptr == NULL) in should_implement_quiesce()
5928 struct dev_info *devi = DEVI(dip); in devi_detach_node() local
5930 if (devi->devi_ev_path == NULL) { in devi_detach_node()
5931 devi->devi_ev_path = kmem_alloc(MAXPATHLEN, KM_SLEEP); in devi_detach_node()
5932 (void) ddi_pathname(dip, devi->devi_ev_path); in devi_detach_node()
5936 devi->devi_ev_path); in devi_detach_node()
5943 devi->devi_ev_instance = ddi_get_instance(dip); in devi_detach_node()