mirror of
				https://review.coreboot.org/flashrom.git
				synced 2025-11-04 15:10:39 +01:00 
			
		
		
		
	doc: Release notes for version 1.4.0
Change-Id: Ie5597f1c3ae9289e424f54c2d313fef8efbdf1a0 Signed-off-by: Anastasia Klimchuk <aklm@flashrom.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/83359 Reviewed-by: Peter Marheine <pmarheine@chromium.org> Reviewed-by: Alexander Goncharov <chat@joursoir.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		@@ -4,4 +4,5 @@ Release notes
 | 
			
		||||
.. toctree::
 | 
			
		||||
    :maxdepth: 1
 | 
			
		||||
 | 
			
		||||
    v_1_4
 | 
			
		||||
    v_1_3
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										328
									
								
								doc/release_notes/v_1_4.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										328
									
								
								doc/release_notes/v_1_4.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,328 @@
 | 
			
		||||
================
 | 
			
		||||
v1.4 (July 2024)
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
This document describes the major changes in flashrom version 1.4.0,
 | 
			
		||||
from more than 400 patches contributed by more than 70 authors (thank you!)
 | 
			
		||||
in the 18 months since version 1.3.0 was branched.
 | 
			
		||||
 | 
			
		||||
Download
 | 
			
		||||
========
 | 
			
		||||
 | 
			
		||||
flashrom 1.4 can be downloaded in various ways:
 | 
			
		||||
 | 
			
		||||
Anonymous checkout from the git repository at https://review.coreboot.org/flashrom.git
 | 
			
		||||
(tag v1.4.0)
 | 
			
		||||
 | 
			
		||||
A tarball is available for download at
 | 
			
		||||
<TODO add link>,
 | 
			
		||||
 | 
			
		||||
fingerprint: <TODO add>
 | 
			
		||||
 | 
			
		||||
Known issue
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
AMD-based PCs with FCH are unable to read flash contents for internal (BIOS flash)
 | 
			
		||||
chips larger than 16 MB, and attempting to do so may crash the system.
 | 
			
		||||
Systems with AMD "Promontory" IO extenders (mostly "Zen" desktop platforms) are not currently
 | 
			
		||||
supported.
 | 
			
		||||
 | 
			
		||||
https://ticket.coreboot.org/issues/370
 | 
			
		||||
 | 
			
		||||
Major updates
 | 
			
		||||
=============
 | 
			
		||||
 | 
			
		||||
Optimised erase and write logic
 | 
			
		||||
-------------------------------
 | 
			
		||||
 | 
			
		||||
Significant performance improvements with new logic which is based on:
 | 
			
		||||
the optimal selection of erase blocks for the given logical layout,
 | 
			
		||||
available erase functions, and size of memory area to erase/write.
 | 
			
		||||
 | 
			
		||||
**Legacy code path still exists in the source tree, but it will be deleted by the next release.**
 | 
			
		||||
 | 
			
		||||
Optimised delays logic
 | 
			
		||||
----------------------
 | 
			
		||||
 | 
			
		||||
Optimised logic and refactorings of delays functionality, in particular for SPI chips.
 | 
			
		||||
 | 
			
		||||
* Flashrom now sleeps more aggressively when a delay is required, rather than
 | 
			
		||||
  polling in a loop. This should reduce power consumption significantly, but
 | 
			
		||||
  may require more time to complete operations on systems experiencing high
 | 
			
		||||
  CPU load.
 | 
			
		||||
* An unconditional 1-second delay was removed for SPI flashes. This is not
 | 
			
		||||
  believed to be needed for any SPI flashes, but may be needed for some old
 | 
			
		||||
  parallel flashes (where it remains in use).
 | 
			
		||||
* Cycle-counting busy loops are now only used on DOS builds of flashrom. All
 | 
			
		||||
  other platforms use OS timers for timed delays, which are expected to be
 | 
			
		||||
  more accurate.
 | 
			
		||||
* Tree-wide refactorings around programmer_delay and internal_delay
 | 
			
		||||
 | 
			
		||||
Documentation is in the git tree
 | 
			
		||||
--------------------------------
 | 
			
		||||
 | 
			
		||||
Docs are available in the same repository as the code, in ``doc/`` directory.
 | 
			
		||||
 | 
			
		||||
Website content is automatically generated from docs in the git tree.
 | 
			
		||||
 | 
			
		||||
**Patches with code changes and new features can (and should) update documentation
 | 
			
		||||
in the same patch, which makes it a lot easier to maintain up-to-date docs.**
 | 
			
		||||
 | 
			
		||||
Note: the migration process for documents from flashrom wiki to the git tree is half way.
 | 
			
		||||
Wiki is deprecated now, and will go away once the migration process complete.
 | 
			
		||||
 | 
			
		||||
Makefile scheduled for removal
 | 
			
		||||
------------------------------
 | 
			
		||||
 | 
			
		||||
**Future versions of flashrom will drop support for building via Makefile**:
 | 
			
		||||
Meson will become the only supported build system.
 | 
			
		||||
 | 
			
		||||
The Makefile and meson build systems are currently at feature parity,
 | 
			
		||||
except automated testing is supported only with meson.
 | 
			
		||||
To reduce the maintenance burden, we plan to remove the Makefile after this release.
 | 
			
		||||
 | 
			
		||||
Write-protect updates
 | 
			
		||||
---------------------
 | 
			
		||||
 | 
			
		||||
* Support reading security register
 | 
			
		||||
* Support reading/writing configuration register
 | 
			
		||||
* More range functions (with different block sizes and handling of CMP bit)
 | 
			
		||||
 | 
			
		||||
Protected regions support
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
* Support to allow programmers to handle protected regions on the flash.
 | 
			
		||||
* get_region() function is added so that programmers can expose access permissions
 | 
			
		||||
  for multiple regions within the flash.
 | 
			
		||||
* A get_region() implementation is added for the ichspi driver
 | 
			
		||||
 | 
			
		||||
Chipset support added
 | 
			
		||||
=====================
 | 
			
		||||
 | 
			
		||||
* Tiger Lake
 | 
			
		||||
* Emmitsburg Chipset SKU
 | 
			
		||||
* Meteor Lake-P/M
 | 
			
		||||
* Panther Lake-U/H 12Xe
 | 
			
		||||
* Panther Lake-H 4Xe
 | 
			
		||||
 | 
			
		||||
Chip models support added or updated
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
New models support
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
* AT25DF011
 | 
			
		||||
 | 
			
		||||
* B.25D80A
 | 
			
		||||
* B25Q64AS
 | 
			
		||||
 | 
			
		||||
* GD25LB128E/GD25LR128E
 | 
			
		||||
* GD25LB256E
 | 
			
		||||
* GD25LF128E
 | 
			
		||||
* GD25Q127C/GD25Q128E
 | 
			
		||||
* GD25LQ255E
 | 
			
		||||
* GD25LR256E
 | 
			
		||||
* GD251R512ME
 | 
			
		||||
 | 
			
		||||
* IS25LP016
 | 
			
		||||
* IS25LQ016
 | 
			
		||||
* IS25WP016
 | 
			
		||||
* IS25WP020
 | 
			
		||||
* IS25WP040
 | 
			
		||||
* IS25WP080
 | 
			
		||||
* IS25WQ040
 | 
			
		||||
 | 
			
		||||
* MX25L1633E
 | 
			
		||||
* MX25L1636E
 | 
			
		||||
* MX25L3239E
 | 
			
		||||
* MX25L3255E
 | 
			
		||||
* MX25L3273F
 | 
			
		||||
* MX25L6473F
 | 
			
		||||
* MX25L6436E/MX25L6445E/MX25L6465E
 | 
			
		||||
* MX25L6473E
 | 
			
		||||
* MX25L12850F
 | 
			
		||||
* MX77L25650F
 | 
			
		||||
* MX25R2035F
 | 
			
		||||
* MX25R4035F
 | 
			
		||||
* MX25R8035F
 | 
			
		||||
* MX25U25643G
 | 
			
		||||
* MX25V16066
 | 
			
		||||
 | 
			
		||||
* P25Q06H
 | 
			
		||||
* P25Q11H
 | 
			
		||||
* P25Q21H
 | 
			
		||||
 | 
			
		||||
* W25Q16JV_M
 | 
			
		||||
 | 
			
		||||
* XM25QH128A
 | 
			
		||||
* XM25QH80B
 | 
			
		||||
* XM25QH16C/XM25QH16D
 | 
			
		||||
* XM25QU80B
 | 
			
		||||
* XM25RU256C
 | 
			
		||||
 | 
			
		||||
* XT25F02E
 | 
			
		||||
* XT25F64B
 | 
			
		||||
* XT25F128B
 | 
			
		||||
 | 
			
		||||
* ZD25D20
 | 
			
		||||
 | 
			
		||||
Added write-protect support
 | 
			
		||||
---------------------------
 | 
			
		||||
 | 
			
		||||
* EN25QH32
 | 
			
		||||
* EN25QH64
 | 
			
		||||
 | 
			
		||||
* MX25L3206E/MX25L3208E
 | 
			
		||||
* MX25L6405
 | 
			
		||||
* MX25L6405D
 | 
			
		||||
* MX25L6406E/MX25L6408E
 | 
			
		||||
* MX25L12833F
 | 
			
		||||
* MT25QL512
 | 
			
		||||
* MX25R1635F
 | 
			
		||||
* MX25R1635F
 | 
			
		||||
* MX25U25643G
 | 
			
		||||
* MX25V1635F
 | 
			
		||||
* MX25V4035F
 | 
			
		||||
* MX25V8035F
 | 
			
		||||
 | 
			
		||||
* N25Q032..1E
 | 
			
		||||
* N25Q032..3E
 | 
			
		||||
* N25Q064..1E
 | 
			
		||||
* N25Q064..3E
 | 
			
		||||
 | 
			
		||||
* W25Q16.V
 | 
			
		||||
* W25Q32BV/W25Q32CV/W25Q32DV
 | 
			
		||||
* W25Q32FV
 | 
			
		||||
* W25Q32JV
 | 
			
		||||
* W25Q32BW/W25Q32CW/W25Q32DW
 | 
			
		||||
* W25Q32FW
 | 
			
		||||
* W25Q32JW...Q
 | 
			
		||||
* W25Q32JW...M
 | 
			
		||||
* W25Q64JW...M
 | 
			
		||||
* W25Q256JW_DTR
 | 
			
		||||
* W25Q512NW-IM
 | 
			
		||||
* W25X05
 | 
			
		||||
* W25X10
 | 
			
		||||
* W25X16
 | 
			
		||||
* W25X20
 | 
			
		||||
* W25X32
 | 
			
		||||
* W25X40
 | 
			
		||||
* W25X64
 | 
			
		||||
* W25X80
 | 
			
		||||
 | 
			
		||||
Marked as tested
 | 
			
		||||
----------------
 | 
			
		||||
 | 
			
		||||
* AM29LV040B
 | 
			
		||||
 | 
			
		||||
* AT29C010A
 | 
			
		||||
 | 
			
		||||
* FM25F01
 | 
			
		||||
* FM25Q16
 | 
			
		||||
 | 
			
		||||
* MT25QL128
 | 
			
		||||
 | 
			
		||||
* S25FL128L
 | 
			
		||||
 | 
			
		||||
* W25Q128.V
 | 
			
		||||
 | 
			
		||||
* XM25QH64C
 | 
			
		||||
* XM25QH256C
 | 
			
		||||
* XM25QU256C
 | 
			
		||||
 | 
			
		||||
Programmers support added or updated
 | 
			
		||||
====================================
 | 
			
		||||
 | 
			
		||||
* New programmer for ASM106x SATA controllers
 | 
			
		||||
* New programmer for WCH CH347, supports CH347T and CH347F packaging.
 | 
			
		||||
 | 
			
		||||
* buspirate: Add option for setting the aux pin
 | 
			
		||||
* jlink_spi: add cs=tms option to jlink_spi programmer
 | 
			
		||||
* raiden: Support target index with generic REQ_ENABLE
 | 
			
		||||
* buspirate_spi: add support for hiz output with pullups=off
 | 
			
		||||
* serprog: Add support for multiple SPI chip selects
 | 
			
		||||
 | 
			
		||||
Utilities
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
* Bash completion (enabled by default with command line interface)
 | 
			
		||||
 | 
			
		||||
* CI checks for Signed-off-by line in commit message
 | 
			
		||||
 | 
			
		||||
* CI builds documentation
 | 
			
		||||
 | 
			
		||||
Unit tests
 | 
			
		||||
==========
 | 
			
		||||
 | 
			
		||||
Added coverage for erase and write logic
 | 
			
		||||
