All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-kbuild@vger.kernel.org" <linux-kbuild@vger.kernel.org>,
	Mikael Starvik <starvik@axis.com>,
	Jesper Nilsson <jesper.nilsson@axis.com>,
	Tony Luck <tony.luck@intel.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"David S. Miller" <davem@davemloft.net>,
	Christopher Li <sparse@chrisli.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Kees Cook <keescook@chromium.org>, Ingo Molnar <mingo@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Will Deacon <will.deacon@arm.com>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	Mark Rutland <mark.rutland@arm.com>,
	arcml <linux-snps-arc@lists.infradead.org>
Subject: Re: [PATCH] bug.h: Work around GCC PR82365 in BUG()
Date: Wed, 20 Dec 2017 10:52:27 -0800	[thread overview]
Message-ID: <27bfdc23-1774-cf07-dab4-ab253a41d2f7@synopsys.com> (raw)
In-Reply-To: <CAK8P3a25RgC0qPCrGfutSnLHr77NqK74dW2g0m7fcMnm5Ou8yg@mail.gmail.com>

On 12/20/2017 01:01 AM, Arnd Bergmann wrote:
> On Tue, Dec 19, 2017 at 11:38 PM, Vineet Gupta
> <Vineet.Gupta1@synopsys.com> wrote:
>> On 12/19/2017 12:13 PM, Arnd Bergmann wrote:
>>>
>>>
>>>> I suppose BUG() implies "dead end" like semantics - which ARC was lacking
>>>> before ?
>>>
>>> Correct. Using __builtin_trap() here avoids the 'control reaches end of
>>> non-void
>>> function' warnings, but then makes us run into the stack size problem that
>>> I work around with the barrier_before_unreachable().
>>>
>>> It would be good if you could give this a quick test to see if you get
>>> sensible
>>> output from the __builtin_trap();
>>
>>
>> It does, added a BUG() arbit, hits an abort()
>>
>> ...
>> ISA Extn    : atomic ll64 unalign (not used)
>>          : mpy[opt 9] div_rem norm barrel-shift swap minmax swape
>> BPU        : partial match, cache:2048, Predict Table:16384
>> BUG: failure at ../arch/arc/mm/tlb.c:827/arc_mmu_init()!
>>
>>
>> Tested-by: Vineet Gupta <vgupta@synopsys.com>
> 
> I meant whether it prints the right registers and stack trace, but I
> assume you tested that and just did not list it above.

Sorry, I didn't realize we are missing the stack trace now which you removed from 
the patch - why ? Did u intend to reduce inline generated code for the stack dump 
calls - which sounds like a great idea. But it would only work for the synchronous 
abort() but not when builtin translates to actual trap inducing instruction.

> Hmm, so with the new definition of abort(),
> 
> +__weak void abort(void)
> +{
> +   BUG();
> +
> +   /* if that doesn't kill us, halt */
> +   panic("Oops failed to kill thread");
> +}
> 
> won't that run into an endless recursion? Or do you then override abort()
> for ARC?

Indeed so. I didn't run into this in my testing as my for-curr has an ARC specific 
version (predating Sudip's generic version- because of build failures in our 
internal regression jobs etc). That version only calls panic.

abort() is only likely to be called due to __builtin_trap() for arches where gcc 
doesn't have a target specific defn of it. And thus adding the call from BUG() 
will cause the recursion as you found out with Sudip's generic version and thus 
needs a fixup.


Thx,
-Vineet

WARNING: multiple messages have this Message-ID (diff)
From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-kbuild@vger.kernel.org" <linux-kbuild@vger.kernel.org>,
	Mikael Starvik <starvik@axis.com>,
	Jesper Nilsson <jesper.nilsson@axis.com>,
	Tony Luck <tony.luck@intel.com>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"David S. Miller" <davem@davemloft.net>,
	Christopher Li <sparse@chrisli.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Kees Cook <keescook@chromium.org>, Ingo Molnar <mingo@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Will Deacon <will.deacon@arm.com>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	Mark Rutland <mark.rutland@arm.com>arcml <l>
