search for: virtio_pci_isr

Displaying 20 results from an estimated 76 matches for "virtio_pci_isr".

2011 Nov 22
2
[PATCHv3 RFC] virtio-pci: flexible configuration layout
...6 bytes there, since legacy config space + * used PIO which has this size limit. + * */ + m = virtio_pci_set_legacy_map(vp_dev); + if (!m) { + dev_err(&vp_dev->vdev.dev, "Unable to map legacy PIO"); + goto err; + } + vp_dev->ioaddr = m; + vp_dev->ioaddr_isr = m + VIRTIO_PCI_ISR; + vp_dev->ioaddr_notify = m + VIRTIO_PCI_QUEUE_NOTIFY; + vp_dev->ioaddr_device = m + VIRTIO_PCI_CONFIG(vp_dev); + } + + return 0; +err: + virtio_pci_iounmap(vp_dev); + return -EINVAL; +} + /* Constants for MSI-X */ /* Use first vector for configuration changes, second and the rest for...
2011 Nov 22
2
[PATCHv3 RFC] virtio-pci: flexible configuration layout
...6 bytes there, since legacy config space + * used PIO which has this size limit. + * */ + m = virtio_pci_set_legacy_map(vp_dev); + if (!m) { + dev_err(&vp_dev->vdev.dev, "Unable to map legacy PIO"); + goto err; + } + vp_dev->ioaddr = m; + vp_dev->ioaddr_isr = m + VIRTIO_PCI_ISR; + vp_dev->ioaddr_notify = m + VIRTIO_PCI_QUEUE_NOTIFY; + vp_dev->ioaddr_device = m + VIRTIO_PCI_CONFIG(vp_dev); + } + + return 0; +err: + virtio_pci_iounmap(vp_dev); + return -EINVAL; +} + /* Constants for MSI-X */ /* Use first vector for configuration changes, second and the rest for...
2014 Dec 08
0
[PATCH 1/9] virtio_pci: add isr field
...e can dispatch IRQs */ spinlock_t lock; struct list_head virtqueues; @@ -248,7 +251,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) /* reading the ISR has the effect of also clearing it so it's very * important to save off the value. */ - isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); + isr = ioread8(vp_dev->isr); /* It's definitely not us if the ISR was not high */ if (!isr) @@ -719,6 +722,8 @@ static int virtio_pci_probe(struct pci_dev *pci_dev, goto out_req_regions; } + vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; + pci_set_drvdata(pci_dev, vp_...
2014 Dec 08
0
[PATCH v2 01/10] virtio_pci: add isr field
...e can dispatch IRQs */ spinlock_t lock; struct list_head virtqueues; @@ -248,7 +251,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) /* reading the ISR has the effect of also clearing it so it's very * important to save off the value. */ - isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); + isr = ioread8(vp_dev->isr); /* It's definitely not us if the ISR was not high */ if (!isr) @@ -719,6 +722,8 @@ static int virtio_pci_probe(struct pci_dev *pci_dev, goto out_req_regions; } + vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; + pci_set_drvdata(pci_dev, vp_...
2014 Dec 08
0
[PATCH v2 01/10] virtio_pci: add isr field
...e can dispatch IRQs */ spinlock_t lock; struct list_head virtqueues; @@ -248,7 +251,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) /* reading the ISR has the effect of also clearing it so it's very * important to save off the value. */ - isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); + isr = ioread8(vp_dev->isr); /* It's definitely not us if the ISR was not high */ if (!isr) @@ -719,6 +722,8 @@ static int virtio_pci_probe(struct pci_dev *pci_dev, goto out_req_regions; } + vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; + pci_set_drvdata(pci_dev, vp_...
2011 Nov 14
2
[PATCHv2 RFC] virtio-pci: flexible configuration layout
.../* Handle a configuration change: Tell driver if it wants to know. */ @@ -231,7 +383,8 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) /* reading the ISR has the effect of also clearing it so it's very * important to save off the value. */ - isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); + isr = ioread8(vp_dev->ioaddr_notify + + VIRTIO_PCI_ISR - VIRTIO_PCI_QUEUE_NOTIFY); /* It's definitely not us if the ISR was not high */ if (!isr) @@ -265,7 +418,7 @@ static void vp_free_vectors(struct virtio_device *vdev) ioread16(vp_dev->ioaddr + VIRTIO_MSI_CONFIG_VEC...
2011 Nov 14
2
[PATCHv2 RFC] virtio-pci: flexible configuration layout
.../* Handle a configuration change: Tell driver if it wants to know. */ @@ -231,7 +383,8 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) /* reading the ISR has the effect of also clearing it so it's very * important to save off the value. */ - isr = ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); + isr = ioread8(vp_dev->ioaddr_notify + + VIRTIO_PCI_ISR - VIRTIO_PCI_QUEUE_NOTIFY); /* It's definitely not us if the ISR was not high */ if (!isr) @@ -265,7 +418,7 @@ static void vp_free_vectors(struct virtio_device *vdev) ioread16(vp_dev->ioaddr + VIRTIO_MSI_CONFIG_VEC...
2014 Dec 08
0
[PATCH v2 08/10] virtio_pci: split out legacy device support
...(vq->vdev); - unsigned long size; - - iowrite16(vq->index, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_SEL); - - if (vp_dev->msix_enabled) { - iowrite16(VIRTIO_MSI_NO_VECTOR, - vp_dev->ioaddr + VIRTIO_MSI_QUEUE_VECTOR); - /* Flush the write out to device */ - ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); - } - - vring_del_virtqueue(vq); - - /* Select and deactivate the queue */ - iowrite32(0, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN); - - size = PAGE_ALIGN(vring_size(info->num, VIRTIO_PCI_VRING_ALIGN)); - free_pages_exact(info->queue, size); -} - static void vp_del_vq(struct virtqueue *vq)...
2014 Dec 08
0
[PATCH v2 08/10] virtio_pci: split out legacy device support
...(vq->vdev); - unsigned long size; - - iowrite16(vq->index, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_SEL); - - if (vp_dev->msix_enabled) { - iowrite16(VIRTIO_MSI_NO_VECTOR, - vp_dev->ioaddr + VIRTIO_MSI_QUEUE_VECTOR); - /* Flush the write out to device */ - ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); - } - - vring_del_virtqueue(vq); - - /* Select and deactivate the queue */ - iowrite32(0, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN); - - size = PAGE_ALIGN(vring_size(info->num, VIRTIO_PCI_VRING_ALIGN)); - free_pages_exact(info->queue, size); -} - static void vp_del_vq(struct virtqueue *vq)...
2014 Dec 08
0
[PATCH 8/9] virtio_pci: split out legacy device support
...(vq->vdev); - unsigned long size; - - iowrite16(vq->index, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_SEL); - - if (vp_dev->msix_enabled) { - iowrite16(VIRTIO_MSI_NO_VECTOR, - vp_dev->ioaddr + VIRTIO_MSI_QUEUE_VECTOR); - /* Flush the write out to device */ - ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); - } - - vring_del_virtqueue(vq); - - /* Select and deactivate the queue */ - iowrite32(0, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN); - - size = PAGE_ALIGN(vring_size(info->num, VIRTIO_PCI_VRING_ALIGN)); - free_pages_exact(info->queue, size); -} - static void vp_del_vq(struct virtqueue *vq)...
2014 Dec 08
0
[PATCH 8/9] virtio_pci: split out legacy device support
...(vq->vdev); - unsigned long size; - - iowrite16(vq->index, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_SEL); - - if (vp_dev->msix_enabled) { - iowrite16(VIRTIO_MSI_NO_VECTOR, - vp_dev->ioaddr + VIRTIO_MSI_QUEUE_VECTOR); - /* Flush the write out to device */ - ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); - } - - vring_del_virtqueue(vq); - - /* Select and deactivate the queue */ - iowrite32(0, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN); - - size = PAGE_ALIGN(vring_size(info->num, VIRTIO_PCI_VRING_ALIGN)); - free_pages_exact(info->queue, size); -} - static void vp_del_vq(struct virtqueue *vq)...
2015 Jun 24
1
[PATCH] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...
2015 Jun 24
1
[PATCH] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...
2015 Jun 23
1
[PATCH] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...
2015 Jun 23
1
[PATCH] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...
2015 Jun 16
2
[PATCH] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...
2015 Jun 16
2
[PATCH] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...
2014 Dec 08
11
[PATCH 0/9] virtio_pci: split out legacy device support
virtio 1.0 support for virtio-pci isn't ready yet. Therefore, this patchset doesn't make any functional changes. Instead, this simply refactors virtio-pci, splitting legacy device support code out to a separate file: virtio_pci_legacy.c For virtio 1.0, all that's left is to add virtio_pci_modern.c supporting get_features finalize_features get (config) set (config) get_status
2014 Dec 08
11
[PATCH 0/9] virtio_pci: split out legacy device support
virtio 1.0 support for virtio-pci isn't ready yet. Therefore, this patchset doesn't make any functional changes. Instead, this simply refactors virtio-pci, splitting legacy device support code out to a separate file: virtio_pci_legacy.c For virtio 1.0, all that's left is to add virtio_pci_modern.c supporting get_features finalize_features get (config) set (config) get_status
2015 Jun 18
2
[PATCH v2] virtio-pci: alloc only resources actually used.
...*vp_dev) return -ENODEV; } + rc = pci_request_region(pci_dev, 0, "virtio-pci-legacy"); + if (rc) + return rc; + + rc = -ENOMEM; vp_dev->ioaddr = pci_iomap(pci_dev, 0, 0); if (!vp_dev->ioaddr) - return -ENOMEM; + goto err_iomap; vp_dev->isr = vp_dev->ioaddr + VIRTIO_PCI_ISR; @@ -246,6 +252,10 @@ int virtio_pci_legacy_probe(struct virtio_pci_device *vp_dev) vp_dev->del_vq = del_vq; return 0; + +err_iomap: + pci_release_region(pci_dev, 0); + return rc; } void virtio_pci_legacy_remove(struct virtio_pci_device *vp_dev) @@ -253,4 +263,5 @@ void virtio_pci_le...