search for: virtio_mmio_interrupt_status

Displaying 20 results from an estimated 34 matches for "virtio_mmio_interrupt_status".

2014 Nov 13
1
[RFC PATCH] virtio-mmio: support for multiple irqs
...un-plugging), so unless you tell me that the config space is > frequently changes, I'll consider the config event irrelevant from the > performance point of view. > No, change the configuration space not often. >> Therefore the virtio-mmio driver should read the >> "VIRTIO_MMIO_INTERRUPT_STATUS" to get the interrupt reason and check whom this interrupt is to. > > Correct. > >> If we use vhost-net which uses irqfd to inject interrupt, the >> vhost-net doesn't update "VIRTIO_MMIO_INTERRUPT_STATUS", then the >> guest driver can't read the i...
2014 Nov 13
1
[RFC PATCH] virtio-mmio: support for multiple irqs
...un-plugging), so unless you tell me that the config space is > frequently changes, I'll consider the config event irrelevant from the > performance point of view. > No, change the configuration space not often. >> Therefore the virtio-mmio driver should read the >> "VIRTIO_MMIO_INTERRUPT_STATUS" to get the interrupt reason and check whom this interrupt is to. > > Correct. > >> If we use vhost-net which uses irqfd to inject interrupt, the >> vhost-net doesn't update "VIRTIO_MMIO_INTERRUPT_STATUS", then the >> guest driver can't read the i...
2014 Nov 12
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...ot; interrupts here, not message signalled ones) per queue, so they > can be handled by different processors at the same time? > The main issue is that current virtio-mmio only support one interrupt which is shared by config and queues. Therefore the virtio-mmio driver should read the "VIRTIO_MMIO_INTERRUPT_STATUS" to get the interrupt reason and check whom this interrupt is to. If we use vhost-net which uses irqfd to inject interrupt, the vhost-net doesn't update "VIRTIO_MMIO_INTERRUPT_STATUS", then the guest driver can't read the interrupt reason and doesn't call a handler to pr...
2014 Nov 12
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...ot; interrupts here, not message signalled ones) per queue, so they > can be handled by different processors at the same time? > The main issue is that current virtio-mmio only support one interrupt which is shared by config and queues. Therefore the virtio-mmio driver should read the "VIRTIO_MMIO_INTERRUPT_STATUS" to get the interrupt reason and check whom this interrupt is to. If we use vhost-net which uses irqfd to inject interrupt, the vhost-net doesn't update "VIRTIO_MMIO_INTERRUPT_STATUS", then the guest driver can't read the interrupt reason and doesn't call a handler to pr...
2017 Jan 12
1
[PATCH 1/2] virtio_mmio: add standard header file
...ueue - Read Write */ +#define VIRTIO_MMIO_QUEUE_PFN 0x040 + +#endif + + +/* Ready bit for the currently selected queue - Read Write */ +#define VIRTIO_MMIO_QUEUE_READY 0x044 + +/* Queue notifier - Write Only */ +#define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 + +/* Interrupt status - Read Only */ +#define VIRTIO_MMIO_INTERRUPT_STATUS 0x060 + +/* Interrupt acknowledge - Write Only */ +#define VIRTIO_MMIO_INTERRUPT_ACK 0x064 + +/* Device status register - Read Write */ +#define VIRTIO_MMIO_STATUS 0x070 + +/* Selected queue's Descriptor Table address, 64 bits in two halves */ +#define VIRTIO_MMIO_QUEUE_DESC_LOW 0x080 +#define...
2017 Jan 12
1
[PATCH 1/2] virtio_mmio: add standard header file
...ueue - Read Write */ +#define VIRTIO_MMIO_QUEUE_PFN 0x040 + +#endif + + +/* Ready bit for the currently selected queue - Read Write */ +#define VIRTIO_MMIO_QUEUE_READY 0x044 + +/* Queue notifier - Write Only */ +#define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 + +/* Interrupt status - Read Only */ +#define VIRTIO_MMIO_INTERRUPT_STATUS 0x060 + +/* Interrupt acknowledge - Write Only */ +#define VIRTIO_MMIO_INTERRUPT_ACK 0x064 + +/* Device status register - Read Write */ +#define VIRTIO_MMIO_STATUS 0x070 + +/* Selected queue's Descriptor Table address, 64 bits in two halves */ +#define VIRTIO_MMIO_QUEUE_DESC_LOW 0x080 +#define...
2014 Nov 12
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...uration very rarely (eg. change of the media size, usually meaning hot-un-plugging), so unless you tell me that the config space is frequently changes, I'll consider the config event irrelevant from the performance point of view. > Therefore the virtio-mmio driver should read the > "VIRTIO_MMIO_INTERRUPT_STATUS" to get the interrupt reason and check whom this interrupt is to. Correct. > If we use vhost-net which uses irqfd to inject interrupt, the > vhost-net doesn't update "VIRTIO_MMIO_INTERRUPT_STATUS", then the > guest driver can't read the interrupt reason and doesn...
2014 Nov 04
6
[RFC PATCH] virtio-mmio: support for multiple irqs
...ueues and handle a configuration + * change on an interrupt. */ +static irqreturn_t vm_interrupt(int irq, void *opaque) +{ + struct virtio_mmio_device *vm_dev = opaque; + unsigned long status; irqreturn_t ret = IRQ_NONE; /* Read and acknowledge interrupts */ status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); - ret = IRQ_HANDLED; - } + if (unlikely(status & VIRTIO_MMIO_INT_CO...
2014 Nov 04
6
[RFC PATCH] virtio-mmio: support for multiple irqs
...ueues and handle a configuration + * change on an interrupt. */ +static irqreturn_t vm_interrupt(int irq, void *opaque) +{ + struct virtio_mmio_device *vm_dev = opaque; + unsigned long status; irqreturn_t ret = IRQ_NONE; /* Read and acknowledge interrupts */ status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); - ret = IRQ_HANDLED; - } + if (unlikely(status & VIRTIO_MMIO_INT_CO...
2014 Sep 22
1
[PATCH] virtio: unify config_changed handling
...info; - struct virtio_driver *vdrv = container_of(vm_dev->vdev.dev.driver, - struct virtio_driver, driver); unsigned long status; unsigned long flags; irqreturn_t ret = IRQ_NONE; @@ -244,9 +242,8 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) { + virtio_config_...
2014 Sep 22
1
[PATCH] virtio: unify config_changed handling
...info; - struct virtio_driver *vdrv = container_of(vm_dev->vdev.dev.driver, - struct virtio_driver, driver); unsigned long status; unsigned long flags; irqreturn_t ret = IRQ_NONE; @@ -244,9 +242,8 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) { + virtio_config_...
2014 Oct 05
0
[PATCH 02/16] virtio: unify config_changed handling
...info; - struct virtio_driver *vdrv = container_of(vm_dev->vdev.dev.driver, - struct virtio_driver, driver); unsigned long status; unsigned long flags; irqreturn_t ret = IRQ_NONE; @@ -244,9 +242,8 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) { + virtio_config_...
2014 Oct 06
0
[PATCH v2 02/15] virtio: unify config_changed handling
...info; - struct virtio_driver *vdrv = container_of(vm_dev->vdev.dev.driver, - struct virtio_driver, driver); unsigned long status; unsigned long flags; irqreturn_t ret = IRQ_NONE; @@ -244,9 +242,8 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) - && vdrv && vdrv->config_changed) { - vdrv->config_changed(&vm_dev->vdev); + if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) { + virtio_config_...
2014 Nov 11
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...s? or: 2. Literally having a dedicated interrupt line (remember, we're talking "real" interrupts here, not message signalled ones) 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...
2014 Nov 06
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...+static irqreturn_t vm_interrupt(int irq, void *opaque) >> +{ >> + struct virtio_mmio_device *vm_dev = opaque; >> + unsigned long status; >> irqreturn_t ret = IRQ_NONE; >> >> /* Read and acknowledge interrupts */ >> status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); >> writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); >> >> - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) >> - && vdrv && vdrv->config_changed) { >> - vdrv->config_changed(&vm_dev->vdev); >> - ret = IRQ_HANDL...
2014 Nov 06
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...+static irqreturn_t vm_interrupt(int irq, void *opaque) >> +{ >> + struct virtio_mmio_device *vm_dev = opaque; >> + unsigned long status; >> irqreturn_t ret = IRQ_NONE; >> >> /* Read and acknowledge interrupts */ >> status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); >> writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); >> >> - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) >> - && vdrv && vdrv->config_changed) { >> - vdrv->config_changed(&vm_dev->vdev); >> - ret = IRQ_HANDL...
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?
2014 Nov 06
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...nge on an interrupt. */ > +static irqreturn_t vm_interrupt(int irq, void *opaque) > +{ > + struct virtio_mmio_device *vm_dev = opaque; > + unsigned long status; > irqreturn_t ret = IRQ_NONE; > > /* Read and acknowledge interrupts */ > status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); > writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); > > - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) > - && vdrv && vdrv->config_changed) { > - vdrv->config_changed(&vm_dev->vdev); > - ret = IRQ_HANDLED; > - } > + if (...
2014 Nov 06
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...nt irq, void *opaque) > >> +{ > >> + struct virtio_mmio_device *vm_dev = opaque; > >> + unsigned long status; > >> irqreturn_t ret = IRQ_NONE; > >> > >> /* Read and acknowledge interrupts */ > >> status = readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); > >> writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); > >> > >> - if (unlikely(status & VIRTIO_MMIO_INT_CONFIG) > >> - && vdrv && vdrv->config_changed) { > >> - vdrv->config_changed(&vm_dev->vdev); &g...