Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-19 Thread Abhilash Kesavan
On Tue, May 20, 2014 at 9:00 AM, Nicolas Pitre  wrote:
> On Mon, 19 May 2014, Abhilash Kesavan wrote:
>
>> Hi Nicolas,
>>
>> On Thu, May 15, 2014 at 10:22 PM, Nicolas Pitre
>>  wrote:
>> > Once you implement full cluster shutdown I can provide you with another
>> > script stressing that part.
>> I am done with the cluster power on/off code and it seems to work fine
>> with bL_switcher. Can you please provide me with your stress script.
>
> Here's the script.  Credits go to Dave Martin for this one.
>
> The script assumes that cluster 0 comprises cpus 0 to 3 and cluster 1
> comprises cpus 4 to 7.  You need to edit it otherwise.
>
> - >8
> #!/bin/bash
>
> echo 0 >/sys/kernel/bL_switcher/active
> sleep 1
>
> pids=
>
> for x in \
> "cluster=cluster0; cpus='cpu0 cpu1 cpu2 cpu3'" \
> "cluster=cluster1; cpus='cpu4 cpu5 cpu6 cpu7'"
> do
> eval "$x"
> eval "\
> $cluster () {
> pids=
> `for cpu in $cpus; do cat < (sleep .00\\$RANDOM; echo \\$1 >/sys/devices/system/cpu/$cpu/online)&
> echo \\$1 >/sys/devices/system/cpu/$cpu/online&
> pids=\\$pids\ \\$!
> EOF`
> wait \$pids
> if [ \$1 = 0 ]; then
> echo \"\$n: $cluster off\"
> else
> echo \"\$n: $cluster on\"
> fi
> }"
> done
>
> n=0
> while :; do
> : $((++n))
> cluster1 1; cluster0 0
> cluster0 1; cluster1 0
> done
> - >8
Thanks Nicolas. Will test with the script and post the patch if it works.

Regards,
Abhilash
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-19 Thread Nicolas Pitre
On Mon, 19 May 2014, Abhilash Kesavan wrote:

> Hi Nicolas,
> 
> On Thu, May 15, 2014 at 10:22 PM, Nicolas Pitre
>  wrote:
> > Once you implement full cluster shutdown I can provide you with another
> > script stressing that part.
> I am done with the cluster power on/off code and it seems to work fine
> with bL_switcher. Can you please provide me with your stress script.

Here's the script.  Credits go to Dave Martin for this one.

The script assumes that cluster 0 comprises cpus 0 to 3 and cluster 1 
comprises cpus 4 to 7.  You need to edit it otherwise.

- >8
#!/bin/bash

echo 0 >/sys/kernel/bL_switcher/active
sleep 1

pids=

for x in \
"cluster=cluster0; cpus='cpu0 cpu1 cpu2 cpu3'" \
"cluster=cluster1; cpus='cpu4 cpu5 cpu6 cpu7'"
do
eval "$x"
eval "\
$cluster () {
pids=
`for cpu in $cpus; do cat /sys/devices/system/cpu/$cpu/online&
pids=\\$pids\ \\$!
EOF`
wait \$pids
if [ \$1 = 0 ]; then
echo \"\$n: $cluster off\"
else
echo \"\$n: $cluster on\"
fi
}"
done

n=0
while :; do
: $((++n))
cluster1 1; cluster0 0
cluster0 1; cluster1 0
done
- >8


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-18 Thread Abhilash Kesavan
Hi Nicolas,

On Thu, May 15, 2014 at 10:22 PM, Nicolas Pitre
 wrote:
