post_code: add post code for invalid vendor binary
Add a new post code POST_INVALID_VENDOR_BINARY, used when coreboot fails to locate or validate a vendor supplied binary. BUG=b:124401932 BRANCH=sarien TEST=build coreboot for sarien and arcada platforms Change-Id: Ib1e359d4e8772c37922b1b779135e58c73bff6b4 Signed-off-by: Keith Short <keithshort@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32772 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
This commit is contained in:
parent
1835bf0fd4
commit
bb41aba0d8
|
@ -18,6 +18,7 @@ This is an (incomplete) list of POST codes emitted by coreboot v4.
|
||||||
0x89 Devices have been enabled
|
0x89 Devices have been enabled
|
||||||
0xe0 Boot media (e.g. SPI ROM) is corrupt
|
0xe0 Boot media (e.g. SPI ROM) is corrupt
|
||||||
0xe1 Resource stored within CBFS is corrupt
|
0xe1 Resource stored within CBFS is corrupt
|
||||||
|
0xe2 Vendor binary (e.g. FSP) generated a fatal error
|
||||||
0xf8 Entry into elf boot
|
0xf8 Entry into elf boot
|
||||||
0xf3 Jumping to payload
|
0xf3 Jumping to payload
|
||||||
|
|
||||||
|
|
|
@ -195,9 +195,6 @@ void raminit(struct romstage_params *params)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG(DISPLAY_HOBS)
|
#if CONFIG(DISPLAY_HOBS)
|
||||||
if (hob_list_ptr == NULL)
|
|
||||||
die("ERROR - HOB pointer is NULL!\n");
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Verify that FSP is generating the required HOBs:
|
* Verify that FSP is generating the required HOBs:
|
||||||
* 7.1: FSP_BOOTLOADER_TEMP_MEMORY_HOB only produced for FSP 1.0
|
* 7.1: FSP_BOOTLOADER_TEMP_MEMORY_HOB only produced for FSP 1.0
|
||||||
|
@ -244,7 +241,10 @@ void raminit(struct romstage_params *params)
|
||||||
"ERROR - Missing one or more required FSP HOBs!\n");
|
"ERROR - Missing one or more required FSP HOBs!\n");
|
||||||
|
|
||||||
/* Display the HOBs */
|
/* Display the HOBs */
|
||||||
|
if (hob_list_ptr != NULL)
|
||||||
print_hob_type_structure(0, hob_list_ptr);
|
print_hob_type_structure(0, hob_list_ptr);
|
||||||
|
else
|
||||||
|
printk(BIOS_ERR, "ERROR - HOB pointer is NULL!\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Get the address of the CBMEM region for the FSP reserved memory */
|
/* Get the address of the CBMEM region for the FSP reserved memory */
|
||||||
|
@ -274,14 +274,16 @@ void raminit(struct romstage_params *params)
|
||||||
printk(BIOS_DEBUG,
|
printk(BIOS_DEBUG,
|
||||||
"0x%08x: Chipset reserved bytes reported by FSP\n",
|
"0x%08x: Chipset reserved bytes reported by FSP\n",
|
||||||
(unsigned int)delta_bytes);
|
(unsigned int)delta_bytes);
|
||||||
die("Please verify the chipset reserved size\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Please verify the chipset reserved size\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Verify the FSP 1.1 HOB interface */
|
/* Verify the FSP 1.1 HOB interface */
|
||||||
if (fsp_verification_failure)
|
if (fsp_verification_failure)
|
||||||
die("ERROR - coreboot's requirements not met by FSP binary!\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"ERROR - coreboot's requirements not met by FSP binary!\n");
|
||||||
|
|
||||||
/* Display the memory configuration */
|
/* Display the memory configuration */
|
||||||
report_memory_config();
|
report_memory_config();
|
||||||
|
|
|
@ -277,7 +277,8 @@ static void do_fsp_memory_init(struct fsp_header *hdr, bool s3wake,
|
||||||
upd = (FSPM_UPD *)(hdr->cfg_region_offset + hdr->image_base);
|
upd = (FSPM_UPD *)(hdr->cfg_region_offset + hdr->image_base);
|
||||||
|
|
||||||
if (upd->FspUpdHeader.Signature != FSPM_UPD_SIGNATURE)
|
if (upd->FspUpdHeader.Signature != FSPM_UPD_SIGNATURE)
|
||||||
die("Invalid FSPM signature!\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Invalid FSPM signature!\n");
|
||||||
|
|
||||||
/* Copy the default values from the UPD area */
|
/* Copy the default values from the UPD area */
|
||||||
memcpy(&fspm_upd, upd, sizeof(fspm_upd));
|
memcpy(&fspm_upd, upd, sizeof(fspm_upd));
|
||||||
|
@ -290,7 +291,8 @@ static void do_fsp_memory_init(struct fsp_header *hdr, bool s3wake,
|
||||||
/* Fill common settings on behalf of chipset. */
|
/* Fill common settings on behalf of chipset. */
|
||||||
if (fsp_fill_common_arch_params(arch_upd, s3wake, fsp_version,
|
if (fsp_fill_common_arch_params(arch_upd, s3wake, fsp_version,
|
||||||
memmap) != CB_SUCCESS)
|
memmap) != CB_SUCCESS)
|
||||||
die("FSPM_ARCH_UPD not found!\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"FSPM_ARCH_UPD not found!\n");
|
||||||
|
|
||||||
/* Give SoC and mainboard a chance to update the UPD */
|
/* Give SoC and mainboard a chance to update the UPD */
|
||||||
platform_fsp_memory_init_params_cb(&fspm_upd, fsp_version);
|
platform_fsp_memory_init_params_cb(&fspm_upd, fsp_version);
|
||||||
|
|
|
@ -33,7 +33,8 @@ static void do_silicon_init(struct fsp_header *hdr)
|
||||||
supd = (FSPS_UPD *) (hdr->cfg_region_offset + hdr->image_base);
|
supd = (FSPS_UPD *) (hdr->cfg_region_offset + hdr->image_base);
|
||||||
|
|
||||||
if (supd->FspUpdHeader.Signature != FSPS_UPD_SIGNATURE)
|
if (supd->FspUpdHeader.Signature != FSPS_UPD_SIGNATURE)
|
||||||
die("Invalid FSPS signature\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Invalid FSPS signature\n");
|
||||||
|
|
||||||
upd = xmalloc(sizeof(FSPS_UPD));
|
upd = xmalloc(sizeof(FSPS_UPD));
|
||||||
|
|
||||||
|
|
|
@ -332,6 +332,14 @@
|
||||||
*/
|
*/
|
||||||
#define POST_INVALID_CBFS 0xe1
|
#define POST_INVALID_CBFS 0xe1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Vendor binary error
|
||||||
|
*
|
||||||
|
* Set if firmware failed to find or validate a vendor binary, or the binary
|
||||||
|
* generated a fatal error.
|
||||||
|
*/
|
||||||
|
#define POST_INVALID_VENDOR_BINARY 0xe2
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief TPM failure
|
* \brief TPM failure
|
||||||
*
|
*
|
||||||
|
|
|
@ -166,7 +166,8 @@ void sdram_initialize(struct pei_data *pei_data)
|
||||||
default:
|
default:
|
||||||
printk(BIOS_ERR, "MRC returned %x.\n", rv);
|
printk(BIOS_ERR, "MRC returned %x.\n", rv);
|
||||||
}
|
}
|
||||||
die("Nonzero MRC return value.\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Nonzero MRC return value.\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
die("UEFI PEI System Agent not found.\n");
|
die("UEFI PEI System Agent not found.\n");
|
||||||
|
|
|
@ -235,7 +235,8 @@ void sdram_initialize(struct pei_data *pei_data)
|
||||||
default:
|
default:
|
||||||
printk(BIOS_ERR, "MRC returned %x.\n", rv);
|
printk(BIOS_ERR, "MRC returned %x.\n", rv);
|
||||||
}
|
}
|
||||||
die("Nonzero MRC return value.\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Nonzero MRC return value.\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
die("UEFI PEI System Agent not found.\n");
|
die("UEFI PEI System Agent not found.\n");
|
||||||
|
|
|
@ -208,7 +208,8 @@ void main(FSP_INFO_HEADER *fsp_info_header)
|
||||||
post_code(0x48);
|
post_code(0x48);
|
||||||
printk(BIOS_DEBUG, "Starting the Intel FSP (early_init)\n");
|
printk(BIOS_DEBUG, "Starting the Intel FSP (early_init)\n");
|
||||||
fsp_early_init(fsp_info_header);
|
fsp_early_init(fsp_info_header);
|
||||||
die("Uh Oh! fsp_early_init should not return here.\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Uh Oh! fsp_early_init should not return here.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
|
@ -84,7 +84,8 @@ void *asmlinkage main(FSP_INFO_HEADER *fsp_info_header)
|
||||||
post_code(0x48);
|
post_code(0x48);
|
||||||
printk(BIOS_DEBUG, "Starting the Intel FSP (early_init)\n");
|
printk(BIOS_DEBUG, "Starting the Intel FSP (early_init)\n");
|
||||||
fsp_early_init(fsp_info_header);
|
fsp_early_init(fsp_info_header);
|
||||||
die("Uh Oh! fsp_early_init should not return here.\n");
|
die_with_post_code(POST_INVALID_VENDOR_BINARY,
|
||||||
|
"Uh Oh! fsp_early_init should not return here.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue