• Peter Hurley's avatar
    serial: 8250: Use canary to restart console after suspend · 4516d50a
    Peter Hurley authored
    When using no_console_suspend, the serial console may be powered off
    anyway during system sleep. Upon resume, the port may be in its default
    power-on state, but is expected to continue console i/o before the device
    has received its pm callback. The resultant garbage i/o can cause all
    kinds of havoc on the remote end.
    
    Use the scratch register as a canary to discover if the console
    has been powered-off. Write a non-zero value to the scratch register
    at port suspend and reprogram the port before any console i/o if the
    scratch register != canary before port resume.
    
    This workaround is disabled for omap_8250 (which uses different divisor
    programming).
    
    Credit to Doug Anderson <dianders@chromium.org> for the idea of using
    the scratch register canary to discover port power-down.
    
    Cc: Doug Anderson <dianders@chromium.org>
    Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4516d50a
8250_core.c 97.6 KB