Skip to content

Commit 1e0b383

Browse files
johnnylinwiwynnrjoleary
authored andcommitted
Add Wiwynn OCP Delta Lake Open System Firmware
Signed-off-by: Johnny Lin <[email protected]>
1 parent 3cb3d75 commit 1e0b383

File tree

6 files changed

+3017
-0
lines changed

6 files changed

+3017
-0
lines changed

Wiwynn/deltalake/LICENSE

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
This software and associated documentation files (the "Software") are contributed to the
2+
Open Compute Project and are subject to the license terms of the Open Compute Project
3+
(OCP) Software Contributor License Agreement listed at the following address:
4+
https://www.opencompute.org/documents/software-contributor-license-agreement.
5+
6+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
8+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
9+
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
10+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
11+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12+
13+
The Software incorporates third-party software listed below. The provisions contained in each
14+
such license apply only to the respective third-party software.
15+
16+
1. coreboot (https://github.com/coreboot/coreboot/blob/master/COPYING)
17+
2. Linux Kernel (https://github.com/torvalds/linux/blob/master/COPYING)
18+
3. u-root (https://github.com/u-root/u-root/blob/master/LICENSE)
19+
4. Intel FSP (https://github.com/intel/FSP/blob/master/FSP_License.pdf)
20+
5. Intel PCH Ignition Firmware and Flash descriptor for Delta Lake
21+
(https://github.com/tianocore/edk2-non-osi/blob/master/Platform/Intel/WhitleyOpenBoardBinPkg/Ifwi/DeltaLake/License.txt)
22+
6. Intel microcode (https://github.com/tianocore/edk2-non-osi/blob/master/Silicon/Intel/WhitleySiliconBinPkg/CpxMicrocode/IntelMicrocodeLicense.txt)
23+
7. Go (https://github.com/golang/go/blob/master/LICENSE)
24+
8. osf-builder (https://github.com/facebookincubator/osf-builder/blob/main/LICENSE)

Wiwynn/deltalake/README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# OCP Delta Lake Open System Firmware
2+
3+
The open system firmware contribution to OCP Delta Lake is hosted in this directory. OCP Delta Lake is a single socket server design based on the 3rd Gen Intel Xeon
4+
Scalable processors, which is referred to as [Delta Lake 1S Server](https://www.opencompute.org/documents/delta-lake-1s-server-design-specification-1v05-pdf). OCP Delta Lake server is a component of multi-node server system [Yosemite-V3](https://www.opencompute.org/documents/ocp-yosemite-v3-platform-design-specification-1v16-pdf).
5+
The open system firmware solution developed for Delta Lake is based on [coreboot](https://coreboot.org/)/[LinuxBoot](https://www.linuxboot.org/) stack. The support status and information of coreboot/LinuxBoot for OCP Delta Lake can be found [here](https://github.com/coreboot/coreboot/blob/master/Documentation/mainboard/ocp/deltalake.md). Please note that the support status described in the link was developed and validated against an engineering Intel FSP which is not public, but it shouldn't be a huge gap to work on the current upstream coreboot to reach the same status with the public Intel FSP. If you need professional service for this effort or other features development, please see [Maintainers and Professional Support](#Maintainers-and-Professional-Support). The files in this directory can help you download all the public source code and binary files, and build the final system firmware image that can pass [OCP OSF checklist](https://www.opencompute.org/wiki/Open_System_Firmware/Checklist). In the patch file in src directory, config-deltalake.json configures all the open source upstream repositories and commit hashes, including the toolchain that will be downloaded and built. For more detail about the fetching and building process please see [How To Build](#How-To-Build).
6+
7+
## Build Pre-requisites
8+
9+
* Linux OS
10+
* GNU Make
11+
* python
12+
13+
## How To Build
14+
15+
cd Wiwynn/deltalake && ./download_and_build.sh
16+
17+
The download_and_build.sh shell script will clone the necessary repositories and trigger the build process. The [osf-builder](https://github.com/facebookincubator/osf-builder) describes more detail about the fetching and building process for coreboot and LinuxBoot. A built firmware image following the build steps is placed under bin/osf-deltalake.rom.
18+
19+
## Documentation
20+
21+
The [document](https://github.com/coreboot/coreboot/blob/master/Documentation/mainboard/ocp/deltalake.md) provides the support status that has been developed and validated against an enginnering Intel FSP, Server Platform Services, microcode and ACM binaries that are not public but can be obainted under Intel NDA. [Features of firmware](https://github.com/coreboot/coreboot/blob/master/Documentation/mainboard/ocp/deltalake.md#working-features), [how to flash](https://github.com/coreboot/coreboot/blob/master/Documentation/mainboard/ocp/deltalake.md#flashing-coreboot) and [firmware configurations](https://github.com/coreboot/coreboot/blob/master/Documentation/mainboard/ocp/deltalake.md#firmware-configurations) are described in the document.
22+
* Validation scope: The uploaded image can pass and is compliant to OCP OSF checklist (v1.1) section 6 Test regime, please see the test results for detail. The test report is placed under Wiwynn/deltalake/Wiwynn_OSF_Cooperlake_QE_OCP_Checklist_V1.0_BIOS_v1.0.0_20210908.pdf.
23+
* Readiness: Pre-production. The OSF is good enough for pre-production entrance on the corresponding OCP platform as-is.
24+
25+
## Tool For User Modification
26+
27+
* Firmware upgrade: same as described in [how to flash](https://github.com/coreboot/coreboot/blob/master/Documentation/mainboard/ocp/deltalake.md#flashing-coreboot).
28+
* Firmware configuration: in LinuxBoot u-root shell, we use [vpdbootmanager](https://github.com/u-root/u-root/tree/master/tools/vpdbootmanager) to get, set, add and delete firmware configurable variables. Please note that the tool may be renamed to 'vpdmgr' in the future. The tool would execute [vpd](https://chromium.googlesource.com/chromiumos/platform/vpd/+/master/README.md) and [flashrom](https://flashrom.org/Flashrom) for flash write operation. For read operation it reads via Linux /sys/firmware/vpd interface provided by selecting Linux kernel CONFIG_GOOGLE_VPD.
29+
- vpdbootmanager get [variable name]
30+
- vpdbootmanager set [variable name]
31+
- vpdbootmanager delete [variable name]
32+
33+
## How To Buy OCP Delta Lake
34+
35+
In the near future Yosemite-V3 can be found in [Open Compute Project Marketplace](https://www.opencompute.org/solutions), if you are interested please contact [Wiwynn](https://www.wiwynn.com/contact-wiwynn/).
36+
37+
## Potential Gaps To Use OCP Delta Lake OSF in Production
38+
* Intel CBnT. CBnT 0T support is in coreboot, but overall solution requires Intel ACM binaries which are available under Intel agreement.
39+
* Run time management engine. The OCP OSF Delta Lake code base includes Intel PCH Ignition binary instead of Server Platform Services (SPS) binary, this means there is no run time service from management engine. Intel SPS binary is available under Intel agreement.
40+
* Hardware error handling. coreboot patches related to hardware error injection/handling are not present in the public OCP OSF Delta Lake codebase as they involve Intel IPs. Those patches can not be posted in public.
41+
* GRUB BootLoaderSpec-style configuration (BLSCFG). The current [localboot](https://github.com/u-root/u-root/tree/master/pkg/boot/localboot) u-root package does not support BLSCFG, you need to make sure your GRUB doesn't enable it. On CentOS 8, you can disable it by modifying /etc/default/grub and set GRUB_ENABLE_BLSCFG=false, and then update the grub configuration by running 'grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg'. There are other u-root packages that support BLSCFG and we are planning to switch to other better maintained package in the near future.
42+
43+
Nevertheless, the above features can be enabled. Please see [Maintainers and Professional Support](#Maintainers-and-Professional-Support).
44+
45+
## Maintainers and Professional Support
46+
47+
For more advanced server features such as Intel CBnT, RAS features for hardware error handling, feature customization and more, those may require Intel NDA information and professional support, please contact [9elements Cyber Security](https://9esec.io/contact) and work with Intel to obain the necessary NDA information.
64 MB
Binary file not shown.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
3+
scriptdir="$(realpath "$(dirname "$0")")"
4+
osf_builder_hash="4f7836a3a8d1181fdc3444bfc1ea72b56de3e625"
5+
fsp_hash="0e18518131e7ecfeeb4afeab306121ca554c5054"
6+
edk2_non_osi_hash="eba85cf5d882340b2ce0f845facc31dde0c3dbcb"
7+
8+
patches="${scriptdir}/src/*.patch"
9+
10+
apply_patches()
11+
{
12+
for p in $patches
13+
do
14+
if [ -f "$p" ]
15+
then
16+
patch -p1 < "$p"
17+
fi
18+
done
19+
}
20+
21+
download_intel_blobs()
22+
{
23+
cd bin
24+
git clone https://github.com/tianocore/edk2-non-osi.git
25+
cd edk2-non-osi
26+
git checkout $edk2_non_osi_hash
27+
cd ..
28+
git clone https://github.com/intel/FSP.git
29+
cd FSP
30+
git checkout $fsp_hash
31+
mkdir CPX-FSP-split
32+
python Tools/SplitFspBin.py split -f CedarIslandFspBinPkg/Fsp.fd -o CPX-FSP-split
33+
cd $scriptdir
34+
}
35+
36+
# Download Intel FSP and microcode binaries under bin
37+
download_intel_blobs
38+
# Download osf-builder under src
39+
cd src
40+
git clone https://github.com/facebookincubator/osf-builder.git
41+
cd osf-builder
42+
git checkout $osf_builder_hash
43+
# Apply patches that add Delta Lake files to osf-builder
44+
apply_patches
45+
cp ${scriptdir}/bin/FSP/CPX-FSP-split/Fsp_M.fd projects/deltalake/blobs/Server_M.fd
46+
cp ${scriptdir}/bin/FSP/CPX-FSP-split/Fsp_S.fd projects/deltalake/blobs/Server_S.fd
47+
cp ${scriptdir}/bin/FSP/CPX-FSP-split/Fsp_T.fd projects/deltalake/blobs/Server_T.fd
48+
cp ${scriptdir}/bin/edk2-non-osi/Silicon/Intel/WhitleySiliconBinPkg/CpxMicrocode/mBF5065B_07002302.mcb projects/deltalake/blobs/microcode.mcb
49+
cp ${scriptdir}/bin/edk2-non-osi/Platform/Intel/WhitleyOpenBoardBinPkg/Ifwi/DeltaLake/FlashDescriptor.bin projects/deltalake/blobs/flashregion_0_flashdescriptor.bin
50+
cp ${scriptdir}/bin/edk2-non-osi/Platform/Intel/WhitleyOpenBoardBinPkg/Ifwi/DeltaLake/Me.bin projects/deltalake/blobs/flashregion_2_intel_me.bin
51+
# Run osf-builder to fetch the rest of the codes and start building
52+
cd projects/deltalake
53+
make

0 commit comments

Comments
 (0)