> On Thu, 15 May 2014, Abhilash Kesavan wrote:
>
>> Hi Nicolas,
>>
>> On Wed, May 14, 2014 at 7:09 PM, Abhilash Kesavan
>>  wrote:
>> > Hi Nicolas,
>> >
>> > On Wed, May 14, 2014 at 7:03 PM, Nicolas Pitre  
>> > wrote:
>> >> On Wed, 14 May 2014, Abhilash Kesavan wrote:
>> >>
>> >>> Hi Nicolas,
>> >>>
>> >>> [...]
>> >>> >>
>> >>> >> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent 
>> >>> >> directory
>> >>> >
>> >>> > What do you get if you do:
>> >>> >
>> >>> > $ ls -d /sys/devices/system/cpu/cpu?/online
>> >>> ls: /sys/devices/system/cpu/cpu//online: No such file or directory
>> >>
>> >> Somehow, you or your shell replaced the ? character into a / character.
>> >> You could try with a * instead.
>> > With a different RFS your script runs fine without any change. Will
>> > update with results once testing is done.
>> The script has been running for a few hours on my 5420 based
>> chromebook. I can see all the cores being hotplugged in/out. A snippet
>> of the prints, that I get on running the test, follows:
>>
> [...]
>
> Good, that looks pretty good.
>
> Once you implement full cluster shutdown I can provide you with another
> script stressing that part.
I am done with the cluster power on/off code and it seems to work fine
with bL_switcher. Can you please provide me with your stress script.

Regards,
Abhilash
>
>
> Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-18 Thread Abhilash Kesavan
Hi Kukjin,

On Sat, May 17, 2014 at 5:25 AM, Kukjin Kim  wrote:
> On 05/16/14 01:52, Nicolas Pitre wrote:
>>
>> On Thu, 15 May 2014, Abhilash Kesavan wrote:
>>
>>> Hi Nicolas,
>
>
> Hi all,
>
>
>> [...]
>>
>> Good, that looks pretty good.
>>
> Thanks for you guys effort and time.
>
> Applied this whole series.
Thanks!

Abhilash
>
>
>> Once you implement full cluster shutdown I can provide you with another
>> script stressing that part.
>
>
> Sounds great.
>
> - Kukjin
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-16 Thread Kukjin Kim

On 05/16/14 01:52, Nicolas Pitre wrote:

On Thu, 15 May 2014, Abhilash Kesavan wrote:


Hi Nicolas,


Hi all,


[...]

Good, that looks pretty good.


Thanks for you guys effort and time.

Applied this whole series.


Once you implement full cluster shutdown I can provide you with another
script stressing that part.


Sounds great.

- Kukjin
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-15 Thread Nicolas Pitre
On Thu, 15 May 2014, Abhilash Kesavan wrote:

> Hi Nicolas,
> 
> On Wed, May 14, 2014 at 7:09 PM, Abhilash Kesavan
>  wrote:
> > Hi Nicolas,
> >
> > On Wed, May 14, 2014 at 7:03 PM, Nicolas Pitre  
> > wrote:
> >> On Wed, 14 May 2014, Abhilash Kesavan wrote:
> >>
> >>> Hi Nicolas,
> >>>
> >>> [...]
> >>> >>
> >>> >> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent 
> >>> >> directory
> >>> >
> >>> > What do you get if you do:
> >>> >
> >>> > $ ls -d /sys/devices/system/cpu/cpu?/online
> >>> ls: /sys/devices/system/cpu/cpu//online: No such file or directory
> >>
> >> Somehow, you or your shell replaced the ? character into a / character.
> >> You could try with a * instead.
> > With a different RFS your script runs fine without any change. Will
> > update with results once testing is done.
> The script has been running for a few hours on my 5420 based
> chromebook. I can see all the cores being hotplugged in/out. A snippet
> of the prints, that I get on running the test, follows:
> 
[...]

Good, that looks pretty good.

Once you implement full cluster shutdown I can provide you with another 
script stressing that part.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-15 Thread Abhilash Kesavan
Hi Nicolas,

On Wed, May 14, 2014 at 7:09 PM, Abhilash Kesavan
 wrote:
> Hi Nicolas,
>
> On Wed, May 14, 2014 at 7:03 PM, Nicolas Pitre  
> wrote:
>> On Wed, 14 May 2014, Abhilash Kesavan wrote:
>>
>>> Hi Nicolas,
>>>
>>> [...]
>>> >>
>>> >> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent 
>>> >> directory
>>> >
>>> > What do you get if you do:
>>> >
>>> > $ ls -d /sys/devices/system/cpu/cpu?/online
>>> ls: /sys/devices/system/cpu/cpu//online: No such file or directory
>>
>> Somehow, you or your shell replaced the ? character into a / character.
>> You could try with a * instead.
> With a different RFS your script runs fine without any change. Will
> update with results once testing is done.
The script has been running for a few hours on my 5420 based
chromebook. I can see all the cores being hotplugged in/out. A snippet
of the prints, that I get on running the test, follows:

===
[ 2408.454198] CPU4: Booted secondary processor
[ 2408.461468] CPU6: Booted secondary processor
[ 2408.466306] CPU2: Booted secondary processor
[ 2408.527229] CPU7: shutdown
[ 2408.571822] CPU3: shutdown
[ 2408.611762] CPU1: shutdown
[ 2408.647230] CPU6: shutdown
027316[ 2408.686885] CPU2: shutdown
[ 2408.691756] CPU3: Booted secondary processor
[ 2408.696468] CPU0: Booted secondary processor
2[ 2408.705123] CPU2: Booted secondary processor
[ 2408.747231] CPU4: shutdown
4[ 2408.776798] CPU3: shutdown
[ 2408.786452] CPU4: Booted secondary processor
[ 2408.796497] CPU1: Booted secondary processor
3[ 2408.852188] CPU4: shutdown
[ 2408.856478] CPU7: Booted secondary processor
[ 2408.861457] CPU5: Booted secondary processor
4[ 2408.865536] CPU4: Booted secondary processor
[ 2408.921844] CPU1: shutdown
[ 2408.926486] CPU6: Booted secondary processor
[ 2408.931539] CPU3: Booted secondary processor
1[ 2408.967235] CPU7: shutdown
7[ 2409.011792] CPU3: shutdown
[ 2409.016529] CPU1: Booted secondary processor
3[ 2409.082196] CPU6: shutdown
6[ 2409.126847] CPU0: shutdown
[ 2409.172204] CPU4: shutdown
[ 2409.176441] CPU7: Booted secondary processor
04[ 2409.226786] CPU2: shutdown
[ 2409.229347] CPU4: Booted secondary processor
2[ 2409.272214] CPU7: shutdown
[ 2409.276462] CPU0: Booted secondary processor
7[ 2409.317145] CPU5: shutdown
[ 2409.321589] CPU3: Booted secondary processor
[ 2409.326465] CPU7: Booted secondary processor
[ 2409.331456] CPU2: Booted secondary processor
5[ 2409.335634] CPU5: Booted secondary processor
[ 2409.382202] CPU4: shutdown
4[ 2409.421861] CPU1: shutdown
[ 2409.461784] CPU2: shutdown
[ 2409.466485] CPU6: Booted secondary processor
1[ 2409.471381] CPU1: Booted secondary processor
2[ 2409.522210] CPU5: shutdown
5[ 2409.582098] CPU7: shutdown
[ 2409.586421] CPU2: Booted secondary processor
7[ 2409.642135] CPU6: shutdown
6[ 2409.681787] CPU1: shutdown
1[ 2409.716719] CPU0: shutdown
[ 2409.721476] CPU7: Booted secondary processor
[ 2409.726454] CPU5: Booted secondary processor
0[ 2409.731046] CPU0: Booted secondary processor
[ 2409.736473] CPU1: Booted secondary processor
[ 2409.772226] CPU7: shutdown
7[ 2409.816833] CPU3: shutdown
[ 2409.821472] CPU4: Booted secondary processor
3[ 2409.871810] CPU0: shutdown
[ 2409.912194] CPU4: shutdown
[ 2409.957127] CPU5: shutdown
[ 2409.961456] CPU6: Booted secondary processor
[ 2409.966447] CPU3: Booted secondary processor
[ 2409.970816] CPU5: Booted secondary processor
[ 2410.011828] CPU2: shutdown
[ 2410.041787] CPU1: shutdown
[ 2410.044138] CPU2: Booted secondary processor
0452[ 2410.047629] CPU0: Booted secondary processor
[ 2410.056582] CPU4: Booted secondary processor
[ 2410.060400] CPU1: Booted secondary processor
1[ 2410.116858] CPU2: shutdown
[ 2410.121472] CPU7: Booted secondary processor
2[ 2410.176838] CPU1: shutdown
[ 2410.181614] CPU2: Booted secondary processor
1[ 2410.237224] CPU4: shutdown
4[ 2410.286853] CPU2: shutdown
[ 2410.291472] CPU4: Booted secondary processor
2[ 2410.341767] CPU3: shutdown
[ 2410.346579] CPU1: Booted secondary processor
[ 2410.351585] CPU2: Booted secondary processor
3[ 2410.387251] CPU7: shutdown
7[ 2410.426854] CPU1: shutdown
1[ 2410.477217] CPU5: shutdown
5[ 2410.526810] CPU0: shutdown
[ 2410.529108] CPU7: Booted secondary processor
[ 2410.536432] CPU1: Booted secondary processor
[ 2410.592173] CPU7: shutdown
[ 2410.637141] CPU4: shutdown
[ 2410.641459] CPU7: Booted secondary processor
07[ 2410.646392] CPU0: Booted secondary processor
4[ 2410.652206] CPU4: Booted secondary processor
[ 2410.701872] CPU1: shutdown
1[ 2410.746764] CPU0: shutdown
[ 2410.751481] CPU5: Booted secondary processor
[ 2410.756512] CPU1: Booted secondary processor
[ 2410.761505] CPU3: Booted secondary processor
[ 2410.812331] CPU7: shutdown
[ 2410.851841] CPU3: shutdown
[ 2410.854089] CPU7: Booted secondary processor
[ 2410.902210] CPU6: shutdown
[ 2410.906476] CPU3: Booted secondary processor
[ 2410.961858] CPU2: shutdown
07362[ 2411.011814] CPU3: shutdown
[ 2411.016561] CPU2: Booted secondary processor
3

Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-14 Thread Abhilash Kesavan
Hi Nicolas,

On Wed, May 14, 2014 at 7:03 PM, Nicolas Pitre  wrote:
> On Wed, 14 May 2014, Abhilash Kesavan wrote:
>
>> Hi Nicolas,
>>
>> [...]
>> >>
>> >> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent directory
>> >
>> > What do you get if you do:
>> >
>> > $ ls -d /sys/devices/system/cpu/cpu?/online
>> ls: /sys/devices/system/cpu/cpu//online: No such file or directory
>
> Somehow, you or your shell replaced the ? character into a / character.
> You could try with a * instead.
With a different RFS your script runs fine without any change. Will
update with results once testing is done.

Abhilash
>
>
> Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-14 Thread Nicolas Pitre
On Wed, 14 May 2014, Abhilash Kesavan wrote:

> Hi Nicolas,
> 
> [...]
> >>
> >> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent directory
> >
> > What do you get if you do:
> >
> > $ ls -d /sys/devices/system/cpu/cpu?/online
> ls: /sys/devices/system/cpu/cpu//online: No such file or directory

Somehow, you or your shell replaced the ? character into a / character.
You could try with a * instead.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-14 Thread Abhilash Kesavan
Hi Nicolas,

[...]
>>
>> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent directory
>
> What do you get if you do:
>
> $ ls -d /sys/devices/system/cpu/cpu?/online
ls: /sys/devices/system/cpu/cpu//online: No such file or directory
>
> ?
>
>> 2) sleep: invalid number '.0026736'
>
> A sufficiently recent coreutils package should have a sleep command that
> accepts fractional values.  Alternatively you may replace it with
> usleep:
>
> usleep $RANDOM
Looks like my cramfs needs an update, it seems to have old packages.
>
>> For 1) the cpu number is not being appended. if I give a particular
>> cpu in the script then hotplug in/out works fine.
>> For 2) a constant msleep 10 works.
>
> If you have msleep but not usleep then try:
>
> msleep $(($RANDOM / 1000))
I have msleep present.
>
>> Is it OK for me to modify the script to hotplug in/off a randomly chosed 
>> core ?
>
> No.  They must *all* be hotplugged simultaneously with some random
> timing.
OK.

Regards,
Abhilash
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-13 Thread Nicolas Pitre
On Wed, 14 May 2014, Abhilash Kesavan wrote:

> Hi Nicolas,
> 
> On Tue, May 13, 2014 at 11:25 PM, Nicolas Pitre
>  wrote:
> > On Tue, 13 May 2014, Abhilash Kesavan wrote:
> >
> >> This is v6 of the series adding MCPM backend support for SMP secondary boot
> >> and core switching on Samsung's Exynos5420. The patches are based on the 
> >> mcpm
> >> support added for Exynos5420 in the Chromium kernel repository here:
> >> https://chromium.googlesource.com/chromiumos/third_party/kernel-next/+/chromeos-3.8
> >>
> >> The patches have been prepared on Kukjin Kim's for-next branch and tested 
> >> on
> >> SMDK5420 EVT1 as well as an exynos5420 based chromebook (peach-pit) using 
> >> the
> >> "/dev/b.L_switcher" user interface. Secondary core boot-up has also been 
> >> tested
> >> on both the boards.
> >
> > OK... Now it is time for real testing.  :-)
> >
> > The /dev/b.L_switcher interface tests the switcher.  Here you really
> > want to hammer the MCPM functionalities and especially your backend code
> > as hard as possible.  I therefore recommend the following test script:
> >
> > -- >8
> > #!/bin/bash
> >
> > echo 0 >/sys/kernel/bL_switcher/active
> > sleep 1
> >
> > pids=
> > for cpu in /sys/devices/system/cpu/cpu?/online; do
> >   { cpu_nr=${cpu:27:1}
> > while true; do
> >   echo 1 > $cpu 2> /dev/null
> >   sleep .00$RANDOM
> >   val1=$(cat $cpu)
> >   echo 0 > $cpu 2> /dev/null
> >   sleep .00$RANDOM
> >   val0=$(cat $cpu)
> >   [ "$val1" = "1" -a "$val0" = "0" ] && echo -n $cpu_nr
> > done
> >   } &
> >   pids="$pids $!"
> > done
> >
> > trap "kill $pids; echo" 0 15
> > wait $pids
> > -- >8
> >
> > Leave this running for a couple hours making sure you see all CPU
> > numbers being printed.  The printing order will be random, but each CPU
> > number should continuously appear.
> I tried this script and I get two errors:
> 
> 1) can't create /sys/devices/system/cpu/cpu//online: nonexistent directory

What do you get if you do:

$ ls -d /sys/devices/system/cpu/cpu?/online

?

> 2) sleep: invalid number '.0026736'

A sufficiently recent coreutils package should have a sleep command that 
accepts fractional values.  Alternatively you may replace it with 
usleep:

usleep $RANDOM

> For 1) the cpu number is not being appended. if I give a particular
> cpu in the script then hotplug in/out works fine.
> For 2) a constant msleep 10 works.

If you have msleep but not usleep then try:

msleep $(($RANDOM / 1000))

> Is it OK for me to modify the script to hotplug in/off a randomly chosed core 
> ?

No.  They must *all* be hotplugged simultaneously with some random 
timing.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-13 Thread Abhilash Kesavan
Hi Nicolas,

On Tue, May 13, 2014 at 11:25 PM, Nicolas Pitre
 wrote:
> On Tue, 13 May 2014, Abhilash Kesavan wrote:
>
>> This is v6 of the series adding MCPM backend support for SMP secondary boot
>> and core switching on Samsung's Exynos5420. The patches are based on the mcpm
>> support added for Exynos5420 in the Chromium kernel repository here:
>> https://chromium.googlesource.com/chromiumos/third_party/kernel-next/+/chromeos-3.8
>>
>> The patches have been prepared on Kukjin Kim's for-next branch and tested on
>> SMDK5420 EVT1 as well as an exynos5420 based chromebook (peach-pit) using the
>> "/dev/b.L_switcher" user interface. Secondary core boot-up has also been 
>> tested
>> on both the boards.
>
> OK... Now it is time for real testing.  :-)
>
> The /dev/b.L_switcher interface tests the switcher.  Here you really
> want to hammer the MCPM functionalities and especially your backend code
> as hard as possible.  I therefore recommend the following test script:
>
> -- >8
> #!/bin/bash
>
> echo 0 >/sys/kernel/bL_switcher/active
> sleep 1
>
> pids=
> for cpu in /sys/devices/system/cpu/cpu?/online; do
>   { cpu_nr=${cpu:27:1}
> while true; do
>   echo 1 > $cpu 2> /dev/null
>   sleep .00$RANDOM
>   val1=$(cat $cpu)
>   echo 0 > $cpu 2> /dev/null
>   sleep .00$RANDOM
>   val0=$(cat $cpu)
>   [ "$val1" = "1" -a "$val0" = "0" ] && echo -n $cpu_nr
> done
>   } &
>   pids="$pids $!"
> done
>
> trap "kill $pids; echo" 0 15
> wait $pids
> -- >8
>
> Leave this running for a couple hours making sure you see all CPU
> numbers being printed.  The printing order will be random, but each CPU
> number should continuously appear.
I tried this script and I get two errors:

1) can't create /sys/devices/system/cpu/cpu//online: nonexistent directory
2) sleep: invalid number '.0026736'


For 1) the cpu number is not being appended. if I give a particular
cpu in the script then hotplug in/out works fine.
For 2) a constant msleep 10 works.

Is it OK for me to modify the script to hotplug in/off a randomly chosed core ?

Regards,
Abhilash
>
>
> Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-13 Thread Nicolas Pitre
On Tue, 13 May 2014, Abhilash Kesavan wrote:

> This is v6 of the series adding MCPM backend support for SMP secondary boot
> and core switching on Samsung's Exynos5420. The patches are based on the mcpm
> support added for Exynos5420 in the Chromium kernel repository here:
> https://chromium.googlesource.com/chromiumos/third_party/kernel-next/+/chromeos-3.8
> 
> The patches have been prepared on Kukjin Kim's for-next branch and tested on
> SMDK5420 EVT1 as well as an exynos5420 based chromebook (peach-pit) using the
> "/dev/b.L_switcher" user interface. Secondary core boot-up has also been 
> tested
> on both the boards.

OK... Now it is time for real testing.  :-)

The /dev/b.L_switcher interface tests the switcher.  Here you really 
want to hammer the MCPM functionalities and especially your backend code 
as hard as possible.  I therefore recommend the following test script:

-- >8
#!/bin/bash

echo 0 >/sys/kernel/bL_switcher/active
sleep 1

pids=
for cpu in /sys/devices/system/cpu/cpu?/online; do
  { cpu_nr=${cpu:27:1}
while true; do
  echo 1 > $cpu 2> /dev/null
  sleep .00$RANDOM
  val1=$(cat $cpu)
  echo 0 > $cpu 2> /dev/null
  sleep .00$RANDOM
  val0=$(cat $cpu)
  [ "$val1" = "1" -a "$val0" = "0" ] && echo -n $cpu_nr
done
  } &
  pids="$pids $!"
done

trap "kill $pids; echo" 0 15
wait $pids
-- >8

Leave this running for a couple hours making sure you see all CPU 
numbers being printed.  The printing order will be random, but each CPU 
number should continuously appear.


Nicolas
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v6 0/5] MCPM backend for Exynos5420

2014-05-13 Thread Abhilash Kesavan
This is v6 of the series adding MCPM backend support for SMP secondary boot
and core switching on Samsung's Exynos5420. The patches are based on the mcpm
support added for Exynos5420 in the Chromium kernel repository here:
https://chromium.googlesource.com/chromiumos/third_party/kernel-next/+/chromeos-3.8

The patches have been prepared on Kukjin Kim's for-next branch and tested on
SMDK5420 EVT1 as well as an exynos5420 based chromebook (peach-pit) using the
"/dev/b.L_switcher" user interface. Secondary core boot-up has also been tested
on both the boards.

Changes since v5:
Addressed the following comments from Kukjin Kim:
- The recently merged sysram dt patch has a slightly modified compatible
  string (exynos4210-sysram-ns). Made the appropriate change in the mcpm
  back-end to handle this.
- Changed the naming of generic cpu/cluster control functions.
  Correspondingly changed the usage in the mcpm back-end.
- Modified hotplug.c to use the generic cpu power down function.
- Cleaned up unused S5P_ARM_CORE1_CONFIGURATION and S5P_ARM_CORE1_STATUS
  macros.
- Added a macro for cpu boot address offset and changed debug statement
  from pr_warn to pr_debug.
- Added missing signed-off-by's to the generic cpu/cluster control
  patches.

Changes since v4:
Addressed the following comments from Nicolas Pitre:
- Fixed the location of L2 prefetching disable code.
- Fixed the location of the "TODO" comment.
- Fixed a possible race in mcpm cluster state check in
  exynos_power_up().

Changes since v3:
- Rebased on top of the latest SYSRAM DT patchset from Sachin Kamat.

Addressed the following comments from Lorenzo Pieralisi and Nicolas Pitre:
- Dropped the patch "arm: exynos: Add /dev/bL_status user interface on
  Exynos5420".
- Fixed the header ordering and removed unnecessary header inclusions.
- Made the code symmetric in exynos_cluster_power_control().
- Fixed the error path in exynos_power_up.
- Got rid of "cnt" variable used for last man checking.
- Removed stale comments.
- Replaced "soc_is" with "of_find_compatible_node" check for exynos5420.
- Added L2 prefetching disable code needed during A15 power down.

Changes since v2:
Addressed the following comments from Nicolas Pitre and Daniel Lezcano:
- Added generic common (cluster) configuration functions to pm.c
  which may be used by other subsystems.
- Removed unused "cpumask" variable in mcpm code.
- Re-worked exynos_power_down_finish() referencing the tc2_pm code.
- Removed the status checks in core and cluster power functions. We
  just set the power control bit and do not check the previous state
  anymore.
- Removed incorrect jiffies timeout usage in path where IRQs are
  disabled.

Changes since v1:
Addressed the following comments from Dave Martin and Nicolas Pitre:
- Fixed help text for EXYNOS5420_MCPM symbol.
- Removed mcpm-exynos-setup.S file and added similar code from tc2_pm.c.
- Changed the spinlock name from "bl_lock" to "exynos_mcpm_lock".
- Removed snoop enable/disable calls due to possible cpuidle issue and
  not having numbers proving a significant power savings. Dropped the
  "drivers/bus: arm-cci: Add common control interface for ACE ports"
  patch from v1 as it was no longer needed.
- Created a macro for exynos-specific v7_exit_coherency_flush which
  handles an erratum. This was done to prevent duplication of code.
- Removed "outer_flush_all" call.
- Removed redundant dsb in power_down function.
- Removed unnecessary initialization of global variables to zero.
- Split the /dev/bL_status debug interface into another patch.
- Fixed error handling in exynos_mcpm_init().
- Called mcpm_smp_set_ops directly from exynos_mcpm_init().
- Added a TODO for supporting cluster down on exynos5420.

NOTE:
- Have added Leela Krishna's generic cpu power control function series
  as part of this patchset.
- I have tested with and without the erratum 799270 workaround and both
  work fine. I have kept the erratum fix for the time being.

Abhilash Kesavan (2):
  arm: exynos: Add generic cluster power control functions
  arm: exynos: Add MCPM call-back functions

Andrew Bresticker (1):
  ARM: dts: exynos5420: add CCI node

Leela Krishna Amudala (2):
  ARM: EXYNOS: Add generic cpu power control functions for all exynos
based SoCs
  ARM: EXYNOS: use generic exynos cpu power control functions

 arch/arm/boot/dts/exynos5420.dtsi  |   27 +++
 arch/arm/mach-exynos/Kconfig   |8 +
 arch/arm/mach-exynos/Makefile  |2 +
 arch/arm/mach-exynos/common.h  |6 +
 arch/arm/mach-exynos/hotplug.c |2 +-
 arch/arm/mach-exynos/mcpm-exyno