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

Commit 5ee77373 authored by Kenji Kaneshige's avatar Kenji Kaneshige Committed by Tony Luck
Browse files

[IA64] cpu-hotplug: Fixing confliction between CPU hot-add and IPI

parent f2454a1a
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -328,10 +328,14 @@ int
smp_call_function (void (*func) (void *info), void *info, int nonatomic, int wait)
{
	struct call_data_struct data;
	int cpus = num_online_cpus()-1;
	int cpus;

	if (!cpus)
	spin_lock(&call_lock);
	cpus = num_online_cpus() - 1;
	if (!cpus) {
		spin_unlock(&call_lock);
		return 0;
	}

	/* Can deadlock when called with interrupts disabled */
	WARN_ON(irqs_disabled());
@@ -343,8 +347,6 @@ smp_call_function (void (*func) (void *info), void *info, int nonatomic, int wai
	if (wait)
		atomic_set(&data.finished, 0);

	spin_lock(&call_lock);

	call_data = &data;
	mb();	/* ensure store to call_data precedes setting of IPI_CALL_FUNC */
	send_IPI_allbutself(IPI_CALL_FUNC);