linux-stable-rt/Documentation
Mark Gross d82b35186e pm qos infrastructure and interface
The following patch is a generalization of the latency.c implementation done
by Arjan last year.  It provides infrastructure for more than one parameter,
and exposes a user mode interface for processes to register pm_qos
expectations of processes.

This interface provides a kernel and user mode interface for registering
performance expectations by drivers, subsystems and user space applications on
one of the parameters.

Currently we have {cpu_dma_latency, network_latency, network_throughput} as
the initial set of pm_qos parameters.

The infrastructure exposes multiple misc device nodes one per implemented
parameter.  The set of parameters implement is defined by pm_qos_power_init()
and pm_qos_params.h.  This is done because having the available parameters
being runtime configurable or changeable from a driver was seen as too easy to
abuse.

For each parameter a list of performance requirements is maintained along with
an aggregated target value.  The aggregated target value is updated with
changes to the requirement list or elements of the list.  Typically the
aggregated target value is simply the max or min of the requirement values
held in the parameter list elements.

>From kernel mode the use of this interface is simple:

pm_qos_add_requirement(param_id, name, target_value):

  Will insert a named element in the list for that identified PM_QOS
  parameter with the target value.  Upon change to this list the new target is
  recomputed and any registered notifiers are called only if the target value
  is now different.

pm_qos_update_requirement(param_id, name, new_target_value):

  Will search the list identified by the param_id for the named list element
  and then update its target value, calling the notification tree if the
  aggregated target is changed.  with that name is already registered.

pm_qos_remove_requirement(param_id, name):

  Will search the identified list for the named element and remove it, after
  removal it will update the aggregate target and call the notification tree
  if the target was changed as a result of removing the named requirement.

>From user mode:

  Only processes can register a pm_qos requirement.  To provide for
  automatic cleanup for process the interface requires the process to register
  its parameter requirements in the following way:

  To register the default pm_qos target for the specific parameter, the
  process must open one of /dev/[cpu_dma_latency, network_latency,
  network_throughput]

  As long as the device node is held open that process has a registered
  requirement on the parameter.  The name of the requirement is
  "process_<PID>" derived from the current->pid from within the open system
  call.

  To change the requested target value the process needs to write a s32
  value to the open device node.  This translates to a
  pm_qos_update_requirement call.

  To remove the user mode request for a target value simply close the device
  node.