Subject: Re: [PATCH] bug.h: Work around GCC PR82365 in BUG()
Date: Wed, 20 Dec 2017 10:52:27 -0800	[thread overview]
Message-ID: <27bfdc23-1774-cf07-dab4-ab253a41d2f7@synopsys.com> (raw)
In-Reply-To: <CAK8P3a25RgC0qPCrGfutSnLHr77NqK74dW2g0m7fcMnm5Ou8yg@mail.gmail.com>

On 12/20/2017 01:01 AM, Arnd Bergmann wrote:
> On Tue, Dec 19, 2017 at 11:38 PM, Vineet Gupta
> <Vineet.Gupta1@synopsys.com> wrote:
>> On 12/19/2017 12:13 PM, Arnd Bergmann wrote:
>>>
>>>
>>>> I suppose BUG() implies "dead end" like semantics - which ARC was lacking
>>>> before ?
>>>
>>> Correct. Using __builtin_trap() here avoids the 'control reaches end of
>>> non-void
>>> function' warnings, but then makes us run into the stack size problem that
>>> I work around with the barrier_before_unreachable().
>>>
>>> It would be good if you could give this a quick test to see if you get
>>> sensible
>>> output from the __builtin_trap();
>>
>>
>> It does, added a BUG() arbit, hits an abort()
>>
>> ...
>> ISA Extn    : atomic ll64 unalign (not used)
>>          : mpy[opt 9] div_rem norm barrel-shift swap minmax swape
>> BPU        : partial match, cache:2048, Predict Table:16384
>> BUG: failure at ../arch/arc/mm/tlb.c:827/arc_mmu_init()!
>>
>>
>> Tested-by: Vineet Gupta <vgupta@synopsys.com>
> 
> I meant whether it prints the right registers and stack trace, but I
> assume you tested that and just did not list it above.

Sorry, I didn't realize we are missing the stack trace now which you removed from 
the patch - why ? Did u intend to reduce inline generated code for the stack dump 
calls - which sounds like a great idea. But it would only work for the synchronous 
abort() but not when builtin translates to actual trap inducing instruction.

> Hmm, so with the new definition of abort(),
> 
> +__weak void abort(void)
> +{
> +   BUG();
> +
> +   /* if that doesn't kill us, halt */
> +   panic("Oops failed to kill thread");
> +}
> 
> won't that run into an endless recursion? Or do you then override abort()
> for ARC?

Indeed so. I didn't run into this in my testing as my for-curr has an ARC specific 
version (predating Sudip's generic version- because of build failures in our 
internal regression jobs etc). That version only calls panic.

abort() is only likely to be called due to __builtin_trap() for arches where gcc 
doesn't have a target specific defn of it. And thus adding the call from BUG() 
will cause the recursion as you found out with Sudip's generic version and thus 
needs a fixup.


Thx,
-Vineet

WARNING: multiple messages have this Message-ID (diff)
From: Vineet.Gupta1@synopsys.com (Vineet Gupta)
To: linux-snps-arc@lists.infradead.org
Subject: [PATCH] bug.h: Work around GCC PR82365 in BUG()
Date: Wed, 20 Dec 2017 10:52:27 -0800	[thread overview]
Message-ID: <27bfdc23-1774-cf07-dab4-ab253a41d2f7@synopsys.com> (raw)
In-Reply-To: <CAK8P3a25RgC0qPCrGfutSnLHr77NqK74dW2g0m7fcMnm5Ou8yg@mail.gmail.com>

