util/mtkheader: Add GFH header for mt8189 bootblock code
[coreboot.git] / Documentation / releases / coreboot-4.6-relnotes.md
blob9f4d8268935430410afa36c533e26d61f1d1abf4
1 coreboot 4.6 release notes
2 ==========================
4 We are happy to announce the April 2017 release of coreboot, version
5 4.6.
7 The 4.6 release covers commit e74f5eaa to commit db508565
9 Since the last release in October 2016, the coreboot project had 1708
10 commits by 121 authors. The release tarballs and gpg signatures are
11 available in the usual place at <https://www.coreboot.org/downloads>
13 There is a pgp signed 4.6 tag in the git repository, and a branch will
14 be created as needed.
16 Changes: Past, ongoing, and future
17 ----------------------------------
19 ### CBMEM console development and the Linux Kernel
21 Our cbmem debug console was updated with some nice features. The cbmem
22 console now persists between reboots and is able to be used on some
23 platforms via late init. Also there is a new Linux kernel driver which
24 removes the need for the old cbmem tool to read from the cbmem area. You
25 can find the patch here <https://patchwork.kernel.org/patch/9641997/> and
26 it can be enabled via GOOGLE_MEMCONSOLE_COREBOOT kconfig option in your
27 kernel - Note that this name may change going forward.
29 ### Critical bugs in TPM 1.2 support
31 coreboot currently has issues with the TPM 1.2 LPC driver
32 implementation. This leads to a misbehavior in SeaBIOS where the TPM
33 gets temporarily deactivated. We plan to publish the bugfix release
34 4.6.1 when we have these issues sorted out.
36 ### Native graphics and ram init improvements
38 The native graphics was reworked a while ago and should finally support
39 Windows. Numerous bug fixes and EDID support is also now available.
40 Finally, the native ram initialization for sandybridge/ivybridge
41 platforms got patched and supports more RAM modules.
43 ### New and fresh payloads
45 SeaBIOS, FiLO, and iPXE were all recently updated to the latest
46 versions. Https downloads are the default for all payloads now. We
47 provide the libpayload project which is used for writing own payloads
48 from scratch. The library is MOSTLY licensed under BSD and recently
49 received new functionality in order to prepare for the upcoming
50 replacement for the old nvramcui payload. This new payload is called
51 cbui and is based on the nuklear graphics library including keyboard and
52 mouse support. The cbui payload is currently expected to be merged into
53 the main coreboot tree before the next release.  The upstream repository
54 is here: <https://github.com/siro20/coreboot/tree/cbui/payloads/cbui>
56 ### UEFI support: A long road to go
58 coreboot can be used with the edk2 UEFI implementation which
59 is open source and available at Github. Sadly it is not currently
60 integrated into the coreboot build. This has several reasons:
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.
65 We started to make progress with the integration into our sources and
66 the hope is that by the end of the summer, we finally support the edk2
67 payload out-of-the- box. See the current patch state at
68 <http://review.coreboot.org/#/c/15057/>
70 ### Fighting blobs and proprietary HW components
72 coreboot's ultimate goal would be to replace any closed source firmware
73 stack with free software components. Unfortunately this is not always
74 possible due to signed binaries such as the Intel ME firmware, the AMD
75 PSP and microcode. Recently, a way was discovered to let the Intel ME
76 run in a functional error state and reduce it from 1.5/5MB to 80KB. It's
77 not perfect but it works from Nehalem up to Skylake based Intel systems.
78 The tool is now integrated into the coreboot build system. The upstream
79 repository is <https://github.com/corna/me_cleaner>
81 Another ongoing improvement is the new utility blobtool. It is currently
82 used for generating the flash descriptor and GbE configuration data on
83 older mainboard which are known to be free software. It can easily be
84 extended for different binaries with well-defined specifications.
86 ### Did you say Ada?
88 coreboot now supports Ada, and a lot work was done integrating Ada into
89 our toolchain. At the moment only the support for formal verification is
90 missing and will be soon added. At that point, we can prove the absence
91 of runtime errors in our Ada code. In short, everybody can start
92 developing Ada code for our project.
94 The existing Ada code which can be used from now on is another native
95 graphics initialization which will replace in the long term the current
96 implementation. The native graphics code supports all Intel platforms up
97 to skylake. We offer support for HDMI, VGA, DVI and DP external
98 interfaces as well and is ready to be integrated into our mainboard
99 implementations.
101 ### Toolchain updates
103 A new coreboot toolchain is out. The major toolchain change was going
104 from GCC version 5.3.0 to 6.3.0. There were also minor version updates
105 to GMP, MPFR, Binutils, GDB, IASL, and Clang.
107 ### Deprecation policy for boards
109 Starting with this release there will be a policy for deprecating
110 unmaintained boards. See the end of this announcement for details.
112 Change Summary
113 --------------
115 Build system (20 commits)
116 * Clean up Kconfig
117 * Show more useful error messages
119 Codebase 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
125 Documentation (6 commits)
126 * Start adding technotes/Design docs
127 * Add Kconfig documentation
129 ACPI & acpigen library
130 * Add GPIO macros
131 * Clean up and add more functions to ACPIGEN library
133 EC (26 commits)
134 * Add roda/it8518 embedded controller
136 TPM (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
142 Devices (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
147 Lib (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
155 Commonlib (11 commits)
156 * Add xmalloc, xzmalloc and dma routines
157 * Add input and output buffer helpers
159 Drivers (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
171 SPI interface
172 * Significant cleanup and refactoring
174 Include (17 commits)
175 * cpu/intel: Add MSR to support enabling turbo frequency
176 * elog: Add all EC event codes
178 SuperIO (12 commits)
179 * Updates for ITE SIOs
180 * Add 2 new chips
181 * Consolidate code to use common routines
183 vboot (23 commits)
184 * Add support for recovery hash space in TPM
186 RISC-V (25 commits)
187 * Add lowRISC System On Chip support
188 * Cbmem patches, move to common architectural code
190 ARM (16 commits)
191 * Init new serial struct variables for samsung exynos5420 & allwinner
192   a10
193 * Fix verstage to use proper assembly versions of mem*()
195 RockChip RK3399 & platforms (46 commits)
196 * Memory, I2C, USB, SD & Display fixes
198 X86 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
228 sandybridge/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
234 soc/intel/common
235 * Add common routines for HECI, ITSS, PCR, RTC, systemagent, UART, XHCI,
236 & LPSS
237 * Save Memory DIMM Information in SMBIOS table
239 Apollolake (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
246 Quark & platforms (14 commits)
247 * Fix I2c & Serial port config
248 * Add vboot support
250 ga-g41m-es2l, x4x northbridge & LGA775 (23 commits)
251 * Memory fixes
252 * Add S3 suspend/resume
254 Skylake / 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
258 support
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
265 X86 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
274 AMD: 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
280 amd/mct:
281 * Fix CsMux45 configuration, maximum read latency, & DQ mask calculation
283 Mainboards (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
299 Payloads (53 commits)
300 * Update FILO, SeaBIOS, & iPXE versions
301 * Many libpayload fixes and updates
303 Toolchain (19 commits)
304 * Update GCC, Binutils, GMP, MPFR, GDB, IASL and LLVM
306 Utilities: (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
318 SPIBAR
319 * sconfig: Add a new SPI device type
320 * superiotool: Add new chips - IT8783E/F, W83627DHG, W83627EHG, F71808A
322 Changes in chips
323 ----------------
325 Added 1 processor & northbridge:
326 * amd/pi/00670F00
328 Added 1 soc:
329 * lowrisc/lowrisc
331 Removed 1 northbridge:
332 * intel/e7501
334 Added 2 sios:
335 * fintek/f71808a
336 * ite/it8783ef
338 Mainboard changes
339 -----------------
341 Added 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
370 Removed 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
375 Utilities
376 ---------
378 Added 2 new utilities:
379 * blobtool
380 * me_cleaner
382 Submodules
383 ----------
385 Updated 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)
392 Tested boards
393 -------------
395 The 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
415 coreboot statistics from e74f5eaa43 to db508565d2
416 -------------------------------------------------
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
428 Code removal after the 4.6 release
429 ----------------------------------
431 The only platform currently scheduled for removal is the
432 bifferos/bifferboard & soc/rdc/r8610. This platform is one of two that
433 still uses romcc to compile romstage and doesn't have cache-as-ram in
434 romstage - the others were all removed long ago. Additionally, it seems
435 to be impossible to buy, so as far as it can be determined, no testing
436 has been done recently.
438 Code removal after the 4.7 release
439 ----------------------------------
441 One of the things that the coreboot project has struggled with is how to
442 maintain the older platforms while still moving the rest of the
443 platforms forward. Currently there are numerous platforms in the
444 codebase which have not been well maintained.
446 Starting with the 4.7 release in October, the coreboot leadership is
447 going to set standards that platforms are expected to meet to remain in
448 the active codebase. These will generally be announced 3 - 6 months in
449 advance to give time to get changes in. The expectation is not
450 necessarily even that all work to meet the goal will be completed, but
451 it is expected that a reasonable effort has started to meet the goal at
452 the time of the release. Regardless of the work that's been done,
453 platforms which have not met the goal by the following release will be
454 removed.
456 The next expectation that will need to be met for all platforms is cbmem
457 in romstage. This currently affects numerous platforms, including most,
458 if not all of AMD's platforms. Work to update many of these platforms
459 has started, but there are others that have not made any progress
460 towards this goal. A list of the platforms that are affected by this
461 will be sent to the mailing list shortly.
463 Code removal after the 4.8 release
464 ----------------------------------
466 To further clean things up, starting with the 4.8 release, any platform
467 that does not have a successful boot logged in the board_status repo in
468 the previous year (that is, within the previous two releases) will be
469 removed from the maintained coreboot codebase. Chips that do not have
470 any associated boards will also be removed. These platforms will be
471 announced before the release so that there is time for people to test if
472 desired.
474 This is not meant to be a high bar, but as a measure to clean up the
475 codebase and eliminate boards and chips that are actually no longer
476 being used. The cleanup will happen just after the release, so the
477 removed platforms will still be available in the release branch if
478 desired. If there is still interest, developers can bring back old chips
479 and boards by porting them to the new tree (and bringing them to current
480 standards).
482 This gives everyone until April 2018 to get any boards that they care
483 about tested before the first removal.
485 All the code removal information will also be sent to the mailing list
486 along with additional details.