public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch v4 0/2] enhance stop machine infrastructure for MTRR rendezvous sequence
@ 2011-06-13 17:58 Suresh Siddha
  2011-06-13 17:58 ` [patch v4 1/2] stop_machine: enable __stop_machine() to be called from the cpu online path Suresh Siddha
  2011-06-13 17:58 ` [patch v4 2/2] x86, mtrr: use __stop_machine() for doing MTRR rendezvous Suresh Siddha
  0 siblings, 2 replies; 10+ messages in thread
From: Suresh Siddha @ 2011-06-13 17:58 UTC (permalink / raw)
  To: mingo, tglx, hpa, trenn, prarit, tj, rusty
  Cc: linux-kernel, suresh.b.siddha, youquan.song

First patch enhance the stop machine infrastructure so that we
can call __stop_machine() from the cpu hotplug path, where the calling
cpu is not yet online. We do allow this for already for !CONFIG_SMP. So this
patch brings the CONFIG_SMP behavior inline with !CONFIG_SMP

Second patch uses the enhanced __stop_machine() to implement the x86 MTRR
init rendezvous sequence and thus remove the duplicate implementation
of stop machine using stop_one_cpu_nowait(). This duplicate implementation
of stop machine can potentially lead to deadlock if there is a parallel
system wide rendezvous using __stop_machine().

Both these address one of the deadlocks mentioned in the
https://bugzilla.novell.com/show_bug.cgi?id=672008

Changes from v1:
* Use stop_cpu thread enabled status to find out if the cpu is online/offline,
  instead of using cpu_online(smp_processor_id()). This avoids a false
  positive of using smp_processor_id() from preemptible section.

Changes from v2:
* Use cpu_all_mask, instead of NULL mask to include the calling cpu that is
  offline.
* Make __stop_cpus static
* Conslidate wait_for_completion/polling code into
  cpu_stop_wait_for_completion() based on Tejun's review.

Changes from v3:
* Make only __stop_machine() to be called from the cpu that is not yet online
* No changes to stop_cpus() API, that can be called only from an online cpu
* Take the stop_cpus_mutex using mutex_trylock when called from the not yet
  online cpu.
* Go back to cpu_online() checks using raw_smp_processor_id() instead
  of stop_cpu thread status to determine whether calling cpu is online/offline.
  This is safe and easier to understand.

thanks,
suresh



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-06-14 21:17 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-13 17:58 [patch v4 0/2] enhance stop machine infrastructure for MTRR rendezvous sequence Suresh Siddha
2011-06-13 17:58 ` [patch v4 1/2] stop_machine: enable __stop_machine() to be called from the cpu online path Suresh Siddha
2011-06-13 19:56   ` Ingo Molnar
2011-06-13 20:49     ` Suresh Siddha
2011-06-13 21:05       ` Suresh Siddha
2011-06-14  8:09         ` Ingo Molnar
2011-06-14  8:08       ` Ingo Molnar
2011-06-14 10:10       ` tj
2011-06-14 21:17         ` Ingo Molnar
2011-06-13 17:58 ` [patch v4 2/2] x86, mtrr: use __stop_machine() for doing MTRR rendezvous Suresh Siddha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox