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

Re: [Xen-devel] [PATCH v4 3/8] hvmloader: Set up highmem resouce appropriately if there is no RAM above 4G



On Fri, 21 Jun 2013, George Dunlap wrote:
> 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: Geore Dunlap <george.dunlap@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>


Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>


>  tools/firmware/hvmloader/pci.c |   13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> 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;
> -- 
> 1.7.9.5
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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