Skip to content

Commit

Permalink
x86_64: remove nested irq disables
Browse files Browse the repository at this point in the history
setup_APIC_timer disables interrupts anyway. So no need to do the same
in setup_boot_APIC_clock and setup_secondary_APIC_clock. Disable
interrupts explicit in the calibration code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
  • Loading branch information
Thomas Gleixner authored and Thomas Gleixner committed Oct 12, 2007
1 parent abc63fc commit c4d58cb
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions arch/x86/kernel/apic_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -826,6 +826,9 @@ static void __init calibrate_APIC_clock(void)
unsigned apic, apic_start;
unsigned long tsc, tsc_start;
int result;

local_irq_disable();

/*
* Put whatever arbitrary (but long enough) timeout
* value into the APIC clock, we just want to get the
Expand Down Expand Up @@ -855,6 +858,9 @@ static void __init calibrate_APIC_clock(void)
result = (apic_start - apic) * 1000L * tsc_khz /
(tsc - tsc_start);
}

local_irq_enable();

printk(KERN_DEBUG "APIC timer calibration result %d\n", result);

printk(KERN_INFO "Detected %d.%03d MHz APIC timer.\n",
Expand All @@ -873,22 +879,16 @@ void __init setup_boot_APIC_clock (void)
printk(KERN_INFO "Using local APIC timer interrupts.\n");
using_apic_timer = 1;

local_irq_disable();

calibrate_APIC_clock();
/*
* Now set up the timer for real.
*/
setup_APIC_timer();

local_irq_enable();
}

void __cpuinit setup_secondary_APIC_clock(void)
{
local_irq_disable(); /* FIXME: Do we need this? --RR */
setup_APIC_timer();
local_irq_enable();
}

void disable_APIC_timer(void)
Expand Down

0 comments on commit c4d58cb

Please sign in to comment.