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

[Xen-changelog] [xen master] hvmloader: Set up highmem resouce appropriately if there is no RAM above 4G



commit 42d075411bc68effe8c75dca27447ba7c72da208
Author:     George Dunlap <george.dunlap@xxxxxxxxxxxxx>
AuthorDate: Wed Jun 19 17:30:13 2013 +0100
Commit:     Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
CommitDate: Mon Jun 24 12:20:29 2013 +0100

    hvmloader: Set up highmem resouce appropriately if there is no RAM above 4G
    
    hvmloader will read hvm_info->high_mem_pgend to calculate where to
    start the highmem PCI region.  However, if the guest does not have any
    memory in the high region, this is set to zero, which will cause
    hvmloader to use the "0" for the base of the highmem region, rather
    than 1 << 32.
    
    Check to see whether hvm_info->high_mem_pgend is set; if so, do the
    normal calculation; otherwise, use 1<<32.
    
    v4:
     - Handle case where hfm_info->high_mem_pgend is non-zero but doesn't
       point into high memory, throwing a warning.
    
    Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
    Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
    Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
    CC: Ian Campbell <ian.campbell@xxxxxxxxxx>
    CC: Ian Jackson <ian.jackson@xxxxxxxxxx>
    CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
    CC: Hanweidong <hanweidong@xxxxxxxxxx>
    CC: Keir Fraser <keir@xxxxxxx>
---
 tools/firmware/hvmloader/pci.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 44168e2..a3d03ed 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -246,7 +246,18 @@ void pci_setup(void)
         hvm_info->high_mem_pgend += nr_pages;
     }
 
-    high_mem_resource.base = ((uint64_t)hvm_info->high_mem_pgend) << 
PAGE_SHIFT; 
+    high_mem_resource.base = ((uint64_t)hvm_info->high_mem_pgend) << 
PAGE_SHIFT;
+    if ( high_mem_resource.base < 1ull << 32 )
+    {
+        if ( hvm_info->high_mem_pgend != 0 )
+            printf("WARNING: hvm_info->high_mem_pgend %x"
+                   " does not point into high memory!",
+                   hvm_info->high_mem_pgend);
+        high_mem_resource.base = 1ull << 32;
+    }
+    printf("%sRAM in high memory; setting high_mem resource base to 
"PRIllx"\n",
+           hvm_info->high_mem_pgend?"":"No ",
+           PRIllx_arg(high_mem_resource.base));
     high_mem_resource.max = 1ull << cpu_phys_addr();
     mem_resource.base = pci_mem_start;
     mem_resource.max = pci_mem_end;
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
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®.