Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 1436

kernel-2.6.18-238.el5.src.rpm

From: Luming Yu <luyu@redhat.com>
Date: Thu, 30 Aug 2007 15:06:09 +0800
Subject: [ia64] ACPICA: allow Load tables
Message-id: 46D66C61.7040505@redhat.com
O-Subject: [RHEL 5.2 PATCH] bz 247596 ACPICA: allow Load(OEMx) tables
Bugzilla: 247596

bz 247596

Description of problem:

HP and Hitachi machines have been implemented with SSDT's
that use the "OEMx" signatures.  But upon Load, ACPICA is rejecting
these tables because they are not using the "SSDT" signature.

ACPI Error (tbinstal-0134): Table has invalid signature [OEMx], must be SSDT...

Upstream status:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=0efabac9b7c8535eeb199d2f16d3eb44dc4761b2

The following back port is tested by me on tiger4 to prevent regression.It works.
But I don't have machine that has been implemented with SSDT's that use the "OEMx"..
So please give it your review, test and ACK.

Thanks,
Luming

Acked-by: Brian Maly <bmaly@redhat.com>
Acked-by: Prarit Bhargava <prarit@redhat.com>

diff --git a/drivers/acpi/executer/exconfig.c b/drivers/acpi/executer/exconfig.c
index c8341fa..f94e569 100644
--- a/drivers/acpi/executer/exconfig.c
+++ b/drivers/acpi/executer/exconfig.c
@@ -418,12 +418,13 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
 		return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
 	}
 
-	/* The table must be either an SSDT or a PSDT */
+	/* The table must be either an SSDT or a PSDT or an OEMx */
 
 	if ((!ACPI_COMPARE_NAME(table_ptr->signature, PSDT_SIG)) &&
-	    (!ACPI_COMPARE_NAME(table_ptr->signature, SSDT_SIG))) {
+	    (!ACPI_COMPARE_NAME(table_ptr->signature, SSDT_SIG)) &&
+		(strncmp(table_ptr->signature, "OEM", 3))) {
 		ACPI_ERROR((AE_INFO,
-			    "Table has invalid signature [%4.4s], must be SSDT or PSDT",
+			    "Table has invalid signature [%4.4s], must be SSDT, PSDT or OEMx",
 			    table_ptr->signature));
 		status = AE_BAD_SIGNATURE;
 		goto cleanup;