Lines Matching refs:vbus_ext

76 	PVBUS_EXT vbus_ext;
111 vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK);
112 if (!vbus_ext) {
116 memset(vbus_ext, 0, sizeof(VBUS_EXT));
117 vbus_ext->ext_type = EXT_TYPE_VBUS;
118 ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
122 ldm_for_each_vbus(vbus, vbus_ext) {
124 hba->vbus_ext = vbus_ext;
125 hba->next = vbus_ext->hba_list;
126 vbus_ext->hba_list = hba;
149 static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
156 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
159 ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
161 for (f=vbus_ext->freelist_head; f; f=f->next) {
172 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
202 dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
208 static void hpt_free_mem(PVBUS_EXT vbus_ext)
215 for (f=vbus_ext->freelist_head; f; f=f->next) {
226 p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
231 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
246 dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
251 while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
255 static int hpt_init_vbus(PVBUS_EXT vbus_ext)
259 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
265 ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
289 static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
297 hpt_lock_vbus(vbus_ext);
308 hpt_unlock_vbus(vbus_ext);
322 while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
334 hpt_unlock_vbus(vbus_ext);
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 vbus_ext->worker.ta_context = 0;
357 if (hpt_flush_vdev(vbus_ext, vd))
358 hpt_flush_vdev(vbus_ext, vd);
362 hpt_lock_vbus(vbus_ext);
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);
381 free(vbus_ext, M_DEVBUF);
385 static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
389 tasks = vbus_ext->tasks;
390 vbus_ext->tasks = 0;
396 t->func(vbus_ext->vbus, t->data);
400 static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
402 if(vbus_ext){
403 hpt_lock_vbus(vbus_ext);
404 __hpt_do_tasks(vbus_ext);
405 hpt_unlock_vbus(vbus_ext);
414 static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
416 POS_CMDEXT p = vbus_ext->cmdext_list;
418 vbus_ext->cmdext_list = p->next;
424 p->next = p->vbus_ext->cmdext_list;
425 p->vbus_ext->cmdext_list = p;
435 ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
474 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
477 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
480 bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
552 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
556 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
568 static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
570 PVBUS vbus = (PVBUS)vbus_ext->vbus;
812 pCmd->priv = ext = cmdext_get(vbus_ext);
843 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
849 error = bus_dmamap_load(vbus_ext->io_dmat,
879 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
884 hpt_assert_vbus_locked(vbus_ext);
890 hpt_lock_vbus(vbus_ext);
891 hpt_scsi_io(vbus_ext, ccb);
892 hpt_unlock_vbus(vbus_ext);
896 hpt_lock_vbus(vbus_ext);
897 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
898 hpt_unlock_vbus(vbus_ext);
902 hpt_scsi_io(vbus_ext, ccb);
906 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
959 PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
960 hpt_lock_vbus(vbus_ext);
961 ldm_intr((PVBUS)vbus_ext->vbus);
962 hpt_unlock_vbus(vbus_ext);
970 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
972 hpt_assert_vbus_locked(vbus_ext);
973 ldm_intr((PVBUS)vbus_ext->vbus);
1000 static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
1006 hpt_lock_vbus(vbus_ext);
1007 ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
1010 if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
1012 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
1013 __hpt_do_tasks(vbus_ext);
1018 hpt_unlock_vbus(vbus_ext);
1024 PVBUS_EXT vbus_ext;
1026 ldm_for_each_vbus(vbus, vbus_ext) {
1027 __hpt_do_ioctl(vbus_ext, ioctl_args);
1068 static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
1097 __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
1102 static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
1110 __hpt_stop_tasks(vbus_ext, ids[i]);
1134 PVBUS_EXT vbus_ext;
1143 ldm_for_each_vbus(vbus, vbus_ext) {
1144 if (hpt_alloc_mem(vbus_ext)) {
1158 ldm_for_each_vbus(vbus, vbus_ext) {
1160 mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
1162 callout_handle_init(&vbus_ext->timer);
1164 callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
1166 if (hpt_init_vbus(vbus_ext)) {
1173 ldm_for_each_vbus(vbus, vbus_ext) {
1188 &vbus_ext->lock, /* lockfuncarg */
1189 &vbus_ext->io_dmat /* tag */))
1200 ext->vbus_ext = vbus_ext;
1201 ext->next = vbus_ext->cmdext_list;
1202 vbus_ext->cmdext_list = ext;
1204 if (bus_dmamap_create(vbus_ext->io_dmat, 0, &ext->dma_map)) {
1209 callout_init_mtx(&ext->timeout, &vbus_ext->lock, 0);
1218 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
1219 vbus_ext, unit_number, &vbus_ext->lock, os_max_queue_comm, /*tagged*/8, devq);
1222 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
1223 vbus_ext, unit_number, &Giant, os_max_queue_comm, /*tagged*/8, devq);
1226 if (!vbus_ext->sim) {
1232 hpt_lock_vbus(vbus_ext);
1233 if (xpt_bus_register(vbus_ext->sim, NULL, 0) != CAM_SUCCESS) {
1234 hpt_unlock_vbus(vbus_ext);
1236 cam_sim_free(vbus_ext->sim, /*free devq*/ TRUE);
1237 vbus_ext->sim = NULL;
1241 if (xpt_create_path(&vbus_ext->path, /*periph */ NULL,
1242 cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD,
1245 hpt_unlock_vbus(vbus_ext);
1247 xpt_bus_deregister(cam_sim_path(vbus_ext->sim));
1248 cam_sim_free(vbus_ext->sim, /*free_devq*/TRUE);
1249 vbus_ext->sim = NULL;
1253 xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
1257 ccb.callback_arg = vbus_ext;
1259 hpt_unlock_vbus(vbus_ext);
1261 for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
1274 NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
1283 vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
1284 hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
1285 if (!vbus_ext->shutdown_eh)
1289 ldm_for_each_vbus(vbus, vbus_ext) {
1290 TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
1291 if (vbus_ext->tasks)
1292 TASK_ENQUEUE(&vbus_ext->worker);
1488 PVBUS_EXT vbus_ext;
1492 ldm_for_each_vbus(vbus, vbus_ext) {
1498 if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(vbus_ext->sim),
1500 if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim),