RE: PROBLEM: Panic booting from USB disk in ioremap.c (line 81)

From: Randy.Dunlap
Date: Sat Feb 21 2004 - 00:37:57 EST



As enumerated below:
| Calling initcall 0xc03f7e19 pcibios_init
| Calling initcall 0xc03f819c netdev_init
| Calling initcall 0xc03f1e7c chr_dev_init
| Calling initcall 0xc03e7084 i8259_init_sysfs
| Calling initcall 0xc03e7101 init_timer_sysfs
| Calling initcall 0xc03e90e2 sbf_init


I still don't see how USB enters into it, but please try the patch
below to see if I'm on the right track or not.
It looks like sbf_init() is finding an invalid ACPI RSDT length field.
This patch will telll us if that's the case or not.

--
~Randy


// Linux 2.6.3
// handle a garbage RSDT length field;

diffstat:=
arch/i386/kernel/bootflag.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletion(-)


diff -Naurp ./arch/i386/kernel/bootflag.c~sbfinit ./arch/i386/kernel/bootflag.c
--- ./arch/i386/kernel/bootflag.c~sbfinit 2004-02-17 19:59:06.000000000 -0800
+++ ./arch/i386/kernel/bootflag.c 2004-02-20 21:26:51.000000000 -0800
@@ -193,7 +193,8 @@ static int __init sbf_init(void)
if(i>0xFFFE0)
return 0;

-
+ printk(KERN_ERR "SBF: remap rsdt to 0x%x, len=0x%x\n",
+ rsdtbase, rsdtlen);
rsdt = ioremap(rsdtbase, rsdtlen);
if(rsdt == 0)
return 0;
@@ -208,6 +209,11 @@ static int __init sbf_init(void)
{
rsdtlen = i;
iounmap(rsdt);
+ if (rsdtlen > 0x1000) { /* arbitrary for now */
+ printk(KERN_ERR "SBF: invalid rsdtlen = 0x%x\n",
+ rsdtlen);
+ return 0;
+ }
rsdt = ioremap(rsdtbase, rsdtlen);
if(rsdt == 0)
return 0;
-
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/