Lines Matching refs:vp_dev
143 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
146 vp_iowrite32(0, &vp_dev->common->device_feature_select);
147 features = vp_ioread32(&vp_dev->common->device_feature);
148 vp_iowrite32(1, &vp_dev->common->device_feature_select);
149 features |= ((u64)vp_ioread32(&vp_dev->common->device_feature) << 32);
156 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
157 struct pci_dev *pci_dev = vp_dev->pci_dev;
167 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
182 vp_iowrite32(0, &vp_dev->common->guest_feature_select);
183 vp_iowrite32((u32)vdev->features, &vp_dev->common->guest_feature);
184 vp_iowrite32(1, &vp_dev->common->guest_feature_select);
185 vp_iowrite32(vdev->features >> 32, &vp_dev->common->guest_feature);
194 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
199 BUG_ON(offset + len > vp_dev->device_len);
203 b = ioread8(vp_dev->device + offset);
207 w = cpu_to_le16(ioread16(vp_dev->device + offset));
211 l = cpu_to_le32(ioread32(vp_dev->device + offset));
215 l = cpu_to_le32(ioread32(vp_dev->device + offset));
217 l = cpu_to_le32(ioread32(vp_dev->device + offset + sizeof l));
230 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
235 BUG_ON(offset + len > vp_dev->device_len);
240 iowrite8(b, vp_dev->device + offset);
244 iowrite16(le16_to_cpu(w), vp_dev->device + offset);
248 iowrite32(le32_to_cpu(l), vp_dev->device + offset);
252 iowrite32(le32_to_cpu(l), vp_dev->device + offset);
254 iowrite32(le32_to_cpu(l), vp_dev->device + offset + sizeof l);
263 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
264 return vp_ioread8(&vp_dev->common->config_generation);
270 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
271 return vp_ioread8(&vp_dev->common->device_status);
276 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
279 vp_iowrite8(status, &vp_dev->common->device_status);
284 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
286 vp_iowrite8(0, &vp_dev->common->device_status);
292 while (vp_ioread8(&vp_dev->common->device_status))
298 static u16 vp_config_vector(struct virtio_pci_device *vp_dev, u16 vector)
301 vp_iowrite16(vector, &vp_dev->common->msix_config);
304 return vp_ioread16(&vp_dev->common->msix_config);
307 static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev,
315 struct virtio_pci_common_cfg __iomem *cfg = vp_dev->common;
332 dev_warn(&vp_dev->pci_dev->dev, "bad queue size %u", num);
343 SMP_CACHE_BYTES, &vp_dev->vdev,
358 if (vp_dev->notify_base) {
360 if ((u64)off * vp_dev->notify_offset_multiplier + 2
361 > vp_dev->notify_len) {
362 dev_warn(&vp_dev->pci_dev->dev,
365 off, vp_dev->notify_offset_multiplier,
366 index, vp_dev->notify_len);
370 vq->priv = (void __force *)vp_dev->notify_base +
371 off * vp_dev->notify_offset_multiplier;
373 vq->priv = (void __force *)map_capability(vp_dev->pci_dev,
374 vp_dev->notify_map_cap, 2, 2,
375 off * vp_dev->notify_offset_multiplier, 2,
396 if (!vp_dev->notify_base)
397 pci_iounmap(vp_dev->pci_dev, (void __iomem __force *)vq->priv);
409 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
420 vp_iowrite16(vq->index, &vp_dev->common->queue_select);
421 vp_iowrite16(1, &vp_dev->common->queue_enable);
430 struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev);
432 vp_iowrite16(vq->index, &vp_dev->common->queue_select);
434 if (vp_dev->msix_enabled) {
436 &vp_dev->common->queue_msix_vector);
438 vp_ioread16(&vp_dev->common->queue_msix_vector);
441 if (!vp_dev->notify_base)
442 pci_iounmap(vp_dev->pci_dev, (void __force __iomem *)vq->priv);
509 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
510 struct pci_dev *pci_dev = vp_dev->pci_dev;
678 int virtio_pci_modern_probe(struct virtio_pci_device *vp_dev)
680 struct pci_dev *pci_dev = vp_dev->pci_dev;
695 vp_dev->vdev.id.device = pci_dev->subsystem_device;
698 vp_dev->vdev.id.device = pci_dev->device - 0x1040;
700 vp_dev->vdev.id.vendor = pci_dev->subsystem_vendor;
705 &vp_dev->modern_bars);
715 &vp_dev->modern_bars);
718 &vp_dev->modern_bars);
738 &vp_dev->modern_bars);
740 err = pci_request_selected_regions(pci_dev, vp_dev->modern_bars,
746 vp_dev->common = map_capability(pci_dev, common,
750 if (!vp_dev->common)
752 vp_dev->isr = map_capability(pci_dev, isr, sizeof(u8), 1,
755 if (!vp_dev->isr)
762 &vp_dev->notify_offset_multiplier);
779 vp_dev->notify_base = map_capability(pci_dev, notify, 2, 2,
781 &vp_dev->notify_len);
782 if (!vp_dev->notify_base)
785 vp_dev->notify_map_cap = notify;
792 vp_dev->device = map_capability(pci_dev, device, 0, 4,
794 &vp_dev->device_len);
795 if (!vp_dev->device)
798 vp_dev->vdev.config = &virtio_pci_config_ops;
800 vp_dev->vdev.config = &virtio_pci_config_nodev_ops;
803 vp_dev->config_vector = vp_config_vector;
804 vp_dev->setup_vq = setup_vq;
805 vp_dev->del_vq = del_vq;
810 if (vp_dev->notify_base)
811 pci_iounmap(pci_dev, vp_dev->notify_base);
813 pci_iounmap(pci_dev, vp_dev->isr);
815 pci_iounmap(pci_dev, vp_dev->common);
820 void virtio_pci_modern_remove(struct virtio_pci_device *vp_dev)
822 struct pci_dev *pci_dev = vp_dev->pci_dev;
824 if (vp_dev->device)
825 pci_iounmap(pci_dev, vp_dev->device);
826 if (vp_dev->notify_base)
827 pci_iounmap(pci_dev, vp_dev->notify_base);
828 pci_iounmap(pci_dev, vp_dev->isr);
829 pci_iounmap(pci_dev, vp_dev->common);
830 pci_release_selected_regions(pci_dev, vp_dev->modern_bars);