util/ifdtool: Correct region resize handling

When regions are resized they are always aligned to the top of the
region. For the BIOS region this is correct. The other regions however
should be aligned to the bottom of the region.

Update the region handling to only align BIOS region to top of region.

BUG=N/A
TEST=verified image resize

Change-Id: Ied0e763b5335f5f124fc00de38e5db1a4d0f6785
Signed-off-by: Wim Vervoorn <wvervoorn@eltan.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/38460
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Frans Hendriks <fhendriks@eltan.com>
This commit is contained in:
Wim Vervoorn 2020-01-17 13:48:00 +01:00 committed by Patrick Georgi
parent 42d300533e
commit 05bc9b38a3
1 changed files with 4 additions and 3 deletions

View File

@ -1358,11 +1358,12 @@ static void new_layout(const char *filename, char *image, int size,
if (new->size > current->size) {
/* copy from the end of the current region */
copy_size = current->size;
offset_new = new->size - current->size;
if (i == REGION_BIOS)
offset_new = new->size - current->size;
}
if (new->size < current->size) {
/* copy to the end of the new region */
if ((i == REGION_BIOS) && (new->size < current->size)) {
/* copy BIOS region to the end of the new region */
offset_current = current->size - new->size;
}