Messages in this thread Patch in this message | | | Date | Tue, 15 Jul 2008 21:02:54 +0400 | From | Cyrill Gorcunov <> | Subject | [patch 1/2] x86: apic_64 - make calibrate_APIC_clock to return error code |
| |
Make calibration_result to return error and check calibration_result to be sufficient inside calibrate_APIC_clock.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> ---
Index: linux-2.6.git/arch/x86/kernel/apic_64.c =================================================================== --- linux-2.6.git.orig/arch/x86/kernel/apic_64.c 2008-07-15 19:44:28.000000000 +0400 +++ linux-2.6.git/arch/x86/kernel/apic_64.c 2008-07-15 19:51:01.000000000 +0400 @@ -314,7 +314,7 @@ static void setup_APIC_timer(void) #define TICK_COUNT 100000000 -static void __init calibrate_APIC_clock(void) +static int __init calibrate_APIC_clock(void) { unsigned apic, apic_start; unsigned long tsc, tsc_start; @@ -368,6 +368,17 @@ static void __init calibrate_APIC_clock( clockevent_delta2ns(0xF, &lapic_clockevent); calibration_result = result / HZ; + + /* + * Do a sanity check on the APIC calibration result + */ + if (calibration_result < (1000000 / HZ)) { + printk(KERN_WARNING + "APIC frequency too slow, disabling apic timer\n"); + return -1; + } + + return 0; } /* @@ -394,14 +405,7 @@ void __init setup_boot_APIC_clock(void) } printk(KERN_INFO "Using local APIC timer interrupts.\n"); - calibrate_APIC_clock(); - - /* - * Do a sanity check on the APIC calibration result - */ - if (calibration_result < (1000000 / HZ)) { - printk(KERN_WARNING - "APIC frequency too slow, disabling apic timer\n"); + if (calibrate_APIC_clock()) { /* No broadcast on UP ! */ if (num_possible_cpus() > 1) setup_APIC_timer(); --
| |