soc/intel/common/block/power_limit: Disable RAPL via MSR completely
[coreboot2.git] / Documentation / mainboard / ocp / deltalake.md
blob05df4f2dc4f89c8fbb12b0fffd08dd24274268c5
1 # OCP Delta Lake
3 This page describes coreboot support status for the [OCP] (Open Compute Project)
4 Delta Lake server platform.
6 ## Introduction
8 OCP Delta Lake server platform is a component of multi-host server system
9 Yosemite-V3. Both [Delta Lake server design spec] and [Yosemite-V3 design
10 spec] were [OCP] accepted.
12 On the other hand, Wiwynn's Yosemite-V3 system and Delta Lake server product
13 along with its OSF implementation, which is based on FSP/coreboot/LinuxBoot
14 stack, was [OCP] accepted; For details, check:
15 - [The OCP blog]
16 - [The Wiwynn Press Release]
17 - [The Wiwynn's Yosemite-V3 product in OCP market place]
18 Wiwynn and 9Elements formed a partnership to offer the Wiwynn's Yosemite-V3
19 product and OSF for it.
21 Delta Lake server is a single socket Cooper Lake Scalable Processor (CPX-SP) server.
22 Intel Cooper Lake Scalable Processor was launched in Q2 2020.
24 Yosemite-V3 has multiple configurations. Depending on configurations, it may
25 host up to 4 Delta Lake servers (blades) in one sled.
27 The Yosemite-V3 system is in mass production. Meta, Intel and partners
28 jointly develop Open System Firmware (OSF) solution on Delta Lake as an alternative
29 solution. The OSF solution reached production quality for some use cases
30 in July, 2021.
32 ## How to build
34 OSF code base is publicly available at
35 <https://github.com/opencomputeproject/OpenSystemFirmware>
37 Run following commands to build Delta Lake OSF image from scratch:
38     git clone https://github.com/opencomputeproject/OpenSystemFirmware.git
39     cd OpenSystemFirmware/Wiwynn/deltalake && ./download_and_build.sh
41 The Delta Lake OSF code base leverages [osf-builder] to sync down coreboot,
42 Linux kernel and u-root code from their upstream repo, and sync down needed
43 binary blobs. [osf-builder] also provides the top level build system.
45 Besides coreboot, the Delta Lake OSF solution includes following components:
46 - FSP blob: The blobs (Intel Cooper Lake Scalable Processor Firmware Support Package)
47   is downloaded from <https://github.com/intel/FSP/tree/master/CedarIslandFspBinPkg>.
48 - Microcode: downloaded from
49         <https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files>.
50 - ME ignition binary: downloaded from
51         <https://github.com/tianocore/edk2-non-osi/tree/master/Silicon/Intel/PurleySiliconBinPkg/MeFirmware>
52 - ACM binaries: only required for CBnT enablement. Available under NDA with Intel.
53 - Payload: LinuxBoot is necessary when LinuxBoot is used as the coreboot payload.
54   U-root as initramfs, is used in the joint development. It is built
55   following [All about u-root].
57 The Delta Lake OSF solution is updated periodically to newer versions of
58 upstream coreboot code base and other components.
60 ## How to verify Delta Lake OSF image
62 To do in-band FW image update, use [flashrom]:
63     flashrom -p internal:ich_spi_mode=hwseq -c "Opaque flash chip" --ifd \
64                         -i bios --noverify-all -w <path to coreboot image>
66 From OpenBMC, to update FW image:
67     fw-util slotx --update bios <path to coreboot image>
69 To power off/on the host:
70     power-util slotx off
71     power-util slotx on
73 To connect to console through SOL (Serial Over Lan):
74     sol-util slotx
76 ## How to work on coreboot for Delta Lake
77 After the OSF image for Delta Lake is built and verified, under
78 OpenSystemFirmware/Wiwynn/deltalake directory:
79     cd src/osf-builder/projects/craterlake/coreboot
81 Run "git remote -v" to confirm the origin is from coreboot upstream repo.
83 Run "git branch -v" to know the confirmed working coreboot commit ID for the
84 Delta Lake OSF solution.
86 Fetch down the tip of coreboot upstream repo, run "make" to build a new OSF
87 image for Delta Lake, verify that it works.
89 Now you are in a familiar coreboot environment, happy coding!
91 ## Firmware configurations
92 [ChromeOS VPD] is used to store most of the firmware configurations.
93 RO_VPD region holds default values, while RW_VPD region holds customized
94 values.
96 VPD variables supported are:
97 - firmware_version: This variable holds overall firmware version. coreboot
98   uses that value to populate smbios type 1 version field.
99 - bmc_bootorder_override: When it's set to 1 IPMI OEM command can override boot
100   order. The boot order override is done in the u-root LinuxBoot payload.
101 - systemboot_log_level: u-root package systemboot log levels, would be mapped to
102   quiet/verbose in systemboot as that is all we have for now. 5 to 8 would be
103   mapped to verbose, 0 to 4 and 9 would be mapped to quiet.
104 - VPDs affecting coreboot are listed/documented in [src/mainboard/ocp/deltalake/vpd.h].
106 ## Features
107 The solution is developed using LinuxBoot payload with Linux kernel 5.2.9,
108 and [u-root] as initramfs.
109 - SMBIOS:
110     - Type 0 -- BIOS Information
111     - Type 1 -- System Information
112     - Type 2 -- Baseboard Information
113     - Type 3 -- System Enclosure or Chassis
114     - Type 4 -- Processor Information
115     - Type 7 -- Cache Information
116     - Type 8 -- Port Connector Information
117     - Type 9 -- PCI Slot Information
118     - Type 11 -- OEM String
119     - Type 16 -- Physical Memory Array
120     - Type 17 -- Memory Device
121     - Type 19 -- Memory Array Mapped Address
122     - Type 32 -- System Boot Information
123     - Type 38 -- IPMI Device Information
124     - Type 41 -- Onboard Devices Extended Information
125     - Type 127 -- End-of-Table
126 - BMC integration:
127     - BMC readiness check
128     - IPMI commands
129     - watchdog timer
130     - POST complete pin acknowledgement
131     - Check BMC version: ipmidump -device
132 - SEL record generation
133 - Converged Bootguard and TXT (CBnT)
134     - TPM
135     - Bootguard profile 0T
136     - TXT
137     - SRTM
138     - DRTM (verified through tboot)
139                 - unsigned KM/BPM generation
140                 - KM/BPM signing
141                 - memory secret clearance upon ungraceful shutdown
142 - Early serial output
143 - port 80h direct to GPIO
144 - ACPI tables: APIC/DMAR/DSDT/EINJ/FACP/FACS/HEST/HPET/MCFG/SPMI/SRAT/SLIT/SSDT
145 - Skipping memory training upon subsequent reboots by using MRC cache
146 - BMC crash dump
147 - Error injection through ITP
148 - Versions
149     - Check FSP version: cbmem | grep LB_TAG_PLATFORM_BLOB_VERSION
150     - Check Microcode version: cat /proc/cpuinfo | grep microcode
151 - Devices:
152     - Boot drive
153     - All 5 data drives
154     - NIC card
155 - Power button
156 - localboot
157 - netboot from IPv6
158 - RAS (SMI handlers not upstreamed)
159     - EINJ/HEST
160     - error injection through ITP
161     - memory error handling
162     - PCIe error handling
163     - PCIe live error recovery (LER)
165 ## Stress/performance tests passed
166 - OS warm reboot (1000 cycles)
167 - DC reboot (1000 cycles)
168 - AC reboot (1000 cycle)
169 - Mprime test (6 hours)
170 - StressAppTest (6 hours)
171 - Ptugen (6 hours)
173 ## Performance on par with traditional firmware
174 - coremark
175 - FIO
176 - Iperf(IPv6)
177 - Linpack
178 - Intel MLC (memory latency and bandwidth)
179 - SpecCPU
180 - stream
182 ## Other tests passed
183 - Power
184 - Thermal
185 - coreboot address sanitizer (both romstage and ramstage)
186 - Intel selftest tool (all errors analyzed; applicable errors clean)
188 ## Known issues
189 - HECI access at OS run time:
190     - spsInfoLinux64 command fail to return ME version
191     - ptugen command fail to get memory power
192 - CLTT (Closed Loop Thermal Throttling, eg. thermal protection for DIMMs)
193 - ProcHot (thermal protection for processors)
195 ## Feature gaps
196 - flashrom command not able to update ME region
197 - ACPI BERT table
198 - PCIe hotplug through VPP (Virtual Pin Ports)
199 - RO_VPD region as well as other RO regions are not write protected
200 - Not able to selectively enable/disable core
202 ## Technology
204 ```{eval-rst}
205 +------------------------+---------------------------------------------+
206 | Processor (1 socket)   | Intel Cooper Lake Scalable Processor        |
207 +------------------------+---------------------------------------------+
208 | BMC                    | Aspeed AST 2500                             |
209 +------------------------+---------------------------------------------+
210 | PCH                    | Intel Lewisburg C620 Series                 |
211 +------------------------+---------------------------------------------+
214 [OCP]: https://www.opencompute.org
215 [Delta Lake server design spec]: https://www.opencompute.org/documents/delta-lake-1s-server-design-specification-1v05-pdf
216 [Yosemite-V3 design spec]: https://www.opencompute.org/documents/ocp-yosemite-v3-platform-design-specification-1v16-pdf
217 [The OCP blog]: https://www.opencompute.org/blog/open-system-firmware-for-ocp-server-deltalake-is-published
218 [The Wiwynn Press Release]: https://www.prnewswire.com/news-releases/wiwynn-successfully-implemented-open-system-firmware-on-its-ocp-yosemite-v3-server-301417374.html?tc=eml_cleartime
219 [The Wiwynn's Yosemite-V3 product in OCP market place]: https://www.opencompute.org/products/423/wiwynn-yosemite-v3-server
220 [osf-builder]: https://github.com/facebookincubator/osf-builder
221 [OCP virtual summit 2020]: https://www.opencompute.org/summit/virtual-summit/schedule
222 [flashrom]: https://flashrom.org/Flashrom
223 [All about u-root]: https://github.com/linuxboot/book/tree/master/u-root
224 [u-root]: https://u-root.org/
225 [ChromeOS VPD]: https://chromium.googlesource.com/chromiumos/platform/vpd/+/master/README.md
226 [src/mainboard/ocp/deltalake/vpd.h]: https://review.coreboot.org/plugins/gitiles/coreboot/+/HEAD/src/mainboard/ocp/deltalake/vpd.h