Lines Matching full:private

22 	struct vfio_ccw_private *private;  in vfio_ccw_mdev_reset()  local
26 private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_reset()
27 sch = private->sch; in vfio_ccw_mdev_reset()
42 private->state = VFIO_CCW_STATE_IDLE; in vfio_ccw_mdev_reset()
51 struct vfio_ccw_private *private = in vfio_ccw_mdev_notifier() local
61 if (!cp_iova_pinned(&private->cp, unmap->iova)) in vfio_ccw_mdev_notifier()
64 if (vfio_ccw_mdev_reset(private->mdev)) in vfio_ccw_mdev_notifier()
67 cp_free(&private->cp); in vfio_ccw_mdev_notifier()
92 struct vfio_ccw_private *private = in available_instances_show() local
95 return sprintf(buf, "%d\n", atomic_read(&private->avail)); in available_instances_show()
118 struct vfio_ccw_private *private = in vfio_ccw_mdev_create() local
121 if (private->state == VFIO_CCW_STATE_NOT_OPER) in vfio_ccw_mdev_create()
124 if (atomic_dec_if_positive(&private->avail) < 0) in vfio_ccw_mdev_create()
127 private->mdev = mdev; in vfio_ccw_mdev_create()
128 private->state = VFIO_CCW_STATE_IDLE; in vfio_ccw_mdev_create()
131 mdev_uuid(mdev), private->sch->schid.cssid, in vfio_ccw_mdev_create()
132 private->sch->schid.ssid, in vfio_ccw_mdev_create()
133 private->sch->schid.sch_no); in vfio_ccw_mdev_create()
140 struct vfio_ccw_private *private = in vfio_ccw_mdev_remove() local
144 mdev_uuid(mdev), private->sch->schid.cssid, in vfio_ccw_mdev_remove()
145 private->sch->schid.ssid, in vfio_ccw_mdev_remove()
146 private->sch->schid.sch_no); in vfio_ccw_mdev_remove()
148 if ((private->state != VFIO_CCW_STATE_NOT_OPER) && in vfio_ccw_mdev_remove()
149 (private->state != VFIO_CCW_STATE_STANDBY)) { in vfio_ccw_mdev_remove()
150 if (!vfio_ccw_sch_quiesce(private->sch)) in vfio_ccw_mdev_remove()
151 private->state = VFIO_CCW_STATE_STANDBY; in vfio_ccw_mdev_remove()
155 cp_free(&private->cp); in vfio_ccw_mdev_remove()
156 private->mdev = NULL; in vfio_ccw_mdev_remove()
157 atomic_inc(&private->avail); in vfio_ccw_mdev_remove()
164 struct vfio_ccw_private *private = in vfio_ccw_mdev_open_device() local
169 private->nb.notifier_call = vfio_ccw_mdev_notifier; in vfio_ccw_mdev_open_device()
172 &events, &private->nb); in vfio_ccw_mdev_open_device()
176 ret = vfio_ccw_register_async_dev_regions(private); in vfio_ccw_mdev_open_device()
180 ret = vfio_ccw_register_schib_dev_regions(private); in vfio_ccw_mdev_open_device()
184 ret = vfio_ccw_register_crw_dev_regions(private); in vfio_ccw_mdev_open_device()
191 vfio_ccw_unregister_dev_regions(private); in vfio_ccw_mdev_open_device()
193 &private->nb); in vfio_ccw_mdev_open_device()
199 struct vfio_ccw_private *private = in vfio_ccw_mdev_close_device() local
202 if ((private->state != VFIO_CCW_STATE_NOT_OPER) && in vfio_ccw_mdev_close_device()
203 (private->state != VFIO_CCW_STATE_STANDBY)) { in vfio_ccw_mdev_close_device()
205 private->state = VFIO_CCW_STATE_STANDBY; in vfio_ccw_mdev_close_device()
209 cp_free(&private->cp); in vfio_ccw_mdev_close_device()
210 vfio_ccw_unregister_dev_regions(private); in vfio_ccw_mdev_close_device()
212 &private->nb); in vfio_ccw_mdev_close_device()
215 static ssize_t vfio_ccw_mdev_read_io_region(struct vfio_ccw_private *private, in vfio_ccw_mdev_read_io_region() argument
226 mutex_lock(&private->io_mutex); in vfio_ccw_mdev_read_io_region()
227 region = private->io_region; in vfio_ccw_mdev_read_io_region()
232 mutex_unlock(&private->io_mutex); in vfio_ccw_mdev_read_io_region()
242 struct vfio_ccw_private *private; in vfio_ccw_mdev_read() local
244 private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_read()
246 if (index >= VFIO_CCW_NUM_REGIONS + private->num_regions) in vfio_ccw_mdev_read()
251 return vfio_ccw_mdev_read_io_region(private, buf, count, ppos); in vfio_ccw_mdev_read()
254 return private->region[index].ops->read(private, buf, count, in vfio_ccw_mdev_read()
261 static ssize_t vfio_ccw_mdev_write_io_region(struct vfio_ccw_private *private, in vfio_ccw_mdev_write_io_region() argument
272 if (!mutex_trylock(&private->io_mutex)) in vfio_ccw_mdev_write_io_region()
275 region = private->io_region; in vfio_ccw_mdev_write_io_region()
281 vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_IO_REQ); in vfio_ccw_mdev_write_io_region()
285 mutex_unlock(&private->io_mutex); in vfio_ccw_mdev_write_io_region()
295 struct vfio_ccw_private *private; in vfio_ccw_mdev_write() local
297 private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_write()
299 if (index >= VFIO_CCW_NUM_REGIONS + private->num_regions) in vfio_ccw_mdev_write()
304 return vfio_ccw_mdev_write_io_region(private, buf, count, ppos); in vfio_ccw_mdev_write()
307 return private->region[index].ops->write(private, buf, count, in vfio_ccw_mdev_write()
317 struct vfio_ccw_private *private; in vfio_ccw_mdev_get_device_info() local
319 private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_get_device_info()
321 info->num_regions = VFIO_CCW_NUM_REGIONS + private->num_regions; in vfio_ccw_mdev_get_device_info()
331 struct vfio_ccw_private *private; in vfio_ccw_mdev_get_region_info() local
334 private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_get_region_info()
351 VFIO_CCW_NUM_REGIONS + private->num_regions) in vfio_ccw_mdev_get_region_info()
356 private->num_regions); in vfio_ccw_mdev_get_region_info()
361 info->size = private->region[i].size; in vfio_ccw_mdev_get_region_info()
362 info->flags = private->region[i].flags; in vfio_ccw_mdev_get_region_info()
364 cap_type.type = private->region[i].type; in vfio_ccw_mdev_get_region_info()
365 cap_type.subtype = private->region[i].subtype; in vfio_ccw_mdev_get_region_info()
414 struct vfio_ccw_private *private; in vfio_ccw_mdev_set_irqs() local
420 private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_set_irqs()
424 ctx = &private->io_trigger; in vfio_ccw_mdev_set_irqs()
427 ctx = &private->crw_trigger; in vfio_ccw_mdev_set_irqs()
430 ctx = &private->req_trigger; in vfio_ccw_mdev_set_irqs()
486 int vfio_ccw_register_dev_region(struct vfio_ccw_private *private, in vfio_ccw_register_dev_region() argument
493 region = krealloc(private->region, in vfio_ccw_register_dev_region()
494 (private->num_regions + 1) * sizeof(*region), in vfio_ccw_register_dev_region()
499 private->region = region; in vfio_ccw_register_dev_region()
500 private->region[private->num_regions].type = VFIO_REGION_TYPE_CCW; in vfio_ccw_register_dev_region()
501 private->region[private->num_regions].subtype = subtype; in vfio_ccw_register_dev_region()
502 private->region[private->num_regions].ops = ops; in vfio_ccw_register_dev_region()
503 private->region[private->num_regions].size = size; in vfio_ccw_register_dev_region()
504 private->region[private->num_regions].flags = flags; in vfio_ccw_register_dev_region()
505 private->region[private->num_regions].data = data; in vfio_ccw_register_dev_region()
507 private->num_regions++; in vfio_ccw_register_dev_region()
512 void vfio_ccw_unregister_dev_regions(struct vfio_ccw_private *private) in vfio_ccw_unregister_dev_regions() argument
516 for (i = 0; i < private->num_regions; i++) in vfio_ccw_unregister_dev_regions()
517 private->region[i].ops->release(private, &private->region[i]); in vfio_ccw_unregister_dev_regions()
518 private->num_regions = 0; in vfio_ccw_unregister_dev_regions()
519 kfree(private->region); in vfio_ccw_unregister_dev_regions()
520 private->region = NULL; in vfio_ccw_unregister_dev_regions()
618 struct vfio_ccw_private *private = dev_get_drvdata(mdev_parent_dev(mdev)); in vfio_ccw_mdev_request() local
620 if (!private) in vfio_ccw_mdev_request()
623 if (private->req_trigger) { in vfio_ccw_mdev_request()
625 dev_notice_ratelimited(mdev_dev(private->mdev), in vfio_ccw_mdev_request()
629 eventfd_signal(private->req_trigger, 1); in vfio_ccw_mdev_request()
631 dev_notice(mdev_dev(private->mdev), in vfio_ccw_mdev_request()