--- x/linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c
+++ x/linux-2.6-xen-sparse/drivers/xen/core/machine_kexec.c
@@ -15,6 +15,7 @@ extern void machine_kexec_setup_load_arg
 int xen_max_nr_phys_cpus;
 struct resource xen_hypervisor_res;
 struct resource *xen_phys_cpus;
+struct resource xen_phys_cpus_static[1024];
 
 void xen_machine_kexec_setup_resources(void)
 {
@@ -22,8 +23,10 @@ void xen_machine_kexec_setup_resources(v
 	struct resource *res;
 	int k = 0;
 
+#if 0
 	if (!is_initial_xendomain())
 		return;
+#endif
 
 	/* determine maximum number of physical cpus */
 
@@ -45,7 +48,8 @@ void xen_machine_kexec_setup_resources(v
 
 	/* allocate xen_phys_cpus */
 
-	xen_phys_cpus = alloc_bootmem_low(k * sizeof(struct resource));
+	//xen_phys_cpus = alloc_bootmem_low(k * sizeof(struct resource));
+	xen_phys_cpus = xen_phys_cpus_static;
 	BUG_ON(xen_phys_cpus == NULL);
 
 	/* fill in xen_phys_cpus with per-cpu crash note information */
@@ -109,10 +113,11 @@ void xen_machine_kexec_register_resource
 {
 	int k;
 
-	request_resource(res, &xen_hypervisor_res);
+	if (xen_hypervisor_res.name)
+		insert_resource(res, &xen_hypervisor_res);
 
 	for (k = 0; k < xen_max_nr_phys_cpus; k++)
-		request_resource(&xen_hypervisor_res, xen_phys_cpus + k);
+		insert_resource(res, xen_phys_cpus + k);
 
 }
 
