int xen_in_range(paddr_t start, paddr_t 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);
+ start = max_t(paddr_t, start, xenheap_phys_start);
+ end = min_t(paddr_t, end, xenheap_phys_end);
+
+ return start < end;
}
/*
return rc;
}
+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 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
for ( i = 0; i < max_page; i++ )
{
/* CS 19084 remove tboot_in_range, CS 19085 use page_is_conventional_ram */
- if ( !page_is_conventional_ram(i) ||
+ /*if ( !page_is_conventional_ram(i) ||
xen_in_range(i << PAGE_SHIFT, (i + 1) << PAGE_SHIFT) )
+ continue;*/
+ 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) )
continue;
iommu_map_page(d, i, i);