lkml.org 
[lkml]   [2008]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 5/8] cpumask: Optimize cpumask_of_cpu in kernel/time/tick-common.c
      * Optimize various places where a pointer to the cpumask_of_cpu value
    will result in reducing stack pressure.

    Based on linux-2.6.tip/master at the following commit:

    commit 0a91813e16ebd5c2d9b5c2acd5b7c91742112c4f
    Merge: 9a635fa... 724dce0...
    Author: Ingo Molnar <mingo@elte.hu>
    Date: Tue Jul 15 14:55:17 2008 +0200

    Signed-off-by: Mike Travis <travis@sgi.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    ---
    kernel/time/tick-common.c | 14 +++++++-------
    1 file changed, 7 insertions(+), 7 deletions(-)

    --- linux-2.6.tip.orig/kernel/time/tick-common.c
    +++ linux-2.6.tip/kernel/time/tick-common.c
    @@ -135,7 +135,7 @@ void tick_setup_periodic(struct clock_ev
    */
    static void tick_setup_device(struct tick_device *td,
    struct clock_event_device *newdev, int cpu,
    - cpumask_t cpumask)
    + const cpumask_t *cpumask)
    {
    ktime_t next_event;
    void (*handler)(struct clock_event_device *) = NULL;
    @@ -169,8 +169,8 @@ static void tick_setup_device(struct tic
    * When the device is not per cpu, pin the interrupt to the
    * current cpu:
    */
    - if (!cpus_equal(newdev->cpumask, cpumask))
    - irq_set_affinity(newdev->irq, cpumask);
    + if (!cpus_equal(newdev->cpumask, *cpumask))
    + irq_set_affinity(newdev->irq, *cpumask);

    /*
    * When global broadcasting is active, check if the current
    @@ -196,20 +196,20 @@ static int tick_check_new_device(struct
    struct tick_device *td;
    int cpu, ret = NOTIFY_OK;
    unsigned long flags;
    - cpumask_t cpumask;
    + cpumask_of_cpu_ptr_declare(cpumask);

    spin_lock_irqsave(&tick_device_lock, flags);

    cpu = smp_processor_id();
    + cpumask_of_cpu_ptr_next(cpumask, cpu);
    if (!cpu_isset(cpu, newdev->cpumask))
    goto out_bc;

    td = &per_cpu(tick_cpu_device, cpu);
    curdev = td->evtdev;
    - cpumask = cpumask_of_cpu(cpu);

    /* cpu local device ? */
    - if (!cpus_equal(newdev->cpumask, cpumask)) {
    + if (!cpus_equal(newdev->cpumask, *cpumask)) {

    /*
    * If the cpu affinity of the device interrupt can not
    @@ -222,7 +222,7 @@ static int tick_check_new_device(struct
    * If we have a cpu local device already, do not replace it
    * by a non cpu local device
    */
    - if (curdev && cpus_equal(curdev->cpumask, cpumask))
    + if (curdev && cpus_equal(curdev->cpumask, *cpumask))
    goto out_bc;
    }

    --


    \
     
     \ /
      Last update: 2008-07-15 23:19    [W:0.039 / U:32.348 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site