• Douglas Anderson's avatar
    kgdb: Delay "kgdbwait" to dbg_late_init() by default · b1a57bbf
    Douglas Anderson authored
    Using kgdb requires at least some level of architecture-level
    initialization.  If nothing else, it relies on the architecture to
    pass breakpoints / crashes onto kgdb.
    
    On some architectures this all works super early, specifically it
    starts working at some point in time before Linux parses
    early_params's.  On other architectures it doesn't.  A survey of a few
    platforms:
    
    a) x86: Presumably it all works early since "ekgdboc" is documented to
       work here.
    b) arm64: Catching crashes works; with a simple patch breakpoints can
       also be made to work.
    c) arm: Nothing in kgdb works until
       paging_init() -> devicemaps_init() -> early_trap_init()
    
    Let's be conservative and, by default, process "kgdbwait" (which tells
    the kernel to drop into the debugger ASAP at boot) a bit later at
    dbg_late_init() time.  If an architecture has tested it and wants to
    re-enable super early debugging, they can select the
    ARCH_HAS_EARLY_DEBUG KConfig option.  We'll do this for x86 to start.
    It should be noted that dbg_late_init() is still called quite early in
    the system.
    
    Note that this patch doesn't affect when kgdb runs its init.  If kgdb
    is set to initialize early it will still initialize when parsing
    early_param's.  This patch _only_ inhibits the initial breakpoint from
    "kgdbwait".  This means:
    
    * Without any extra patches arm64 platforms will at least catch
      crashes after kgdb inits.
    * arm platforms will catch crashes (and could handle a hardcoded
      kgdb_breakpoint()) any time after early_trap_init() runs, even
      before dbg_late_init().
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20200507130644.v4.4.I3113aea1b08d8ce36dc3720209392ae8b815201b@changeidSigned-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
    b1a57bbf
Kconfig.kgdb 4.92 KB