]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.2-stable patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 21 Jan 2012 15:03:46 +0000 (10:03 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 21 Jan 2012 15:03:46 +0000 (10:03 -0500)
added patches:
acpi-ia64-use-srat-table-rev-to-use-8bit-or-16-32bit-pxm-fields-ia64.patch
acpi-store-srat-table-revision.patch
acpi-x86-use-srat-table-rev-to-use-8bit-or-32bit-pxm-fields-x86-x86-64.patch

queue-3.2/acpi-ia64-use-srat-table-rev-to-use-8bit-or-16-32bit-pxm-fields-ia64.patch [new file with mode: 0644]
queue-3.2/acpi-store-srat-table-revision.patch [new file with mode: 0644]
queue-3.2/acpi-x86-use-srat-table-rev-to-use-8bit-or-32bit-pxm-fields-x86-x86-64.patch [new file with mode: 0644]
queue-3.2/series

diff --git a/queue-3.2/acpi-ia64-use-srat-table-rev-to-use-8bit-or-16-32bit-pxm-fields-ia64.patch b/queue-3.2/acpi-ia64-use-srat-table-rev-to-use-8bit-or-16-32bit-pxm-fields-ia64.patch
new file mode 100644 (file)
index 0000000..a0340aa
--- /dev/null
@@ -0,0 +1,63 @@
+From 9f10f6a520deb3639fac78d81151a3ade88b4e7f Mon Sep 17 00:00:00 2001
+From: Kurt Garloff <kurt@garloff.de>
+Date: Tue, 17 Jan 2012 04:21:49 -0500
+Subject: ACPI, ia64: Use SRAT table rev to use 8bit or 16/32bit PXM fields (ia64)
+
+From: Kurt Garloff <kurt@garloff.de>
+
+commit 9f10f6a520deb3639fac78d81151a3ade88b4e7f upstream.
+
+In SRAT v1, we had 8bit proximity domain (PXM) fields; SRAT v2 provides
+32bits for these. The new fields were reserved before.
+According to the ACPI spec, the OS must disregrard reserved fields.
+
+ia64 did handle the PXM fields almost consistently, but depending on
+sgi's sn2 platform. This patch leaves the sn2 logic in, but does also
+use 16/32 bits for PXM if the SRAT has rev 2 or higher.
+
+The patch also adds __init to the two pxm accessor functions, as they
+access __initdata now and are called from an __init function only anyway.
+
+Note that the code only uses 16 bits for the PXM field in the processor
+proximity field; the patch does not address this as 16 bits are more than
+enough.
+
+Signed-off-by: Kurt Garloff <kurt@garloff.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/ia64/kernel/acpi.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/arch/ia64/kernel/acpi.c
++++ b/arch/ia64/kernel/acpi.c
+@@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FL
+ static struct acpi_table_slit __initdata *slit_table;
+ cpumask_t early_cpu_possible_map = CPU_MASK_NONE;
+-static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
++static int __init
++get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
+ {
+       int pxm;
+       pxm = pa->proximity_domain_lo;
+-      if (ia64_platform_is("sn2"))
++      if (ia64_platform_is("sn2") || acpi_srat_revision >= 2)
+               pxm += pa->proximity_domain_hi[0] << 8;
+       return pxm;
+ }
+-static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
++static int __init
++get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
+ {
+       int pxm;
+       pxm = ma->proximity_domain;
+-      if (!ia64_platform_is("sn2"))
++      if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1)
+               pxm &= 0xff;
+       return pxm;
diff --git a/queue-3.2/acpi-store-srat-table-revision.patch b/queue-3.2/acpi-store-srat-table-revision.patch
new file mode 100644 (file)
index 0000000..2852ece
--- /dev/null
@@ -0,0 +1,62 @@
+From 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 Mon Sep 17 00:00:00 2001
+From: Kurt Garloff <kurt@garloff.de>
+Date: Tue, 17 Jan 2012 04:18:02 -0500
+Subject: ACPI: Store SRAT table revision
+
+From: Kurt Garloff <kurt@garloff.de>
+
+commit 8df0eb7c9d96f9e82f233ee8b74e0f0c8471f868 upstream.
+
+In SRAT v1, we had 8bit proximity domain (PXM) fields; SRAT v2 provides
+32bits for these. The new fields were reserved before.
+According to the ACPI spec, the OS must disregrard reserved fields.
+In order to know whether or not, we must know what version the SRAT
+table has.
+
+This patch stores the SRAT table revision for later consumption
+by arch specific __init functions.
+
+Signed-off-by: Kurt Garloff <kurt@garloff.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/numa.c      |    6 ++++++
+ include/acpi/acpi_numa.h |    1 +
+ 2 files changed, 7 insertions(+)
+
+--- a/drivers/acpi/numa.c
++++ b/drivers/acpi/numa.c
+@@ -45,6 +45,8 @@ static int pxm_to_node_map[MAX_PXM_DOMAI
+ static int node_to_pxm_map[MAX_NUMNODES]
+                       = { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };
++unsigned char acpi_srat_revision __initdata;
++
+ int pxm_to_node(int pxm)
+ {
+       if (pxm < 0)
+@@ -255,9 +257,13 @@ acpi_parse_memory_affinity(struct acpi_s
+ static int __init acpi_parse_srat(struct acpi_table_header *table)
+ {
++      struct acpi_table_srat *srat;
+       if (!table)
+               return -EINVAL;
++      srat = (struct acpi_table_srat *)table;
++      acpi_srat_revision = srat->header.revision;
++
+       /* Real work done in acpi_table_parse_srat below. */
+       return 0;
+--- a/include/acpi/acpi_numa.h
++++ b/include/acpi/acpi_numa.h
+@@ -15,6 +15,7 @@ extern int pxm_to_node(int);
+ extern int node_to_pxm(int);
+ extern void __acpi_map_pxm_to_node(int, int);
+ extern int acpi_map_pxm_to_node(int);
++extern unsigned char acpi_srat_revision;
+ #endif                                /* CONFIG_ACPI_NUMA */
+ #endif                                /* __ACP_NUMA_H */
diff --git a/queue-3.2/acpi-x86-use-srat-table-rev-to-use-8bit-or-32bit-pxm-fields-x86-x86-64.patch b/queue-3.2/acpi-x86-use-srat-table-rev-to-use-8bit-or-32bit-pxm-fields-x86-x86-64.patch
new file mode 100644 (file)
index 0000000..4bf6142
--- /dev/null
@@ -0,0 +1,47 @@
+From cd298f60a2451a16e0f077404bf69b62ec868733 Mon Sep 17 00:00:00 2001
+From: Kurt Garloff <kurt@garloff.de>
+Date: Tue, 17 Jan 2012 04:20:31 -0500
+Subject: ACPI, x86: Use SRAT table rev to use 8bit or 32bit PXM fields (x86/x86-64)
+
+From: Kurt Garloff <kurt@garloff.de>
+
+commit cd298f60a2451a16e0f077404bf69b62ec868733 upstream.
+
+In SRAT v1, we had 8bit proximity domain (PXM) fields; SRAT v2 provides
+32bits for these. The new fields were reserved before.
+According to the ACPI spec, the OS must disregrard reserved fields.
+
+x86/x86-64 was rather inconsistent prior to this patch; it used 8 bits
+for the pxm field in cpu_affinity, but 32 bits in mem_affinity.
+This patch makes it consistent: Either use 8 bits consistently (SRAT
+rev 1 or lower) or 32 bits (SRAT rev 2 or higher).
+
+cc: x86@kernel.org
+Signed-off-by: Kurt Garloff <kurt@garloff.de>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/mm/srat.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/arch/x86/mm/srat.c
++++ b/arch/x86/mm/srat.c
+@@ -104,6 +104,8 @@ acpi_numa_processor_affinity_init(struct
+       if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
+               return;
+       pxm = pa->proximity_domain_lo;
++      if (acpi_srat_revision >= 2)
++              pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8;
+       node = setup_node(pxm);
+       if (node < 0) {
+               printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
+@@ -155,6 +157,8 @@ acpi_numa_memory_affinity_init(struct ac
+       start = ma->base_address;
+       end = start + ma->length;
+       pxm = ma->proximity_domain;
++      if (acpi_srat_revision <= 1)
++              pxm &= 0xff;
+       node = setup_node(pxm);
+       if (node < 0) {
+               printk(KERN_ERR "SRAT: Too many proximity domains.\n");
index c96534a6ff9b18fcc857d925fc73a269b7f8e702..4b6bf68d7badd6c57ceb9d12f0721b96dc662213 100644 (file)
@@ -97,3 +97,6 @@ alsa-hda-fix-internal-microphone-on-dell-studio-16-xps-1645.patch
 tomoyo-accept-000-as-a-valid-character.patch
 intel-idle-make-idle-driver-more-robust.patch
 intel_idle-fix-api-misuse.patch
+acpi-store-srat-table-revision.patch
+acpi-x86-use-srat-table-rev-to-use-8bit-or-32bit-pxm-fields-x86-x86-64.patch
+acpi-ia64-use-srat-table-rev-to-use-8bit-or-16-32bit-pxm-fields-ia64.patch