All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: xen-devel@lists.xenproject.org
Cc: Keir Fraser <keir@xen.org>,
	ian.campbell@citrix.com, tim@xen.org,
	Jan Beulich <jbeulich@suse.com>,
	"Stefano.Stabellini@citrix.com" <Stefano.Stabellini@citrix.com>,
	Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
	Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>,
	Xiantao Zhang <xiantao.zhang@intel.com>
Subject: Re: [PATCH v6 5/6] xen/arm: IRQ: extend {request, setup}_irq to take an irqflags in parameter
Date: Mon, 12 May 2014 18:59:54 +0100	[thread overview]
Message-ID: <53710C1A.3010409@linaro.org> (raw)
In-Reply-To: <1399917438-21475-6-git-send-email-julien.grall@linaro.org>

I forgot to cc Aravind.

On 05/12/2014 06:57 PM, Julien Grall wrote:
> The irqflags will be used later on ARM to know if we can shared the IRQ or not.
> 
> On x86, the irqflags should always be 0.
> 
> Signed-off-by: Julien Grall <julien.grall@linaro.org>
> Acked-by: Jan Beulich <jbeulich@suse.com>
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
> Cc: Keir Fraser <keir@xen.org>
> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
> Cc: Xiantao Zhang <xiantao.zhang@intel.com>
> ---
>     Changes in v4:
>         - request_irq should pass irqflags to setup irq on x86
> 
>     Changes in v3:
>         - Patch added
> ---
>  xen/arch/arm/gic.c                       |    2 +-
>  xen/arch/arm/irq.c                       |    6 +++---
>  xen/arch/arm/time.c                      |    6 +++---
>  xen/arch/x86/hpet.c                      |    2 +-
>  xen/arch/x86/i8259.c                     |    2 +-
>  xen/arch/x86/irq.c                       |    9 ++++++---
>  xen/arch/x86/time.c                      |    2 +-
>  xen/drivers/char/exynos4210-uart.c       |    2 +-
>  xen/drivers/char/ns16550.c               |    2 +-
>  xen/drivers/char/omap-uart.c             |    2 +-
>  xen/drivers/char/pl011.c                 |    2 +-
>  xen/drivers/passthrough/amd/iommu_init.c |    2 +-
>  xen/drivers/passthrough/vtd/iommu.c      |    2 +-
>  xen/include/xen/irq.h                    |    5 +++--
>  14 files changed, 25 insertions(+), 21 deletions(-)
> 
> diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
> index b9fa73d..ff1addc 100644
> --- a/xen/arch/arm/gic.c
> +++ b/xen/arch/arm/gic.c
> @@ -887,7 +887,7 @@ void gic_dump_info(struct vcpu *v)
>  
>  void __cpuinit init_maintenance_interrupt(void)
>  {
> -    request_irq(gic.maintenance_irq, maintenance_interrupt,
> +    request_irq(gic.maintenance_irq, 0, maintenance_interrupt,
>                  "irq-maintenance", NULL);
>  }
>  
> diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
> index 8e45b9e..5226b58 100644
> --- a/xen/arch/arm/irq.c
> +++ b/xen/arch/arm/irq.c
> @@ -133,7 +133,7 @@ static inline struct domain *irq_get_domain(struct irq_desc *desc)
>      return desc->action->dev_id;
>  }
>  
> -int request_irq(unsigned int irq,
> +int request_irq(unsigned int irq, unsigned int irqflags,
>                  void (*handler)(int, void *, struct cpu_user_regs *),
>                  const char *devname, void *dev_id)
>  {
> @@ -160,7 +160,7 @@ int request_irq(unsigned int irq,
>      action->dev_id = dev_id;
>      action->free_on_release = 1;
>  
> -    retval = setup_irq(irq, action);
> +    retval = setup_irq(irq, irqflags, action);
>      if ( retval )
>          xfree(action);
>  
> @@ -268,7 +268,7 @@ static int __setup_irq(struct irq_desc *desc, struct irqaction *new)
>      return 0;
>  }
>  
> -int setup_irq(unsigned int irq, struct irqaction *new)
> +int setup_irq(unsigned int irq, unsigned int irqflags, struct irqaction *new)
>  {
>      int rc;
>      unsigned long flags;
> diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
> index 7eb480e..0395b7b 100644
> --- a/xen/arch/arm/time.c
> +++ b/xen/arch/arm/time.c
> @@ -236,11 +236,11 @@ void __cpuinit init_timer_interrupt(void)
>      WRITE_SYSREG32(0, CNTHP_CTL_EL2);   /* Hypervisor's timer disabled */
>      isb();
>  
> -    request_irq(timer_irq[TIMER_HYP_PPI], timer_interrupt,
> +    request_irq(timer_irq[TIMER_HYP_PPI], 0, timer_interrupt,
>                  "hyptimer", NULL);
> -    request_irq(timer_irq[TIMER_VIRT_PPI], vtimer_interrupt,
> +    request_irq(timer_irq[TIMER_VIRT_PPI], 0, vtimer_interrupt,
>                     "virtimer", NULL);
> -    request_irq(timer_irq[TIMER_PHYS_NONSECURE_PPI], timer_interrupt,
> +    request_irq(timer_irq[TIMER_PHYS_NONSECURE_PPI], 0, timer_interrupt,
>                  "phytimer", NULL);
>  }
>  
> diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
> index 3a4f7e8..0b13f52 100644
> --- a/xen/arch/x86/hpet.c
> +++ b/xen/arch/x86/hpet.c
> @@ -355,7 +355,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>      hpet_write32(cfg, HPET_Tn_CFG(ch->idx));
>  
>      desc->handler = &hpet_msi_type;
> -    ret = request_irq(ch->msi.irq, hpet_interrupt_handler, "HPET", ch);
> +    ret = request_irq(ch->msi.irq, 0, hpet_interrupt_handler, "HPET", ch);
>      if ( ret >= 0 )
>          ret = __hpet_setup_msi_irq(desc);
>      if ( ret < 0 )
> diff --git a/xen/arch/x86/i8259.c b/xen/arch/x86/i8259.c
> index 9fec490..a71f734 100644
> --- a/xen/arch/x86/i8259.c
> +++ b/xen/arch/x86/i8259.c
> @@ -433,6 +433,6 @@ void __init init_IRQ(void)
>      outb_p(LATCH & 0xff, PIT_CH0); /* LSB */
>      outb(LATCH >> 8, PIT_CH0);     /* MSB */
>  
> -    setup_irq(2, &cascade);
> +    setup_irq(2, 0, &cascade);
>  }
>  
> diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
> index 727472d..dafd338 100644
> --- a/xen/arch/x86/irq.c
> +++ b/xen/arch/x86/irq.c
> @@ -949,7 +949,7 @@ static int __init irq_ratelimit_init(void)
>  }
>  __initcall(irq_ratelimit_init);
>  
> -int __init request_irq(unsigned int irq,
> +int __init request_irq(unsigned int irq, unsigned int irqflags,
>          void (*handler)(int, void *, struct cpu_user_regs *),
>          const char * devname, void *dev_id)
>  {
> @@ -976,7 +976,7 @@ int __init request_irq(unsigned int irq,
>      action->dev_id = dev_id;
>      action->free_on_release = 1;
>  
> -    retval = setup_irq(irq, action);
> +    retval = setup_irq(irq, irqflags, action);
>      if (retval)
>          xfree(action);
>  
> @@ -1005,11 +1005,14 @@ void __init release_irq(unsigned int irq, const void *dev_id)
>          xfree(action);
>  }
>  
> -int __init setup_irq(unsigned int irq, struct irqaction *new)
> +int __init setup_irq(unsigned int irq, unsigned int irqflags,
> +                     struct irqaction *new)
>  {
>      struct irq_desc *desc;
>      unsigned long flags;
>  
> +    ASSERT(irqflags == 0);
> +
>      desc = irq_to_desc(irq);
>   
>      spin_lock_irqsave(&desc->lock,flags);
> diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
> index b2dbde7..a4e1656 100644
> --- a/xen/arch/x86/time.c
> +++ b/xen/arch/x86/time.c
> @@ -1473,7 +1473,7 @@ void __init early_time_init(void)
>      printk("Detected %lu.%03lu MHz processor.\n", 
>             cpu_khz / 1000, cpu_khz % 1000);
>  
> -    setup_irq(0, &irq0);
> +    setup_irq(0, 0, &irq0);
>  }
>  
>  /* keep pit enabled for pit_broadcast working while cpuidle enabled */
> diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos4210-uart.c
> index 404ce05..cba8729 100644
> --- a/xen/drivers/char/exynos4210-uart.c
> +++ b/xen/drivers/char/exynos4210-uart.c
> @@ -197,7 +197,7 @@ static void __init exynos4210_uart_init_postirq(struct serial_port *port)
>      uart->irqaction.name    = "exynos4210_uart";
>      uart->irqaction.dev_id  = port;
>  
> -    if ( (rc = setup_irq(uart->irq, &uart->irqaction)) != 0 )
> +    if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>          dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n",
>                  uart->irq);
>  
> diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c
> index 6691806..161b251 100644
> --- a/xen/drivers/char/ns16550.c
> +++ b/xen/drivers/char/ns16550.c
> @@ -609,7 +609,7 @@ static void __init ns16550_init_postirq(struct serial_port *port)
>          uart->irqaction.handler = ns16550_interrupt;
>          uart->irqaction.name    = "ns16550";
>          uart->irqaction.dev_id  = port;
> -        if ( (rc = setup_irq(uart->irq, &uart->irqaction)) != 0 )
> +        if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>              printk("ERROR: Failed to allocate ns16550 IRQ %d\n", uart->irq);
>      }
>  
> diff --git a/xen/drivers/char/omap-uart.c b/xen/drivers/char/omap-uart.c
> index e598785..a798b8d 100644
> --- a/xen/drivers/char/omap-uart.c
> +++ b/xen/drivers/char/omap-uart.c
> @@ -205,7 +205,7 @@ static void __init omap_uart_init_postirq(struct serial_port *port)
>      uart->irqaction.name = "omap_uart";
>      uart->irqaction.dev_id = port;
>  
> -    if ( setup_irq(uart->irq, &uart->irqaction) != 0 )
> +    if ( setup_irq(uart->irq, 0, &uart->irqaction) != 0 )
>      {
>          dprintk(XENLOG_ERR, "Failed to allocated omap_uart IRQ %d\n",
>                  uart->irq);
> diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c
> index 89bda94..dd19ce8 100644
> --- a/xen/drivers/char/pl011.c
> +++ b/xen/drivers/char/pl011.c
> @@ -137,7 +137,7 @@ static void __init pl011_init_postirq(struct serial_port *port)
>          uart->irqaction.handler = pl011_interrupt;
>          uart->irqaction.name    = "pl011";
>          uart->irqaction.dev_id  = port;
> -        if ( (rc = setup_irq(uart->irq, &uart->irqaction)) != 0 )
> +        if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
>              printk("ERROR: Failed to allocate pl011 IRQ %d\n", uart->irq);
>      }
>  
> diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c
> index 4686813..6ae44d9 100644
> --- a/xen/drivers/passthrough/amd/iommu_init.c
> +++ b/xen/drivers/passthrough/amd/iommu_init.c
> @@ -815,7 +815,7 @@ static bool_t __init set_iommu_interrupt_handler(struct amd_iommu *iommu)
>          handler = &iommu_msi_type;
>      ret = __setup_msi_irq(irq_to_desc(irq), &iommu->msi, handler);
>      if ( !ret )
> -        ret = request_irq(irq, iommu_interrupt_handler, "amd_iommu", iommu);
> +        ret = request_irq(irq, 0, iommu_interrupt_handler, "amd_iommu", iommu);
>      if ( ret )
>      {
>          destroy_irq(irq);
> diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
> index abaa8c9..c94b0d1 100644
> --- a/xen/drivers/passthrough/vtd/iommu.c
> +++ b/xen/drivers/passthrough/vtd/iommu.c
> @@ -1082,7 +1082,7 @@ static int __init iommu_set_interrupt(struct acpi_drhd_unit *drhd)
>  
>      desc = irq_to_desc(irq);
>      desc->handler = &dma_msi_type;
> -    ret = request_irq(irq, iommu_page_fault, "dmar", iommu);
> +    ret = request_irq(irq, 0, iommu_page_fault, "dmar", iommu);
>      if ( ret )
>      {
>          desc->handler = &no_irq_type;
> diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h
> index 1f8bdb3..f9a18d8 100644
> --- a/xen/include/xen/irq.h
> +++ b/xen/include/xen/irq.h
> @@ -89,9 +89,10 @@ int arch_init_one_irq_desc(struct irq_desc *);
>  
>  #define irq_desc_initialized(desc) ((desc)->handler != NULL)
>  
> -extern int setup_irq(unsigned int irq, struct irqaction *);
> +extern int setup_irq(unsigned int irq, unsigned int irqflags,
> +                     struct irqaction *);
>  extern void release_irq(unsigned int irq, const void *dev_id);
> -extern int request_irq(unsigned int irq,
> +extern int request_irq(unsigned int irq, unsigned int irqflags,
>                 void (*handler)(int, void *, struct cpu_user_regs *),
>                 const char * devname, void *dev_id);
>  
> 


-- 
Julien Grall

  reply	other threads:[~2014-05-12 17:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-12 17:57 [PATCH v6 0/6] xen/arm: Interrupt management reworking Julien Grall
2014-05-12 17:57 ` [PATCH v6 1/6] xen/arm: IRQ: Store IRQ type in arch_irq_desc Julien Grall
2014-05-15 15:45   ` Ian Campbell
2014-05-15 17:03     ` Julien Grall
2014-05-16 10:16       ` Ian Campbell
2014-05-16 10:43         ` Julien Grall
2014-05-12 17:57 ` [PATCH v6 2/6] xen/arm: IRQ: Replace {request, setup}_dt_irq by {request, setup}_irq Julien Grall
2014-05-12 17:57 ` [PATCH v6 3/6] xen/arm: Replace route_guest_dt_irq by route_guest_irq Julien Grall
2014-05-15 15:46   ` Ian Campbell
2014-05-12 17:57 ` [PATCH v6 4/6] xen: IRQ: Add dev_id parameter to release_irq Julien Grall
2014-05-12 17:57 ` [PATCH v6 5/6] xen/arm: IRQ: extend {request, setup}_irq to take an irqflags in parameter Julien Grall
2014-05-12 17:59   ` Julien Grall [this message]
2014-05-12 17:57 ` [PATCH v6 6/6] xen/arm: IRQ: Handle multiple action per IRQ Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53710C1A.3010409@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=Aravind.Gopalakrishnan@amd.com \
    --cc=Stefano.Stabellini@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=xiantao.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.