From: ebiederm@xmission.com (Eric W. Biederman)
To: Cliff Wickman <cpw@sgi.com>
Cc: Ingo Molnar <mingo@elte.hu>,
andi@firstfloor.org, tglx@linutronix.de,
linux-kernel@vger.kernel.org,
the arch/x86 maintainers <x86@kernel.org>
Subject: Re: [PATCH] X86: reboot-notify additions
Date: Fri, 20 Jun 2008 11:01:34 -0700 [thread overview]
Message-ID: <m1wskkt281.fsf@frodo.ebiederm.org> (raw)
In-Reply-To: <20080620151650.GA5606@sgi.com> (Cliff Wickman's message of "Fri, 20 Jun 2008 10:16:50 -0500")
Cliff Wickman <cpw@sgi.com> writes:
>>
>> Cool. Someone who wants this kind of functionality and has code in
>> the kernel. Perhaps we can have a reasonable discussion about this.
>> The last time this came up people wanted a hook so they could support
>> their out of tree blobs in an enterprise kernel.
>>
>> emergency_restart only happens or only should happen with explicit admin
>> request Sysreq-r. Or when a watchdog detects the system is borked.
>> By design it is not expected to call drivers. The kexec on panic
>> case is similar.
>
> I suppose one could trust that someone with superuser permission would
> not stop one partition of a multi-partitioned system in a cavalier manner.
> I'm inclined to think we should run the reboot_notifier_list even in those
> situations.
NACK emergency_restart is for when calling a normal reboot doesn't
work i.e. calling the reboot_notifier_list is broken.
emergency_restart is by definition a hack.
Also now that I think about it now that we have the device tree
notifications the last few users of the reboot_notifier_list should
be updated and the reboot_notifier_list should just be removed.
> But definitely on some watchdog timeout event. Some kind of mechanism
> should be invoked to communicate the stoppage.
I'm not certain why this is important if you have a hardware partition
that looks like real hardware. In that case the firmware should
easily be able to detect this because we reboot the partition.
>> As far as this being a generic problem I half agree. It seems to depend
>> on your platform if you need something like this.
>>
>> With that said. I suggest we have a single platform specific function
>> that can be called. Possibly something like pm_power_off. It is
>> insanely important that we be able to audit all of the code on these
>> code paths, and that a random loadable driver not be able to get in
>> and mess things up.
>
> The panic() function has the panic_notifier_list for those cases where
> crash_kexec() does not find a crash kernel to exec.
>
> That leaves holes for watchdog-type events and crash_kexec().
> Can you elborate on the problem with running a non-blocking scan of
> the reboot_notifier_list in those situations?
>
> What do you have in mind as a platform specific function, that would
> be an improvement over the reboot_notifier_list?
In the general case it is WRONG to notify or run any function before
crash_kexec. The assumption is that the current kernel is BROKEN. So the
goal is to keep our exposure to kernel bugs to a minimum. There is currently
too _much_ code being run on the crash_kexec path.
In the crash_kexec case we can call functions on the other side of the
kexec notifier. So there is very much a hook there.
> My current (v2) proposed patch for using the reboot_notifier_list as
> this mechanism looks like this:
> (and I'm not sure if using atomic_notifier_call_chain() might be a better
> alternative to raw_notifier_call_chain())
I am willing to look at performing actions in the crash_kexec path
on a case by case basis. Which means essentially a hard coded function
call that compiles out on the hardware where it is meaningless.
As for emergency_restart. That is for those times when doing a proper
reboot doesn't work and you just want to rest the hardware.
So can we please start with what exactly you need to do on the xpc and
why?
Eric
next prev parent reply other threads:[~2008-06-20 18:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-18 22:03 [PATCH] X86: reboot-notify additions Cliff Wickman
2008-06-19 3:02 ` Andi Kleen
2008-06-19 11:02 ` Ingo Molnar
2008-06-19 14:54 ` Cliff Wickman
2008-06-19 21:50 ` Eric W. Biederman
2008-06-20 15:16 ` Cliff Wickman
2008-06-20 15:43 ` Ingo Molnar
2008-06-20 18:01 ` Eric W. Biederman [this message]
2008-06-20 19:18 ` Cliff Wickman
2008-06-20 21:33 ` Eric W. Biederman
2008-06-20 11:45 ` 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=m1wskkt281.fsf@frodo.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=andi@firstfloor.org \
--cc=cpw@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--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