--------------------------------------- 
 | 
SRIO and PCIE Boot on Corenet Platforms 
 | 
--------------------------------------- 
 | 
  
 | 
For some PowerPC processors with SRIO or PCIE interface, boot location can be 
 | 
configured to SRIO or PCIE by RCW. The processor booting from SRIO or PCIE can 
 | 
do without flash for u-boot image, ucode and ENV. All the images can be fetched 
 | 
from another processor's memory space by SRIO or PCIE link connected between 
 | 
them. 
 | 
  
 | 
This document describes the processes based on an example implemented on P4080DS 
 | 
platforms and a RCW example with boot from SRIO or PCIE configuration. 
 | 
  
 | 
Environment of the SRIO or PCIE boot: 
 | 
    a) Master and slave can be SOCs in one board or SOCs in separate boards. 
 | 
    b) They are connected with SRIO or PCIE links, whether 1x, 2x or 4x, and 
 | 
       directly or through switch system. 
 | 
    c) Only Master has NorFlash for booting, and all the Master's and Slave's 
 | 
       U-Boot images, UCodes will be stored in this flash. 
 | 
    d) Slave has its own EEPROM for RCW and PBI. 
 | 
    e) Slave's RCW should configure the SerDes for SRIO or PCIE boot port, set 
 | 
       the boot location to SRIO or PCIE, and holdoff all the cores. 
 | 
  
 | 
    -----------       -----------             ----------- 
 | 
    |         |       |         |             |         | 
 | 
    |         |       |         |             |         | 
 | 
    | NorFlash|<----->| Master  |SRIO or PCIE |  Slave  |<---->[EEPROM] 
 | 
    |         |       |         |<===========>|         | 
 | 
    |         |       |         |             |         | 
 | 
    -----------       -----------             ----------- 
 | 
  
 | 
The example based on P4080DS platform: 
 | 
    Two P4080DS platforms can be used to implement the boot from SRIO or PCIE. 
 | 
    Their SRIO or PCIE ports 1 will be connected directly and will be used for 
 | 
    the boot from SRIO or PCIE. 
 | 
  
 | 
    1. Slave's RCW example for boot from SRIO port 1 and all cores in holdoff. 
 | 
        00000000: aa55 aa55 010e 0100 0c58 0000 0000 0000 
 | 
        00000010: 1818 1818 0000 8888 7440 4000 0000 2000 
 | 
        00000020: f440 0000 0100 0000 0000 0000 0000 0000 
 | 
        00000030: 0000 0000 0083 0000 0000 0000 0000 0000 
 | 
        00000040: 0000 0000 0000 0000 0813 8040 063c 778f 
 | 
  
 | 
    2. Slave's RCW example for boot from PCIE port 1 and all cores in holdoff. 
 | 
        00000000: aa55 aa55 010e 0100 0c58 0000 0000 0000 
 | 
        00000010: 1818 1818 0000 8888 1440 4000 0000 2000 
 | 
        00000020: f040 0000 0100 0000 0020 0000 0000 0000 
 | 
        00000030: 0000 0000 0083 0000 0000 0000 0000 0000 
 | 
        00000040: 0000 0000 0000 0000 0813 8040 547e ffc9 
 | 
  
 | 
    3. Sequence in Step by Step. 
 | 
        a) Update RCW for slave with boot from SRIO or PCIE port 1 configuration. 
 | 
        b) Program slave's U-Boot image, UCode, and ENV parameters into master's 
 | 
           NorFlash. 
 | 
        c) Set environment variable "bootmaster" to "SRIO1" or "PCIE1" and save 
 | 
           environment for master. 
 | 
                    setenv bootmaster SRIO1 
 | 
                or 
 | 
                    setenv bootmaster PCIE1 
 | 
                    saveenv 
 | 
        d) Restart up master and it will boot up normally from its NorFlash. 
 | 
           Then, it will finish necessary configurations for slave's boot from 
 | 
           SRIO or PCIE port 1. 
 | 
        e) Master will set inbound SRIO or PCIE windows covered slave's U-Boot 
 | 
           image stored in master's NorFlash. 
 | 
        f) Master will set an inbound SRIO or PCIE window covered slave's UCode 
 | 
           and ENV stored in master's NorFlash. 
 | 
        g) Master will set outbound SRIO or PCIE  windows in order to configure 
 | 
           slave's registers for the core's releasing. 
 | 
        h) Since all cores of slave in holdoff, slave should be powered on before 
 | 
           all the above master's steps, and wait to be released by master. In the 
 | 
           startup phase of the slave from SRIO or PCIE, it will finish some 
 | 
           necessary configurations. 
 | 
        i) Slave will set a specific TLB entry for the boot process. 
 | 
        j) Slave will set a LAW entry with the TargetID SRIO or PCIE port 1 for 
 | 
           the boot. 
 | 
        k) Slave will set a specific TLB entry in order to fetch UCode and ENV 
 | 
           from master. 
 | 
        l) Slave will set a LAW entry with the TargetID SRIO or PCIE port 1 for 
 | 
           UCode and ENV. 
 | 
  
 | 
How to use this feature: 
 | 
    To use this feature, you need to focus those points. 
 | 
  
 | 
    1. Slave's RCW with SRIO or PCIE boot configurations, and all cores in holdoff 
 | 
       configurations. 
 | 
       Please refer to the examples given above. 
 | 
  
 | 
    2. U-Boot image's compilation. 
 | 
       For master, U-Boot image should be generated normally. 
 | 
  
 | 
       For example, master U-Boot image used on P4080DS should be compiled with 
 | 
  
 | 
                make P4080DS_config. 
 | 
  
 | 
       For slave, U-Boot image should be generated specifically by 
 | 
  
 | 
                make xxxx_SRIO_PCIE_BOOT_config. 
 | 
  
 | 
       For example, slave U-Boot image used on P4080DS should be compiled with 
 | 
  
 | 
                make P4080DS_SRIO_PCIE_BOOT_config. 
 | 
  
 | 
    3. Necessary modifications based on a specific environment. 
 | 
       For a specific environment, the addresses of the slave's U-Boot image, 
 | 
       UCode, ENV stored in master's NorFlash, and any other configurations 
 | 
       can be modified in the file: 
 | 
                include/configs/corenet_ds.h. 
 | 
  
 | 
    4. Set and save the environment variable "bootmaster" with "SRIO1", "SRIO2" 
 | 
       or "PCIE1", "PCIE2", "PCIE3" for master, and then restart it in order to 
 | 
       perform the role as a master for boot from SRIO or PCIE. 
 | 
  
 | 
NOTE: When the Slave's ENV parameters are stored in Master's NorFlash, 
 | 
      it can fetch them through PCIE or SRIO interface. But the ENV 
 | 
      parameters can not be modified by "saveenv" or other commands under 
 | 
      the Slave's u-boot environment, because the Slave can not erase, 
 | 
      write Master's NorFlash by PCIE or SRIO link. 
 |