Lines Matching defs:vbus_ext

76 	PVBUS_EXT vbus_ext;
113 vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK);
114 memset(vbus_ext, 0, sizeof(VBUS_EXT));
115 vbus_ext->ext_type = EXT_TYPE_VBUS;
116 ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
120 ldm_for_each_vbus(vbus, vbus_ext) {
122 hba->vbus_ext = vbus_ext;
123 hba->next = vbus_ext->hba_list;
124 vbus_ext->hba_list = hba;
147 static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
154 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
157 ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
159 for (f=vbus_ext->freelist_head; f; f=f->next) {
169 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
199 dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
205 static void hpt_free_mem(PVBUS_EXT vbus_ext)
212 for (f=vbus_ext->freelist_head; f; f=f->next) {
223 p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
228 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
243 dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
248 while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
252 static int hpt_init_vbus(PVBUS_EXT vbus_ext)
256 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
262 ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
286 static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
294 hpt_lock_vbus(vbus_ext);
305 hpt_unlock_vbus(vbus_ext);
319 while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
331 hpt_unlock_vbus(vbus_ext);
336 static void hpt_stop_tasks(PVBUS_EXT vbus_ext);
337 static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
339 PVBUS vbus = (PVBUS)vbus_ext->vbus;
346 hpt_stop_tasks(vbus_ext);
347 vbus_ext->worker.ta_context = 0;
354 if (hpt_flush_vdev(vbus_ext, vd))
355 hpt_flush_vdev(vbus_ext, vd);
359 hpt_lock_vbus(vbus_ext);
361 hpt_unlock_vbus(vbus_ext);
365 for (hba=vbus_ext->hba_list; hba; hba=hba->next)
368 hpt_free_mem(vbus_ext);
370 while ((hba=vbus_ext->hba_list)) {
371 vbus_ext->hba_list = hba->next;
374 callout_drain(&vbus_ext->timer);
375 mtx_destroy(&vbus_ext->lock);
376 free(vbus_ext, M_DEVBUF);
380 static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
384 tasks = vbus_ext->tasks;
385 vbus_ext->tasks = 0;
391 t->func(vbus_ext->vbus, t->data);
395 static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
397 if(vbus_ext){
398 hpt_lock_vbus(vbus_ext);
399 __hpt_do_tasks(vbus_ext);
400 hpt_unlock_vbus(vbus_ext);
409 static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
411 POS_CMDEXT p = vbus_ext->cmdext_list;
413 vbus_ext->cmdext_list = p->next;
419 p->next = p->vbus_ext->cmdext_list;
420 p->vbus_ext->cmdext_list = p;
430 ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
465 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
468 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
471 bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
517 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
521 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
529 static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
531 PVBUS vbus = (PVBUS)vbus_ext->vbus;
774 pCmd->priv = ext = cmdext_get(vbus_ext);
783 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
810 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
814 hpt_assert_vbus_locked(vbus_ext);
818 hpt_scsi_io(vbus_ext, ccb);
822 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
875 PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
876 hpt_lock_vbus(vbus_ext);
877 ldm_intr((PVBUS)vbus_ext->vbus);
878 hpt_unlock_vbus(vbus_ext);
883 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
885 hpt_assert_vbus_locked(vbus_ext);
886 ldm_intr((PVBUS)vbus_ext->vbus);
912 static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
918 hpt_lock_vbus(vbus_ext);
919 ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
922 if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
924 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
925 __hpt_do_tasks(vbus_ext);
930 hpt_unlock_vbus(vbus_ext);
936 PVBUS_EXT vbus_ext;
938 ldm_for_each_vbus(vbus, vbus_ext) {
939 __hpt_do_ioctl(vbus_ext, ioctl_args);
980 static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
1009 __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
1014 static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
1022 __hpt_stop_tasks(vbus_ext, ids[i]);
1046 PVBUS_EXT vbus_ext;
1055 ldm_for_each_vbus(vbus, vbus_ext) {
1056 if (hpt_alloc_mem(vbus_ext)) {
1070 ldm_for_each_vbus(vbus, vbus_ext) {
1072 mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
1073 callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
1074 if (hpt_init_vbus(vbus_ext)) {
1081 ldm_for_each_vbus(vbus, vbus_ext) {
1096 &vbus_ext->lock, /* lockfuncarg */
1097 &vbus_ext->io_dmat /* tag */))
1104 ext->vbus_ext = vbus_ext;
1105 ext->next = vbus_ext->cmdext_list;
1106 vbus_ext->cmdext_list = ext;
1108 if (bus_dmamap_create(vbus_ext->io_dmat, 0, &ext->dma_map)) {
1112 callout_init_mtx(&ext->timeout, &vbus_ext->lock, 0);
1119 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
1120 vbus_ext, unit_number, &vbus_ext->lock, os_max_queue_comm, /*tagged*/8, devq);
1122 if (!vbus_ext->sim) {
1128 hpt_lock_vbus(vbus_ext);
1129 if (xpt_bus_register(vbus_ext->sim, NULL, 0) != CAM_SUCCESS) {
1130 hpt_unlock_vbus(vbus_ext);
1132 cam_sim_free(vbus_ext->sim, /*free devq*/ TRUE);
1133 vbus_ext->sim = NULL;
1137 if (xpt_create_path(&vbus_ext->path, /*periph */ NULL,
1138 cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD,
1141 hpt_unlock_vbus(vbus_ext);
1143 xpt_bus_deregister(cam_sim_path(vbus_ext->sim));
1144 cam_sim_free(vbus_ext->sim, /*free_devq*/TRUE);
1145 vbus_ext->sim = NULL;
1150 xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
1154 ccb.callback_arg = vbus_ext;
1156 hpt_unlock_vbus(vbus_ext);
1158 for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
1167 NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
1176 vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
1177 hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
1178 if (!vbus_ext->shutdown_eh)
1182 ldm_for_each_vbus(vbus, vbus_ext) {
1183 TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
1184 if (vbus_ext->tasks)
1185 TASK_ENQUEUE(&vbus_ext->worker);
1366 PVBUS_EXT vbus_ext;
1368 ldm_for_each_vbus(vbus, vbus_ext) {
1373 if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim),