All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes.
@ 2016-04-11 10:29 Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 1/5] virtio-input: add missing key mappings Gerd Hoffmann
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 10:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

  Hi,

Here comes a virtio-input update, with a bugfix collection from Ladi
Prosek and live migration support.

please pull,
  Gerd

The following changes since commit 9628af036fade986dcc94f4484bc75c6b1a06d84:

  Merge remote-tracking branch 'remotes/lalrae/tags/mips-20160408' into staging (2016-04-08 13:45:52 +0100)

are available in the git repository at:


  git://git.kraxel.org/qemu tags/pull-input-20160411-1

for you to fetch changes up to e2392a72e88104272f3986f0846e4f2f45453b26:

  virtio-input: fix emulated tablet axis ranges (2016-04-11 11:45:11 +0200)

----------------------------------------------------------------
virtio-input; live migration support, various bugfixes.

----------------------------------------------------------------
Gerd Hoffmann (1):
      virtio-input: add live migration support

Ladi Prosek (4):
      virtio-input: add missing key mappings
      virtio-input: retrieve EV_LED host config bits
      virtio-input: implement pass-through evdev writes
      virtio-input: fix emulated tablet axis ranges

 hw/input/virtio-input-hid.c  |  6 ++++--
 hw/input/virtio-input-host.c | 24 ++++++++++++++++++++++++
 hw/input/virtio-input.c      | 40 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 68 insertions(+), 2 deletions(-)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 1/5] virtio-input: add missing key mappings
  2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
@ 2016-04-11 10:29 ` Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 2/5] virtio-input: retrieve EV_LED host config bits Gerd Hoffmann
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 10:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Ladi Prosek, Gerd Hoffmann, Michael S. Tsirkin

From: Ladi Prosek <lprosek@redhat.com>

KEY_PAUSE is flat out missing. KEY_SYSRQ already has a keycode
assigned but it's not what I'm seeing on my system. The mapping
doesn't appear to have to be unique so both keycodes now map to
KEY_SYSRQ which is what the "Keyboard PrintScreen", HID usage ID
0x46, translates to.

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Message-id: 1459343240-19483-1-git-send-email-lprosek@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/input/virtio-input-hid.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index 5d12157..fe6d37f 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -121,6 +121,8 @@ static const unsigned int keymap_qcode[Q_KEY_CODE__MAX] = {
 
     [Q_KEY_CODE_CTRL_R]              = KEY_RIGHTCTRL,
     [Q_KEY_CODE_SYSRQ]               = KEY_SYSRQ,
+    [Q_KEY_CODE_PRINT]               = KEY_SYSRQ,
+    [Q_KEY_CODE_PAUSE]               = KEY_PAUSE,
     [Q_KEY_CODE_ALT_R]               = KEY_RIGHTALT,
 
     [Q_KEY_CODE_HOME]                = KEY_HOME,
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 2/5] virtio-input: retrieve EV_LED host config bits
  2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 1/5] virtio-input: add missing key mappings Gerd Hoffmann
@ 2016-04-11 10:29 ` Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 3/5] virtio-input: implement pass-through evdev writes Gerd Hoffmann
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 10:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Ladi Prosek, Gerd Hoffmann, Michael S. Tsirkin

From: Ladi Prosek <lprosek@redhat.com>

VIRTIO_INPUT_CFG_EV_BITS with subsel of EV_LED was always
returning an empty bitmap for pass-through input devices.

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Message-id: 1459418028-7473-1-git-send-email-lprosek@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/input/virtio-input-host.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/input/virtio-input-host.c b/hw/input/virtio-input-host.c
index 9e0f46d..97b7dd6 100644
--- a/hw/input/virtio-input-host.c
+++ b/hw/input/virtio-input-host.c
@@ -125,6 +125,7 @@ static void virtio_input_host_realize(DeviceState *dev, Error **errp)
     virtio_input_bits_config(vih, EV_ABS, ABS_CNT);
     virtio_input_bits_config(vih, EV_MSC, MSC_CNT);
     virtio_input_bits_config(vih, EV_SW,  SW_CNT);
+    virtio_input_bits_config(vih, EV_LED, LED_CNT);
 
     qemu_set_fd_handler(vih->fd, virtio_input_host_event, NULL, vih);
     return;
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 3/5] virtio-input: implement pass-through evdev writes
  2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 1/5] virtio-input: add missing key mappings Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 2/5] virtio-input: retrieve EV_LED host config bits Gerd Hoffmann
@ 2016-04-11 10:29 ` Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 4/5] virtio-input: add live migration support Gerd Hoffmann
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 10:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Ladi Prosek, Gerd Hoffmann, Michael S. Tsirkin

From: Ladi Prosek <lprosek@redhat.com>

The write path for pass-through devices, commonly used for controlling
keyboard LEDs via EV_LED, was not implemented. This commit adds the
necessary plumbing to connect the status virtio queue to the host evdev
file descriptor.

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Message-id: 1459511146-12060-1-git-send-email-lprosek@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/input/virtio-input-host.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/hw/input/virtio-input-host.c b/hw/input/virtio-input-host.c
index 97b7dd6..96124f4 100644
--- a/hw/input/virtio-input-host.c
+++ b/hw/input/virtio-input-host.c
@@ -146,6 +146,28 @@ static void virtio_input_host_unrealize(DeviceState *dev, Error **errp)
     }
 }
 
+static void virtio_input_host_handle_status(VirtIOInput *vinput,
+                                            virtio_input_event *event)
+{
+    VirtIOInputHost *vih = VIRTIO_INPUT_HOST(vinput);
+    struct input_event evdev;
+    int rc;
+
+    if (gettimeofday(&evdev.time, NULL)) {
+        perror("virtio_input_host_handle_status: gettimeofday");
+        return;
+    }
+
+    evdev.type = le16_to_cpu(event->type);
+    evdev.code = le16_to_cpu(event->code);
+    evdev.value = le32_to_cpu(event->value);
+
+    rc = write(vih->fd, &evdev, sizeof(evdev));
+    if (rc == -1) {
+        perror("virtio_input_host_handle_status: write");
+    }
+}
+
 static const VMStateDescription vmstate_virtio_input_host = {
     .name = "virtio-input-host",
     .unmigratable = 1,
@@ -165,6 +187,7 @@ static void virtio_input_host_class_init(ObjectClass *klass, void *data)
     dc->props          = virtio_input_host_properties;
     vic->realize       = virtio_input_host_realize;
     vic->unrealize     = virtio_input_host_unrealize;
+    vic->handle_status = virtio_input_host_handle_status;
 }
 
 static void virtio_input_host_init(Object *obj)
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 4/5] virtio-input: add live migration support
  2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
                   ` (2 preceding siblings ...)
  2016-04-11 10:29 ` [Qemu-devel] [PULL 3/5] virtio-input: implement pass-through evdev writes Gerd Hoffmann
@ 2016-04-11 10:29 ` Gerd Hoffmann
  2016-04-11 10:29 ` [Qemu-devel] [PULL 5/5] virtio-input: fix emulated tablet axis ranges Gerd Hoffmann
  2016-04-11 12:30 ` [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Peter Maydell
  5 siblings, 0 replies; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 10:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann, Michael S. Tsirkin

virtio-input is simple enough that it doesn't need to xfer any state.
Still we have to wire up savevm manually, so the generic pci and virtio
are saved correctly.

Additionally we need to do some post-load processing to figure whenever
the guest uses the device or not, so we can give input routing hints to
the qemu input layer using qemu_input_handler_{activate,deactivate}.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 1459859501-16965-1-git-send-email-kraxel@redhat.com
---
 hw/input/virtio-input.c | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c
index 672c207..ac019c7 100644
--- a/hw/input/virtio-input.c
+++ b/hw/input/virtio-input.c
@@ -14,6 +14,8 @@
 
 #include "standard-headers/linux/input.h"
 
+#define VIRTIO_INPUT_VM_VERSION 1
+
 /* ----------------------------------------------------------------- */
 
 void virtio_input_send(VirtIOInput *vinput, virtio_input_event *event)
@@ -214,6 +216,38 @@ static void virtio_input_reset(VirtIODevice *vdev)
     }
 }
 
