Lines Matching full:private
19 static int fsm_io_helper(struct vfio_ccw_private *private) in fsm_io_helper() argument
28 sch = private->sch; in fsm_io_helper()
32 orb = cp_get_orb(&private->cp, (u32)(addr_t)sch, sch->lpm); in fsm_io_helper()
53 private->state = VFIO_CCW_STATE_CP_PENDING; in fsm_io_helper()
81 static int fsm_do_halt(struct vfio_ccw_private *private) in fsm_do_halt() argument
88 sch = private->sch; in fsm_do_halt()
122 static int fsm_do_clear(struct vfio_ccw_private *private) in fsm_do_clear() argument
129 sch = private->sch; in fsm_do_clear()
160 static void fsm_notoper(struct vfio_ccw_private *private, in fsm_notoper() argument
163 struct subchannel *sch = private->sch; in fsm_notoper()
170 private->state); in fsm_notoper()
177 private->state = VFIO_CCW_STATE_NOT_OPER; in fsm_notoper()
180 cp_free(&private->cp); in fsm_notoper()
186 static void fsm_nop(struct vfio_ccw_private *private, in fsm_nop() argument
191 static void fsm_io_error(struct vfio_ccw_private *private, in fsm_io_error() argument
194 pr_err("vfio-ccw: FSM: I/O request from state:%d\n", private->state); in fsm_io_error()
195 private->io_region->ret_code = -EIO; in fsm_io_error()
198 static void fsm_io_busy(struct vfio_ccw_private *private, in fsm_io_busy() argument
201 private->io_region->ret_code = -EBUSY; in fsm_io_busy()
204 static void fsm_io_retry(struct vfio_ccw_private *private, in fsm_io_retry() argument
207 private->io_region->ret_code = -EAGAIN; in fsm_io_retry()
210 static void fsm_async_error(struct vfio_ccw_private *private, in fsm_async_error() argument
213 struct ccw_cmd_region *cmd_region = private->cmd_region; in fsm_async_error()
218 "<unknown>", private->state); in fsm_async_error()
222 static void fsm_async_retry(struct vfio_ccw_private *private, in fsm_async_retry() argument
225 private->cmd_region->ret_code = -EAGAIN; in fsm_async_retry()
228 static void fsm_disabled_irq(struct vfio_ccw_private *private, in fsm_disabled_irq() argument
231 struct subchannel *sch = private->sch; in fsm_disabled_irq()
247 static void fsm_io_request(struct vfio_ccw_private *private, in fsm_io_request() argument
251 union scsw *scsw = &private->scsw; in fsm_io_request()
252 struct ccw_io_region *io_region = private->io_region; in fsm_io_request()
254 struct subchannel_id schid = get_schid(private); in fsm_io_request()
256 private->state = VFIO_CCW_STATE_CP_PROCESSING; in fsm_io_request()
272 io_region->ret_code = cp_init(&private->cp, orb); in fsm_io_request()
283 io_region->ret_code = cp_prefetch(&private->cp); in fsm_io_request()
291 cp_free(&private->cp); in fsm_io_request()
296 io_region->ret_code = fsm_io_helper(private); in fsm_io_request()
304 cp_free(&private->cp); in fsm_io_request()
327 private->state = VFIO_CCW_STATE_IDLE; in fsm_io_request()
335 static void fsm_async_request(struct vfio_ccw_private *private, in fsm_async_request() argument
338 struct ccw_cmd_region *cmd_region = private->cmd_region; in fsm_async_request()
342 cmd_region->ret_code = fsm_do_halt(private); in fsm_async_request()
345 cmd_region->ret_code = fsm_do_clear(private); in fsm_async_request()
352 trace_vfio_ccw_fsm_async_request(get_schid(private), in fsm_async_request()
360 static void fsm_irq(struct vfio_ccw_private *private, in fsm_irq() argument
366 VFIO_CCW_TRACE_EVENT(6, dev_name(&private->sch->dev)); in fsm_irq()
368 memcpy(&private->irb, irb, sizeof(*irb)); in fsm_irq()
370 queue_work(vfio_ccw_work_q, &private->io_work); in fsm_irq()
372 if (private->completion) in fsm_irq()
373 complete(private->completion); in fsm_irq()
376 static void fsm_open(struct vfio_ccw_private *private, in fsm_open() argument
379 struct subchannel *sch = private->sch; in fsm_open()
388 private->state = VFIO_CCW_STATE_IDLE; in fsm_open()
394 vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_NOT_OPER); in fsm_open()
397 static void fsm_close(struct vfio_ccw_private *private, in fsm_close() argument
400 struct subchannel *sch = private->sch; in fsm_close()
414 private->state = VFIO_CCW_STATE_STANDBY; in fsm_close()
416 cp_free(&private->cp); in fsm_close()
421 vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_NOT_OPER); in fsm_close()