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

[Xen-changelog] [xen stable-4.5] xen/arm: Correctly report the memory region in the dummy NUMA helpers



commit db487a6678521c213f7bfe3bab4a3170d46d2b41
Author:     Julien Grall <julien.grall@xxxxxxx>
AuthorDate: Fri Oct 6 15:22:47 2017 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Oct 6 15:22:47 2017 +0200

    xen/arm: Correctly report the memory region in the dummy NUMA helpers
    
    NUMA is currently not supported on Arm. Because common code is
    NUMA-aware, dummy helpers are instead provided to expose a single node.
    
    Those helpers are for instance used to know the region to scrub.
    
    However the memory region is not reported correctly. Indeed, the
    frametable may not be at the beginning of the memory and there might be
    multiple memory banks. This will lead to not scrub some part of the
    memory.
    
    The memory information can be found using:
        * first_valid_mfn as the start of the memory
        * max_page - first_valid_mfn as the spanned pages
    
    Note that first_valid_mfn is now been exported. The prototype has been
    added in asm-arm/numa.h and not in a common header because I would
    expect the variable to become static once NUMA is fully supported on
    Arm.
    
    This is XSA-245.
    
    Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
    Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
    Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
    Reported-and-Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
    master commit: 5414ba7f5e1ffc88ed2758b1e1b14bbfd3536a61
    master date: 2017-09-29 13:23:11 -0700
---
 xen/common/page_alloc.c    |  6 +++++-
 xen/include/asm-arm/numa.h | 10 ++++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 92d9c14..b2e8696 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -90,7 +90,11 @@ PAGE_LIST_HEAD(page_broken_list);
  * BOOT-TIME ALLOCATOR
  */
 
-static unsigned long __initdata first_valid_mfn = ~0UL;
+/*
+ * first_valid_mfn is exported because it is use in ARM specific NUMA
+ * helpers. See comment in asm-arm/numa.h.
+ */
+unsigned long first_valid_mfn = ~0UL;
 
 static struct bootmem_region {
     unsigned long s, e; /* MFNs @s through @e-1 inclusive are free */
diff --git a/xen/include/asm-arm/numa.h b/xen/include/asm-arm/numa.h
index 6f72b65..c2f997b 100644
--- a/xen/include/asm-arm/numa.h
+++ b/xen/include/asm-arm/numa.h
@@ -10,9 +10,15 @@ static inline __attribute__((pure)) int phys_to_nid(paddr_t 
addr)
     return 0;
 }
 
+/*
+ * TODO: make first_valid_mfn static when NUMA is supported on Arm, this
+ * is required because the dummy helpers are using it.
+ */
+extern unsigned long first_valid_mfn;
+
 /* XXX: implement NUMA support */
-#define node_spanned_pages(nid) (total_pages)
-#define node_start_pfn(nid) (pdx_to_pfn(frametable_base_pdx))
+#define node_spanned_pages(nid) (max_page - first_valid_mfn)
+#define node_start_pfn(nid) (first_valid_mfn)
 #define __node_distance(a, b) (20)
 
 static inline unsigned int arch_get_dma_bitsize(void)
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.5

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

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