linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: monstr@monstr.eu (Michal Simek)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: zynq: wfi exit on same cpu is valid
Date: Tue, 04 Jun 2013 09:29:41 +0200	[thread overview]
Message-ID: <51AD9765.3000406@monstr.eu> (raw)
In-Reply-To: <51AC8F74.2060302@linaro.org>

On 06/03/2013 02:43 PM, Daniel Lezcano wrote:
> On 06/03/2013 11:51 AM, Michal Simek wrote:
>> Hi,
>>
>> On 06/03/2013 10:14 AM, Daniel Lezcano wrote:
>>> On 05/31/2013 12:44 PM, Sanjay Singh Rawat wrote:
>>>> The current code considers every wakeup as spurious, which is not
>>>> correct. Handle the same way as other arm platforms are doing.
>>>>
>>>> Signed-off-by: Sanjay Singh Rawat <sanjay.rawat@linaro.org>
>>> Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>>
>>>
>>>> ---
>>>>  arch/arm/mach-zynq/hotplug.c |    7 +++++++
>>>>  1 file changed, 7 insertions(+)
>>>>
>>>> diff --git a/arch/arm/mach-zynq/hotplug.c b/arch/arm/mach-zynq/hotplug.c
>>>> index c89672b..a1ab22c 100644
>>>> --- a/arch/arm/mach-zynq/hotplug.c
>>>> +++ b/arch/arm/mach-zynq/hotplug.c
>>>> @@ -67,6 +67,13 @@ static inline void zynq_platform_do_lowpower(unsigned int cpu, int *spurious)
>>>>  		dsb();
>>>>  		wfi();
>>>>  
>>>> +		if (pen_release == cpu_logical_map(cpu)) {
>>>> +			/*
>>>> +			 * OK, proper wakeup, we're done
>>>> +			 */
>>>> +			break;
>>>> +		}
>>>> +
>> what pen_release stands for?
>> I have looked at it and others platform are also using it in platsmp
>> code which is not zynq case.
>> How is it supposed to work and how this variable should be used?
> 
> This variable is used to serialize the secondary cpus boot process.
> 
> When the processors boot, all the processors except the CPU0 are in WFI.
> 
> Then it is up to CPU0 to wake up the secondary processors:
> 1. it writes the cpu id of the secondary processor in the pen_release
> variable
> 2. it sends a IPI to the secondary cpu in order to make it exiting the
> WFI mode
> 2.1 the secondary processor boots and, when finished, writes the value
> '-1' in the pen_release variable
> 3. meanwhile CPU0 waits for the pen_release to be '-1' before continuing
> to boot the other secondary processors
> 
> In the case of the routine "zynq_platform_do_lowpower", the same
> sequence occurs with 'cpu_up', that means you are at the beginning of
> the boot up sequence. So the pen_release value is the cpu id value when
> exiting from WFI (remember it sets to -1 when finished).
> 
> If the cpu exits the lopower mode but the pen_release is not the cpu id,
> that means there is something wrong because the cpu exited the WFI mode
> without being in the booting process (the cpu shouldn't receive an hw
> interrupt because they should have been migrated, but just a wake up
> IPI). This is why there's "spurious".
> 
> The pen_release contains the hardware id of the CPU, this is why
> cpu_logical_map is used.
> 
> I hope that helps

Thanks for explanation.
I have added this patch to zynq/cleanup branch.

> -- Daniel
> 
> ps : sorry for my bad English :)

No reason to apologise.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130604/be013185/attachment-0001.sig>

  reply	other threads:[~2013-06-04  7:29 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-31 10:44 [PATCH] ARM: zynq: wfi exit on same cpu is valid Sanjay Singh Rawat
2013-06-03  8:14 ` Daniel Lezcano
2013-06-03  9:51   ` Michal Simek
2013-06-03 12:43     ` Daniel Lezcano
2013-06-04  7:29       ` Michal Simek [this message]
2013-06-04 12:40         ` Daniel Lezcano
2013-06-04 13:09           ` Michal Simek
2013-06-04 13:25             ` Daniel Lezcano
2013-06-04 11:39       ` Amit Kucheria
2013-06-04 11:58         ` Daniel Lezcano
2013-06-04 14:10           ` Russell King - ARM Linux
2013-06-04 14:17             ` Russell King - ARM Linux
2013-06-05  9:34               ` Daniel Lezcano
2013-06-05 10:47               ` Michal Simek
2013-06-05 11:29                 ` Russell King - ARM Linux
2013-06-05 12:54                   ` Michal Simek
     [not found]                 ` <OFF951DD26.F13B5CB1-ON48257B81.003EE068-48257B81.003F07FB@spreadtrum.com>
2013-06-05 12:07                   ` Michal Simek

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=51AD9765.3000406@monstr.eu \
    --to=monstr@monstr.eu \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).