aboutsummaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-10-08 14:36:30 +0100
committerMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-10-08 14:36:30 +0100
commitb8902baf80d75b7f5832dc435a868dfcc4d1f36f (patch)
treef278a06f47ae8bbbef23266a9684a94a37c63674 /extras
parent7ab9bbf9f8b922a25eb3d37ff5fd9b6a730bf85c (diff)
downloadxen-b8902baf80d75b7f5832dc435a868dfcc4d1f36f.tar.gz
xen-b8902baf80d75b7f5832dc435a868dfcc4d1f36f.tar.bz2
xen-b8902baf80d75b7f5832dc435a868dfcc4d1f36f.zip
minios: Disable the mfn_is_ram() check, it doesn't work correctly on all systems
This patch disables the mfn_is_ram check in mini-os. The current check is insufficient and fails on some systems with larger than 4gb memory. Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu> Acked-by: Samuel Thibault <samuel.thibault@ens-lyons.org> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'extras')
-rw-r--r--extras/mini-os/arch/x86/ioremap.c13
-rw-r--r--extras/mini-os/arch/x86/mm.c16
-rw-r--r--extras/mini-os/include/x86/arch_mm.h1
3 files changed, 0 insertions, 30 deletions
diff --git a/extras/mini-os/arch/x86/ioremap.c b/extras/mini-os/arch/x86/ioremap.c
index c7f818609c..4384b1c0a4 100644
--- a/extras/mini-os/arch/x86/ioremap.c
+++ b/extras/mini-os/arch/x86/ioremap.c
@@ -35,7 +35,6 @@ static void *__do_ioremap(unsigned long phys_addr, unsigned long size,
unsigned long va;
unsigned long mfns, mfn;
unsigned long num_pages, offset;
- int i;
/* allow non page aligned addresses but for mapping we need to align them */
offset = (phys_addr & ~PAGE_MASK);
@@ -43,21 +42,9 @@ static void *__do_ioremap(unsigned long phys_addr, unsigned long size,
phys_addr &= PAGE_MASK;
mfns = mfn = phys_addr >> PAGE_SHIFT;
- /* sanity checks on list of MFNs */
- for ( i = 0; i < num_pages; i++, mfn++ )
- {
- if ( mfn_is_ram(mfn) )
- {
- printk("ioremap: mfn 0x%ulx is RAM\n", mfn);
- goto mfn_invalid;
- }
- }
va = (unsigned long)map_frames_ex(&mfns, num_pages, 0, 1, 1,
DOMID_IO, NULL, prot);
return (void *)(va + offset);
-
-mfn_invalid:
- return NULL;
}
void *ioremap(unsigned long phys_addr, unsigned long size)
diff --git a/extras/mini-os/arch/x86/mm.c b/extras/mini-os/arch/x86/mm.c
index 80aceacd2a..35df15bd1e 100644
--- a/extras/mini-os/arch/x86/mm.c
+++ b/extras/mini-os/arch/x86/mm.c
@@ -845,18 +845,6 @@ unsigned long alloc_contig_pages(int order, unsigned int addr_bits)
}
/*
- * Check if a given MFN refers to real memory
- */
-static long system_ram_end_mfn;
-int mfn_is_ram(unsigned long mfn)
-{
- /* very crude check if a given MFN is memory or not. Probably should
- * make this a little more sophisticated ;) */
- return (mfn <= system_ram_end_mfn) ? 1 : 0;
-}
-
-
-/*
* Clear some of the bootstrap memory
*/
static void clear_bootstrap(void)
@@ -951,10 +939,6 @@ void arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p)
clear_bootstrap();
set_readonly(&_text, &_erodata);
- /* get the number of physical pages the system has. Used to check for
- * system memory. */
- system_ram_end_mfn = HYPERVISOR_memory_op(XENMEM_maximum_ram_page, NULL);
-
*start_pfn_p = start_pfn;
*max_pfn_p = max_pfn;
}
diff --git a/extras/mini-os/include/x86/arch_mm.h b/extras/mini-os/include/x86/arch_mm.h
index a95632ad49..23cfca7bfe 100644
--- a/extras/mini-os/include/x86/arch_mm.h
+++ b/extras/mini-os/include/x86/arch_mm.h
@@ -229,6 +229,5 @@ static __inline__ paddr_t machine_to_phys(maddr_t machine)
#define do_map_zero(start, n) do_map_frames(start, &mfn_zero, n, 0, 0, DOMID_SELF, NULL, L1_PROT_RO)
pgentry_t *need_pgt(unsigned long addr);
-int mfn_is_ram(unsigned long mfn);
#endif /* _ARCH_MM_H_ */