Lines Matching refs:eni_vdpa

25 	dev_err(&pdev->dev, "%s"fmt, "eni_vdpa: ", ##__VA_ARGS__)
27 dev_dbg(&pdev->dev, "%s"fmt, "eni_vdpa: ", ##__VA_ARGS__)
29 dev_info(&pdev->dev, "%s"fmt, "eni_vdpa: ", ##__VA_ARGS__)
38 struct eni_vdpa {
49 static struct eni_vdpa *vdpa_to_eni(struct vdpa_device *vdpa)
51 return container_of(vdpa, struct eni_vdpa, vdpa);
56 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
58 return &eni_vdpa->ldev;
103 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
104 int irq = eni_vdpa->vring[idx].irq;
112 static void eni_vdpa_free_irq(struct eni_vdpa *eni_vdpa)
114 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
118 for (i = 0; i < eni_vdpa->queues; i++) {
119 if (eni_vdpa->vring[i].irq != VIRTIO_MSI_NO_VECTOR) {
121 devm_free_irq(&pdev->dev, eni_vdpa->vring[i].irq,
122 &eni_vdpa->vring[i]);
123 eni_vdpa->vring[i].irq = VIRTIO_MSI_NO_VECTOR;
127 if (eni_vdpa->config_irq != VIRTIO_MSI_NO_VECTOR) {
129 devm_free_irq(&pdev->dev, eni_vdpa->config_irq, eni_vdpa);
130 eni_vdpa->config_irq = VIRTIO_MSI_NO_VECTOR;
133 if (eni_vdpa->vectors) {
135 eni_vdpa->vectors = 0;
151 struct eni_vdpa *eni_vdpa = arg;
153 if (eni_vdpa->config_cb.callback)
154 return eni_vdpa->config_cb.callback(eni_vdpa->config_cb.private);
159 static int eni_vdpa_request_irq(struct eni_vdpa *eni_vdpa)
161 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
164 int queues = eni_vdpa->queues;
175 eni_vdpa->vectors = vectors;
178 snprintf(eni_vdpa->vring[i].msix_name, ENI_MSIX_NAME_SIZE,
183 0, eni_vdpa->vring[i].msix_name,
184 &eni_vdpa->vring[i]);
190 eni_vdpa->vring[i].irq = irq;
193 snprintf(eni_vdpa->msix_name, ENI_MSIX_NAME_SIZE, "eni-vdpa[%s]-config\n",
197 eni_vdpa->msix_name, eni_vdpa);
203 eni_vdpa->config_irq = irq;
207 eni_vdpa_free_irq(eni_vdpa);
213 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
214 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
219 eni_vdpa_request_irq(eni_vdpa);
226 eni_vdpa_free_irq(eni_vdpa);
231 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
232 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
238 eni_vdpa_free_irq(eni_vdpa);
291 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
293 eni_vdpa->vring[qid].cb = *cb;
347 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
349 iowrite16(qid, eni_vdpa->vring[qid].notify);
381 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
382 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
384 VIRTIO_PCI_CONFIG_OFF(eni_vdpa->vectors) +
397 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
398 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
400 VIRTIO_PCI_CONFIG_OFF(eni_vdpa->vectors) +
412 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
414 eni_vdpa->config_cb = *cb;
446 static u16 eni_vdpa_get_num_queues(struct eni_vdpa *eni_vdpa)
448 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
455 eni_vdpa_get_config(&eni_vdpa->vdpa,
472 struct eni_vdpa *eni_vdpa;
480 eni_vdpa = vdpa_alloc_device(struct eni_vdpa, vdpa,
482 if (IS_ERR(eni_vdpa)) {
484 return PTR_ERR(eni_vdpa);
487 ldev = &eni_vdpa->ldev;
497 pci_set_drvdata(pdev, eni_vdpa);
499 eni_vdpa->vdpa.dma_dev = &pdev->dev;
500 eni_vdpa->queues = eni_vdpa_get_num_queues(eni_vdpa);
502 eni_vdpa->vring = devm_kcalloc(&pdev->dev, eni_vdpa->queues,
503 sizeof(*eni_vdpa->vring),
505 if (!eni_vdpa->vring) {
511 for (i = 0; i < eni_vdpa->queues; i++) {
512 eni_vdpa->vring[i].irq = VIRTIO_MSI_NO_VECTOR;
513 eni_vdpa->vring[i].notify = ldev->ioaddr + VIRTIO_PCI_QUEUE_NOTIFY;
515 eni_vdpa->config_irq = VIRTIO_MSI_NO_VECTOR;
517 ret = vdpa_register_device(&eni_vdpa->vdpa, eni_vdpa->queues);
526 vp_legacy_remove(&eni_vdpa->ldev);
528 put_device(&eni_vdpa->vdpa.dev);
534 struct eni_vdpa *eni_vdpa = pci_get_drvdata(pdev);
536 vdpa_unregister_device(&eni_vdpa->vdpa);
537 vp_legacy_remove(&eni_vdpa->ldev);