touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #07840
[Bug 1347776] Re: shutdown trigger on gpio_keys.X for armhf hardware
I tested the systemd package from proposed and it works as expected.
Below are the test results:
ubuntu@ubuntu:~$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
accountsservice apport apt apt-transport-https apt-utils base-files bsdutils
byobu cloud-init dbus dpkg file gcc-4.9-base gnupg gpgv grub-legacy-ec2
initramfs-tools initramfs-tools-bin language-selector-common
libaccountsservice0 libapt-inst1.5 libapt-pkg4.12 libblkid1
libboost-iostreams1.54.0 libc-bin libc6 libcgmanager0 libdbus-1-3 libgcc1
libjson-c2 libjson0 libmagic1 libmount1 libpam-systemd libssl1.0.0
libsystemd-daemon0 libsystemd-login0 libtasn1-6 libudev1 libuuid1 libxml2
mount multiarch-support net-tools openssl python3-apport python3-distupgrade
python3-gi python3-problem-report resolvconf systemd-services tzdata
ubuntu-release-upgrader-core udev upstart util-linux uuid-runtime
ubuntu@ubuntu:~$ cat /lib/udev/rules.d/70-power-switch.rules
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
ACTION=="remove", GOTO="power_switch_end"
SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch"
SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch"
SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="platform", KERNELS=="gpio_keys.12", ATTRS{keys}=="116", PROGRAM="/bin/cat /proc/device-tree/model", RESULT=="HP ProLiant m800 Server Cartridge", TAG+="power-switch"
LABEL="power_switch_end"
ubuntu@ubuntu:~$
</>hpiLO-> show node list
Slot ID Proc Manufacturer Architecture Memory Power Health
---- ----- ---------------------- -------------------- ------ ----- ------
3 c3n1 ************************************ 8 GB Off OK
3 c3n2 ************************************ 8 GB On OK
3 c3n3 ************************************ 8 GB Off OK
3 c3n4 ************************************ 8 GB On OK
hpiLO->
hpiLO-> set node power off shutdown c3n4
c3: #Cartridge 3
c3n4: #Node 4 Shutting node down gracefully
hpiLO->
ubuntu@ubuntu:~$
Broadcast message from root@ubuntu
(unknown) at 19:40 ...
The system is going down for power off NOW!
Connection to 192.168.17.25 closed by remote host.
Connection to 192.168.17.25 closed.
ubuntu@sm2:~$
hpiLO-> show node list
Slot ID Proc Manufacturer Architecture Memory Power Health
---- ----- ---------------------- -------------------- ------ ----- ------
3 c3n1 ************************************ 8 GB Off OK
3 c3n2 ************************************ 8 GB On OK
3 c3n3 ************************************ 8 GB Off OK
3 c3n4 ************************************ 8 GB Off OK
hpiLO->
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1347776
Title:
shutdown trigger on gpio_keys.X for armhf hardware
Status in “systemd” package in Ubuntu:
Fix Committed
Status in “systemd” source package in Trusty:
Fix Committed
Status in “systemd” source package in Utopic:
Fix Committed
Bug description:
Some ARM board uses GPIO gpio_key.12 for power control (key=116). The
proposed patch adds entry to logind's 70-power-switch.rules to
initiate soft shutdown of the cartridge from ilo.
Here is the udevadm output for /dev/input/event0
sudo udevadm info --query=all --name=/dev/input/event0 --attribute-
walk
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/soc.3/gpio_keys.12/input/input0/event0':
KERNEL=="event0"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/soc.3/gpio_keys.12/input/input0':
KERNELS=="input0"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="gpio_keys.12"
ATTRS{phys}=="gpio-keys/input0"
ATTRS{uniq}==""
ATTRS{properties}=="0"
looking at parent device '/devices/soc.3/gpio_keys.12':
KERNELS=="gpio_keys.12"
SUBSYSTEMS=="platform"
DRIVERS=="gpio-keys"
ATTRS{keys}=="116"
ATTRS{switches}==""
ATTRS{disabled_keys}==""
ATTRS{disabled_switches}==""
looking at parent device '/devices/soc.3':
KERNELS=="soc.3"
SUBSYSTEMS=="platform"
DRIVERS==""
Regarding the possibility of gpio_key.12 being used by other systems
to map to some other trigger, I put in the check that the gpio_key.12
is associated with power control (keys=116). '116' is supposedly linux
generic power control in DTS. There is no uniq idSystem or idVendor
for device /dev/input/event0 as you can see from udevadm output,
therefore I tried to use the best available combination as a safety
check. This patch will enable power control for any system vendor
(Other than the one the patch in intended for) that describes in DTS,
the trigger gpio_key.12 as power control (116).
SRU Request
==========
[Impact]
* User won't be able to initiate a soft shutdown from the chassis
manager.
[Test Case]
* To reproduce this bug, initiate a soft shutdown from the chassis manager, for example from ilo you could do
<ilo> set node power off shutdown <node number>
[Test Result]
== BEFORE PATCH ==
$ cat /lib/udev/rules.d/70-power-switch.rules
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
ACTION=="remove", GOTO="power_switch_end"
SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch"
SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch"
LABEL="power_switch_end"
$
</>hpiLO-> set node power off shutdown c3n2
c3: #Cartridge 3
c3n2: #Node 2 Shutting node down gracefully
hpiLO-> show node list
Slot ID Proc Manufacturer Architecture Memory Power Health
---- ----- ---------------------- -------------------- ------ ----- ------
3 c3n1 **** ARM Architecture 8 GB On OK
3 c3n2 **** ARM Architecture 8 GB On OK
3 c3n3 **** ARM Architecture 8 GB On OK
3 c3n4 **** ARM Architecture 8 GB Off OK
hpiLO->
== AFTER PATCH ==
hpiLO-> set node power off shutdown c3n1
c3: #Cartridge 3
c3n1: #Node 1 Shutting node down gracefully
hpiLO-> show node list
Slot ID Proc Manufacturer Architecture Memory Power Health
---- ----- ---------------------- -------------------- ------ ----- ------
3 c3n1 **** ARM Architecture 8 GB Off OK
3 c3n2 **** ARM Architecture 8 GB On OK
3 c3n3 **** ARM Architecture 8 GB On OK
3 c3n4 **** ARM Architecture 8 GB Off OK
hpiLO->
[Regression Potential]
None.
Note: Regarding the possibility of gpio_key.12 being used by other systems to map to some other trigger, I put in the check that the gpio_key.12 is associated with power control (keys=116). '116' is supposedly linux generic power control in DTS.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1347776/+subscriptions