• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/dev/hptrr/

Lines Matching refs:vbus_ext

87 	PVBUS_EXT vbus_ext;
120 vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK |
122 vbus_ext->ext_type = EXT_TYPE_VBUS;
123 ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
127 ldm_for_each_vbus(vbus, vbus_ext) {
129 hba->vbus_ext = vbus_ext;
130 hba->next = vbus_ext->hba_list;
131 vbus_ext->hba_list = hba;
154 static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
161 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
164 ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
166 for (f=vbus_ext->freelist_head; f; f=f->next) {
177 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
207 dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
213 static void hpt_free_mem(PVBUS_EXT vbus_ext)
220 for (f=vbus_ext->freelist_head; f; f=f->next) {
231 p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
236 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
251 dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
256 while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
260 static int hpt_init_vbus(PVBUS_EXT vbus_ext)
264 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
270 ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
294 static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
302 hpt_assert_vbus_locked(vbus_ext);
326 while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
341 static void hpt_stop_tasks(PVBUS_EXT vbus_ext);
342 static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
344 PVBUS vbus = (PVBUS)vbus_ext->vbus;
351 hpt_stop_tasks(vbus_ext);
352 hpt_lock_vbus(vbus_ext);
353 vbus_ext->worker.ta_context = 0;
360 if (hpt_flush_vdev(vbus_ext, vd))
361 hpt_flush_vdev(vbus_ext, vd);
366 hpt_unlock_vbus(vbus_ext);
370 for (hba=vbus_ext->hba_list; hba; hba=hba->next)
373 hpt_free_mem(vbus_ext);
375 while ((hba=vbus_ext->hba_list)) {
376 vbus_ext->hba_list = hba->next;
380 callout_drain(&vbus_ext->timer);
381 mtx_destroy(&vbus_ext->lock);
382 free(vbus_ext, M_DEVBUF);
386 static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
390 tasks = vbus_ext->tasks;
391 vbus_ext->tasks = 0;
397 t->func(vbus_ext->vbus, t->data);
401 static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
403 if(vbus_ext){
404 hpt_lock_vbus(vbus_ext);
405 __hpt_do_tasks(vbus_ext);
406 hpt_unlock_vbus(vbus_ext);
415 static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
417 POS_CMDEXT p = vbus_ext->cmdext_list;
419 vbus_ext->cmdext_list = p->next;
425 p->next = p->vbus_ext->cmdext_list;
426 p->vbus_ext->cmdext_list = p;
436 ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
473 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
476 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
479 bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
526 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
530 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
538 static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
540 PVBUS vbus = (PVBUS)vbus_ext->vbus;
711 pCmd->priv = ext = cmdext_get(vbus_ext);
719 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
747 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
751 hpt_assert_vbus_locked(vbus_ext);
755 hpt_scsi_io(vbus_ext, ccb);
759 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
809 PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
810 hpt_lock_vbus(vbus_ext);
811 ldm_intr((PVBUS)vbus_ext->vbus);
812 hpt_unlock_vbus(vbus_ext);
817 PVBUS_EXT vbus_ext = cam_sim_softc(sim);
818 hpt_assert_vbus_locked(vbus_ext);
819 ldm_intr((PVBUS)vbus_ext->vbus);
845 static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
851 hpt_lock_vbus(vbus_ext);
852 ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
855 if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
857 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
858 __hpt_do_tasks(vbus_ext);
863 hpt_unlock_vbus(vbus_ext);
869 PVBUS_EXT vbus_ext;
871 ldm_for_each_vbus(vbus, vbus_ext) {
872 __hpt_do_ioctl(vbus_ext, ioctl_args);
913 static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
942 __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
947 static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
955 __hpt_stop_tasks(vbus_ext, ids[i]);
979 PVBUS_EXT vbus_ext;
988 ldm_for_each_vbus(vbus, vbus_ext) {
989 if (hpt_alloc_mem(vbus_ext)) {
1003 ldm_for_each_vbus(vbus, vbus_ext) {
1005 mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
1006 callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
1007 if (hpt_init_vbus(vbus_ext)) {
1014 ldm_for_each_vbus(vbus, vbus_ext) {
1029 &vbus_ext->lock, /* lockfuncarg */
1030 &vbus_ext->io_dmat /* tag */))
1041 ext->vbus_ext = vbus_ext;
1042 ext->next = vbus_ext->cmdext_list;
1043 vbus_ext->cmdext_list = ext;
1045 if (bus_dmamap_create(vbus_ext->io_dmat, 0, &ext->dma_map)) {
1049 callout_init_mtx(&ext->timeout, &vbus_ext->lock, 0);
1057 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
1058 vbus_ext, 0, &vbus_ext->lock, os_max_queue_comm,
1061 if (!vbus_ext->sim) {
1067 hpt_lock_vbus(vbus_ext);
1068 if (xpt_bus_register(vbus_ext->sim, NULL, 0) != CAM_SUCCESS) {
1070 cam_sim_free(vbus_ext->sim, /*free devq*/ TRUE);
1071 hpt_unlock_vbus(vbus_ext);
1072 vbus_ext->sim = NULL;
1076 if (xpt_create_path(&vbus_ext->path, /*periph */ NULL,
1077 cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD,
1081 xpt_bus_deregister(cam_sim_path(vbus_ext->sim));
1082 cam_sim_free(vbus_ext->sim, /*free_devq*/TRUE);
1083 hpt_unlock_vbus(vbus_ext);
1084 vbus_ext->sim = NULL;
1087 hpt_unlock_vbus(vbus_ext);
1089 xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
1093 ccb.callback_arg = vbus_ext;
1096 for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
1106 NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
1114 vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
1115 hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
1116 if (!vbus_ext->shutdown_eh)
1120 ldm_for_each_vbus(vbus, vbus_ext) {
1121 TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
1122 if (vbus_ext->tasks)
1123 TASK_ENQUEUE(&vbus_ext->worker);
1311 PVBUS_EXT vbus_ext;
1313 ldm_for_each_vbus(vbus, vbus_ext) {
1317 cam_sim_path(vbus_ext->sim),