Commit e6294e05 authored by Simon Glass's avatar Simon Glass Committed by Bin Meng

x86: ivybridge: Allow microcode to be collated

Generally the microcode is combined into a single block only (and removed
from the device tree) when there are multiple blocks. But this is not a
requirement.

Adjust the ivybridge code to avoid assuming this.
Signed-off-by: 's avatarSimon Glass <sjg@chromium.org>
Reviewed-by: 's avatarBin Meng <bmeng.cn@gmail.com>
parent fda4fa81
......@@ -43,7 +43,7 @@ static int microcode_decode_node(const void *blob, int node,
{
update->data = fdt_getprop(blob, node, "data", &update->size);
if (!update->data)
return -EINVAL;
return -ENOENT;
update->data += UCODE_HEADER_LEN;
update->size -= UCODE_HEADER_LEN;
......@@ -145,6 +145,16 @@ int microcode_update_intel(void)
}
ret = microcode_decode_node(blob, node, &update);
if (ret == -ENOENT && ucode_base) {
/*
* The microcode has been removed from the device tree
* in the build system. In that case it will have
* already been updated in car_init().
*/
debug("%s: Microcode data not available\n", __func__);
skipped++;
continue;
}
if (ret) {
debug("%s: Unable to decode update: %d\n", __func__,
ret);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment