On Tue, 29 Dec 2020 18:45:29 +0100 Helge Deller <deller@xxxxxx> wrote: > On parisc the kernel fails to start the init process because in > shift_arg_pages() in fs/exec.c, move_page_tables() is called to e.g. > move pages from start addr 0xffeff000 to the new start addr 0xf9ccb000 > with a length of 0x1000 bytes, but move_page_tables() instead returns > that it apparently moved 0x57000 bytes. Since the number of bytes is > different than the number of bytes which should have been moved, > shift_arg_pages() aborts with -ENOMEM. > > Debugging shows that commit c49dd34018026 ("mm: speedup mremap on > 1GB or larger regions") is the culprit. > In this commit, the extent calculation was tried to be optimized, but > got it wrong for this case. > The patch below reverts to the previous way to calculate the extent and > thus fixes the boot problem. > Thanks. The same as https://lkml.kernel.org/r/20201219170433.2418867-1-kaleshsingh@xxxxxxxxxx. I'll get that sent to Linus today.