[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 22/25 v6] xen/arm: vpl011: Add support for vuart console in xenconsole



On Mon, 17 Jul 2017, Bhupinder Thakur wrote:
> This patch finally adds the support for vuart console. It adds
> two new fields in the console initialization:
> 
> - optional
> - prefer_gnttab
> 
> optional flag tells whether the console is optional.
> 
> prefer_gnttab tells whether the ring buffer should be allocated using
> grant table.
> 
> Signed-off-by: Bhupinder Thakur <bhupinder.thakur@xxxxxxxxxx>
> ---
> CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> CC: Julien Grall <julien.grall@xxxxxxx>
> 
> Changes since v4:
> - Renamed VUART_CFLAGS- to CFLAGS_vuart- in the Makefile as per the 
> convention.
> 
>  config/arm32.mk           |  1 +
>  config/arm64.mk           |  1 +
>  tools/console/Makefile    |  3 ++-
>  tools/console/daemon/io.c | 29 ++++++++++++++++++++++++++++-
>  4 files changed, 32 insertions(+), 2 deletions(-)
> 
> diff --git a/config/arm32.mk b/config/arm32.mk
> index f95228e..b9f23fe 100644
> --- a/config/arm32.mk
> +++ b/config/arm32.mk
> @@ -1,5 +1,6 @@
>  CONFIG_ARM := y
>  CONFIG_ARM_32 := y
> +CONFIG_VUART_CONSOLE := y
>  CONFIG_ARM_$(XEN_OS) := y
>  
>  CONFIG_XEN_INSTALL_SUFFIX :=

What about leaving this off for ARM32 by default?


> diff --git a/config/arm64.mk b/config/arm64.mk
> index aa45772..861d0a4 100644
> --- a/config/arm64.mk
> +++ b/config/arm64.mk
> @@ -1,5 +1,6 @@
>  CONFIG_ARM := y
>  CONFIG_ARM_64 := y
> +CONFIG_VUART_CONSOLE := y
>  CONFIG_ARM_$(XEN_OS) := y
>  
>  CONFIG_XEN_INSTALL_SUFFIX :=
> diff --git a/tools/console/Makefile b/tools/console/Makefile
> index c8b0300..1cddb6e 100644
> --- a/tools/console/Makefile
> +++ b/tools/console/Makefile
> @@ -11,6 +11,7 @@ LDLIBS += $(SOCKET_LIBS)
>  
>  LDLIBS_xenconsoled += $(UTIL_LIBS)
>  LDLIBS_xenconsoled += -lrt
> +CFLAGS_vuart-$(CONFIG_VUART_CONSOLE) = -DCONFIG_VUART_CONSOLE
>  
>  BIN      = xenconsoled xenconsole
>  
> @@ -28,7 +29,7 @@ clean:
>  distclean: clean
>  
>  daemon/main.o: daemon/_paths.h
> -daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab)
> +daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab) 
> $(CFLAGS_vuart-y)
>  xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c))
>       $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn) 
> $(LDLIBS_libxengnttab) $(LDLIBS_xenconsoled) $(APPEND_LDFLAGS)
>  
> diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c
> index 49f085c..c6d4cae 100644
> --- a/tools/console/daemon/io.c
> +++ b/tools/console/daemon/io.c
> @@ -107,12 +107,16 @@ struct console {
>       xenevtchn_port_or_error_t remote_port;
>       struct xencons_interface *interface;
>       struct domain *d;
> +     bool optional;
> +     bool prefer_gnttab;
>  };
>  
>  struct console_data {
>       const char *const xsname;
>       const char *const ttyname;
>       const char *const log_suffix;
> +     bool optional;
> +     bool prefer_gnttab;
>  };
>  
>  static struct console_data console_data[] = {
> @@ -120,7 +124,18 @@ static struct console_data console_data[] = {
>               .xsname = "/console",
>               .ttyname = "tty",
>               .log_suffix = "",
> +             .optional = false,
> +             .prefer_gnttab = true,
>       },
> +#if defined(CONFIG_VUART_CONSOLE)
> +     {
> +             .xsname = "/vuart/0",
> +             .ttyname = "tty",
> +             .log_suffix = "-vuart0",
> +             .optional = true,
> +             .prefer_gnttab = false,
> +     },
> +#endif
>  };
>  
>  #define MAX_CONSOLE (sizeof(console_data)/sizeof(struct console_data))
> @@ -655,8 +670,18 @@ static int console_create_ring(struct console *con)
>                       "ring-ref", "%u", &ring_ref,
>                       "port", "%i", &remote_port,
>                       NULL);
> +
>       if (err)
> +     {

wrong code style for tools/console


> +             /*
> +              * This is a normal condition for optional consoles: they might 
> not be
> +              * present on xenstore at all. In that case, just return 
> without error.
> +             */
> +             if (con->optional)
> +                     err = 0;
> +
>               goto out;
> +     }
>  
>       snprintf(path, sizeof(path), "%s/type", con->xspath);
>       type = xs_read(xs, XBT_NULL, path, NULL);
> @@ -670,7 +695,9 @@ static int console_create_ring(struct console *con)
>       if (ring_ref != con->ring_ref && con->ring_ref != -1)
>               console_unmap_interface(con);
>  
> -     if (!con->interface && xgt_handle) {
> +     if (!con->interface &&
> +         xgt_handle &&
> +         con->prefer_gnttab) {
>               /* Prefer using grant table */
>               con->interface = xengnttab_map_grant_ref(xgt_handle,
>                       dom->domid, GNTTAB_RESERVED_CONSOLE,

I noticed that you removed the initialization of optional and
prefer_gnttab from console_init from this patch:

@@ -790,6 +817,8 @@ static int console_init(struct console *con, struct domain 
*dom, void **data)
      con->d = dom;
      con->ttyname = (*con_data)->ttyname;
      con->log_suffix = (*con_data)->log_suffix;
+     con->optional = (*con_data)->optional;
+     con->prefer_gnttab = (*con_data)->prefer_gnttab;
      xsname = (*con_data)->xsname;
      con->xspath = xs_get_domain_path(xs, dom->domid);
      s = realloc(con->xspath, strlen(con->xspath) +

Why? It that intended?

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.