On Mon, Jun 23, 2014 at 12:18:51PM -0400, Ilia Mirkin wrote:
On Mon, Jun 23, 2014 at 12:07 PM, Greg KH greg@kroah.com wrote:
On Sun, Jun 22, 2014 at 10:12:14PM -0400, Ilia Mirkin wrote:
On Sat, Jun 21, 2014 at 3:45 PM, Greg KH greg@kroah.com wrote:
On Sat, Jun 21, 2014 at 02:22:59PM -0400, Ilia Mirkin wrote:
On Sat, Jun 21, 2014 at 2:02 PM, Pavel Machek pavel@ucw.cz wrote:
Hi!
AFAICT, pstate file will contain something like
07: core 100 MHz memory 123 MHz * 08: core 100-200 MHz memory 123 MHz
...which does not look exactly like one-value-per-file, and I'm pretty sure userspace will get it wrong if it tries to parse it. Plus, I don't see required documentation in Documentation/ABI.
Should we disable it for now, so that userspace does not start depending on it and we'll not have to maintain it forever?
I guess better interface would be something like
pstate/07/core_clock_min core_clock_max memory_clock_min memory_clock_max
and then pstate/active containing just the number of active state?
Thanks, Pavel
PS: I have no nvidia, got the news at
http://www.phoronix.com/scan.php?page=article&item=nouveau_try_linux316&...
FTR, this file has been in place since 3.13, and there was a different file before it (performance_levels), with a comparable format since much earlier (definitely 3.8, probably earlier). I think it's meant a lot more for people looking at it and echo'ing stuff to it to modify the levels (where supported), than for programs parsing it. Perhaps sysfs is the wrong place for this -- what is the right place? debugfs?
Yes, please move it to debugfs.
Could we just say that the format of this file is one-per-line of
level: information-for-the-user
And you can echo a level into it to switch to that level? That seems like a reasonable ABI to have... would be happy to throw it into a file somewhere... not sure where though.
sysfs files are "one value per file", that's it. Do anything other than that, and it can not be in sysfs, sorry.
I think that's a little inconsistent. There are *tons* of files in sysfs with multiple values. For example "local_cpulist" which contains the string "0-3" for me, the per-connector "modes" file which has a list of modes supported, and a "resource" file which has a list of hex values (which probably have something to do with PCI resources?). [I purposely picked values coming from different parts of the kernel not to focus on one subsystem...]
A list of valid "values" that a file can be in is fine if you just then write one value back to that file. That's the one exception, but a minor one given the huge number of sysfs files. Other than that, if you know of exceptions to that rule, please point them out and I will be glad to yell at the developers.
PCI device resources are binary sysfs files, which are just pass-through files from the firmware/device to userspace, with no parsing done in the kernel. So that's just a single 'value' as well.
greg k-h