RE: [RFC PATCH] ACPI: Add boot option to disable auto return object repair

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux