WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] Paravirt framebuffer use xvc as console [4/5]

To: Jeremy Katz <katzj@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Paravirt framebuffer use xvc as console [4/5]
From: Steven Smith <sos22-xen@xxxxxxxxxxxxx>
Date: Mon, 4 Sep 2006 10:01:11 +0100
Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, Markus Armbruster <armbru@xxxxxxxxxx>, sos22@xxxxxxxxxxxxx, Amos Waterland <apw@xxxxxxxxxx>
Delivery-date: Mon, 04 Sep 2006 02:02:52 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <1157227130.11059.44.camel@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1157227130.11059.44.camel@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> This is the patch from Amos Waterland for the xenconsole to
> use /dev/xvc0 instead of taking over ttys.  I've fixed a few places
> which needed to check for XVC mode in addition to serial mode.  Also,
> until LANANA responds with an official minor, I've adjusted it to use
> char 250/187 (in the experimental range) as opposed to 204/187.
> 
> (Should be identical to this patch from last time)
Does this have anything to do with the virtual framebuffer work, or
does it stand alone?

> diff -r 2b360c6b44fa -r c859588adc5e 
> linux-2.6-xen-sparse/drivers/xen/console/console.c
> --- a/linux-2.6-xen-sparse/drivers/xen/console/console.c      Sat Sep 02 
> 15:23:32 2006 -0400
> +++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c      Sat Sep 02 
> 15:31:29 2006 -0400
> @@ -57,19 +57,27 @@
>  #include <asm/hypervisor.h>
>  #include <xen/evtchn.h>
>  #include <xen/xencons.h>
> +#include <xen/xenbus.h>
>  
>  /*
>   * Modes:
>   *  'xencons=off'  [XC_OFF]:     Console is disabled.
>   *  'xencons=tty'  [XC_TTY]:     Console attached to '/dev/tty[0-9]+'.
>   *  'xencons=ttyS' [XC_SERIAL]:  Console attached to '/dev/ttyS[0-9]+'.
> + *  'xencons=xvc'  [XC_XVC]:     Console attached to '/dev/xvc[0-9]+'.
>   *                 [XC_DEFAULT]: DOM0 -> XC_SERIAL ; all others -> XC_TTY.
>   * 
>   * NB. In mode XC_TTY, we create dummy consoles for tty2-63. This suppresses
>   * warnings from standard distro startup scripts.
>   */
> -static enum { XC_OFF, XC_DEFAULT, XC_TTY, XC_SERIAL } xc_mode = XC_DEFAULT;
> +static enum { XC_OFF, XC_DEFAULT, XC_TTY, XC_SERIAL, XC_XVC } 
> +    xc_mode = XC_DEFAULT;
>  static int xc_num = -1;
> +
> +/* If we are in XC_XVC mode (a virtual console at /dev/xvcX), we need to
> + * comply with Lanana and use a minor under the low density serial major.
> + */
> +#define XEN_XVC_MINOR 187
>  
>  #ifdef CONFIG_MAGIC_SYSRQ
>  static unsigned long sysrq_requested;
> @@ -85,6 +93,8 @@ static int __init xencons_setup(char *st
>               xc_mode = XC_SERIAL;
>       else if (!strncmp(str, "tty", 3))
>               xc_mode = XC_TTY;
> +     else if (!strncmp(str, "xvc", 3))
> +             xc_mode = XC_XVC;
>       else if (!strncmp(str, "off", 3))
>               xc_mode = XC_OFF;
>  
> @@ -95,6 +105,11 @@ static int __init xencons_setup(char *st
>                       xc_num = n;
>               break;
>       case XC_TTY:
> +             n = simple_strtol(str+3, &q, 10);
> +             if (q > (str + 3))
> +                     xc_num = n;
> +             break;
> +     case XC_XVC:
There's some code duplication here.

>               n = simple_strtol(str+3, &q, 10);
>               if (q > (str + 3))
>                       xc_num = n;
> @@ -194,11 +209,17 @@ static int __init xen_console_init(void)
>               kcons_info.write = kcons_write_dom0;
>       } else {
>               if (xc_mode == XC_DEFAULT)
> -                     xc_mode = XC_TTY;
> +                     xc_mode = XC_XVC;
Not convinced we want to change the default until a little while after
the rest of the patch gets merged.

>               kcons_info.write = kcons_write;
>       }
>  
>       switch (xc_mode) {
> +     case XC_XVC:
> +             strcpy(kcons_info.name, "xvc");
> +             if (xc_num == -1)
> +                     xc_num = 0;
> +             break;
> +
>       case XC_SERIAL:
>               strcpy(kcons_info.name, "ttyS");
>               if (xc_num == -1)
> @@ -265,7 +286,7 @@ void xencons_force_flush(void)
>  /******************** User-space console driver (/dev/console) ************/
>  
>  #define DRV(_d)         (_d)
> -#define DUMMY_TTY(_tty) ((xc_mode != XC_SERIAL) &&           \
> +#define DUMMY_TTY(_tty) ((xc_mode != XC_SERIAL) && (xc_mode != XC_XVC) && \
>                        ((_tty)->index != (xc_num - 1)))
>  
>  static struct termios *xencons_termios[MAX_NR_CONSOLES];
> @@ -584,7 +605,8 @@ static int __init xencons_init(void)
>  
>       xencons_ring_init();
>  
> -     xencons_driver = alloc_tty_driver((xc_mode == XC_SERIAL) ?
> +     xencons_driver = alloc_tty_driver(((xc_mode == XC_SERIAL) || 
> +                                        (xc_mode == XC_XVC)) ?
>                                         1 : MAX_NR_CONSOLES);
>       if (xencons_driver == NULL)
>               return -ENOMEM;
> @@ -604,6 +626,11 @@ static int __init xencons_init(void)
>               DRV(xencons_driver)->name        = "ttyS";
>               DRV(xencons_driver)->minor_start = 64 + xc_num;
>               DRV(xencons_driver)->name_base   = 0 + xc_num;
> +     } else if (xc_mode == XC_XVC) {
> +             DRV(xencons_driver)->name        = "xvc";
> +             DRV(xencons_driver)->major       = 250;
> +             DRV(xencons_driver)->minor_start = XEN_XVC_MINOR;
> +             DRV(xencons_driver)->name_base   = xc_num;
>       } else {
>               DRV(xencons_driver)->name        = "tty";
>               DRV(xencons_driver)->minor_start = 1;

Steven.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel