Nico Huber has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/31017
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
ifwi: Add definitions for the Integrated Firmware Image format
The Integrated Firmware Image (IFWI) is used as a partitioning format on some Intel SoCs (e.g. Apollo Lake). It is not tied to NOR flashes, rather to have a common format between different types of boot media.
Change-Id: I4bdf47637bfb68560e6d4269f89710572c1bb82a Signed-off-by: Nico Huber nico.h@gmx.de --- A ifwi.h 1 file changed, 80 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/17/31017/1
diff --git a/ifwi.h b/ifwi.h new file mode 100644 index 0000000..622fccf --- /dev/null +++ b/ifwi.h @@ -0,0 +1,80 @@ +/* + * This file is part of the flashrom project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/* + * The Integrated Firmware Image (IFWI) is used as a partitioning + * format on some Intel SoCs (e.g. Apollo Lake). It is not tied to + * NOR flashes, rather to have a common format between different + * types of boot media. + */ + +#ifndef __IFWI_H__ +#define __IFWI_H__ 1 + +#include <stdint.h> + +#include "layout.h" + +int layout_from_ifwi_rom(struct flashrom_layout **, struct flashrom_flashctx *, const size_t flash_offset); + +/*********** Boot Partition Descriptor Table (BPDT) ***********/ + +#define BPDT_ENTRY_LENGTH 12 + +struct bpdt_entry { /* points to a Sub-Partition */ + uint16_t type; + uint16_t flags; + uint32_t offset; /* from start of Logical Boot Partition */ + uint32_t size; +}; + +#define BPDT_SIGNATURE 0x000055aa +#define BPDT_HEADER_LENGTH 24 + +struct bpdt { + uint32_t signature; + uint16_t desc_count; + uint16_t version; + uint32_t xorsum; /* covers BPDT to S-BPDT (inclusive), iff there is + a redundant Logical Boot Partition, otherwise 0 */ + uint32_t ifwi_version; /* revision of this IFWI build */ + struct bpdt_entry entries[]; +}; + +/**************** Sub-Partition Directory (SPD) ***************/ + +#define SPD_ENTRY_OFFSET_MASK 0x01ffffff +#define SPD_ENTRY_LENGTH 24 + +struct spd_entry { + char name[12 + 1]; /* serialized as 12 chars w/o terminator */ + uint32_t offset; /* from start of the SPD header */ + uint32_t length; +}; + +#define SPD_MARKER 0x44504324 /* $CPD */ +#define SPD_MIN_HEADER_LENGTH 16 + +struct spd { + uint32_t marker; + uint32_t num_entries; + uint8_t header_version; + uint8_t entry_version; + uint8_t header_length; + uint8_t checksum; /* xor-sum covering header + entries */ + char name[4 + 1]; /* serialized as 4 chars w/o terminator */ + struct spd_entry entries[]; +}; + +#endif /* __IFWI_H__ */
Nico Huber has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 1:
Not sure if we want this upstream at all... it's not even about NOR flash. Just an Intel specific storage format.
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 1:
Patch Set 1:
Not sure if we want this upstream at all... it's not even about NOR flash. Just an Intel specific storage format.
Isn't the IFD something similar however? I have to admit I know next to nothing about IFWI.
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 1: Code-Review+1
(1 comment)
https://review.coreboot.org/#/c/31017/1/ifwi.h File ifwi.h:
https://review.coreboot.org/#/c/31017/1/ifwi.h@66 PS1, Line 66: #define SPD_MARKER 0x44504324 /* $CPD */ What does the $ character mean?
Thomas Heijligen has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 1: Code-Review+1
Nico Huber has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 1:
(1 comment)
Not sure if we want this upstream at all... it's not even about NOR flash. Just an Intel specific storage format.
Isn't the IFD something similar however? I have to admit I know next to nothing about IFWI.
Well, the use case is similar: Flash only parts of Intel firmware. The structure is very different, though, in its nature. It seems that things can shift and sizes change when you prep a firmware update, for instance. So, IFD partitioning is reliable and read-only. IFWI partitioning is... well, not very nice, unless you have full control over all firmware parts.
https://review.coreboot.org/#/c/31017/1/ifwi.h File ifwi.h:
https://review.coreboot.org/#/c/31017/1/ifwi.h@66 PS1, Line 66: #define SPD_MARKER 0x44504324 /* $CPD */
What does the $ character mean?
It's just a string that marks a valid sub-partition dir. I have no idea what C, P and D mean, either :) probably something historical.
Thomas Heijligen has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 1:
(1 comment)
https://review.coreboot.org/#/c/31017/1/ifwi.h File ifwi.h:
https://review.coreboot.org/#/c/31017/1/ifwi.h@66 PS1, Line 66: #define SPD_MARKER 0x44504324 /* $CPD */
It's just a string that marks a valid sub-partition dir. I have no idea […]
could be "Code Partition Directory" There is this string in ME. https://www.troopers.de/downloads/troopers17/TR17_ME11_Static.pdf slide 12 the structure is identical
Hello Thomas Heijligen, Paul Menzel, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/flashrom/+/31017
to look at the new patch set (#2).
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
ifwi: Add definitions for the Integrated Firmware Image format
The Integrated Firmware Image (IFWI) is used as a partitioning format on some Intel SoCs (e.g. Apollo Lake). It is not tied to NOR flashes, rather to have a common format between different types of boot media.
Change-Id: I4bdf47637bfb68560e6d4269f89710572c1bb82a Signed-off-by: Nico Huber nico.h@gmx.de --- A ifwi.h 1 file changed, 78 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/17/31017/2
David Hendricks has posted comments on this change. ( https://review.coreboot.org/c/flashrom/+/31017 )
Change subject: ifwi: Add definitions for the Integrated Firmware Image format ......................................................................
Patch Set 3: Code-Review+2
Patch looks good. Got a document number with details? A cursory search did not turn up any obviously useful hits...