Lines Matching full:private

41 	struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev);  in vfio_ccw_sch_quiesce()  local
67 private->completion = &completion; in vfio_ccw_sch_quiesce()
73 private->completion = NULL; in vfio_ccw_sch_quiesce()
79 private->state = VFIO_CCW_STATE_NOT_OPER; in vfio_ccw_sch_quiesce()
86 struct vfio_ccw_private *private; in vfio_ccw_sch_io_todo() local
91 private = container_of(work, struct vfio_ccw_private, io_work); in vfio_ccw_sch_io_todo()
92 irb = &private->irb; in vfio_ccw_sch_io_todo()
97 cp_update_scsw(&private->cp, &irb->scsw); in vfio_ccw_sch_io_todo()
98 if (is_final && private->state == VFIO_CCW_STATE_CP_PENDING) { in vfio_ccw_sch_io_todo()
99 cp_free(&private->cp); in vfio_ccw_sch_io_todo()
103 mutex_lock(&private->io_mutex); in vfio_ccw_sch_io_todo()
104 memcpy(private->io_region->irb_area, irb, sizeof(*irb)); in vfio_ccw_sch_io_todo()
105 mutex_unlock(&private->io_mutex); in vfio_ccw_sch_io_todo()
112 if (private->mdev && cp_is_finished) in vfio_ccw_sch_io_todo()
113 private->state = VFIO_CCW_STATE_IDLE; in vfio_ccw_sch_io_todo()
115 if (private->io_trigger) in vfio_ccw_sch_io_todo()
116 eventfd_signal(private->io_trigger, 1); in vfio_ccw_sch_io_todo()
121 struct vfio_ccw_private *private; in vfio_ccw_crw_todo() local
123 private = container_of(work, struct vfio_ccw_private, crw_work); in vfio_ccw_crw_todo()
125 if (!list_empty(&private->crw) && private->crw_trigger) in vfio_ccw_crw_todo()
126 eventfd_signal(private->crw_trigger, 1); in vfio_ccw_crw_todo()
134 struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev); in vfio_ccw_sch_irq() local
137 vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_INTERRUPT); in vfio_ccw_sch_irq()
140 static void vfio_ccw_free_regions(struct vfio_ccw_private *private) in vfio_ccw_free_regions() argument
142 if (private->crw_region) in vfio_ccw_free_regions()
143 kmem_cache_free(vfio_ccw_crw_region, private->crw_region); in vfio_ccw_free_regions()
144 if (private->schib_region) in vfio_ccw_free_regions()
145 kmem_cache_free(vfio_ccw_schib_region, private->schib_region); in vfio_ccw_free_regions()
146 if (private->cmd_region) in vfio_ccw_free_regions()
147 kmem_cache_free(vfio_ccw_cmd_region, private->cmd_region); in vfio_ccw_free_regions()
148 if (private->io_region) in vfio_ccw_free_regions()
149 kmem_cache_free(vfio_ccw_io_region, private->io_region); in vfio_ccw_free_regions()
155 struct vfio_ccw_private *private; in vfio_ccw_sch_probe() local
164 private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); in vfio_ccw_sch_probe()
165 if (!private) in vfio_ccw_sch_probe()
168 private->cp.guest_cp = kcalloc(CCWCHAIN_LEN_MAX, sizeof(struct ccw1), in vfio_ccw_sch_probe()
170 if (!private->cp.guest_cp) in vfio_ccw_sch_probe()
173 private->io_region = kmem_cache_zalloc(vfio_ccw_io_region, in vfio_ccw_sch_probe()
175 if (!private->io_region) in vfio_ccw_sch_probe()
178 private->cmd_region = kmem_cache_zalloc(vfio_ccw_cmd_region, in vfio_ccw_sch_probe()
180 if (!private->cmd_region) in vfio_ccw_sch_probe()
183 private->schib_region = kmem_cache_zalloc(vfio_ccw_schib_region, in vfio_ccw_sch_probe()
186 if (!private->schib_region) in vfio_ccw_sch_probe()
189 private->crw_region = kmem_cache_zalloc(vfio_ccw_crw_region, in vfio_ccw_sch_probe()
192 if (!private->crw_region) in vfio_ccw_sch_probe()
195 private->sch = sch; in vfio_ccw_sch_probe()
196 dev_set_drvdata(&sch->dev, private); in vfio_ccw_sch_probe()
197 mutex_init(&private->io_mutex); in vfio_ccw_sch_probe()
200 private->state = VFIO_CCW_STATE_NOT_OPER; in vfio_ccw_sch_probe()
207 INIT_LIST_HEAD(&private->crw); in vfio_ccw_sch_probe()
208 INIT_WORK(&private->io_work, vfio_ccw_sch_io_todo); in vfio_ccw_sch_probe()
209 INIT_WORK(&private->crw_work, vfio_ccw_crw_todo); in vfio_ccw_sch_probe()
210 atomic_set(&private->avail, 1); in vfio_ccw_sch_probe()
211 private->state = VFIO_CCW_STATE_STANDBY; in vfio_ccw_sch_probe()
231 vfio_ccw_free_regions(private); in vfio_ccw_sch_probe()
232 kfree(private->cp.guest_cp); in vfio_ccw_sch_probe()
233 kfree(private); in vfio_ccw_sch_probe()
239 struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev); in vfio_ccw_sch_remove() local
244 list_for_each_entry_safe(crw, temp, &private->crw, next) { in vfio_ccw_sch_remove()
253 vfio_ccw_free_regions(private); in vfio_ccw_sch_remove()
254 kfree(private->cp.guest_cp); in vfio_ccw_sch_remove()
255 kfree(private); in vfio_ccw_sch_remove()
279 struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev); in vfio_ccw_sch_event() local
291 vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_NOT_OPER); in vfio_ccw_sch_event()
296 private = dev_get_drvdata(&sch->dev); in vfio_ccw_sch_event()
297 if (private->state == VFIO_CCW_STATE_NOT_OPER) { in vfio_ccw_sch_event()
298 private->state = private->mdev ? VFIO_CCW_STATE_IDLE : in vfio_ccw_sch_event()
309 static void vfio_ccw_queue_crw(struct vfio_ccw_private *private, in vfio_ccw_queue_crw() argument
332 list_add_tail(&crw->next, &private->crw); in vfio_ccw_queue_crw()
333 queue_work(vfio_ccw_work_q, &private->crw_work); in vfio_ccw_queue_crw()
339 struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev); in vfio_ccw_chp_event() local
343 if (!private || !mask) in vfio_ccw_chp_event()
346 trace_vfio_ccw_chp_event(private->sch->schid, mask, event); in vfio_ccw_chp_event()
348 mdev_uuid(private->mdev), sch->schid.cssid, in vfio_ccw_chp_event()
367 vfio_ccw_queue_crw(private, CRW_RSC_CPATH, CRW_ERC_PERRN, in vfio_ccw_chp_event()
378 vfio_ccw_queue_crw(private, CRW_RSC_CPATH, CRW_ERC_INIT, in vfio_ccw_chp_event()