|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |