Browse Source

ACPICA: Namespace: Add scope information to the simple object repair mechanism

ACPICA commit 51cbd324420ca5e381cb2c57ce95139053518a35

The acpi_object_converter callbacks are lack in scope information to
convert name_string. This patch fixes this issue by passing the evaluation
method/object node to the converter callbacks. Lv Zheng.

Link: https://github.com/acpica/acpica/commit/51cbd324
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Lv Zheng 9 years ago
parent
commit
4debda539a

+ 2 - 1
drivers/acpi/acpica/aclocal.h

@@ -395,7 +395,8 @@ union acpi_predefined_info {
 
 
 /* Return object auto-repair info */
 /* Return object auto-repair info */
 
 
-typedef acpi_status(*acpi_object_converter) (union acpi_operand_object
+typedef acpi_status(*acpi_object_converter) (struct acpi_namespace_node * scope,
+					     union acpi_operand_object
 					     *original_object,
 					     *original_object,
 					     union acpi_operand_object
 					     union acpi_operand_object
 					     **converted_object);
 					     **converted_object);

+ 4 - 2
drivers/acpi/acpica/acnamesp.h

@@ -183,11 +183,13 @@ acpi_ns_convert_to_buffer(union acpi_operand_object *original_object,
 			  union acpi_operand_object **return_object);
 			  union acpi_operand_object **return_object);
 
 
 acpi_status
 acpi_status
-acpi_ns_convert_to_unicode(union acpi_operand_object *original_object,
+acpi_ns_convert_to_unicode(struct acpi_namespace_node *scope,
+			   union acpi_operand_object *original_object,
 			   union acpi_operand_object **return_object);
 			   union acpi_operand_object **return_object);
 
 
 acpi_status
 acpi_status
-acpi_ns_convert_to_resource(union acpi_operand_object *original_object,
+acpi_ns_convert_to_resource(struct acpi_namespace_node *scope,
+			    union acpi_operand_object *original_object,
 			    union acpi_operand_object **return_object);
 			    union acpi_operand_object **return_object);
 
 
 /*
 /*

+ 8 - 4
drivers/acpi/acpica/nsconvert.c

@@ -306,7 +306,8 @@ acpi_ns_convert_to_buffer(union acpi_operand_object *original_object,
  *
  *
  * FUNCTION:    acpi_ns_convert_to_unicode
  * FUNCTION:    acpi_ns_convert_to_unicode
  *
  *
- * PARAMETERS:  original_object     - ASCII String Object to be converted
+ * PARAMETERS:  scope               - Namespace node for the method/object
+ *              original_object     - ASCII String Object to be converted
  *              return_object       - Where the new converted object is returned
  *              return_object       - Where the new converted object is returned
  *
  *
  * RETURN:      Status. AE_OK if conversion was successful.
  * RETURN:      Status. AE_OK if conversion was successful.
@@ -316,7 +317,8 @@ acpi_ns_convert_to_buffer(union acpi_operand_object *original_object,
  ******************************************************************************/
  ******************************************************************************/
 
 
 acpi_status
 acpi_status
-acpi_ns_convert_to_unicode(union acpi_operand_object *original_object,
+acpi_ns_convert_to_unicode(struct acpi_namespace_node * scope,
+			   union acpi_operand_object *original_object,
 			   union acpi_operand_object **return_object)
 			   union acpi_operand_object **return_object)
 {
 {
 	union acpi_operand_object *new_object;
 	union acpi_operand_object *new_object;
@@ -370,7 +372,8 @@ acpi_ns_convert_to_unicode(union acpi_operand_object *original_object,
  *
  *
  * FUNCTION:    acpi_ns_convert_to_resource
  * FUNCTION:    acpi_ns_convert_to_resource
  *
  *
- * PARAMETERS:  original_object     - Object to be converted
+ * PARAMETERS:  scope               - Namespace node for the method/object
+ *              original_object     - Object to be converted
  *              return_object       - Where the new converted object is returned
  *              return_object       - Where the new converted object is returned
  *
  *
  * RETURN:      Status. AE_OK if conversion was successful
  * RETURN:      Status. AE_OK if conversion was successful
@@ -381,7 +384,8 @@ acpi_ns_convert_to_unicode(union acpi_operand_object *original_object,
  ******************************************************************************/
  ******************************************************************************/
 
 
 acpi_status
 acpi_status
-acpi_ns_convert_to_resource(union acpi_operand_object *original_object,
+acpi_ns_convert_to_resource(struct acpi_namespace_node * scope,
+			    union acpi_operand_object *original_object,
 			    union acpi_operand_object **return_object)
 			    union acpi_operand_object **return_object)
 {
 {
 	union acpi_operand_object *new_object;
 	union acpi_operand_object *new_object;

+ 2 - 2
drivers/acpi/acpica/nsrepair.c

@@ -172,8 +172,8 @@ acpi_ns_simple_repair(struct acpi_evaluate_info *info,
 					      "Missing expected return value"));
 					      "Missing expected return value"));
 		}
 		}
 
 
-		status =
-		    predefined->object_converter(return_object, &new_object);
+		status = predefined->object_converter(info->node, return_object,
+						      &new_object);
 		if (ACPI_FAILURE(status)) {
 		if (ACPI_FAILURE(status)) {
 
 
 			/* A fatal error occurred during a conversion */
 			/* A fatal error occurred during a conversion */