return 1;
}
-int memory_is_conventional_ram(paddr_t p)
+int page_is_conventional_ram(unsigned long mfn) /* CS 19085 mem to page */
{
- return (efi_mem_type(p) == EFI_CONVENTIONAL_MEMORY);
+ return (efi_mem_type(pfn_to_paddr(mfn)) == EFI_CONVENTIONAL_MEMORY);
}
subarch_init_memory();
}
-int memory_is_conventional_ram(paddr_t p)
+int page_is_conventional_ram(unsigned long mfn) /* CS 19085 mem to page, CS 19083 fixed test */
{
+ uint64_t maddr = pfn_to_paddr(mfn);
int i;
for ( i = 0; i < e820.nr_map; i++ )
{
if ( (e820.map[i].type == E820_RAM) &&
- (e820.map[i].addr <= p) &&
- (e820.map[i].size > p) )
+ (e820.map[i].addr <= maddr) &&
+ ((e820.map[i].addr + e820.map[i].size) >= (maddr + PAGE_SIZE)) )
return 1;
}
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;
+ /* CS 19060 removed xenheap_phys_start, CS 19081 fixed 64b range */
+#if defined(CONFIG_X86_32)
+ paddr_t xs = 0;
+ paddr_t xe = xenheap_phys_end;
+#else
+ paddr_t xs = __pa(&_stext);
+ paddr_t xe = __pa(&_etext);
+#endif
+
+ return (start < xe) && (end > xs);
}
/*
return (g_tboot_shared != NULL);
}
-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(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;
-}
-
/*
* Local variables:
* mode: C
if ( d->domain_id == 0 )
{
- extern int xen_in_range(paddr_t start, paddr_t end);
- extern int tboot_in_range(paddr_t start, paddr_t end);
+ extern int xen_in_range(paddr_t start, paddr_t end);
/*
* Set up 1:1 page table for dom0 except the critical segments
*/
for ( i = 0; i < max_page; i++ )
{
- if ( xen_in_range(i << PAGE_SHIFT_4K, (i + 1) << PAGE_SHIFT_4K) ||
- tboot_in_range(i << PAGE_SHIFT_4K, (i + 1) << PAGE_SHIFT_4K) )
+ /* CS 19084 remove tboot_in_range, CS 19085 use page_is_conventional_ram */
+ if ( !page_is_conventional_ram(i) ||
+ xen_in_range(i << PAGE_SHIFT, (i + 1) << PAGE_SHIFT) )
continue;
iommu_map_page(d, i, i);
switch ( vga_console_info.video_type )
{
case XEN_VGATYPE_TEXT_MODE_3:
- if ( memory_is_conventional_ram(0xB8000) ||
+ if ( page_is_conventional_ram(paddr_to_pfn(0xB8000)) || /* CS 19085 mem to page */
((video = ioremap(0xB8000, 0x8000)) == NULL) )
return;
outw(0x200a, 0x3d4); /* disable cursor */
int guest_remove_page(struct domain *d, unsigned long gmfn);
-/* Returns TRUE if the memory at address @p is ordinary RAM. */
-int memory_is_conventional_ram(paddr_t p);
+/* Returns TRUE if the whole page at @mfn is ordinary RAM. */
+int page_is_conventional_ram(unsigned long mfn);
extern unsigned long *alloc_bitmap; /* for vmcoreinfo */