diff options
author | Vijay Kumar <vijay.ac.kumar@oracle.com> | 2017-02-01 11:34:38 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-02-23 08:27:24 -0800 |
commit | 7dd4fcf5b70694dc961eb6b954673e4fc9730dbd (patch) | |
tree | 4209465c2da178199e233f2f4600a36458b57047 /arch/sparc | |
parent | cffb3e76818fee4763a2ce5f2b1eca2d7885e2cf (diff) |
sparc64: Migrate hvcons irq to panicked cpu
On panic, all other CPUs are stopped except the one which had
hit panic. To keep console alive, we need to migrate hvcons irq
to panicked CPU.
Signed-off-by: Vijay Kumar <vijay.ac.kumar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/include/asm/setup.h | 5 | ||||
-rw-r--r-- | arch/sparc/kernel/smp_64.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h index 29d64b1758ed..478bf6bb4598 100644 --- a/arch/sparc/include/asm/setup.h +++ b/arch/sparc/include/asm/setup.h @@ -59,8 +59,11 @@ extern atomic_t dcpage_flushes; extern atomic_t dcpage_flushes_xcall; extern int sysctl_tsb_ratio; -#endif +#ifdef CONFIG_SERIAL_SUNHV +void sunhv_migrate_hvcons_irq(int cpu); +#endif +#endif void sun_do_break(void); extern int stop_a_enabled; extern int scons_pwroff; diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 712bf1b7f630..90a02cb64e20 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -1452,8 +1452,12 @@ void smp_send_stop(void) int cpu; if (tlb_type == hypervisor) { + int this_cpu = smp_processor_id(); +#ifdef CONFIG_SERIAL_SUNHV + sunhv_migrate_hvcons_irq(this_cpu); +#endif for_each_online_cpu(cpu) { - if (cpu == smp_processor_id()) + if (cpu == this_cpu) continue; set_cpu_online(cpu, false); |