ACPICA: Add option to disable method return value validation and repair
Runtime option can be used to disable return value repair if this is causing a problem on a particular machine. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Родитель
80f40ce0f1
Коммит
d57b23ad0c
|
@ -126,6 +126,12 @@ u8 ACPI_INIT_GLOBAL(acpi_gbl_copy_dsdt_locally, FALSE);
|
|||
*/
|
||||
u8 ACPI_INIT_GLOBAL(acpi_gbl_truncate_io_addresses, FALSE);
|
||||
|
||||
/*
|
||||
* Disable runtime checking and repair of values returned by control methods.
|
||||
* Use only if the repair is causing a problem on a particular machine.
|
||||
*/
|
||||
u8 ACPI_INIT_GLOBAL(acpi_gbl_disable_auto_repair, FALSE);
|
||||
|
||||
/* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */
|
||||
|
||||
struct acpi_table_fadt acpi_gbl_FADT;
|
||||
|
|
|
@ -193,14 +193,20 @@ acpi_ns_check_predefined_names(struct acpi_namespace_node *node,
|
|||
}
|
||||
|
||||
/*
|
||||
* 1) We have a return value, but if one wasn't expected, just exit, this is
|
||||
* not a problem. For example, if the "Implicit Return" feature is
|
||||
* enabled, methods will always return a value.
|
||||
* Return value validation and possible repair.
|
||||
*
|
||||
* 2) If the return value can be of any type, then we cannot perform any
|
||||
* validation, exit.
|
||||
* 1) Don't perform return value validation/repair if this feature
|
||||
* has been disabled via a global option.
|
||||
*
|
||||
* 2) We have a return value, but if one wasn't expected, just exit,
|
||||
* this is not a problem. For example, if the "Implicit Return"
|
||||
* feature is enabled, methods will always return a value.
|
||||
*
|
||||
* 3) If the return value can be of any type, then we cannot perform
|
||||
* any validation, just exit.
|
||||
*/
|
||||
if ((!predefined->info.expected_btypes) ||
|
||||
if (acpi_gbl_disable_auto_repair ||
|
||||
(!predefined->info.expected_btypes) ||
|
||||
(predefined->info.expected_btypes == ACPI_RTYPE_ALL)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
|
|
@ -69,6 +69,7 @@ extern u32 acpi_gbl_trace_flags;
|
|||
extern u32 acpi_gbl_enable_aml_debug_object;
|
||||
extern u8 acpi_gbl_copy_dsdt_locally;
|
||||
extern u8 acpi_gbl_truncate_io_addresses;
|
||||
extern u8 acpi_gbl_disable_auto_repair;
|
||||
|
||||
extern u32 acpi_current_gpe_count;
|
||||
extern struct acpi_table_fadt acpi_gbl_FADT;
|
||||
|
|
Загрузка…
Ссылка в новой задаче