]>
Commit | Line | Data |
---|---|---|
cd378b7b GKH |
1 | From stable-bounces@linux.kernel.org Wed Jun 18 20:12:08 2008 |
2 | From: Bob Moore <robert.moore@intel.com> | |
3 | Date: Wed, 18 Jun 2008 22:11:31 -0400 (EDT) | |
4 | Subject: ACPICA: Ignore ACPI table signature for Load() operator | |
5 | To: stable@kernel.org | |
6 | Cc: linux-acpi@vger.kernel.org | |
7 | Message-ID: <alpine.LFD.1.10.0806182151270.3074@localhost.localdomain> | |
8 | ||
9 | ||
10 | From: Bob Moore <robert.moore@intel.com> | |
11 | ||
12 | upstream bc45b1d39a925b56796bebf8a397a0491489d85c | |
13 | ||
14 | Without this patch booting with acpi_osi="!Windows 2006" is required | |
15 | for several machines to function properly with cpufreq | |
16 | due to failure to load a Vista specific table with a bad signature. | |
17 | ||
18 | Only "SSDT" is acceptable to the ACPI spec, but tables are | |
19 | seen with OEMx and null sigs. Therefore, signature validation | |
20 | is worthless. Apparently MS ACPI accepts such signatures, ACPICA | |
21 | must be compatible. | |
22 | ||
23 | http://bugzilla.kernel.org/show_bug.cgi?id=9919 | |
24 | http://bugzilla.kernel.org/show_bug.cgi?id=10383 | |
25 | http://bugzilla.kernel.org/show_bug.cgi?id=10454 | |
26 | https://bugzilla.novell.com/show_bug.cgi?id=396311 | |
27 | ||
28 | Signed-off-by: Bob Moore <robert.moore@intel.com> | |
29 | Signed-off-by: Lin Ming <ming.m.lin@intel.com> | |
30 | Signed-off-by: Len Brown <len.brown@intel.com> | |
31 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | |
32 | ||
33 | --- | |
34 | drivers/acpi/tables/tbinstal.c | 18 +++++++----------- | |
35 | 1 file changed, 7 insertions(+), 11 deletions(-) | |
36 | ||
37 | --- a/drivers/acpi/tables/tbinstal.c | |
38 | +++ b/drivers/acpi/tables/tbinstal.c | |
39 | @@ -123,17 +123,13 @@ acpi_tb_add_table(struct acpi_table_desc | |
40 | } | |
41 | } | |
42 | ||
43 | - /* The table must be either an SSDT or a PSDT or an OEMx */ | |
44 | - | |
45 | - if ((!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_PSDT)) | |
46 | - && | |
47 | - (!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_SSDT)) | |
48 | - && (strncmp(table_desc->pointer->signature, "OEM", 3))) { | |
49 | - ACPI_ERROR((AE_INFO, | |
50 | - "Table has invalid signature [%4.4s], must be SSDT, PSDT or OEMx", | |
51 | - table_desc->pointer->signature)); | |
52 | - return_ACPI_STATUS(AE_BAD_SIGNATURE); | |
53 | - } | |
54 | + /* | |
55 | + * Originally, we checked the table signature for "SSDT" or "PSDT" here. | |
56 | + * Next, we added support for OEMx tables, signature "OEM". | |
57 | + * Valid tables were encountered with a null signature, so we've just | |
58 | + * given up on validating the signature, since it seems to be a waste | |
59 | + * of code. The original code was removed (05/2008). | |
60 | + */ | |
61 | ||
62 | (void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES); | |
63 |