• Arjan van de Ven's avatar
    [PATCH] maximum latency tracking infrastructure · 5c87579e
    Arjan van de Ven authored
    Add infrastructure to track "maximum allowable latency" for power saving
    The reason for adding this infrastructure is that power management in the
    idle loop needs to make a tradeoff between latency and power savings
    (deeper power save modes have a longer latency to running code again).  The
    code that today makes this tradeoff just does a rather simple algorithm;
    however this is not good enough: There are devices and use cases where a
    lower latency is required than that the higher power saving states provide.
     An example would be audio playback, but another example is the ipw2100
    wireless driver that right now has a very direct and ugly acpi hook to
    disable some higher power states randomly when it gets certain types of
    The proposed solution is to have an interface where drivers can
    * announce the maximum latency (in microseconds) that they can deal with
    * modify this latency
    * give up their constraint
    and a function where the code that decides on power saving strategy can
    query the current global desired maximum.
    This patch has a user of each side: on the consumer side, ACPI is patched
    to use this, on the producer side the ipw2100 driver is patched.
    A generic maximum latency is also registered of 2 timer ticks (more and you
    lose accurate time tracking after all).
    While the existing users of the patch are x86 specific, the infrastructure
    is not.  I'd like to ask the arch maintainers of other architectures if the
    infrastructure is generic enough for their use (assuming the architecture
    has such a tradeoff as concept at all), and the sound/multimedia driver
    owners to look at the driver facing API to see if this is something they
    can use.
    [akpm@osdl.org: cleanups]
    Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Acked-by: default avatarJesse Barnes <jesse.barnes@intel.com>
    Cc: "Brown, Len" <len.brown@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
processor_idle.c 31.4 KB