diff options
author | Prachi Gupta <pragupta@us.ibm.com> | 2018-01-22 14:55:12 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-01-24 20:49:48 -0500 |
commit | bb004ba55073aaa8bc216730b29d51925efeb099 (patch) | |
tree | ce9cfa050ef81c23e06ab9ef19c60e47b90f7d0d /src/usr/targeting/common/processMrw.pl | |
parent | 43011596290021b04ab058d116730cbac2cbe1ac (diff) | |
download | talos-hostboot-bb004ba55073aaa8bc216730b29d51925efeb099.tar.gz talos-hostboot-bb004ba55073aaa8bc216730b29d51925efeb099.zip |
processMrw: hard-code all base bar addresses as to not rely on mrw
All information required to calculate the BARs (base address,
group offset, chip offset) is already known and
constant across all P9 systems. Therefore, moving this information
from MRW to just the processMrw script. Additionally, removed leftover
P8 BAR attributes.
Change-Id: I7375bd1b892aa5942f03cfdc5cc931c300600785
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52396
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/targeting/common/processMrw.pl')
-rwxr-xr-x | src/usr/targeting/common/processMrw.pl | 86 |
1 files changed, 20 insertions, 66 deletions
diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl index b8ece529c..b2cb59e55 100755 --- a/src/usr/targeting/common/processMrw.pl +++ b/src/usr/targeting/common/processMrw.pl @@ -1057,73 +1057,27 @@ sub setupBars my $proc = $targetObj->getAttribute($target, "FABRIC_CHIP_ID"); $targetObj->{TOPOLOGY}->{$group}->{$proc}++; - my @bars=( "FSP_BASE_ADDR", - "VAS_HYPERVISOR_WINDOW_CONTEXT_ADDR", - "VAS_USER_WINDOW_CONTEXT_ADDR", - "NVIDIA_NPU_PRIVILEGED_ADDR", - "NVIDIA_NPU_USER_REG_ADDR", - "NVIDIA_PHY0_REG_ADDR", - "NVIDIA_PHY1_REG_ADDR", - "NX_RNG_ADDR"); - - # Attribute only valid in naples-based systems - if (!$targetObj->isBadAttribute($target,"NPU_MMIO_BAR_BASE_ADDR") ) { - push(@bars,"NPU_MMIO_BAR_BASE_ADDR"); - } - - #@fixme-RTC:174616-Remove deprecated support - if (!$targetObj->isBadAttribute($target,"LPC_BUS_ADDR") ) { - push(@bars,"LPC_BUS_ADDR"); - } - if (!$targetObj->isBadAttribute($target,"XSCOM_BASE_ADDRESS") ) { - push(@bars,"XSCOM_BASE_ADDRESS"); - } - if (!$targetObj->isBadAttribute($target,"PSI_BRIDGE_BASE_ADDR") ) { - push(@bars,"PSI_BRIDGE_BASE_ADDR"); - } - if (!$targetObj->isBadAttribute($target,"INTP_BASE_ADDR") ) { - push(@bars,"INTP_BASE_ADDR"); - } - if (!$targetObj->isBadAttribute($target,"PSI_HB_ESB_ADDR") ) { - push(@bars,"PSI_HB_ESB_ADDR"); - } - if (!$targetObj->isBadAttribute($target,"XIVE_CONTROLLER_BAR_ADDR") ) { - push(@bars,"XIVE_CONTROLLER_BAR_ADDR"); - } - - foreach my $bar (@bars) + #P9 has a defined memory map for all configurations, + #these are the base addresses for group0-chip0. + #Each chip in the group has its own 4TB space, + #which each group being 32TB of space. + my %bars=( "FSP_BASE_ADDR" => 0x0006030100000000, + "LPC_BUS_ADDR" => 0x0006030000000000, + "XSCOM_BASE_ADDRESS" => 0x000603FC00000000, + "PSI_BRIDGE_BASE_ADDR" => 0x0006030203000000, + "INTP_BASE_ADDR" => 0x0003FFFF80300000, + "PSI_HB_ESB_ADDR" => 0x00060302031C0000, + "XIVE_CONTROLLER_BAR_ADDR" => 0x0006030203100000); + + my $groupOffset = 0x200000000000; + my $procOffset = 0x40000000000; + + foreach my $bar (keys %bars) { - my ($num,$base,$group_offset,$proc_offset,$offset) = split(/,/, - $targetObj->getAttribute($target,$bar)); - my $i_base = Math::BigInt->new($base); - my $i_node_offset = Math::BigInt->new($group_offset); - my $i_proc_offset = Math::BigInt->new($proc_offset); - my $i_offset = Math::BigInt->new($offset); - - my $value=""; - if ($num==0) - { - my $b=sprintf("0x%016s",substr(( - $i_base+$i_node_offset*$group+ - $i_proc_offset*$proc)->as_hex(),2)); - $value=$b; - } - else - { - for (my $i=0;$i<$num;$i++) - { - #Note: Hex convert method avoids overflow on 32bit machine - my $b=sprintf("0x%016s",substr(( - $i_base+$i_node_offset*$group+ - $i_proc_offset*$proc+$i_offset*$i)->as_hex(),2)); - my $sep=","; - if ($i==$num-1) - { - $sep=""; - } - $value=$value.$b.$sep; - } - } + my $i_base = Math::BigInt->new($bars{$bar}); + my $value=sprintf("0x%016s",substr(( + $i_base+$groupOffset*$group+ + $procOffset*$proc)->as_hex(),2)); $targetObj->setAttribute($target,$bar,$value); } } |