Lines Matching refs:vdev
100 struct virtio_device *vdev; member
124 static inline struct Scsi_Host *virtio_scsi_host(struct virtio_device *vdev) in virtio_scsi_host() argument
126 return vdev->priv; in virtio_scsi_host()
161 virtscsi_compute_resid(sc, virtio32_to_cpu(vscsi->vdev, resp->resid)); in virtscsi_complete_cmd()
199 WARN_ON(virtio32_to_cpu(vscsi->vdev, resp->sense_len) > in virtscsi_complete_cmd()
204 virtio32_to_cpu(vscsi->vdev, resp->sense_len), in virtscsi_complete_cmd()
238 struct Scsi_Host *sh = virtio_scsi_host(vq->vdev); in virtscsi_req_done()
266 struct Scsi_Host *sh = virtio_scsi_host(vq->vdev); in virtscsi_ctrl_done()
325 struct Scsi_Host *shost = virtio_scsi_host(vscsi->vdev); in virtscsi_handle_transport_reset()
329 switch (virtio32_to_cpu(vscsi->vdev, event->reason)) { in virtscsi_handle_transport_reset()
352 struct Scsi_Host *shost = virtio_scsi_host(vscsi->vdev); in virtscsi_handle_param_change()
355 u8 asc = virtio32_to_cpu(vscsi->vdev, event->reason) & 255; in virtscsi_handle_param_change()
356 u8 ascq = virtio32_to_cpu(vscsi->vdev, event->reason) >> 8; in virtscsi_handle_param_change()
381 cpu_to_virtio32(vscsi->vdev, VIRTIO_SCSI_T_EVENTS_MISSED)) { in virtscsi_handle_event()
382 event->event &= ~cpu_to_virtio32(vscsi->vdev, in virtscsi_handle_event()
384 scsi_scan_host(virtio_scsi_host(vscsi->vdev)); in virtscsi_handle_event()
387 switch (virtio32_to_cpu(vscsi->vdev, event->event)) { in virtscsi_handle_event()
412 struct Scsi_Host *sh = virtio_scsi_host(vq->vdev); in virtscsi_event_done()
490 static void virtio_scsi_init_hdr(struct virtio_device *vdev, in virtio_scsi_init_hdr() argument
498 cmd->tag = cpu_to_virtio64(vdev, (unsigned long)sc); in virtio_scsi_init_hdr()
504 static void virtio_scsi_init_hdr_pi(struct virtio_device *vdev, in virtio_scsi_init_hdr_pi() argument
511 virtio_scsi_init_hdr(vdev, (struct virtio_scsi_cmd_req *)cmd_pi, sc); in virtio_scsi_init_hdr_pi()
519 cmd_pi->pi_bytesout = cpu_to_virtio32(vdev, in virtio_scsi_init_hdr_pi()
523 cmd_pi->pi_bytesin = cpu_to_virtio32(vdev, in virtio_scsi_init_hdr_pi()
532 struct Scsi_Host *shost = virtio_scsi_host(vscsi->vdev); in virtscsi_queuecommand()
549 if (virtio_has_feature(vscsi->vdev, VIRTIO_SCSI_F_T10_PI)) { in virtscsi_queuecommand()
550 virtio_scsi_init_hdr_pi(vscsi->vdev, &cmd->req.cmd_pi, sc); in virtscsi_queuecommand()
554 virtio_scsi_init_hdr(vscsi->vdev, &cmd->req.cmd, sc); in virtscsi_queuecommand()
683 .subtype = cpu_to_virtio32(vscsi->vdev, in virtscsi_device_reset()
725 .tag = cpu_to_virtio64(vscsi->vdev, (unsigned long)sc), in virtscsi_abort()
792 #define virtscsi_config_get(vdev, fld) \ argument
795 virtio_cread(vdev, struct virtio_scsi_config, fld, &__val); \
799 #define virtscsi_config_set(vdev, fld, val) \ argument
802 virtio_cwrite(vdev, struct virtio_scsi_config, fld, &__val); \
874 static void virtscsi_remove_vqs(struct virtio_device *vdev) in virtscsi_remove_vqs() argument
876 struct Scsi_Host *sh = virtio_scsi_host(vdev); in virtscsi_remove_vqs()
882 vdev->config->reset(vdev); in virtscsi_remove_vqs()
884 vdev->config->del_vqs(vdev); in virtscsi_remove_vqs()
887 static int virtscsi_init(struct virtio_device *vdev, in virtscsi_init() argument
917 err = vdev->config->find_vqs(vdev, num_vqs, vqs, callbacks, names); in virtscsi_init()
929 virtscsi_config_set(vdev, cdb_size, VIRTIO_SCSI_CDB_SIZE); in virtscsi_init()
930 virtscsi_config_set(vdev, sense_size, VIRTIO_SCSI_SENSE_SIZE); in virtscsi_init()
939 virtscsi_remove_vqs(vdev); in virtscsi_init()
943 static int virtscsi_probe(struct virtio_device *vdev) in virtscsi_probe() argument
953 if (!vdev->config->get) { in virtscsi_probe()
954 dev_err(&vdev->dev, "%s failure: config access disabled\n", in virtscsi_probe()
960 num_queues = virtscsi_config_get(vdev, num_queues) ? : 1; in virtscsi_probe()
962 num_targets = virtscsi_config_get(vdev, max_target) + 1; in virtscsi_probe()
974 sg_elems = virtscsi_config_get(vdev, seg_max) ?: 1; in virtscsi_probe()
977 vscsi->vdev = vdev; in virtscsi_probe()
979 vdev->priv = shost; in virtscsi_probe()
981 err = virtscsi_init(vdev, vscsi); in virtscsi_probe()
992 cmd_per_lun = virtscsi_config_get(vdev, cmd_per_lun) ?: 1; in virtscsi_probe()
994 shost->max_sectors = virtscsi_config_get(vdev, max_sectors) ?: 0xFFFF; in virtscsi_probe()
999 shost->max_lun = virtscsi_config_get(vdev, max_lun) + 1 + 0x4000; in virtscsi_probe()
1005 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_T10_PI)) { in virtscsi_probe()
1014 err = scsi_add_host(shost, &vdev->dev); in virtscsi_probe()
1018 virtio_device_ready(vdev); in virtscsi_probe()
1020 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) in virtscsi_probe()
1027 vdev->config->del_vqs(vdev); in virtscsi_probe()
1033 static void virtscsi_remove(struct virtio_device *vdev) in virtscsi_remove() argument
1035 struct Scsi_Host *shost = virtio_scsi_host(vdev); in virtscsi_remove()
1038 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) in virtscsi_remove()
1045 virtscsi_remove_vqs(vdev); in virtscsi_remove()
1050 static int virtscsi_freeze(struct virtio_device *vdev) in virtscsi_freeze() argument
1052 struct Scsi_Host *sh = virtio_scsi_host(vdev); in virtscsi_freeze()
1056 virtscsi_remove_vqs(vdev); in virtscsi_freeze()
1060 static int virtscsi_restore(struct virtio_device *vdev) in virtscsi_restore() argument
1062 struct Scsi_Host *sh = virtio_scsi_host(vdev); in virtscsi_restore()
1066 err = virtscsi_init(vdev, vscsi); in virtscsi_restore()
1072 vdev->config->del_vqs(vdev); in virtscsi_restore()
1076 virtio_device_ready(vdev); in virtscsi_restore()
1078 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) in virtscsi_restore()