aboutsummaryrefslogtreecommitdiff
path: root/external/mambo/skiboot.tcl
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2016-04-06 15:32:40 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-04-17 20:53:39 -0700
commit2bb9b99bf19b5f47f8659f56e641f79e76382dba (patch)
treec4f8f6459a14be63f76b0dd12149b9d0da9052d5 /external/mambo/skiboot.tcl
parent3137d249ba10ad6fa7a52486cdacddfab7419189 (diff)
downloadskiboot-2bb9b99bf19b5f47f8659f56e641f79e76382dba.zip
skiboot-2bb9b99bf19b5f47f8659f56e641f79e76382dba.tar.gz
skiboot-2bb9b99bf19b5f47f8659f56e641f79e76382dba.tar.bz2
mambo: Enable multicore configurations
This enables multicore configurations in mambo. You can change the number of cores in mambo by changing the line: mconfig cpus CPUS 1 To do this, we need to sanitise the PIR that mambo sets and fixup the ibm,ppc-interrupt-server#s properties. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'external/mambo/skiboot.tcl')
-rw-r--r--external/mambo/skiboot.tcl36
1 files changed, 23 insertions, 13 deletions
diff --git a/external/mambo/skiboot.tcl b/external/mambo/skiboot.tcl
index d3b4120..861218b 100644
--- a/external/mambo/skiboot.tcl
+++ b/external/mambo/skiboot.tcl
@@ -9,6 +9,7 @@ proc mconfig { name env_name def } {
if { ![info exists mconf($name)] } { set mconf($name) $def }
}
+mconfig cpus CPUS 1
mconfig threads THREADS 1
mconfig memory MEM_SIZE 1G
@@ -65,6 +66,7 @@ if { ! [info exists env(SIMHOST)] } {
set env(SIMHOST) "pegasus"
}
define dup $env(SIMHOST) myconf
+myconf config cpus $mconf(cpus)
myconf config processor/number_of_threads $mconf(threads)
myconf config memory_size $mconf(memory)
myconf config processor_option/ATTN_STOP true
@@ -149,11 +151,6 @@ set cpus_node [mysim of find_device "/cpus"]
mysim of addprop $cpus_node int "#address-cells" 1
mysim of addprop $cpus_node int "#size-cells" 0
-set cpu0_node [mysim of find_device "/cpus/PowerPC@0"]
-mysim of addprop $cpu0_node int "ibm,chip-id" 0
-set reg [list 0x0000001c00000028 0xffffffffffffffff]
-mysim of addprop $cpu0_node array64 "ibm,processor-segment-sizes" reg
-
set mem0_node [mysim of find_device "/memory@0"]
mysim of addprop $mem0_node int "ibm,chip-id" 0
@@ -181,6 +178,27 @@ if { [info exists env(SKIBOOT_INITRD)] } {
mysim mcm 0 memory fread $cpio_start $cpio_size $cpio_file
}
+# Init CPUs
+set pir 0
+for { set c 0 } { $c < $mconf(cpus) } { incr c } {
+ set cpu_node [mysim of find_device "/cpus/PowerPC@$pir"]
+ mysim of addprop $cpu_node int "ibm,chip-id" $c
+ mysim of addprop $cpu_node int "ibm,pir" $pir
+ set reg [list 0x0000001c00000028 0xffffffffffffffff]
+ mysim of addprop $cpu_node array64 "ibm,processor-segment-sizes" reg
+
+ set irqreg [list]
+ for { set t 0 } { $t < $mconf(threads) } { incr t } {
+ mysim mcm 0 cpu $c thread $t set spr pc $mconf(boot_pc)
+ mysim mcm 0 cpu $c thread $t set gpr 3 $mconf(epapr_dt_addr)
+ mysim mcm 0 cpu $c thread $t config_on
+ mysim mcm 0 cpu $c thread $t set spr pir $pir
+ lappend irqreg $pir
+ incr pir
+ }
+ mysim of addprop $cpu_node array "ibm,ppc-interrupt-server#s" irqreg
+}
+
# Flatten it
epapr::of2dtb mysim $mconf(epapr_dt_addr)
@@ -193,14 +211,6 @@ mysim memory fread $mconf(boot_load) $boot_size $mconf(boot_image)
set payload_size [file size $mconf(payload)]
mysim memory fread $mconf(payload_addr) $payload_size $mconf(payload)
-# Init CPUs
-
-for { set i 0 } { $i < $mconf(threads) } { incr i } {
- mysim mcm 0 cpu 0 thread $i set spr pc $mconf(boot_pc)
- mysim mcm 0 cpu 0 thread $i set gpr 3 $mconf(epapr_dt_addr)
- mysim mcm 0 cpu 0 thread $i config_on
-}
-
# Turbo mode & run
mysim mode turbo