Stefano Stabellini
2011-Jun-24 14:53 UTC
[Xen-devel] [PATCH 0/2] xen: enable PV backends for HVM guests
Hi all, this small patch series enables console, disk and kbd backends for HVM guests, for the benefit of Linux and Windows PV on HVM drivers. Stefano Stabellini (2): xen: enable console and disk backend in HVM mode xen: add vkbd support for PV on HVM guests hw/xenfb.c | 19 ++++++++++++------- xen-all.c | 9 +++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) Cheers, Stefano _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
<stefano.stabellini@eu.citrix.com>
2011-Jun-24 14:54 UTC
[Xen-devel] [PATCH 1/2] xen: enable console and disk backend in HVM mode
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Initialize the Xen console backend and the Xen disk backend even when running in HVM mode so that PV on HVM drivers can connect to them. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- xen-all.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/xen-all.c b/xen-all.c index b0b2f10..93fa2ee 100644 --- a/xen-all.c +++ b/xen-all.c @@ -862,6 +862,14 @@ int xen_hvm_init(void) cpu_register_phys_memory_client(&state->client); state->log_for_dirtybit = NULL; + /* Initialize backend core & drivers */ + if (xen_be_init() != 0) { + fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__); + exit(1); + } + xen_be_register("console", &xen_console_ops); + xen_be_register("qdisk", &xen_blkdev_ops); + return 0; } -- 1.7.2.3 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
<stefano.stabellini@eu.citrix.com>
2011-Jun-24 14:54 UTC
[Xen-devel] [PATCH 2/2] xen: add vkbd support for PV on HVM guests
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Register the vkbd backend even when running as device emulator for HVM guests: it is useful because it doesn''t need a frequent timer like usb. Check whether the XenInput DisplayState has been set in the initialise state, rather than the input state. In case the DisplayState hasn''t been set and there is no vfb for this domain, then set the XenInput DisplayState to the default one. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- hw/xenfb.c | 19 ++++++++++++------- xen-all.c | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/hw/xenfb.c b/hw/xenfb.c index a3301ac..13b9b1b 100644 --- a/hw/xenfb.c +++ b/hw/xenfb.c @@ -347,13 +347,6 @@ static void xenfb_mouse_event(void *opaque, static int input_init(struct XenDevice *xendev) { - struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); - - if (!in->c.ds) { - xen_be_printf(xendev, 1, "ds not set (yet)\n"); - return -1; - } - xenstore_write_be_int(xendev, "feature-abs-pointer", 1); return 0; } @@ -363,6 +356,18 @@ static int input_initialise(struct XenDevice *xendev) struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); int rc; + if (!in->c.ds) { + char *vfb = xenstore_read_str(NULL, "device/vfb"); + if (vfb == NULL) { + /* there is no vfb, run vkbd on its own */ + in->c.ds = get_displaystate(); + } else { + free(vfb); + xen_be_printf(xendev, 1, "ds not set (yet)\n"); + return -1; + } + } + rc = common_bind(&in->c); if (rc != 0) return rc; diff --git a/xen-all.c b/xen-all.c index 93fa2ee..6099bff 100644 --- a/xen-all.c +++ b/xen-all.c @@ -868,6 +868,7 @@ int xen_hvm_init(void) exit(1); } xen_be_register("console", &xen_console_ops); + xen_be_register("vkbd", &xen_kbdmouse_ops); xen_be_register("qdisk", &xen_blkdev_ops); return 0; -- 1.7.2.3 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Peter Maydell
2011-Jun-24 15:19 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH 2/2] xen: add vkbd support for PV on HVM guests
On 24 June 2011 15:54, <stefano.stabellini@eu.citrix.com> wrote:> + if (!in->c.ds) { > + char *vfb = xenstore_read_str(NULL, "device/vfb"); > + if (vfb == NULL) { > + /* there is no vfb, run vkbd on its own */ > + in->c.ds = get_displaystate(); > + } else { > + free(vfb);xenstore_read_str() returns a pointer from a qemu_strdup() so strictly this should be a qemu_free(), I think? -- PMM _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Stefano Stabellini
2011-Jun-24 16:34 UTC
[Xen-devel] Re: [Qemu-devel] [PATCH 2/2] xen: add vkbd support for PV on HVM guests
On Fri, 24 Jun 2011, Peter Maydell wrote:> On 24 June 2011 15:54, <stefano.stabellini@eu.citrix.com> wrote: > > > + if (!in->c.ds) { > > + char *vfb = xenstore_read_str(NULL, "device/vfb"); > > + if (vfb == NULL) { > > + /* there is no vfb, run vkbd on its own */ > > + in->c.ds = get_displaystate(); > > + } else { > > + free(vfb); > > xenstore_read_str() returns a pointer from a qemu_strdup() > so strictly this should be a qemu_free(), I think?Yes, it should be, I''ll send a second version of the patch. --8323329-1642893925-1308930117=:12963 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --8323329-1642893925-1308930117=:12963--
Alexander Graf
2011-Jun-30 15:09 UTC
[Xen-devel] Re: [PATCH 1/2] xen: enable console and disk backend in HVM mode
On 06/24/2011 04:54 PM, stefano.stabellini@eu.citrix.com wrote:> From: Stefano Stabellini<stefano.stabellini@eu.citrix.com> > > Initialize the Xen console backend and the Xen disk backend even when > running in HVM mode so that PV on HVM drivers can connect to them.Thanks, applied to xen-next branch. Alex> Signed-off-by: Stefano Stabellini<stefano.stabellini@eu.citrix.com> > --- > xen-all.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/xen-all.c b/xen-all.c > index b0b2f10..93fa2ee 100644 > --- a/xen-all.c > +++ b/xen-all.c > @@ -862,6 +862,14 @@ int xen_hvm_init(void) > cpu_register_phys_memory_client(&state->client); > state->log_for_dirtybit = NULL; > > + /* Initialize backend core& drivers */ > + if (xen_be_init() != 0) { > + fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__); > + exit(1); > + } > + xen_be_register("console",&xen_console_ops); > + xen_be_register("qdisk",&xen_blkdev_ops); > + > return 0; > } >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel