linux-mips
[Top] [All Lists]

[PATCH 0/8] patchset focus on MIPS SMP woes

To: linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: [PATCH 0/8] patchset focus on MIPS SMP woes
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Thu, 17 May 2012 18:10:02 +0800
Cc: ralf@linux-mips.org, david.daney@cavium.com
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=x9zoQJ6Hlnsm/BMvAgUa5xMM7Pv3IfXPJNdHbnSIAqg=; b=OdKhF2m/kj4ygBhi9nWERWhglU1x3hV8gjJphcA6EJsiSOpdbdGqlhdcW6bPzZg2XK JPBW3LOUu0261BMCoETn6j1TcroCbwOX/I4PH4X+xYpahNUUrwepx7j/JFz44CKfdM/0 v9UOT5BY7mewo0gVTmM7Nx/DDK9F1e9KW7EDq6pN3pw2uGBqC1AgiEyT/XwzmJa6AD+j cJJWsJmqVUuAkCJh3Iu7X498Q/M2RBZEE2v93e4e8mNBy02RVEDUXOFciFMWdxDANBOx oMDg+NWa/rpcdOpN4uD+5B4ihAsc7FeDwKx/K1JeVTPIIblcw4Qr2oB7PA8sRYITrhwU 6RHg==
Sender: linux-mips-bounce@linux-mips.org
From: Yong Zhang <yong.zhang@windriver.com>

Since commit 5fbd036b [sched: Cleanup cpu_active madness] and
commit 2baab4e9 [sched: Fix select_fallback_rq() vs cpu_active/cpu_online],
it's more safe to put notify_cpu_starting() and set_cpu_online() with
irq disabled, otherwise we will have a typical race condition which
above two commits try to resolve:

      CPU1                            CPU2
__cpu_up();
   mp_ops->boot_secondary();
                              start_secondary();
                                ->init_secondary();
                                  local_irq_enable();
                              <IRQ>
                              do something;
                                    wake up softirqd;
                                    try_to_wake_up();
                                      select_fallback_rq();
                                      /* select wrong cpu */
   set_cpu_online();


This patchset fix the above issue as well as set_cpu_online is
called on the caller cpu.

BTW, I'm only running it on Cavium board because of limited source,
so if anyone is interested to test it on other board, that's great :)

Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>

Yong Zhang (8):
  MIPS: Octeon: delay enable irq to ->smp_finish()
  MIPS: BMIPS: delay irq enable to ->smp_finish()
  MIPS: SMTC: delay irq enable to ->smp_finish()
  MIPS: Yosemite: delay irq enable to ->smp_finish()
  MIPS: call ->smp_finish() a little late
  MIPS: call set_cpu_online() on the uping cpu with irq disabled
  MIPS: smp: Warn on too early irq enable
  MIPS: sync-r4k: remove redundant irq operation

 arch/mips/cavium-octeon/smp.c       |    2 +-
 arch/mips/kernel/smp-bmips.c        |   14 +++++++-------
 arch/mips/kernel/smp.c              |   12 +++++++++---
 arch/mips/kernel/smtc.c             |    3 ++-
 arch/mips/kernel/sync-r4k.c         |    5 -----
 arch/mips/pmc-sierra/yosemite/smp.c |    2 +-
 6 files changed, 20 insertions(+), 18 deletions(-)


<Prev in Thread] Current Thread [Next in Thread>