From: Jean Delvare <khali@linux-fr.org>
To: lm-sensors@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH] hwmon: fix common race conditions, batch 2
Date: Wed, 09 Apr 2008 09:42:11 +0000 [thread overview]
Message-ID: <20080409114211.11f114fc@hyperion.delvare> (raw)
In-Reply-To: <20080406180721.GN27659@mars.solarsys.private>
Hi Hans,
On Mon, 07 Apr 2008 22:04:24 +0200, Hans de Goede wrote:
> Jean Delvare wrote:
> > We have to be consistent in our choices. The general
> > decision for Linux hardware monitoring drivers was to read the
> > registers that aren't supposed to change. While this decision could be
> > discussed (as you seem to be willing to do),
>
> Yes, I wonder why we read registers which are not supposed to change?
> The only reason I can come up with is that we suspect something maybe meddling
> with the hardware underneath us (most likely ACPI). If this is the reason, then
ACPI or SMM, yes. Could also be user-space but then it's really the
user's responsibility.
> we should check if that has _actually happened_ and if it does report it
> (through printk/dmesg). Thinking about this I wonder of the use of reading
> these registers regulary at all, even if ACPI is communicating with the hwmon
> device, I think its highly unlikely it will be changing any settings (like for
> example limits) after boot.
I've seen it at least once. The chip had an output pin going low when
either the low or the high temperature limit was crossed. The BIOS was
changing the limits when the pin went low, so it was sort of emulating
multiple levels of thermal alert while the chip only supported one in
hardware.
> So my vote goes out to rather then adding this locking, remove the periodically
> reading of registers which never change. With that said, I still have no
> objections to this patch going in in the mean time, until we decide upon how to
> handle this in the future and then start preparing the necessary patches.
I don't like the current approach either. In fact it seems that every
new developer finds it odd at first, and in the end we only keep doing
it because it has been so from the beginning of the lm-sensors project.
The fact is that our drivers would perform much better if we did not
repeatedly read from registers which aren't supposed to change. Some
drivers mitigate the performance penalty by reading from these
registers less frequently, but then it somewhat misses the original
point of always reflecting the current register state.
But on the other hand, anything that helps spot conflicts with ACPI or
SMM is welcome, as these issues can be very hard to investigate - in
particular for SMBus-based chips or chips with index/data pair I/O port
access, where simultaneous access can result in data corruption. Thomas
Renninger and myself proposed something that should help for ACPI in
some cases but Linus rejected our approach. Removing the extra reads
from our drivers would be one less way to spot that kind of problem. Of
course we can look at the registers directly using i2cdump or isadump
in most cases, but users are less likely to do that, while they usually
do notice when limits change mysteriously.
So all in all I have to admit that I don't really know what to do.
Maybe the extra reads should be made a compilation-time or (probably
better) a run-time option, so we leave the decision to the user?
--
Jean Delvare
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
next prev parent reply other threads:[~2008-04-09 9:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-06 18:07 [lm-sensors] [PATCH] hwmon: fix common race conditions, batch 2 Mark M. Hoffman
2008-04-07 5:49 ` Hans de Goede
2008-04-07 13:35 ` Jean Delvare
2008-04-07 15:13 ` Jean Delvare
2008-04-07 20:04 ` Hans de Goede
2008-04-09 9:42 ` Jean Delvare [this message]
2008-04-11 7:18 ` Hans de Goede
2008-04-11 9:29 ` [lm-sensors] [PATCH] hwmon: fix common race conditions, Jean Delvare
2008-04-14 14:29 ` Hans de Goede
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=20080409114211.11f114fc@hyperion.delvare \
--to=khali@linux-fr.org \
--cc=lm-sensors@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 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.