All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] x86: hyperv: fix build in !CONFIG_KEXEC_CORE case
@ 2015-09-23 10:02 Vitaly Kuznetsov
  2015-09-28 16:36 ` [tip:x86/urgent] x86: Hyperv: fix build in %21CONFIG_KEXEC_CORE case tip-bot for Vitaly Kuznetsov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Vitaly Kuznetsov @ 2015-09-23 10:02 UTC (permalink / raw)
  To: x86
  Cc: devel, linux-kernel, K. Y. Srinivasan, Haiyang Zhang,
	Thomas Gleixner, Ingo Molnar, H. Peter Anvin, Jim Davis,
	Stephen Hemminger, Greg Kroah-Hartman

Recent changes in Hyper-V driver ("Drivers: hv: vmbus: add special crash
handler") broke the build when CONFIG_KEXEC_CORE is not set:

arch/x86/built-in.o: In function `hv_machine_crash_shutdown':
arch/x86/kernel/cpu/mshyperv.c:112: undefined reference to `native_machine_crash_shutdown'

Decorate all kexec related code with #ifdef CONFIG_KEXEC_CORE.

Reported-by: Jim Davis <jim.epost@gmail.com>
Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
Changes since v2:
- Hide hv_kexec_handler/hv_crash_handler under IS_ENABLED(CONFIG_HYPERV)
  to avoid warings in !CONFIG_HYPERV && !CONFIG_KEXEC case [kbuild robot]

Changes since v1:
- Previously I tried solving the issue by defining
  native_machine_crash_shutdown in !CONFIG_KEXEC_CORE case:
  https://lkml.org/lkml/2015/8/11/417. This was to   avoid having #ifdefs
  in C code [Greg KH]. Such approach, however, raised a question on
  bloating kernel with unneeded stuff [Ingo Molnar].
---
 arch/x86/kernel/cpu/mshyperv.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index 381c8b9..20e242e 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -34,11 +34,10 @@
 struct ms_hyperv_info ms_hyperv;
 EXPORT_SYMBOL_GPL(ms_hyperv);
 
-static void (*hv_kexec_handler)(void);
-static void (*hv_crash_handler)(struct pt_regs *regs);
-
 #if IS_ENABLED(CONFIG_HYPERV)
 static void (*vmbus_handler)(void);
+static void (*hv_kexec_handler)(void);
+static void (*hv_crash_handler)(struct pt_regs *regs);
 
 void hyperv_vector_handler(struct pt_regs *regs)
 {
@@ -96,8 +95,8 @@ void hv_remove_crash_handler(void)
 	hv_crash_handler = NULL;
 }
 EXPORT_SYMBOL_GPL(hv_remove_crash_handler);
-#endif
 
+#ifdef CONFIG_KEXEC_CORE
 static void hv_machine_shutdown(void)
 {
 	if (kexec_in_progress && hv_kexec_handler)
@@ -111,7 +110,8 @@ static void hv_machine_crash_shutdown(struct pt_regs *regs)
 		hv_crash_handler(regs);
 	native_machine_crash_shutdown(regs);
 }
-
+#endif /* CONFIG_KEXEC_CORE */
+#endif /* CONFIG_HYPERV */
 
 static uint32_t  __init ms_hyperv_platform(void)
 {
@@ -186,8 +186,10 @@ static void __init ms_hyperv_init_platform(void)
 	no_timer_check = 1;
 #endif
 
+#if IS_ENABLED(CONFIG_HYPERV) && defined(CONFIG_KEXEC_CORE)
 	machine_ops.shutdown = hv_machine_shutdown;
 	machine_ops.crash_shutdown = hv_machine_crash_shutdown;
+#endif
 	mark_tsc_unstable("running on Hyper-V");
 }
 
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-09-30  5:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-23 10:02 [PATCH v3] x86: hyperv: fix build in !CONFIG_KEXEC_CORE case Vitaly Kuznetsov
2015-09-28 16:36 ` [tip:x86/urgent] x86: Hyperv: fix build in %21CONFIG_KEXEC_CORE case tip-bot for Vitaly Kuznetsov
2015-09-29  7:39 ` [tip:x86/urgent] x86/hyperv: Fix the build in the CONFIG_KEXEC_CORE=y case tip-bot for Vitaly Kuznetsov
2015-09-29 11:55   ` Vitaly Kuznetsov
2015-09-30  5:44     ` Ingo Molnar
2015-09-30  5:45 ` [tip:x86/urgent] x86/hyperv: Fix the build in the !CONFIG_KEXEC_CORE case tip-bot for Vitaly Kuznetsov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.