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);
|
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. */
|
/* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */
|
||||||
|
|
||||||
struct acpi_table_fadt acpi_gbl_FADT;
|
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
|
* Return value validation and possible repair.
|
||||||
* not a problem. For example, if the "Implicit Return" feature is
|
|
||||||
* enabled, methods will always return a value.
|
|
||||||
*
|
*
|
||||||
* 2) If the return value can be of any type, then we cannot perform any
|
* 1) Don't perform return value validation/repair if this feature
|
||||||
* validation, exit.
|
* 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)) {
|
(predefined->info.expected_btypes == ACPI_RTYPE_ALL)) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ extern u32 acpi_gbl_trace_flags;
|
||||||
extern u32 acpi_gbl_enable_aml_debug_object;
|
extern u32 acpi_gbl_enable_aml_debug_object;
|
||||||
extern u8 acpi_gbl_copy_dsdt_locally;
|
extern u8 acpi_gbl_copy_dsdt_locally;
|
||||||
extern u8 acpi_gbl_truncate_io_addresses;
|
extern u8 acpi_gbl_truncate_io_addresses;
|
||||||
|
extern u8 acpi_gbl_disable_auto_repair;
|
||||||
|
|
||||||
extern u32 acpi_current_gpe_count;
|
extern u32 acpi_current_gpe_count;
|
||||||
extern struct acpi_table_fadt acpi_gbl_FADT;
|
extern struct acpi_table_fadt acpi_gbl_FADT;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче