Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1621041 > unrolled thread

[PATCH v2 0/2] xen,input: xen-kbdfront pointing device resolution support

Started byJuergen Gross <jgross@suse.com>
First post2017-04-11 11:00 +0200
Last post2017-04-11 11:20 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2 0/2] xen,input: xen-kbdfront pointing device resolution support Juergen Gross <jgross@suse.com> - 2017-04-11 11:00 +0200
    [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore Juergen Gross <jgross@suse.com> - 2017-04-11 11:00 +0200
      Re: [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting  via xenstore Oleksandr Andrushchenko <andr2000@gmail.com> - 2017-04-11 11:10 +0200
        Re: [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting  via xenstore Juergen Gross <jgross@suse.com> - 2017-04-11 11:20 +0200

#1621041 — [PATCH v2 0/2] xen,input: xen-kbdfront pointing device resolution support

FromJuergen Gross <jgross@suse.com>
Date2017-04-11 11:00 +0200
Subject[PATCH v2 0/2] xen,input: xen-kbdfront pointing device resolution support
Message-ID<tuZOy-4F4-9@gated-at.bofh.it>
As my patch tying the resolution of the xen pointing device to that of
the framebuffer wasn't accepted add support for different resolutions
via a module parameter.

Another possibility would be to set parameters via Xenstore, but this
is broken (patch 2 fixes that) and not yet supported by Xen tools.

V2: patch 1: make resolution changes via xenstore visible in sysfs

Juergen Gross (2):
  xen,input: add xen-kbdfront module parameter for setting resolution
  xen,input: repair xen-kbdfront resolution setting via xenstore

 drivers/input/misc/xen-kbdfront.c | 50 ++++++++++++++++++++++++++-------------
 1 file changed, 34 insertions(+), 16 deletions(-)

-- 
2.12.0

[toc] | [next] | [standalone]


#1621044 — [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore

FromJuergen Gross <jgross@suse.com>
Date2017-04-11 11:00 +0200
Subject[PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore
Message-ID<tuZOz-4F4-31@gated-at.bofh.it>
In reply to#1621041
Setting the pointing device resolution via Xenstore isn't working
reliably: in case XenbusStateInitWait has been missed the resolution
settings won't be read. Correct this.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
---
 drivers/input/misc/xen-kbdfront.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/input/misc/xen-kbdfront.c b/drivers/input/misc/xen-kbdfront.c
index 90e7981a7768..fc28f59dfa93 100644
--- a/drivers/input/misc/xen-kbdfront.c
+++ b/drivers/input/misc/xen-kbdfront.c
@@ -312,11 +312,27 @@ static void xenkbd_disconnect_backend(struct xenkbd_info *info)
 	info->gref = -1;
 }
 
+static void xenkbd_set_connected(struct xenbus_device *dev)
+{
+	struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
+	int ret;
+
+	if (xenbus_read_unsigned(info->xbdev->otherend,
+				 "feature-abs-pointer", 0)) {
+		ret = xenbus_write(XBT_NIL, info->xbdev->nodename,
+				   "request-abs-pointer", "1");
+		if (ret)
+			pr_warn("xenkbd: can't request abs-pointer");
+	}
+
+	xenbus_switch_state(dev, XenbusStateConnected);
+}
+
 static void xenkbd_backend_changed(struct xenbus_device *dev,
 				   enum xenbus_state backend_state)
 {
 	struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
-	int ret, val;
+	int val;
 
 	switch (backend_state) {
 	case XenbusStateInitialising:
@@ -327,16 +343,7 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,
 		break;
 
 	case XenbusStateInitWait:
-InitWait:
-		if (xenbus_read_unsigned(info->xbdev->otherend,
-					 "feature-abs-pointer", 0)) {
-			ret = xenbus_write(XBT_NIL, info->xbdev->nodename,
-					   "request-abs-pointer", "1");
-			if (ret)
-				pr_warning("xenkbd: can't request abs-pointer");
-		}
-
-		xenbus_switch_state(dev, XenbusStateConnected);
+		xenkbd_set_connected(dev);
 		break;
 
 	case XenbusStateConnected:
@@ -346,7 +353,8 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,
 		 * get Connected twice here.
 		 */
 		if (dev->state != XenbusStateConnected)
-			goto InitWait; /* no InitWait seen yet, fudge it */
+			/* No InitWait seen yet, fudge it. */
+			xenkbd_set_connected(dev);
 
 		/* Set input abs params to match backend screen res */
 		if (xenbus_scanf(XBT_NIL, info->xbdev->otherend,
-- 
2.12.0

[toc] | [prev] | [next] | [standalone]


#1621051 — Re: [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore

FromOleksandr Andrushchenko <andr2000@gmail.com>
Date2017-04-11 11:10 +0200
SubjectRe: [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore
Message-ID<tuZYe-4Xn-19@gated-at.bofh.it>
In reply to#1621044
Hi, Juergen,

could you please make one more patch in the series:

the code that you fix in this patch is ok, but most

of the functionality of the xenkbd_set_connected

is still useless: feature-abs-pointer/request-abs-pointer

negotiation has only meaning at probe time, when we are

configuring input device:

     if (abs) {
         __set_bit(EV_ABS, ptr->evbit);
         input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0);
         input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0);
     } else {
         input_set_capability(ptr, EV_REL, REL_X);
         input_set_capability(ptr, EV_REL, REL_Y);
     }
Once the input device is configured and registered (probe done)

we do not touch/re-configure that input device anymore,

regardless of the setting negotiation at xenkbd_set_connected

time. Thus, this code is not needed and can be cleaned out.

What your patch actually fixes is the fact that

"xenbus_switch_state(dev, XenbusStateConnected);" was not called,

so this is the only line needed.

Thank you,

Oleksandr


On 04/11/2017 11:50 AM, Juergen Gross wrote:
> Setting the pointing device resolution via Xenstore isn't working
> reliably: in case XenbusStateInitWait has been missed the resolution
> settings won't be read. Correct this.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> ---
>   drivers/input/misc/xen-kbdfront.c | 32 ++++++++++++++++++++------------
>   1 file changed, 20 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/input/misc/xen-kbdfront.c b/drivers/input/misc/xen-kbdfront.c
> index 90e7981a7768..fc28f59dfa93 100644
> --- a/drivers/input/misc/xen-kbdfront.c
> +++ b/drivers/input/misc/xen-kbdfront.c
> @@ -312,11 +312,27 @@ static void xenkbd_disconnect_backend(struct xenkbd_info *info)
>   	info->gref = -1;
>   }
>   
> +static void xenkbd_set_connected(struct xenbus_device *dev)
> +{
> +	struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
> +	int ret;
> +
> +	if (xenbus_read_unsigned(info->xbdev->otherend,
> +				 "feature-abs-pointer", 0)) {
> +		ret = xenbus_write(XBT_NIL, info->xbdev->nodename,
> +				   "request-abs-pointer", "1");
> +		if (ret)
> +			pr_warn("xenkbd: can't request abs-pointer");
> +	}
> +
> +	xenbus_switch_state(dev, XenbusStateConnected);
> +}
> +
>   static void xenkbd_backend_changed(struct xenbus_device *dev,
>   				   enum xenbus_state backend_state)
>   {
>   	struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
> -	int ret, val;
> +	int val;
>   
>   	switch (backend_state) {
>   	case XenbusStateInitialising:
> @@ -327,16 +343,7 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,
>   		break;
>   
>   	case XenbusStateInitWait:
> -InitWait:
> -		if (xenbus_read_unsigned(info->xbdev->otherend,
> -					 "feature-abs-pointer", 0)) {
> -			ret = xenbus_write(XBT_NIL, info->xbdev->nodename,
> -					   "request-abs-pointer", "1");
> -			if (ret)
> -				pr_warning("xenkbd: can't request abs-pointer");
> -		}
> -
> -		xenbus_switch_state(dev, XenbusStateConnected);
> +		xenkbd_set_connected(dev);
>   		break;
>   
>   	case XenbusStateConnected:
> @@ -346,7 +353,8 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,
>   		 * get Connected twice here.
>   		 */
>   		if (dev->state != XenbusStateConnected)
> -			goto InitWait; /* no InitWait seen yet, fudge it */
> +			/* No InitWait seen yet, fudge it. */
> +			xenkbd_set_connected(dev);
>   
>   		/* Set input abs params to match backend screen res */
>   		if (xenbus_scanf(XBT_NIL, info->xbdev->otherend,

[toc] | [prev] | [next] | [standalone]


#1621069 — Re: [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore

FromJuergen Gross <jgross@suse.com>
Date2017-04-11 11:20 +0200
SubjectRe: [PATCH v2 2/2] xen,input: repair xen-kbdfront resolution setting via xenstore
Message-ID<tv07V-50R-43@gated-at.bofh.it>
In reply to#1621051
On 11/04/17 11:00, Oleksandr Andrushchenko wrote:
> Hi, Juergen,
> 
> could you please make one more patch in the series:
> 
> the code that you fix in this patch is ok, but most
> 
> of the functionality of the xenkbd_set_connected
> 
> is still useless: feature-abs-pointer/request-abs-pointer
> 
> negotiation has only meaning at probe time, when we are
> 
> configuring input device:
> 
>     if (abs) {
>         __set_bit(EV_ABS, ptr->evbit);
>         input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0);
>         input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0);
>     } else {
>         input_set_capability(ptr, EV_REL, REL_X);
>         input_set_capability(ptr, EV_REL, REL_Y);
>     }
> Once the input device is configured and registered (probe done)
> 
> we do not touch/re-configure that input device anymore,
> 
> regardless of the setting negotiation at xenkbd_set_connected
> 
> time. Thus, this code is not needed and can be cleaned out.
> 
> What your patch actually fixes is the fact that
> 
> "xenbus_switch_state(dev, XenbusStateConnected);" was not called,
> 
> so this is the only line needed.

This makes sense.

I'll modify patch2 according to your suggestion instead of adding
another patch removing most of the stuff added by patch 2.


Juergen

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web