2002-06-21 11:56:57

by Mikael Pettersson

[permalink] [raw]
Subject: 2.5.23+ bootflag.c triggers __iounmap: bad address

When booting 2.5.23/.24, my test boxes generate the following:

(an ASUS P4T-E which has SBF)
__iounmap: bad address d0802100
SBF: Simple Boot Flag extension found and enabled.
__iounmap: bad address d0805040
__iounmap: bad address d0808080
SBF: Setting boot flags 0x1

(an old Intel AL440LX which doesn't have SBF)
__iounmap: bad address c4800009
__iounmap: bad address c4804b8c
__iounmap: bad address c4802009

These warnings/errors are new since 2.5.23, which makes me
suspect something's wrong in the 2.5.23 iounmap changes.

/Mikael


2002-06-21 12:23:19

by Martin Dalecki

[permalink] [raw]
Subject: Re: 2.5.23+ bootflag.c triggers __iounmap: bad address

U?ytkownik Mikael Pettersson napisa?:
> When booting 2.5.23/.24, my test boxes generate the following:
>
> (an ASUS P4T-E which has SBF)
> __iounmap: bad address d0802100
> SBF: Simple Boot Flag extension found and enabled.
> __iounmap: bad address d0805040
> __iounmap: bad address d0808080
> SBF: Setting boot flags 0x1
>
> (an old Intel AL440LX which doesn't have SBF)
> __iounmap: bad address c4800009
> __iounmap: bad address c4804b8c
> __iounmap: bad address c4802009
>
> These warnings/errors are new since 2.5.23, which makes me
> suspect something's wrong in the 2.5.23 iounmap changes.

Just to complete the pattern: ASUS S8600 gives me the following:


PCI: Found IRQ 5 for device 00:0c.1
PCI: Sharing IRQ 5 with 00:00.2
PCI: Sharing IRQ 5 with 00:06.0
__iounmap: bad address cc800cb7
__iounmap: bad address cc804b64
SBF: Simple Boot Flag extension found and enabled.
__iounmap: bad address cc807bd8
__iounmap: bad address cc802cb7
SBF: Setting boot flags 0x1
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16)


With the mapping beein:

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e5800 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000000bff0000 (usable)
BIOS-e820: 000000000bff0000 - 000000000bfffc00 (ACPI data)
BIOS-e820: 000000000bfffc00 - 000000000c000000 (ACPI NVS)
BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
191MB LOWMEM available.
On node 0 totalpages: 49136
zone(0): 4096 pages.
zone(1): 45040 pages.
zone(2): 0 pages.

2002-06-21 12:43:54

by Andi Kleen

[permalink] [raw]
Subject: Re: 2.5.23+ bootflag.c triggers __iounmap: bad address

On Fri, Jun 21, 2002 at 01:56:55PM +0200, Mikael Pettersson wrote:
> When booting 2.5.23/.24, my test boxes generate the following:
>
> (an ASUS P4T-E which has SBF)
> __iounmap: bad address d0802100
> SBF: Simple Boot Flag extension found and enabled.
> __iounmap: bad address d0805040
> __iounmap: bad address d0808080
> SBF: Setting boot flags 0x1
>
> (an old Intel AL440LX which doesn't have SBF)
> __iounmap: bad address c4800009
> __iounmap: bad address c4804b8c
> __iounmap: bad address c4802009
>
> These warnings/errors are new since 2.5.23, which makes me
> suspect something's wrong in the 2.5.23 iounmap changes.

Does this patch fix it?


-Andi



--- linux-2.5.23-work/arch/i386/mm/ioremap.c.~2~ Tue Jun 18 02:13:09 2002
+++ linux-2.5.23-work/arch/i386/mm/ioremap.c Fri Jun 21 14:42:23 2002
@@ -213,9 +213,9 @@
void iounmap(void *addr)
{
struct vm_struct *p;
- if (addr < high_memory)
+ if (addr <= high_memory)
return;
- p = remove_kernel_area(addr);
+ p = remove_kernel_area(PAGE_MASK & (unsigned long) addr);
if (!p) {
printk("__iounmap: bad address %p\n", addr);
return;

2002-06-21 16:44:17

by Mikael Pettersson

[permalink] [raw]
Subject: Re: 2.5.23+ bootflag.c triggers __iounmap: bad address

On Fri, 21 Jun 2002 14:43:41 +0200, Andi Kleen wrote:
>> __iounmap: bad address c4800009
>> __iounmap: bad address c4804b8c
>> __iounmap: bad address c4802009
>>
>> These warnings/errors are new since 2.5.23, which makes me
>> suspect something's wrong in the 2.5.23 iounmap changes.
>
>Does this patch fix it?
>
>
>-Andi
>
>
>
>--- linux-2.5.23-work/arch/i386/mm/ioremap.c.~2~ Tue Jun 18 02:13:09 2002
>+++ linux-2.5.23-work/arch/i386/mm/ioremap.c Fri Jun 21 14:42:23 2002
>@@ -213,9 +213,9 @@
> void iounmap(void *addr)
> {
> struct vm_struct *p;
>- if (addr < high_memory)
>+ if (addr <= high_memory)
> return;
>- p = remove_kernel_area(addr);
>+ p = remove_kernel_area(PAGE_MASK & (unsigned long) addr);
> if (!p) {
> printk("__iounmap: bad address %p\n", addr);
> return;
>

Yes, that fixed the problem on the two machines I mentioned.
Thanks.

/Mikael