Lines Matching refs:private
18 static int fsm_io_helper(struct vfio_ccw_private *private)
27 sch = private->sch;
31 orb = cp_get_orb(&private->cp, (u32)(addr_t)sch, sch->lpm);
52 private->state = VFIO_CCW_STATE_CP_PENDING;
80 static int fsm_do_halt(struct vfio_ccw_private *private)
87 sch = private->sch;
121 static int fsm_do_clear(struct vfio_ccw_private *private)
128 sch = private->sch;
159 static void fsm_notoper(struct vfio_ccw_private *private,
162 struct subchannel *sch = private->sch;
172 private->state = VFIO_CCW_STATE_NOT_OPER;
178 static void fsm_nop(struct vfio_ccw_private *private,
183 static void fsm_io_error(struct vfio_ccw_private *private,
186 pr_err("vfio-ccw: FSM: I/O request from state:%d\n", private->state);
187 private->io_region->ret_code = -EIO;
190 static void fsm_io_busy(struct vfio_ccw_private *private,
193 private->io_region->ret_code = -EBUSY;
196 static void fsm_io_retry(struct vfio_ccw_private *private,
199 private->io_region->ret_code = -EAGAIN;
202 static void fsm_async_error(struct vfio_ccw_private *private,
205 struct ccw_cmd_region *cmd_region = private->cmd_region;
210 "<unknown>", private->state);
214 static void fsm_async_retry(struct vfio_ccw_private *private,
217 private->cmd_region->ret_code = -EAGAIN;
220 static void fsm_disabled_irq(struct vfio_ccw_private *private,
223 struct subchannel *sch = private->sch;
239 static void fsm_io_request(struct vfio_ccw_private *private,
243 union scsw *scsw = &private->scsw;
244 struct ccw_io_region *io_region = private->io_region;
245 struct mdev_device *mdev = private->mdev;
247 struct subchannel_id schid = get_schid(private);
249 private->state = VFIO_CCW_STATE_CP_PROCESSING;
265 io_region->ret_code = cp_init(&private->cp, mdev_dev(mdev),
277 io_region->ret_code = cp_prefetch(&private->cp);
285 cp_free(&private->cp);
290 io_region->ret_code = fsm_io_helper(private);
298 cp_free(&private->cp);
321 private->state = VFIO_CCW_STATE_IDLE;
329 static void fsm_async_request(struct vfio_ccw_private *private,
332 struct ccw_cmd_region *cmd_region = private->cmd_region;
336 cmd_region->ret_code = fsm_do_halt(private);
339 cmd_region->ret_code = fsm_do_clear(private);
346 trace_vfio_ccw_fsm_async_request(get_schid(private),
354 static void fsm_irq(struct vfio_ccw_private *private,
360 VFIO_CCW_TRACE_EVENT(6, dev_name(&private->sch->dev));
362 memcpy(&private->irb, irb, sizeof(*irb));
364 queue_work(vfio_ccw_work_q, &private->io_work);
366 if (private->completion)
367 complete(private->completion);