linux-stable-rt/Documentation
Christoph Lameter 742755a1d8 [PATCH] page migration: sys_move_pages(): support moving of individual pages
move_pages() is used to move individual pages of a process. The function can
be used to determine the location of pages and to move them onto the desired
node. move_pages() returns status information for each page.

long move_pages(pid, number_of_pages_to_move,
		addresses_of_pages[],
		nodes[] or NULL,
		status[],
		flags);

The addresses of pages is an array of void * pointing to the
pages to be moved.

The nodes array contains the node numbers that the pages should be moved
to. If a NULL is passed instead of an array then no pages are moved but
the status array is updated. The status request may be used to determine
the page state before issuing another move_pages() to move pages.

The status array will contain the state of all individual page migration
attempts when the function terminates. The status array is only valid if
move_pages() completed successfullly.

Possible page states in status[]:

0..MAX_NUMNODES	The page is now on the indicated node.

-ENOENT		Page is not present

-EACCES		Page is mapped by multiple processes and can only
		be moved if MPOL_MF_MOVE_ALL is specified.

-EPERM		The page has been mlocked by a process/driver and
		cannot be moved.

-EBUSY		Page is busy and cannot be moved. Try again later.

-EFAULT		Invalid address (no VMA or zero page).

-ENOMEM		Unable to allocate memory on target node.

-EIO		Unable to write back page. The page must be written
		back in order to move it since the page is dirty and the
		filesystem does not provide a migration function that
		would allow the moving of dirty pages.

-EINVAL		A dirty page cannot be moved. The filesystem does not provide
		a migration function and has no ability to write back pages.

The flags parameter indicates what types of pages to move:

MPOL_MF_MOVE	Move pages that are only mapped by the process.

MPOL_MF_MOVE_ALL Also move pages that are mapped by multiple processes.
		Requires sufficient capabilities.

Possible return codes from move_pages()

-ENOENT		No pages found that would require moving. All pages
		are either already on the target node, not present, had an
		invalid address or could not be moved because they were
		mapped by multiple processes.

-EINVAL		Flags other than MPOL_MF_MOVE(_ALL) specified or an attempt
		to migrate pages in a kernel thread.

-EPERM		MPOL_MF_MOVE_ALL specified without sufficient priviledges.
		or an attempt to move a process belonging to another user.

-EACCES		One of the target nodes is not allowed by the current cpuset.

-ENODEV		One of the target nodes is not online.

-ESRCH		Process does not exist.

-E2BIG		Too many pages to move.

-ENOMEM		Not enough memory to allocate control array.

-EFAULT		Parameters could not be accessed.

A test program for move_pages() may be found with the patches
on ftp.kernel.org:/pub/linux/kernel/people/christoph/pmig/patches-2.6.17-rc4-mm3

From: Christoph Lameter <clameter@sgi.com>

  Detailed results for sys_move_pages()

  Pass a pointer to an integer to get_new_page() that may be used to
  indicate where the completion status of a migration operation should be
  placed.  This allows sys_move_pags() to report back exactly what happened to
  each page.

  Wish there would be a better way to do this. Looks a bit hacky.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: Jes Sorensen <jes@trained-monkey.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
Cc: Andi Kleen <ak@muc.de>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-23 07:42:53 -07:00
..
ABI [PATCH] Add kernel<->userspace ABI stability documentation 2006-06-21 12:40:47 -07:00
DocBook [PATCH] slab: kmalloc, kzalloc comments cleanup and fix 2006-06-23 07:42:52 -07:00
RCU [PATCH] for_each_possible_cpu: documentaion 2006-03-28 09:16:05 -08:00
aoe
arm [ARM] 3407/1: lpd7x: documetation update 2006-06-18 16:16:51 +01:00
block [PATCH] Document online io scheduler switching 2006-04-20 13:04:36 +02:00
cdrom
connector
cpu-freq [CPUFREQ] Update LART site URL 2006-04-03 07:25:54 -05:00
cris
crypto
device-mapper
driver-model
drivers/edac
dvb V4L/DVB (3832): Get_dvb_firmware: download nxt2002 firmware from new driver location 2006-05-12 19:55:17 -03:00
early-userspace
fb
filesystems [PATCH] VFS: Permit filesystem to perform statfs with a known root dentry 2006-06-23 07:42:45 -07:00
firmware_class [PATCH] drivers/base/firmware_class.c: cleanups 2006-05-21 12:59:19 -07:00
fujitsu/frv Documentation: Make fujitsu/frv/kernel-ABI.txt 80 columns wide 2006-04-01 01:38:15 +02:00
hwmon [PATCH] lm70: New hardware monitoring driver 2006-06-22 11:10:35 -07:00
i2c [PATCH] i2c-i801: Remove force_addr parameter 2006-06-22 11:10:35 -07:00
i2o
i386
ia64
infiniband IPoIB: Mention RFC numbers in documentation 2006-06-17 20:37:32 -07:00
input Input: gamecon - add SNES mouse support 2006-04-02 00:10:05 -05:00
ioctl
isdn [PATCH] i4l gigaset: move sysfs entry to tty class device 2006-06-21 12:40:47 -07:00
kbuild kbuild: fix garbled text in modules.txt 2006-04-04 15:28:21 +02:00
kdump
m68k [PATCH] Typo fixes 2006-03-28 09:16:08 -08:00
mips
networking Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2006-06-19 18:55:56 -07:00
parisc
pcmcia [PATCH] pcmcia: convert remaining users of pcmcia_release_io and _irq 2006-03-31 17:15:51 +02:00
power [PATCH] USB: correct the USB info in Documentation/power/swsusp.txt 2006-06-21 15:04:11 -07:00
powerpc
s390
scsi [SCSI] aacraid: Update supported product information 2006-06-19 19:23:07 -05:00
serial [SERIAL] Update parity handling documentation 2006-06-02 17:47:26 +01:00
sh
sound [ALSA] Change an arugment of snd_mpu401_uart_new() to bit flags 2006-06-22 21:33:56 +02:00
sparc
spi [PATCH] SPI: busnum == 0 needs to work 2006-05-16 14:33:57 -07:00
sysctl [PATCH] support for panic at OOM 2006-06-23 07:42:47 -07:00
telephony
uml
usb [PATCH] USB: update usbmon.txt 2006-06-21 15:04:17 -07:00
video4linux V4L/DVB (3653h): Move usb v4l docs into Documentation/video4linux 2006-04-02 04:55:56 -03:00
vm [PATCH] page migration: sys_move_pages(): support moving of individual pages 2006-06-23 07:42:53 -07:00
w1 [PATCH] w1: Userspace communication protocol over connector. 2006-06-22 11:22:50 -07:00
watchdog [WATCHDOG] Documentation/watchdog/watchdog-api.txt - fix watchdog daemon 2006-05-15 21:37:46 +02:00
x86_64 [PATCH] x86_64: Reserve SRAT hotadd memory on x86-64 2006-04-09 11:53:16 -07:00
00-INDEX
BUG-HUNTING
Changes
CodingStyle
DMA-API.txt [PATCH] dma doc updates 2006-04-14 12:25:26 -07:00
DMA-ISA-LPC.txt
DMA-mapping.txt [PATCH] dma doc updates 2006-04-14 12:25:26 -07:00
HOWTO [PATCH] Added URI of "linux kernel development process" 2006-04-27 13:08:57 -07:00
IO-mapping.txt
IPMI.txt
IRQ-affinity.txt
MSI-HOWTO.txt
ManagementStyle
PCIEBUS-HOWTO.txt
README.DAC960
README.cycladesZ
SAK.txt
SecurityBugs
SubmittingDrivers
SubmittingPatches
VGA-softcursor.txt
acpi-hotkey.txt Fix minor documentation typo 2006-04-01 01:49:22 +02:00
applying-patches.txt
atomic_ops.txt
basic_profiling.txt
binfmt_misc.txt
cachetlb.txt
cciss.txt
cli-sti-removal.txt
computone.txt
cpqarray.txt
cpu-hotplug.txt [PATCH] for_each_possible_cpu: documentaion 2006-03-28 09:16:05 -08:00
cpusets.txt
cputopology.txt [PATCH] trivial typos in Documentation/cputopology.txt 2006-03-28 09:16:08 -08:00
dcdbas.txt
debugging-modules.txt
dell_rbu.txt
devices.txt [PATCH] devices.txt: remove pktcdvd entry 2006-05-15 11:20:58 -07:00
digiepca.txt
dnotify.txt
dontdiff
eisa.txt
exception.txt
feature-removal-schedule.txt Merge git://git.kernel.org/pub/scm/linux/kernel/git/bcollins/linux1394-2.6 2006-06-20 20:01:16 -07:00
floppy.txt
ftape.txt
hayes-esp.txt
highuid.txt
hpet.txt
hrtimers.txt
hw_random.txt
ibm-acpi.txt
ide.txt
initrd.txt
io_ordering.txt
ioctl-number.txt [PATCH] arch/i386/kernel/microcode.c: remove the obsolete microcode_ioctl 2006-03-28 09:16:06 -08:00
iostats.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt
kernel-docs.txt
kernel-parameters.txt [SECMARK]: Add new packet controls to SELinux 2006-06-17 21:30:05 -07:00
keys-request-key.txt
keys.txt [PATCH] Keys: Fix race between two instantiators of a key 2006-06-22 15:05:56 -07:00
kobject.txt
kprobes.txt
kref.txt
laptop-mode.txt [PATCH] docs: laptop-mode.txt source file build 2006-04-11 06:18:44 -07:00
ldm.txt
leds-class.txt [PATCH] LED: class documentation 2006-03-31 12:18:56 -08:00
locks.txt
logo.gif
logo.txt
magic-number.txt
mandatory.txt
mca.txt
md.txt
memory-barriers.txt [PATCH] Further alterations for memory barrier document 2006-06-10 11:02:05 -07:00
memory.txt
mono.txt
moxa-smartio
mtrr.txt [PATCH] Doc: fix mtrr userspace programs to build cleanly 2006-04-11 06:18:44 -07:00
mutex-design.txt
nbd.txt
nfsroot.txt
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt
paride.txt
parport-lowlevel.txt
parport.txt
pci-error-recovery.txt
pci.txt [PATCH] PCI: clean up pci documentation to be more specific 2006-06-21 12:00:00 -07:00
pm.txt
pnp.txt
preempt-locking.txt
prio_tree.txt
ramdisk.txt
riscom8.txt
robust-futex-ABI.txt
robust-futexes.txt
rocket.txt
rpc-cache.txt
rtc.txt
sched-arch.txt
sched-coding.txt
sched-design.txt
sched-domains.txt
sched-stats.txt
seclvl.txt
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
sharedsubtree.txt
smart-config.txt
smp.txt
sonypi.txt
sparse.txt
specialix.txt
spinlocks.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
stallion.txt
svga.txt
sx.txt
sysrq.txt
time_interpolators.txt
tipar.txt
tty.txt
unicode.txt
unshare.txt
voyager.txt
xterm-linux.xpm
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/