All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Ellerman <patch-notifications@ellerman.id.au>
To: Nicholas Piggin <npiggin@gmail.com>, linuxppc-dev@lists.ozlabs.org
Cc: Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [PATCH 1/5] powerpc/64s/exception: remove bad stack branch
Date: Fri,  5 Jul 2019 01:52:51 +1000 (AEST)	[thread overview]
Message-ID: <45fjDM3kMWz9sPM@ozlabs.org> (raw)
In-Reply-To: <20190628063322.11628-2-npiggin@gmail.com>

On Fri, 2019-06-28 at 06:33:18 UTC, Nicholas Piggin wrote:
> The bad stack test in interrupt handlers has a few problems. For
> performance it is taken in the common case, which is a fetch bubble
> and a waste of i-cache.
> 
> For code development and maintainence, it requires yet another stack
> frame setup routine, and that constrains all exception handlers to
> follow the same register save pattern which inhibits future
> optimisation.
> 
> Remove the test/branch and replace it with a trap. Teach the program
> check handler to use the emergency stack for this case.
> 
> This does not result in quite so nice a message, however the SRR0 and
> SRR1 of the crashed interrupt can be seen in r11 and r12, as is the
> original r1 (adjusted by INT_FRAME_SIZE). These are the most important
> parts to debugging the issue.
> 
> The original r9-12 and cr0 is lost, which is the main downside.
> 
>   kernel BUG at linux/arch/powerpc/kernel/exceptions-64s.S:847!
>   Oops: Exception in kernel mode, sig: 5 [#1]
>   BE SMP NR_CPUS=2048 NUMA PowerNV
>   Modules linked in:
>   CPU: 0 PID: 1 Comm: swapper/0 Not tainted
>   NIP:  c000000000009108 LR: c000000000cadbcc CTR: c0000000000090f0
>   REGS: c0000000fffcbd70 TRAP: 0700   Not tainted
>   MSR:  9000000000021032 <SF,HV,ME,IR,DR,RI>  CR: 28222448  XER: 20040000
>   CFAR: c000000000009100 IRQMASK: 0
>   GPR00: 000000000000003d fffffffffffffd00 c0000000018cfb00 c0000000f02b3166
>   GPR04: fffffffffffffffd 0000000000000007 fffffffffffffffb 0000000000000030
>   GPR08: 0000000000000037 0000000028222448 0000000000000000 c000000000ca8de0
>   GPR12: 9000000002009032 c000000001ae0000 c000000000010a00 0000000000000000
>   GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
>   GPR20: c0000000f00322c0 c000000000f85200 0000000000000004 ffffffffffffffff
>   GPR24: fffffffffffffffe 0000000000000000 0000000000000000 000000000000000a
>   GPR28: 0000000000000000 0000000000000000 c0000000f02b391c c0000000f02b3167
>   NIP [c000000000009108] decrementer_common+0x18/0x160
>   LR [c000000000cadbcc] .vsnprintf+0x3ec/0x4f0
>   Call Trace:
>   Instruction dump:
>   996d098a 994d098b 38610070 480246ed 48005518 60000000 38200000 718a4000
>   7c2a0b78 3821fd00 41c20008 e82d0970 <0981fd00> f92101a0 f9610170 f9810178
> 
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

Series applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/0a882e28468f48ab3d9a36dde0a5723ea29ed1ed

cheers

  reply	other threads:[~2019-07-04 16:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-28  6:33 [PATCH 0/5] rework bad stack, sreset, hmi handling Nicholas Piggin
2019-06-28  6:33 ` [PATCH 1/5] powerpc/64s/exception: remove bad stack branch Nicholas Piggin
2019-07-04 15:52   ` Michael Ellerman [this message]
2019-06-28  6:33 ` [PATCH 2/5] powerpc/64s/exception: optimise system_reset for idle, clean up non-idle case Nicholas Piggin
2019-06-28  6:33 ` [PATCH 3/5] powerpc/64s/exception: sreset move trampoline ahead of common code Nicholas Piggin
2019-06-28  6:33 ` [PATCH 4/5] powerpc/64s/exception: hmi remove special case macro Nicholas Piggin
2019-06-28  6:33 ` [PATCH 5/5] powerpc/64s/exception: simplify hmi control flow Nicholas Piggin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45fjDM3kMWz9sPM@ozlabs.org \
    --to=patch-notifications@ellerman.id.au \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=npiggin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.