From: Len Brown <lenb@kernel.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Frans Pop <elendil@planet.nl>,
Linus Torvalds <torvalds@linux-foundation.org>,
Yinghai Lu <yinghai@kernel.org>,
Suresh Siddha <suresh.b.siddha@intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
"Maciej W. Rozycki" <macro@linux-mips.org>,
"Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>, Greg KH <greg@kroah.com>,
jbarnes@virtuousgeek.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
tiwai@suse.de, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: "APIC error on CPU1: 00(40)" during resume
Date: Mon, 22 Dec 2008 23:28:26 -0500 (EST) [thread overview]
Message-ID: <alpine.LFD.2.00.0812222319260.20902@localhost.localdomain> (raw)
In-Reply-To: <20081221082947.GB6395@elte.hu>
On Sun, 21 Dec 2008, Ingo Molnar wrote:
>
> * Frans Pop <elendil@planet.nl> wrote:
>
> > On Wednesday 10 December 2008, Ingo Molnar wrote:
> > > regarding those APIC error messages:
> > > > ACPI: Waking up from system sleep state S3
> > > > APIC error on CPU1: 00(40)
> > > > ACPI: EC: non-query interrupt received, switching to interrupt
> > >
> > > that does suggest that the APIC was re-enabled (we dont get any APIC
> > > error exceptions otherwise!), and its LVT was programmed as well, but
> > > somehow we got an erroneous APIC message from an illegal vector.
> >
> > I wonder if this may help tracing the cause. Today I got a KERN_ERR in the
> > middle of those messages:
> >
> > ACPI: Waking up from system sleep state S3
> > BUG: sleeping function called from invalid context at kernel/sched.c:5571
> > in_atomic(): 0, irqs_disabled(): 1, pid: 70, name: kacpid
> > Pid: 70, comm: kacpid Not tainted 2.6.28-rc7-rjw #77
> > Call Trace:
> > [<ffffffff80345013>] ? acpi_os_release_object+0x9/0xd
> > [<ffffffff8022d588>] __might_sleep+0xcf/0xd1
> > [<ffffffff80234e32>] __cond_resched+0x15/0x4b
> > [<ffffffff8043b1d7>] _cond_resched+0x2d/0x38
> > [<ffffffff80357bc9>] acpi_ps_complete_op+0x235/0x24b
> > [<ffffffff803582de>] acpi_ps_parse_loop+0x6ff/0x859
> > [<ffffffff803574db>] acpi_ps_parse_aml+0x7c/0x2bb
> > [<ffffffff80358a35>] acpi_ps_execute_method+0x144/0x213
> > [<ffffffff80354e9e>] acpi_ns_evaluate+0x152/0x230
> > [<ffffffff803452d0>] ? acpi_os_execute_deferred+0x0/0x39
> > [<ffffffff8034c6a6>] acpi_ev_asynch_execute_gpe_method+0xc1/0x119
> > [<ffffffff803452fc>] acpi_os_execute_deferred+0x2c/0x39
> > [<ffffffff802480c7>] run_workqueue+0x95/0x12a
> > [<ffffffff80248251>] worker_thread+0xf5/0x109
> > [<ffffffff8024b9cb>] ? autoremove_wake_function+0x0/0x38
> > [<ffffffff8024815c>] ? worker_thread+0x0/0x109
> > [<ffffffff8024b678>] kthread+0x49/0x76
> > [<ffffffff8020d009>] child_rip+0xa/0x11
> > [<ffffffff8022da41>] ? pick_next_task_fair+0x8b/0x93
> > [<ffffffff8024b62f>] ? kthread+0x0/0x76
> > [<ffffffff8020cfff>] ? child_rip+0x0/0x11
> > APIC error on CPU1: 00(40)
> > ACPI: EC: non-query interrupt received, switching to interrupt mode
> >
> > This is the first time I've seen this error. Kernel is based on commit
> > f6f7b52e2f61 (just after -rc7) and includes the final versions of the
> > patches Rafael posted in this thread [1].
> >
> > More complete log available on request.
>
> hm, that warning seems to show an ACPI bug (Len Cc:-ed): we preempt in an
> atomic section - right during executing an AML scriptlet. Executing ACPI
> AMLs is a rather fragile moment of the kernel: they are used by the BIOS
> to indirectly instruct the kernel to tweak lowlevel chipset registers and
> other platform details.
>
> The kernel executes AMLs 'blindly' - they tweak details that Linux
> typically has no knowledge about via any driver - so these things must
> absolutely run atomic, and scheduling away in the wrong moment (which
> means implicitly re-enabling interrupts) can leave the system in an
> inconsistent state.
>
> This 'blindness' and opaqueness of AML execution is perhaps the nastiest
> aspect of the whole ACPI engine (because their opacity makes them
> undebuggable and unfixable in essence). Nevertheless, it still might be
> some unrelated phenomenon to your APIC illegal vector errors.
I believe that it is a bug that run_workqueue() is called
with interrupts off. I've seen this reported on one other machine,
and Rui debugged it down to the BIOS returning from an SMM entry
with interrupts off:-( So who knows, maybe run_workqueue()
had interrupts enabled and some AML triggered an SMM
to have the same failure here?
Re: executing AML's blindly.
Yes, and no. We do know exactly what we interpret --
but yes, it is the BIOS writer that wrote the AML:-(
Above a ACPI interrupt has been deferred to non-interrupt
context for the OS to run its AML handler. Unfortunately,
we somehow found ourselves running the work-queue with
interrupts off...
Also, the assert above is about to be hidden by a real
bug fix which I sent upstream today -- we'll not call cond_resched()
when interrupts are off.
This is for the benefit of irqrouter_resume()
which runs AML with interrupts off.
-Len
next prev parent reply other threads:[~2008-12-23 4:29 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-02 2:20 Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Rafael J. Wysocki
2008-12-02 3:32 ` Linus Torvalds
2008-12-02 3:42 ` Linus Torvalds
2008-12-02 4:31 ` Frans Pop
2008-12-02 4:46 ` Linus Torvalds
2008-12-02 5:29 ` Frans Pop
2008-12-02 5:56 ` Frans Pop
2008-12-02 15:46 ` Linus Torvalds
2008-12-02 17:46 ` Frans Pop
2008-12-02 18:17 ` Linus Torvalds
2008-12-05 8:53 ` MSI changes in .28 Frans Pop
2008-12-05 9:09 ` Yinghai Lu
2008-12-05 12:20 ` Ingo Molnar
2008-12-05 13:04 ` Eric Dumazet
2008-12-05 17:49 ` H. Peter Anvin
2008-12-02 4:13 ` Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Frans Pop
2008-12-02 4:36 ` Linus Torvalds
2008-12-02 22:38 ` Rafael J. Wysocki
2008-12-02 23:37 ` Linus Torvalds
2008-12-03 0:00 ` Rafael J. Wysocki
2008-12-03 0:05 ` Rafael J. Wysocki
2008-12-03 0:31 ` Rafael J. Wysocki
2008-12-03 0:41 ` Linus Torvalds
2008-12-03 1:22 ` Rafael J. Wysocki
2008-12-03 2:02 ` Linus Torvalds
2008-12-03 7:40 ` Rafael J. Wysocki
2008-12-03 7:52 ` Rafael J. Wysocki
2008-12-03 11:20 ` Rafael J. Wysocki
2008-12-03 15:53 ` Linus Torvalds
2008-12-04 1:23 ` Rafael J. Wysocki
2008-12-04 4:40 ` Linus Torvalds
2008-12-04 8:21 ` Frans Pop
2008-12-04 22:01 ` Rafael J. Wysocki
2008-12-04 11:29 ` Frans Pop
2008-12-04 16:17 ` Linus Torvalds
2008-12-04 18:00 ` Frans Pop
2008-12-04 20:03 ` Linus Torvalds
2008-12-05 21:26 ` Linus Torvalds
2008-12-05 22:01 ` Rafael J. Wysocki
2008-12-05 22:14 ` Linus Torvalds
2008-12-06 0:04 ` Rafael J. Wysocki
2008-12-06 0:50 ` Linus Torvalds
2008-12-06 1:18 ` Rafael J. Wysocki
2008-12-06 1:55 ` Linus Torvalds
2008-12-06 2:18 ` Rafael J. Wysocki
2008-12-06 13:53 ` Rafael J. Wysocki
2008-12-06 2:45 ` Greg KH
2009-01-28 12:00 ` Frans Pop
2009-01-29 14:11 ` Ingo Molnar
2009-01-29 14:48 ` Rafael J. Wysocki
2009-01-29 16:44 ` Alexey Starikovskiy
2009-01-30 4:35 ` Frans Pop
2008-12-06 9:20 ` [patch,rfc] usb: restore config before enabling device on resume Frans Pop
2008-12-06 13:48 ` Rafael J. Wysocki
2008-12-06 15:02 ` Frans Pop
2008-12-10 14:06 ` "APIC error on CPU1: 00(40)" during resume (was: Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500) Frans Pop
2008-12-10 15:51 ` Linus Torvalds
2008-12-10 16:05 ` Frans Pop
2008-12-10 16:26 ` Linus Torvalds
2008-12-10 16:52 ` Matthew Garrett
2008-12-10 17:13 ` Linus Torvalds
2008-12-10 17:33 ` Ingo Molnar
2008-12-10 18:41 ` Maxim Levitsky
2008-12-20 21:31 ` "APIC error on CPU1: 00(40)" during resume Frans Pop
2008-12-21 8:29 ` Ingo Molnar
2008-12-23 4:28 ` Len Brown [this message]
2008-12-04 22:46 ` Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Rafael J. Wysocki
2008-12-04 22:40 ` Rafael J. Wysocki
2008-12-04 23:22 ` Linus Torvalds
2008-12-04 23:45 ` Rafael J. Wysocki
2008-12-05 0:07 ` Linus Torvalds
2008-12-05 0:20 ` Rafael J. Wysocki
2008-12-05 6:55 ` Frans Pop
2008-12-04 22:09 ` Rafael J. Wysocki
2008-12-04 22:20 ` Linus Torvalds
2008-12-04 23:31 ` Rafael J. Wysocki
2008-12-05 0:03 ` Linus Torvalds
2008-12-05 0:45 ` Linus Torvalds
2008-12-05 1:08 ` Rafael J. Wysocki
2008-12-05 1:45 ` Linus Torvalds
2008-12-05 2:55 ` Linus Torvalds
2008-12-05 3:25 ` Linus Torvalds
2008-12-05 6:44 ` Frans Pop
2008-12-05 8:27 ` Frans Pop
2008-12-05 12:00 ` Rafael J. Wysocki
2008-12-05 15:57 ` Linus Torvalds
2008-12-05 21:32 ` Rafael J. Wysocki
2008-12-05 17:25 ` Jesse Barnes
2008-12-02 15:49 ` Rafael J. Wysocki
2008-12-06 14:05 ` [PATCH 0/3] Fix hibernation regression on Toshiba Portege R500 Rafael J. Wysocki
2008-12-06 14:07 ` [PATCH 1/3] PCI: Rework default handling of suspend and resume Rafael J. Wysocki
2008-12-06 17:07 ` Linus Torvalds
2008-12-06 17:22 ` Rafael J. Wysocki
2008-12-06 17:33 ` Linus Torvalds
2008-12-06 17:43 ` Rafael J. Wysocki
2008-12-06 18:00 ` Linus Torvalds
2008-12-06 21:24 ` Rafael J. Wysocki
2008-12-07 4:44 ` Jesse Barnes
2008-12-07 5:41 ` Greg KH
2008-12-07 12:47 ` Rafael J. Wysocki
2008-12-07 16:44 ` Linus Torvalds
2008-12-07 21:02 ` Rafael J. Wysocki
2008-12-07 17:26 ` Greg KH
2008-12-07 23:34 ` [PATCH 1/3] PCI: Rework default handling of suspend and resume (rebased) Rafael J. Wysocki
2008-12-06 18:30 ` [linux-pm] [PATCH 1/3] PCI: Rework default handling of suspend and resume Alan Stern
2008-12-06 21:36 ` Rafael J. Wysocki
2008-12-06 22:24 ` Linus Torvalds
2008-12-06 23:25 ` Arjan van de Ven
2008-12-06 23:35 ` Alan Cox
2008-12-07 6:00 ` Linus Torvalds
2008-12-07 6:03 ` Linus Torvalds
2008-12-07 13:39 ` Rafael J. Wysocki
2008-12-07 16:34 ` Linus Torvalds
2008-12-14 9:28 ` Pavel Machek
2008-12-07 17:18 ` Arjan van de Ven
2008-12-07 9:44 ` Takashi Iwai
2008-12-07 0:02 ` Alan Stern
2008-12-07 13:14 ` Rafael J. Wysocki
2008-12-06 21:09 ` Alan Cox
2008-12-06 21:50 ` Rafael J. Wysocki
2008-12-06 14:07 ` [PATCH 2/3] PCI: Suspend and resume PCI Express ports with interrupts disabled Rafael J. Wysocki
2008-12-06 17:15 ` Linus Torvalds
2008-12-06 17:25 ` Rafael J. Wysocki
2008-12-06 17:38 ` Linus Torvalds
2008-12-06 17:46 ` Rafael J. Wysocki
2008-12-07 2:18 ` Jesse Barnes
2008-12-07 12:53 ` Rafael J. Wysocki
2008-12-06 14:09 ` [PATCH 3/3] Sound (HDA Intel): Restore PCI configuration space with interrupts off Rafael J. Wysocki
2008-12-07 4:45 ` Jesse Barnes
2008-12-07 9:47 ` Takashi Iwai
2008-12-11 7:07 ` Takashi Iwai
2008-12-11 20:03 ` Rafael J. Wysocki
2008-12-11 20:27 ` Takashi Iwai
2008-12-11 20:38 ` Rafael J. Wysocki
2008-12-12 6:32 ` Takashi Iwai
2008-12-06 19:30 ` [PATCH 0/3] Fix hibernation regression on Toshiba Portege R500 Frans Pop
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=alpine.LFD.2.00.0812222319260.20902@localhost.localdomain \
--to=lenb@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=elendil@planet.nl \
--cc=greg@kroah.com \
--cc=hpa@zytor.com \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=macro@linux-mips.org \
--cc=mingo@elte.hu \
--cc=rjw@sisk.pl \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=tiwai@suse.de \
--cc=torvalds@linux-foundation.org \
--cc=venkatesh.pallipadi@intel.com \
--cc=yinghai@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome