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

Commit 955f485d authored by Bob Moore's avatar Bob Moore Committed by Rafael J. Wysocki
Browse files

ACPICA: Update return value for intenal _OSI method

ACPICA commit 82101009c7c04845edb3495e66a274a613758bca

Instead of 0xFFFFFFFF, _OSI is now defined to return "Ones".
This is for compatibility with Windows. The ACPI spec will
be updated to reflect this.

Link: https://github.com/acpica/acpica/commit/82101009


Reported-by: default avatarDaniel Drake <drake@endlessm.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 4e0b26d3
Loading
Loading
Loading
Loading
+17 −5
Original line number Original line Diff line number Diff line
@@ -390,11 +390,22 @@ struct acpi_interface_info *acpi_ut_get_interface(acpi_string interface_name)
 * PARAMETERS:  walk_state          - Current walk state
 * PARAMETERS:  walk_state          - Current walk state
 *
 *
 * RETURN:      Status
 * RETURN:      Status
 *              Integer: TRUE (0) if input string is matched
 *                       FALSE (-1) if string is not matched
 *
 *
 * DESCRIPTION: Implementation of the _OSI predefined control method. When
 * DESCRIPTION: Implementation of the _OSI predefined control method. When
 *              an invocation of _OSI is encountered in the system AML,
 *              an invocation of _OSI is encountered in the system AML,
 *              control is transferred to this function.
 *              control is transferred to this function.
 *
 *
 * (August 2016)
 * Note:  _OSI is now defined to return "Ones" to indicate a match, for
 * compatibility with other ACPI implementations. On a 32-bit DSDT, Ones
 * is 0xFFFFFFFF. On a 64-bit DSDT, Ones is 0xFFFFFFFFFFFFFFFF
 * (ACPI_UINT64_MAX).
 *
 * This function always returns ACPI_UINT64_MAX for TRUE, and later code
 * will truncate this to 32 bits if necessary.
 *
 ******************************************************************************/
 ******************************************************************************/


acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
@@ -404,7 +415,7 @@ acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
	struct acpi_interface_info *interface_info;
	struct acpi_interface_info *interface_info;
	acpi_interface_handler interface_handler;
	acpi_interface_handler interface_handler;
	acpi_status status;
	acpi_status status;
	u32 return_value;
	u64 return_value;


	ACPI_FUNCTION_TRACE(ut_osi_implementation);
	ACPI_FUNCTION_TRACE(ut_osi_implementation);


@@ -444,7 +455,7 @@ acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
			acpi_gbl_osi_data = interface_info->value;
			acpi_gbl_osi_data = interface_info->value;
		}
		}


		return_value = ACPI_UINT32_MAX;
		return_value = ACPI_UINT64_MAX;
	}
	}


	acpi_os_release_mutex(acpi_gbl_osi_mutex);
	acpi_os_release_mutex(acpi_gbl_osi_mutex);
@@ -456,9 +467,10 @@ acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state)
	 */
	 */
	interface_handler = acpi_gbl_interface_handler;
	interface_handler = acpi_gbl_interface_handler;
	if (interface_handler) {
	if (interface_handler) {
		return_value =
		if (interface_handler
		    interface_handler(string_desc->string.pointer,
		    (string_desc->string.pointer, (u32)return_value)) {
				      return_value);
			return_value = ACPI_UINT64_MAX;
		}
	}
	}


	ACPI_DEBUG_PRINT_RAW((ACPI_DB_INFO,
	ACPI_DEBUG_PRINT_RAW((ACPI_DB_INFO,