xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: xen-devel@lists.xen.org
Cc: Julien Grall <julien.grall@arm.com>,
	sstabellini@kernel.org, wei.chen@linaro.org
Subject: [PATCH v4 07/16] xen/arm: Rework the interface of p2m_cache_flush and use typesafe gfn
Date: Mon, 27 Jun 2016 17:54:03 +0100	[thread overview]
Message-ID: <1467046452-1261-8-git-send-email-julien.grall@arm.com> (raw)
In-Reply-To: <1467046452-1261-1-git-send-email-julien.grall@arm.com>

p2m_cache_flush is expecting GFNs in parameter and not MFNs. Rename
the variable to *gfn* and use typesafe to avoid possible misusage.

Also, modify the prototype of the function to describe the range
using the start and the number of GFNs. This will avoid to wonder
whether the end if inclusive or exclusive.

Note that the type of the parameters 'start' is changed from xen_pfn_t
(aka uint64_t) to gfn_t (aka unsigned long). This means that a truncation
will occur for ARM32. It is fine because it will always be encoded on 28
bits maximum (40 bits address).

Signed-off-by: Julien Grall <julien.grall@arm.com>

---
    Changes in v4:
        - This patch was originally called "xen/arm: p2m_cache_flush:
        Use the correct terminology and typesafe gfn"
        - Describe the range using the start and the number of GFNs.

    Changes in v3:
        - Add a word in the commit message about the truncation.

    Changes in v2:
        - Drop _gfn suffix
---
 xen/arch/arm/domctl.c     |  2 +-
 xen/arch/arm/p2m.c        | 11 ++++++-----
 xen/include/asm-arm/p2m.h |  2 +-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
index 30453d8..f61f98a 100644
--- a/xen/arch/arm/domctl.c
+++ b/xen/arch/arm/domctl.c
@@ -30,7 +30,7 @@ long arch_do_domctl(struct xen_domctl *domctl, struct domain *d,
         if ( e < s )
             return -EINVAL;
 
-        return p2m_cache_flush(d, s, e);
+        return p2m_cache_flush(d, _gfn(s), domctl->u.cacheflush.nr_pfns);
     }
     case XEN_DOMCTL_bind_pt_irq:
     {
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 65818dd..1a10019 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -1469,16 +1469,17 @@ int relinquish_p2m_mapping(struct domain *d)
                               d->arch.p2m.default_access);
 }
 
-int p2m_cache_flush(struct domain *d, xen_pfn_t start_mfn, xen_pfn_t end_mfn)
+int p2m_cache_flush(struct domain *d, gfn_t start, unsigned long nr)
 {
     struct p2m_domain *p2m = &d->arch.p2m;
+    gfn_t end = gfn_add(start, nr);
 
-    start_mfn = MAX(start_mfn, p2m->lowest_mapped_gfn);
-    end_mfn = MIN(end_mfn, p2m->max_mapped_gfn);
+    start = gfn_max(start, _gfn(p2m->lowest_mapped_gfn));
+    end = gfn_min(end, _gfn(p2m->max_mapped_gfn));
 
     return apply_p2m_changes(d, CACHEFLUSH,
-                             pfn_to_paddr(start_mfn),
-                             pfn_to_paddr(end_mfn),
+                             pfn_to_paddr(gfn_x(start)),
+                             pfn_to_paddr(gfn_x(end)),
                              pfn_to_paddr(INVALID_MFN),
                              MATTR_MEM, 0, p2m_invalid,
                              d->arch.p2m.default_access);
diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h
index f204482..8a96e68 100644
--- a/xen/include/asm-arm/p2m.h
+++ b/xen/include/asm-arm/p2m.h
@@ -139,7 +139,7 @@ void p2m_dump_info(struct domain *d);
 mfn_t p2m_lookup(struct domain *d, gfn_t gfn, p2m_type_t *t);
 
 /* Clean & invalidate caches corresponding to a region of guest address space */
-int p2m_cache_flush(struct domain *d, xen_pfn_t start_mfn, xen_pfn_t end_mfn);
+int p2m_cache_flush(struct domain *d, gfn_t start, unsigned long nr);
 
 /* Setup p2m RAM mapping for domain d from start-end. */
 int p2m_populate_ram(struct domain *d, paddr_t start, paddr_t end);
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2016-06-27 16:54 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-27 16:53 [PATCH v4 00/16] xen/arm: Use the typesafes gfn and mfn Julien Grall
2016-06-27 16:53 ` [PATCH v4 01/16] xen: Use typesafe gfn/mfn in guest_physmap_* helpers Julien Grall
2016-06-27 16:53 ` [PATCH v4 02/16] xen: Use typesafe gfn in xenmem_add_to_physmap_one Julien Grall
2016-06-27 16:53 ` [PATCH v4 03/16] xen/arm: Rename grant_table_gfpn into grant_table_gfn and use the typesafe gfn Julien Grall
2016-06-27 16:54 ` [PATCH v4 04/16] xen: Use the typesafe mfn and gfn in map_mmio_regions Julien Grall
2016-06-27 16:54 ` [PATCH v4 05/16] xen/mm: Introduce INVALID_GFN_T and INVALID_MFN_T Julien Grall
2016-06-28  7:16   ` Jan Beulich
2016-06-28  7:29     ` Andrew Cooper
2016-06-28  7:54       ` Jan Beulich
2016-06-27 16:54 ` [PATCH v4 06/16] xen/arm: Rework the interface of p2m_lookup and use typesafe gfn and mfn Julien Grall
2016-06-27 16:54 ` Julien Grall [this message]
2016-06-27 16:54 ` [PATCH v4 08/16] xen: Replace _mfn(INVALID_MFN) with MFN_INVALID_T Julien Grall
2016-06-28  7:19   ` Jan Beulich
2016-06-28 12:18     ` Julien Grall
2016-06-27 16:54 ` [PATCH v4 09/16] xen/arm: map_regions_rw_cache: Map the region with p2m->default_access Julien Grall
2016-06-27 16:54 ` [PATCH v4 10/16] xen/arm: dom0_build: Remove dead code in allocate_memory Julien Grall
2016-06-27 16:54 ` [PATCH v4 11/16] xen/arm: p2m: Remove unused operation ALLOCATE Julien Grall
2016-06-27 16:54 ` [PATCH v4 12/16] xen/arm: Use the typesafes mfn and gfn in map_dev_mmio_region Julien Grall
2016-06-27 16:54 ` [PATCH v4 13/16] xen/arm: Use the typesafes mfn and gfn in map_regions_rw_cache Julien Grall
2016-06-27 16:54 ` [PATCH v4 14/16] xen/arm: p2m: Introduce helpers to insert and remove mapping Julien Grall
2016-06-27 16:54 ` [PATCH v4 15/16] xen/arm: p2m: Use typesafe gfn for {max, lowest}_mapped_gfn Julien Grall
2016-06-27 16:54 ` [PATCH v4 16/16] xen/arm: p2m: Rework the interface of apply_p2m_changes and use typesafe Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1467046452-1261-8-git-send-email-julien.grall@arm.com \
    --to=julien.grall@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=wei.chen@linaro.org \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).