+static void virtio_input_save(QEMUFile *f, void *opaque)
+{
+    VirtIOInput *vinput = opaque;
+    VirtIODevice *vdev = VIRTIO_DEVICE(vinput);
+
+    virtio_save(vdev, f);
+}
+
+static int virtio_input_load(QEMUFile *f, void *opaque, int version_id)
+{
+    VirtIOInput *vinput = opaque;
+    VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(vinput);
+    VirtIODevice *vdev = VIRTIO_DEVICE(vinput);
+    int ret;
+
+    if (version_id != VIRTIO_INPUT_VM_VERSION) {
+        return -EINVAL;
+    }
+
+    ret = virtio_load(vdev, f, version_id);
+    if (ret) {
+        return ret;
+    }
+
+    /* post_load() */
+    vinput->active = vdev->status & VIRTIO_CONFIG_S_DRIVER_OK;
+    if (vic->change_active) {
+        vic->change_active(vinput);
+    }
+    return 0;
+}
+
 static void virtio_input_device_realize(DeviceState *dev, Error **errp)
 {
     VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(dev);
@@ -245,14 +279,20 @@ static void virtio_input_device_realize(DeviceState *dev, Error **errp)
                 vinput->cfg_size);
     vinput->evt = virtio_add_queue(vdev, 64, virtio_input_handle_evt);
     vinput->sts = virtio_add_queue(vdev, 64, virtio_input_handle_sts);
+
+    register_savevm(dev, "virtio-input", -1, VIRTIO_INPUT_VM_VERSION,
+                    virtio_input_save, virtio_input_load, vinput);
 }
 
 static void virtio_input_device_unrealize(DeviceState *dev, Error **errp)
 {
     VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(dev);
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
+    VirtIOInput *vinput = VIRTIO_INPUT(dev);
     Error *local_err = NULL;
 
+    unregister_savevm(dev, "virtio-input", vinput);
+
     if (vic->unrealize) {
         vic->unrealize(dev, &local_err);
         if (local_err) {
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 5/5] virtio-input: fix emulated tablet axis ranges
  2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
                   ` (3 preceding siblings ...)
  2016-04-11 10:29 ` [Qemu-devel] [PULL 4/5] virtio-input: add live migration support Gerd Hoffmann
@ 2016-04-11 10:29 ` Gerd Hoffmann
  2016-04-11 12:30 ` [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Peter Maydell
  5 siblings, 0 replies; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 10:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: Ladi Prosek, Gerd Hoffmann, Michael S. Tsirkin

From: Ladi Prosek <lprosek@redhat.com>

The reported maximum was wrong. The X and Y coordinates are 0-based
so if size is 8000 maximum must be 7FFF.

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Message-id: 1460128893-10244-1-git-send-email-lprosek@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/input/virtio-input-hid.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index fe6d37f..3ee0c18 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -484,12 +484,12 @@ static struct virtio_input_config virtio_tablet_config[] = {
         .select    = VIRTIO_INPUT_CFG_ABS_INFO,
         .subsel    = ABS_X,
         .size      = sizeof(virtio_input_absinfo),
-        .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE),
+        .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
     },{
         .select    = VIRTIO_INPUT_CFG_ABS_INFO,
         .subsel    = ABS_Y,
         .size      = sizeof(virtio_input_absinfo),
-        .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE),
+        .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
     },
     { /* end of list */ },
 };
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes.
  2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
                   ` (4 preceding siblings ...)
  2016-04-11 10:29 ` [Qemu-devel] [PULL 5/5] virtio-input: fix emulated tablet axis ranges Gerd Hoffmann
@ 2016-04-11 12:30 ` Peter Maydell
  2016-04-11 15:12   ` Gerd Hoffmann
  5 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2016-04-11 12:30 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: QEMU Developers

On 11 April 2016 at 11:29, Gerd Hoffmann <kraxel@redhat.com> wrote:
>   Hi,
>
> Here comes a virtio-input update, with a bugfix collection from Ladi
> Prosek and live migration support.
>
> please pull,
>   Gerd
>
> The following changes since commit 9628af036fade986dcc94f4484bc75c6b1a06d84:
>
>   Merge remote-tracking branch 'remotes/lalrae/tags/mips-20160408' into staging (2016-04-08 13:45:52 +0100)
>
> are available in the git repository at:
>
>
>   git://git.kraxel.org/qemu tags/pull-input-20160411-1
>
> for you to fetch changes up to e2392a72e88104272f3986f0846e4f2f45453b26:
>
>   virtio-input: fix emulated tablet axis ranges (2016-04-11 11:45:11 +0200)
>
> ----------------------------------------------------------------
> virtio-input; live migration support, various bugfixes.

