From 0e4b90ea55ad37fe31c7569ac76b7351f801ccd3 Mon Sep 17 00:00:00 2001 From: Khasim Syed Mohammed Date: Fri, 22 Oct 2021 12:46:20 +0530 Subject: docs/n1sdp: remove n1sdp platform documentation The n1sdp reference platform documentation has been migrated to gitlab hosted documentation. The user-guide files now provide the location of the latest documentation. Thank you Linaro for your help and hosting the documentation. Signed-off-by: Khasim Syed Mohammed Change-Id: If182b1908c23fe515eed55764d73befdac85a303 --- docs/n1sdp/multichip.rst | 117 ----------------------------------------------- 1 file changed, 117 deletions(-) delete mode 100755 docs/n1sdp/multichip.rst (limited to 'docs/n1sdp/multichip.rst') diff --git a/docs/n1sdp/multichip.rst b/docs/n1sdp/multichip.rst deleted file mode 100755 index 369fd4c..0000000 --- a/docs/n1sdp/multichip.rst +++ /dev/null @@ -1,117 +0,0 @@ -Multichip SMP boot on Neoverse N1 SDP with CCIX -=============================================== - -.. section-numbering:: - :suffix: . - -.. contents:: - - -Introduction ------------- -The Neoverse N1 System Development Platform (N1SDP) supports dual socket operation wherein -two N1SDP boards are connected over a CCIX enabled PCIe link. One board is designated as the -master board whose CCIX enabled PCIe controller is configured in root port mode and the other -board is configured as slave board whose CCIX enabled PCIe controller is configured in -endpoint mode. Linux boots in the master board and powers ON the slave board cores such that -the operating system sees CPU cores and memories from both master and slave boards in separate -NUMA nodes making a dual socket SMP configuration. - -Note: -Only cores and DDR memory from slave chip are exposed to the operating system. No I/O peripherals -from slave chip are exposed to the operating system. - -Connection Details ------------------- -For the purpose of connecting two N1SDP boards over PCIe link, a specialized PCIe riser card -(Part No: V2M-N1SDP-0343A) has to be used. The riser card package includes two PCIe form factor -riser cards, two high speed low latency PCIe cables and one USB cable (for PCIe REFCLK). -A 20-pin flat ribbon cable that comes along with N1SDP board accessories should also be used. This -is used for I2C connection between master and slave board SCP & MCP and other timer synchronization -handshake signals. -Setup has to be made following the steps given below: - - 1. Designate one N1SDP board as master board and the other N1SDP board as slave board. - 2. Ensure that both board are powered off. - 3. Plug in the riser cards, one in each board, in the CCIX slot (the last x16 PCIe slot - close to the edge of the board). - 4. Connect the high speed PCIe cables between the riser cards in respective slots - (make one to one connection and not criss-cross connection). - 5. Connect the USB cable between the riser cards. - 6. Connect the 20-pin flat ribbon cable between the boardsto the connector named as 'C2C' - which should be in the back side of the board. - 7. Connect the USB/SATA boot media to the respective slot in the master board. - -Board Files Setup ------------------ - 1. Power ON the master board and open the MCC console of master board using a terminal - application (like minicom or putty). - 2. Run USB_ON command which mounts the micro SD card content of master board in host machine. - 3. Assuming the micro SD card is mounted with the name 'MASTER' in host. Open the file - MASTER/MB/HBI0316A/board.txt file and note the APPFILE name. It should be like 'io_v123f.txt' - or similar. - 4. Now close the board.txt file and open the io_v123f.txt (the one noted in step 3) which will - be in the same folder. - 5. Set the C2C_ENABLE flag as TRUE and C2C_SIDE flag as MASTER. - 6. Set the SCC PLATFORM_CTRL register to enable multichip mode and CHIPID=0. For this, uncomment - the SOCCON with offset 0x1170 and set the value 0x00000100 - The line should now read: **SOCCON: 0x1170 0x00000100 ; SoC SCC PLATFORM_CTRL** - 7. Save and close the file. If the host is Linux run a 'sync' command in one of the terminals to - be safe. - 8. Repeat from step 1 to 4 for slave board. Let's assume host has mounted the slave board's - micro SD card with name 'SLAVE'. - 9. Set the C2C_ENABLE flag as TRUE and C2C_SIDE flag as SLAVE. - 10. Set the PLATFORM_CTRL register to enable multichip mode and CHIPID=1. For this, uncomment - the SOCCON with offset 0x1170 and set the value 0x00000101. Save and close the file. Run - sync command in case of Linux host. - The line should now read: **SOCCON: 0x1170 0x00000101 ; SoC SCC PLATFORM_CTRL** - -Booting the Setup ------------------ - 1. Copy all the firmware binaries to SOFTWARE folder in both master and slave board's micro SD - card. Run sync command in case of Linux host. Note that uefi.bin file is not required to be - copied to slave micro SD card as UEFI will be run only in the master chip. - For getting the sources and building the binaries please refer to `user-guide`_ - 2. Shutdown both the boards. - 3. Reboot the slave board first and let it boot. Then reboot the master board. This is done - because the SCP firmware running in master board expects the slave board to respond to the - I2C command when it boots. If the slave board is not responding for the I2C command then - master assumes that it is running in single chip environment and continues to boot in single - chip mode. This is explicitly done to avoid any delays in waiting for slave to respond that - will affect single chip environment where there is no slave connected at all. - 4. If master SCP finds a slave connected and responding then master SCP will perform several - handshakes with slave SCP to bring-up the CCIX link and boot the slave chip's cores. - -After Booting -------------- - 1. UEFI's Dynamic ACPI framework exposes both master and slave chip's processors and memories to - Linux. Assuming 16GB DDR memory connected each on master and slave boards, Linux will see - 8 cores (4 cores in master chip + 4 cores in slave chip) and 32GB DDR memory space. - 2. Once Linux has booted, /proc/cpuinfo and /proc/meminfo can be dumped to see the total core - and memory information that Linux currently sees. - 3. Also the slave board resources (slave CPUs and slave DDR memory) is treated as separate NUMA - node in Linux which can be seen using the numactl --hardware command. - -Limitations ------------ - 1. Though the multichip high speed connection is made using CCIX enabled PCIe controllers which - supports GEN4 speed, only GEN3 speed has been validated for multichip operation. This affects - the cross-chip memory access latency. - 2. The timer synchronization internal logic doesn't accounted for the external sync signals pad - timings. So the PIK clock for timer synchronization module has to be reduced to 150MHz from - actual 800MHz. - 3. The REFCLK counter values on both master and slave chips has to be reset before starting the - synchronization process. - 4. Timer synchronization interrupt flag has no information on the source of interrupt. So - synchronization is retriggered everytime an interrupt was hit. - -References ----------- -- http://infocenter.arm.com/help/topic/com.arm.doc.101489_0000_01_en/arm_neoverse_n1_system_development_platform_technical_reference_manual_101489_0000_01_en.pdf -- https://www.ccixconsortium.com/ccix-library/ - ----------- - -*Copyright (c) 2020, Arm Limited. All rights reserved.* - -.. _user-guide: user-guide.rst -- cgit v1.2.3