On Thu, Apr 14, 2011 at 05:45:07PM +0200, Igor Mammedov wrote:
> Mouse stuck after restore of PV guest but buttons are
> in working condition.
> If driver has been configured for ABS coordinates at
> start it will get XENKBD_TYPE_POS events and then
> suddenly after restore it'll start getting
> XENKBD_TYPE_MOTION events, that will be dropped later
> and they won't get into user-space.
>
> Regression was introduced by hunk 5 and 6 of 5ea5254
> in upstream.
>
> Driver on restore should ask xen for request-abs-pointer
> again if it's available. So restore parts that did it
> before 5ea5254.
Olaf?
> ---
> drivers/input/xen-kbdfront.c | 14 +++++++++++++-
> 1 files changed, 13 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/input/xen-kbdfront.c b/drivers/input/xen-kbdfront.c
> index 53e6273..71e2fc5 100644
> --- a/drivers/input/xen-kbdfront.c
> +++ b/drivers/input/xen-kbdfront.c
> @@ -286,7 +286,7 @@ static void xenkbd_backend_changed(struct xenbus_device
> *dev,
> enum xenbus_state backend_state)
> {
> struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
> - int val;
> + int ret, val;
>
> switch (backend_state) {
> case XenbusStateInitialising:
> @@ -299,6 +299,18 @@ static void xenkbd_backend_changed(struct xenbus_device
> *dev,
>
> case XenbusStateInitWait:
> InitWait:
> + ret = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> + "feature-abs-pointer", "%d", &val);
> + if (ret < 0)
> + val = 0;
> + if (val) {
> + ret = xenbus_printf(XBT_NIL, info->xbdev->nodename,
> + "request-abs-pointer", "1");
> + if (ret)
> + printk(KERN_WARNING
> + "xenkbd: can't request abs-pointer");
Any reason for not using the pr_warning as it was before?
> + }
> +
> xenbus_switch_state(dev, XenbusStateConnected);
> break;
>
> --
> 1.7.1
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|