lkml.org 
[lkml]   [2010]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 32/38] sparseirq: change irq_desc_ptrs to static
    add replace_irq_desc()

    -v2: remove unneeded boundary check in replace_irq_desc

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    ---
    kernel/irq/handle.c | 7 ++++++-
    kernel/irq/internals.h | 6 +-----
    kernel/irq/numa_migrate.c | 4 ++--
    3 files changed, 9 insertions(+), 8 deletions(-)

    diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
    index 0e823c0..266f798 100644
    --- a/kernel/irq/handle.c
    +++ b/kernel/irq/handle.c
    @@ -127,7 +127,7 @@ static void init_one_irq_desc(int irq, struct irq_desc *desc, int node)
    */
    DEFINE_RAW_SPINLOCK(sparse_irq_lock);

    -struct irq_desc **irq_desc_ptrs __read_mostly;
    +static struct irq_desc **irq_desc_ptrs __read_mostly;

    static struct irq_desc irq_desc_legacy[NR_IRQS_LEGACY] __cacheline_aligned_in_smp = {
    [0 ... NR_IRQS_LEGACY-1] = {
    @@ -192,6 +192,11 @@ struct irq_desc *irq_to_desc(unsigned int irq)
    return NULL;
    }

    +void replace_irq_desc(unsigned int irq, struct irq_desc *desc)
    +{
    + irq_desc_ptrs[irq] = desc;
    +}
    +
    struct irq_desc * __ref irq_to_desc_alloc_node(unsigned int irq, int node)
    {
    struct irq_desc *desc;
    diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
    index b2821f0..c63f3bc 100644
    --- a/kernel/irq/internals.h
    +++ b/kernel/irq/internals.h
    @@ -21,11 +21,7 @@ extern void clear_kstat_irqs(struct irq_desc *desc);
    extern raw_spinlock_t sparse_irq_lock;

    #ifdef CONFIG_SPARSE_IRQ
    -/* irq_desc_ptrs allocated at boot time */
    -extern struct irq_desc **irq_desc_ptrs;
    -#else
    -/* irq_desc_ptrs is a fixed size array */
    -extern struct irq_desc *irq_desc_ptrs[NR_IRQS];
    +void replace_irq_desc(unsigned int irq, struct irq_desc *desc);
    #endif

    #ifdef CONFIG_PROC_FS
    diff --git a/kernel/irq/numa_migrate.c b/kernel/irq/numa_migrate.c
    index 26bac9d..963559d 100644
    --- a/kernel/irq/numa_migrate.c
    +++ b/kernel/irq/numa_migrate.c
    @@ -70,7 +70,7 @@ static struct irq_desc *__real_move_irq_desc(struct irq_desc *old_desc,
    raw_spin_lock_irqsave(&sparse_irq_lock, flags);

    /* We have to check it to avoid races with another CPU */
    - desc = irq_desc_ptrs[irq];
    + desc = irq_to_desc(irq);

    if (desc && old_desc != desc)
    goto out_unlock;
    @@ -90,7 +90,7 @@ static struct irq_desc *__real_move_irq_desc(struct irq_desc *old_desc,
    goto out_unlock;
    }

    - irq_desc_ptrs[irq] = desc;
    + replace_irq_desc(irq, desc);
    raw_spin_unlock_irqrestore(&sparse_irq_lock, flags);

    /* free the old one */
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2010-01-22 10:29    [W:0.026 / U:91.532 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site