Re: cpufreq terminally broken [was Re: community PM requirements/issues and PowerOP]
From: Pavel Machek <hidden>
Date: 2006-09-12 08:33:28
Also in:
lkml
Hi!
quoted
quoted
quoted
No, there is reason to keep that in kernel -- so that cpufreq userspace interface can be kept, and so that resulting kernel<->user interface is not ugly.Cpuferq defines cpufreq_frequency_table structure in arch independent header while it's arch dependent data structure. A lot of code is built around this invalid basic brick and therefore is invalid: cpufreq tables, interface with cpu freq drivers, etc. Notion of transition latency as it defined by cpufreq is wrong because it's not a function of cpu type but function of current and next operating point. no runtime control on operating points set. it's always the same set of operating points for all system cpus in smp case and no way to define different sets or track any dependencies in case say multi core cpus. insufficient kernel<->user space interface to handle embedded requirements and no way to extend it within current design. Shall I continue? Why should then anyone want to keep cpufreq userspace interface just due to keep it?Yes, please continue. I do not think we can just rip cpufreq interface out of kernel, and I do not think it is as broken as you claim it is. Ripping interface out of kernel takes years. I'm sure cpufreq_frequency_table could be moved to asm/ header if you felt strongly about that. I believe we need to fix cpufreq if it is broken for embedded cases.cpufreq is broken at the cpufreq_driver interface for embedded applications needing control over more than one control variable at a time. That interface only supports setting target frequencies, and expanding it to set target frequencies and voltages is not possible without something like PowerOP. Adding the types of parameters to cpufreq would likely make cpufreq a mess.
Can we at least try adding that, before deciding cpufreq is unsuitable and starting new interface? I do not think issues are nearly as big as you think.. (at user<->kernel interface level, anyway; you'll need big changes under the hood). Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html