linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] hyperv: fix build if KEXEC not enabled
Date: Tue, 8 Sep 2015 09:57:28 +0200	[thread overview]
Message-ID: <20150908075727.GA7480@gmail.com> (raw)
In-Reply-To: <87a8sxbc4m.fsf@vitty.brq.redhat.com>


* Vitaly Kuznetsov <vkuznets@redhat.com> wrote:

> Ingo Molnar <mingo@kernel.org> writes:
> 
> > * Stephen Hemminger <stephen@networkplumber.org> wrote:
> >
> >> Fixes regression 4.3 mergw window in my config 
> >> where hyperv is enable but CONFIG_KEXEC not enabled.
> >> 
> >> arch/x86/kernel/cpu/mshyperv.c:112: undefined reference to `native_machine_crash_shutdown'
> >> 
> >> Introduced by:
> >>    commit b4370df2b1f5158de028e167974263c5757b34a6
> >>    Author: Vitaly Kuznetsov <vkuznets@redhat.com>
> >>    Date:   Sat Aug 1 16:08:09 2015 -0700
> >> 
> >>        Drivers: hv: vmbus: add special crash handler
> >> 
> >> 
> >> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> >> 
> >> 
> >> --- a/arch/x86/kernel/cpu/mshyperv.c	2015-09-07 10:11:24.994885115 -0700
> >> +++ b/arch/x86/kernel/cpu/mshyperv.c	2015-09-07 10:14:20.995698615 -0700
> >> @@ -109,7 +109,9 @@ static void hv_machine_crash_shutdown(st
> >>  {
> >>  	if (hv_crash_handler)
> >>  		hv_crash_handler(regs);
> >> +#ifdef CONFIG_KEXEC
> >>  	native_machine_crash_shutdown(regs);
> >> +#endif
> >
> > I think there's another related bug as well:
> >
> >         machine_ops.crash_shutdown = hv_machine_crash_shutdown;
> >
> > that should be #ifdef CONFIG_KEXEC as well AFAICS.
> >
> 
> Why? [...]

Because you are bloating the kernel.

That's because machine_ops.crash_shutdown() does nothing outside of kexec and 
that's the existing pattern in the native and KVM code. (Xen does it 
inconsistently as well.)

So you bloat the kernel at minimum, and also confuse the reader what it's all 
about.

> [...] crash_shutdown is defined in machine_ops unconditionally, I don't see why 
> we _need_ #ifdef here (and btw Greg insisted on removing them).

So arguably the kexec interface should be cleaned up as well, into something like:

    kexec_crash_handler_set(hv_machine_crash_shutdown);

... which would compile to no code at all in the !KEXEC case, and then we could 
also make ::crash_shutdown #ifdef KEXEC.

At least one #ifdef is unavoidable unless we make KCONFIG an always-enabled 
facility - or merge it more intelligently with the regular reboot/shutdown code.

I.e. I don't think there should be kexec specific 'handlers' per se - there should 
be reboot/shutdown handlers that will also serve kexec just fine.

But until that's fixed we've got to make the best of the existing kexec design.

Thanks,

	Ingo

  reply	other threads:[~2015-09-08  7:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-07 17:22 [PATCH] hyperv: fix build if KEXEC not enabled Stephen Hemminger
2015-09-08  7:14 ` Ingo Molnar
2015-09-08  7:31   ` Vitaly Kuznetsov
2015-09-08  7:57     ` Ingo Molnar [this message]
2015-09-08 21:34       ` Vitaly Kuznetsov
2015-09-08  7:21 ` Vitaly Kuznetsov
2015-09-08  7:33   ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150908075727.GA7480@gmail.com \
    --to=mingo@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=haiyangz@microsoft.com \
    --cc=kys@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stephen@networkplumber.org \
    --cc=vkuznets@redhat.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).