aboutsummaryrefslogtreecommitdiff
path: root/namespace/nsrepair2.c
diff options
context:
space:
mode:
Diffstat (limited to 'namespace/nsrepair2.c')
-rw-r--r--namespace/nsrepair2.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/namespace/nsrepair2.c b/namespace/nsrepair2.c
index 4c9c6d78259a..d8a0420cf94c 100644
--- a/namespace/nsrepair2.c
+++ b/namespace/nsrepair2.c
@@ -555,8 +555,23 @@ AcpiNsRepair_TSS (
{
ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
ACPI_STATUS Status;
+ ACPI_NAMESPACE_NODE *Node;
+ /*
+ * We can only sort the _TSS return package if there is no _PSS in the
+ * same scope. This is because if _PSS is present, the ACPI specification
+ * dictates that the _TSS Power Dissipation field is to be ignored, and
+ * therefore some BIOSs leave garbage values in the _TSS Power field(s).
+ * In this case, it is best to just return the _TSS package as-is.
+ * (May, 2011)
+ */
+ Status = AcpiNsGetNode (Data->Node, "^_PSS", ACPI_NS_NO_UPSEARCH, &Node);
+ if (ACPI_SUCCESS (Status))
+ {
+ return (AE_OK);
+ }
+
Status = AcpiNsCheckSortedList (Data, ReturnObject, 5, 1,
ACPI_SORT_DESCENDING, "PowerDissipation");