[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen stable-4.6] xen/arm: vgic-v2: Map the GIC virtual CPU interface with the correct size



commit f9e7b0b7033b8aeabc841f9a4af5985e65d502da
Author:     Julien Grall <julien.grall@xxxxxxxxxx>
AuthorDate: Thu Sep 17 19:00:03 2015 +0100
Commit:     Ian Campbell <ian.campbell@xxxxxxxxxx>
CommitDate: Mon Sep 21 12:32:04 2015 +0100

    xen/arm: vgic-v2: Map the GIC virtual CPU interface with the correct size
    
    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@xxxxxxxxxx>
    Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
    (cherry picked from commit 493a67ee4a3fd9420e94fa2cf108e2a27961202b)
---
 xen/arch/arm/vgic-v2.c |    4 ++--
 1 files 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;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.6

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.