* @probe_roms:                        probe BIOS roms
  * @reserve_resources:         reserve the standard resources for the
  *                             platform
+ * @reserve_ebda_region:       reserve the extended bios data area
  *
  */
 struct x86_init_resources {
        void (*probe_roms)(void);
        void (*reserve_resources)(void);
+       void (*reserve_ebda_region)(void);
 };
 
 /**
 
 #include <asm/setup.h>
 #include <asm/sections.h>
 #include <asm/e820.h>
-#include <asm/bios_ebda.h>
+#include <asm/page.h>
 #include <asm/trampoline.h>
 
 void __init i386_start_kernel(void)
        x86_init.resources.probe_roms = probe_roms;
        x86_init.resources.reserve_resources = i386_reserve_resources;
 
-       reserve_ebda_region();
+       x86_init.resources.reserve_ebda_region();
 
        /*
         * At this point everything still needed from the boot loader
 
 #include <asm/sections.h>
 #include <asm/kdebug.h>
 #include <asm/e820.h>
-#include <asm/bios_ebda.h>
 #include <asm/trampoline.h>
 
 static void __init zap_identity_mappings(void)
        }
 #endif
 
-       reserve_ebda_region();
+       x86_init.resources.reserve_ebda_region();
 
        /*
         * At this point everything still needed from the boot loader
 
  */
 #include <linux/init.h>
 
+#include <asm/bios_ebda.h>
 #include <asm/setup.h>
 
 void __cpuinit x86_init_noop(void) { }
        .resources = {
                .probe_roms             = x86_init_noop,
                .reserve_resources      = reserve_standard_io_resources,
+               .reserve_ebda_region    = reserve_ebda_region,
        },
 };