]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - releases/2.6.25.8/acpica-ignore-acpi-table-signature-for-load-operator.patch
Linux 2.6.25.8
[thirdparty/kernel/stable-queue.git] / releases / 2.6.25.8 / acpica-ignore-acpi-table-signature-for-load-operator.patch
diff --git a/releases/2.6.25.8/acpica-ignore-acpi-table-signature-for-load-operator.patch b/releases/2.6.25.8/acpica-ignore-acpi-table-signature-for-load-operator.patch
new file mode 100644 (file)
index 0000000..df8ff47
--- /dev/null
@@ -0,0 +1,63 @@
+From stable-bounces@linux.kernel.org Wed Jun 18 20:12:08 2008
+From: Bob Moore <robert.moore@intel.com>
+Date: Wed, 18 Jun 2008 22:11:31 -0400 (EDT)
+Subject: ACPICA: Ignore ACPI table signature for Load() operator
+To: stable@kernel.org
+Cc: linux-acpi@vger.kernel.org
+Message-ID: <alpine.LFD.1.10.0806182151270.3074@localhost.localdomain>
+
+
+From: Bob Moore <robert.moore@intel.com>
+
+upstream bc45b1d39a925b56796bebf8a397a0491489d85c
+
+Without this patch booting with acpi_osi="!Windows 2006" is required
+for several machines to function properly with cpufreq
+due to failure to load a Vista specific table with a bad signature.
+
+Only "SSDT" is acceptable to the ACPI spec, but tables are
+seen with OEMx and null sigs. Therefore, signature validation
+is worthless.  Apparently MS ACPI accepts such signatures, ACPICA
+must be compatible.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=9919
+http://bugzilla.kernel.org/show_bug.cgi?id=10383
+http://bugzilla.kernel.org/show_bug.cgi?id=10454
+https://bugzilla.novell.com/show_bug.cgi?id=396311
+
+Signed-off-by: Bob Moore <robert.moore@intel.com>
+Signed-off-by: Lin Ming <ming.m.lin@intel.com>
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/tables/tbinstal.c |   18 +++++++-----------
+ 1 file changed, 7 insertions(+), 11 deletions(-)
+
+--- a/drivers/acpi/tables/tbinstal.c
++++ b/drivers/acpi/tables/tbinstal.c
+@@ -123,17 +123,13 @@ acpi_tb_add_table(struct acpi_table_desc
+               }
+       }
+-      /* The table must be either an SSDT or a PSDT or an OEMx */
+-
+-      if ((!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_PSDT))
+-          &&
+-          (!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_SSDT))
+-          && (strncmp(table_desc->pointer->signature, "OEM", 3))) {
+-              ACPI_ERROR((AE_INFO,
+-                          "Table has invalid signature [%4.4s], must be SSDT, PSDT or OEMx",
+-                          table_desc->pointer->signature));
+-              return_ACPI_STATUS(AE_BAD_SIGNATURE);
+-      }
++      /*
++       * Originally, we checked the table signature for "SSDT" or "PSDT" here.
++       * Next, we added support for OEMx tables, signature "OEM".
++       * Valid tables were encountered with a null signature, so we've just
++       * given up on validating the signature, since it seems to be a waste
++       * of code. The original code was removed (05/2008).
++       */
+       (void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);