summaryrefslogtreecommitdiffstats
path: root/sfdp.c
diff options
context:
space:
mode:
authorMichael Niewöhner <foss@mniewoehner.de>2021-12-11 22:15:06 +0100
committerNico Huber <nico.h@gmx.de>2022-01-26 17:42:34 +0000
commit9413faa7ccc806af931a7fd0437e4dee98990e9a (patch)
tree492c38a6f0b94f618986393a3b7829ad7f55fcce /sfdp.c
parent5af39c14edb2812e1d3b1aac82e342290d319869 (diff)
downloadflashrom-9413faa7ccc806af931a7fd0437e4dee98990e9a.tar.gz
flashrom-9413faa7ccc806af931a7fd0437e4dee98990e9a.tar.bz2
flashrom-9413faa7ccc806af931a7fd0437e4dee98990e9a.zip
SFDP: make mandatory table length check work with newer SFDP revisions
The JEDEC SFDP specification JESD216A (1.5) adds five new DWORDs to the Basic Flash Parameter Table. Later versions of the spec add even more fields. This increases the table being read from 36 bytes to currently 64 bytes and makes flashrom bail out for any SFDP version >= 1.5 due to a static table length check. This was discovered on a GigaDevice GD25B127DSIGR from 2021 with SFDP revision 1.6, while another flash of the same model from 2020 with SFDP revision 1.0 was detected fine by flashrom. GD25B127DSIGR - 2020 version: Probing for Unknown SFDP-capable chip, 0 kB: SFDP revision = 1.0 SFDP number of parameter headers is 2 (NPH = 1). SFDP parameter table header 0/1: ID 0x00, version 1.0 Length 36 B, Parameter Table Pointer 0x000030 GD25B127DSIGR - 2021 version: Probing for Unknown SFDP-capable chip, 0 kB: SFDP revision = 1.6 SFDP number of parameter headers is 2 (NPH = 1). SFDP parameter table header 0/1: ID 0x00, version 1.6 Length 64 B, Parameter Table Pointer 0x000030 ... Length of the mandatory JEDEC SFDP parameter table is wrong (64 B), skipping it. The specification says that changes of the minor SFDP revision will maintain compatibility. Thus, simply check for the minimal required table length, which is 16 bytes for legacy Intel pre-SFDP and 36 bytes for SFDP. Change-Id: Id84cde4ebc805d68e2984e8041fbc48d7ceebe34 Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-on: https://review.coreboot.org/c/flashrom/+/60055 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'sfdp.c')
-rw-r--r--sfdp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sfdp.c b/sfdp.c
index 85e698d67..b5494177d 100644
--- a/sfdp.c
+++ b/sfdp.c
@@ -369,7 +369,7 @@ int probe_spi_sfdp(struct flashctx *flash)
msg_cdbg("The chip contains an unknown "
"version of the JEDEC flash "
"parameters table, skipping it.\n");
- } else if (len != 9 * 4 && len != 4 * 4) {
+ } else if (len != 4 * 4 && len < 9 * 4) {
msg_cdbg("Length of the mandatory JEDEC SFDP "
"parameter table is wrong (%d B), "
"skipping it.\n", len);