Extend bl-agitator to switch all cpus simultaneously

Registered by Paul Larson

We need to be able to test a scenario where all cpus switch on/off of a cluster at once. To get this to be as simultaneous as possible, we would like to have a thread for each cpu that waits until all reach a sync point, then simultaneously try to switch to the other cluster.

Blueprint information

Status:
Complete
Approver:
Alexander Sack
Priority:
Essential
Drafter:
Naresh Kamboju
Direction:
Approved
Assignee:
Naresh Kamboju
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
milestone icon 2013.04
Started by
Naresh Kamboju
Completed by
Naresh Kamboju

Related branches

Sprints

Whiteboard

[asac Sep 10, 2012]: lacks headline, acceptance and Roadmapid (Meta:). Also needs generally more background so we can take this on... paul, can you fill in a bit more content and then move drafter to naresh?
[plars Sep 10, 2012]: Modified headline and acceptance, you may want to expand the work items slightly after syncing with dmart. He was looking at adding a mechanism to expose when things went badly with the first/last man process, and if there are clues we can look for in the logs, we should certainly do that in the test to determine additional failures. Omar reported recently that he had updated bl-agitator to add the switch-at-once mode. I'll mark it as done but someone should review the change and ensure it is sufficient.
[nkambo Oct 17 2012]: The merge of http://review.android.git.linaro.org/#change,2708 is not valid since the core.git repository is obsolete.
[nkambo Oct 17 2012]: I am requesting Omar to push these (#change,2707 and #change,2708) changes to private core-tests.git which is up to date bL_tests repo.
[ nkambo Oct 29 2012]: Android test failed on lava. bug has been reported
https://bugs.launchpad.net/linaro-big-little-system/+bug/1071335
lava log can be found here:
after the boot system halted.
http://validation.linaro.org/lava-server/scheduler/job/37110/log_file
[ nkambo Oct 29 2012] : Ubuntu build did not included devmem package.
devmem needs to be included in Ubuntu build, after this only test can be executed.
[ nkambo Nov 1 2012] : Ubuntu build included with "devmem" package.
[nkambo Nov 1 2012]: Test executed on Ubuntu and found issues with cluster status compare.
[jakub-pavelek 2012-11-14] Wondering why is this popping-up on KWG upcoming work (https://launchpad.net/~linaro-kernel-wg/+upcomingwork).
[jakub-pavelek 2012-11-15] and answering the question - Because there are two work items done by omar.ramirez and he is member of linaro-kernel-wg team.
[nkambo 2012-11-26] test cases entry needs to be added to device.mk file where push failed on a.g.l.o and bug has been reported.
https://bugs.launchpad.net/linaro-android-infrastructure/+bug/1083251

[nkambo 2012-11-28] device.mk has been updated with new test script entry.
it has been merged in Android.

[nkambo 2012-12-20]
Fast model support has been broken in kernel. this is tested on TC2.
Testing on LAVA on FM will be taken care next cycle.
[nkambo Jan 31 2013]
Fastmodel support has been broken in big.LITTLE IKS for Android and ubuntu images.
Testing on Fastmodel has been postponed.

[nkambo Jan 31 2013]
Tests executed on TC2 platform with Android image.
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AroPySpr4FnEdGttYkhCUGVzZ2JOS0tGaU1QUm9wOHc#gid=9

[nkambo Jan 31 2013]
Testing on LAVA did not success, because of the below bug.
https://bugs.launchpad.net/linaro-big-little-system/+bug/1097213
LAVA job can be found here:
https://validation.linaro.org/lava-server/scheduler/job/45535/log_file#entry412

[nkambo Feb 15 2013]
Hi Sudeep,

Nicolas wrote:
"Therefore, the spc register space starts at physical address 0x7fff0000.
The A15 reset stat reg is located at 0x7fff0b60, and the A7 one at
0x7fff0b64."

I have been testing cluster shutdown status by reading above addresses, but I am not getting any status update when I hotplug big core or little cores. always the results shows cluster is up and running. but cluster LED's are showing off and on according to the test.

test script and test ouput log attached to this email.

please find paste bin script to get cluster status, please correct me if am wrong.
https://pastebin.linaro.org/1667/

[nkambo March 13 2013]
Sudeep wrote :
The registers CA15_RESET_HOLD(0xB58), CA7_RESET_HOLD(0xB5C),
CA15_RESET_STAT(0xB60) and CA7_RESET_STAT(0xB64) are not used.

Instead CFGREG6(0x18) is used for resetting the cores.
http://arminfo.emea.arm.com/help/topic/com.arm.doc.ddi0503d/CHDCADED.html
The expected values:
[1:0] A15_NCPURESET[1:0] = b00 and
[3:2] A15_NCORERESET[1:0] = b00 for A15 cluster down
[15:13] A7_NCPURESET[2:0] = b000 and
[18:16] A7_NCORERESET[2:0] = b000 for A7 cluster down
These are R/W registers, so you need to be careful.

this modifications needs to be addressed and tested in March cycle.
so we are moving this blueprint to next cycle March cycle.

[asac April 3, 2013]: moving to april, bumping to essential as this is dragging on too long...

[nkambo April 3, 2013]: following commit has fixed this issue
cluster-status.sh: updated latest cluster status values
382efc5728f58875a91c57b561a0020a6689f9f5

[nkambo April 3, 2013]:
On 3 April 2013 15:31, Sudeep KarkadaNagesha wrote:
The value of CFGREG6(0x7FFF0018) in various config is as follows:
+--------------+---------------+
| State(A15/A7)| [0x7FFF0018] |
+--------------+---------------+
| ON / ON | 0x5FFFEFFF |
+--------------+---------------+
| ON / OFF | 0x40000FFF |
+--------------+---------------+
| OFF / ON | 0x5FFFE000 |
+--------------+---------------+
| OFF / OFF | 0x40000000 |
+--------------+---------------+

In short bit[11:0] = 0 if CA15 cluster is powered down and bit[28:13] =
0 if CA7 is powered down.

[nkambo April 3, 2013]: following commit has fixed this issue
cluster-status.sh: updated latest cluster status values
382efc5728f58875a91c57b561a0020a6689f9f5

[nkambo April 24, 2013]: These values are added on to test case. Test cases are tested on bL IKS build.
This blueprint is implemented.

Meta:
Roadmap id: BIG_LITTLE_SYSTEM
Headline: Tests to cover big.LITTLE cluster init and shutdown have been added to the big.LITTLE core testsuite (only applicable for integrated switcher, not the reference switcher)
Acceptance: BL core testsuite should contain a new test that tries switching all cpus at once between a7 and a15 100 times.

deliverables: new 5 test case
1. cache-coherency-simultaneous-thread-switching
2. data-corruption-simultaneous-thread-switching
3. disk-io-stress-simultaneous-thread-switching
4. mem-stress-simultaneous-thread-switching
5. vfp-ffmpeg-simultaneous-thread-switching

(?)

Work Items

Work items:
[omar.ramirez] Modify bl-agitator to add a switch-at-once mode: DONE
[omar.ramirez] Modify bl-agitator Review: DONE
[naresh-kamboju] add a script to the core big.little tests to switch all cores at once and check that the previous cluster was shut down: DONE
Code Review: DONE
Push it in git: DONE
[dave-martin-arm] Android boot bug needs to be fixed : DONE
Add "devmem" in Ubuntu build : DONE
integration of test scripts in to Android: DONE
Fix cluster status comparison in test script: DONE
Test on LAVA FM Ubuntu : POSTPONED
Test on LAVA FM Android: POSTPONED
Test on Local TC2 platform with Android image: DONE
update test script with latest register values provideded by sudeep: DONE
Review results on LAVA: DONE
Rework on test implementation for TC2 platform: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.