Re: Early ACPI lockup (was Re: 2.6.20-rc4-mm1)

From: Len Brown
Date: Fri Jan 12 2007 - 17:55:17 EST


On Friday 12 January 2007 05:20, Frederik Deweerdt wrote:
> On Thu, Jan 11, 2007 at 10:26:27PM -0800, Andrew Morton wrote:
> >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20-rc3/2.6.20-rc4-mm1/
> >
> Hi,
>
> The git-acpi.patch replaces earlier "if(!handler) return -EINVAL" by
> "BUG_ON(!handler)". This locks my machine early at boot with a message
> along the lines of (It's hand copied):
> Int 6: cr2: 00000000 eip: c0570e05 flags: 00010046 cs: 60
> stack: c054ffac c011db2b c04936d0 c054ff68 c054ffc0 c054fff4 c057da2c
>
> Reverting the change as follows, allows booting:
> Any ideas to debug this further?


> diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
> index db0c5f6..fba018c 100644
> --- a/drivers/acpi/tables.c
> +++ b/drivers/acpi/tables.c
> @@ -414,7 +414,9 @@ int __init acpi_table_parse(enum acpi_ta
> unsigned int index;
> unsigned int count = 0;
>
> - BUG_ON(!handler);
> + if (!handler)
> + return -EINVAL;
> + /*BUG_ON(!handler);*/
>
> for (i = 0; i < sdt_count; i++) {
> if (sdt_entry[i].id != id)

What do you see if on failure you also print out the params, like below?

thanks,
-Len

diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index 3fce3db..e2d08a5 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -415,7 +415,12 @@ int __init acpi_table_parse(enum acpi_table_id id, acpi_table_handler handler)
unsigned int index = 0;
unsigned int count = 0;

- BUG_ON(!handler);
+ if (!handler) {
+ printk(KERN_WARNING PREFIX
+ "acpi_table_parse(%d, %p) %s NULL handler!\n",
+ id, handler, acpi_table_signatures[id]);
+ return -EINVAL;
+ }

for (i = 0; i < sdt_count; i++) {
if (sdt_entry[i].id != id)


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