/*
  * Mark e820 reserved areas as busy for the resource manager.
  */
-void __init e820_reserve_resources(struct resource *code_resource,
-               struct resource *data_resource, struct resource *bss_resource)
+void __init e820_reserve_resources(void)
 {
        int i;
        for (i = 0; i < e820.nr_map; i++) {
                res->start = e820.map[i].addr;
                res->end = res->start + e820.map[i].size - 1;
                res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
-               request_resource(&iomem_resource, res);
-               if (e820.map[i].type == E820_RAM) {
-                       /*
-                        * We don't know which RAM region contains kernel data,
-                        * so we try it repeatedly and let the resource manager
-                        * test it.
-                        */
-                       request_resource(res, code_resource);
-                       request_resource(res, data_resource);
-                       request_resource(res, bss_resource);
-#ifdef CONFIG_KEXEC
-                       if (crashk_res.start != crashk_res.end)
-                               request_resource(res, &crashk_res);
-#endif
-               }
+               insert_resource(&iomem_resource, res);
        }
 }
 
 
                                (unsigned long)(total_mem >> 20));
                crashk_res.start = crash_base;
                crashk_res.end   = crash_base + crash_size - 1;
+               insert_resource(&iomem_resource, &crashk_res);
        }
 }
 #else
 
        finish_e820_parsing();
 
+       /* after parse_early_param, so could debug it */
+       insert_resource(&iomem_resource, &code_resource);
+       insert_resource(&iomem_resource, &data_resource);
+       insert_resource(&iomem_resource, &bss_resource);
+
        early_gart_iommu_check();
 
        e820_register_active_regions(0, 0, -1UL);
        /*
         * We trust e820 completely. No explicit ROM probing in memory.
         */
-       e820_reserve_resources(&code_resource, &data_resource, &bss_resource);
+       e820_reserve_resources();
        e820_mark_nosave_regions();
 
        /* request I/O space for devices used on all i[345]86 PCs */
 
 extern void setup_memory_region(void);
 extern void contig_e820_setup(void); 
 extern unsigned long e820_end_of_ram(void);
-extern void e820_reserve_resources(struct resource *code_resource,
-               struct resource *data_resource, struct resource *bss_resource);
+extern void e820_reserve_resources(void);
 extern void e820_mark_nosave_regions(void);
 extern int e820_any_mapped(unsigned long start, unsigned long end, unsigned type);
 extern int e820_all_mapped(unsigned long start, unsigned long end, unsigned type);