xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Arianna Avanzini <avanzini.arianna@gmail.com>
To: xen-devel@lists.xen.org
Cc: Ian.Campbell@eu.citrix.com, paolo.valente@unimore.it,
	keir@xen.org, stefano.stabellini@eu.citrix.com,
	Ian.Jackson@eu.citrix.com, dario.faggioli@citrix.com,
	tim@xen.org, julien.grall@citrix.com, etrudeau@broadcom.com,
	JBeulich@suse.com, avanzini.arianna@gmail.com,
	viktor.kleinik@globallogic.com
Subject: [PATCH v6 04/11] arch, arm: make pfn range passed to map_mmio_regions() inclusive
Date: Mon, 21 Apr 2014 15:44:57 +0200	[thread overview]
Message-ID: <1398087904-16594-5-git-send-email-avanzini.arianna@gmail.com> (raw)
In-Reply-To: <1398087904-16594-1-git-send-email-avanzini.arianna@gmail.com>

Currently, the map_mmio_regions() function accepts a range of pfns
which is not inclusive of the end frame number. However, the
corresponding operation performed for the x86 architecture, which
will be factored out from the memory_mapping DOMCTL in one of the
following commits, accepts a pfn range which is inclusive of the
end pfn.
This commit attempts to make such an interface consistent, by
letting map_mmio_regions() consider a pfn range inclusive of the
end pfn.

Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
Cc: Dario Faggioli <dario.faggioli@citrix.com>
Cc: Paolo Valente <paolo.valente@unimore.it>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Julien Grall <julien.grall@citrix.com>
Cc: Ian Campbell <Ian.Campbell@eu.citrix.com>
Cc: Jan Beulich <JBeulich@suse.com>
Cc: Keir Fraser <keir@xen.org>
Cc: Tim Deegan <tim@xen.org>
Cc: Ian Jackson <Ian.Jackson@eu.citrix.com>
Cc: Eric Trudeau <etrudeau@broadcom.com>
Cc: Viktor Kleinik <viktor.kleinik@globallogic.com>
---
 xen/arch/arm/domain_build.c          | 2 +-
 xen/arch/arm/gic.c                   | 6 +++---
 xen/arch/arm/p2m.c                   | 2 +-
 xen/arch/arm/platforms/exynos5.c     | 4 ++--
 xen/arch/arm/platforms/omap5.c       | 8 ++++----
 xen/arch/arm/platforms/xgene-storm.c | 2 +-
 xen/include/asm-arm/p2m.h            | 5 +++--
 7 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 15db84b..0d55468 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -753,7 +753,7 @@ static int map_device(struct domain *d, const struct dt_device_node *dev)
         }
         res = map_mmio_regions(d,
                                paddr_to_pfn(addr & PAGE_MASK),
-                               paddr_to_pfn_aligned(addr + size - 1),
+                               paddr_to_pfn_aligned(addr + size) - 1,
                                paddr_to_pfn(addr & PAGE_MASK));
         if ( res )
         {
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index a5c3288..11fbd42 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -890,7 +890,7 @@ int gicv_setup(struct domain *d)
      */
     ret = map_mmio_regions(d, paddr_to_pfn(d->arch.vgic.cbase),
                            paddr_to_pfn_aligned(d->arch.vgic.cbase +
-                                                PAGE_SIZE - 1),
+                                                PAGE_SIZE) - 1,
                            paddr_to_pfn(gic.vbase));
     if (ret)
         return ret;
