From: "Noah J. Misch" <noah@caltech.edu>
To: Alex Williamson <alex.williamson@hp.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
acpi-devel@lists.sourceforge.net, shaohua.li@intel.com,
len.brown@intel.com, jon@nanocrew.net
Subject: Re: [BUG] test9 ACPI bad: scheduling while atomic!
Date: Mon, 27 Oct 2003 10:02:37 -0800 (PST) [thread overview]
Message-ID: <Pine.GSO.4.58.0310270929010.14546@blinky> (raw)
In-Reply-To: <1067273229.7497.30.camel@patsy.fc.hp.com>
On Mon, 27 Oct 2003, Alex Williamson wrote:
> > This was obvious on my system because it has no ECDT table, and as such
> > acpi_ec_gpe_query was _always_ running in interrupt context, whereas with an
> > ECDT it would only do so for a brief time during boot, and the problem would be
> > much more subtle. That's probably why nobody noticed this in earlier tests.
> >
>
> I don't have an ECDT either. Is it possible that the setting of
> ec_device_init = 1 is simply misplaced?
It is misplaced. If revision 1.26 of ec.c were otherwise sound, I would place
ec_device_init = 1 right before the call to acpi_install_gpe_handler in
acpi_ec_start. Anywhere outside that if and between where _add removes the
handlers and _start installs them would work. This would fix your crash, but
it's not the right fix.
> I can see why we wouldn't want to call acpi_os_queue_for_execution() early in
> bootup, but there ought to be a fixed point after which it's ok, regardless of
> whether the system has the ECDT table.
I don't think early calls to schedule_work (via acpi_os_queue_for_execution) are
a problem. The call to init_workqueues is just before do_initcalls in
do_basic_setup, so it happens earlier than all this stuff.
The more general problem is that acpi_ec_gpe_query cannot run in an interrupt
handler as written. It used to always run from a queue. We can either fix it
so it can run from an interrupt handler or change it back to never doing so. I
favor the latter, especially because I don't see how the recent change fixed the
problem T40 users were experiencing.
> Would it be sufficient to set ec_device_init to 1 at the beginning of
> acpi_ec_add(), with no dependency on the ECDT table?
That particular placement looks racy. I would do it after removing the
handlers, as explained above.
Thanks,
Noah
next prev parent reply other threads:[~2003-10-27 18:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-27 8:22 [BUG] test9 ACPI bad: scheduling while atomic! Noah J. Misch
2003-10-27 16:47 ` Alex Williamson
2003-10-27 18:02 ` Noah J. Misch [this message]
2003-10-27 20:24 ` [ACPI] " Nate Lawson
[not found] <571ACEFD467F7749BC50E0A98C17CDD8D5FDBB@pdsmsx403.ccr.corp.intel.com>
2003-10-28 23:56 ` Noah J. Misch
-- strict thread matches above, loose matches on Subject: below --
2003-10-27 2:23 Alex Williamson
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=Pine.GSO.4.58.0310270929010.14546@blinky \
--to=noah@caltech.edu \
--cc=acpi-devel@lists.sourceforge.net \
--cc=alex.williamson@hp.com \
--cc=jon@nanocrew.net \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=shaohua.li@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).