[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foundation.org: fix build]
[akpm@linux-foundation.org: fix build again]
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: mark gross <mgross@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: Len Brown <lenb@kernel.org>
Cc: Jaroslav Kysela <perex@suse.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Arjan van de Ven <arjan@infradead.org>
Cc: Venki Pallipadi <venkatesh.pallipadi@intel.com>
Cc: Adam Belay <abelay@novell.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-05 09:44:22 -08:00
..
ABI USB: Add documentation for USB suspend statistics. 2008-02-01 14:35:00 -08:00
DocBook docbook: rapidio: fix fatal filename error 2008-02-01 21:11:40 +11:00
RCU Preempt-RCU: update RCU Documentation. 2008-01-25 21:08:25 +01:00
accounting
aoe
arm fix typo 'the same the\>' 2008-02-03 14:59:11 +02:00
auxdisplay
blackfin
block
cdrom
connector
console
cpu-freq [ARM] pxa: add cpufreq support 2008-01-26 15:07:52 +00:00
cris
crypto [CRYPTO] doc: Update api-intro.txt 2008-01-11 08:16:14 +11:00
device-mapper
driver-model Driver core: Update some prototypes in platform.txt 2008-02-02 15:14:49 -08:00
drivers/edac
dvb V4L/DVB (7077): bt878: remove handcrafted PCI subsystem ID check 2008-01-25 19:05:22 -02:00
early-userspace
fault-injection
fb
filesystems Document lowmem_reserve_ratio 2008-02-05 09:44:19 -08:00
firmware_class
frv move frv docs one level up 2008-02-03 15:54:28 +02:00
hrtimer
hrtimers
hwmon
i2c deprecate obsolete pca9539 driver 2008-02-05 09:44:13 -08:00
i2o
i386
ia64
ide ide-tape: move historical changelog to Documentation/ide/ChangeLog.ide-tape.1995-2002 2008-02-02 19:56:48 +01:00
infiniband
input
ioctl
isdn
ja_JP Add ja_JP translation of stable_kernel_rules.txt 2008-02-02 15:14:48 -08:00
kbuild kconfig: document use of HAVE_* 2008-01-28 23:21:19 +01:00
kdump
ko_KR HOWTO: update misspelling and word incorrected 2007-12-17 10:33:19 -08:00
lguest virtio: reset function 2008-02-04 23:50:03 +11:00
m68k [SCSI] 53c7xx: fix removal fallout 2008-01-11 18:22:30 -06:00
make
mips [MIPS] remove Documentation/mips/GT64120.README 2008-01-29 10:15:05 +00:00
namespaces
netlabel
networking Documentation: "decnet=" should read "decnet.addr=". 2008-02-03 15:18:45 +02:00
parisc
pcmcia pcmcia: replace kio_addr_t with unsigned int everywhere 2008-02-05 09:44:08 -08:00
power PM: Remove obsolete /sys/devices/.../power/state docs 2008-02-01 18:30:59 -05:00
powerpc [POWERPC] fsl_spi: stop using device_type = "spi" 2008-01-28 08:32:58 -06:00
s390 [S390] cio: Dump ccw device information in case of timeout. 2008-01-26 14:10:55 +01:00
scsi [SCSI] aacraid: add Voodoo Lite class of cards. 2008-01-23 11:29:34 -06:00
serial
sh
sound [ALSA] hda-codec - Add Dell T3400 support 2008-01-31 17:30:22 +01:00
sparc
spi
sysctl mm/page-writeback: highmem_is_dirtyable option 2008-02-05 09:44:18 -08:00
telephony
uml
usb USB: add Printer Gadget Driver 2008-02-01 14:34:49 -08:00
video4linux V4L/DVB (7043): New card supported(partially): Pinnacle 800i 2008-01-25 19:05:06 -02:00
vm kset: move /sys/slab to /sys/kernel/slab 2008-01-24 20:40:16 -08:00
w1
watchdog [WATCHDOG] clarify watchdog operation in documentation 2008-01-18 21:23:05 +00:00
x86_64 documentation: add Documentation/x86-64/00-INDEX 2008-02-04 16:48:02 +01:00
zh_CN Chinese: add translation of Codingstyle 2008-01-24 20:40:04 -08:00
00-INDEX move frv docs one level up 2008-02-03 15:54:28 +02:00
BUG-HUNTING Documentation/BUG-HUNTING whitespace cleanup 2008-02-03 16:26:36 +02:00
Changes
CodingStyle
DMA-API.txt
DMA-ISA-LPC.txt
DMA-mapping.txt
HOWTO
IO-mapping.txt
IPMI.txt
IRQ-affinity.txt
IRQ.txt
Intel-IOMMU.txt
MSI-HOWTO.txt
ManagementStyle
PCIEBUS-HOWTO.txt
README.DAC960
README.cycladesZ
SAK.txt
SM501.txt
SecurityBugs
Smack.txt Smack: Simplified Mandatory Access Control Kernel 2008-02-05 09:44:20 -08:00
SubmitChecklist
SubmittingDrivers
SubmittingPatches Documentation: mention email-clients.txt in SubmittingPatches 2008-02-03 18:06:58 +02:00
VGA-softcursor.txt
applying-patches.txt
atomic_ops.txt
basic_profiling.txt
binfmt_misc.txt
cachetlb.txt
cciss.txt
cgroups.txt
cli-sti-removal.txt
computone.txt
cpqarray.txt
cpu-hotplug.txt [S390] Get rid of additional_cpus kernel parameter. 2008-01-26 14:11:15 +01:00
cpu-load.txt
cpusets.txt
cputopology.txt
dcdbas.txt
debugging-modules.txt Documentation: Clarify when module debugging actually works. 2008-02-03 15:27:38 +02:00
debugging-via-ohci1394.txt x86: early boot debugging via FireWire (ohci1394_dma=early) 2008-01-30 13:34:11 +01:00
dell_rbu.txt
devices.txt
digiepca.txt
dnotify.txt
dontdiff [SCSI] 53c7xx: fix removal fallout 2008-01-11 18:22:30 -06:00
eisa.txt
email-clients.txt
exception.txt
feature-removal-schedule.txt USB: mark USB drivers as being GPL only 2008-02-01 14:35:07 -08:00
floppy.txt
gpio.txt gpiolib: update Documentation/gpio.txt 2008-02-05 09:44:13 -08:00
hayes-esp.txt
highuid.txt
hpet.txt
hw_random.txt
ide.txt ide: remove broken disk byte-swapping support 2008-01-26 20:13:09 +01:00
initrd.txt use the newc archive format as requested by initramfs 2008-02-03 14:54:41 +02:00
io_ordering.txt
ioctl-number.txt ocfs2: Reserve ioctl range 2008-01-25 14:48:57 -08:00
iostats.txt
irqflags-tracing.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt
kernel-docs.txt
kernel-parameters.txt Documentation: Remove references to dead "st0x" and "tmc8xx" parms. 2008-02-03 15:23:00 +02:00
keys-request-key.txt
keys.txt
kobject.txt kobject: update the kobject/kset documentation 2008-01-24 20:40:41 -08:00
kprobes.txt ARM kprobes: let's enable it 2008-01-26 15:25:17 +00:00
kref.txt
laptop-mode.txt
ldm.txt
leds-class.txt
local_ops.txt Revert "local_t Documentation update" 2008-01-17 15:38:59 -08:00
lockdep-design.txt
lockstat.txt
logo.gif
logo.txt
magic-number.txt
markers.txt
mca.txt
md.txt
memory-barriers.txt
memory-hotplug.txt
memory.txt
mono.txt
moxa-smartio
mtrr.txt
mutex-design.txt
nbd.txt
nfsroot.txt [IPV4] ipconfig: Fix regression in ip command line processing 2008-01-08 23:29:58 -08:00
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt
paride.txt
parport-lowlevel.txt
parport.txt
pci-error-recovery.txt
pci.txt PCI: Remove pci_enable_device_bars() from documentation 2008-02-01 15:04:28 -08:00
pcieaer-howto.txt
pi-futex.txt
pm.txt
pm_qos_interface.txt pm qos infrastructure and interface 2008-02-05 09:44:22 -08:00
pnp.txt Documentation: Replace obsolete "driverfs" with "sysfs". 2008-01-24 20:40:04 -08:00
power_supply_class.txt power_supply: add few more values and props 2008-02-02 02:43:00 +03:00
preempt-locking.txt
prio_tree.txt
ramdisk.txt
rbtree.txt
rfkill.txt
riscom8.txt
robust-futex-ABI.txt
robust-futexes.txt
rocket.txt
rpc-cache.txt
rt-mutex-design.txt
rt-mutex.txt
rtc.txt
sched-arch.txt
sched-coding.txt
sched-design-CFS.txt
sched-design.txt
sched-domains.txt
sched-nice-design.txt
sched-stats.txt
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
sharedsubtree.txt
smart-config.txt
sony-laptop.txt
sonypi.txt
sparse.txt
specialix.txt
spinlocks.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
stallion.txt
svga.txt
sx.txt
sysfs-rules.txt
sysrq.txt
thinkpad-acpi.txt
tty.txt
unicode.txt
unshare.txt
video-output.txt
volatile-considered-harmful.txt
voyager.txt
zorro.txt

README.cycladesZ

The Cyclades-Z must have firmware loaded onto the card before it will
operate.  This operation should be performed during system startup,

The firmware, loader program and the latest device driver code are
available from Cyclades at
    ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/