]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/x86/kernel/apic/apic.c
Merge tag 'v3.18-rc1' into x86/urgent
[mirror_ubuntu-bionic-kernel.git] / arch / x86 / kernel / apic / apic.c
index 67760275544b4f548f98c5b18c098d481637995d..ba6cc041edb12e23a783fc0c5aaaed788af39dc0 100644 (file)
@@ -561,7 +561,7 @@ static DEFINE_PER_CPU(struct clock_event_device, lapic_events);
  */
 static void setup_APIC_timer(void)
 {
-       struct clock_event_device *levt = &__get_cpu_var(lapic_events);
+       struct clock_event_device *levt = this_cpu_ptr(&lapic_events);
 
        if (this_cpu_has(X86_FEATURE_ARAT)) {
                lapic_clockevent.features &= ~CLOCK_EVT_FEAT_C3STOP;
@@ -696,7 +696,7 @@ calibrate_by_pmtimer(long deltapm, long *delta, long *deltatsc)
 
 static int __init calibrate_APIC_clock(void)
 {
-       struct clock_event_device *levt = &__get_cpu_var(lapic_events);
+       struct clock_event_device *levt = this_cpu_ptr(&lapic_events);
        void (*real_handler)(struct clock_event_device *dev);
        unsigned long deltaj;
        long delta, deltatsc;
@@ -1297,7 +1297,7 @@ void setup_local_APIC(void)
        unsigned int value, queued;
        int i, j, acked = 0;
        unsigned long long tsc = 0, ntsc;
-       long long max_loops = cpu_khz;
+       long long max_loops = cpu_khz ? cpu_khz : 1000000;
 
        if (cpu_has_tsc)
                rdtscll(tsc);
@@ -1383,7 +1383,7 @@ void setup_local_APIC(void)
                        break;
                }
                if (queued) {
-                       if (cpu_has_tsc) {
+                       if (cpu_has_tsc && cpu_khz) {
                                rdtscll(ntsc);
                                max_loops = (cpu_khz << 10) - (ntsc - tsc);
                        } else