All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marek.vasut@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 05/11] MIPS: add sleep handler for slave CPUs in multi-processor systems
Date: Fri, 25 Nov 2011 14:40:40 +0100	[thread overview]
Message-ID: <201111251440.41232.marek.vasut@gmail.com> (raw)
In-Reply-To: <CACUy__WRW3-Zc=+EFCAy=+ehZ_uA0KY9xEqvw2iT6dgSHRb9eg@mail.gmail.com>

> On Fri, Nov 25, 2011 at 9:44 AM, Marek Vasut <marek.vasut@gmail.com> wrote:
> >> This handler can be activated on multi-processor systems to boot only
> >> the master CPU. All slave CPUs are halted by executing the WAIT
> >> instruction. This is also useful to reduce the power consumption at
> >> boot time.
> >> 
> >> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
> >> ---
> >>  arch/mips/cpu/mips32/start.S |   16 ++++++++++++++++
> >>  1 files changed, 16 insertions(+), 0 deletions(-)
> >> 
> >> diff --git a/arch/mips/cpu/mips32/start.S b/arch/mips/cpu/mips32/start.S
> >> index 9c1b2f7..b6cb4be 100644
> >> --- a/arch/mips/cpu/mips32/start.S
> >> +++ b/arch/mips/cpu/mips32/start.S
> >> @@ -224,6 +224,14 @@ reset:
> >> 
> >>       setup_c0_status_reset
> >> 
> >> +     /* Set all slave CPUs in sleep mode */
> >> +#ifdef CONFIG_SYS_MPS_SLAVE_CPU_SLEEP
> >> +     mfc0    k0, CP0_EBASE
> >> +     and     k0, EBASEF_CPUNUM
> >> +     bne     k0, zero, slave_cpu_sleep
> >> +      nop
> >> +#endif
> >> +
> >>       /* Init Timer */
> >>       mtc0    zero, CP0_COUNT
> >>       mtc0    zero, CP0_COMPARE
> >> @@ -383,3 +391,11 @@ romReserved:
> >> 
> >>  romExcHandle:
> >>       b       romExcHandle
> >> +
> >> +     /* Additional handlers */
> >> +#ifdef CONFIG_SYS_MPS_SLAVE_CPU_SLEEP
> >> +slave_cpu_sleep:
> >> +     wait
> >> +     b       slave_cpu_sleep
> >> +      nop
> >> +#endif
> > 
> > Can't you stall the CPU instead of letting it run in an empty loop? If
> > not:
> > 
> > Acked-by: Marek Vasut <marek.vasut@gmail.com>
> 
> the CPU is stalled with the wait instruction. The loop is actually paranoia
> ;)
> 
> From MIPS32 24KE Processor Core Family Software User's Manual:
> 
> The WAIT instruction forces the core into low power mode. The pipeline
> is stalled and when all external requests are
> completed, the processor?s main clock is stopped. The processor will
> restart when reset (SI_Reset) is signaled, or a
> non-masked interrupt is taken (SI_NMI, SI_Int, or EJ_DINT). Note that
> the core does not use the code field in this
> instruction.

Oh yea, this kind of stuff I remember like I hacked on it yesterday :)

  reply	other threads:[~2011-11-25 13:40 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-24 13:57 [U-Boot] [PATCH 00/11] MIPS: fixes and updates Daniel Schwierzeck
2011-11-24 13:57 ` [U-Boot] [PATCH 01/11] MIPS: board.c: make checkpatch.pl clean Daniel Schwierzeck
2011-11-25  8:38   ` Marek Vasut
2011-11-30 12:39   ` [U-Boot] [PATCH v2 " Daniel Schwierzeck
2011-12-09  9:52   ` [U-Boot] [PATCH " Wolfgang Denk
2011-11-24 13:57 ` [U-Boot] [PATCH 02/11] MIPS: board.c: fix warning if CONFIG_CMD_NET is not defined Daniel Schwierzeck
2011-11-25  8:39   ` Marek Vasut
2011-11-25 12:37     ` Daniel Schwierzeck
2011-11-25 13:41       ` Marek Vasut
2011-12-09  9:50   ` Wolfgang Denk
2011-12-09 12:34     ` Daniel Schwierzeck
2011-11-24 13:57 ` [U-Boot] [PATCH 03/11] MIPS: board.c: fix init of flash data in bd_info Daniel Schwierzeck
2011-11-25  8:40   ` Marek Vasut
2011-11-24 13:57 ` [U-Boot] [PATCH 04/11] MIPS: add register definition for EBase register Daniel Schwierzeck
2011-11-25  8:43   ` Marek Vasut
2011-11-25 12:10     ` Daniel Schwierzeck
2011-11-24 13:57 ` [U-Boot] [PATCH 05/11] MIPS: add sleep handler for slave CPUs in multi-processor systems Daniel Schwierzeck
2011-11-25  8:44   ` Marek Vasut
2011-11-25 12:19     ` Daniel Schwierzeck
2011-11-25 13:40       ` Marek Vasut [this message]
2011-11-25 15:35     ` Andrew Dyer
2011-11-28 16:24   ` Shinya Kuribayashi
2011-11-29 15:54     ` Daniel Schwierzeck
2011-11-24 13:57 ` [U-Boot] [PATCH 06/11] MIPS: make cache operation mode configurable in dcache_enable() Daniel Schwierzeck
2011-11-25  8:45   ` Marek Vasut
2011-11-24 13:57 ` [U-Boot] [PATCH 07/11] MIPS: extend cache initialization for MIPS24K and MIPS34K cores Daniel Schwierzeck
2011-11-25  8:46   ` Marek Vasut
2011-11-30 12:39   ` [U-Boot] [PATCH v2 07/10] MIPS: extend cache initialization for recent MIPS CPU cores Daniel Schwierzeck
2011-11-24 13:57 ` [U-Boot] [PATCH 08/11] MIPS: add additional reserved vectors for MIPS24K and MIPS34K cores Daniel Schwierzeck
2011-11-25  8:47   ` Marek Vasut
2011-11-28 16:48   ` Shinya Kuribayashi
2011-11-29 15:44     ` Daniel Schwierzeck
2011-11-30 12:39   ` [U-Boot] [PATCH v2 08/10] MIPS: start.S: refactor reset and exception vector setup Daniel Schwierzeck
2011-11-24 13:57 ` [U-Boot] [PATCH 09/11] MIPS: add header file for generic GPIO API Daniel Schwierzeck
2011-11-25  8:48   ` Marek Vasut
2011-11-24 13:57 ` [U-Boot] [PATCH 10/11] MIPS: add init hook for CPU specific initialization Daniel Schwierzeck
2011-11-25  8:49   ` Marek Vasut
2012-03-31 20:53     ` Marek Vasut
2011-11-24 13:57 ` [U-Boot] [PATCH 11/11] MIPS: MAKEALL: fix lists for MIPSel and MIPS boards Daniel Schwierzeck
2011-11-24 17:41   ` Mike Frysinger
2011-11-25  8:49     ` Marek Vasut
2011-11-25 12:29       ` Daniel Schwierzeck
2011-11-25 15:21         ` thomas.langer at lantiq.com
2011-11-25 19:52         ` Mike Frysinger
2011-12-09  9:53   ` Wolfgang Denk
2012-03-31 20:49 ` [U-Boot] [PATCH 00/11] MIPS: fixes and updates Marek Vasut
2012-04-02 11:54   ` Daniel Schwierzeck
2012-04-02 12:01     ` Anatolij Gustschin
2012-04-02 12:20       ` Daniel Schwierzeck
2012-04-02 13:35     ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201111251440.41232.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.