From patchwork Wed Dec 18 19:17:32 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Stabellini X-Patchwork-Id: 303028 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id E10382C00AE for ; Thu, 19 Dec 2013 06:18:47 +1100 (EST) Received: from localhost ([::1]:40240 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtMdp-00085L-0P for incoming@patchwork.ozlabs.org; Wed, 18 Dec 2013 14:18:45 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtMdN-00083m-Ug for qemu-devel@nongnu.org; Wed, 18 Dec 2013 14:18:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VtMdJ-0002YD-0l for qemu-devel@nongnu.org; Wed, 18 Dec 2013 14:18:17 -0500 Received: from smtp02.citrix.com ([66.165.176.63]:51224) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VtMdI-0002Xt-SE for qemu-devel@nongnu.org; Wed, 18 Dec 2013 14:18:12 -0500 X-IronPort-AV: E=Sophos;i="4.95,508,1384300800"; d="scan'208";a="83635727" Received: from accessns.citrite.net (HELO FTLPEX01CL03.citrite.net) ([10.9.154.239]) by FTLPIPO02.CITRIX.COM with ESMTP; 18 Dec 2013 19:18:12 +0000 Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com (10.13.107.80) with Microsoft SMTP Server id 14.2.342.4; Wed, 18 Dec 2013 14:18:11 -0500 Received: from kaball.uk.xensource.com ([10.80.2.59]) by ukmail1.uk.xensource.com with esmtp (Exim 4.69) (envelope-from ) id 1VtMdC-0003kt-9V; Wed, 18 Dec 2013 19:18:06 +0000 From: Stefano Stabellini To: Date: Wed, 18 Dec 2013 19:17:32 +0000 Message-ID: <1387394252-9676-2-git-send-email-stefano.stabellini@eu.citrix.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: References: MIME-Version: 1.0 X-DLP: MIA2 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 66.165.176.63 Cc: anthony.perard@citrix.com, xen-devel@lists.xensource.com, Stefano Stabellini Subject: [Qemu-devel] [PATCH v2 2/2] xen: build on ARM X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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