[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] xenstore: add console xenstore entries for xenstore stubdom
commit a9594631b645be862857e3debbd1f04e932eb197 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Wed Feb 12 08:41:53 2020 +0100 Commit: Wei Liu <wl@xxxxxxx> CommitDate: Thu Feb 13 12:59:39 2020 +0000 xenstore: add console xenstore entries for xenstore stubdom In order to be able to connect to the console of Xenstore stubdom we need to create the appropriate entries in Xenstore. For the moment we don't support xenconsoled living in another domain than dom0, as this information isn't available other then via Xenstore which we are just setting up. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Wei Liu <wl@xxxxxxx> --- tools/helpers/init-xenstore-domain.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c index 3a8ca64741..4ce8299c3c 100644 --- a/tools/helpers/init-xenstore-domain.c +++ b/tools/helpers/init-xenstore-domain.c @@ -12,6 +12,7 @@ #include <xenstore.h> #include <xen/sys/xenbus_dev.h> #include <xen-xsm/flask/flask.h> +#include <xen/io/xenbus.h> #include "init-dom-json.h" #include "_paths.h" @@ -24,6 +25,7 @@ static char *param; static char *name = "Xenstore"; static int memory; static int maxmem; +static xen_pfn_t console_mfn; static xc_evtchn_port_or_error_t console_evtchn; static struct option options[] = { @@ -223,6 +225,7 @@ static int build(xc_interface *xch) } rv = 0; + console_mfn = xc_dom_p2m(dom, dom->console_pfn); err: if ( dom ) @@ -321,6 +324,15 @@ static void do_xs_write(struct xs_handle *xsh, char *path, char *val) fprintf(stderr, "writing %s to xenstore failed.\n", path); } +static void do_xs_write_dir_node(struct xs_handle *xsh, char *dir, char *node, + char *val) +{ + char full_path[100]; + + snprintf(full_path, 100, "%s/%s", dir, node); + do_xs_write(xsh, full_path, val); +} + static void do_xs_write_dom(struct xs_handle *xsh, char *path, char *val) { char full_path[64]; @@ -334,7 +346,7 @@ int main(int argc, char** argv) int opt; xc_interface *xch; struct xs_handle *xsh; - char buf[16]; + char buf[16], be_path[64], fe_path[64]; int rv, fd; char *maxmem_str = NULL; @@ -423,6 +435,25 @@ int main(int argc, char** argv) if (maxmem) snprintf(buf, 16, "%d", maxmem * 1024); do_xs_write_dom(xsh, "memory/static-max", buf); + snprintf(be_path, 64, "/local/domain/0/backend/console/%d/0", domid); + snprintf(fe_path, 64, "/local/domain/%d/console", domid); + snprintf(buf, 16, "%d", domid); + do_xs_write_dir_node(xsh, be_path, "frontend-id", buf); + do_xs_write_dir_node(xsh, be_path, "frontend", fe_path); + do_xs_write_dir_node(xsh, be_path, "online", "1"); + snprintf(buf, 16, "%d", XenbusStateInitialising); + do_xs_write_dir_node(xsh, be_path, "state", buf); + do_xs_write_dir_node(xsh, be_path, "protocol", "vt100"); + do_xs_write_dir_node(xsh, fe_path, "backend", be_path); + do_xs_write_dir_node(xsh, fe_path, "backend-id", "0"); + do_xs_write_dir_node(xsh, fe_path, "limit", "1048576"); + do_xs_write_dir_node(xsh, fe_path, "type", "xenconsoled"); + do_xs_write_dir_node(xsh, fe_path, "output", "pty"); + do_xs_write_dir_node(xsh, fe_path, "tty", ""); + snprintf(buf, 16, "%d", console_evtchn); + do_xs_write_dir_node(xsh, fe_path, "port", buf); + snprintf(buf, 16, "%ld", console_mfn); + do_xs_write_dir_node(xsh, fe_path, "ring-ref", buf); xs_close(xsh); fd = creat(XEN_RUN_DIR "/xenstored.pid", 0666); -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |