Lines Matching defs:vbus_ext
85 PVBUS_EXT vbus_ext;
118 vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK |
120 vbus_ext->ext_type = EXT_TYPE_VBUS;
121 ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
125 ldm_for_each_vbus(vbus, vbus_ext) {
127 hba->vbus_ext = vbus_ext;
128 hba->next = vbus_ext->hba_list;
129 vbus_ext->hba_list = hba;
152 static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
159 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
162 ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
164 for (f=vbus_ext->freelist_head; f; f=f->next) {
175 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
205 dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
211 static void hpt_free_mem(PVBUS_EXT vbus_ext)
218 for (f=vbus_ext->freelist_head; f; f=f->next) {
229 p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
234 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
249 dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
254 while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
258 static int hpt_init_vbus(PVBUS_EXT vbus_ext)
262 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
268 ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
292 static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
300 hpt_assert_vbus_locked(vbus_ext);
324 while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
339 static void hpt_stop_tasks(PVBUS_EXT vbus_ext);
340 static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
342 PVBUS vbus = (PVBUS)vbus_ext->vbus;
349 hpt_stop_tasks(vbus_ext);
350 hpt_lock_vbus(vbus_ext);
351 vbus_ext->worker.ta_context = 0;
358 if (hpt_flush_vdev(vbus_ext, vd))
359 hpt_flush_vdev(vbus_ext, vd);
364 hpt_unlock_vbus(vbus_ext);
368 for (hba=vbus_ext->hba_list; hba; hba=hba->next)
371 hpt_free_mem(vbus_ext);
373 while ((hba=vbus_ext->hba_list)) {
374 vbus_ext->hba_list = hba->next;
378 callout_drain(&vbus_ext->timer);
379 mtx_destroy(&vbus_ext->lock);
380 free(vbus_ext, M_DEVBUF);
384 static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
388 tasks = vbus_ext->tasks;
389 vbus_ext->tasks = 0;
395 t->func(vbus_ext->vbus, t->data);
399 static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
401 if(vbus_ext){
402 hpt_lock_vbus(vbus_ext);
403 __hpt_do_tasks(vbus_ext);
404 hpt_unlock_vbus(vbus_ext);
413 static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
415 POS_CMDEXT p = vbus_ext->cmdext_list;
417 vbus_ext->cmdext_list = p->next;
423 p->next = p->vbus_ext->cmdext_list;
424 p->vbus_ext->cmdext_list = p;
434 ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
471 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
474 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
477 bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
524 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
528 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
536 static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
538 PVBUS vbus = (PVBUS)vbus_ext->vbus;
709 pCmd->priv = ext = cmdext_get(vbus_ext);
717 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
745 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
749 hpt_assert_vbus_locked(vbus_ext);
753 hpt_scsi_io(vbus_ext, ccb);
757 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
807 PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
808 hpt_lock_vbus(vbus_ext);
809 ldm_intr((PVBUS)vbus_ext->vbus);
810 hpt_unlock_vbus(vbus_ext);
815 PVBUS_EXT vbus_ext = cam_sim_softc(sim);
816 hpt_assert_vbus_locked(vbus_ext);
817 ldm_intr((PVBUS)vbus_ext->vbus);
843 static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
849 hpt_lock_vbus(vbus_ext);
850 ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
853 if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
855 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
856 __hpt_do_tasks(vbus_ext);
861 hpt_unlock_vbus(vbus_ext);
867 PVBUS_EXT vbus_ext;
869 ldm_for_each_vbus(vbus, vbus_ext) {
870 __hpt_do_ioctl(vbus_ext, ioctl_args);
911 static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
940 __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
945 static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
953 __hpt_stop_tasks(vbus_ext, ids[i]);
977 PVBUS_EXT vbus_ext;
986 ldm_for_each_vbus(vbus, vbus_ext) {
987 if (hpt_alloc_mem(vbus_ext)) {
1001 ldm_for_each_vbus(vbus, vbus_ext) {
1003 mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
1004 callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
1005 if (hpt_init_vbus(vbus_ext)) {
1012 ldm_for_each_vbus(vbus, vbus_ext) {
1027 &vbus_ext->lock, /* lockfuncarg */
1028 &vbus_ext->io_dmat /* tag */))
1035 ext->vbus_ext = vbus_ext;
1036 ext->next = vbus_ext->cmdext_list;
1037 vbus_ext->cmdext_list = ext;
1039 if (bus_dmamap_create(vbus_ext->io_dmat, 0, &ext->dma_map)) {
1043 callout_init_mtx(&ext->timeout, &vbus_ext->lock, 0);
1051 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
1052 vbus_ext, 0, &vbus_ext->lock, os_max_queue_comm,
1055 if (!vbus_ext->sim) {
1061 hpt_lock_vbus(vbus_ext);
1062 if (xpt_bus_register(vbus_ext->sim, NULL, 0) != CAM_SUCCESS) {
1064 cam_sim_free(vbus_ext->sim, /*free devq*/ TRUE);
1065 hpt_unlock_vbus(vbus_ext);
1066 vbus_ext->sim = NULL;
1070 if (xpt_create_path(&vbus_ext->path, /*periph */ NULL,
1071 cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD,
1075 xpt_bus_deregister(cam_sim_path(vbus_ext->sim));
1076 cam_sim_free(vbus_ext->sim, /*free_devq*/TRUE);
1077 hpt_unlock_vbus(vbus_ext);
1078 vbus_ext->sim = NULL;
1081 hpt_unlock_vbus(vbus_ext);
1084 xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
1088 ccb.callback_arg = vbus_ext;
1091 for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
1101 NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
1109 vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
1110 hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
1111 if (!vbus_ext->shutdown_eh)
1115 ldm_for_each_vbus(vbus, vbus_ext) {
1116 TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
1117 if (vbus_ext->tasks)
1118 TASK_ENQUEUE(&vbus_ext->worker);
1299 PVBUS_EXT vbus_ext;
1301 ldm_for_each_vbus(vbus, vbus_ext) {
1305 cam_sim_path(vbus_ext->sim),