forked from luck/tmp_suning_uos_patched
444080d13d
This fixes a hang that was observed during live partition migration. Since stop_topology_update must not be called from an interrupt context, call it earlier in the migration process. The hang observed can be seen below: WARNING: at kernel/timer.c:1011 Modules linked in: ip6t_LOG xt_tcpudp xt_pkttype ipt_LOG xt_limit ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_raw xt_NOTRACK ipt_REJECT xt_state iptable_raw iptable_filter ip6table_mangle nf_conntrack_netbios_ns nf_conntrack_broadcast nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 ip_tables ip6table_filter ip6_tables x_tables ipv6 fuse loop ibmveth sg ext3 jbd mbcache raid456 async_raid6_recov async_pq raid6_pq async_xor xor async_memcpy async_tx raid10 raid1 raid0 scsi_dh_alua scsi_dh_rdac scsi_dh_hp_sw scsi_dh_emc dm_round_robin dm_multipath scsi_dh sd_mod crc_t10dif ibmvfc scsi_transport_fc scsi_tgt scsi_mod dm_snapshot dm_mod NIP: c0000000000c52d8 LR: c00000000004be28 CTR: 0000000000000000 REGS: c00000005ffd77d0 TRAP: 0700 Not tainted (3.2.0-git-00001-g07d106d) MSR: 8000000000021032 <ME,CE,IR,DR> CR: 48000084 XER: 00000001 CFAR: c00000000004be20 TASK = c00000005ec78860[0] 'swapper/3' THREAD: c00000005ec98000 CPU: 3 GPR00: 0000000000000001 c00000005ffd7a50 c000000000fbbc98 c000000000ec8340 GPR04: 00000000282a0020 0000000000000000 0000000000004000 0000000000000101 GPR08: 0000000000000012 c00000005ffd4000 0000000000000020 c000000000f3ba88 GPR12: 0000000000000000 c000000007f40900 0000000000000001 0000000000000004 GPR16: 0000000000000001 0000000000000000 0000000000000000 c000000001022310 GPR20: 0000000000000001 0000000000000000 0000000000200200 c000000001029e14 GPR24: 0000000000000000 0000000000000001 0000000000000040 c00000003f74bc80 GPR28: c00000003f74bc84 c000000000f38038 c000000000f16b58 c000000000ec8340 NIP [c0000000000c52d8] .del_timer_sync+0x28/0x60 LR [c00000000004be28] .stop_topology_update+0x20/0x38 Call Trace: [c00000005ffd7a50] [c00000005ec78860] 0xc00000005ec78860 (unreliable) [c00000005ffd7ad0] [c00000000004be28] .stop_topology_update+0x20/0x38 [c00000005ffd7b40] [c000000000028378] .__rtas_suspend_last_cpu+0x58/0x260 [c00000005ffd7bf0] [c0000000000fa230] .generic_smp_call_function_interrupt+0x160/0x358 [c00000005ffd7cf0] [c000000000036ec8] .smp_ipi_demux+0x88/0x100 [c00000005ffd7d80] [c00000000005c154] .icp_hv_ipi_action+0x5c/0x80 [c00000005ffd7e00] [c00000000012a088] .handle_irq_event_percpu+0x100/0x318 [c00000005ffd7f00] [c00000000012e774] .handle_percpu_irq+0x84/0xd0 [c00000005ffd7f90] [c000000000022ba8] .call_handle_irq+0x1c/0x2c [c00000005ec9ba20] [c00000000001157c] .do_IRQ+0x22c/0x2a8 [c00000005ec9bae0] [c0000000000054bc] hardware_interrupt_entry+0x18/0x1c Exception: 501 at .cpu_idle+0x194/0x2f8 LR = .cpu_idle+0x194/0x2f8 [c00000005ec9bdd0] [c000000000017e58] .cpu_idle+0x188/0x2f8 (unreliable) [c00000005ec9be90] [c00000000067ec18] .start_secondary+0x3e4/0x524 [c00000005ec9bf90] [c0000000000093e8] .start_secondary_prolog+0x10/0x14 Instruction dump: ebe1fff8 4e800020 fbe1fff8 7c0802a6 f8010010 7c7f1b78 f821ff81 78290464 80090014 5400019e 7c0000d0 78000fe0 <0b000000> 4800000c 7c210b78 7c421378 Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> |
||
---|---|---|
.. | ||
vdso32 | ||
vdso64 | ||
.gitignore | ||
align.c | ||
asm-offsets.c | ||
audit.c | ||
btext.c | ||
cacheinfo.c | ||
cacheinfo.h | ||
clock.c | ||
compat_audit.c | ||
cpu_setup_6xx.S | ||
cpu_setup_44x.S | ||
cpu_setup_a2.S | ||
cpu_setup_fsl_booke.S | ||
cpu_setup_pa6t.S | ||
cpu_setup_power7.S | ||
cpu_setup_ppc970.S | ||
cputable.c | ||
crash_dump.c | ||
crash.c | ||
dbell.c | ||
dma-iommu.c | ||
dma-swiotlb.c | ||
dma.c | ||
e500-pmu.c | ||
entry_32.S | ||
entry_64.S | ||
exceptions-64e.S | ||
exceptions-64s.S | ||
firmware.c | ||
fpu.S | ||
fsl_booke_entry_mapping.S | ||
ftrace.c | ||
head_8xx.S | ||
head_32.S | ||
head_40x.S | ||
head_44x.S | ||
head_64.S | ||
head_booke.h | ||
head_fsl_booke.S | ||
hw_breakpoint.c | ||
ibmebus.c | ||
idle_6xx.S | ||
idle_book3e.S | ||
idle_e500.S | ||
idle_power4.S | ||
idle_power7.S | ||
idle.c | ||
init_task.c | ||
io-workarounds.c | ||
io.c | ||
iomap.c | ||
iommu.c | ||
irq.c | ||
isa-bridge.c | ||
jump_label.c | ||
kgdb.c | ||
kprobes.c | ||
kvm_emul.S | ||
kvm.c | ||
l2cr_6xx.S | ||
legacy_serial.c | ||
lparcfg.c | ||
machine_kexec_32.c | ||
machine_kexec_64.c | ||
machine_kexec.c | ||
Makefile | ||
misc_32.S | ||
misc_64.S | ||
misc.S | ||
module_32.c | ||
module_64.c | ||
module.c | ||
mpc7450-pmu.c | ||
msi.c | ||
nvram_64.c | ||
of_platform.c | ||
paca.c | ||
pci_32.c | ||
pci_64.c | ||
pci_dn.c | ||
pci_of_scan.c | ||
pci-common.c | ||
perf_callchain.c | ||
perf_event_fsl_emb.c | ||
perf_event.c | ||
pmc.c | ||
power4-pmu.c | ||
power5-pmu.c | ||
power5+-pmu.c | ||
power6-pmu.c | ||
power7-pmu.c | ||
ppc32.h | ||
ppc970-pmu.c | ||
ppc_ksyms.c | ||
ppc_save_regs.S | ||
proc_powerpc.c | ||
process.c | ||
prom_init_check.sh | ||
prom_init.c | ||
prom_parse.c | ||
prom.c | ||
ptrace32.c | ||
ptrace.c | ||
reloc_32.S | ||
reloc_64.S | ||
rtas_flash.c | ||
rtas_pci.c | ||
rtas-proc.c | ||
rtas-rtc.c | ||
rtas.c | ||
rtasd.c | ||
setup_32.c | ||
setup_64.c | ||
setup-common.c | ||
setup.h | ||
signal_32.c | ||
signal_64.c | ||
signal.c | ||
signal.h | ||
smp-tbsync.c | ||
smp.c | ||
softemu8xx.c | ||
stacktrace.c | ||
suspend.c | ||
swsusp_32.S | ||
swsusp_64.c | ||
swsusp_asm64.S | ||
swsusp_booke.S | ||
swsusp.c | ||
sys_ppc32.c | ||
syscalls.c | ||
sysfs.c | ||
systbl_chk.c | ||
systbl_chk.sh | ||
systbl.S | ||
tau_6xx.c | ||
time.c | ||
traps.c | ||
udbg_16550.c | ||
udbg.c | ||
vdso.c | ||
vecemu.c | ||
vector.S | ||
vio.c | ||
vmlinux.lds.S |