On Thu, Dec 11, 2014 at 04:30:33PM +0000, Andre Przywara wrote:
> Currently we describe every interrupt for each device in the FDT
> as being edge triggered.
> Add a parameter to the irq property generation to allow devices to
> specify their interrupts as level triggered if needed.
> 
> Signed-off-by: Andre Przywara <[email protected]>
> ---
>  tools/kvm/arm/fdt.c            |    6 +++---
>  tools/kvm/hw/serial.c          |    5 +++--
>  tools/kvm/include/kvm/ioport.h |    4 +++-
>  tools/kvm/ioport.c             |    6 ++++--
>  tools/kvm/virtio/mmio.c        |    5 +++--
>  5 files changed, 16 insertions(+), 10 deletions(-)

[...]

> @@ -71,7 +72,8 @@ static void generate_ioport_fdt_node(void *fdt,
>  static void generate_ioport_fdt_node(void *fdt,
>                                    struct device_header *dev_hdr,
>                                    void (*generate_irq_prop)(void *fdt,
> -                                                            u8 irq))
> +                                                            u8 irq,
> +                                                            u32 irq_type))
>  {
>       die("Unable to generate device tree nodes without libfdt\n");
>  }
> diff --git a/tools/kvm/virtio/mmio.c b/tools/kvm/virtio/mmio.c
> index 3a2bd62..28b0651 100644
> --- a/tools/kvm/virtio/mmio.c
> +++ b/tools/kvm/virtio/mmio.c
> @@ -233,7 +233,8 @@ static void virtio_mmio_mmio_callback(struct kvm_cpu 
> *vcpu,
>  static void generate_virtio_mmio_fdt_node(void *fdt,
>                                         struct device_header *dev_hdr,
>                                         void (*generate_irq_prop)(void *fdt,
> -                                                                 u8 irq))
> +                                                                 u8 irq,
> +                                                                 u32 type))
>  {
>       char dev_name[DEVICE_NAME_MAX_LEN];
>       struct virtio_mmio *vmmio = container_of(dev_hdr,
> @@ -250,7 +251,7 @@ static void generate_virtio_mmio_fdt_node(void *fdt,
>       _FDT(fdt_begin_node(fdt, dev_name));
>       _FDT(fdt_property_string(fdt, "compatible", "virtio,mmio"));
>       _FDT(fdt_property(fdt, "reg", reg_prop, sizeof(reg_prop)));
> -     generate_irq_prop(fdt, vmmio->irq);
> +     generate_irq_prop(fdt, vmmio->irq, GIC_FDT_IRQ_FLAGS_EDGE_LO_HI);

This is a GIC-specific #define in arch-agnostic code. I think we should have
a new enum type for describing edge and level interrupts, then just use
that instead.

Will
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to