Lines Matching refs:vdpasim
47 struct vdpasim vdpasim; member
52 static struct vdpasim_blk *sim_to_blk(struct vdpasim *vdpasim) in sim_to_blk() argument
54 return container_of(vdpasim, struct vdpasim_blk, vdpasim); in sim_to_blk()
79 static bool vdpasim_blk_check_range(struct vdpasim *vdpasim, u64 start_sector, in vdpasim_blk_check_range() argument
83 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_check_range()
89 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_check_range()
96 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_check_range()
109 static bool vdpasim_blk_handle_req(struct vdpasim *vdpasim, in vdpasim_blk_handle_req() argument
112 struct vdpasim_blk *blk = sim_to_blk(vdpasim); in vdpasim_blk_handle_req()
129 dev_dbg(&vdpasim->vdpa.dev, "missing headers - out_iov: %u in_iov %u\n", in vdpasim_blk_handle_req()
135 dev_dbg(&vdpasim->vdpa.dev, "request in header too short\n"); in vdpasim_blk_handle_req()
149 dev_dbg(&vdpasim->vdpa.dev, "request out header too short\n"); in vdpasim_blk_handle_req()
155 type = vdpasim32_to_cpu(vdpasim, hdr.type); in vdpasim_blk_handle_req()
156 sector = vdpasim64_to_cpu(vdpasim, hdr.sector); in vdpasim_blk_handle_req()
162 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
171 if (!vdpasim_blk_check_range(vdpasim, sector, in vdpasim_blk_handle_req()
183 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
194 if (!vdpasim_blk_check_range(vdpasim, sector, in vdpasim_blk_handle_req()
206 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
219 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
238 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
248 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
261 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
270 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
277 if (!vdpasim_blk_check_range(vdpasim, sector, num_sectors, in vdpasim_blk_handle_req()
293 dev_dbg(&vdpasim->vdpa.dev, in vdpasim_blk_handle_req()
324 static void vdpasim_blk_work(struct vdpasim *vdpasim) in vdpasim_blk_work() argument
329 mutex_lock(&vdpasim->mutex); in vdpasim_blk_work()
331 if (!(vdpasim->status & VIRTIO_CONFIG_S_DRIVER_OK)) in vdpasim_blk_work()
334 if (!vdpasim->running) in vdpasim_blk_work()
338 struct vdpasim_virtqueue *vq = &vdpasim->vqs[i]; in vdpasim_blk_work()
344 while (vdpasim_blk_handle_req(vdpasim, vq)) { in vdpasim_blk_work()
360 mutex_unlock(&vdpasim->mutex); in vdpasim_blk_work()
363 vdpasim_schedule_work(vdpasim); in vdpasim_blk_work()
366 static void vdpasim_blk_get_config(struct vdpasim *vdpasim, void *config) in vdpasim_blk_get_config() argument
372 blk_config->capacity = cpu_to_vdpasim64(vdpasim, VDPASIM_BLK_CAPACITY); in vdpasim_blk_get_config()
373 blk_config->size_max = cpu_to_vdpasim32(vdpasim, VDPASIM_BLK_SIZE_MAX); in vdpasim_blk_get_config()
374 blk_config->seg_max = cpu_to_vdpasim32(vdpasim, VDPASIM_BLK_SEG_MAX); in vdpasim_blk_get_config()
375 blk_config->num_queues = cpu_to_vdpasim16(vdpasim, VDPASIM_BLK_VQ_NUM); in vdpasim_blk_get_config()
376 blk_config->min_io_size = cpu_to_vdpasim16(vdpasim, 1); in vdpasim_blk_get_config()
377 blk_config->opt_io_size = cpu_to_vdpasim32(vdpasim, 1); in vdpasim_blk_get_config()
378 blk_config->blk_size = cpu_to_vdpasim32(vdpasim, SECTOR_SIZE); in vdpasim_blk_get_config()
381 cpu_to_vdpasim32(vdpasim, SECTOR_SIZE); in vdpasim_blk_get_config()
383 cpu_to_vdpasim32(vdpasim, VDPASIM_BLK_DWZ_MAX_SECTORS); in vdpasim_blk_get_config()
384 blk_config->max_discard_seg = cpu_to_vdpasim32(vdpasim, 1); in vdpasim_blk_get_config()
387 cpu_to_vdpasim32(vdpasim, VDPASIM_BLK_DWZ_MAX_SECTORS); in vdpasim_blk_get_config()
388 blk_config->max_write_zeroes_seg = cpu_to_vdpasim32(vdpasim, 1); in vdpasim_blk_get_config()
392 static void vdpasim_blk_free(struct vdpasim *vdpasim) in vdpasim_blk_free() argument
394 struct vdpasim_blk *blk = sim_to_blk(vdpasim); in vdpasim_blk_free()
414 struct vdpasim *simdev; in vdpasim_blk_dev_add()
462 struct vdpasim *simdev = container_of(dev, struct vdpasim, vdpa); in vdpasim_blk_dev_del()