[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Fix 17725:c0c0f4fa8850: use type paddr_t instead of unsigned long for physcial memory address
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1211880910 -3600 # Node ID e265878e8f657ca532ebe98b5bac233f395f2814 # Parent 80ee45e007e1fc3d500d800a6c0aaa56e815e262 Fix 17725:c0c0f4fa8850: use type paddr_t instead of unsigned long for physcial memory address Otherwise, the address overflows on PAE system with memory size > 4G. Signed-off-by: Yang, Xiaowei <xiaowei.yang@xxxxxxxxx> --- xen/arch/x86/setup.c | 8 ++++---- xen/arch/x86/tboot.c | 6 +++--- xen/drivers/passthrough/vtd/iommu.c | 7 ++++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff -r 80ee45e007e1 -r e265878e8f65 xen/arch/x86/setup.c --- a/xen/arch/x86/setup.c Tue May 27 10:31:55 2008 +0100 +++ b/xen/arch/x86/setup.c Tue May 27 10:35:10 2008 +0100 @@ -1100,10 +1100,10 @@ void arch_get_xen_caps(xen_capabilities_ #endif } -int xen_in_range(unsigned long start, unsigned long end) -{ - start = max_t(unsigned long, start, xenheap_phys_start); - end = min_t(unsigned long, end, xenheap_phys_end); +int xen_in_range(paddr_t start, paddr_t end) +{ + start = max_t(paddr_t, start, xenheap_phys_start); + end = min_t(paddr_t, end, xenheap_phys_end); return start < end; } diff -r 80ee45e007e1 -r e265878e8f65 xen/arch/x86/tboot.c --- a/xen/arch/x86/tboot.c Tue May 27 10:31:55 2008 +0100 +++ b/xen/arch/x86/tboot.c Tue May 27 10:35:10 2008 +0100 @@ -96,13 +96,13 @@ int tboot_in_measured_env(void) return (g_tboot_shared != NULL); } -int tboot_in_range(unsigned long start, unsigned long end) +int tboot_in_range(paddr_t start, paddr_t end) { if ( g_tboot_shared == NULL || g_tboot_shared->version < 0x02 ) return 0; - start = max_t(unsigned long, start, g_tboot_shared->tboot_base); - end = min_t(unsigned long, end, + start = max_t(paddr_t, start, g_tboot_shared->tboot_base); + end = min_t(paddr_t, end, g_tboot_shared->tboot_base + g_tboot_shared->tboot_size); return start < end; diff -r 80ee45e007e1 -r e265878e8f65 xen/drivers/passthrough/vtd/iommu.c --- a/xen/drivers/passthrough/vtd/iommu.c Tue May 27 10:31:55 2008 +0100 +++ b/xen/drivers/passthrough/vtd/iommu.c Tue May 27 10:35:10 2008 +0100 @@ -1074,7 +1074,8 @@ static int intel_iommu_domain_init(struc struct hvm_iommu *hd = domain_hvm_iommu(d); struct iommu *iommu = NULL; int guest_width = DEFAULT_DOMAIN_ADDRESS_WIDTH; - int i, adjust_width, agaw; + int adjust_width, agaw; + u64 i; unsigned long sagaw; struct acpi_drhd_unit *drhd; @@ -1102,8 +1103,8 @@ static int intel_iommu_domain_init(struc if ( d->domain_id == 0 ) { - extern int xen_in_range(unsigned long start, unsigned long end); - extern int tboot_in_range(unsigned long start, unsigned long end); + extern int xen_in_range(paddr_t start, paddr_t end); + extern int tboot_in_range(paddr_t start, paddr_t end); /* * Set up 1:1 page table for dom0 except the critical segments _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |