2005-01-03 00:14:57

by Michael Geithe

[permalink] [raw]
Subject: 2.6.10-bk5

Hi,
when booting 2.6.10-bk5, my box generate the following:


BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000d4000 - 00000000000de014 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff8000 (ACPI data)
BIOS-e820: 000000003fff8000 - 0000000040000000 (ACPI NVS)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000fc0f0
On node 0 totalpages: 262128
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 225280 pages, LIFO batch:16
HighMem zone: 32752 pages, LIFO batch:7
DMI 2.3 present.
__iounmap: bad address c00f0000
ACPI: RSDP (v000 AMI ) @ 0x000fa380
ACPI: RSDT (v001 AMIINT INTEL875 0x00000010 MSFT 0x00000097) @ 0x3fff0000
ACPI: FADT (v001 AMIINT INTEL875 0x00000011 MSFT 0x00000097) @ 0x3fff0030
ACPI: MADT (v001 AMIINT INTEL875 0x00000009 MSFT 0x00000097) @ 0x3fff00c0
ACPI: DSDT (v001 INTEL I875 0x00001000 MSFT 0x0100000d) @ 0x00000000

These warnings/errors are new since 2.6.10-bk2
__iounmap: bad address c00f0000


Mainboard MSI 875P NEO-LSR
Linux 2.6.10-bk5 #1 SMP Sun Jan 2 15:29:57 CET 2005 i686 Intel(R) Pentium(R) 4
CPU 2.80GHz GenuineIntel GNU/Linux

--
Michael Geithe










2005-01-03 17:26:29

by Brown, Len

[permalink] [raw]
Subject: __iounmap: bad address c00f0000 (Re: 2.6.10-bk5)

On Sun, 2005-01-02 at 19:14, Michael Geithe wrote:

> DMI 2.3 present.
> __iounmap: bad address c00f0000
> ACPI: RSDP (v000 AMI ) @ 0x000fa380

Not and ACPI issue:-)

Looks like the warning is provoked by Al Viro's update to dmi_iterate().
Perhaps there is a conflict between dmi_table()'s bt_iounmap(),
and dmi_iterate()'s new iounmap() on the same address?

-Len


2005-01-03 17:52:24

by Al Viro

[permalink] [raw]
Subject: Re: __iounmap: bad address c00f0000 (Re: 2.6.10-bk5)

On Mon, Jan 03, 2005 at 12:24:36PM -0500, Len Brown wrote:
> On Sun, 2005-01-02 at 19:14, Michael Geithe wrote:
>
> > DMI 2.3 present.
> > __iounmap: bad address c00f0000
> > ACPI: RSDP (v000 AMI ) @ 0x000fa380
>
> Not and ACPI issue:-)
>
> Looks like the warning is provoked by Al Viro's update to dmi_iterate().
> Perhaps there is a conflict between dmi_table()'s bt_iounmap(),
> and dmi_iterate()'s new iounmap() on the same address?

No.

diff -urN RC10-base/arch/i386/kernel/dmi_scan.c RC10-current/arch/i386/kernel/dmi_scan.c
--- RC10-base/arch/i386/kernel/dmi_scan.c 2004-12-27 06:06:58.000000000 -0500
+++ RC10-current/arch/i386/kernel/dmi_scan.c 2005-01-03 12:46:48.211661680 -0500
@@ -104,6 +104,11 @@
u8 buf[15];
char __iomem *p, *q;

+ /*
+ * no iounmap() for that ioremap(); it would be a no-op, but it's
+ * so early in setup that sucker gets confused into doing what
+ * it shouldn't if we actually call it.
+ */
for (p = q = ioremap(0xF0000, 0x10000); q < p + 0x10000; q += 16) {
memcpy_fromio(buf, q, 15);
if(memcmp(buf, "_DMI_", 5)==0 && dmi_checksum(buf))
@@ -125,13 +130,10 @@
num, len));
dmi_printk((KERN_INFO "DMI table at 0x%08X.\n",
base));
- if(dmi_table(base,len, num, decode)==0) {
- iounmap(p);
+ if(dmi_table(base,len, num, decode)==0)
return 0;
- }
}
}
- iounmap(p);
return -1;
}

2005-01-03 18:09:20

by Al Viro

[permalink] [raw]
Subject: Re: __iounmap: bad address c00f0000 (Re: 2.6.10-bk5)

On Mon, Jan 03, 2005 at 12:49:43PM -0500, Len Brown wrote:
> Suggested-by: Al Viro
> Signed-off-by: Len Brown <[email protected]>
>
>
> ===== arch/i386/kernel/dmi_scan.c 1.74 vs edited =====
> --- 1.74/arch/i386/kernel/dmi_scan.c 2004-12-28 14:07:48 -05:00
> +++ edited/arch/i386/kernel/dmi_scan.c 2005-01-03 12:46:33 -05:00
> @@ -126,12 +126,12 @@
> dmi_printk((KERN_INFO "DMI table at 0x%08X.\n",
> base));
> if(dmi_table(base,len, num, decode)==0) {
> - iounmap(p);
> + /* too early to call iounmap(p); */

One comment: iounmap() on result of ioremap(ISA address) is a no-op.
The problem in this case is that we are too early in setup sequence
and that confuses iounmap() into not recognizing that fact. So we
end up trying to find VMA created by ioremap() and (surprise, surprise)
find none. Which gives the warning in question. We *still* do nothing,
so everything actually works fine, but we do get confused "WTF is going
on?" in the logs.

2005-01-03 18:31:08

by Brown, Len

[permalink] [raw]
Subject: Re: __iounmap: bad address c00f0000 (Re: 2.6.10-bk5)

On Mon, 2005-01-03 at 12:24, Len Brown wrote:
> On Sun, 2005-01-02 at 19:14, Michael Geithe wrote:
>
> > DMI 2.3 present.
> > __iounmap: bad address c00f0000
> > ACPI: RSDP (v000 AMI ) @ 0x000fa380
>
> Not and ACPI issue:-)
>
> Looks like the warning is provoked by Al Viro's update to dmi_iterate().
> Perhaps there is a conflict between dmi_table()'s bt_iounmap(),
> and dmi_iterate()'s new iounmap() on the same address?
>
> -Len
>


Try this.

Suggested-by: Al Viro
Signed-off-by: Len Brown <[email protected]>


===== arch/i386/kernel/dmi_scan.c 1.74 vs edited =====
--- 1.74/arch/i386/kernel/dmi_scan.c 2004-12-28 14:07:48 -05:00
+++ edited/arch/i386/kernel/dmi_scan.c 2005-01-03 12:46:33 -05:00
@@ -126,12 +126,12 @@
dmi_printk((KERN_INFO "DMI table at 0x%08X.\n",
base));
if(dmi_table(base,len, num, decode)==0) {
- iounmap(p);
+ /* too early to call iounmap(p); */
return 0;
}
}
}
- iounmap(p);
+ /* too early to call iounmap(p); */
return -1;
}




2005-01-03 18:35:11

by Michael Geithe

[permalink] [raw]
Subject: Re: __iounmap: bad address c00f0000 (Re: 2.6.10-bk5)

On Monday 03 January 2005 18:49, you wrote:
> Suggested-by: Al Viro
> Signed-off-by: Len Brown <[email protected]>
>
>
> ===== arch/i386/kernel/dmi_scan.c 1.74 vs edited =====
> --- 1.74/arch/i386/kernel/dmi_scan.c 2004-12-28 14:07:48 -05:00
> +++ edited/arch/i386/kernel/dmi_scan.c 2005-01-03 12:46:33 -05:00
> @@ -126,12 +126,12 @@
> dmi_printk((KERN_INFO "DMI table at 0x%08X.\n",
> base));
> if(dmi_table(base,len, num, decode)==0) {
> - iounmap(p);
> + /* too early to call iounmap(p); */
> return 0;
> }
> }
> }
> - iounmap(p);
> + /* too early to call iounmap(p); */
> return -1;
> }

Hi,
with this patch now looks good.

Linux version 2.6.10-bk6 ([email protected]) (gcc-Version 3.3.4 20040623
(Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)) #1 SMP Mon Jan 3 19:11:36
CET 2005
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000d4000 - 00000000000de014 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff8000 (ACPI data)
BIOS-e820: 000000003fff8000 - 0000000040000000 (ACPI NVS)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000fc0f0
On node 0 totalpages: 262128
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 225280 pages, LIFO batch:16
HighMem zone: 32752 pages, LIFO batch:7
DMI 2.3 present.
ACPI: RSDP (v000 AMI ) @ 0x000fa380
ACPI: RSDT (v001 AMIINT INTEL875 0x00000010 MSFT 0x00000097) @ 0x3fff0000
ACPI: FADT (v001 AMIINT INTEL875 0x00000011 MSFT 0x00000097) @ 0x3fff0030
ACPI: MADT (v001 AMIINT INTEL875 0x00000009 MSFT 0x00000097) @ 0x3fff00c0
ACPI: DSDT (v001 INTEL I875 0x00001000 MSFT 0x0100000d) @ 0x00000000

Thanks

-- Michael Geithe








Attachments:
(No filename) (2.05 kB)
dmesg (18.40 kB)
Download all attachments