xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xen: allow 8bit input in Xen serial console
@ 2015-07-28 17:02 Manfred Haertel
  2015-07-28 17:20 ` Andrew Cooper
  0 siblings, 1 reply; 2+ messages in thread
From: Manfred Haertel @ 2015-07-28 17:02 UTC (permalink / raw)
  To: Xen-devel

The Xen serial console cuts off the most significant bit from input 
characters, so you can't use e.g. German umlauts when logging in to the 
DOM0 Linux system from the serial console.

The following patch fixes that problem.

--- xen/drivers/char/serial.c.orig	2015-07-28 18:44:49.443889719 +0200
+++ xen/drivers/char/serial.c	2015-07-28 18:47:10.593728590 +0200
@@ -66,7 +66,7 @@
      spin_unlock_irqrestore(&port->rx_lock, flags);

      if ( fn != NULL )
-        (*fn)(c & 0x7f, regs);
+        (*fn)(c, regs);
  }

  void serial_tx_interrupt(struct serial_port *port, struct 
cpu_user_regs *regs)
@@ -297,7 +297,11 @@
      } while ( ((handle & SERHND_LO) &&  (c & 0x80)) ||
                ((handle & SERHND_HI) && !(c & 0x80)) );

-    return c & 0x7f;
+    if (handle & SERHND_HI)
+    {
+        c &= 0x7f;
+    }
+    return c;
  }

  int __init serial_parse_handle(char *conf)

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

* Re: [PATCH] xen: allow 8bit input in Xen serial console
  2015-07-28 17:02 [PATCH] xen: allow 8bit input in Xen serial console Manfred Haertel
@ 2015-07-28 17:20 ` Andrew Cooper
  0 siblings, 0 replies; 2+ messages in thread
From: Andrew Cooper @ 2015-07-28 17:20 UTC (permalink / raw)
  To: Manfred Haertel, Xen-devel

On 28/07/15 18:02, Manfred Haertel wrote:
> The Xen serial console cuts off the most significant bit from input
> characters, so you can't use e.g. German umlauts when logging in to
> the DOM0 Linux system from the serial console.
>
> The following patch fixes that problem.

Thanks for the submission.  However, please sign your patch off, per

http://wiki.xen.org/wiki/Submitting_Xen_Project_Patches#Signing_off_a_patch

>
> --- xen/drivers/char/serial.c.orig    2015-07-28 18:44:49.443889719 +0200
> +++ xen/drivers/char/serial.c    2015-07-28 18:47:10.593728590 +0200
> @@ -66,7 +66,7 @@
>      spin_unlock_irqrestore(&port->rx_lock, flags);
>
>      if ( fn != NULL )
> -        (*fn)(c & 0x7f, regs);
> +        (*fn)(c, regs);
>  }
>
>  void serial_tx_interrupt(struct serial_port *port, struct
> cpu_user_regs *regs)
> @@ -297,7 +297,11 @@
>      } while ( ((handle & SERHND_LO) &&  (c & 0x80)) ||
>                ((handle & SERHND_HI) && !(c & 0x80)) );
>
> -    return c & 0x7f;
> +    if (handle & SERHND_HI)

Please read CODING_STYLE in the root of the tree, but to summarise here,
spaces inside the first level of brackes, so "if ( handle & SERHND_HI
)", and no braces for single statements.

> +    {
> +        c &= 0x7f;
> +    }
> +    return c;

I think in both cases you need to mask out the top bit if either
SERHND_HI or SERHND_LO is set, and leave all 8 bits alone if neither are
set. 

Both of these are opt-in with command line options, so the default
configuration in most cases pass 8-bit characters unmodified.  You
probably also want to patch docs/misc/xen-command-line.markdown to
indicate that choosing the 'H' or 'L' option will prevent the use of
8-bit characters.

~Andrew

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

end of thread, other threads:[~2015-07-28 17:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-28 17:02 [PATCH] xen: allow 8bit input in Xen serial console Manfred Haertel
2015-07-28 17:20 ` Andrew Cooper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).