Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7dd4fcf5 authored by Vijay Kumar's avatar Vijay Kumar Committed by David S. Miller
Browse files

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: default avatarVijay Kumar <vijay.ac.kumar@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cffb3e76
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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;
+5 −1
Original line number Diff line number Diff line
@@ -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);
+6 −0
Original line number Diff line number Diff line
@@ -398,6 +398,12 @@ static struct uart_driver sunhv_reg = {

static struct uart_port *sunhv_port;

void sunhv_migrate_hvcons_irq(int cpu)
{
	/* Migrate hvcons irq to param cpu */
	irq_force_affinity(sunhv_port->irq, cpumask_of(cpu));
}

/* Copy 's' into the con_write_page, decoding "\n" into
 * "\r\n" along the way.  We have to return two lengths
 * because the caller needs to know how much to advance