Hi. I'm afraid this doesn't compile on ppc64be:

/home/pm215/qemu/hw/input/virtio-input-hid.c:487:9: error: suggest
parentheses around ‘-’ in operand of ‘&’ [-Werror=parentheses]
         .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
         ^
/home/pm215/qemu/hw/input/virtio-input-hid.c:492:9: error: suggest
parentheses around ‘-’ in operand of ‘&’ [-Werror=parentheses]
         .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
         ^

It looks like the const_le32() and const_le16() macros in
include/hw/virtio/virtio-input.h are missing brackets around the macro
argument -- can you send a patch which adds the missing brackets, please?

(Side question, why is an apparently generic endianness support
macro implemented in virtio-input.h ?)

thanks
-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes.
  2016-04-11 12:30 ` [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Peter Maydell
@ 2016-04-11 15:12   ` Gerd Hoffmann
  2016-04-11 15:17     ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Gerd Hoffmann @ 2016-04-11 15:12 UTC (permalink / raw)
  To: Peter Maydell; +Cc: QEMU Developers

> Hi. I'm afraid this doesn't compile on ppc64be:
> 
> /home/pm215/qemu/hw/input/virtio-input-hid.c:487:9: error: suggest
> parentheses around ‘-’ in operand of ‘&’ [-Werror=parentheses]
>          .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
>          ^
> /home/pm215/qemu/hw/input/virtio-input-hid.c:492:9: error: suggest
> parentheses around ‘-’ in operand of ‘&’ [-Werror=parentheses]
>          .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
>          ^
> 
> It looks like the const_le32() and const_le16() macros in
> include/hw/virtio/virtio-input.h are missing brackets around the macro
> argument

Indeed.  /me needs a be machine.

>  -- can you send a patch which adds the missing brackets, please?

Sure.

> (Side question, why is an apparently generic endianness support
> macro implemented in virtio-input.h ?)

Suggestions for a better place?  Looks like there isn't something like
byteorder.h ...

cheers,
  Gerd

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes.
  2016-04-11 15:12   ` Gerd Hoffmann
@ 2016-04-11 15:17     ` Peter Maydell
  0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2016-04-11 15:17 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: QEMU Developers

On 11 April 2016 at 16:12, Gerd Hoffmann <kraxel@redhat.com> wrote:
>> Hi. I'm afraid this doesn't compile on ppc64be:
>>
>> /home/pm215/qemu/hw/input/virtio-input-hid.c:487:9: error: suggest
>> parentheses around ‘-’ in operand of ‘&’ [-Werror=parentheses]
>>          .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
>>          ^
>> /home/pm215/qemu/hw/input/virtio-input-hid.c:492:9: error: suggest
>> parentheses around ‘-’ in operand of ‘&’ [-Werror=parentheses]
>>          .u.abs.max = const_le32(INPUT_EVENT_ABS_SIZE - 1),
>>          ^
>>
>> It looks like the const_le32() and const_le16() macros in
>> include/hw/virtio/virtio-input.h are missing brackets around the macro
>> argument
>
> Indeed.  /me needs a be machine.

If you have access to the gcc compile farm, there's a ppc64be
box in it.

> Suggestions for a better place?  Looks like there isn't something like
> byteorder.h ...

include/qemu/bswap.h.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-04-11 15:17 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-11 10:29 [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Gerd Hoffmann
2016-04-11 10:29 ` [Qemu-devel] [PULL 1/5] virtio-input: add missing key mappings Gerd Hoffmann
2016-04-11 10:29 ` [Qemu-devel] [PULL 2/5] virtio-input: retrieve EV_LED host config bits Gerd Hoffmann
2016-04-11 10:29 ` [Qemu-devel] [PULL 3/5] virtio-input: implement pass-through evdev writes Gerd Hoffmann
2016-04-11 10:29 ` [Qemu-devel] [PULL 4/5] virtio-input: add live migration support Gerd Hoffmann
2016-04-11 10:29 ` [Qemu-devel] [PULL 5/5] virtio-input: fix emulated tablet axis ranges Gerd Hoffmann
2016-04-11 12:30 ` [Qemu-devel] [PULL 0/5] virtio-input; live migration support, various bugfixes Peter Maydell
2016-04-11 15:12   ` Gerd Hoffmann
2016-04-11 15:17     ` Peter Maydell

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.