lkml.org 
[lkml]   [2011]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/2] x86/dtb: make irq host list accessible
    On Wed, Apr 27, 2011 at 04:34:23PM +0200, Sebastian Andrzej Siewior wrote:
    > From: Torben Hohn <torbenh@linutronix.de>
    >
    > There is an gpio irq chip comming which needs this from the outside.
    > There is no EXPORT_SYMBOL because this does not yet work in modules.
    >
    > Signed-off-by: Torben Hohn <torbenh@linutronix.de>
    > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    > ---
    > arch/x86/include/asm/irq_controller.h | 2 ++
    > arch/x86/kernel/devicetree.c | 15 +++++++++++----
    > 2 files changed, 13 insertions(+), 4 deletions(-)

    Can you rework this to sit on top of the of_irq_domain series I sent
    out yesterday? I *really* hope to get of_irq_domain merged into .40,
    but this change would conflict.

    Thanks,
    g.

    >
    > diff --git a/arch/x86/include/asm/irq_controller.h b/arch/x86/include/asm/irq_controller.h
    > index 423bbbd..04fecc0 100644
    > --- a/arch/x86/include/asm/irq_controller.h
    > +++ b/arch/x86/include/asm/irq_controller.h
    > @@ -9,4 +9,6 @@ struct irq_domain {
    > struct list_head l;
    > };
    >
    > +extern void irq_add_of_interrupt_host(struct irq_domain *ih);
    > +extern void irq_remove_of_interrupt_host(struct irq_domain *ih);
    > #endif
    > diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
    > index e90f084..58c4208 100644
    > --- a/arch/x86/kernel/devicetree.c
    > +++ b/arch/x86/kernel/devicetree.c
    > @@ -26,8 +26,7 @@ static DEFINE_RAW_SPINLOCK(big_irq_lock);
    >
    > int __initdata of_ioapic;
    >
    > -#ifdef CONFIG_X86_IO_APIC
    > -static void add_interrupt_host(struct irq_domain *ih)
    > +void irq_add_of_interrupt_host(struct irq_domain *ih)
    > {
    > unsigned long flags;
    >
    > @@ -35,7 +34,15 @@ static void add_interrupt_host(struct irq_domain *ih)
    > list_add(&ih->l, &irq_domains);
    > raw_spin_unlock_irqrestore(&big_irq_lock, flags);
    > }
    > -#endif
    > +
    > +void irq_remove_of_interrupt_host(struct irq_domain *ih)
    > +{
    > + unsigned long flags;
    > +
    > + raw_spin_lock_irqsave(&big_irq_lock, flags);
    > + list_del(&ih->l);
    > + raw_spin_unlock_irqrestore(&big_irq_lock, flags);
    > +}
    >
    > static struct irq_domain *get_ih_from_node(struct device_node *controller)
    > {
    > @@ -415,7 +422,7 @@ static void __init ioapic_add_ofnode(struct device_node *np)
    > id->controller = np;
    > id->xlate = ioapic_xlate;
    > id->priv = (void *)i;
    > - add_interrupt_host(id);
    > + irq_add_of_interrupt_host(id);
    > return;
    > }
    > }
    > --
    > 1.7.4.4
    >


    \
     
     \ /
      Last update: 2011-04-30 00:29    [W:0.046 / U:0.548 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site