@@ -898,12 +898,12 @@ int gicv_setup(struct domain *d)
     if ( !platform_has_quirk(PLATFORM_QUIRK_GIC_64K_STRIDE) )
         ret = map_mmio_regions(d, paddr_to_pfn(d->arch.vgic.cbase + PAGE_SIZE),
                                paddr_to_pfn_aligned(d->arch.vgic.cbase +
-			                            (2 * PAGE_SIZE) - 1),
+			                            (2 * PAGE_SIZE)) - 1,
                                paddr_to_pfn(gic.vbase + PAGE_SIZE));
     else
         ret = map_mmio_regions(d, paddr_to_pfn(d->arch.vgic.cbase + PAGE_SIZE),
                                paddr_to_pfn_aligned(d->arch.vgic.cbase +
-			                            (2 * PAGE_SIZE) - 1),
+			                            (2 * PAGE_SIZE)) - 1,
                                paddr_to_pfn(gic.vbase + 16*PAGE_SIZE));
 
     return ret;
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index eb9da33..54a0afa 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -517,7 +517,7 @@ int map_mmio_regions(struct domain *d,
 {
     return apply_p2m_changes(d, INSERT,
                              pfn_to_paddr(start_gfn),
-                             pfn_to_paddr(end_gfn),
+                             pfn_to_paddr(end_gfn + 1),
                              pfn_to_paddr(mfn),
                              MATTR_DEV, p2m_mmio_direct);
 }
diff --git a/xen/arch/arm/platforms/exynos5.c b/xen/arch/arm/platforms/exynos5.c
index acd8781..d8c0b82 100644
--- a/xen/arch/arm/platforms/exynos5.c
+++ b/xen/arch/arm/platforms/exynos5.c
@@ -55,13 +55,13 @@ static int exynos5_specific_mapping(struct domain *d)
 {
     /* Map the chip ID */
     map_mmio_regions(d, paddr_to_pfn(EXYNOS5_PA_CHIPID),
-                     paddr_to_pfn_aligned(EXYNOS5_PA_CHIPID + PAGE_SIZE - 1),
+                     paddr_to_pfn_aligned(EXYNOS5_PA_CHIPID + PAGE_SIZE) - 1,
                      paddr_to_pfn(EXYNOS5_PA_CHIPID));
 
     /* Map the PWM region */
     map_mmio_regions(d, paddr_to_pfn(EXYNOS5_PA_TIMER),
                      paddr_to_pfn_aligned(EXYNOS5_PA_TIMER +
-                                          (PAGE_SIZE * 2) - 1),
+                                          (PAGE_SIZE * 2)) - 1,
                      paddr_to_pfn(EXYNOS5_PA_TIMER));
 
     return 0;
diff --git a/xen/arch/arm/platforms/omap5.c b/xen/arch/arm/platforms/omap5.c
index c975020..3876456 100644
--- a/xen/arch/arm/platforms/omap5.c
+++ b/xen/arch/arm/platforms/omap5.c
@@ -103,22 +103,22 @@ static int omap5_specific_mapping(struct domain *d)
 {
     /* Map the PRM module */
     map_mmio_regions(d, paddr_to_pfn(OMAP5_PRM_BASE),
-                     paddr_to_pfn_aligned(OMAP5_PRM_BASE + (PAGE_SIZE * 2) - 1),
+                     paddr_to_pfn_aligned(OMAP5_PRM_BASE + (PAGE_SIZE * 2)) - 1,
                      paddr_to_pfn(OMAP5_PRM_BASE));
 
     /* Map the PRM_MPU */
     map_mmio_regions(d, paddr_to_pfn(OMAP5_PRCM_MPU_BASE),
-                     paddr_to_pfn_aligned(OMAP5_PRCM_MPU_BASE + PAGE_SIZE - 1),
+                     paddr_to_pfn_aligned(OMAP5_PRCM_MPU_BASE + PAGE_SIZE) - 1,
                      paddr_to_pfn(OMAP5_PRCM_MPU_BASE));
 
     /* Map the Wakeup Gen */
     map_mmio_regions(d, paddr_to_pfn(OMAP5_WKUPGEN_BASE),
-                     paddr_to_pfn_aligned(OMAP5_WKUPGEN_BASE + PAGE_SIZE - 1),
+                     paddr_to_pfn_aligned(OMAP5_WKUPGEN_BASE + PAGE_SIZE) - 1,
                      paddr_to_pfn(OMAP5_WKUPGEN_BASE));
 
     /* Map the on-chip SRAM */
     map_mmio_regions(d, paddr_to_pfn(OMAP5_SRAM_PA),
-                     paddr_to_pfn_aligned(OMAP5_SRAM_PA + (PAGE_SIZE * 32) - 1),
+                     paddr_to_pfn_aligned(OMAP5_SRAM_PA + (PAGE_SIZE * 32)) - 1,
                      paddr_to_pfn(OMAP5_SRAM_PA));
 
     return 0;
diff --git a/xen/arch/arm/platforms/xgene-storm.c b/xen/arch/arm/platforms/xgene-storm.c
index f3662fd..6187d02 100644
--- a/xen/arch/arm/platforms/xgene-storm.c
+++ b/xen/arch/arm/platforms/xgene-storm.c
@@ -48,7 +48,7 @@ static int map_one_mmio(struct domain *d, const char *what,
     printk("Additional MMIO %"PRIpaddr"-%"PRIpaddr" (%s)\n",
            start, end, what);
     ret = map_mmio_regions(d, paddr_to_pfn(start),
-                           paddr_to_pfn_aligned(end),
+                           paddr_to_pfn_aligned(end) - 1,
                            paddr_to_pfn(start));
     if ( ret )
         printk("Failed to map %s @ %"PRIpaddr" to dom%d\n",
diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h
index c7dd6aa..f75dd44 100644
--- a/xen/include/asm-arm/p2m.h
+++ b/xen/include/asm-arm/p2m.h
@@ -84,8 +84,9 @@ int p2m_cache_flush(struct domain *d, xen_pfn_t start_mfn, xen_pfn_t end_mfn);
 
 /* Setup p2m RAM mapping for domain d from start-end. */
 int p2m_populate_ram(struct domain *d, paddr_t start, paddr_t end);
-/* Map MMIO regions in the p2m: start_gfn and end_gfn is the range in the guest
- * physical address space to map, starting from the machine frame number mfn. */
+/* Map MMIO regions in the p2m: start_gfn and end_gfn is the range, inclusive
+ * of the end_gfn frame number, in the guest physical address space to map,
+ * starting from the machine frame number mfn. */
 int map_mmio_regions(struct domain *d,
                      unsigned long start_gfn,
                      unsigned long end_gfn,
-- 
1.9.1

  parent reply	other threads:[~2014-04-21 13:44 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-21 13:44 [PATCH v6 00/11] Implement the XEN_DOMCTL_memory_mapping hypercall for ARM Arianna Avanzini
2014-04-21 13:44 ` [PATCH v6 01/11] arch, arm: domain build: let dom0 access I/O memory of mapped devices Arianna Avanzini
2014-04-29 12:37   ` Julien Grall
2014-04-29 13:44     ` Julien Grall
2014-04-29 23:12       ` Arianna Avanzini
2014-04-21 13:44 ` [PATCH v6 02/11] arch, arm: add consistency check to REMOVE p2m changes Arianna Avanzini
2014-04-22 19:35   ` Julien Grall
2014-04-21 13:44 ` [PATCH v6 03/11] arch, arm: let map_mmio_regions() take pfn as parameters Arianna Avanzini
2014-04-28 13:13   ` Ian Campbell
2014-04-21 13:44 ` Arianna Avanzini [this message]
2014-04-22 19:52   ` [PATCH v6 04/11] arch, arm: make pfn range passed to map_mmio_regions() inclusive Julien Grall
2014-04-28 13:15     ` Ian Campbell
2014-04-21 13:44 ` [PATCH v6 05/11] arch, x86: check if mapping exists before memory_mapping removes it Arianna Avanzini
2014-04-22  8:34   ` Jan Beulich
2014-04-22  8:53     ` Julien Grall
2014-04-22  9:20       ` Jan Beulich
2014-04-21 13:44 ` [PATCH v6 06/11] xen, x86: factor out map and unmap from the memory_mapping DOMCTL Arianna Avanzini
2014-04-21 16:14   ` Andrew Cooper
2014-04-22  8:50     ` Jan Beulich
2014-04-22  8:48   ` Jan Beulich
2014-04-21 13:45 ` [PATCH v6 07/11] xen, common: move the memory_mapping DOMCTL hypercall to common code Arianna Avanzini
2014-04-22  8:55   ` Jan Beulich
2014-04-21 13:45 ` [PATCH v6 08/11] tools, libxl: parse optional start gfn from the iomem config option Arianna Avanzini
2014-04-22 19:57   ` Julien Grall
2014-04-28 13:20   ` Ian Campbell
2014-05-01 17:29     ` Julien Grall
2014-04-21 13:45 ` [PATCH v6 09/11] tools, libxl: add helpers to establish if guest is auto-translated Arianna Avanzini
2014-04-28 13:22   ` Ian Campbell
2014-04-21 13:45 ` [PATCH v6 10/11] tools, libxl: handle the iomem parameter with the memory_mapping hcall Arianna Avanzini
2014-04-22 20:03   ` Julien Grall
2014-04-28 13:25     ` Ian Campbell
2014-04-28 13:32       ` Julien Grall
2014-04-28 13:24   ` Ian Campbell
2014-04-21 13:45 ` [PATCH v6 11/11] xen, common: do not implicitly permit access to mapped I/O memory Arianna Avanzini
2014-04-22  9:12   ` Jan Beulich
2014-04-28 13:33     ` Ian Campbell
2014-04-28 13:54       ` Jan Beulich
2014-04-28 14:20         ` Ian Campbell
2014-04-28 13:28   ` Ian Campbell

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=1398087904-16594-5-git-send-email-avanzini.arianna@gmail.com \
    --to=avanzini.arianna@gmail.com \
    --cc=Ian.Campbell@eu.citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=dario.faggioli@citrix.com \
    --cc=etrudeau@broadcom.com \
    --cc=julien.grall@citrix.com \
    --cc=keir@xen.org \
    --cc=paolo.valente@unimore.it \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=viktor.kleinik@globallogic.com \
    --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).