From: Greg KH <gregkh@linuxfoundation.org>
To: Nathan Chancellor <natechancellor@gmail.com>
Cc: linux-kernel@vger.kernel.org, ard.biesheuvel@linaro.org,
james.morse@arm.com, mpatocka@redhat.com,
pavel.tatashin@microsoft.com, will.deacon@arm.com,
stable-commits@vger.kernel.org
Subject: Re: Patch "arm64: mm: always enable CONFIG_HOLES_IN_ZONE" has been added to the 4.9-stable tree
Date: Fri, 7 Sep 2018 22:06:11 +0200 [thread overview]
Message-ID: <20180907200611.GC25756@kroah.com> (raw)
In-Reply-To: <20180907183601.GA28007@flashbox>
On Fri, Sep 07, 2018 at 11:36:01AM -0700, Nathan Chancellor wrote:
> On Fri, Sep 07, 2018 at 02:57:51PM +0200, gregkh@linuxfoundation.org wrote:
> >
> > This is a note to let you know that I've just added the patch titled
> >
> > arm64: mm: always enable CONFIG_HOLES_IN_ZONE
> >
> > to the 4.9-stable tree which can be found at:
> > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> >
> > The filename of the patch is:
> > arm64-mm-always-enable-config_holes_in_zone.patch
> > and it can be found in the queue-4.9 subdirectory.
> >
> > If you, or anyone else, feels it should not be added to the stable tree,
> > please let <stable@vger.kernel.org> know about it.
> >
> >
> > From f52bb98f5aded4c43e52f5ce19fb83f7261e9e73 Mon Sep 17 00:00:00 2001
> > From: James Morse <james.morse@arm.com>
> > Date: Thu, 30 Aug 2018 16:05:32 +0100
> > Subject: arm64: mm: always enable CONFIG_HOLES_IN_ZONE
> >
> > From: James Morse <james.morse@arm.com>
> >
> > commit f52bb98f5aded4c43e52f5ce19fb83f7261e9e73 upstream.
> >
> > Commit 6d526ee26ccd ("arm64: mm: enable CONFIG_HOLES_IN_ZONE for NUMA")
> > only enabled HOLES_IN_ZONE for NUMA systems because the NUMA code was
> > choking on the missing zone for nomap pages. This problem doesn't just
> > apply to NUMA systems.
> >
> > If the architecture doesn't set HAVE_ARCH_PFN_VALID, pfn_valid() will
> > return true if the pfn is part of a valid sparsemem section.
> >
> > When working with multiple pages, the mm code uses pfn_valid_within()
> > to test each page it uses within the sparsemem section is valid. On
> > most systems memory comes in MAX_ORDER_NR_PAGES chunks which all
> > have valid/initialised struct pages. In this case pfn_valid_within()
> > is optimised out.
> >
> > Systems where this isn't true (e.g. due to nomap) should set
> > HOLES_IN_ZONE and provide HAVE_ARCH_PFN_VALID so that mm tests each
> > page as it works with it.
> >
> > Currently non-NUMA arm64 systems can't enable HOLES_IN_ZONE, leading to
> > a VM_BUG_ON():
> >
> > | page:fffffdff802e1780 is uninitialized and poisoned
> > | raw: ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff
> > | raw: ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff
> > | page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
> > | ------------[ cut here ]------------
> > | kernel BUG at include/linux/mm.h:978!
> > | Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> > [...]
> > | CPU: 1 PID: 25236 Comm: dd Not tainted 4.18.0 #7
> > | Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
> > | pstate: 40000085 (nZcv daIf -PAN -UAO)
> > | pc : move_freepages_block+0x144/0x248
> > | lr : move_freepages_block+0x144/0x248
> > | sp : fffffe0071177680
> > [...]
> > | Process dd (pid: 25236, stack limit = 0x0000000094cc07fb)
> > | Call trace:
> > | move_freepages_block+0x144/0x248
> > | steal_suitable_fallback+0x100/0x16c
> > | get_page_from_freelist+0x440/0xb20
> > | __alloc_pages_nodemask+0xe8/0x838
> > | new_slab+0xd4/0x418
> > | ___slab_alloc.constprop.27+0x380/0x4a8
> > | __slab_alloc.isra.21.constprop.26+0x24/0x34
> > | kmem_cache_alloc+0xa8/0x180
> > | alloc_buffer_head+0x1c/0x90
> > | alloc_page_buffers+0x68/0xb0
> > | create_empty_buffers+0x20/0x1ec
> > | create_page_buffers+0xb0/0xf0
> > | __block_write_begin_int+0xc4/0x564
> > | __block_write_begin+0x10/0x18
> > | block_write_begin+0x48/0xd0
> > | blkdev_write_begin+0x28/0x30
> > | generic_perform_write+0x98/0x16c
> > | __generic_file_write_iter+0x138/0x168
> > | blkdev_write_iter+0x80/0xf0
> > | __vfs_write+0xe4/0x10c
> > | vfs_write+0xb4/0x168
> > | ksys_write+0x44/0x88
> > | sys_write+0xc/0x14
> > | el0_svc_naked+0x30/0x34
> > | Code: aa1303e0 90001a01 91296421 94008902 (d4210000)
> > | ---[ end trace 1601ba47f6e883fe ]---
> >
> > Remove the NUMA dependency.
> >
> > Link: https://www.spinics.net/lists/arm-kernel/msg671851.html
> > Cc: <stable@vger.kernel.org>
> > Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > Reported-by: Mikulas Patocka <mpatocka@redhat.com>
> > Reviewed-by: Pavel Tatashin <pavel.tatashin@microsoft.com>
> > Tested-by: Mikulas Patocka <mpatocka@redhat.com>
> > Signed-off-by: James Morse <james.morse@arm.com>
> > Signed-off-by: Will Deacon <will.deacon@arm.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >
> > ---
> > arch/arm64/Kconfig | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > --- a/arch/arm64/Kconfig
> > +++ b/arch/arm64/Kconfig
> > @@ -631,7 +631,6 @@ config HAVE_SETUP_PER_CPU_AREA
> >
> > config NEED_PER_CPU_EMBED_FIRST_CHUNK
>
> Looks like git got confused here, this isn't HOLES_IN_ZONE.
>
> Additionally, commit 6d526ee26ccd ("arm64: mm: enable
> CONFIG_HOLES_IN_ZONE for NUMA") that introduced it to this file didn't
> appear until 4.11 so this patch can be dropped from 4.9.
Argh, I thought I had checked that too...
Anyway, thanks for letting me know, I've now dropped it from the 4.9
queue.
greg k-h
prev parent reply other threads:[~2018-09-07 20:06 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1536325071252165@kroah.com>
2018-09-07 18:36 ` Patch "arm64: mm: always enable CONFIG_HOLES_IN_ZONE" has been added to the 4.9-stable tree Nathan Chancellor
2018-09-07 20:06 ` Greg KH [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180907200611.GC25756@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=ard.biesheuvel@linaro.org \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=natechancellor@gmail.com \
--cc=pavel.tatashin@microsoft.com \
--cc=stable-commits@vger.kernel.org \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.