Lines Matching defs:dev
21 #include <dev/pci/virtio_pcireg.h>
22 #include <dev/pv/vioscsireg.h>
77 vioscsi_next_ring_item(struct vioscsi_dev *dev, struct vring_avail *avail,
85 dev->vq[dev->cfg.queue_notify].last_avail =
189 vioscsi_start_read(struct vioscsi_dev *dev, off_t block, size_t n_blocks)
217 vioscsi_finish_read(struct vioscsi_dev *dev, struct ioinfo *info)
219 struct virtio_backing *f = &dev->file;
230 vioscsi_handle_tur(struct vioscsi_dev *dev, struct virtio_scsi_req_hdr *req,
248 dev->cfg.isr_status = 1;
250 vioscsi_next_ring_item(dev, acct->avail, acct->used,
258 vioscsi_handle_inquiry(struct vioscsi_dev *dev,
321 dev->cfg.isr_status = 1;
323 vioscsi_next_ring_item(dev, acct->avail, acct->used,
334 vioscsi_handle_mode_sense(struct vioscsi_dev *dev,
440 dev->cfg.isr_status = 1;
442 vioscsi_next_ring_item(dev, acct->avail, acct->used,
462 dev->cfg.isr_status = 1;
464 vioscsi_next_ring_item(dev, acct->avail, acct->used,
472 vioscsi_handle_mode_sense_big(struct vioscsi_dev *dev,
578 dev->cfg.isr_status = 1;
580 vioscsi_next_ring_item(dev, acct->avail, acct->used,
600 dev->cfg.isr_status = 1;
602 vioscsi_next_ring_item(dev, acct->avail, acct->used,
610 vioscsi_handle_read_capacity(struct vioscsi_dev *dev,
636 __func__, dev->sz, dev->n_blocks);
644 if (dev->n_blocks >= UINT32_MAX) {
649 __func__, dev->sz, UINT32_MAX);
651 _lto4b(dev->n_blocks - 1, r_cap_data->addr);
686 dev->cfg.isr_status = 1;
688 vioscsi_next_ring_item(dev, acct->avail, acct->used,
699 vioscsi_handle_read_capacity_16(struct vioscsi_dev *dev,
725 dev->sz, dev->n_blocks);
727 _lto8b(dev->n_blocks - 1, r_cap_data_16->addr);
761 dev->cfg.isr_status = 1;
763 vioscsi_next_ring_item(dev, acct->avail, acct->used,
774 vioscsi_handle_report_luns(struct vioscsi_dev *dev,
808 dev->cfg.isr_status = 1;
810 vioscsi_next_ring_item(dev, acct->avail, acct->used,
860 dev->cfg.isr_status = 1;
862 vioscsi_next_ring_item(dev, acct->avail, acct->used,
873 vioscsi_handle_read_6(struct vioscsi_dev *dev,
889 __func__, read_lba, read_6->length, read_6->length * dev->max_xfer);
892 if (read_lba > dev->n_blocks - 1) {
894 __func__, read_lba, dev->n_blocks);
910 dev->cfg.isr_status = 1;
912 vioscsi_next_ring_item(dev, acct->avail, acct->used,
918 info = vioscsi_start_read(dev, read_lba, read_6->length);
926 read_buf = vioscsi_finish_read(dev, info);
945 dev->cfg.isr_status = 1;
947 vioscsi_next_ring_item(dev, acct->avail, acct->used,
985 dev->cfg.isr_status = 1;
987 vioscsi_next_ring_item(dev, acct->avail, acct->used,
998 vioscsi_handle_read_10(struct vioscsi_dev *dev,
1018 __func__, read_lba, read_10_len, read_10_len * dev->max_xfer);
1021 if (read_lba > dev->n_blocks - 1) {
1023 __func__, read_lba, dev->n_blocks);
1038 dev->cfg.isr_status = 1;
1040 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1047 info = vioscsi_start_read(dev, read_lba, read_10_len);
1055 read_buf = vioscsi_finish_read(dev, info);
1072 dev->cfg.isr_status = 1;
1074 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1133 dev->cfg.isr_status = 1;
1135 vioscsi_next_ring_item(dev, acct->avail, acct->used, acct->req_desc,
1145 vioscsi_handle_prevent_allow(struct vioscsi_dev *dev,
1158 if (dev->locked) {
1164 dev->locked = dev->locked ? 0 : 1;
1171 dev->cfg.isr_status = 1;
1173 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1181 vioscsi_handle_mechanism_status(struct vioscsi_dev *dev,
1224 dev->cfg.isr_status = 1;
1226 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1237 vioscsi_handle_read_toc(struct vioscsi_dev *dev,
1274 dev->cfg.isr_status = 1;
1276 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1325 _lto4b((uint32_t)dev->n_blocks, toc_data_p);
1363 dev->cfg.isr_status = 1;
1365 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1374 vioscsi_handle_read_disc_info(struct vioscsi_dev *dev,
1398 dev->cfg.isr_status = 1;
1400 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1408 vioscsi_handle_gesn(struct vioscsi_dev *dev,
1440 dev->cfg.isr_status = 1;
1442 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1457 if (dev->locked)
1492 dev->cfg.isr_status = 1;
1494 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1503 vioscsi_handle_get_config(struct vioscsi_dev *dev,
1595 if (dev->n_blocks >= UINT32_MAX)
1598 _lto4b(dev->n_blocks - 1, config_random_read_desc->block_size);
1636 dev->cfg.isr_status = 1;
1638 vioscsi_next_ring_item(dev, acct->avail, acct->used,
1652 struct vioscsi_dev *dev = (struct vioscsi_dev *)cookie;
1668 dev->cfg.guest_feature = *data;
1670 __func__, dev->cfg.guest_feature);
1673 dev->cfg.queue_pfn = *data;
1674 vioscsi_update_qa(dev);
1677 dev->cfg.queue_select = *data;
1678 vioscsi_update_qs(dev);
1681 dev->cfg.queue_notify = *data;
1682 if (vioscsi_notifyq(dev))
1686 dev->cfg.device_status = *data;
1688 __func__, dev->cfg.device_status);
1689 if (dev->cfg.device_status == 0) {
1691 dev->cfg.guest_feature = 0;
1692 dev->cfg.queue_pfn = 0;
1693 vioscsi_update_qa(dev);
1694 dev->cfg.queue_size = 0;
1695 vioscsi_update_qs(dev);
1696 dev->cfg.queue_select = 0;
1697 dev->cfg.queue_notify = 0;
1698 dev->cfg.isr_status = 0;
1699 dev->vq[0].last_avail = 0;
1700 dev->vq[1].last_avail = 0;
1701 dev->vq[2].last_avail = 0;
1780 *data = (uint32_t)(dev->max_xfer);
1784 *data |= (uint32_t)(dev->max_xfer) & 0xFF;
1792 (uint32_t)(dev->max_xfer >> 8) & 0xFF;
1800 (uint32_t)(dev->max_xfer >> 16) & 0xFF;
1808 (uint32_t)(dev->max_xfer >> 24) & 0xFF;
1983 *data = dev->cfg.device_feature;
1986 *data = dev->cfg.guest_feature;
1989 *data = dev->cfg.queue_pfn;
1993 *data = dev->cfg.queue_size;
1996 *data |= (uint16_t)dev->cfg.queue_size;
1999 *data |= (uint8_t)dev->cfg.queue_size;
2003 *data = dev->cfg.queue_select;
2006 *data = dev->cfg.queue_notify;
2010 *data = dev->cfg.device_status;
2013 *data |= (uint16_t)dev->cfg.device_status;
2016 *data |= (uint8_t)dev->cfg.device_status;
2020 *data = dev->cfg.isr_status;
2021 dev->cfg.isr_status = 0;
2031 vioscsi_update_qs(struct vioscsi_dev *dev)
2036 if (dev->cfg.queue_select >= VIRTIO_MAX_QUEUES) {
2037 dev->cfg.queue_size = 0;
2041 vq_info = &dev->vq[dev->cfg.queue_select];
2044 dev->cfg.queue_pfn = vq_info->q_gpa >> 12;
2045 dev->cfg.queue_size = vq_info->qs;
2049 vioscsi_update_qa(struct vioscsi_dev *dev)
2055 if (dev->cfg.queue_select >= VIRTIO_MAX_QUEUES)
2058 vq_info = &dev->vq[dev->cfg.queue_select];
2059 vq_info->q_gpa = (uint64_t)dev->cfg.queue_pfn * VIRTIO_PAGE_SIZE;
2078 vioscsi_notifyq(struct vioscsi_dev *dev)
2090 if (dev->cfg.queue_notify >= VIRTIO_MAX_QUEUES)
2093 vq_info = &dev->vq[dev->cfg.queue_notify];
2178 dev->cfg.isr_status = 1;
2181 vioscsi_next_ring_item(dev, acct.avail, acct.used,
2188 __func__, dev->cfg.queue_notify, req.id,
2196 ret = vioscsi_handle_tur(dev, &req, &acct);
2199 ret = vioscsi_handle_prevent_allow(dev, &req, &acct);
2202 ret = vioscsi_handle_read_toc(dev, &req, &acct);
2205 ret = vioscsi_handle_read_capacity(dev, &req, &acct);
2208 ret = vioscsi_handle_read_capacity_16(dev, &req, &acct);
2211 ret = vioscsi_handle_read_6(dev, &req, &acct);
2214 ret = vioscsi_handle_read_10(dev, &req, &acct);
2217 ret = vioscsi_handle_inquiry(dev, &req, &acct);
2220 ret = vioscsi_handle_mode_sense(dev, &req, &acct);
2223 ret = vioscsi_handle_mode_sense_big(dev, &req, &acct);
2226 ret = vioscsi_handle_gesn(dev, &req, &acct);
2229 ret = vioscsi_handle_read_disc_info(dev, &req, &acct);
2232 ret = vioscsi_handle_get_config(dev, &req, &acct);
2235 ret = vioscsi_handle_mechanism_status(dev, &req, &acct);
2238 ret = vioscsi_handle_report_luns(dev, &req, &acct);
2244 vioscsi_next_ring_item(dev, acct.avail, acct.used,