From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Nathan Lynch <nathanl@linux.ibm.com>,
"Gautham R . Shenoy" <ego@linux.vnet.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Sasha Levin <sashal@kernel.org>,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH AUTOSEL 4.4 13/35] powerpc/pseries/mobility: rebuild cacheinfo hierarchy post-migration
Date: Fri, 19 Jul 2019 00:14:01 -0400 [thread overview]
Message-ID: <20190719041423.19322-13-sashal@kernel.org> (raw)
In-Reply-To: <20190719041423.19322-1-sashal@kernel.org>
From: Nathan Lynch <nathanl@linux.ibm.com>
[ Upstream commit e610a466d16a086e321f0bd421e2fc75cff28605 ]
It's common for the platform to replace the cache device nodes after a
migration. Since the cacheinfo code is never informed about this, it
never drops its references to the source system's cache nodes, causing
it to wind up in an inconsistent state resulting in warnings and oopses
as soon as CPU online/offline occurs after the migration, e.g.
cache for /cpus/l3-cache@3113(Unified) refers to cache for /cpus/l2-cache@200d(Unified)
WARNING: CPU: 15 PID: 86 at arch/powerpc/kernel/cacheinfo.c:176 release_cache+0x1bc/0x1d0
[...]
NIP release_cache+0x1bc/0x1d0
LR release_cache+0x1b8/0x1d0
Call Trace:
release_cache+0x1b8/0x1d0 (unreliable)
cacheinfo_cpu_offline+0x1c4/0x2c0
unregister_cpu_online+0x1b8/0x260
cpuhp_invoke_callback+0x114/0xf40
cpuhp_thread_fun+0x270/0x310
smpboot_thread_fn+0x2c8/0x390
kthread+0x1b8/0x1c0
ret_from_kernel_thread+0x5c/0x68
Using device tree notifiers won't work since we want to rebuild the
hierarchy only after all the removals and additions have occurred and
the device tree is in a consistent state. Call cacheinfo_teardown()
before processing device tree updates, and rebuild the hierarchy
afterward.
Fixes: 410bccf97881 ("powerpc/pseries: Partition migration in the kernel")
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/platforms/pseries/mobility.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
index fcd1a32267c4..e85767c74e81 100644
--- a/arch/powerpc/platforms/pseries/mobility.c
+++ b/arch/powerpc/platforms/pseries/mobility.c
@@ -22,6 +22,7 @@
#include <asm/machdep.h>
#include <asm/rtas.h>
#include "pseries.h"
+#include "../../kernel/cacheinfo.h"
static struct kobject *mobility_kobj;
@@ -316,11 +317,20 @@ void post_mobility_fixup(void)
*/
cpus_read_lock();
+ /*
+ * It's common for the destination firmware to replace cache
+ * nodes. Release all of the cacheinfo hierarchy's references
+ * before updating the device tree.
+ */
+ cacheinfo_teardown();
+
rc = pseries_devicetree_update(MIGRATION_SCOPE);
if (rc)
printk(KERN_ERR "Post-mobility device tree update "
"failed: %d\n", rc);
+ cacheinfo_rebuild();
+
cpus_read_unlock();
/* Possibly switch to a new RFI flush type */
--
2.20.1
next prev parent reply other threads:[~2019-07-19 4:16 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 4:13 [PATCH AUTOSEL 4.4 01/35] drm/panel: simple: Fix panel_simple_dsi_probe Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 02/35] usb: core: hub: Disable hub-initiated U1/U2 Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 03/35] tty: max310x: Fix invalid baudrate divisors calculator Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 04/35] pinctrl: rockchip: fix leaked of_node references Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 05/35] tty: serial: cpm_uart - fix init when SMC is relocated Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 06/35] drm/edid: Fix a missing-check bug in drm_load_edid_firmware() Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 07/35] memstick: Fix error cleanup path of memstick_init Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 08/35] tty/serial: digicolor: Fix digicolor-usart already registered warning Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 09/35] tty: serial: msm_serial: avoid system lockup condition Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 10/35] drm/virtio: Add memory barriers for capset cache Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 11/35] phy: renesas: rcar-gen2: Fix memory leak at error paths Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 12/35] powerpc/pseries/mobility: prevent cpu hotplug during DT update Sasha Levin
2019-07-19 4:14 ` Sasha Levin [this message]
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 14/35] usb: gadget: Zero ffs_io_data Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 15/35] powerpc/pci/of: Fix OF flags parsing for 64bit BARs Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 16/35] PCI: sysfs: Ignore lockdep for remove attribute Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 17/35] iio: st_accel: fix iio_triggered_buffer_{pre,post}enable positions Sasha Levin
2019-07-21 17:23 ` Jonathan Cameron
2019-07-22 6:47 ` Ardelean, Alexandru
2019-07-28 15:43 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 18/35] iio: iio-utils: Fix possible incorrect mask calculation Sasha Levin
2019-07-21 17:27 ` Jonathan Cameron
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 19/35] recordmcount: Fix spurious mcount entries on powerpc Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 20/35] mfd: core: Set fwnode for created devices Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 21/35] mfd: arizona: Fix undefined behavior Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 22/35] um: Silence lockdep complaint about mmap_sem Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 23/35] powerpc/4xx/uic: clear pending interrupt after irq type/pol change Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 24/35] serial: sh-sci: Fix TX DMA buffer flushing and workqueue races Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 25/35] PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 26/35] kallsyms: exclude kasan local symbols on s390 Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 27/35] perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 28/35] f2fs: avoid out-of-range memory access Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 29/35] mailbox: handle failed named mailbox channel request Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 30/35] powerpc/eeh: Handle hugepages in ioremap space Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 31/35] sh: prevent warnings when using iounmap Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 32/35] mm/kmemleak.c: fix check for softirq context Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 33/35] 9p: pass the correct prototype to read_cache_page Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 34/35] mm/mmu_notifier: use hlist_add_head_rcu() Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 35/35] locking/lockdep: Fix lock used or unused stats error Sasha Levin
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=20190719041423.19322-13-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=ego@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=nathanl@linux.ibm.com \
--cc=stable@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).