Merge branches 'core-objtool-for-linus', 'x86-cleanups-for-linus' and 'x86-apic-for...
[platform/kernel/linux-rpi.git] / arch / x86 / kernel / apic / apic.c
index 9e2dd2b..28446fa 100644 (file)
@@ -780,8 +780,8 @@ calibrate_by_pmtimer(long deltapm, long *delta, long *deltatsc)
 
        res = (((u64)deltapm) *  mult) >> 22;
        do_div(res, 1000000);
-       pr_warning("APIC calibration not consistent "
-                  "with PM-Timer: %ldms instead of 100ms\n",(long)res);
+       pr_warn("APIC calibration not consistent "
+               "with PM-Timer: %ldms instead of 100ms\n", (long)res);
 
        /* Correct the lapic counter value */
        res = (((u64)(*delta)) * pm_100ms);
@@ -977,7 +977,7 @@ static int __init calibrate_APIC_clock(void)
         */
        if (lapic_timer_period < (1000000 / HZ)) {
                local_irq_enable();
-               pr_warning("APIC frequency too slow, disabling apic timer\n");
+               pr_warn("APIC frequency too slow, disabling apic timer\n");
                return -1;
        }
 
@@ -1021,7 +1021,7 @@ static int __init calibrate_APIC_clock(void)
        local_irq_enable();
 
        if (levt->features & CLOCK_EVT_FEAT_DUMMY) {
-               pr_warning("APIC timer disabled due to verification failure\n");
+               pr_warn("APIC timer disabled due to verification failure\n");
                return -1;
        }
 
@@ -1095,8 +1095,8 @@ static void local_apic_timer_interrupt(void)
         * spurious.
         */
        if (!evt->event_handler) {
-               pr_warning("Spurious LAPIC timer interrupt on cpu %d\n",
-                          smp_processor_id());
+               pr_warn("Spurious LAPIC timer interrupt on cpu %d\n",
+                       smp_processor_id());
                /* Switch it off */
                lapic_timer_shutdown(evt);
                return;
@@ -1586,9 +1586,6 @@ static void setup_local_APIC(void)
 {
        int cpu = smp_processor_id();
        unsigned int value;
-#ifdef CONFIG_X86_32
-       int logical_apicid, ldr_apicid;
-#endif
 
        if (disable_apic) {
                disable_ioapic_support();
@@ -1626,16 +1623,21 @@ static void setup_local_APIC(void)
        apic->init_apic_ldr();
 
 #ifdef CONFIG_X86_32
-       /*
-        * APIC LDR is initialized.  If logical_apicid mapping was
-        * initialized during get_smp_config(), make sure it matches the
-        * actual value.
-        */
-       logical_apicid = early_per_cpu(x86_cpu_to_logical_apicid, cpu);
-       ldr_apicid = GET_APIC_LOGICAL_ID(apic_read(APIC_LDR));
-       WARN_ON(logical_apicid != BAD_APICID && logical_apicid != ldr_apicid);
-       /* always use the value from LDR */
-       early_per_cpu(x86_cpu_to_logical_apicid, cpu) = ldr_apicid;
+       if (apic->dest_logical) {
+               int logical_apicid, ldr_apicid;
+
+               /*
+                * APIC LDR is initialized.  If logical_apicid mapping was
+                * initialized during get_smp_config(), make sure it matches
+                * the actual value.
+                */
+               logical_apicid = early_per_cpu(x86_cpu_to_logical_apicid, cpu);
+               ldr_apicid = GET_APIC_LOGICAL_ID(apic_read(APIC_LDR));
+               if (logical_apicid != BAD_APICID)
+                       WARN_ON(logical_apicid != ldr_apicid);
+               /* Always use the value from LDR. */
+               early_per_cpu(x86_cpu_to_logical_apicid, cpu) = ldr_apicid;
+       }
 #endif
 
        /*
@@ -1809,11 +1811,11 @@ static int __init setup_nox2apic(char *str)
                int apicid = native_apic_msr_read(APIC_ID);
 
                if (apicid >= 255) {
-                       pr_warning("Apicid: %08x, cannot enforce nox2apic\n",
-                                  apicid);
+                       pr_warn("Apicid: %08x, cannot enforce nox2apic\n",
+                               apicid);
                        return 0;
                }
-               pr_warning("x2apic already enabled.\n");
+               pr_warn("x2apic already enabled.\n");
                __x2apic_disable();
        }
        setup_clear_cpu_cap(X86_FEATURE_X2APIC);
@@ -1981,7 +1983,7 @@ static int __init apic_verify(void)
         */
        features = cpuid_edx(1);
        if (!(features & (1 << X86_FEATURE_APIC))) {
-               pr_warning("Could not enable APIC!\n");
+               pr_warn("Could not enable APIC!\n");
                return -1;
        }
        set_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
@@ -2335,7 +2337,7 @@ static int cpuid_to_apicid[] = {
 #ifdef CONFIG_SMP
 /**
  * apic_id_is_primary_thread - Check whether APIC ID belongs to a primary thread
- * @id:        APIC ID to check
+ * @apicid: APIC ID to check
  */
 bool apic_id_is_primary_thread(unsigned int apicid)
 {
@@ -2408,9 +2410,8 @@ int generic_processor_info(int apicid, int version)
            disabled_cpu_apicid == apicid) {
                int thiscpu = num_processors + disabled_cpus;
 
-               pr_warning("APIC: Disabling requested cpu."
-                          " Processor %d/0x%x ignored.\n",
-                          thiscpu, apicid);
+               pr_warn("APIC: Disabling requested cpu."
+                       " Processor %d/0x%x ignored.\n", thiscpu, apicid);
 
                disabled_cpus++;
                return -ENODEV;
@@ -2424,8 +2425,7 @@ int generic_processor_info(int apicid, int version)
            apicid != boot_cpu_physical_apicid) {
                int thiscpu = max + disabled_cpus - 1;
 
-               pr_warning(
-                       "APIC: NR_CPUS/possible_cpus limit of %i almost"
+               pr_warn("APIC: NR_CPUS/possible_cpus limit of %i almost"
                        " reached. Keeping one slot for boot cpu."
                        "  Processor %d/0x%x ignored.\n", max, thiscpu, apicid);
 
@@ -2436,9 +2436,8 @@ int generic_processor_info(int apicid, int version)
        if (num_processors >= nr_cpu_ids) {
                int thiscpu = max + disabled_cpus;
 
-               pr_warning("APIC: NR_CPUS/possible_cpus limit of %i "
-                          "reached. Processor %d/0x%x ignored.\n",
-                          max, thiscpu, apicid);
+               pr_warn("APIC: NR_CPUS/possible_cpus limit of %i reached. "
+                       "Processor %d/0x%x ignored.\n", max, thiscpu, apicid);
 
                disabled_cpus++;
                return -EINVAL;
@@ -2468,13 +2467,13 @@ int generic_processor_info(int apicid, int version)
         * Validate version
         */
        if (version == 0x0) {
-               pr_warning("BIOS bug: APIC version is 0 for CPU %d/0x%x, fixing up to 0x10\n",
-                          cpu, apicid);
+               pr_warn("BIOS bug: APIC version is 0 for CPU %d/0x%x, fixing up to 0x10\n",
+                       cpu, apicid);
                version = 0x10;
        }
 
        if (version != boot_cpu_apic_version) {
-               pr_warning("BIOS bug: APIC version mismatch, boot CPU: %x, CPU %d: version %x\n",
+               pr_warn("BIOS bug: APIC version mismatch, boot CPU: %x, CPU %d: version %x\n",
                        boot_cpu_apic_version, cpu, version);
        }
 
@@ -2843,7 +2842,7 @@ static int __init apic_set_verbosity(char *arg)
                apic_verbosity = APIC_VERBOSE;
 #ifdef CONFIG_X86_64
        else {
-               pr_warning("APIC Verbosity level %s not recognised"
+               pr_warn("APIC Verbosity level %s not recognised"
                        " use apic=verbose or apic=debug\n", arg);
                return -EINVAL;
        }