mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 15:15:47 +00:00
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. Signed-off-by: Mike Travis <travis@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
333cdd1f0e
commit
c18a41fbbc
1 changed files with 7 additions and 7 deletions
|
@ -135,7 +135,7 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
|
||||||
*/
|
*/
|
||||||
static void tick_setup_device(struct tick_device *td,
|
static void tick_setup_device(struct tick_device *td,
|
||||||
struct clock_event_device *newdev, int cpu,
|
struct clock_event_device *newdev, int cpu,
|
||||||
cpumask_t cpumask)
|
const cpumask_t *cpumask)
|
||||||
{
|
{
|
||||||
ktime_t next_event;
|
ktime_t next_event;
|
||||||
void (*handler)(struct clock_event_device *) = NULL;
|
void (*handler)(struct clock_event_device *) = NULL;
|
||||||
|
@ -169,8 +169,8 @@ static void tick_setup_device(struct tick_device *td,
|
||||||
* When the device is not per cpu, pin the interrupt to the
|
* When the device is not per cpu, pin the interrupt to the
|
||||||
* current cpu:
|
* current cpu:
|
||||||
*/
|
*/
|
||||||
if (!cpus_equal(newdev->cpumask, cpumask))
|
if (!cpus_equal(newdev->cpumask, *cpumask))
|
||||||
irq_set_affinity(newdev->irq, cpumask);
|
irq_set_affinity(newdev->irq, *cpumask);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When global broadcasting is active, check if the current
|
* When global broadcasting is active, check if the current
|
||||||
|
@ -196,20 +196,20 @@ static int tick_check_new_device(struct clock_event_device *newdev)
|
||||||
struct tick_device *td;
|
struct tick_device *td;
|
||||||
int cpu, ret = NOTIFY_OK;
|
int cpu, ret = NOTIFY_OK;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
cpumask_t cpumask;
|
cpumask_of_cpu_ptr_declare(cpumask);
|
||||||
|
|
||||||
spin_lock_irqsave(&tick_device_lock, flags);
|
spin_lock_irqsave(&tick_device_lock, flags);
|
||||||
|
|
||||||
cpu = smp_processor_id();
|
cpu = smp_processor_id();
|
||||||
|
cpumask_of_cpu_ptr_next(cpumask, cpu);
|
||||||
if (!cpu_isset(cpu, newdev->cpumask))
|
if (!cpu_isset(cpu, newdev->cpumask))
|
||||||
goto out_bc;
|
goto out_bc;
|
||||||
|
|
||||||
td = &per_cpu(tick_cpu_device, cpu);
|
td = &per_cpu(tick_cpu_device, cpu);
|
||||||
curdev = td->evtdev;
|
curdev = td->evtdev;
|
||||||
cpumask = cpumask_of_cpu(cpu);
|
|
||||||
|
|
||||||
/* cpu local device ? */
|
/* 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
|
* If the cpu affinity of the device interrupt can not
|
||||||
|
@ -222,7 +222,7 @@ static int tick_check_new_device(struct clock_event_device *newdev)
|
||||||
* If we have a cpu local device already, do not replace it
|
* If we have a cpu local device already, do not replace it
|
||||||
* by a non cpu local device
|
* by a non cpu local device
|
||||||
*/
|
*/
|
||||||
if (curdev && cpus_equal(curdev->cpumask, cpumask))
|
if (curdev && cpus_equal(curdev->cpumask, *cpumask))
|
||||||
goto out_bc;
|
goto out_bc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue