Currently early_xmon() calls directly into debugger() if xmon=early is passed.
This ties the invocation of early xmon to the location of parse_early_param(),
which might change.
Tested on P5 LPAR and F50.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
 }
 #endif /* CONFIG_SMP */
 
+int __initdata do_early_xmon;
 #ifdef CONFIG_XMON
 static int __init early_xmon(char *p)
 {
                        return 0;
        }
        xmon_init(1);
-       debugger(NULL);
+       do_early_xmon = 1;
 
        return 0;
 }
 
 void check_for_initrd(void);
 void do_init_bootmem(void);
 void setup_panic(void);
+extern int do_early_xmon;
 
 #endif /* _POWERPC_KERNEL_SETUP_H */
 
 
        parse_early_param();
 
+       if (do_early_xmon)
+               debugger(NULL);
+
        /* set up the bootmem stuff with available memory */
        do_init_bootmem();
        if ( ppc_md.progress ) ppc_md.progress("setup_arch: bootmem", 0x3eab);
 
 
        parse_early_param();
 
+       if (do_early_xmon)
+               debugger(NULL);
+
        check_smt_enabled();
        smp_setup_cpu_maps();