Linux ACPI
 help / color / mirror / Atom feed
* [PATCH] ACPI: revert 2f894ef9
@ 2009-04-08  1:44 Zhang Rui
  2009-04-11  4:10 ` Len Brown
  2009-04-11  4:15 ` Len Brown
  0 siblings, 2 replies; 4+ messages in thread
From: Zhang Rui @ 2009-04-08  1:44 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-acpi, Zhang, Rui, Li, Shaohua


commit 2f894ef9 and commit d0e184ab are fixes for the same issue.
revert 2f894ef9 to be consistent with ACPICA.

http://bugzilla.kernel.org/show_bug.cgi?id=12270

CC: Li Shaohua <shaohua.li@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/acpi/acpica/rscreate.c |   27 ++-------------------------
 1 file changed, 2 insertions(+), 25 deletions(-)

Index: linux-2.6/drivers/acpi/acpica/rscreate.c
===================================================================
--- linux-2.6.orig/drivers/acpi/acpica/rscreate.c
+++ linux-2.6/drivers/acpi/acpica/rscreate.c
@@ -191,8 +191,6 @@ acpi_rs_create_pci_routing_table(union a
 	user_prt = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer);
 
 	for (index = 0; index < number_of_elements; index++) {
-		int source_name_index = 2;
-		int source_index_index = 3;
 
 		/*
 		 * Point user_prt past this current structure
@@ -261,27 +259,6 @@ acpi_rs_create_pci_routing_table(union a
 			return_ACPI_STATUS(AE_BAD_DATA);
 		}
 
-		/*
-		 * If BIOS erroneously reversed the _PRT source_name and source_index,
-		 * then reverse them back.
-		 */
-		if (ACPI_GET_OBJECT_TYPE(sub_object_list[3]) !=
-		    ACPI_TYPE_INTEGER) {
-			if (acpi_gbl_enable_interpreter_slack) {
-				source_name_index = 3;
-				source_index_index = 2;
-				printk(KERN_WARNING
-				       "ACPI: Handling Garbled _PRT entry\n");
-			} else {
-				ACPI_ERROR((AE_INFO,
-					    "(PRT[%X].source_index) Need Integer, found %s",
-					    index,
-					    acpi_ut_get_object_type_name
-					    (sub_object_list[3])));
-				return_ACPI_STATUS(AE_BAD_DATA);
-			}
-		}
-
 		user_prt->pin = (u32) obj_desc->integer.value;
 
 		/*
@@ -305,7 +282,7 @@ acpi_rs_create_pci_routing_table(union a
 		 * 3) Third subobject: Dereference the PRT.source_name
 		 * The name may be unresolved (slack mode), so allow a null object
 		 */
-		obj_desc = sub_object_list[source_name_index];
+		obj_desc = sub_object_list[2];
 		if (obj_desc) {
 			switch (ACPI_GET_OBJECT_TYPE(obj_desc)) {
 			case ACPI_TYPE_LOCAL_REFERENCE:
@@ -379,7 +356,7 @@ acpi_rs_create_pci_routing_table(union a
 
 		/* 4) Fourth subobject: Dereference the PRT.source_index */
 
-		obj_desc = sub_object_list[source_index_index];
+		obj_desc = sub_object_list[3];
 		if (ACPI_GET_OBJECT_TYPE(obj_desc) != ACPI_TYPE_INTEGER) {
 			ACPI_ERROR((AE_INFO,
 				    "(PRT[%X].SourceIndex) Need Integer, found %s",



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ACPI: revert 2f894ef9
  2009-04-08  1:44 [PATCH] ACPI: revert 2f894ef9 Zhang Rui
@ 2009-04-11  4:10 ` Len Brown
  2009-04-11  4:59   ` Len Brown
  2009-04-11  4:15 ` Len Brown
  1 sibling, 1 reply; 4+ messages in thread
From: Len Brown @ 2009-04-11  4:10 UTC (permalink / raw)
  To: Zhang Rui; +Cc: linux-acpi, Li, Shaohua

>From 8afe68ed4a7efd65761791447fc215dc577659e0 Mon Sep 17 00:00:00 2001
From: Zhang Rui <rui.zhang@intel.com>
Date: Wed, 8 Apr 2009 09:44:29 +0800
Subject: [PATCH] ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries
X-Patchwork-Hint: ignore

2f894ef9c8b36a35d80709bedca276d2fc691941
in Linux-2.6.21 worked around BIOS with mangled _PRT entries:
http://bugzilla.kernel.org/show_bug.cgi?id=6859

d0e184abc5983281ef189db2c759d65d56eb1b80
worked around the same issue via ACPICA, and shipped in 2.6.27.

Unfortunately the two workarounds conflict:
http://bugzilla.kernel.org/show_bug.cgi?id=12270

So revert the Linux specific one.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---

As applied to 2.6.30-rc1

thanks,
-Len


 drivers/acpi/acpica/rscreate.c |   27 ++-------------------------
 1 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/drivers/acpi/acpica/rscreate.c b/drivers/acpi/acpica/rscreate.c
index 663f692..848237d 100644
--- a/drivers/acpi/acpica/rscreate.c
+++ b/drivers/acpi/acpica/rscreate.c
@@ -191,8 +191,6 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
 	user_prt = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer);
 
 	for (index = 0; index < number_of_elements; index++) {
-		int source_name_index = 2;
-		int source_index_index = 3;
 
 		/*
 		 * Point user_prt past this current structure
@@ -261,27 +259,6 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
 			return_ACPI_STATUS(AE_BAD_DATA);
 		}
 
-		/*
-		 * If BIOS erroneously reversed the _PRT source_name and source_index,
-		 * then reverse them back.
-		 */
-		if ((sub_object_list[3])->common.type !=
-		    ACPI_TYPE_INTEGER) {
-			if (acpi_gbl_enable_interpreter_slack) {
-				source_name_index = 3;
-				source_index_index = 2;
-				printk(KERN_WARNING
-				       "ACPI: Handling Garbled _PRT entry\n");
-			} else {
-				ACPI_ERROR((AE_INFO,
-					    "(PRT[%X].source_index) Need Integer, found %s",
-					    index,
-					    acpi_ut_get_object_type_name
-					    (sub_object_list[3])));
-				return_ACPI_STATUS(AE_BAD_DATA);
-			}
-		}
-
 		user_prt->pin = (u32) obj_desc->integer.value;
 
 		/*
@@ -304,7 +281,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
 		 * 3) Third subobject: Dereference the PRT.source_name
 		 * The name may be unresolved (slack mode), so allow a null object
 		 */
-		obj_desc = sub_object_list[source_name_index];
+		obj_desc = sub_object_list[2];
 		if (obj_desc) {
 			switch (obj_desc->common.type) {
 			case ACPI_TYPE_LOCAL_REFERENCE:
@@ -378,7 +355,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
 
 		/* 4) Fourth subobject: Dereference the PRT.source_index */
 
-		obj_desc = sub_object_list[source_index_index];
+		obj_desc = sub_object_list[4];
 		if (obj_desc->common.type != ACPI_TYPE_INTEGER) {
 			ACPI_ERROR((AE_INFO,
 				    "(PRT[%X].SourceIndex) Need Integer, found %s",
-- 
1.6.2.2.485.ge3734



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] ACPI: revert 2f894ef9
  2009-04-08  1:44 [PATCH] ACPI: revert 2f894ef9 Zhang Rui
  2009-04-11  4:10 ` Len Brown
@ 2009-04-11  4:15 ` Len Brown
  1 sibling, 0 replies; 4+ messages in thread
From: Len Brown @ 2009-04-11  4:15 UTC (permalink / raw)
  To: Zhang Rui; +Cc: linux-acpi, Li, Shaohua

this version should go to 2.6.29.stable as soon as the merged version 
hits 2.6.30.

thanks,
Len Brown, Intel Open Source Technology Center


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ACPI: revert 2f894ef9
  2009-04-11  4:10 ` Len Brown
@ 2009-04-11  4:59   ` Len Brown
  0 siblings, 0 replies; 4+ messages in thread
From: Len Brown @ 2009-04-11  4:59 UTC (permalink / raw)
  To: Zhang Rui; +Cc: linux-acpi, Li, Shaohua

>  		/* 4) Fourth subobject: Dereference the PRT.source_index */
>  
> -		obj_desc = sub_object_list[source_index_index];
> +		obj_desc = sub_object_list[4];

bah, I typed [3] as [4]...
I'd like to blame it on lack of magic numbers,
but i think instead i'm just too sleepy...

thanks,
Len Brown, Intel Open Source Technology Center


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-04-11  5:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-08  1:44 [PATCH] ACPI: revert 2f894ef9 Zhang Rui
2009-04-11  4:10 ` Len Brown
2009-04-11  4:59   ` Len Brown
2009-04-11  4:15 ` Len Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox