# 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
|