DPM Release Notes / Changelog Version 2.6.11 03/03/05 Core: * Use trylock calls for policy spinlock to avoid sleeps in interrupt or preemption-off contexts. Avoid warnings using Ingo's RT patches. * Avoid bogus stats update for NO_STATE that could corrupt memory. * Sanity check for constraint max >= min (from Amit Choudhary). * Sync to kernel.org 2.6.11. x86: * Update loops_per_jiffy and cpu_khz (and therefore /proc/cpuinfo) at frequency changes (from Napo'o). Version 2.6.10 01/10/05 Remove IRQ disable/enable around generic operating point setting code, since setting sleep operating points may require sleeping/scheduling in driver suspend/resume callbacks. NOTE: If interrupts must be disabled for a code sequence used to set an operating point in your machine-dependent code, the IRQ save/restore logic must be moved there. Fix oops if bad op/class name written to policy state mapping attribute, e.g.: # echo stewpid > /sys/dpm/policy/mypolicy/idle Modify /sys/dpm/state/ attributes to be kobjects. Add /sys/dpm/state//constraints for reading devices constraining a state from userspace. Restore force attributes for operating points, although forcing is not implemented in the kernel. Port stats interfaces to sysfs: /sys/dpm/state/stats, /sys/dpm/op/stats, /sys/dpm/policy/stats. All stats configured with CONFIG_DPM_STATS, no separate symbol for OPT_STATS, idle stats and MD stats dropped. Check for and reject double disable/enable. Call machine-dependent cleanup routine on disable to be symetric with enable processing, and avoid oopses due to improperly handled pm_idle loop save/restore logic therein. Mark procfs interface deprecated, must be explicitly enabled. Restore ability to create classes via /proc. Fix compile if CONFIG_DPM=n Version 2.6.9 10/19/04 * Add x86 Centrino 1.7G model setup script (from Armin Kuster). * Power parameters are now named, names provided by the board-specific code. SysFS files and messages now use these names. * Add operating point sysfs attributes for power parameter values. Operating points may now be created without the (board-specific, defined by kernel headers) ordered list of power parameter values. The parameters may now be filled in individually by writing to the associated attributes. This also allows parameters for an existing operating point to be modified at runtime. * Add sysfs attributes for operating states (not yet used, for future stats). * Move read/write active operating state interfaces to new /sys/dpm/state/active attribute. * Add policy sysfs attributes for mapping operating states to operating points. Policies may now be created without the (board-specific, defined by kernel headers) ordered list of mappings (in operating state index oreder). Now the mappings may be filled in individually by writing to the associated attributes. This also allows mappings for an existing policy to be modified at runtime. * Move interface for read/write active policy to new /sys/dpm/policy/active attribute. * Add /proc/pid/dpmstate for reading and setting task states (based on contribution from Armin Kuster). * Disable forced operating points, these need work (and are better handled in userspace). * Move sysfs and portions of /proc interface going forward to new dpm-ui.c * Remove obsolete interface support routines. * Resync with kernel.org for 2.6.9. OMAP: * Add omap730 setup script (from Armin Kuster). * Changes due to new OMAP clocking code. * Allow -1 "no change" value for all power parameters. * Resync with linux-omap.bkbits.net for 2.6.9-final. Version 2.6.8.1 * Fix compile error if CONFIG_HOTPLUG=n * Resync with kernel.org 2.6.8.1. Version 2.6.7 07/07/2004 * Added "classes" of operating points: DPM selects an operating point from the class according to device constraints. See new section Operating Point Classes in the DPM Developer's Guide. * Added general power event notifiers and change the existing device-power notifiers: * device_power_notify() -> device_power_event() * use power.agent * event device-event * DEVPATH=sysfs-path replaced with DEVICE=bus-id See new section Power Event Notifiers in the DPM Developer's Guide. * Added OMAP1610 H2 Dynamic Voltage Scaling (experimental). dpm-setup-omap1610 is updated to include two 1.1V operating points. * Fixes for CONFIG_DPM/CONFIG_PM=n and ARM cleanups (thanks George Davis) and CONFIG_HOTPLUG=n. * Removed dpm_md_init() (just user __initcall() for machine-dependent init, no ordering needed between generic and machine-dependent; the ordered part is now handled via dpm_md_startup()). * Sync with linux-2.6.7 and linux-omap tree as of 07/07/2004. Version 2.6.7-rc2 06/02/2004 * Kernel release 2.6.7-rc2. * DPM "class" interfaces are added back in, but are as yet unused (policies continue to map an operating state to a single operating point; class specifications will be added later). * Added new LDM class device-power for drivers to send PM information to userspace power policy managers. See the Device Event Notifiers section of the DPM Developer's Guide. * Fixes from previous DPM patches were accepted into kernel.org at 2.6.7-rc2 and are removed from the DPM patch: * Set device power state at runtime resume (as is done for runtime suspend) so that a later suspend does not think the device is still suspended. * Move devices from active to off list only when suspending all devices, not for runtime suspend, to match resume handling, and to avoid reordering the device list (which is in order of registration and suspend/resume works best that way). * Do not resume devices at system resume time that were individually suspended prior to system suspend. * OMAP platform changes: * match new bus accessor conventions * match register symbol name changes * 1610 voltage scaling pre-enablement Version 2.6.5 04/20/2004 * Kernel release 2.6.5. * Add device constraints, which restrict DPM's ability to move to certain operating points while certain devices are in use. * Add "forced operating points" that override device constraints. * Add driver scaling callbacks to adjust to new frequencies. * Device suspend/resume fixes: (1) Set device power state at runtime resume (as is done for runtime suspend) so that a later suspend does not think the device is still suspended; (2) Move devices from active to off list only when suspending all devices, not for runtime suspend, to match resume handling, and to avoid reordering the device list (which is in order of registration and suspend/resume works best that way). (Fixes suggested to LKML 04/02/2004.) * TI OMAP1610 supported. Sleep/standby not yet supported. Dynamic Voltage Scaling not yet supported. * TI OMAP1510 sleep/standby supported. Setup script and oeprating points, policies, etc. redone. * Started writing developer's guide for new features.