1coreboot 4.6 release notes 2========================== 3 4We are happy to announce the April 2017 release of coreboot, version 54.6. 6 7The 4.6 release covers commit e74f5eaa to commit db508565 8 9Since the last release in October 2016, the coreboot project had 1708 10commits by 121 authors. The release tarballs and gpg signatures are 11available in the usual place at https://www.coreboot.org/downloads 12 13There is a pgp signed 4.6 tag in the git repository, and a branch will 14be created as needed. 15 16Changes: Past, ongoing, and future 17---------------------------------- 18 19### CBMEM console development and the Linux Kernel 20 21Our cbmem debug console was updated with some nice features. The cbmem 22console now persists between reboots and is able to be used on some 23platforms via late init. Also there is a new Linux kernel driver which 24removes the need for the old cbmem tool to read from the cbmem area. You 25can find the patch here https://patchwork.kernel.org/patch/9641997/ and 26it can be enabled via GOOGLE_MEMCONSOLE_COREBOOT kconfig option in your 27kernel - Note that this name may change going forward. 28 29### Critical bugs in TPM 1.2 support 30 31coreboot currently has issues with the TPM 1.2 LPC driver 32implementation. This leads to a misbehavior in SeaBIOS where the TPM 33gets temporarily deactivated. We plan to publish the bugfix release 344.6.1 when we have these issues sorted out. 35 36### Native graphics and ram init improvements 37 38The native graphics was reworked a while ago and should finally support 39Windows. Numerous bug fixes and EDID support is also now available. 40Finally, the native ram initialization for sandybridge/ivybridge 41platforms got patched and supports more RAM modules. 42 43### New and fresh payloads 44 45SeaBIOS, FiLO, and iPXE were all recently updated to the latest 46versions. Https downloads are the default for all payloads now. We 47provide the libpayload project which is used for writing own payloads 48from scratch. The library is MOSTLY licensed under BSD and recently 49received new functionality in order to prepare for the upcoming 50replacement for the old nvramcui payload. This new payload is called 51cbui and is based on the nuklear graphics library including keyboard and 52mouse support. The cbui payload is currently expected to be merged into 53the main coreboot tree before the next release. The upstream repository 54is here: https://github.com/siro20/coreboot/tree/cbui/payloads/cbui 55 56### UEFI support: A long road to go 57 58coreboot can be used with the edk2 UEFI implementation which 59is open source and available at Github. Sadly it is not currently 60integrated into the coreboot build. This has several reasons: 61 62* edk2 only supports GCC 4.8 profile. coreboot is now running on GCC 6.3.0. 63* Incompatibilities with code inside the edk2 which has not been updated. 64 65We started to make progress with the integration into our sources and 66the hope is that by the end of the summer, we finally support the edk2 67payload out-of-the- box. See the current patch state at 68http://review.coreboot.org/#/c/15057/ 69 70### Fighting blobs and proprietary HW components 71 72coreboot's ultimate goal would be to replace any closed source firmware 73stack with free software components. Unfortunately this is not always 74possible due to signed binaries such as the Intel ME firmware, the AMD 75PSP and microcode. Recently, a way was discovered to let the Intel ME 76run in a functional error state and reduce it from 1.5/5MB to 80KB. It's 77not perfect but it works from Nehalem up to Skylake based Intel systems. 78The tool is now integrated into the coreboot build system. The upstream 79repository is https://github.com/corna/me_cleaner 80 81Another ongoing improvement is the new utility blobtool. It is currently 82used for generating the flash descriptor and GbE configuration data on 83older mainboard which are known to be free software. It can easily be 84extended for different binaries with well-defined specifications. 85 86### Did you say Ada? 87 88coreboot now supports Ada, and a lot work was done integrating Ada into 89our toolchain. At the moment only the support for formal verification is 90missing and will be soon added. At that point, we can prove the absence 91of runtime errors in our Ada code. In short, everybody can start 92developing Ada code for our project. 93 94The existing Ada code which can be used from now on is another native 95graphics initialization which will replace in the long term the current 96implementation. The native graphics code supports all Intel platforms up 97to skylake. We offer support for HDMI, VGA, DVI and DP external 98interfaces as well and is ready to be integrated into our mainboard 99implementations. 100 101### Toolchain updates 102 103A new coreboot toolchain is out. The major toolchain change was going 104from GCC version 5.3.0 to 6.3.0. There were also minor version updates 105to GMP, MPFR, Binutils, GDB, IASL, and Clang. 106 107### Deprecation policy for boards 108 109Starting with this release there will be a policy for deprecating 110unmaintained boards. See the end of this announcement for details. 111 112Change Summary 113-------------- 114 115Build system (20 commits) 116* Clean up Kconfig 117* Show more useful error messages 118 119Codebase cleanup (94 commits) 120* Many fixes for files to pass checkpatch. Lots more to do here. 121* Remove commented out code 122* Updates to transition away from device_t 123* Work to get rid of included C files 124 125Documentation (6 commits) 126* Start adding technotes/Design docs 127* Add Kconfig documentation 128 129ACPI & acpigen library 130* Add GPIO macros 131* Clean up and add more functions to ACPIGEN library 132 133EC (26 commits) 134* Add roda/it8518 embedded controller 135 136TPM (41 commits) 137* Cleanup 138* Update ACPI ASL, Runtime generate ACPI table for TPM driver 139* Make SPI TPM driver CAR-safe 140* Update TPM init sequence 141 142Devices (24 commits) 143* Add a new SPI device type 144* Allow devicetree accesses in postcar stage 145* PCIEXP_ASPM: Unify code with other PCI-e tuning 146 147Lib (28 commits) 148* Add option to use Ada code in ramstage 149* bootstate: add arch specific hook at coreboot exit 150* cbfs: Add API to locate a file from specific region 151* Add library to handle SPD data in CBFS or DIMM 152* Add region file support 153* Turn CBMEM console into a ring buffer that can persist across reboots 154 155Commonlib (11 commits) 156* Add xmalloc, xzmalloc and dma routines 157* Add input and output buffer helpers 158 159Drivers (29 commits) 160* i2c: Pass in i2c_generic_config into i2c_generic_fill_ssdt 161* i2c/alps: Add support for ALPS Touchpad driver 162* i2c/generic: Add support for GPIO IRQ 163* i2c/generic: Enable support for adding PowerResource for device 164* i2c/hid: Add generic I2C HID driver 165* i2c/max98927: add i2c driver for Maxim 98927 codec 166* i2c/wacom_ts: Add support for WCOM touchscreen device driver 167* pc80/rtc: Check CMOS checksum BEFORE reading CMOS value 168* regulator: Add driver for handling GPIO-based fixed regulator 169* storage: Add SD/MMC/eMMC driver based upon depthcharge 170 171SPI interface 172* Significant cleanup and refactoring 173 174Include (17 commits) 175* cpu/intel: Add MSR to support enabling turbo frequency 176* elog: Add all EC event codes 177 178SuperIO (12 commits) 179* Updates for ITE SIOs 180* Add 2 new chips 181* Consolidate code to use common routines 182 183vboot (23 commits) 184* Add support for recovery hash space in TPM 185 186RISC-V (25 commits) 187* Add lowRISC System On Chip support 188* Cbmem patches, move to common architectural code 189 190ARM (16 commits) 191* Init new serial struct variables for samsung exynos5420 & allwinner 192 a10 193* Fix verstage to use proper assembly versions of mem*() 194 195RockChip RK3399 & platforms (46 commits) 196* Memory, I2C, USB, SD & Display fixes 197 198X86 Intel (193 commits) 199* Broadwell/Sata: Add support for setting IOBP registers for Ports 2 and 200 3. 201* cpu/intel/common: Add/Use common function to set virtualization 202* drivers/intel/fsp1_1: Fix boot failure for non-verstage case 203* drivers/intel/fsp2_0: Reset on invalid stage cache. 204* drivers/intel/gma: Add textmode using libgfxinit & use scaling to 205 simplify config 206* drivers/intel/mipi_camera: Add MIPI CSI camera SSDT generator 207* broadwell_de: Add SMM code 208* intelblocks/msr: Move intel x86 MSR definition into common location 209* intel/broadwell: Use the correct SATA port config for setting IOBP 210 register 211* intel/wifi: Create ACPI objects for wifi SAR configuration 212* lynxpoint bd82x6x: Enable PCI-to-PCI bridge 213* mrc: Add support for separate training cache in recovery mode 214* nb/i945/early_init.c: Add FSB800 and 1067 to Egress Port Virtual 215 Channel 216* nb/i945/raminit: Add fixes for 800MHz & 1067MHz FSB CPUs 217* nb/intel/gm45: Fix panel-power-sequence clock divisor 218* nb/intel/i945: Fix PEG port on 945gc & sdram_enhanced_addressing for 219 channel1 220* nb/intel/pineview: Move to early cbmem 221* nb/pineview/raminit: Skip Jedec init on resume, fix hot reset path 222* nb/intel/sandybridge/gma: Always initialize DP buffer translation 223* sb/ich7: Use common/gpio.h to set up GPIOs 224* sb/intel/bd82x6x: Add TCO_Lock in finalize step 225* sb/intel/common/gpio: Support ICH9M and prior 226* sb/intel/i82801gx: Add i2c_block_read to smbus.h 227 228sandybridge/raminit 229* Fix CAS Write Latency, disable_channel, normalize_training & odt stretch 230* Separate Sandybridge and Ivybridge 231* Reset internal state on fallback attempts 232* Find CMD rate per channel 233 234soc/intel/common 235* Add common routines for HECI, ITSS, PCR, RTC, systemagent, UART, XHCI, 236& LPSS 237* Save Memory DIMM Information in SMBIOS table 238 239Apollolake (183 commits) 240* Switch to common routines for LPSS, RTC, ITSS, UART, XHCI, & PCR 241* Enable turbo 242* Add save/restore variable MRC cache 243* Allow ApolloLake SoC to use FSP CAR Init 244* Allow USB2 eye pattern configuration in devicetree 245 246Quark & platforms (14 commits) 247* Fix I2c & Serial port config 248* Add vboot support 249 250ga-g41m-es2l, x4x northbridge & LGA775 (23 commits) 251* Memory fixes 252* Add S3 suspend/resume 253 254Skylake / Kabylake (208 commits) 255* Add devicetree settings for acoustic noise mitigation 256* Perform CPU MP Init before FSP-S Init 257* Add support for GSPI controller & add GSPI controller get_config 258support 259* Enable Systemagent IMGU 260* Add USB Port Over Current support & Expand USB OC pins support PCH-H 261* Extract DIMM Information from FSP MEM INFO HOB 262* Add support for eSPI SMI events 263* Update ACPI & various methods 264 265X86 amd (116 commits) 266* ACPI S3: Remove HIGH_MEMORY_SAVE where possible 267* AMD fam10 binaryPI: Remove invalid PCI ops on CPU domain 268* binaryPI platforms: Drop ACPI S3 support 269* sb/amd/sb700: Disable LPC ROM mapping when SPI Flash is used 270* southbridge/amd: Add LPC bridge acpi path for Family14 and SB800 271* arch/x86: remove CAR global migration when postcar stage is used 272* x86/acpi: Add VFCT table 273 274AMD: vendorcode, AGESA, binaryPI (72 commits) 275* Cleanup & consolidate duplicate code 276* Fork for new cache-as-ram init code & Fix binaryPI cache-as-ram 277* Refactor S3 support functions and Delay ACPI S3 backup until ramstage 278 loader 279 280amd/mct: 281* Fix CsMux45 configuration, maximum read latency, & DQ mask calculation 282 283Mainboards (198 commits) 284* asus/f2a85-m_le: Activate IOMMU support 285* lenovo/h8: Add USB Always On 286* google/oak: Enable dual DSI for rowan and the BOE 8-lane MIPI/DSI panel 287* google/parrot: Fix keyboard interrupts, DSDT 288* google/veyron: Work around RAM code strapping error 289* lenovo/t400: Rewrite dock from t60 290* intel/d510mo: enable ACPI resume from S3 291* intel/d945gclf: Fix resume from S3 suspend 292* lenovo/t400: Implement hybrid graphic in romstage 293* Enable libgfxinit on lenovo/t420 & x230, kontron/ktqm77, google/slippy 294* lenovo/x60,t60: Move EC CMOS parameters in checksummed space 295* mc_tcu3: Do not abort initialization of PTN3460 when HW-ID is missing 296* mc_tcu3: Swap LVDS even and odd lanes for a certain hardware 297* purism/librem13: Enable support for M.2 NVMe & Fix M.2 issues 298 299Payloads (53 commits) 300* Update FILO, SeaBIOS, & iPXE versions 301* Many libpayload fixes and updates 302 303Toolchain (19 commits) 304* Update GCC, Binutils, GMP, MPFR, GDB, IASL and LLVM 305 306Utilities: (145 commits) 307* abuild: Build saved config files and print failed builds at the end 308* autoport: Create superiotool logs and fix romstage generator 309* board-status: Update bucketize script and add README file 310* cbfstool: Add cbfs-compression-tool and enable adding precompressed 311 files 312* cbmem: Add custom aligned memcpy() implementation 313* ectool: Fix timeout on sending EC command and support OpenBSD 314* ifdtool: Fix ICH Gbe unlock 315* intelmetool: Add support for Wildcat Point LP, fix segfault on edge 316 cases 317* inteltool: Add support for CH6-10, ICH10, Wildcat Point-LP and fix ICH 318SPIBAR 319* sconfig: Add a new SPI device type 320* superiotool: Add new chips - IT8783E/F, W83627DHG, W83627EHG, F71808A 321 322Changes in chips 323---------------- 324 325Added 1 processor & northbridge: 326* amd/pi/00670F00 327 328Added 1 soc: 329* lowrisc/lowrisc 330 331Removed 1 northbridge: 332* intel/e7501 333 334Added 2 sios: 335* fintek/f71808a 336* ite/it8783ef 337 338Mainboard changes 339----------------- 340 341Added 52 mainboards and variants: 342* AMD Gardenia - AMD Stoney Ridge 343* Asus F2A85_M_PRO - AMD Family 15h Trinity 344* Asus P5GC_MX - Intel Socket LGA775 345* Gigabyte GA_945GCM_S2L & GA_945GCM_S2C variant - Intel Socket LGA775 346* Google Auron variants: Yuna, Gandof, Lulu - Intel Broadwell 347* Google Beltino variants: McCloud, Monroe, Tricky, Zako - Intel Haswell 348* Google Eve - Intel Kabylake 349* Google Fizz - Intel Kabylake 350* Google Gru variants: Bob, Scarlet - RockChip RK3399 351* Google Oak variants: Hana, Rowan - MediaTek MT8173 352* Google Poppy & Soraka variant - Intel Kabylake 353* Google Rambi variants: Banjo, Candy, Clapper, Glimmer, Gnawty, Heli, 354 Kip, Orco, Quawks, Squawks, Sumo, Swanky, & Winky - Intel Baytrail 355* Google Reef variants: Sand, Snappy, Nasher - Intel Apollolake 356* Google Slippy variants: Leon, Wolf - Intel Haswell 357* Intel KBLRVP3 & KBLRVP7 - Intel Kabylake 358* Intel LEAFHILL - Intel Apollolake 359* Intel MINNOW3 - Intel Apollolake 360* Lenovo L520: Intel Sandybridge 361* Lenovo S230U: Intel Ivybridge 362* Lenovo X1 Carbon GEN1 - Intel Sandybridge 363* lowRISC NEXYS4DDR - RiscV 364* MSI MS7721 - AMD Bulldozer 365* PC Engines APU2 - AMD Jaguar 366* RODA RV11 & RW11 variant - Intel Ivybridge 367* Sapphire Pure Platinum H61 - Intel Socket LGA1155 368* Siemens MC_APL1 - Intel Apollolake 369 370Removed 10 mainboard variants: 371* Google Auron (Still available as a base-board for variants) 372* Google Veyron Chromeboxes: Brain, Danger, Emile, Romy 373* Google Veyron Test Projects: Gus, Nicky, Pinky, Shark, Thea 374 375Utilities 376--------- 377 378Added 2 new utilities: 379* blobtool 380* me_cleaner 381 382Submodules 383---------- 384 385Updated 5 submodules 386* 3rdparty/blobs (10 commits) 387* 3rdparty/arm-trusted-firmware (172 commits) 388* 3rdparty/vboot (158 commits) 389* 3rdparty/chromeec/ (810 commits) 390* util/nvidia/cbootimage (2 commits) 391 392Tested boards 393------------- 394 395The following boards were tested recently: 396* emulation qemu-q35 4.6-1 397* asus kgpe-d16 4.6-1 398* asus kfsn4-dre 4.6-1 399* asus p5gc-mx 4.6-1 400* lenovo x60 4.5-1681 / 4.6-7 401* lenovo x230 4.5-1674 / 4.6-27 402* asrock e350m1 4.5-1662 / 4.6-7 403* lenovo t420 4.5-1640 404* lenovo x200 4.5-1598 / 4.6-33 405* sapphire pureplatinumh61 4.5-1575 406* gigabyte ga-945gcm-s2l 4.5-1568 407* lenovo t400 4.5-1564 408* lenovo t60 4.5-1559 409* gigabyte m57sli 4.5-1526 410* purism librem13 4.5-1503 411* gigabyte ga-g41m-es2l 4.5-1444 412* google slippy 4.5-1441 413* intel d510mo 4.5-1341 414 415coreboot statistics from e74f5eaa43 to db508565d2 416------------------------------------------------- 417 418* Total Commits: 1708 419* Average Commits per day: 8.75 420* Total authors: 121 421* New authors: 34 422* Total Reviewers: 72 423* Total Submitters: 19 424* Total lines added: 177576 425* Total lines removed: - 107460 426* Total difference: 70116 427 428Code removal after the 4.6 release 429---------------------------------- 430 431The only platform currently scheduled for removal is the 432bifferos/bifferboard & soc/rdc/r8610. This platform is one of two that 433still uses romcc to compile romstage and doesn't have cache-as-ram in 434romstage - the others were all removed long ago. Additionally, it seems 435to be impossible to buy, so as far as it can be determined, no testing 436has been done recently. 437 438Code removal after the 4.7 release 439---------------------------------- 440 441One of the things that the coreboot project has struggled with is how to 442maintain the older platforms while still moving the rest of the 443platforms forward. Currently there are numerous platforms in the 444codebase which have not been well maintained. 445 446Starting with the 4.7 release in October, the coreboot leadership is 447going to set standards that platforms are expected to meet to remain in 448the active codebase. These will generally be announced 3 - 6 months in 449advance to give time to get changes in. The expectation is not 450necessarily even that all work to meet the goal will be completed, but 451it is expected that a reasonable effort has started to meet the goal at 452the time of the release. Regardless of the work that's been done, 453platforms which have not met the goal by the following release will be 454removed. 455 456The next expectation that will need to be met for all platforms is cbmem 457in romstage. This currently affects numerous platforms, including most, 458if not all of AMD's platforms. Work to update many of these platforms 459has started, but there are others that have not made any progress 460towards this goal. A list of the platforms that are affected by this 461will be sent to the mailing list shortly. 462 463Code removal after the 4.8 release 464---------------------------------- 465 466To further clean things up, starting with the 4.8 release, any platform 467that does not have a successful boot logged in the board_status repo in 468the previous year (that is, within the previous two releases) will be 469removed from the maintained coreboot codebase. Chips that do not have 470any associated boards will also be removed. These platforms will be 471announced before the release so that there is time for people to test if 472desired. 473 474This is not meant to be a high bar, but as a measure to clean up the 475codebase and eliminate boards and chips that are actually no longer 476being used. The cleanup will happen just after the release, so the 477removed platforms will still be available in the release branch if 478desired. If there is still interest, developers can bring back old chips 479and boards by porting them to the new tree (and bringing them to current 480standards). 481 482This gives everyone until April 2018 to get any boards that they care 483about tested before the first removal. 484 485All the code removal information will also be sent to the mailing list 486along with additional details. 487