Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82babbb3 authored by Zhang Rui's avatar Zhang Rui Committed by Len Brown
Browse files

ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries

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

d0e184ab
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: default avatarZhang Rui <rui.zhang@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 577c9c45
Loading
Loading
Loading
Loading
+2 −25
Original line number Diff line number Diff line
@@ -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[3];
		if (obj_desc->common.type != ACPI_TYPE_INTEGER) {
			ACPI_ERROR((AE_INFO,
				    "(PRT[%X].SourceIndex) Need Integer, found %s",