----------------------------------------
 | 
			
		||||
 | 
			
		||||
20 test cases for each operation, with various logical layouts and chip memory states,
 | 
			
		||||
and additional 6 for each, with protected regions configured.
 | 
			
		||||
The test for erase and write is set up so that new test cases can be added whenever needed.
 | 
			
		||||
 | 
			
		||||
selfcheck
 | 
			
		||||
---------
 | 
			
		||||
 | 
			
		||||
selfcheck is now also implemented as a unit test.
 | 
			
		||||
 | 
			
		||||
selfcheck provides critical sanity checks for the programmer table, board matches table,
 | 
			
		||||
and array of flashchip definitions.
 | 
			
		||||
 | 
			
		||||
Note that selfcheck currently, by default, still runs on flashrom init,
 | 
			
		||||
because at the moment we can't run unit tests on all supported platforms,
 | 
			
		||||
and we don't have continuous integration for all platforms.
 | 
			
		||||
 | 
			
		||||
This gives an opportunity for performance improvement for developers or companies
 | 
			
		||||
who build their own flashrom binary and, importantly,
 | 
			
		||||
can run unit tests with the build (Linux, BSD).
 | 
			
		||||
For their own binary, it is possible to disable selfcheck on init and save some time
 | 
			
		||||
(**under their own responsibility to run unit tests**).
 | 
			
		||||
 | 
			
		||||
Coverage report
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
Unit tests coverage report can be generated with gcov or lcov / llvm.
 | 
			
		||||
 | 
			
		||||
ch341a_spi test
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
Unit test which covers initialization-probing-shutdown of ch341a_spi.
 | 
			
		||||
 | 
			
		||||
Reduces the risk of breakage for the very popular programmer.
 | 
			
		||||
 | 
			
		||||
Write-protect
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
Added coverage for write-protect operation
 | 
			
		||||
 | 
			
		||||
Some of the other misc fixes and improvements
 | 
			
		||||
=============================================
 | 
			
		||||
 | 
			
		||||
* bitbang_spi.c: Fix unchecked heap allocation
 | 
			
		||||
* writeprotect.c: skip unnecessary writes
 | 
			
		||||
* writeprotect.c: refuse to work with chip if OTP WPS == 1
 | 
			
		||||
* flashrom.c: Drop redundant chip read validation in verify_range()
 | 
			
		||||
* ichspi: Clear Fast SPI HSFC register before HW seq operation
 | 
			
		||||
* ichspi: Fix number of bytes for HW seq operations
 | 
			
		||||
* writeprotect,ichspi,spi25: handle register access constraints
 | 
			
		||||
* tree/: Make heap alloc checks err msg consistent
 | 
			
		||||
* flashrom.c: Replace 'exit(1)' leaks with return codes on err paths
 | 
			
		||||
* flashrom: Check for flash access restricitons in read_flash()
 | 
			
		||||
* flashrom: Check for flash access restricitons in verify_range()
 | 
			
		||||
* flashrom: Check for flash access restricitons in write_flash()
 | 
			
		||||
* flashrom: Check for flash access restrictions in erase path
 | 
			
		||||
* flashrom: Use WP-based unlocking on opaque masters
 | 
			
		||||
* ni845x_spi: Fix signed - unsigned comparisons
 | 
			
		||||
* flashrom: only perform WP unlock for write/erase operations
 | 
			
		||||
* tree: Rename master branch to main
 | 
			
		||||
* serial: Fix sp_flush_incoming for serprog TCP connections
 | 
			
		||||
* Makefile,meson.build: Add support for Sphinx versions prior to 4.x
 | 
			
		||||
* Makefile: Fix cleanup for Sphinx versions prior to 4.x
 | 
			
		||||
* Makefile: Fix version string for non-Git builds
 | 
			
		||||
* serprog protocol: Add SPI Mode and CS Mode commands
 | 
			
		||||
* util/list_yet_unsupported_chips.h: Fix path
 | 
			
		||||
* flashrom_udev.rules: Add rule for CH347
 | 
			
		||||
* Add documentation for pico-serprog
 | 
			
		||||
* cli_classic: Defer flashrom_init calibration until after options parsing
 | 
			
		||||
* hwaccess_x86_io: Fix Android compilation with bionic libc
 | 
			
		||||
		Reference in New Issue
	
	Block a user