qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] implement support for secondary consoles in the console backend
@ 2009-06-11 16:06 Stefano Stabellini
  2009-06-12  8:33 ` Gerd Hoffmann
  0 siblings, 1 reply; 2+ messages in thread
From: Stefano Stabellini @ 2009-06-11 16:06 UTC (permalink / raw)
  To: xen-devel; +Cc: qemu-devel@nongnu.org

This patch adds support for secondary consoles in the console backend.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

---

diff --git a/hw/xen_console.c b/hw/xen_console.c
index 27f809d..0d8f654 100644
--- a/hw/xen_console.c
+++ b/hw/xen_console.c
@@ -185,7 +185,10 @@ static int con_init(struct XenDevice *xendev)
 
     /* setup */
     dom = xs_get_domain_path(xenstore, con->xendev.dom);
-    snprintf(con->console, sizeof(con->console), "%s/console", dom);
+    if (!xendev->dev)
+        snprintf(con->console, sizeof(con->console), "%s/console", dom);
+    else
+        snprintf(con->console, sizeof(con->console), "%s/device/console/%d", dom, xendev->dev);
     free(dom);
 
     type = xenstore_read_str(con->console, "type");
@@ -215,10 +218,15 @@ static int con_connect(struct XenDevice *xendev)
     if (xenstore_read_int(con->console, "limit", &limit) == 0)
 	con->buffer.max_capacity = limit;
 
-    con->sring = xc_map_foreign_range(xen_xc, con->xendev.dom,
-				      XC_PAGE_SIZE,
-				      PROT_READ|PROT_WRITE,
-				      con->ring_ref);
+    if (!xendev->dev)
+        con->sring = xc_map_foreign_range(xen_xc, con->xendev.dom,
+                                          XC_PAGE_SIZE,
+                                          PROT_READ|PROT_WRITE,
+                                          con->ring_ref);
+    else
+        con->sring = xc_gnttab_map_grant_ref(xendev->gnttabdev, con->xendev.dom,
+                                             con->ring_ref,
+                                             PROT_READ|PROT_WRITE);
     if (!con->sring)
 	return -1;
 
@@ -244,7 +252,10 @@ static void con_disconnect(struct XenDevice *xendev)
     xen_be_unbind_evtchn(&con->xendev);
 
     if (con->sring) {
-	munmap(con->sring, XC_PAGE_SIZE);
+        if (!xendev->dev)
+            munmap(con->sring, XC_PAGE_SIZE);
+        else
+            xc_gnttab_munmap(xendev->gnttabdev, con->sring, 1);
 	con->sring = NULL;
     }
 }
@@ -262,9 +273,10 @@ static void con_event(struct XenDevice *xendev)
 
 struct XenDevOps xen_console_ops = {
     .size       = sizeof(struct XenConsole),
-    .flags      = DEVOPS_FLAG_IGNORE_STATE,
+    .flags      = DEVOPS_FLAG_IGNORE_STATE|DEVOPS_FLAG_NEED_GNTDEV,
     .init       = con_init,
     .connect    = con_connect,
     .event      = con_event,
     .disconnect = con_disconnect,
 };
+

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Qemu-devel] implement support for secondary consoles in the console backend
  2009-06-11 16:06 [Qemu-devel] implement support for secondary consoles in the console backend Stefano Stabellini
@ 2009-06-12  8:33 ` Gerd Hoffmann
  0 siblings, 0 replies; 2+ messages in thread
From: Gerd Hoffmann @ 2009-06-12  8:33 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: xen-devel, qemu-devel@nongnu.org

On 06/11/09 18:06, Stefano Stabellini wrote:
> This patch adds support for secondary consoles in the console backend.

Looks good to me.

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

cheers,
   Gerd

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-06-12  8:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-11 16:06 [Qemu-devel] implement support for secondary consoles in the console backend Stefano Stabellini
2009-06-12  8:33 ` Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).