summaryrefslogtreecommitdiffstats
path: root/src/cpu/x86/mp_init.c
diff options
context:
space:
mode:
authorFelix Held <felix.held@amd.corp-partner.google.com>2021-10-20 23:31:43 +0200
committerFelix Held <felix-coreboot@felixheld.de>2021-10-22 01:27:07 +0000
commit4dd7d1196545f1dff71b8e70b7a9b80b8bcd4041 (patch)
tree6a0c12d1d086f89d7ba7369247298a1ccde2faab /src/cpu/x86/mp_init.c
parent82faefb339a0853dd49f10bafd2c4f5ca1723fb3 (diff)
downloadcoreboot-4dd7d1196545f1dff71b8e70b7a9b80b8bcd4041.tar.gz
coreboot-4dd7d1196545f1dff71b8e70b7a9b80b8bcd4041.tar.bz2
coreboot-4dd7d1196545f1dff71b8e70b7a9b80b8bcd4041.zip
cpu/x86/mp_init: move printing of failure message into mp_init_with_smm
Each CPU/SoC checks the return value of the mp_init_with_smm and prints the same error message if it wasn't successful, so move this check and printk to mp_init_with_smm. For this the original mp_init_with_smm function gets renamed to do_mp_init_with_smm and a new mp_init_with_smm function is created which then calls do_mp_init_with_smm, prints the error if it didn't return CB_SUCCESS and passes the return value of do_mp_init_with_smm to its caller. Since no CPU/SoC code handles a mp_init_with_smm failure apart from printing a message, also add a comment at the mp_init_with_smm call sites that the code might want to handle a failure. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I181602723c204f3e43eb43302921adf7a88c81ed Reviewed-on: https://review.coreboot.org/c/coreboot/+/58498 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org>
Diffstat (limited to 'src/cpu/x86/mp_init.c')
-rw-r--r--src/cpu/x86/mp_init.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c
index 0624176b75d2..c99732fb3901 100644
--- a/src/cpu/x86/mp_init.c
+++ b/src/cpu/x86/mp_init.c
@@ -1095,7 +1095,7 @@ static void fill_mp_state(struct mp_state *state, const struct mp_ops *ops)
mp_state.ops.per_cpu_smm_trigger = smm_initiate_relocation;
}
-enum cb_err mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops)
+static enum cb_err do_mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops)
{
enum cb_err ret;
void *default_smm_area;
@@ -1142,3 +1142,13 @@ enum cb_err mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops)
return ret;
}
+
+enum cb_err mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops)
+{
+ enum cb_err ret = do_mp_init_with_smm(cpu_bus, mp_ops);
+
+ if (ret != CB_SUCCESS)
+ printk(BIOS_ERR, "MP initialization failure.\n");
+
+ return ret;
+}