All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <jbeulich@novell.com>
To: "Ingo Molnar" <mingo@elte.hu>
Cc: "Miguel Boton" <mboton.lkml@gmail.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	<linux-kernel@vger.kernel.org>, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: mach_reboot_fixups()
Date: Fri, 07 Mar 2008 07:58:56 +0000	[thread overview]
Message-ID: <47D103D0.76E4.0078.0@novell.com> (raw)
In-Reply-To: <20080306174311.GA23029@elte.hu>

>>> Ingo Molnar <mingo@elte.hu> 06.03.08 18:43 >>>
>
>* Jan Beulich <jbeulich@novell.com> wrote:
>
>> Ingo,
>> 
>> was it intentional to remove the call to mach_reboot_fixups() during 
>> the merge of reboot_{32,64}.c? If so, it seems odd that 
>> reboot_fixups_32.c was left in the tree (and there was even stuff 
>> added to it). But it would rather seem that those machines dealt with 
>> in that file would not reboot properly anymore (for one of my boxes I 
>> added an entry in that table to make it boot properly, which is why I 
>> noticed the code not being called anymore)...
>
>good catch Jan! The patch below should fix it.
>
>Can you see any other material difference due to the unification? 
>reboot_mode is now written to 0x472 unconditionally, but we can consider 
>that a bugfix. Otherwise the mode and ordering of reboot sequences seems 
>to be equivalent to me.

Not exactly - when rebooting through EFI or BIOS, the old code didn't
go through mach_reboot_fixups(), and I think that is the correct
behavior (albeit, when the EFI path fell back to the triple fault
mechanism, it should have honored the fixup logic, and I think it is
more correct that the new code tries the keyboard method first).
Perhaps the most reasonable way to go is to honor all reboot=
settings without using the override code first:

--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -329,6 +329,10 @@ static inline void kb_wait(void)
 	}
 }
 
+void __attribute__((weak)) mach_reboot_fixups(void)
+{
+}
+
 static void native_machine_emergency_restart(void)
 {
 	int i;
@@ -337,9 +341,11 @@ static void native_machine_emergency_res
 	*((unsigned short *)__va(0x472)) = reboot_mode;
 
 	for (;;) {
+
 		/* Could also try the reset bit in the Hammer NB */
 		switch (reboot_type) {
 		case BOOT_KBD:
+			mach_reboot_fixups(); /* for board specific fixups */
 			for (i = 0; i < 10; i++) {
 				kb_wait();
 				udelay(50);

(with the exception that reboot=keyboard will still have the effect
of honoring the fixups, but I think this is better than further
complicating the logic).

In case you want to take this,
Signed-off-by: Jan Beulich <jbeulich@novell.com>

Jan


  parent reply	other threads:[~2008-03-07  7:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-06 17:02 mach_reboot_fixups() Jan Beulich
2008-03-06 17:43 ` mach_reboot_fixups() Ingo Molnar
2008-03-06 17:49   ` mach_reboot_fixups() Ingo Molnar
2008-03-07  7:58   ` Jan Beulich [this message]
2008-03-07  8:24     ` mach_reboot_fixups() 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=47D103D0.76E4.0078.0@novell.com \
    --to=jbeulich@novell.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mboton.lkml@gmail.com \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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 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.