mirror of https://gitee.com/openkylin/linux.git
ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries
2f894ef9c8
in Linux-2.6.21 worked around BIOS with mangled _PRT entries: http://bugzilla.kernel.org/show_bug.cgi?id=6859d0e184abc5
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>
This commit is contained in:
parent
577c9c456f
commit
82babbb388
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue