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()
505 static void virtio_scsi_init_hdr_pi(struct virtio_device *vdev, in virtio_scsi_init_hdr_pi() argument
512 virtio_scsi_init_hdr(vdev, (struct virtio_scsi_cmd_req *)cmd_pi, sc); in virtio_scsi_init_hdr_pi()
520 cmd_pi->pi_bytesout = cpu_to_virtio32(vdev, in virtio_scsi_init_hdr_pi()
524 cmd_pi->pi_bytesin = cpu_to_virtio32(vdev, in virtio_scsi_init_hdr_pi()
534 struct Scsi_Host *shost = virtio_scsi_host(vscsi->vdev); in virtscsi_queuecommand()
552 if (virtio_has_feature(vscsi->vdev, VIRTIO_SCSI_F_T10_PI)) { in virtscsi_queuecommand()
553 virtio_scsi_init_hdr_pi(vscsi->vdev, &cmd->req.cmd_pi, sc); in virtscsi_queuecommand()
559 virtio_scsi_init_hdr(vscsi->vdev, &cmd->req.cmd, sc); in virtscsi_queuecommand()
688 .subtype = cpu_to_virtio32(vscsi->vdev, in virtscsi_device_reset()
730 .tag = cpu_to_virtio64(vscsi->vdev, (unsigned long)sc), in virtscsi_abort()
797 #define virtscsi_config_get(vdev, fld) \ argument
800 virtio_cread(vdev, struct virtio_scsi_config, fld, &__val); \
804 #define virtscsi_config_set(vdev, fld, val) \ argument
807 virtio_cwrite(vdev, struct virtio_scsi_config, fld, &__val); \
879 static void virtscsi_remove_vqs(struct virtio_device *vdev) in virtscsi_remove_vqs() argument
881 struct Scsi_Host *sh = virtio_scsi_host(vdev); in virtscsi_remove_vqs()
887 vdev->config->reset(vdev); in virtscsi_remove_vqs()
889 vdev->config->del_vqs(vdev); in virtscsi_remove_vqs()
892 static int virtscsi_init(struct virtio_device *vdev, in virtscsi_init() argument
922 err = vdev->config->find_vqs(vdev, num_vqs, vqs, callbacks, names); in virtscsi_init()
934 virtscsi_config_set(vdev, cdb_size, VIRTIO_SCSI_CDB_SIZE); in virtscsi_init()
935 virtscsi_config_set(vdev, sense_size, VIRTIO_SCSI_SENSE_SIZE); in virtscsi_init()
944 virtscsi_remove_vqs(vdev); in virtscsi_init()
948 static int virtscsi_probe(struct virtio_device *vdev) in virtscsi_probe() argument
958 if (!vdev->config->get) { in virtscsi_probe()
959 dev_err(&vdev->dev, "%s failure: config access disabled\n", in virtscsi_probe()
965 num_queues = virtscsi_config_get(vdev, num_queues) ? : 1; in virtscsi_probe()
967 num_targets = virtscsi_config_get(vdev, max_target) + 1; in virtscsi_probe()
979 sg_elems = virtscsi_config_get(vdev, seg_max) ?: 1; in virtscsi_probe()
982 vscsi->vdev = vdev; in virtscsi_probe()
984 vdev->priv = shost; in virtscsi_probe()
986 err = virtscsi_init(vdev, vscsi); in virtscsi_probe()
997 cmd_per_lun = virtscsi_config_get(vdev, cmd_per_lun) ?: 1; in virtscsi_probe()
999 shost->max_sectors = virtscsi_config_get(vdev, max_sectors) ?: 0xFFFF; in virtscsi_probe()
1004 shost->max_lun = virtscsi_config_get(vdev, max_lun) + 1 + 0x4000; in virtscsi_probe()
1011 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_T10_PI)) { in virtscsi_probe()
1023 err = scsi_add_host(shost, &vdev->dev); in virtscsi_probe()
1027 virtio_device_ready(vdev); in virtscsi_probe()
1029 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) in virtscsi_probe()
1036 vdev->config->del_vqs(vdev); in virtscsi_probe()
1042 static void virtscsi_remove(struct virtio_device *vdev) in virtscsi_remove() argument
1044 struct Scsi_Host *shost = virtio_scsi_host(vdev); in virtscsi_remove()
1047 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) in virtscsi_remove()
1054 virtscsi_remove_vqs(vdev); in virtscsi_remove()
1059 static int virtscsi_freeze(struct virtio_device *vdev) in virtscsi_freeze() argument
1061 struct Scsi_Host *sh = virtio_scsi_host(vdev); in virtscsi_freeze()
1065 virtscsi_remove_vqs(vdev); in virtscsi_freeze()
1069 static int virtscsi_restore(struct virtio_device *vdev) in virtscsi_restore() argument
1071 struct Scsi_Host *sh = virtio_scsi_host(vdev); in virtscsi_restore()
1075 err = virtscsi_init(vdev, vscsi); in virtscsi_restore()
1081 vdev->config->del_vqs(vdev); in virtscsi_restore()
1085 virtio_device_ready(vdev); in virtscsi_restore()
1087 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) in virtscsi_restore()