[lm-sensors] superio lock coordinator
Jean Delvare
khali at linux-fr.org
Tue Jul 15 12:40:54 CEST 2008
Hi Jim,
On Tue, 15 Jul 2008 01:56:00 -0600, Jim Cromie wrote:
> these are on my current todo / partly done
>
> - struct superio_common - stuff thats copied from struct superio-search
> to struct superio when reservation is taken
>
> - add a u8 flags to struct superio
> -- carries bit for tracking enter/exit state -
> should support warnings on situations like enter-on-entered,
> exit-on-exited
> - could carry a toggle bit for a union superio_exit { fnptr;
> exit_seq[X] } or somesuch.
>
> -- following another thread - we'd
> --- reserve region when reservation taken, after devid is validated,
> might help keep other semi-rogue drivers out.
Actually, _before_ devid is validated. You shouldn't make _any_ I/O
access without first requesting the region. You can always release the
region afterwards if you didn't find anything interesting.
>
> = sort out enter / exit
>
> As David noted in this thread, the ehf driver has an odd exit sequence,
>
> The combined combined superio_exit() function I have coded currently is
> really quite hideous,
> and has me thinking towards David's function-pointer idea.
>
> - the other alternative is that David's driver should include its own
> custom exit-fn, which
> he would use instead of the regular superio_exit(). It could use the
> superio_enter routine as-is iirc.
Please read my reply to David's concern, and why having a per-chip exit
sequence doesn't make that much sense. I would use the same exit
function as isadump and sensors-detect have been using for months, as
this appears to work fine.
> my stall points - (fishing for answers;)
>
> - enter / exit should be tracked by superio-locks, in flags bit.
> (recent idea, seems sound)
> - enter / exit should be vaguely discouraged in kernel-doc - due to
> expectations of isadump etc.
Which expectations? User-space should stay away from I/O ports the
kernel has requested. There's little point in trying to sort out
concurrent accesses which simply shouldn't happen in the first place.
>
>
> I guess I gotta stop overcomplicating things, and get busy on the patch-set.
>
>
> > More interesting questions IMHO are:
> > 1) is hwmon the correct subsystem to put the .c file in (somewhat
> > superfical
> > really, but we need a place to put the lock coordinator (and enable
> > / disable
> > its building).
>
> I put it here for proximity to the center-of-mass of the drivers I found.
That's not necessarily a bad initial location. We can have superio live
in drivers/hwmon at first, and once all hwmon drivers use it, move it
to a neutral ground and convert the other drivers in the kernel tree
(mainly watchdog drivers I think.)
> > 2) non hwmon drivers need to be edited for superio register use too,
> > and then
> > modified to use the lock coordinator if they touch the superio
> > registers.
> > This will also be a good exercise to see if our API is generic enough.
> >
> I guess there are drivers I missed ?
Best way I think is to grep for each super-I/O chip name.
> thanks again Hans for pulling me back into this, I'll commit to staying
> with it now.
> Should I infer from your comments that the code at the link incorporates
> your feedback ?
> They seem to have aquired some momentum recently 8-)
>
> Jean, you raised the idea of a sysfs interface.
> Does the October patchset look to fit with what youre thinking ?
I don't think your patch offered a sysfs interface? I'm not really
thinking of anything in particular anyway. We just want a way for
sensors-detect to identify supported Super-I/O chips without actually
accessing the I/O ports if a kernel driver already requested them.
> - the most simple I can think of :
> --expose the kzalloced array of superio-fields as readonly attributes.
> --values go non-zero when superio-port is registered by some user-driver
> --it would be nice to see client-drivers list on each slot, but that
> involves more code and mem
What we really need for sensors-detect is simply the value of registers
0x20 and 0x21, and values of registers 0x30, 0x60 and 0x61 for a
selected logical device. In what form we export these, needs to be
discussed.
> David,
> do you have a preference wrt fn-ptr ? and if so, a single fn with 1 arg
> : 0,1,2 for enter/exit/query ?
> do you have any use for a flag bit ? is there generality in it ?
>
> does anyone think s/superio/sio/g is appropriate ?
No. This was discussed before and I have always objected to the name
"sio". It's too short and could mean about anything (starting with
"synchronous I/O", as opposed to "asynchronous I/O" which is very often
spelled AIO.)
> anything else ?
--
Jean Delvare
More information about the lm-sensors
mailing list