lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 1 Jul 2008 10:33:26 +0200
From:	Thomas Renninger <trenn@...e.de>
To:	Len Brown <lenb@...nel.org>
Cc:	linux-acpi@...r.kernel.org, Bob Moore <robert.moore@...el.com>,
	Lin Ming <ming.m.lin@...el.com>,
	Len Brown <len.brown@...el.com>,
	Bjorn Helgaas <bjorn.helgaas@...com>,
	Huang Cheng <cheng.huang@...el.com>,
	firmwarekit-discuss@...host.org,
	Arjan van de Ven <arjan@...ux.intel.com>,
	"Linux Kernel Mailing List" <linux-kernel@...r.kernel.org>
Subject: Check for BIOS bugs - Original Subject: Re: [PATCH 23/70] ACPICA: Workaround for reversed _PRT entries from BIOS

On Friday 20 June 2008 09:43:25 Len Brown wrote:
> From: Bob Moore <robert.moore@...el.com>
>
> Some BIOSs erroneously reverse the _PRT SourceName and the
> SourceIndex.  Detect and repair this problem. MS ACPI also allows
> and repairs this problem, thus ACPICA must also.

It would be great to have an interface to report this as a BIOS defect.

Something like:

FIRMWARE_BUG_ON(FIRM_WARN, "erroneously reversed the _PRT source_name", ACPI_ 
Bug);

FIRMWARE_BUG_ON(severity, description, component);

If say CONFIG_FIRMWARE_DEBUG is set this could send a netlink event to 
userspace and e.g. linuxfirmwarekit can grab it.
linuxfirmwarekit currently implements it's own scripts and even worse, parses 
dmesg to find BIOS bugs, which is not really maintenable.

IMO the kernel developers themselves need an interface where they can report 
bugs while seeing and fixing them.

Huang Cheng posted a nice patch on the linuxfirmwarekit list a while ago 
(unfortunately the patch was attached not inlined):
http://www.bughost.org/pipermail/firmwarekit-discuss/2008-March/000166.html

I mean it needs some cleanup (e.g. the file name was the bug number, there 
need to be a general interface created, e.g. as  shown above, etc.).
But this is IMO a good idea and might be worth adding to the kernel (when 
written :) ).
Comments?

        Thomas

PS: I added Bjorn as in the PNP parts BIOSes are pretty much messed up.
One reason is that AFAIK ACPI parts are glued together. Having dozens/hundreds 
of device declarations in a BIOS of which huge parts have not been written by 
yourself, it is very hard for vendors to check for correctness.
While Bjorn and others are adding quirks and workarounds for specific devices, 
machines or general BIOS bugs it would be great to be able to point vendors 
to these bugs by a simple tool.

> Signed-off-by: Bob Moore <robert.moore@...el.com>
> Signed-off-by: Lin Ming <ming.m.lin@...el.com>
> Signed-off-by: Len Brown <len.brown@...el.com>
> ---
>  drivers/acpi/resources/rscreate.c |   17 +++++++++++++++++
>  1 files changed, 17 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/acpi/resources/rscreate.c
> b/drivers/acpi/resources/rscreate.c index faddaee..70c84ec 100644
> --- a/drivers/acpi/resources/rscreate.c
> +++ b/drivers/acpi/resources/rscreate.c
> @@ -285,6 +285,23 @@ acpi_rs_create_pci_routing_table(union
> acpi_operand_object *package_object, }
>
>  		/*
> +		 * If the BIOS has erroneously reversed the _PRT source_name (index 2)
> +		 * and the source_index (index 3), fix it. _PRT is important enough to
> +		 * workaround this BIOS error. This also provides compatibility with
> +		 * other ACPI implementations.
> +		 */
> +		obj_desc = sub_object_list[3];
> +		if (!obj_desc
> +		    || (ACPI_GET_OBJECT_TYPE(obj_desc) != ACPI_TYPE_INTEGER)) {
> +			sub_object_list[3] = sub_object_list[2];
> +			sub_object_list[2] = obj_desc;
> +
> +			ACPI_WARNING((AE_INFO,
> +				      "(PRT[%X].Source) SourceName and SourceIndex are reversed,
> fixed", +				      index));
> +		}
> +
> +		/*
>  		 * 3) Third subobject: Dereference the PRT.source_name
>  		 * The name may be unresolved (slack mode), so allow a null object
>  		 */


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