|
| 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. |
0 commit comments