Displaying 11 results from an estimated 11 matches for "nirq".
Did you mean:
irq
2014 Nov 06
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...evice supports multiple IRQs?
Guest uses vm_try_to_find_vqs to check whether it can get multiple IRQs
like virtio-pci uses vp_try_to_find_vqs. And within function
vm_request_multiple_irqs, guest check whether the number of IRQs host
device gives is equal to the number we want.
for (i = 0; i < nirqs; i++) {
irq = platform_get_irq(vm_dev->pdev, i);
if (irq == -ENXIO)
goto error;
}
If we can't get the expected number of IRQs, return error and this try
fails. Then guest will try two IRQS and single IRQ like virtio-pci.
> Could you please document the new interface?
> E.g....
2014 Nov 06
2
[RFC PATCH] virtio-mmio: support for multiple irqs
...evice supports multiple IRQs?
Guest uses vm_try_to_find_vqs to check whether it can get multiple IRQs
like virtio-pci uses vp_try_to_find_vqs. And within function
vm_request_multiple_irqs, guest check whether the number of IRQs host
device gives is equal to the number we want.
for (i = 0; i < nirqs; i++) {
irq = platform_get_irq(vm_dev->pdev, i);
if (irq == -ENXIO)
goto error;
}
If we can't get the expected number of IRQs, return error and this try
fails. Then guest will try two IRQS and single IRQ like virtio-pci.
> Could you please document the new interface?
> E.g....
2014 Nov 06
0
[RFC PATCH] virtio-mmio: support for multiple irqs
..._vqs. And within function
> vm_request_multiple_irqs, guest check whether the number of IRQs host
> device gives is equal to the number we want.
OK but how does host specify the number of IRQs for a device?
for pci this is done through the MSI-X capability register.
> for (i = 0; i < nirqs; i++) {
> irq = platform_get_irq(vm_dev->pdev, i);
> if (irq == -ENXIO)
> goto error;
> }
>
> If we can't get the expected number of IRQs, return error and this try
> fails. Then guest will try two IRQS and single IRQ like virtio-pci.
>
> > Could you...
2023 Oct 10
1
[PATCH 2/2] virtio-mmio: Support multiple interrupts per device
...gt;dev), vm_dev);
> - if (err)
> - return err;
> -
> - if (of_property_read_bool(vm_dev->pdev->dev.of_node, "wakeup-source"))
> - enable_irq_wake(irq);
> + struct virtio_mmio_vq_info *info;
> + int i, err, irq, nirqs, queue_idx = 0;
> + unsigned int irq_base = UINT_MAX;
>
> for (i = 0; i < nvqs; ++i) {
> if (!names[i]) {
> @@ -519,12 +544,51 @@ static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
> vqs[i] = vm_setup_vq(vdev, qu...
2023 Oct 10
1
[PATCH 2/2] virtio-mmio: Support multiple interrupts per device
...gt;dev), vm_dev);
> - if (err)
> - return err;
> -
> - if (of_property_read_bool(vm_dev->pdev->dev.of_node, "wakeup-source"))
> - enable_irq_wake(irq);
> + struct virtio_mmio_vq_info *info;
> + int i, err, irq, nirqs, queue_idx = 0;
> + unsigned int irq_base = UINT_MAX;
>
> for (i = 0; i < nvqs; ++i) {
> if (!names[i]) {
> @@ -519,12 +544,51 @@ static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
> vqs[i] = vm_setup_vq(vdev, qu...
2014 Nov 06
0
[RFC PATCH] virtio-mmio: support for multiple irqs
...virtqueue *vq, *n;
>
> list_for_each_entry_safe(vq, n, &vdev->vqs, list)
> vm_del_vq(vq);
>
> - free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev);
> + vm_free_irqs(vdev);
> +}
> +
> +static int vm_request_multiple_irqs(struct virtio_device *vdev, int nirqs,
> + bool per_vq_irq)
> +{
> + int err = -ENOMEM;
> + struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
> + unsigned i, v;
> + int irq = 0;
> +
> + vm_dev->num_irqs = nirqs;
> + vm_dev->used_irqs = 0;
> +
> + vm_dev->vm_vq_names = kmalloc_a...
2014 Nov 04
6
[RFC PATCH] virtio-mmio: support for multiple irqs
...l_vqs(struct virtio_device *vdev)
+{
struct virtqueue *vq, *n;
list_for_each_entry_safe(vq, n, &vdev->vqs, list)
vm_del_vq(vq);
- free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev);
+ vm_free_irqs(vdev);
+}
+
+static int vm_request_multiple_irqs(struct virtio_device *vdev, int nirqs,
+ bool per_vq_irq)
+{
+ int err = -ENOMEM;
+ struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
+ unsigned i, v;
+ int irq = 0;
+
+ vm_dev->num_irqs = nirqs;
+ vm_dev->used_irqs = 0;
+
+ vm_dev->vm_vq_names = kmalloc_array(nirqs, sizeof(*vm_dev->vm_vq_names),
+...
2014 Nov 04
6
[RFC PATCH] virtio-mmio: support for multiple irqs
...l_vqs(struct virtio_device *vdev)
+{
struct virtqueue *vq, *n;
list_for_each_entry_safe(vq, n, &vdev->vqs, list)
vm_del_vq(vq);
- free_irq(platform_get_irq(vm_dev->pdev, 0), vm_dev);
+ vm_free_irqs(vdev);
+}
+
+static int vm_request_multiple_irqs(struct virtio_device *vdev, int nirqs,
+ bool per_vq_irq)
+{
+ int err = -ENOMEM;
+ struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vdev);
+ unsigned i, v;
+ int irq = 0;
+
+ vm_dev->num_irqs = nirqs;
+ vm_dev->used_irqs = 0;
+
+ vm_dev->vm_vq_names = kmalloc_array(nirqs, sizeof(*vm_dev->vm_vq_names),
+...
2013 Apr 30
4
Data Abort while in booting when using Julien's new patches on Arndale Board
...eturn par;
}
When I have tired to debugging, I have found " WRITE_CP32(va,
ATS12NSOPR)[1]" that cause data abort. It seems [1] translates stage 1
and 2 MMU and returns PA corresponding input va.
Does anybody see same problem? I attach my log below:
=== log ===
(XEN) /voltage-regulator nirq = 0 naddr = 0
(XEN) handle /fixedregulator@0
(XEN) /fixedregulator@0 nirq = 0 naddr = 0
(XEN) CPU0: Unexpected Trap: Data Abort
(XEN) ----[ Xen-4.3-unstable arm32 debug=y Tainted: C ]----
(XEN) CPU: 0
(XEN) PC: 0024d78c exynos5_specific_mapping+0x30/0xf4
(XEN) CPSR: 2000015a MODE:Hyp...
2009 May 20
9
[PATCH] qemu: msi irq allocation api
...it a/hw/pci.h b/hw/pci.h
index a629e60..8883f08 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -280,4 +280,14 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base,
PCIBus *sh_pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
qemu_irq *pic, int devfn_min, int nirq);
+/* MSI/MSI-X */
+
+struct pci_msi_ops {
+ qemu_irq *(*allocate)(int nentries);
+ int (*update)(qemu_irq, uint64_t addr, uint32_t data, int masked);
+ void (*free)(qemu_irq *);
+};
+
+extern struct pci_msi_ops *pci_msi_ops;
+
#endif
diff --git a/qemu-common.h b/qemu-common.h
index c90...
2009 May 20
9
[PATCH] qemu: msi irq allocation api
...it a/hw/pci.h b/hw/pci.h
index a629e60..8883f08 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -280,4 +280,14 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base,
PCIBus *sh_pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
qemu_irq *pic, int devfn_min, int nirq);
+/* MSI/MSI-X */
+
+struct pci_msi_ops {
+ qemu_irq *(*allocate)(int nentries);
+ int (*update)(qemu_irq, uint64_t addr, uint32_t data, int masked);
+ void (*free)(qemu_irq *);
+};
+
+extern struct pci_msi_ops *pci_msi_ops;
+
#endif
diff --git a/qemu-common.h b/qemu-common.h
index c90...