search for: queue_idx

Displaying 20 results from an estimated 73 matches for "queue_idx".

Did you mean: queue_id
2019 Oct 14
1
[PATCH V3 6/7] virtio: introduce a mdev based transport
...t; + struct irq_affinity *desc) > +{ > + struct virtio_mdev_device *vm_dev = to_virtio_mdev_device(vdev); > + struct mdev_device *mdev = vm_get_mdev(vdev); > + const struct virtio_mdev_device_ops *ops = mdev_get_dev_ops(mdev); > + struct virtio_mdev_callback cb; > + int i, err, queue_idx = 0; > + > + vm_dev->vqs = kmalloc_array(queue_idx, sizeof(*vm_dev->vqs), > + GFP_KERNEL); kmalloc_array(0, ...)? I would have expected nvqs instead of queue_idx (0). What is this the purpose of vm_dev->vqs and does anything ever access it? -------------- next part -----...
2018 Dec 28
0
[PATCH v1 2/2] virtio: don't allocate vqs when names[i] = NULL
...vers/misc/mic/vop/vop_main.c @@ -394,16 +394,21 @@ static int vop_find_vqs(struct virtio_device *dev, unsigned nvqs, struct _vop_vdev *vdev = to_vopvdev(dev); struct vop_device *vpdev = vdev->vpdev; struct mic_device_ctrl __iomem *dc = vdev->dc; - int i, err, retry; + int i, err, retry, queue_idx = 0; /* We must have this many virtqueues. */ if (nvqs > ioread8(&vdev->desc->num_vq)) return -ENOENT; for (i = 0; i < nvqs; ++i) { + if (!names[i]) { + vqs[i] = NULL; + continue; + } + dev_dbg(_vop_dev(vdev), "%s: %d: %s\n", __func__, i, names[i]...
2018 Dec 28
0
[PATCH v1 1/2] virtio_pci: use queue idx instead of array idx to set up the vq
...q[i] allocation if its corresponding names[i] is NULL. For example, the caller may pass in names[i] (i=4) with names[2] being NULL because the related feature bit is turned off, so technically there are 3 queues on the device, and name[4] should correspond to the 3rd queue on the device. So we use queue_idx as the queue index, which is increased only when the queue exists. Signed-off-by: Wei Wang <wei.w.wang at intel.com> --- drivers/virtio/virtio_pci_common.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_...
2019 Jul 02
2
[PATCH] virtio-mmio: add error check for platform_get_irq
...@@ static int vm_find_vqs(struct virtio_device *vdev, unsigned nvqs, struct irq_affinity *desc) { struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); - unsigned int irq = platform_get_irq(vm_dev->pdev, 0); + int irq = platform_get_irq(vm_dev->pdev, 0); int i, err, queue_idx = 0; + if (irq < 0) { + dev_err(&vdev->dev, "no IRQ resource defined\n"); + return -ENODEV; + } + err = request_irq(irq, vm_interrupt, IRQF_SHARED, dev_name(&vdev->dev), vm_dev); if (err) -- 2.17.1
2019 Jul 02
2
[PATCH] virtio-mmio: add error check for platform_get_irq
...@@ static int vm_find_vqs(struct virtio_device *vdev, unsigned nvqs, struct irq_affinity *desc) { struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); - unsigned int irq = platform_get_irq(vm_dev->pdev, 0); + int irq = platform_get_irq(vm_dev->pdev, 0); int i, err, queue_idx = 0; + if (irq < 0) { + dev_err(&vdev->dev, "no IRQ resource defined\n"); + return -ENODEV; + } + err = request_irq(irq, vm_interrupt, IRQF_SHARED, dev_name(&vdev->dev), vm_dev); if (err) -- 2.17.1
2019 Jul 02
2
[PATCH v2] virtio-mmio: add error check for platform_get_irq
...@@ static int vm_find_vqs(struct virtio_device *vdev, unsigned nvqs, struct irq_affinity *desc) { struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); - unsigned int irq = platform_get_irq(vm_dev->pdev, 0); + int irq = platform_get_irq(vm_dev->pdev, 0); int i, err, queue_idx = 0; + if (irq < 0) { + dev_err(&vdev->dev, "Cannot get IRQ resource\n"); + return irq; + } + err = request_irq(irq, vm_interrupt, IRQF_SHARED, dev_name(&vdev->dev), vm_dev); if (err) -- 2.17.1
2019 Jul 02
2
[PATCH v2] virtio-mmio: add error check for platform_get_irq
...@@ static int vm_find_vqs(struct virtio_device *vdev, unsigned nvqs, struct irq_affinity *desc) { struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); - unsigned int irq = platform_get_irq(vm_dev->pdev, 0); + int irq = platform_get_irq(vm_dev->pdev, 0); int i, err, queue_idx = 0; + if (irq < 0) { + dev_err(&vdev->dev, "Cannot get IRQ resource\n"); + return irq; + } + err = request_irq(irq, vm_interrupt, IRQF_SHARED, dev_name(&vdev->dev), vm_dev); if (err) -- 2.17.1
2018 Dec 28
11
[PATCH v1 0/2] Virtio: fix some vq allocation issues
Some vqs don't need to be allocated when the related feature bits are disabled. Callers notice the vq allocation layer by setting the related names[i] to be NULL. This patch series fixes the find_vqs implementations to handle this case. Wei Wang (2): virtio_pci: use queue idx instead of array idx to set up the vq virtio: don't allocate vqs when names[i] = NULL
2018 Dec 28
11
[PATCH v1 0/2] Virtio: fix some vq allocation issues
Some vqs don't need to be allocated when the related feature bits are disabled. Callers notice the vq allocation layer by setting the related names[i] to be NULL. This patch series fixes the find_vqs implementations to handle this case. Wei Wang (2): virtio_pci: use queue idx instead of array idx to set up the vq virtio: don't allocate vqs when names[i] = NULL
2019 Jul 03
0
[RFC v2] vhost: introduce mdev based hardware vhost backend
...scribed by NOTIFY_REGION is also write-able. If > the accelerator's notification register(s) cannot be mapped to > the VM, write() can also be used to notify the device. Something > like this: > > void notify_relay(void *opaque) > { > ...... > offset = host_page_size * queue_idx; > > ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), > vfio->notify_offset + offset); > ...... > } > > 3. VFIO interrupt ioctl API > > VFIO interrupt ioctl API is used to setup device interrupts. > IRQ-bypass can also be supported. > &g...
2019 Jul 03
4
[RFC v2] vhost: introduce mdev based hardware vhost backend
...ify the device directly. The region described by NOTIFY_REGION is also write-able. If the accelerator's notification register(s) cannot be mapped to the VM, write() can also be used to notify the device. Something like this: void notify_relay(void *opaque) { ...... offset = host_page_size * queue_idx; ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), vfio->notify_offset + offset); ...... } 3. VFIO interrupt ioctl API VFIO interrupt ioctl API is used to setup device interrupts. IRQ-bypass can also be supported. Currently, the data path interrupt can be configured...
2019 Jul 03
4
[RFC v2] vhost: introduce mdev based hardware vhost backend
...ify the device directly. The region described by NOTIFY_REGION is also write-able. If the accelerator's notification register(s) cannot be mapped to the VM, write() can also be used to notify the device. Something like this: void notify_relay(void *opaque) { ...... offset = host_page_size * queue_idx; ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), vfio->notify_offset + offset); ...... } 3. VFIO interrupt ioctl API VFIO interrupt ioctl API is used to setup device interrupts. IRQ-bypass can also be supported. Currently, the data path interrupt can be configured...
2018 Apr 02
2
[RFC] vhost: introduce mdev based hardware vhost backend
...able to notify the device directly. The MMIO region described by BAR1 is also write-able. If the accelerator's notification register(s) cannot be mapped to the VM, write() can also be used to notify the device. Something like this: void notify_relay(void *opaque) { ...... offset = 0x1000 * queue_idx; /* XXX assume page size is 4K here. */ ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), vfio->bar1_offset + offset); ...... } Other BARs are reserved. 3. VFIO interrupt ioctl API VFIO interrupt ioctl API is used to setup device interrupts. IRQ-bypass will also be s...
2018 Apr 02
2
[RFC] vhost: introduce mdev based hardware vhost backend
...able to notify the device directly. The MMIO region described by BAR1 is also write-able. If the accelerator's notification register(s) cannot be mapped to the VM, write() can also be used to notify the device. Something like this: void notify_relay(void *opaque) { ...... offset = 0x1000 * queue_idx; /* XXX assume page size is 4K here. */ ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), vfio->bar1_offset + offset); ...... } Other BARs are reserved. 3. VFIO interrupt ioctl API VFIO interrupt ioctl API is used to setup device interrupts. IRQ-bypass will also be s...
2018 Apr 10
4
[RFC] vhost: introduce mdev based hardware vhost backend
...write-able. If the > > accelerator's notification register(s) cannot be mapped to the > > VM, write() can also be used to notify the device. Something > > like this: > > > > void notify_relay(void *opaque) > > { > > ...... > > offset = 0x1000 * queue_idx; /* XXX assume page size is 4K here. */ > > > > ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), > > vfio->bar1_offset + offset); > > ...... > > } > > > > Other BARs are reserved. > > > > 3. VFIO interrupt ioctl A...
2018 Apr 10
4
[RFC] vhost: introduce mdev based hardware vhost backend
...write-able. If the > > accelerator's notification register(s) cannot be mapped to the > > VM, write() can also be used to notify the device. Something > > like this: > > > > void notify_relay(void *opaque) > > { > > ...... > > offset = 0x1000 * queue_idx; /* XXX assume page size is 4K here. */ > > > > ret = pwrite64(vfio->device_fd, &queue_idx, sizeof(queue_idx), > > vfio->bar1_offset + offset); > > ...... > > } > > > > Other BARs are reserved. > > > > 3. VFIO interrupt ioctl A...
2019 Oct 11
0
[PATCH V3 6/7] virtio: introduce a mdev based transport
...t names[], + const bool *ctx, + struct irq_affinity *desc) +{ + struct virtio_mdev_device *vm_dev = to_virtio_mdev_device(vdev); + struct mdev_device *mdev = vm_get_mdev(vdev); + const struct virtio_mdev_device_ops *ops = mdev_get_dev_ops(mdev); + struct virtio_mdev_callback cb; + int i, err, queue_idx = 0; + + vm_dev->vqs = kmalloc_array(queue_idx, sizeof(*vm_dev->vqs), + GFP_KERNEL); + if (!vm_dev->vqs) + return -ENOMEM; + + for (i = 0; i < nvqs; ++i) { + if (!names[i]) { + vqs[i] = NULL; + continue; + } + + vqs[i] = virtio_mdev_setup_vq(vdev, queue_idx++, +...
2023 Oct 10
1
[PATCH 2/2] virtio-mmio: Support multiple interrupts per device
...@@ static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs, > struct irq_affinity *desc) > { > struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); > - int irq = platform_get_irq(vm_dev->pdev, 0); > - int i, err, queue_idx = 0; > - > - if (irq < 0) > - return irq; > - > - err = request_irq(irq, vm_interrupt, IRQF_SHARED, > - dev_name(&vdev->dev), vm_dev); > - if (err) > - return err; > - > - if (of_proper...
2023 Oct 10
1
[PATCH 2/2] virtio-mmio: Support multiple interrupts per device
...@@ static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs, > struct irq_affinity *desc) > { > struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); > - int irq = platform_get_irq(vm_dev->pdev, 0); > - int i, err, queue_idx = 0; > - > - if (irq < 0) > - return irq; > - > - err = request_irq(irq, vm_interrupt, IRQF_SHARED, > - dev_name(&vdev->dev), vm_dev); > - if (err) > - return err; > - > - if (of_proper...
2019 Jul 02
0
[PATCH v2] virtio-mmio: add error check for platform_get_irq
...uct virtio_device *vdev, unsigned nvqs, > struct irq_affinity *desc) > { > struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev); > - unsigned int irq = platform_get_irq(vm_dev->pdev, 0); > + int irq = platform_get_irq(vm_dev->pdev, 0); > int i, err, queue_idx = 0; > > + if (irq < 0) { > + dev_err(&vdev->dev, "Cannot get IRQ resource\n"); > + return irq; > + } > + > err = request_irq(irq, vm_interrupt, IRQF_SHARED, > dev_name(&vdev->dev), vm_dev); > if (err) > -- > 2.17.1