Lines Matching defs: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);
284 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
286 eni_vdpa->vring[qid].cb = *cb;
340 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
342 iowrite16(qid, eni_vdpa->vring[qid].notify);
374 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
375 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
377 VIRTIO_PCI_CONFIG_OFF(eni_vdpa->vectors) +
390 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
391 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
393 VIRTIO_PCI_CONFIG_OFF(eni_vdpa->vectors) +
405 struct eni_vdpa *eni_vdpa = vdpa_to_eni(vdpa);
407 eni_vdpa->config_cb = *cb;
438 static u16 eni_vdpa_get_num_queues(struct eni_vdpa *eni_vdpa)
440 struct virtio_pci_legacy_device *ldev = &eni_vdpa->ldev;
447 eni_vdpa_get_config(&eni_vdpa->vdpa,
464 struct eni_vdpa *eni_vdpa;
472 eni_vdpa = vdpa_alloc_device(struct eni_vdpa, vdpa,
474 if (IS_ERR(eni_vdpa)) {
476 return PTR_ERR(eni_vdpa);
479 ldev = &eni_vdpa->ldev;
489 pci_set_drvdata(pdev, eni_vdpa);
491 eni_vdpa->vdpa.dma_dev = &pdev->dev;
492 eni_vdpa->queues = eni_vdpa_get_num_queues(eni_vdpa);
494 eni_vdpa->vring = devm_kcalloc(&pdev->dev, eni_vdpa->queues,
495 sizeof(*eni_vdpa->vring),
497 if (!eni_vdpa->vring) {
503 for (i = 0; i < eni_vdpa->queues; i++) {
504 eni_vdpa->vring[i].irq = VIRTIO_MSI_NO_VECTOR;
505 eni_vdpa->vring[i].notify = ldev->ioaddr + VIRTIO_PCI_QUEUE_NOTIFY;
507 eni_vdpa->config_irq = VIRTIO_MSI_NO_VECTOR;
509 ret = vdpa_register_device(&eni_vdpa->vdpa, eni_vdpa->queues);
518 vp_legacy_remove(&eni_vdpa->ldev);
520 put_device(&eni_vdpa->vdpa.dev);
526 struct eni_vdpa *eni_vdpa = pci_get_drvdata(pdev);
528 vdpa_unregister_device(&eni_vdpa->vdpa);
529 vp_legacy_remove(&eni_vdpa->ldev);