• Mark Rutland's avatar
    arm64: fix show_regs fallout from KERN_CONT changes · db4b0710
    Mark Rutland authored
    Recently in commit 4bcc595c ("printk: reinstate KERN_CONT for
    printing continuation lines"), the behaviour of printk changed w.r.t.
    KERN_CONT. Now, KERN_CONT is mandatory to continue existing lines.
    Without this, prefixes are inserted, making output illegible, e.g.
    
    [ 1007.069010] pc : [<ffff00000871898c>] lr : [<ffff000008718948>] pstate: 40000145
    [ 1007.076329] sp : ffff000008d53ec0
    [ 1007.079606] x29: ffff000008d53ec0 [ 1007.082797] x28: 0000000080c50018
    [ 1007.086160]
    [ 1007.087630] x27: ffff000008e0c7f8 [ 1007.090820] x26: ffff80097631ca00
    [ 1007.094183]
    [ 1007.095653] x25: 0000000000000001 [ 1007.098843] x24: 000000ea68b61cac
    [ 1007.102206]
    
    ... or when dumped with the userpace dmesg tool, which has slightly
    different implicit newline behaviour. e.g.
    
    [ 1007.069010] pc : [<ffff00000871898c>] lr : [<ffff000008718948>] pstate: 40000145
    [ 1007.076329] sp : ffff000008d53ec0
    [ 1007.079606] x29: ffff000008d53ec0
    [ 1007.082797] x28: 0000000080c50018
    [ 1007.086160]
    [ 1007.087630] x27: ffff000008e0c7f8
    [ 1007.090820] x26: ffff80097631ca00
    [ 1007.094183]
    [ 1007.095653] x25: 0000000000000001
    [ 1007.098843] x24: 000000ea68b61cac
    [ 1007.102206]
    
    We can't simply always use KERN_CONT for lines which may or may not be
    continuations. That causes line prefixes (e.g. timestamps) to be
    supressed, and the alignment of all but the first line will be broken.
    
    For even more fun, we can't simply insert some dummy empty-string printk
    calls, as GCC warns for an empty printk string, and even if we pass
    KERN_DEFAULT explcitly to silence the warning, the prefix gets swallowed
    unless there is an additional part to the string.
    
    Instead, we must manually iterate over pairs of registers, which gives
    us the legible output we want in either case, e.g.
    
    [  169.771790] pc : [<ffff00000871898c>] lr : [<ffff000008718948>] pstate: 40000145
    [  169.779109] sp : ffff000008d53ec0
    [  169.782386] x29: ffff000008d53ec0 x28: 0000000080c50018
    [  169.787650] x27: ffff000008e0c7f8 x26: ffff80097631de00
    [  169.792913] x25: 0000000000000001 x24: 00000027827b2cf4
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    db4b0710
process.c 9.35 KB