linux/arch/powerpc/platforms/pseries
Nathan Lynch e610a466d1 powerpc/pseries/mobility: rebuild cacheinfo hierarchy post-migration
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: 410bccf978 ("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>
2019-06-15 16:52:37 +10:00
..
cmm.c mm: convert totalram_pages and totalhigh_pages variables to atomic 2018-12-28 12:11:47 -08:00
dlpar.c powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() 2019-06-02 19:39:35 +10:00
dtl.c powerpc/pseries: Fix how we iterate over the DTL entries 2018-10-03 15:40:02 +10:00
eeh_pseries.c powerpc/eeh: Cleanup eeh_ops.wait_state() 2018-10-13 22:21:25 +11:00
event_sources.c powerpc/pseries: Use of_irq_get helper() in request_event_sources_irqs() 2018-10-03 15:40:01 +10:00
firmware.c powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
hotplug-cpu.c powerpc/pseries: Perform full re-add of CPU for topology update post-migration 2019-01-30 23:28:56 +11:00
hotplug-memory.c powerpc/pseries: Fix oops in hotplug memory notifier 2019-06-14 15:36:33 +10:00
hvCall_inst.c powerpc/pseries: hcall_exit tracepoint retval should be signed 2018-05-10 23:17:43 +10:00
hvCall.S jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
hvconsole.c powerpc/pseries/hvconsole: Fix stack overread via udbg 2019-06-14 15:35:53 +10:00
hvcserver.c
ibmebus.c pseries: ibmebus.c: convert to use BUS_ATTR_WO 2019-01-22 14:25:26 +01:00
io_event_irq.c
iommu.c powerpc/pseries/iommu: Fix set but not used values 2019-04-20 22:02:26 +10:00
Kconfig Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
kexec.c powerpc/xive: Remove xive_kexec_teardown_cpu() 2018-08-07 21:49:28 +10:00
lpar.c powerpc/mm: move warning from resize_hpt_for_hotplug() 2019-04-20 22:02:26 +10:00
lparcfg.c powerpc/pseries: export timebase register sample in lparcfg 2019-02-22 00:10:15 +11:00
Makefile powerpc/pseries: Add driver for PAPR SCM regions 2018-10-19 00:56:17 +11:00
mobility.c powerpc/pseries/mobility: rebuild cacheinfo hierarchy post-migration 2019-06-15 16:52:37 +10:00
msi.c powerpc/eeh: Cleanup list_head field names 2018-10-13 22:21:25 +11:00
nvram.c powerpc: Adopt nvram module for PPC64 2019-01-22 10:21:45 +01:00
of_helpers.c pseries/drc-info: Search DRC properties for CPU indexes 2018-01-21 16:21:46 +11:00
of_helpers.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
offline_states.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
papr_scm.c device-dax for 5.1 2019-03-16 13:05:32 -07:00
pci_dlpar.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
pci.c powerpc/pseries: Fix build break due to pnv_npu2_init() 2019-01-15 21:27:47 +11:00
pmem.c powerpc/pseries/pmem: Fix a set but not used value 2019-04-20 22:02:26 +10:00
power.c
pseries_energy.c powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes 2019-03-27 10:40:09 +11:00
pseries.h powerpc/pseries: PAPR persistent memory support 2018-10-19 00:56:17 +11:00
ras.c powerpc/pseries: hwpoison the pages upon hitting UE 2019-04-20 22:02:35 +10:00
reconfig.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
rng.c
scanlog.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
setup.c powerpc: prefer memblock APIs returning virtual address 2019-03-07 18:32:03 -08:00
smp.c Merge branch 'topic/paca' into next 2018-03-31 09:09:36 +11:00
suspend.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
vio.c powerpc/dma: use the generic direct mapping bypass 2019-02-18 22:41:04 +11:00