Skip to content

Commit

Permalink
x86/apic: Drop local_irq_save/restore in timer callbacks
Browse files Browse the repository at this point in the history
These callbacks are called with interrupts disabled from the core
code. Fixup the local caller to disable interrupts.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
  • Loading branch information
Thomas Gleixner committed Jul 29, 2015
1 parent b23d8e5 commit c948c26
Showing 1 changed file with 3 additions and 15 deletions.
18 changes: 3 additions & 15 deletions arch/x86/kernel/apic/apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -464,40 +464,27 @@ static int lapic_next_deadline(unsigned long delta,

static int lapic_timer_shutdown(struct clock_event_device *evt)
{
unsigned long flags;
unsigned int v;

/* Lapic used as dummy for broadcast ? */
if (evt->features & CLOCK_EVT_FEAT_DUMMY)
return 0;

local_irq_save(flags);

v = apic_read(APIC_LVTT);
v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
apic_write(APIC_LVTT, v);
apic_write(APIC_TMICT, 0);

local_irq_restore(flags);

return 0;
}

static inline int
lapic_timer_set_periodic_oneshot(struct clock_event_device *evt, bool oneshot)
{
unsigned long flags;

/* Lapic used as dummy for broadcast ? */
if (evt->features & CLOCK_EVT_FEAT_DUMMY)
return 0;

local_irq_save(flags);

__setup_APIC_LVTT(lapic_timer_frequency, oneshot, 1);

local_irq_restore(flags);

return 0;
}

Expand Down Expand Up @@ -804,6 +791,7 @@ static int __init calibrate_APIC_clock(void)
cpu_relax();

/* Stop the lapic timer */
local_irq_disable();
lapic_timer_shutdown(levt);

/* Jiffies delta */
Expand All @@ -815,8 +803,8 @@ static int __init calibrate_APIC_clock(void)
apic_printk(APIC_VERBOSE, "... jiffies result ok\n");
else
levt->features |= CLOCK_EVT_FEAT_DUMMY;
} else
local_irq_enable();
}
local_irq_enable();

if (levt->features & CLOCK_EVT_FEAT_DUMMY) {
pr_warning("APIC timer disabled due to verification failure\n");
Expand Down

0 comments on commit c948c26

Please sign in to comment.