Re: Kernel panic on Lenovo X60 with tracing enabled

From: Josh Poimboeuf
Date: Fri Mar 10 2017 - 13:19:11 EST


On Fri, Mar 10, 2017 at 09:53:29AM +0100, Paul Menzel wrote:
> Dear Josh,
>
>
> On 03/10/17 00:04, Josh Poimboeuf wrote:
> > On Thu, Mar 09, 2017 at 09:43:47PM +0100, Paul Menzel wrote:
> > > On 2017-03-09 17:29, Steven Rostedt wrote:
> > > > On Thu, 9 Mar 2017 10:16:02 -0600 Josh Poimboeuf wrote:
> > > >
> > > > > On Thu, Mar 09, 2017 at 09:36:30AM -0500, Steven Rostedt wrote:
> > > > > > On Thu, 9 Mar 2017 13:12:28 +0100 Paul Menzel wrote:
> > >
> > > > > > > Hopefully, I am contacting the right people for my issue.
> > > > > > >
> > > > > > > Suspending a system with Linux 4.9.13 with tracing enabled, it fails
> > > > > > > with the screen still enabled, and the LED blinking. Attaching a serial
> > > > > > > console to the dock, shows the messages below.
> > > > > >
> > > > > > I'm betting this is a compiler bug, as that bug that printed is the
> > > > > > internal ftrace check for it. (note the bug is only in x86-32 not
> > > > > > x86-64)
> > > > > >
> > > > > > Funny, we are just talking about this bug in another thread, but with a
> > > > > > different symptom.
> > > > > >
> > > > > > Josh, did you say this goes away if you disable optimize for size or
> > > > > > does it need to be enabled?
> > > > >
> > > > > Yeah, assuming it's the same problem, then this is caused by
> > > > > CONFIG_CC_OPTIMIZE_FOR_SIZE. It would be fixed by changing it to
> > > > > CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE.
> > > >
> > > > Paul, do you have CONFIG_CC_OPTIMIZE_FOR_SIZE enabled? Can you set it
> > > > to PERFORMANCE and see if the problem goes away?
> > >
> > > As far as I can see, the Debian Linux kernel is built with
> > > `CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y`.
> > >
> > > So it might be a different problem?
> >
> > Is it a stock Debian kernel? If so, do you have a link where it can be
> > downloaded?
>
> Sure, hopefully [3] works for you.
>
> ```
> dpkg -x linux-image-4.9.0-0.bpo.2-686-pae-unsigned_4.9.13-1~bpo8+1_i386.deb
> target-directory

Thanks, that helped. One of the functions on the stack trace has the
buggy prologue:

acpi_pm_device_sleep_wake:
c138048c: 57 push %edi
c138048d: 8d 7c 24 08 lea 0x8(%esp),%edi
c1380491: 83 e4 f8 and $0xfffffff8,%esp
c1380494: ff 77 fc pushl -0x4(%edi)
c1380497: 55 push %ebp
c1380498: 89 e5 mov %esp,%ebp
c138049a: 57 push %edi
c138049b: 56 push %esi
c138049c: 53 push %ebx
c138049d: 83 ec 0c sub $0xc,%esp
c13804a0: e8 e7 bf 21 00 call 0xc159c48c (mcount)

And the config file indeed has CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y.

I found the root cause after a little digging. drivers/acpi/Makefile is
setting '-Os' manually:

ccflags-y := -Os

That line predates git history, so I don't know why it's there, but I'd
guess we can probably remove it. I'll submit a fix for it along with
the other -maccumulate-outoing-args related patch I was going to do.

--
Josh