[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190412235341.29379-1-decui@microsoft.com>
Date: Fri, 12 Apr 2019 23:53:57 +0000
From: Dexuan Cui <decui@...rosoft.com>
To: "tglx@...utronix.de" <tglx@...utronix.de>,
"riel@...riel.com" <riel@...riel.com>,
"peterz@...radead.org" <peterz@...radead.org>,
"jpoimboe@...hat.com" <jpoimboe@...hat.com>,
"luto@...nel.org" <luto@...nel.org>,
Stephen Hemminger <sthemmin@...rosoft.com>,
Sasha Levin <Alexander.Levin@...rosoft.com>,
Haiyang Zhang <haiyangz@...rosoft.com>,
KY Srinivasan <kys@...rosoft.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Michael Kelley <mikelley@...rosoft.com>
CC: "marcelo.cerri@...onical.com" <marcelo.cerri@...onical.com>,
"apw@...onical.com" <apw@...onical.com>,
"olaf@...fle.de" <olaf@...fle.de>, vkuznets <vkuznets@...hat.com>,
"jasowang@...hat.com" <jasowang@...hat.com>,
Dexuan Cui <decui@...rosoft.com>
Subject: [PATCH] smp: Do not warn if smp_call_function_single() is doing a
self call.
If smp_call_function_single() is calling the function for itself, it's safe
to run with irqs_disabled() == true.
I hit the warning because I'm in the below path in the .suspend callback of
a "syscore_ops" to support hibernation for a VM running on Hyper-V:
hv_synic_cleanup() ->
clockevents_unbind_device() ->
clockevents_unbind() ->
smp_call_function_single().
When the .suspend callback runs, only CPU0 is online and irqs_disabled() is
true.
Signed-off-by: Dexuan Cui <decui@...rosoft.com>
---
kernel/smp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/smp.c b/kernel/smp.c
index f4cf1b0bb3b8..4fdf6a378def 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -288,7 +288,7 @@ int smp_call_function_single(int cpu, smp_call_func_t func, void *info,
* can't happen.
*/
WARN_ON_ONCE(cpu_online(this_cpu) && irqs_disabled()
- && !oops_in_progress);
+ && cpu != smp_processor_id() && !oops_in_progress);
csd = &csd_stack;
if (!wait) {
--
2.19.1
Powered by blists - more mailing lists