x86: Stop working around skip-at-start
authorSimon Glass <sjg@chromium.org>
Wed, 26 Feb 2025 16:26:18 +0000 (09:26 -0700)
committerTom Rini <trini@konsulko.com>
Tue, 4 Mar 2025 14:22:11 +0000 (08:22 -0600)
With a recent Binman change, the skip-at-start property is now honoured,
meaning that all image-pos values in the affected section start from
the skip-at-start value.

The x86 code works around the old behaviour at present, so update it.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/intel_common/intel_opregion.c
arch/x86/lib/fsp2/fsp_init.c

index 78caff0..4a2717b 100644 (file)
@@ -31,6 +31,7 @@ static int locate_vbt(char **vbtp, int *sizep)
        size = vbt.size;
        if (size > sizeof(vbt_data))
                return log_msg_ret("vbt", -E2BIG);
+       vbt.image_pos += CONFIG_ROM_SIZE;
        ret = spi_flash_read_dm(dev, vbt.image_pos, size, vbt_data);
        if (ret)
                return log_msg_ret("read", ret);
index 1a2bf46..0be892b 100644 (file)
@@ -107,7 +107,6 @@ int fsp_locate_fsp(enum fsp_type_t type, struct binman_entry *entry,
                   bool use_spi_flash, struct udevice **devp,
                   struct fsp_header **hdrp, ulong *rom_offsetp)
 {
-       ulong mask = CONFIG_ROM_SIZE - 1;
        struct udevice *dev;
        ulong rom_offset = 0;
        uint map_size;
@@ -141,7 +140,7 @@ int fsp_locate_fsp(enum fsp_type_t type, struct binman_entry *entry,
                if (ret)
                        return log_msg_ret("binman entry", ret);
                if (!use_spi_flash)
-                       rom_offset = (map_base & mask) - CONFIG_ROM_SIZE;
+                       rom_offset = map_base + CONFIG_ROM_SIZE;
        } else {
                ret = -ENOENT;
                if (false)