search for: virtio_mmio_int_vring

Displaying 20 results from an estimated 21 matches for "virtio_mmio_int_vring".

2014 Nov 04
6
[RFC PATCH] virtio-mmio: support for multiple irqs
...ikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); - ret = IRQ_HANDLED; - } + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) + return vm_config_changed(irq, opaque); - if (likely(status & VIRTIO_MMIO_INT_VRING)) { - spin_lock_irqsave(&vm_dev->lock, flags); - list_for_each_entry(info, &vm_dev->virtqueues, node) - ret |= vring_interrupt(irq, info->vq); - spin_unlock_irqrestore(&vm_dev->lock, flags); - } + if (likely(status & VIRTIO_MMIO_INT_VRING)) + return vm_vring_interr...
2014 Nov 04
6
[RFC PATCH] virtio-mmio: support for multiple irqs
...ikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); - ret = IRQ_HANDLED; - } + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) + return vm_config_changed(irq, opaque); - if (likely(status & VIRTIO_MMIO_INT_VRING)) { - spin_lock_irqsave(&vm_dev->lock, flags); - list_for_each_entry(info, &vm_dev->virtqueues, node) - ret |= vring_interrupt(irq, info->vq); - spin_unlock_irqrestore(&vm_dev->lock, flags); - } + if (likely(status & VIRTIO_MMIO_INT_VRING)) + return vm_vring_interr...
2014 Nov 11
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...per queue, so they can be handled by different processors at the same time? Now, if it's only about 1, the simplest solution would be to extend the VIRTIO_MMIO_INTERRUPT_STATUS register to signal up to 30 queues "readiness" in bits 2-31, still keeping bit 0 as a "combined" VIRTIO_MMIO_INT_VRING. In case when VIRTIO_MMIO_INT_VRING is set and none of the "individual" bits is (a device which doesn't support this feature or one that has more than 30 queues and of of those is ready) we would fall back to the original "kick all queues" approach. This could be a useful (a...
2014 Nov 06
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...&& vdrv->config_changed) { >> - vdrv->config_changed(&vm_dev->vdev); >> - ret = IRQ_HANDLED; >> - } >> + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) >> + return vm_config_changed(irq, opaque); >> >> - if (likely(status & VIRTIO_MMIO_INT_VRING)) { >> - spin_lock_irqsave(&vm_dev->lock, flags); >> - list_for_each_entry(info, &vm_dev->virtqueues, node) >> - ret |= vring_interrupt(irq, info->vq); >> - spin_unlock_irqrestore(&vm_dev->lock, flags); >> - } >> + if (likely(status &...
2014 Nov 06
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...&& vdrv->config_changed) { >> - vdrv->config_changed(&vm_dev->vdev); >> - ret = IRQ_HANDLED; >> - } >> + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) >> + return vm_config_changed(irq, opaque); >> >> - if (likely(status & VIRTIO_MMIO_INT_VRING)) { >> - spin_lock_irqsave(&vm_dev->lock, flags); >> - list_for_each_entry(info, &vm_dev->virtqueues, node) >> - ret |= vring_interrupt(irq, info->vq); >> - spin_unlock_irqrestore(&vm_dev->lock, flags); >> - } >> + if (likely(status &...
2014 Nov 06
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...G) > - && vdrv && vdrv->config_changed) { > - vdrv->config_changed(&vm_dev->vdev); > - ret = IRQ_HANDLED; > - } > + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) > + return vm_config_changed(irq, opaque); > > - if (likely(status & VIRTIO_MMIO_INT_VRING)) { > - spin_lock_irqsave(&vm_dev->lock, flags); > - list_for_each_entry(info, &vm_dev->virtqueues, node) > - ret |= vring_interrupt(irq, info->vq); > - spin_unlock_irqrestore(&vm_dev->lock, flags); > - } > + if (likely(status & VIRTIO_MMIO_INT_VRI...
2014 Nov 06
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...{ > >> - vdrv->config_changed(&vm_dev->vdev); > >> - ret = IRQ_HANDLED; > >> - } > >> + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) > >> + return vm_config_changed(irq, opaque); > >> > >> - if (likely(status & VIRTIO_MMIO_INT_VRING)) { > >> - spin_lock_irqsave(&vm_dev->lock, flags); > >> - list_for_each_entry(info, &vm_dev->virtqueues, node) > >> - ret |= vring_interrupt(irq, info->vq); > >> - spin_unlock_irqrestore(&vm_dev->lock, flags); > >> - } >...
2023 Oct 10
1
[PATCH 2/2] virtio-mmio: Support multiple interrupts per device
...IRTIO_MMIO_INT_CONFIG)) { > + writel(status & VIRTIO_MMIO_INT_CONFIG, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); > virtio_config_changed(&vm_dev->vdev); > ret = IRQ_HANDLED; > } > > if (likely(status & VIRTIO_MMIO_INT_VRING)) { > + writel(status & VIRTIO_MMIO_INT_VRING, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); > spin_lock_irqsave(&vm_dev->lock, flags); > list_for_each_entry(info, &vm_dev->virtqueues, node) > ret |=...
2023 Oct 10
1
[PATCH 2/2] virtio-mmio: Support multiple interrupts per device
...IRTIO_MMIO_INT_CONFIG)) { > + writel(status & VIRTIO_MMIO_INT_CONFIG, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); > virtio_config_changed(&vm_dev->vdev); > ret = IRQ_HANDLED; > } > > if (likely(status & VIRTIO_MMIO_INT_VRING)) { > + writel(status & VIRTIO_MMIO_INT_VRING, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); > spin_lock_irqsave(&vm_dev->lock, flags); > list_for_each_entry(info, &vm_dev->virtqueues, node) > ret |=...
2011 Oct 27
1
[PATCH v3] virtio: Add platform bus driver for memory mapped virtio device
On Mon, 2011-10-24 at 03:33 +0100, Rusty Russell wrote: > No, that's it I think. Please send a diff for the documentation, since > I'm updating the LyX master and I've already applied your previous > version. Here it goes (below). Also do you think you would be able to merge the driver (corresponding v4 patch follows) in the 3.2 merge window that seems to have just opened?
2011 Oct 27
1
[PATCH v3] virtio: Add platform bus driver for memory mapped virtio device
On Mon, 2011-10-24 at 03:33 +0100, Rusty Russell wrote: > No, that's it I think. Please send a diff for the documentation, since > I'm updating the LyX master and I've already applied your previous > version. Here it goes (below). Also do you think you would be able to merge the driver (corresponding v4 patch follows) in the 3.2 merge window that seems to have just opened?
2017 Feb 04
0
[PATCH] virtio_mmio: remove virtio_mmio_vq_info
...irtio_mmio_device *vm_dev = opaque; - struct virtio_mmio_vq_info *info; unsigned long status; - unsigned long flags; irqreturn_t ret = IRQ_NONE; /* Read and acknowledge interrupts */ @@ -301,10 +285,10 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) } if (likely(status & VIRTIO_MMIO_INT_VRING)) { - spin_lock_irqsave(&vm_dev->lock, flags); - list_for_each_entry(info, &vm_dev->virtqueues, node) - ret |= vring_interrupt(irq, info->vq); - spin_unlock_irqrestore(&vm_dev->lock, flags); + struct virtqueue *vq; + + list_for_each_entry(vq, &vm_dev->vdev.vqs,...
2017 Feb 04
0
[PATCH] virtio_mmio: remove virtio_mmio_vq_info
...irtio_mmio_device *vm_dev = opaque; - struct virtio_mmio_vq_info *info; unsigned long status; - unsigned long flags; irqreturn_t ret = IRQ_NONE; /* Read and acknowledge interrupts */ @@ -301,10 +285,10 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) } if (likely(status & VIRTIO_MMIO_INT_VRING)) { - spin_lock_irqsave(&vm_dev->lock, flags); - list_for_each_entry(info, &vm_dev->virtqueues, node) - ret |= vring_interrupt(irq, info->vq); - spin_unlock_irqrestore(&vm_dev->lock, flags); + struct virtqueue *vq; + + list_for_each_entry(vq, &vm_dev->vdev.vqs,...
2014 Nov 12
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...ne per queue for virtio-mmio and it can work with irqfd. > Now, if it's only about 1, the simplest solution would be to extend the > VIRTIO_MMIO_INTERRUPT_STATUS register to signal up to 30 queues > "readiness" in bits 2-31, still keeping bit 0 as a "combined" > VIRTIO_MMIO_INT_VRING. In case when VIRTIO_MMIO_INT_VRING is set and > none of the "individual" bits is (a device which doesn't support this > feature or one that has more than 30 queues and of of those is ready) we > would fall back to the original "kick all queues" approach. This could...
2014 Nov 12
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...ne per queue for virtio-mmio and it can work with irqfd. > Now, if it's only about 1, the simplest solution would be to extend the > VIRTIO_MMIO_INTERRUPT_STATUS register to signal up to 30 queues > "readiness" in bits 2-31, still keeping bit 0 as a "combined" > VIRTIO_MMIO_INT_VRING. In case when VIRTIO_MMIO_INT_VRING is set and > none of the "individual" bits is (a device which doesn't support this > feature or one that has more than 30 queues and of of those is ready) we > would fall back to the original "kick all queues" approach. This could...
2017 Jan 12
1
[PATCH 1/2] virtio_mmio: add standard header file
...micity value */ +#define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc + +/* The config space is defined by each driver as + * the per-driver configuration space - Read Write */ +#define VIRTIO_MMIO_CONFIG 0x100 + + + +/* + * Interrupt flags (re: interrupt status & acknowledge registers) + */ + +#define VIRTIO_MMIO_INT_VRING (1 << 0) +#define VIRTIO_MMIO_INT_CONFIG (1 << 1) + +#endif -- MST
2017 Jan 12
1
[PATCH 1/2] virtio_mmio: add standard header file
...micity value */ +#define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc + +/* The config space is defined by each driver as + * the per-driver configuration space - Read Write */ +#define VIRTIO_MMIO_CONFIG 0x100 + + + +/* + * Interrupt flags (re: interrupt status & acknowledge registers) + */ + +#define VIRTIO_MMIO_INT_VRING (1 << 0) +#define VIRTIO_MMIO_INT_CONFIG (1 << 1) + +#endif -- MST
2012 Apr 07
0
[PATCH 05/14] kvm tools: Add virtio-mmio support
...f (vdev->ops->notify_vq_eventfd) + vdev->ops->notify_vq_eventfd(kvm, vmmio->dev, vq, ioevent.fd); + + return 0; +} + +int virtio_mmio_signal_vq(struct kvm *kvm, struct virtio_device *vdev, u32 vq) +{ + struct virtio_mmio *vmmio = vdev->virtio; + + vmmio->hdr.interrupt_state |= VIRTIO_MMIO_INT_VRING; + kvm__irq_trigger(vmmio->kvm, vmmio->irq); + + return 0; +} + +int virtio_mmio_signal_config(struct kvm *kvm, struct virtio_device *vdev) +{ + struct virtio_mmio *vmmio = vdev->virtio; + + vmmio->hdr.interrupt_state |= VIRTIO_MMIO_INT_CONFIG; + kvm__irq_trigger(vmmio->kvm, vmmio-&g...
2012 Apr 07
0
[PATCH 05/14] kvm tools: Add virtio-mmio support
...f (vdev->ops->notify_vq_eventfd) + vdev->ops->notify_vq_eventfd(kvm, vmmio->dev, vq, ioevent.fd); + + return 0; +} + +int virtio_mmio_signal_vq(struct kvm *kvm, struct virtio_device *vdev, u32 vq) +{ + struct virtio_mmio *vmmio = vdev->virtio; + + vmmio->hdr.interrupt_state |= VIRTIO_MMIO_INT_VRING; + kvm__irq_trigger(vmmio->kvm, vmmio->irq); + + return 0; +} + +int virtio_mmio_signal_config(struct kvm *kvm, struct virtio_device *vdev) +{ + struct virtio_mmio *vmmio = vdev->virtio; + + vmmio->hdr.interrupt_state |= VIRTIO_MMIO_INT_CONFIG; + kvm__irq_trigger(vmmio->kvm, vmmio-&g...
2011 Nov 15
2
[RFC] kvm tools: Add support for virtio-mmio
...al_vq, + .signal_config = virtio_mmio__signal_config, + .init = virtio_mmio__init, + }; + return &virtio_pci_trans; +}; + +int virtio_mmio__signal_vq(struct kvm *kvm, struct virtio_trans *vtrans, u32 vq) +{ + struct virtio_mmio *vmmio = vtrans->virtio; + + vmmio->hdr.interrupt_state |= VIRTIO_MMIO_INT_VRING; + kvm__irq_trigger(vmmio->kvm, vmmio->irq); + + return 0; +} + +int virtio_mmio__signal_config(struct kvm *kvm, struct virtio_trans *vtrans) +{ + struct virtio_mmio *vmmio = vtrans->virtio; + + vmmio->hdr.interrupt_state |= VIRTIO_MMIO_INT_CONFIG; + kvm__irq_trigger(vmmio->kvm, vmmi...