lkml.org 
[lkml]   [2014]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 16/35] [PATCH 16/36] irqchips: Replace __this_cpu_ptr uses
    [ARM specific]

    These are generally replaced with raw_cpu_ptr. However, in
    gic_get_percpu_base() we immediately dereference the pointer. This is
    equivalent to a raw_cpu_read. So use that operation there.

    Cc: nicolas.pitre@linaro.org
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Christoph Lameter <cl@linux.com>
    ---
    drivers/irqchip/irq-gic.c | 10 +++++-----
    kernel/irq/chip.c | 2 +-
    2 files changed, 6 insertions(+), 6 deletions(-)

    Index: linux/drivers/irqchip/irq-gic.c
    ===================================================================
    --- linux.orig/drivers/irqchip/irq-gic.c
    +++ linux/drivers/irqchip/irq-gic.c
    @@ -102,7 +102,7 @@ static struct gic_chip_data gic_data[MAX
    #ifdef CONFIG_GIC_NON_BANKED
    static void __iomem *gic_get_percpu_base(union gic_base *base)
    {
    - return *__this_cpu_ptr(base->percpu_base);
    + return raw_cpu_read(base->percpu_base);
    }

    static void __iomem *gic_get_common_base(union gic_base *base)
    @@ -504,11 +504,11 @@ static void gic_cpu_save(unsigned int gi
    if (!dist_base || !cpu_base)
    return;

    - ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_enable);
    + ptr = raw_cpu_ptr(gic_data[gic_nr].saved_ppi_enable);
    for (i = 0; i < DIV_ROUND_UP(32, 32); i++)
    ptr[i] = readl_relaxed(dist_base + GIC_DIST_ENABLE_SET + i * 4);

    - ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_conf);
    + ptr = raw_cpu_ptr(gic_data[gic_nr].saved_ppi_conf);
    for (i = 0; i < DIV_ROUND_UP(32, 16); i++)
    ptr[i] = readl_relaxed(dist_base + GIC_DIST_CONFIG + i * 4);

    @@ -530,11 +530,11 @@ static void gic_cpu_restore(unsigned int
    if (!dist_base || !cpu_base)
    return;

    - ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_enable);
    + ptr = raw_cpu_ptr(gic_data[gic_nr].saved_ppi_enable);
    for (i = 0; i < DIV_ROUND_UP(32, 32); i++)
    writel_relaxed(ptr[i], dist_base + GIC_DIST_ENABLE_SET + i * 4);

    - ptr = __this_cpu_ptr(gic_data[gic_nr].saved_ppi_conf);
    + ptr = raw_cpu_ptr(gic_data[gic_nr].saved_ppi_conf);
    for (i = 0; i < DIV_ROUND_UP(32, 16); i++)
    writel_relaxed(ptr[i], dist_base + GIC_DIST_CONFIG + i * 4);

    Index: linux/kernel/irq/chip.c
    ===================================================================
    --- linux.orig/kernel/irq/chip.c
    +++ linux/kernel/irq/chip.c
    @@ -669,7 +669,7 @@ void handle_percpu_devid_irq(unsigned in
    {
    struct irq_chip *chip = irq_desc_get_chip(desc);
    struct irqaction *action = desc->action;
    - void *dev_id = __this_cpu_ptr(action->percpu_dev_id);
    + void *dev_id = raw_cpu_ptr(action->percpu_dev_id);
    irqreturn_t res;

    kstat_incr_irqs_this_cpu(irq, desc);


    \
     
     \ /
      Last update: 2014-08-17 20:01    [W:4.888 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site