diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 2a4add9634ce2c1de56488475f71697ca24b556b..010ba2e62de54395e10f137f0448eb8558442375 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -200,7 +200,8 @@ char * __init xen_memory_setup(void)
 			 * used as potential resource for I/O address (happens
 			 * when 'allocate_resource' is called).
 			 */
-			if (delta && end < 0x100000000UL)
+			if (delta &&
+				(xen_initial_domain() && end < 0x100000000ULL))
 				e820_add_region(end, delta, E820_UNUSABLE);
 		}