We continually make progress in this area, and we already can fix a huge number of potential issues. I would rather not allow an option to disable this unless it is absolutely necessary; I don't want this ACPICA feature to become disabled permanently in Linux. It is rather surprising how many predefined names in any given BIOS return incorrect values. What started out as ad-hoc code littered throughout ACPICA and the ACPI-related device drivers is now encapsulated in a repair module that handles hundreds of possible cases. The repair module is table-driven and causes only a very small overhead. The final goal of the detect/repair mechanism is that if a driver receives an AE_OK back from the evaluation of a predefined name (anything that starts with an underscore), it is guaranteed that the return value is something that is expected -- thus saving all of the ACPI-related device drivers from performing typechecks on the returned object. Note: The ACPICA validation/repair code was originally released in 2009. Bob > -----Original Message----- > From: Zheng, Lv > Sent: Tuesday, January 22, 2013 11:29 PM > To: Brown, Len; Wysocki, Rafael J; Rafael J Wysocki; Moore, Robert > Cc: linux-acpi@xxxxxxxxxxxxxxx; devel@xxxxxxxxxx; Zheng, Lv > Subject: [RFC PATCH] ACPI: Add boot option to disable auto return object > repair > > There is automatic return object repair mechanism implemented in ACPICA > which can not handle all of the issues exposed by BIOS currently. This > patch allow a kernel boots up without such workarounds enabled. A better > choice should refine the repair mechanism to allow more robust evaluation > result. > > Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx> > --- > drivers/acpi/bus.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index > 01708a1..e33577f 100644 > --- a/drivers/acpi/bus.c > +++ b/drivers/acpi/bus.c > @@ -805,6 +805,18 @@ static int __init acpi_bus_init(void) struct kobject > *acpi_kobj; EXPORT_SYMBOL_GPL(acpi_kobj); > > +static int __init acpi_disable_repair(char *s) { > + printk(KERN_NOTICE PREFIX > + "ACPI: Predefined names repair disabled\n"); > + > + acpi_gbl_disable_auto_repair = TRUE; > + > + return 1; > +} > + > +__setup("acpi_no_repair", acpi_disable_repair); > + > static int __init acpi_init(void) > { > int result; > -- > 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html