From: David Hildenbrand <david@redhat.com> To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, David Hildenbrand <david@redhat.com>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, Paul Mackerras <paulus@samba.org>, Michael Ellerman <mpe@ellerman.id.au>, Andrew Morton <akpm@linux-foundation.org>, Richard Fontana <rfontana@redhat.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arun KS <arunks@codeaurora.org>, Thomas Gleixner <tglx@linutronix.de>, linuxppc-dev@lists.ozlabs.org Subject: [PATCH] powerpc/pseries/cmm: fix wrong managed page count when migrating between zones Date: Wed, 4 Dec 2019 21:53:09 +0100 [thread overview] Message-ID: <20191204205309.8319-1-david@redhat.com> (raw) In case we have to migrate a ballon page to a newpage of another zone, the managed page count of both zones is wrong. Paired with memory offlining (which will adjust the managed page count), we can trigger kernel crashes and all kinds of different symptoms. Fix it by properly adjusting the managed page count when migrating. I did not try to reproduce on powerpc, however,I just resolved a long known issue when ballooning+offlining in virtio-balloon. The same should apply to powerpc/cmm since it started using the balloon compaction infrastructure (luckily just recently). Fixes: fe030c9b85e6 ("powerpc/pseries/cmm: Implement balloon compaction") Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Richard Fontana <rfontana@redhat.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Arun KS <arunks@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linuxppc-dev@lists.ozlabs.org Signed-off-by: David Hildenbrand <david@redhat.com> --- virtio-ballon fix with more details: https://lkml.kernel.org/r/20191204204807.8025-1-david@redhat.com/ --- arch/powerpc/platforms/pseries/cmm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/powerpc/platforms/pseries/cmm.c b/arch/powerpc/platforms/pseries/cmm.c index 91571841df8a..665298fe2990 100644 --- a/arch/powerpc/platforms/pseries/cmm.c +++ b/arch/powerpc/platforms/pseries/cmm.c @@ -551,6 +551,10 @@ static int cmm_migratepage(struct balloon_dev_info *b_dev_info, */ plpar_page_set_active(page); + /* fixup the managed page count (esp. of the zone) */ + adjust_managed_page_count(page, 1); + adjust_managed_page_count(newpage, -1); + /* balloon page list reference */ put_page(page); -- 2.21.0
WARNING: multiple messages have this Message-ID (diff)
From: David Hildenbrand <david@redhat.com> To: linux-kernel@vger.kernel.org Cc: David Hildenbrand <david@redhat.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Richard Fontana <rfontana@redhat.com>, linux-mm@kvack.org, Paul Mackerras <paulus@samba.org>, Arun KS <arunks@codeaurora.org>, Andrew Morton <akpm@linux-foundation.org>, linuxppc-dev@lists.ozlabs.org, Thomas Gleixner <tglx@linutronix.de> Subject: [PATCH] powerpc/pseries/cmm: fix wrong managed page count when migrating between zones Date: Wed, 4 Dec 2019 21:53:09 +0100 [thread overview] Message-ID: <20191204205309.8319-1-david@redhat.com> (raw) In case we have to migrate a ballon page to a newpage of another zone, the managed page count of both zones is wrong. Paired with memory offlining (which will adjust the managed page count), we can trigger kernel crashes and all kinds of different symptoms. Fix it by properly adjusting the managed page count when migrating. I did not try to reproduce on powerpc, however,I just resolved a long known issue when ballooning+offlining in virtio-balloon. The same should apply to powerpc/cmm since it started using the balloon compaction infrastructure (luckily just recently). Fixes: fe030c9b85e6 ("powerpc/pseries/cmm: Implement balloon compaction") Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Richard Fontana <rfontana@redhat.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Arun KS <arunks@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linuxppc-dev@lists.ozlabs.org Signed-off-by: David Hildenbrand <david@redhat.com> --- virtio-ballon fix with more details: https://lkml.kernel.org/r/20191204204807.8025-1-david@redhat.com/ --- arch/powerpc/platforms/pseries/cmm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/powerpc/platforms/pseries/cmm.c b/arch/powerpc/platforms/pseries/cmm.c index 91571841df8a..665298fe2990 100644 --- a/arch/powerpc/platforms/pseries/cmm.c +++ b/arch/powerpc/platforms/pseries/cmm.c @@ -551,6 +551,10 @@ static int cmm_migratepage(struct balloon_dev_info *b_dev_info, */ plpar_page_set_active(page); + /* fixup the managed page count (esp. of the zone) */ + adjust_managed_page_count(page, 1); + adjust_managed_page_count(newpage, -1); + /* balloon page list reference */ put_page(page); -- 2.21.0
next reply other threads:[~2019-12-04 20:54 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-04 20:53 David Hildenbrand [this message] 2019-12-04 20:53 ` [PATCH] powerpc/pseries/cmm: fix wrong managed page count when migrating between zones David Hildenbrand 2019-12-04 20:54 ` David Hildenbrand 2019-12-04 20:54 ` David Hildenbrand 2019-12-05 2:59 ` Michael Ellerman 2019-12-05 2:59 ` Michael Ellerman 2019-12-05 7:45 ` David Hildenbrand 2019-12-05 7:45 ` David Hildenbrand
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=20191204205309.8319-1-david@redhat.com \ --to=david@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=arunks@codeaurora.org \ --cc=benh@kernel.crashing.org \ --cc=gregkh@linuxfoundation.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mpe@ellerman.id.au \ --cc=paulus@samba.org \ --cc=rfontana@redhat.com \ --cc=tglx@linutronix.de \ /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: linkBe 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.