From: Stefan Baums <baums@u.washington.edu>
To: linux-kernel@vger.kernel.org
Subject: ACPI and the idle loop - possible bug
Date: Sat, 25 Jun 2005 14:01:10 -0700 [thread overview]
Message-ID: <20050625210110.GA7738@localhost.localdomain> (raw)
Some Lenove (IBM) ThinkPad models (in my case the ThinkPad X41
2528-6NU) produce irritating high-pitch crackling noises under
Linux in certain conditions, see the discussion here:
http://thinkwiki.org/wiki/Problem_with_high_pitch_noises
This noise only occurs when the processor is not busy (with, e.g.,
compiling or video playback), so it seems to be related to the
idle loop (see also below about 'idle=halt'). Furthermore, it
seems to be caused by something that ACPI is doing to the
processor: if the 'processor' module (and its dependants:
'speedstep_centrino'/'acpi_cpufreq' and 'thermal') are not loaded,
the high-pitch noise does not occur.
If the 'processor' module (and its dependants) _are_ loaded, then
the noise can be initially avoided by passing the boot parameter
idle=halt
to the kernel (causing it to halt, not poll, the processor during
idle loops), but this workaround _only_ works until either
1) the system resumes from either suspend or hibernation, or
2) the power state changes from battery to plugged-in or vice
versa.
whereupon the high-pitch noise makes a return.
Taken all together, it would appear that the ACPI system is doubly
at fault:
- First, for causing the high-pitch noise to start with, though
it could be argued that this is a hardware defect that is
just triggered by ACPI. (However not by Windows XP, on the
same computer, so it is definitely avoidable.)
- Second, for apparently not respecting the kernel boot
parameter "idle=halt" when it resumes or changes power state:
it seems like ACPI is reverting to idle polling on those
occasions.
Do you agree with this analysis? Is it clear what ACPI's root
problem ('first' above) is, and will it be solved? (Not loading
the 'processor', 'speedstep_centrino'/'acpi_cpufreq' and 'thermal'
modules - and losing their features - is not an acceptable
solution.)
As for the 'idle=halt' workaround: Is there any way to test
whether a running kernel actually uses polling or halt for the
idle loop? What can I do to force ACPI never to use idle polling,
but halt instead?
My kernel version is Linux 2.6.12, custom-compiled on Ubuntu 5.04.
I have enabled all the usual ACPI features as modules. The noise
problem occurs both with the 'speedstep_centrino' and the
'acpi_cpufreq' modules. If necessary for diagnosis, I can put up
my kernel .config file online somewhere.
Many thanks for your help,
Stefan
PS. Setting the polling frequency to 100 Hz instead of 1000 Hz at
compile time, as recommended by some people on the ThinkWiki page,
did not have any effect on the noise problem on my computer.
--
Stefan Baums
Asian Languages and Literature
University of Washington
reply other threads:[~2005-06-25 21:01 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20050625210110.GA7738@localhost.localdomain \
--to=baums@u.washington.edu \
--cc=linux-kernel@vger.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
all inboxes | Powered by JetHome®