From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41164) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aP62r-0004jM-9p for qemu-devel@nongnu.org; Fri, 29 Jan 2016 05:15:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aP60o-0007LJ-Tl for qemu-devel@nongnu.org; Fri, 29 Jan 2016 05:12:49 -0500 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:36704) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aP60n-0007Jq-FT for qemu-devel@nongnu.org; Fri, 29 Jan 2016 05:10:42 -0500 Received: by mail-wm0-x231.google.com with SMTP id p63so61384390wmp.1 for ; Fri, 29 Jan 2016 02:10:41 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <1454005340-15682-1-git-send-email-wei@redhat.com> References: <1454005340-15682-1-git-send-email-wei@redhat.com> Date: Fri, 29 Jan 2016 18:10:40 +0800 Message-ID: From: Shannon Zhao Content-Type: multipart/alternative; boundary=001a11441f64535f26052a763fa2 Subject: Re: [Qemu-devel] [PATCH 1/1] arm: virt: change GPIO trigger interrupt to pulse List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wei Huang Cc: "qemu-trivial@nongnu.org" , "peter.maydell@linaro.org" , "qemu-devel@nongnu.org" , "zhaoshenglong@huawei.com" --001a11441f64535f26052a763fa2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi=EF=BC=8C This makes ACPI work well but makes DT not work. The reason is systemd or acpid open /dev/input/event0 failed. So the interrupt could be injected and could see under /proc/interrupts but guest doesn't have any action. I'll investigate why it opens failed later. 2016=E5=B9=B41=E6=9C=8829=E6=97=A5=E6=98=9F=E6=9C=9F=E4=BA=94=EF=BC=8CWei H= uang =E5=86=99=E9=81=93=EF=BC=9A > When QEMU is hook'ed up with libvirt/virsh, the first ACPI reboot > request will succeed; but the following shutdown/reboot requests > fail to trigger VMs to react. Notice that in mach-virt machine > model GPIO is defined as edge-triggered and active-high in ACPI. > This patch changes the behavior of powerdown notifier from PULLUP > to PULSE. It solves the problem described above (i.e. reboot > continues to work). > > Signed-off-by: Wei Huang > > --- > hw/arm/virt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 05f9087..b5468a9 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -546,7 +546,7 @@ static DeviceState *pl061_dev; > static void virt_powerdown_req(Notifier *n, void *opaque) > { > /* use gpio Pin 3 for power button event */ > - qemu_set_irq(qdev_get_gpio_in(pl061_dev, 3), 1); > + qemu_irq_pulse(qdev_get_gpio_in(pl061_dev, 3)); > } > > static Notifier virt_system_powerdown_notifier =3D { > -- > 1.8.3.1 > > --001a11441f64535f26052a763fa2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi=EF=BC=8C

This makes ACPI work well but makes DT not w= ork. The reason is systemd or acpid=C2=A0open /dev/input/event0 failed. So = the interrupt could be injected and could see under /proc/interrupts but gu= est doesn't have any action. I'll investigate why it opens failed= =C2=A0later.

2016=E5=B9=B41=E6=9C=8829=E6=97=A5=E6=98= =9F=E6=9C=9F=E4=BA=94=EF=BC=8CWei Huang <wei@redhat.com> =E5=86=99=E9=81=93=EF=BC=9A
When QEMU is hook'ed up with libvirt/virsh, the first ACP= I reboot
request will succeed; but the following shutdown/reboot requests
fail to trigger VMs to react. Notice that in mach-virt machine
model GPIO is defined as edge-triggered and active-high in ACPI.
This patch changes the behavior of powerdown notifier from PULLUP
to PULSE. It solves the problem described above (i.e. reboot
continues to work).

Signed-off-by: Wei Huang <wei@redhat.com>
---
=C2=A0hw/arm/virt.c | 2 +-
=C2=A01 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 05f9087..b5468a9 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -546,7 +546,7 @@ static DeviceState *pl061_dev;
=C2=A0static void virt_powerdown_req(Notifier *n, void *opaque)
=C2=A0{
=C2=A0 =C2=A0 =C2=A0/* use gpio Pin 3 for power button event */
-=C2=A0 =C2=A0 qemu_set_irq(qdev_get_gpio_in(pl061_dev, 3), 1);
+=C2=A0 =C2=A0 qemu_irq_pulse(qdev_get_gpio_in(pl061_dev, 3));
=C2=A0}

=C2=A0static Notifier virt_system_powerdown_notifier =3D {
--
1.8.3.1

--001a11441f64535f26052a763fa2--