On 12/20/2017 01:01 AM, Arnd Bergmann wrote:
> On Tue, Dec 19, 2017 at 11:38 PM, Vineet Gupta
> <Vineet.Gupta1@synopsys.com> wrote:
>> On 12/19/2017 12:13 PM, Arnd Bergmann wrote:
>>>
>>>
>>>> I suppose BUG() implies "dead end" like semantics - which ARC was lacking
>>>> before ?
>>>
>>> Correct. Using __builtin_trap() here avoids the 'control reaches end of
>>> non-void
>>> function' warnings, but then makes us run into the stack size problem that
>>> I work around with the barrier_before_unreachable().
>>>
>>> It would be good if you could give this a quick test to see if you get
>>> sensible
>>> output from the __builtin_trap();
>>
>>
>> It does, added a BUG() arbit, hits an abort()
>>
>> ...
>> ISA Extn    : atomic ll64 unalign (not used)
>>          : mpy[opt 9] div_rem norm barrel-shift swap minmax swape
>> BPU        : partial match, cache:2048, Predict Table:16384
>> BUG: failure at ../arch/arc/mm/tlb.c:827/arc_mmu_init()!
>>
>>
>> Tested-by: Vineet Gupta <vgupta at synopsys.com>
> 
> I meant whether it prints the right registers and stack trace, but I
> assume you tested that and just did not list it above.

Sorry, I didn't realize we are missing the stack trace now which you removed from 
the patch - why ? Did u intend to reduce inline generated code for the stack dump 
calls - which sounds like a great idea. But it would only work for the synchronous 
abort() but not when builtin translates to actual trap inducing instruction.

> Hmm, so with the new definition of abort(),
> 
> +__weak void abort(void)
> +{
> +   BUG();
> +
> +   /* if that doesn't kill us, halt */
> +   panic("Oops failed to kill thread");
> +}
> 
> won't that run into an endless recursion? Or do you then override abort()
> for ARC?

Indeed so. I didn't run into this in my testing as my for-curr has an ARC specific 
version (predating Sudip's generic version- because of build failures in our 
internal regression jobs etc). That version only calls panic.

abort() is only likely to be called due to __builtin_trap() for arches where gcc 
doesn't have a target specific defn of it. And thus adding the call from BUG() 
will cause the recursion as you found out with Sudip's generic version and thus 
needs a fixup.


