xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Julien Grall <julien.grall@citrix.com>,
	Wei.Liu2@citrix.com, stefano.stabellini@citrix.com,
	ian.campbell@citrix.com
Subject: [PATCH for-4.6] xen/arm: vgic-v2: Map the GIC virtual CPU interface with the correct size
Date: Thu, 17 Sep 2015 19:00:03 +0100	[thread overview]
Message-ID: <1442512803-798-1-git-send-email-julien.grall@citrix.com> (raw)

On GICv2, the GIC virtual CPU interface is at minimum 8KB. Due some to
some necessary quirk for GIC using 64KB stride, we are mapping the
region in 2 time.
The first mapping is 4KB and the second one is 8KB, i.e 12KB in total.
Although the minimum supported size (and widely used) is 8KB. This means
that we are mapping 4KB more to any guest using GICv2.

While this looks scary at first glance, the GIC virtual CPU interface is
most frequently at the end the GIC I/O region. So we will most likely
map an an unused I/O region or a mirrored version of GICV for platform
using 64KB stride.

Nonetheless, fix the second mapping to only map 4KB.

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

This is a candidate for Xen 4.6 and backport to Xen 4.5. Without this
patch we are mapping 4KB more than we should to any guest. While this
looks scary at first glance, in pratice there is always space after the
GIC I/O region. So we would just expose unused I/O range.

Boot tested on midway (ARM32) and x-gene (ARM64).
---
 xen/arch/arm/vgic-v2.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c
index 524787b..fa71598 100644
--- a/xen/arch/arm/vgic-v2.c
+++ b/xen/arch/arm/vgic-v2.c
@@ -576,10 +576,10 @@ static int vgic_v2_domain_init(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),
-                               2, paddr_to_pfn(vgic_v2_hw.vbase + PAGE_SIZE));
+                               1, paddr_to_pfn(vgic_v2_hw.vbase + PAGE_SIZE));
     else
         ret = map_mmio_regions(d, paddr_to_pfn(d->arch.vgic.cbase + PAGE_SIZE),
-                               2, paddr_to_pfn(vgic_v2_hw.vbase + SZ_64K));
+                               1, paddr_to_pfn(vgic_v2_hw.vbase + SZ_64K));
 
     if ( ret )
         return ret;
-- 
2.1.4

             reply	other threads:[~2015-09-17 18:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-17 18:00 Julien Grall [this message]
2015-09-18  8:53 ` [PATCH for-4.6] xen/arm: vgic-v2: Map the GIC virtual CPU interface with the correct size Ian Campbell
2015-09-21 11:54   ` Ian Campbell
2015-09-21 12:28     ` Julien Grall
2015-09-21 12:56       ` 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=1442512803-798-1-git-send-email-julien.grall@citrix.com \
    --to=julien.grall@citrix.com \
    --cc=Wei.Liu2@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=xen-devel@lists.xenproject.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).