From: shannon.zhao@linaro.org (Shannon Zhao)
To: linux-arm-kernel@lists.infradead.org
Subject: [Discussion] how to implement external power down for ARM
Date: Mon, 04 May 2015 10:09:04 +0800 [thread overview]
Message-ID: <5546D4C0.5090105@linaro.org> (raw)
In-Reply-To: <10771707.5UNQMOWJlc@wuerfel>
On 2015/4/30 17:56, Arnd Bergmann wrote:
> On Thursday 30 April 2015 10:29:53 Mark Rutland wrote:
>> On Thu, Apr 30, 2015 at 10:08:05AM +0100, Peter Maydell wrote:
>>> On 30 April 2015 at 09:03, Arnd Bergmann <arnd@arndb.de> wrote:
>>>> On Thursday 30 April 2015 09:03:22 Shannon Zhao wrote:
>>>>>
>>>>> I am looking at adding support for external power down and reboot to
>>>>> ARM VMs. With ACPI this is fairly straight forward and requires only
>>>>> adding a GPIO controller to the virt machine model and extending ACPI
>>>>> appropriately (see code here [1]). In addition Linaro LEG also have
>>>>> done a test that uses GPIO as power button to shutdown OS on fast model
>>>>> (see detail here [2]).
>>>>>
>>>>> However, we would like for this to work in systems that do not use
>>>>> ACPI as well. Adding a GPIO controller will still work, but we would
>>>>> need a generic way to tell Linux how to handle the GPIO events without
>>>>> adding any board-specific code to the VIRT platform. And what guest
>>>>> kernel driver do we need? Do we need another user-level daemon like acpid?
>>>>>
>>>>> Note that external shutdown can also be accomplished using the qemu
>>>>> guest agent [3], but maybe this is not a sufficiently stable approach.
>>>>>
>>>>> Any input on the approach to take here is very welcome.
>>>>
>>>> I would expect drivers/power/reset/gpio-poweroff.c to work in an identical
>>>> way with ACPI and DT, once you have added an ACPI binding for it.
>>>
>>> Looking at Documentation/devicetree/bindings/gpio/gpio-poweroff.txt
>>> that appears to be for "let the guest kernel turn off the system
>>> from the inside by toggling a GPIO line". What we want is the
>>> opposite: the external system (QEMU, in this case) toggles a GPIO
>>> line in order to request the guest kernel to do a clean shutdown
>>> or reboot. Or have I misunderstood what gpio-poweroff can do?
>>
>> No, you're correct.
>>
>> There are a few "power button" bindings around, but it looks like they
>> all rely on platform details and aren't that generic.
>>
>> With ACPI what events may be singalled? Just power off, or reset, etc?
>>
>> Which of these do we need to be able to handle with DT?
>
> Actually, there are at least three different ways to do this:
>
> a) have an input device send the KEY_POWEROFF or KEY_REBOOT events to
> user space, and have some process (e.g. desktop environment, or daemon)
About this daemon, do we need a doc or spec to standardize it?
> handle the event by doing an appropriate action. This seems to be
> what ACPI does on x86, and a lot of device tree based systems do
> the same thing using gpio-keys.
>
Yeah, it seems like ACPI.
> b) Have a special driver that calls orderly_poweroff or orderly_reboot.
> Only PowerPC (OPAL) uses the orderly_reboot() here, but a few platforms
> (Xen, fsl_hypervisor, and some sparc and powerpc machines) as well
> as some device drivers (thermal management etc) call this as well.
> The effect is to call a user-configured binary (/sbin/reboot and
> /sbin/poweroff by default).
>
This looks good which reuses existing user space process.
> c) call ctrl_alt_del(): a bunch of platforms do this, and user space
> has to configure whether this immediately calls kernel_restart(),
> or sends SIGINT to the init process, which can then do an orderly
> reboot. Again, highbank does this as the reboot action, but very
> few other systems seem to do it, aside from the vt keyboard driver
> that is used on all machines that have normal keyboard.
>
This only supports reboot, but we also need poweroff.
> Arnd
>
--
Shannon
next prev parent reply other threads:[~2015-05-04 2:09 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-30 1:03 [Discussion] how to implement external power down for ARM Shannon Zhao
2015-04-30 8:03 ` Arnd Bergmann
2015-04-30 9:08 ` Peter Maydell
2015-04-30 9:19 ` Arnd Bergmann
2015-04-30 9:29 ` Mark Rutland
2015-04-30 9:56 ` Arnd Bergmann
2015-05-04 2:09 ` Shannon Zhao [this message]
2015-05-04 15:49 ` Arnd Bergmann
2015-05-05 2:57 ` Joel Stanley
2015-05-05 9:53 ` Arnd Bergmann
2015-05-05 10:51 ` Christoffer Dall
2015-05-05 10:55 ` Arnd Bergmann
2015-05-05 11:13 ` Shannon Zhao
2015-05-06 6:56 ` Shannon Zhao
2015-05-06 7:29 ` Arnd Bergmann
2015-05-06 8:19 ` Shannon Zhao
2015-05-06 8:37 ` Arnd Bergmann
2015-05-06 8:41 ` Shannon Zhao
2015-05-06 10:14 ` Christoffer Dall
2015-05-07 2:39 ` Shannon Zhao
2015-05-07 8:55 ` Arnd Bergmann
2015-05-07 9:18 ` Shannon Zhao
2015-05-07 9:43 ` Arnd Bergmann
2015-05-07 12:10 ` Shannon Zhao
2015-05-07 12:12 ` Peter Maydell
2015-05-07 12:18 ` Shannon Zhao
2015-05-07 12:34 ` Peter Maydell
2015-05-07 12:48 ` Arnd Bergmann
2015-05-07 13:02 ` Shannon Zhao
2015-04-30 13:38 ` Hanjun Guo
2015-05-04 1:55 ` Shannon Zhao
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=5546D4C0.5090105@linaro.org \
--to=shannon.zhao@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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).