Thx,
-Vineet

  reply	other threads:[~2017-12-20 18:52 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-19 11:39 [PATCH] bug.h: Work around GCC PR82365 in BUG() Arnd Bergmann
2017-12-19 11:39 ` Arnd Bergmann
2017-12-19 11:39 ` Arnd Bergmann
2017-12-19 11:39 ` Arnd Bergmann
2017-12-19 11:39 ` Arnd Bergmann
2017-12-19 11:39 ` Arnd Bergmann
2017-12-19 11:49 ` Geert Uytterhoeven
2017-12-19 11:49   ` Geert Uytterhoeven
2017-12-19 11:49   ` Geert Uytterhoeven
2017-12-19 11:49   ` Geert Uytterhoeven
2017-12-19 11:49   ` Geert Uytterhoeven
2017-12-19 11:49   ` Geert Uytterhoeven
2017-12-19 16:57 ` Vineet Gupta
2017-12-19 16:57   ` Vineet Gupta
2017-12-19 16:57   ` Vineet Gupta
2017-12-19 16:57   ` Vineet Gupta
2017-12-19 16:57   ` Vineet Gupta
2017-12-19 16:57   ` Vineet Gupta
2017-12-19 20:13   ` Arnd Bergmann
2017-12-19 20:13     ` Arnd Bergmann
2017-12-19 20:13     ` Arnd Bergmann
2017-12-19 20:13     ` Arnd Bergmann
2017-12-19 20:13     ` Arnd Bergmann
2017-12-19 20:13     ` Arnd Bergmann
2017-12-19 22:38     ` Vineet Gupta
2017-12-19 22:38     ` Vineet Gupta
2017-12-19 22:38       ` Vineet Gupta
2017-12-19 22:38       ` Vineet Gupta
2017-12-19 22:38       ` Vineet Gupta
2017-12-19 22:38       ` Vineet Gupta
2017-12-19 22:38       ` Vineet Gupta
2017-12-20  9:01       ` Arnd Bergmann
2017-12-20  9:01         ` Arnd Bergmann
2017-12-20  9:01         ` Arnd Bergmann
2017-12-20  9:01         ` Arnd Bergmann
2017-12-20  9:01         ` Arnd Bergmann
2017-12-20  9:01         ` Arnd Bergmann
2017-12-20 18:52         ` Vineet Gupta [this message]
2017-12-20 18:52           ` Vineet Gupta
2017-12-20 18:52           ` Vineet Gupta
2017-12-20 20:12           ` Arnd Bergmann
2017-12-20 20:12             ` Arnd Bergmann
2017-12-20 20:12             ` Arnd Bergmann
2017-12-20 20:29             ` Vineet Gupta
2017-12-20 20:29               ` Vineet Gupta
2017-12-20 20:29               ` Vineet Gupta
2018-02-08  0:01               ` Andrew Morton
2018-02-08  0:01                 ` Andrew Morton
2018-02-08  0:01                 ` Andrew Morton
2018-02-08  0:51                 ` Vineet Gupta
2018-02-08  0:51                   ` Vineet Gupta
2018-02-08  0:51                   ` Vineet Gupta
2018-02-08  1:20                 ` Vineet Gupta
2018-02-08  1:20                   ` Vineet Gupta
2018-02-08  1:20                   ` Vineet Gupta
2018-02-21 21:23                   ` Vineet Gupta
2018-02-21 21:23                     ` Vineet Gupta
2018-02-21 21:23                     ` Vineet Gupta
2017-12-19 16:57 ` Vineet Gupta
2018-04-10 22:48 ` James Hogan
2018-04-10 22:48   ` James Hogan
2018-04-10 22:48   ` James Hogan
2018-04-10 22:48   ` James Hogan
2018-04-10 22:48   ` James Hogan
2018-04-10 22:48   ` James Hogan
2018-04-11  7:30   ` Arnd Bergmann
2018-04-11  7:30     ` Arnd Bergmann
2018-04-11  7:30     ` Arnd Bergmann
2018-04-11  7:30     ` Arnd Bergmann
2018-04-11  7:30     ` Arnd Bergmann
2018-04-11  7:30     ` Arnd Bergmann
2018-04-11  7:30     ` Arnd Bergmann
2018-04-11  9:54     ` James Hogan
2018-04-11  9:54       ` James Hogan
2018-04-11  9:54       ` James Hogan
2018-04-11  9:54       ` James Hogan
2018-04-11  9:54       ` James Hogan
2018-04-11  9:54       ` James Hogan
2018-04-11  9:54       ` James Hogan
2018-04-11 10:08       ` Arnd Bergmann
2018-04-11 10:08         ` Arnd Bergmann
2018-04-11 10:08         ` Arnd Bergmann
2018-04-11 10:08         ` Arnd Bergmann
2018-04-11 10:08         ` Arnd Bergmann
2018-04-11 10:08         ` Arnd Bergmann
2018-04-11 10:08         ` Arnd Bergmann
2018-04-11 10:19         ` James Hogan
2018-04-11 10:19           ` James Hogan
2018-04-11 10:19           ` James Hogan
2018-04-11 10:19           ` James Hogan
2018-04-11 10:19           ` James Hogan
2018-04-11 10:19           ` James Hogan
2017-12-19 11:39 Arnd Bergmann

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=27bfdc23-1774-cf07-dab4-ab253a41d2f7@synopsys.com \
    --to=vineet.gupta1@synopsys.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=fenghua.yu@intel.com \
    --cc=geert@linux-m68k.org \
    --cc=jesper.nilsson@axis.com \
    --cc=jpoimboe@redhat.com \
    --cc=keescook@chromium.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sparse@chrisli.org \
    --cc=starvik@axis.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=will.deacon@arm.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.