@@ -272,6 +272,15 @@ int arch_setup_meminit(struct xc_dom_image *dom)
return -1;
}
+ if ( ramsize > GUEST_RAM_SIZE - NR_MAGIC_PAGES*XC_PAGE_SIZE )
+ {
+ DOMPRINTF("%s: ram size is too large for guest address space: "
+ "%"PRIx64" > %"PRIx64,
+ __FUNCTION__, ramsize,
+ GUEST_RAM_SIZE - NR_MAGIC_PAGES*XC_PAGE_SIZE);
+ return -1;
+ }
+
rc = set_mode(dom->xch, dom->guest_domid, dom->guest_type);
if ( rc )
return rc;
@@ -369,7 +369,8 @@ typedef uint64_t xen_callback_t;
#define GUEST_GICC_BASE 0x2c002000ULL
#define GUEST_GICC_SIZE 0x100ULL
-#define GUEST_RAM_BASE 0x80000000ULL
+#define GUEST_RAM_BASE 0x80000000ULL /* 768M @ 2GB */
+#define GUEST_RAM_SIZE 0x30000000ULL
#define GUEST_GNTTAB_BASE 0xb0000000ULL
#define GUEST_GNTTAB_SIZE 0x00020000ULL