2009-12-17 13:36:14

by Alexander Beregalov

[permalink] [raw]
Subject: 2.6.32: x86_32: Destination address is too large.

Hi

IBM x345, 2 * Xeon 2GHz, x86_32, 3Gb of RAM

arch/x86/boot/compressed/misc.c:
asmlinkage void decompress_kernel(


#ifdef CONFIG_X86_64
if (heap > 0x3fffffffffffUL)
error("Destination address too large");
#else
if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
error("Destination address too large");
#endif


heap is 0x31341b80 here,
CONFIG_PAGE_OFFSET=0xC0000000

gcc version 4.4.0 20090514 (Red Hat 4.4.0-6.314103)

2.6.27 works fine.


2009-12-17 14:50:10

by Alexander Beregalov

[permalink] [raw]
Subject: Re: 2.6.32: x86_32: Destination address is too large.

2009/12/17 Alexander Beregalov <[email protected]>:
> Hi
>
> IBM x345, 2 * Xeon 2GHz, x86_32, 3Gb of RAM
>
> arch/x86/boot/compressed/misc.c:
> asmlinkage void decompress_kernel(
>
>
> #ifdef CONFIG_X86_64
>        if (heap > 0x3fffffffffffUL)
>                error("Destination address too large");
> #else
>        if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
>                error("Destination address too large");
> #endif
>
>
> heap is 0x31341b80 here,
> CONFIG_PAGE_OFFSET=0xC0000000
>
> gcc version 4.4.0 20090514 (Red Hat 4.4.0-6.314103)
>
> 2.6.27 works fine.
>

For 2.6.27 heap is 0x0058d360

Config for 2.6.32 is attached


Attachments:
config-x345 (38.10 kB)

2009-12-17 14:55:34

by H. Peter Anvin

[permalink] [raw]
Subject: Re: 2.6.32: x86_32: Destination address is too large.

On 12/17/2009 05:36 AM, Alexander Beregalov wrote:
> Hi
>
> IBM x345, 2 * Xeon 2GHz, x86_32, 3Gb of RAM
>
> arch/x86/boot/compressed/misc.c:
> asmlinkage void decompress_kernel(
>
>
> #ifdef CONFIG_X86_64
> if (heap > 0x3fffffffffffUL)
> error("Destination address too large");
> #else
> if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
> error("Destination address too large");
> #endif
>
> heap is 0x31341b80 here,
> CONFIG_PAGE_OFFSET=0xC0000000


Something is clearly strange, because 0x31341b80 < 0x38000000... could
you perhaps send me your arch/x86/boot/compressed/misc.o file, or if
that is not possible, your bzImage file?

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.

2009-12-17 14:56:41

by H. Peter Anvin

[permalink] [raw]
Subject: Re: 2.6.32: x86_32: Destination address is too large.

On 12/17/2009 05:36 AM, Alexander Beregalov wrote:
>
> #ifdef CONFIG_X86_64
> if (heap > 0x3fffffffffffUL)
> error("Destination address too large");
> #else
> if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
> error("Destination address too large");
> #endif
>
>
> heap is 0x31341b80 here,
> CONFIG_PAGE_OFFSET=0xC0000000
>

Nevermind, the equation turns out to be 0x1fffffff, and thus it is an
error... exactly how are you loading the kernel?

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.

2009-12-17 15:09:19

by H. Peter Anvin

[permalink] [raw]
Subject: Re: 2.6.32: x86_32: Destination address is too large.

On 12/17/2009 06:49 AM, Alexander Beregalov wrote:
> Config for 2.6.32 is attached

Actually, could you please send me you bzImage file?

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.

2009-12-22 18:53:08

by H. Peter Anvin

[permalink] [raw]
Subject: Re: 2.6.32: x86_32: Destination address is too large.

On 12/17/2009 05:36 AM, Alexander Beregalov wrote:
>
> heap is 0x31341b80 here,
> CONFIG_PAGE_OFFSET=0xC0000000
>
> gcc version 4.4.0 20090514 (Red Hat 4.4.0-6.314103)
>
> 2.6.27 works fine.

The combination of an ancient distro (CentOS/RHEL 4) and a bzip2
compressed kernel makes me feel reasonably certain that this is yet an
instance of "the bloody shell scripts don't actually generate the proper
length field."

It's a known problem and we're working on it. In the meantime, select
gzip for the kernel compression.

-hpa


--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.