[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 5/6] xen/arm: IRQ: extend {request, setup}_irq to take an irqflags in parameter
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@xxxxxxxxxx> > Acked-by: Jan Beulich <jbeulich@xxxxxxxx> > Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: Keir Fraser <keir@xxxxxxx> > Cc: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx> > Cc: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> > --- > 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |