genode/repos/base/run/affinity.run
Stefan Kalkowski b765cef359 replace Wandboard by i.MX6 reference board
Instead of using the Wandboard Quad, the reference hardware from NXP
i.MX6 Quad Sabrelite will be used by Fiasco.OC, sel4 and hw by default.
2019-01-30 13:35:28 +01:00

103 lines
2.4 KiB
Plaintext

#
# \brief Test to start threads on all available CPUs
# \author Norman Feske
# \author Alexander Boettcher
#
if {
![have_spec arndale] &&
![have_spec imx6q_sabrelite] &&
![have_spec panda] &&
![expr [have_spec zynq] && ![have_spec zynq_qemu] ] &&
![expr [have_spec x86_32] && [have_spec foc] ] &&
![expr [have_spec x86_64] && [have_spec foc] ] &&
![expr [have_spec x86_64] && [have_spec hw] ] &&
![have_spec nova] &&
![have_spec sel4]
} {
puts "Platform is unsupported."
exit 0
}
set build_components { core init test/affinity }
lappend_if [have_spec arndale] build_components drivers/platform
build $build_components
create_boot_directory
set config {
<config>
<parent-provides>
<service name="LOG"/>
<service name="CPU"/>
<service name="PD"/>
<service name="ROM"/>
<service name="IO_MEM"/>
</parent-provides>
<default-route>
<any-service> <parent/> </any-service>
</default-route>
<default caps="100"/>}
append_if [have_spec arndale] config {
<start name="platform_drv">
<resource name="RAM" quantum="1M"/>
<provides><service name="Regulator"/></provides>
</start> }
append config {
<start name="test-affinity">
<resource name="RAM" quantum="10M"/>
</start>
</config> }
install_config $config
set boot_modules { core ld.lib.so init test-affinity }
lappend_if [have_spec arndale] boot_modules platform_drv
build_boot_image $boot_modules
if {[have_include "power_on/qemu"]} {
set want_cpus_x 4
set want_cpus_y 1
set want_cpus_total [expr $want_cpus_x*$want_cpus_y]
set rounds "03"
append qemu_args "-nographic -smp $want_cpus_total,cores=$want_cpus_total "
} else {
set rounds "10"
if {[have_spec x86]} { set rounds "40" }
}
run_genode_until "Round $rounds:.*\n" 120
set cpus [regexp -inline {Detected [0-9x]+ CPU[s\.]} $output]
set cpus [regexp -all -inline {[0-9]+} $cpus]
set cpus [expr [lindex $cpus 0] * [lindex $cpus 1]]
if {[have_include "power_on/qemu"]} {
if {$want_cpus_total != $cpus} {
puts "CPU count is not as expected: $want_cpus_total != $cpus"
exit 1;
}
}
set good_string {}
for {set r 0} {$r <= $rounds} {incr r} {
append good_string {[init -> test-affinity] Round }
append good_string [format "%02d" $r]
append good_string ":"
for {set i 0} {$i < $cpus} {incr i} {
append good_string " A"
}
append good_string "\n"
}
grep_output {\[init -\> test-affinity\] Round}
compare_output_to $good_string