* [Qemu-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM @ 2013-12-18 19:15 Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 1/2] xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 Stefano Stabellini ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Stefano Stabellini @ 2013-12-18 19:15 UTC (permalink / raw) To: qemu-devel; +Cc: Anthony Perard, xen-devel, Stefano Stabellini Hi all, the xenpv machine provides Xen paravirtualized backends for console, disk and framebuffer. xenfb in particular is the only open source framebuffer backend available. On ARM we don't need QEMU to emulate any hardware but xenpv would still be useful at least to provide xenfb. This patch series allows QEMU to build and run (xenpv) with Xen support on ARM. Changes in v2: - use SCNu64 instead of PRIu64 with sscanf; - assert mfn == (xen_pfn_t)mfn; - use HOST_LONG_BITS to check for QEMU's address space size. Stefano Stabellini (2): xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 xen: build on ARM hw/display/xenfb.c | 18 ++++++++++-------- hw/xen/xen_backend.c | 18 ++++++++++++++++++ include/hw/xen/xen_backend.h | 2 ++ xen-all.c | 2 +- xen-mapcache.c | 4 ++-- 5 files changed, 33 insertions(+), 11 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 2013-12-18 19:15 [Qemu-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM Stefano Stabellini @ 2013-12-18 19:17 ` Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 2/2] xen: build on ARM Stefano Stabellini 2013-12-18 21:22 ` [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support " Konrad Rzeszutek Wilk 2 siblings, 0 replies; 6+ messages in thread From: Stefano Stabellini @ 2013-12-18 19:17 UTC (permalink / raw) To: qemu-devel; +Cc: anthony.perard, xen-devel, Stefano Stabellini Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- Changes in v2: - use SCNu64 instead of PRIu64 with sscanf. --- hw/xen/xen_backend.c | 18 ++++++++++++++++++ include/hw/xen/xen_backend.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c index 197795f..c1d7ae5 100644 --- a/hw/xen/xen_backend.c +++ b/hw/xen/xen_backend.c @@ -112,6 +112,19 @@ int xenstore_read_int(const char *base, const char *node, int *ival) return rc; } +int xenstore_read_uint64(const char *base, const char *node, uint64_t *uval) +{ + char *val; + int rc = -1; + + val = xenstore_read_str(base, node); + if (val && 1 == sscanf(val, "%"SCNu64, uval)) { + rc = 0; + } + g_free(val); + return rc; +} + int xenstore_write_be_str(struct XenDevice *xendev, const char *node, const char *val) { return xenstore_write_str(xendev->be, node, val); @@ -147,6 +160,11 @@ int xenstore_read_fe_int(struct XenDevice *xendev, const char *node, int *ival) return xenstore_read_int(xendev->fe, node, ival); } +int xenstore_read_fe_uint64(struct XenDevice *xendev, const char *node, uint64_t *uval) +{ + return xenstore_read_uint64(xendev->fe, node, uval); +} + /* ------------------------------------------------------------- */ const char *xenbus_strstate(enum xenbus_state state) diff --git a/include/hw/xen/xen_backend.h b/include/hw/xen/xen_backend.h index 3b7d96d..3b4125e 100644 --- a/include/hw/xen/xen_backend.h +++ b/include/hw/xen/xen_backend.h @@ -74,6 +74,8 @@ char *xenstore_read_be_str(struct XenDevice *xendev, const char *node); int xenstore_read_be_int(struct XenDevice *xendev, const char *node, int *ival); char *xenstore_read_fe_str(struct XenDevice *xendev, const char *node); int xenstore_read_fe_int(struct XenDevice *xendev, const char *node, int *ival); +int xenstore_read_uint64(const char *base, const char *node, uint64_t *uval); +int xenstore_read_fe_uint64(struct XenDevice *xendev, const char *node, uint64_t *uval); const char *xenbus_strstate(enum xenbus_state state); struct XenDevice *xen_be_find_xendev(const char *type, int dom, int dev); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] xen: build on ARM 2013-12-18 19:15 [Qemu-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 1/2] xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 Stefano Stabellini @ 2013-12-18 19:17 ` Stefano Stabellini 2013-12-18 21:22 ` [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support " Konrad Rzeszutek Wilk 2 siblings, 0 replies; 6+ messages in thread From: Stefano Stabellini @ 2013-12-18 19:17 UTC (permalink / raw) To: qemu-devel; +Cc: anthony.perard, xen-devel, Stefano Stabellini Collection of fixes to build QEMU with Xen support on ARM: - use xenstore_read_fe_uint64 to retrieve the page-ref (xenfb); - use xen_pfn_t instead of unsigned long in xenfb; - unsigned long/xenpfn_t in xen_remove_from_physmap; - in xen-mapcache.c use HOST_LONG_BITS to check for QEMU's address space size. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- Changes in v2: - assert mfn == (xen_pfn_t)mfn; - use HOST_LONG_BITS to check for QEMU's address space size. --- hw/display/xenfb.c | 18 ++++++++++-------- xen-all.c | 2 +- xen-mapcache.c | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index f0333a0..c757c4f 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -93,10 +93,12 @@ struct XenFB { static int common_bind(struct common *c) { - int mfn; + uint64_t mfn; - if (xenstore_read_fe_int(&c->xendev, "page-ref", &mfn) == -1) + if (xenstore_read_fe_uint64(&c->xendev, "page-ref", &mfn) == -1) return -1; + assert(mfn == (xen_pfn_t)mfn); + if (xenstore_read_fe_int(&c->xendev, "event-channel", &c->xendev.remote_port) == -1) return -1; @@ -107,7 +109,7 @@ static int common_bind(struct common *c) return -1; xen_be_bind_evtchn(&c->xendev); - xen_be_printf(&c->xendev, 1, "ring mfn %d, remote-port %d, local-port %d\n", + xen_be_printf(&c->xendev, 1, "ring mfn %"PRIx64", remote-port %d, local-port %d\n", mfn, c->xendev.remote_port, c->xendev.local_port); return 0; @@ -409,7 +411,7 @@ static void input_event(struct XenDevice *xendev) /* -------------------------------------------------------------------- */ -static void xenfb_copy_mfns(int mode, int count, unsigned long *dst, void *src) +static void xenfb_copy_mfns(int mode, int count, xen_pfn_t *dst, void *src) { uint32_t *src32 = src; uint64_t *src64 = src; @@ -424,8 +426,8 @@ static int xenfb_map_fb(struct XenFB *xenfb) struct xenfb_page *page = xenfb->c.page; char *protocol = xenfb->c.xendev.protocol; int n_fbdirs; - unsigned long *pgmfns = NULL; - unsigned long *fbmfns = NULL; + xen_pfn_t *pgmfns = NULL; + xen_pfn_t *fbmfns = NULL; void *map, *pd; int mode, ret = -1; @@ -483,8 +485,8 @@ static int xenfb_map_fb(struct XenFB *xenfb) n_fbdirs = xenfb->fbpages * mode / 8; n_fbdirs = (n_fbdirs + (XC_PAGE_SIZE - 1)) / XC_PAGE_SIZE; - pgmfns = g_malloc0(sizeof(unsigned long) * n_fbdirs); - fbmfns = g_malloc0(sizeof(unsigned long) * xenfb->fbpages); + pgmfns = g_malloc0(sizeof(xen_pfn_t) * n_fbdirs); + fbmfns = g_malloc0(sizeof(xen_pfn_t) * xenfb->fbpages); xenfb_copy_mfns(mode, n_fbdirs, pgmfns, pd); map = xc_map_foreign_pages(xen_xc, xenfb->c.xendev.dom, diff --git a/xen-all.c b/xen-all.c index 4a594bd..774c80d 100644 --- a/xen-all.c +++ b/xen-all.c @@ -376,7 +376,7 @@ static int xen_remove_from_physmap(XenIOState *state, start_addr >>= TARGET_PAGE_BITS; phys_offset >>= TARGET_PAGE_BITS; for (i = 0; i < size; i++) { - unsigned long idx = start_addr + i; + xen_pfn_t idx = start_addr + i; xen_pfn_t gpfn = phys_offset + i; rc = xc_domain_add_to_physmap(xen_xc, xen_domid, XENMAPSPACE_gmfn, idx, gpfn); diff --git a/xen-mapcache.c b/xen-mapcache.c index eda914a..66da1a6 100644 --- a/xen-mapcache.c +++ b/xen-mapcache.c @@ -33,10 +33,10 @@ # define DPRINTF(fmt, ...) do { } while (0) #endif -#if defined(__i386__) +#if HOST_LONG_BITS == 32 # define MCACHE_BUCKET_SHIFT 16 # define MCACHE_MAX_SIZE (1UL<<31) /* 2GB Cap */ -#elif defined(__x86_64__) +#else # define MCACHE_BUCKET_SHIFT 20 # define MCACHE_MAX_SIZE (1UL<<35) /* 32GB Cap */ #endif -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM 2013-12-18 19:15 [Qemu-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 1/2] xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 2/2] xen: build on ARM Stefano Stabellini @ 2013-12-18 21:22 ` Konrad Rzeszutek Wilk 2013-12-20 7:25 ` Fabio Fantoni 2014-01-03 12:55 ` Stefano Stabellini 2 siblings, 2 replies; 6+ messages in thread From: Konrad Rzeszutek Wilk @ 2013-12-18 21:22 UTC (permalink / raw) To: Stefano Stabellini; +Cc: Anthony Perard, xen-devel, qemu-devel On Wed, Dec 18, 2013 at 07:15:43PM +0000, Stefano Stabellini wrote: > Hi all, > the xenpv machine provides Xen paravirtualized backends for console, > disk and framebuffer. xenfb in particular is the only open source > framebuffer backend available. > On ARM we don't need QEMU to emulate any hardware but xenpv would still > be useful at least to provide xenfb. > This patch series allows QEMU to build and run (xenpv) with Xen support > on ARM. > This should work out of the box (with changes to the toolstack) to work under x86 right? I would have to do some 'vga=none' to disable the VGA framebuffer? > > Changes in v2: > - use SCNu64 instead of PRIu64 with sscanf; > - assert mfn == (xen_pfn_t)mfn; > - use HOST_LONG_BITS to check for QEMU's address space size. > > > Stefano Stabellini (2): > xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 > xen: build on ARM > > hw/display/xenfb.c | 18 ++++++++++-------- > hw/xen/xen_backend.c | 18 ++++++++++++++++++ > include/hw/xen/xen_backend.h | 2 ++ > xen-all.c | 2 +- > xen-mapcache.c | 4 ++-- > 5 files changed, 33 insertions(+), 11 deletions(-) > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM 2013-12-18 21:22 ` [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support " Konrad Rzeszutek Wilk @ 2013-12-20 7:25 ` Fabio Fantoni 2014-01-03 12:55 ` Stefano Stabellini 1 sibling, 0 replies; 6+ messages in thread From: Fabio Fantoni @ 2013-12-20 7:25 UTC (permalink / raw) To: Konrad Rzeszutek Wilk Cc: Anthony Perard, xen-devel, qemu-devel@nongnu.org, Stefano Stabellini [-- Attachment #1: Type: text/plain, Size: 1939 bytes --] 2013/12/18 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > On Wed, Dec 18, 2013 at 07:15:43PM +0000, Stefano Stabellini wrote: > > Hi all, > > the xenpv machine provides Xen paravirtualized backends for console, > > disk and framebuffer. xenfb in particular is the only open source > > framebuffer backend available. > > On ARM we don't need QEMU to emulate any hardware but xenpv would still > > be useful at least to provide xenfb. > > This patch series allows QEMU to build and run (xenpv) with Xen support > > on ARM. > > > > This should work out of the box (with changes to the toolstack) to work > under x86 right? I would have to do some 'vga=none' to disable the VGA > framebuffer? > With this you can disable emulated vga: http://lists.xen.org/archives/html/xen-devel/2013-12/msg00725.html About xenfb FWIK you need also another patch already posted to support xenfb on hvm domUs: http://lists.xen.org/archives/html/xen-devel/2013-12/msg02592.html I already tested vga=none but not xenfb on hvm for now. > > > > > Changes in v2: > > - use SCNu64 instead of PRIu64 with sscanf; > > - assert mfn == (xen_pfn_t)mfn; > > - use HOST_LONG_BITS to check for QEMU's address space size. > > > > > > Stefano Stabellini (2): > > xen_backend: introduce xenstore_read_uint64 and > xenstore_read_fe_uint64 > > xen: build on ARM > > > > hw/display/xenfb.c | 18 ++++++++++-------- > > hw/xen/xen_backend.c | 18 ++++++++++++++++++ > > include/hw/xen/xen_backend.h | 2 ++ > > xen-all.c | 2 +- > > xen-mapcache.c | 4 ++-- > > 5 files changed, 33 insertions(+), 11 deletions(-) > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xen.org > > http://lists.xen.org/xen-devel > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel > [-- Attachment #2: Type: text/html, Size: 3127 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM 2013-12-18 21:22 ` [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support " Konrad Rzeszutek Wilk 2013-12-20 7:25 ` Fabio Fantoni @ 2014-01-03 12:55 ` Stefano Stabellini 1 sibling, 0 replies; 6+ messages in thread From: Stefano Stabellini @ 2014-01-03 12:55 UTC (permalink / raw) To: Konrad Rzeszutek Wilk Cc: Anthony Perard, xen-devel, qemu-devel, Stefano Stabellini On Wed, 18 Dec 2013, Konrad Rzeszutek Wilk wrote: > On Wed, Dec 18, 2013 at 07:15:43PM +0000, Stefano Stabellini wrote: > > Hi all, > > the xenpv machine provides Xen paravirtualized backends for console, > > disk and framebuffer. xenfb in particular is the only open source > > framebuffer backend available. > > On ARM we don't need QEMU to emulate any hardware but xenpv would still > > be useful at least to provide xenfb. > > This patch series allows QEMU to build and run (xenpv) with Xen support > > on ARM. > > > > This should work out of the box (with changes to the toolstack) to work > under x86 right? I would have to do some 'vga=none' to disable the VGA > framebuffer? Yes, it should already be working on x86 without changes to the toolstack. You don't even need to pass 'vga=none': that is for HVM guests, while for PVH guests we simple want the xenpv QEMU, the one exclusively providing userspace pv backends. > > Changes in v2: > > - use SCNu64 instead of PRIu64 with sscanf; > > - assert mfn == (xen_pfn_t)mfn; > > - use HOST_LONG_BITS to check for QEMU's address space size. > > > > > > Stefano Stabellini (2): > > xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 > > xen: build on ARM > > > > hw/display/xenfb.c | 18 ++++++++++-------- > > hw/xen/xen_backend.c | 18 ++++++++++++++++++ > > include/hw/xen/xen_backend.h | 2 ++ > > xen-all.c | 2 +- > > xen-mapcache.c | 4 ++-- > > 5 files changed, 33 insertions(+), 11 deletions(-) > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xen.org > > http://lists.xen.org/xen-devel > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-01-03 12:56 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-12-18 19:15 [Qemu-devel] [PATCH v2 0/2] build QEMU with Xen support on ARM Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 1/2] xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 Stefano Stabellini 2013-12-18 19:17 ` [Qemu-devel] [PATCH v2 2/2] xen: build on ARM Stefano Stabellini 2013-12-18 21:22 ` [Qemu-devel] [Xen-devel] [PATCH v2 0/2] build QEMU with Xen support " Konrad Rzeszutek Wilk 2013-12-20 7:25 ` Fabio Fantoni 2014-01-03 12:55 ` Stefano Stabellini
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).