]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
remove x86-cpu-deal-with-broken-firmware-vmware-xen.patch from 4.8
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Nov 2016 17:07:49 +0000 (18:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Nov 2016 17:07:49 +0000 (18:07 +0100)
queue-4.8/series
queue-4.8/x86-cpu-deal-with-broken-firmware-vmware-xen.patch [deleted file]

index 32ac118c16a78dc2a76cce1d95ba079ed6004d07..e6c0800ca3e79c22cc33d74296e1abcedd07feff 100644 (file)
@@ -1,4 +1,3 @@
-x86-cpu-deal-with-broken-firmware-vmware-xen.patch
 x86-cpu-amd-fix-cpu_llc_id-for-amd-fam17h-systems.patch
 kvm-x86-fix-missed-srcu-usage-in-kvm_lapic_set_vapic_addr.patch
 kvm-disable-irq-while-unregistering-user-notifier.patch
diff --git a/queue-4.8/x86-cpu-deal-with-broken-firmware-vmware-xen.patch b/queue-4.8/x86-cpu-deal-with-broken-firmware-vmware-xen.patch
deleted file mode 100644 (file)
index f846ec8..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-From d49597fd3bc7d9534de55e9256767f073be1b33a Mon Sep 17 00:00:00 2001
-From: Thomas Gleixner <tglx@linutronix.de>
-Date: Wed, 9 Nov 2016 16:35:51 +0100
-Subject: x86/cpu: Deal with broken firmware (VMWare/XEN)
-
-From: Thomas Gleixner <tglx@linutronix.de>
-
-commit d49597fd3bc7d9534de55e9256767f073be1b33a upstream.
-
-Both ACPI and MP specifications require that the APIC id in the respective
-tables must be the same as the APIC id in CPUID.
-
-The kernel retrieves the physical package id from the APIC id during the
-ACPI/MP table scan and builds the physical to logical package map. The
-physical package id which is used after a CPU comes up is retrieved from
-CPUID. So we rely on ACPI/MP tables and CPUID agreeing in that respect.
-
-There exist VMware and XEN implementations which violate the spec. As a
-result the physical to logical package map, which relies on the ACPI/MP
-tables does not work on those systems, because the CPUID initialized
-physical package id does not match the firmware id. This causes system
-crashes and malfunction due to invalid package mappings.
-
-The only way to cure this is to sanitize the physical package id after the
-CPUID enumeration and yell when the APIC ids are different. Fix up the
-initial APIC id, which is fine as it is only used printout purposes.
-
-If the physical package IDs differ yell and use the package information
-from the ACPI/MP tables so the existing logical package map just works.
-
-Chas provided the resulting dmesg output for his affected 4 virtual
-sockets, 1 core per socket VM:
-
-[Firmware Bug]: CPU1: APIC id mismatch. Firmware: 1 CPUID: 2
-[Firmware Bug]: CPU1: Using firmware package id 1 instead of 2
-....
-
-Reported-and-tested-by: "Charles (Chas) Williams" <ciwillia@brocade.com>,
-Reported-by: M. Vefa Bicakci <m.v.b@runbox.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Cc: Borislav Petkov <bp@alien8.de>
-Cc: Alok Kataria <akataria@vmware.com>
-Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
-Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1611091613540.3501@nanos
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- arch/x86/kernel/cpu/common.c |   32 ++++++++++++++++++++++++++++++--
- 1 file changed, 30 insertions(+), 2 deletions(-)
-
---- a/arch/x86/kernel/cpu/common.c
-+++ b/arch/x86/kernel/cpu/common.c
-@@ -979,6 +979,35 @@ static void x86_init_cache_qos(struct cp
- }
- /*
-+ * The physical to logical package id mapping is initialized from the
-+ * acpi/mptables information. Make sure that CPUID actually agrees with
-+ * that.
-+ */
-+static void sanitize_package_id(struct cpuinfo_x86 *c)
-+{
-+#ifdef CONFIG_SMP
-+      unsigned int pkg, apicid, cpu = smp_processor_id();
-+
-+      apicid = apic->cpu_present_to_apicid(cpu);
-+      pkg = apicid >> boot_cpu_data.x86_coreid_bits;
-+
-+      if (apicid != c->initial_apicid) {
-+              pr_err(FW_BUG "CPU%u: APIC id mismatch. Firmware: %x CPUID: %x\n",
-+                     cpu, apicid, c->initial_apicid);
-+              c->initial_apicid = apicid;
-+      }
-+      if (pkg != c->phys_proc_id) {
-+              pr_err(FW_BUG "CPU%u: Using firmware package id %u instead of %u\n",
-+                     cpu, pkg, c->phys_proc_id);
-+              c->phys_proc_id = pkg;
-+      }
-+      c->logical_proc_id = topology_phys_to_logical_pkg(pkg);
-+#else
-+      c->logical_proc_id = 0;
-+#endif
-+}
-+
-+/*
-  * This does the hard work of actually picking apart the CPU stuff...
-  */
- static void identify_cpu(struct cpuinfo_x86 *c)
-@@ -1103,8 +1132,7 @@ static void identify_cpu(struct cpuinfo_
- #ifdef CONFIG_NUMA
-       numa_add_cpu(smp_processor_id());
- #endif
--      /* The boot/hotplug time assigment got cleared, restore it */
--      c->logical_proc_id = topology_phys_to_logical_pkg(c->phys_proc_id);
-+      sanitize_package_id(c);
- }
- /*