[tip: ras/core] x86/mce: Mark mce_timed_out() noinstr

From: tip-bot2 for Borislav Petkov
Date: Mon Dec 13 2021 - 12:35:08 EST


The following commit has been merged into the ras/core branch of tip:

Commit-ID: edb3d07e2403abd13fc664e8b6f23ea7efb52747
Gitweb: https://git.kernel.org/tip/edb3d07e2403abd13fc664e8b6f23ea7efb52747
Author: Borislav Petkov <bp@xxxxxxx>
AuthorDate: Tue, 02 Nov 2021 22:25:12 +01:00
Committer: Borislav Petkov <bp@xxxxxxx>
CommitterDate: Mon, 13 Dec 2021 14:13:54 +01:00

x86/mce: Mark mce_timed_out() noinstr

Fixes

vmlinux.o: warning: objtool: do_machine_check()+0x482: call to mce_timed_out() leaves .noinstr.text section

Signed-off-by: Borislav Petkov <bp@xxxxxxx>
Link: https://lore.kernel.org/r/20211208111343.8130-12-bp@xxxxxxxxx
---
arch/x86/kernel/cpu/mce/core.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 044c94b..7023d65 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -883,8 +883,13 @@ static cpumask_t mce_missing_cpus = CPU_MASK_ALL;
/*
* Check if a timeout waiting for other CPUs happened.
*/
-static int mce_timed_out(u64 *t, const char *msg)
+static noinstr int mce_timed_out(u64 *t, const char *msg)
{
+ int ret = 0;
+
+ /* Enable instrumentation around calls to external facilities */
+ instrumentation_begin();
+
/*
* The others already did panic for some reason.
* Bail out like in a timeout.
@@ -903,12 +908,17 @@ static int mce_timed_out(u64 *t, const char *msg)
cpumask_pr_args(&mce_missing_cpus));
mce_panic(msg, NULL, NULL);
}
- return 1;
+ ret = 1;
+ goto out;
}
*t -= SPINUNIT;
+
out:
touch_nmi_watchdog();
- return 0;
+
+ instrumentation_end();
+
+ return ret;
}

/*