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

Commit 2b62d64a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "arm64: smp: Add wakeup IPI support"

parents 66fe66bf 716b45b3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
#include <linux/threads.h>
#include <asm/irq.h>

#define NR_IPI	5
#define NR_IPI	6

typedef struct {
	unsigned int __softirq_pending;
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ extern void secondary_entry(void);

extern void arch_send_call_function_single_ipi(int cpu);
extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
extern void arch_send_wakeup_ipi_mask(const struct cpumask *mask);

extern int __cpu_disable(void);

+9 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ enum ipi_msg_type {
	IPI_CALL_FUNC_SINGLE,
	IPI_CPU_STOP,
	IPI_TIMER,
	IPI_WAKEUP,
};

/*
@@ -441,6 +442,11 @@ void arch_send_call_function_single_ipi(int cpu)
	smp_cross_call(cpumask_of(cpu), IPI_CALL_FUNC_SINGLE);
}

void arch_send_wakeup_ipi_mask(const struct cpumask *mask)
{
	smp_cross_call(mask, IPI_WAKEUP);
}

static const char *ipi_types[NR_IPI] = {
#define S(x,s)	[x - IPI_RESCHEDULE] = s
	S(IPI_RESCHEDULE, "Rescheduling interrupts"),
@@ -448,6 +454,7 @@ static const char *ipi_types[NR_IPI] = {
	S(IPI_CALL_FUNC_SINGLE, "Single function call interrupts"),
	S(IPI_CPU_STOP, "CPU stop interrupts"),
	S(IPI_TIMER, "Timer broadcast interrupts"),
	S(IPI_WAKEUP, "CPU wakeup interrupts"),
};

void show_ipi_list(struct seq_file *p, int prec)
@@ -540,6 +547,8 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
		irq_exit();
		break;
#endif
	case IPI_WAKEUP:
		break;

	default:
		pr_crit("CPU%u: Unknown IPI message 0x%x\n", cpu, ipinr);