2021-05-19 17:48:41

by Corentin Labbe

[permalink] [raw]
Subject: REGRESSION: initrd is disabled due to memory overlap

Hello

On my SSI1328 gemini board, I use initrd=0x800000,9M in cmdline.
On next-20210518 and 5.13-rc1 I got:
Booting Linux on physical CPU 0x0
Linux version 5.13.0-rc2-next-20210518+ (compile@Red) (armv7a-unknown-linux-gnueabihf-gcc (Gentoo 10.2.0-r5 p6) 10.2.0, GNU ld (Gentoo 2.35.2 p1) 2.35.2) #77 PREEMPT Tue May 18 12:14:41 CEST 2021
CPU: FA526 [66015261] revision 1 (ARMv4), cr=0000397f
CPU: VIVT data cache, VIVT instruction cache
OF: fdt: Machine model: SSI 1328
Memory policy: Data cache writeback
INITRD: 0x00800000+0x00900000 overlaps in-use memory region - disabling initrd
Zone ranges:
Normal [mem 0x0000000000000000-0x0000000007ffffff]
HighMem empty
Movable zone start for each node
Early memory node ranges
node 0: [mem 0x0000000000000000-0x0000000007ffffff]
Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
Built 1 zonelists, mobility grouping on. Total pages: 32512
Kernel command line: console=ttyS0,19200n8 initrd=0x800000,9M
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
mem auto-init: stack:off, heap alloc:off, heap free:off
Memory: 117480K/131072K available (5459K kernel code, 595K rwdata, 1508K rodata, 180K init, 376K bss, 13592K reserved, 0K cma-reserved, 0K highmem)

On 5.12, initrd is used and works.

I bisected the problem, but without any result:
git bisect start
# bad: [6efb943b8616ec53a5e444193dccf1af9ad627b5] Linux 5.13-rc1
git bisect bad 6efb943b8616ec53a5e444193dccf1af9ad627b5
# good: [9f4ad9e425a1d3b6a34617b8ea226d56a119a717] Linux 5.12
git bisect good 9f4ad9e425a1d3b6a34617b8ea226d56a119a717
# good: [6c0029211382011af508273c4fc98a732f841d95] Merge tag 'for-5.13/block-2021-04-27' of git://git.kernel.dk/linux-block
git bisect good 6c0029211382011af508273c4fc98a732f841d95
# bad: [9d31d2338950293ec19d9b095fbaa9030899dcb4] Merge tag 'net-next-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
git bisect bad 9d31d2338950293ec19d9b095fbaa9030899dcb4
# good: [3e1b0c168f6c8648f217c78ed6a4135af8c9d830] netfilter: flowtable: add vlan match offload support
git bisect good 3e1b0c168f6c8648f217c78ed6a4135af8c9d830
# good: [3644286f6cbcea86f6fa4d308e7ac06bf2a3715a] Merge tag 'fsnotify_for_v5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
git bisect good 3644286f6cbcea86f6fa4d308e7ac06bf2a3715a
# good: [96874c619c200bc704ae2d8e34a3746350922135] net: stmmac: Add HW descriptor prefetch setting for DWMAC Core 5.20 onwards
git bisect good 96874c619c200bc704ae2d8e34a3746350922135
# good: [eb43c081a6df85e3119226b932ddb9a9572b26e4] Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
git bisect good eb43c081a6df85e3119226b932ddb9a9572b26e4
# good: [0711459095bc9ddb5a0086146d2751e6d5412cbf] Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
git bisect good 0711459095bc9ddb5a0086146d2751e6d5412cbf
# good: [635de956a7f5a6ffcb04f29d70630c64c717b56b] Merge tag 'x86-mm-2021-04-29' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect good 635de956a7f5a6ffcb04f29d70630c64c717b56b
# good: [f89271f09f589b8e9f98a9d3373d4868d3e668a5] Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
git bisect good f89271f09f589b8e9f98a9d3373d4868d3e668a5
# good: [4a52dd8fefb45626dace70a63c0738dbd83b7edb] net: selftest: fix build issue if INET is disabled
git bisect good 4a52dd8fefb45626dace70a63c0738dbd83b7edb
# first bad commit: [9d31d2338950293ec19d9b095fbaa9030899dcb4] Merge tag 'net-next-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next

Regards


2021-05-19 17:50:27

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: REGRESSION: initrd is disabled due to memory overlap

On Tue, May 18, 2021 at 12:24:12PM +0200, Corentin Labbe wrote:
> Hello
>
> On my SSI1328 gemini board, I use initrd=0x800000,9M in cmdline.
> On next-20210518 and 5.13-rc1 I got:
> Booting Linux on physical CPU 0x0
> Linux version 5.13.0-rc2-next-20210518+ (compile@Red) (armv7a-unknown-linux-gnueabihf-gcc (Gentoo 10.2.0-r5 p6) 10.2.0, GNU ld (Gentoo 2.35.2 p1) 2.35.2) #77 PREEMPT Tue May 18 12:14:41 CEST 2021
> CPU: FA526 [66015261] revision 1 (ARMv4), cr=0000397f
> CPU: VIVT data cache, VIVT instruction cache
> OF: fdt: Machine model: SSI 1328
> Memory policy: Data cache writeback
> INITRD: 0x00800000+0x00900000 overlaps in-use memory region - disabling initrd
> Zone ranges:
> Normal [mem 0x0000000000000000-0x0000000007ffffff]
> HighMem empty
> Movable zone start for each node
> Early memory node ranges
> node 0: [mem 0x0000000000000000-0x0000000007ffffff]
> Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
> Built 1 zonelists, mobility grouping on. Total pages: 32512
> Kernel command line: console=ttyS0,19200n8 initrd=0x800000,9M
> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
> mem auto-init: stack:off, heap alloc:off, heap free:off
> Memory: 117480K/131072K available (5459K kernel code, 595K rwdata, 1508K rodata, 180K init, 376K bss, 13592K reserved, 0K cma-reserved, 0K highmem)
>
> On 5.12, initrd is used and works.

I think this is caused by the normal growth of the size of the kernel.
If you look in the System.map for the _end symbol, I think you'll find
that its address is larger than PAGE_OFFSET + 0x800000, causing the
overlap.

If so, the only realistic thing to do is to move the initrd higher up
in memory - I don't think you'll get much traction with the idea of
reducing the kernel's memory footprint.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

2021-05-19 17:53:39

by Corentin Labbe

[permalink] [raw]
Subject: Re: REGRESSION: initrd is disabled due to memory overlap

Le Tue, May 18, 2021 at 11:35:46AM +0100, Russell King (Oracle) a ?crit :
> On Tue, May 18, 2021 at 12:24:12PM +0200, Corentin Labbe wrote:
> > Hello
> >
> > On my SSI1328 gemini board, I use initrd=0x800000,9M in cmdline.
> > On next-20210518 and 5.13-rc1 I got:
> > Booting Linux on physical CPU 0x0
> > Linux version 5.13.0-rc2-next-20210518+ (compile@Red) (armv7a-unknown-linux-gnueabihf-gcc (Gentoo 10.2.0-r5 p6) 10.2.0, GNU ld (Gentoo 2.35.2 p1) 2.35.2) #77 PREEMPT Tue May 18 12:14:41 CEST 2021
> > CPU: FA526 [66015261] revision 1 (ARMv4), cr=0000397f
> > CPU: VIVT data cache, VIVT instruction cache
> > OF: fdt: Machine model: SSI 1328
> > Memory policy: Data cache writeback
> > INITRD: 0x00800000+0x00900000 overlaps in-use memory region - disabling initrd
> > Zone ranges:
> > Normal [mem 0x0000000000000000-0x0000000007ffffff]
> > HighMem empty
> > Movable zone start for each node
> > Early memory node ranges
> > node 0: [mem 0x0000000000000000-0x0000000007ffffff]
> > Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
> > Built 1 zonelists, mobility grouping on. Total pages: 32512
> > Kernel command line: console=ttyS0,19200n8 initrd=0x800000,9M
> > Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
> > Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
> > mem auto-init: stack:off, heap alloc:off, heap free:off
> > Memory: 117480K/131072K available (5459K kernel code, 595K rwdata, 1508K rodata, 180K init, 376K bss, 13592K reserved, 0K cma-reserved, 0K highmem)
> >
> > On 5.12, initrd is used and works.
>
> I think this is caused by the normal growth of the size of the kernel.
> If you look in the System.map for the _end symbol, I think you'll find
> that its address is larger than PAGE_OFFSET + 0x800000, causing the
> overlap.
>
> If so, the only realistic thing to do is to move the initrd higher up
> in memory - I don't think you'll get much traction with the idea of
> reducing the kernel's memory footprint.
>

Thanks, moving initrd to 0x90000 made it works.
next:
cat /proc/iomem
00000000-07ffffff : System RAM
00008000-006f8fff : Kernel code
00726000-00818edb : Kernel data
v5.12:
# cat /proc/iomem
00000000-07ffffff : System RAM
00008000-006d5fff : Kernel code
00704000-007ee2b3 : Kernel data
So yes, it seems getting bigger.

Thanks for your help.