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
next prev parent 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.