Input: xen-kbdfront - fix mouse getting stuck after save/restore
Mouse gets "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
5ea5254aa0ad269cfbd2875c973ef25ab5b5e9db
("Input: xen-kbdfront - advertise either absolute or relative
coordinates").
Driver on restore should ask xen for request-abs-pointer again if it is
available. So restore parts that did it before 5ea5254.
Acked-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
[v1: Expanded the commit description]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
committed by
Dmitry Torokhov
parent
80b4895aa4
commit
c36b58e8a9
@ -303,7 +303,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:
|
||||
@ -316,6 +316,17 @@ 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)
|
||||
pr_warning("xenkbd: can't request abs-pointer");
|
||||
}
|
||||
|
||||
xenbus_switch_state(dev, XenbusStateConnected);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user