No description
Find a file
Laurent Dufour 303b875892 arch/ppc64: Add PowerPC 64 LE support
This patch initiates the ppc64le architecture support in CRIU.

Note that ppc64 (Big Endian) architecture is not yet supported since there
are still several issues to address with this architecture. However, in the
long term, the two architectures should be addressed using the almost the
same code, so sharing the ppc64 directory.

Major ppc64 issues:

Loader is not involved when the parasite code is loaded. So no relocation
is done for the parasite code. As a consequence r2 must be set manually
when entering the parasite code, and GOT is not filled.

Furthermore, the r2 fixup code at the services's global address which has
not been fixed by the loader should not be run. Branching at local address,
as the assembly code does is jumping over it.

On the long term, relocation should be done when loading the parasite code.

We are introducing 2 trampolines for the 2 entry points of the restorer
blob.  These entry points are dealing with r2. These ppc64 specific entry
points are overwritting the standard one in sigreturn_restore() from
cr-restore.c.  Instead of using #ifdef, we may introduce a per arch wrapper
here.

CRIU needs 2 kernel patches to be run powerpc which are not yet upstream:
 - Tracking the vDSO remapping
 - Enabling the kcmp system call on powerpc

Feature not yet supported:
- Altivec registers C/R
- VSX registers C/R
- TM support
- all lot of things I missed..

Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2015-04-30 09:57:49 +03:00
arch arch/ppc64: Add PowerPC 64 LE support 2015-04-30 09:57:49 +03:00
contrib Try to determine the bind mount file for dockerinit 2015-01-12 13:20:06 +03:00
Documentation doc: add documentation for new mount flags 2015-04-10 17:54:54 +03:00
include arch/ppc64: Add PowerPC 64 LE support 2015-04-30 09:57:49 +03:00
lib add RPC options for automatic external mount handling 2015-04-22 12:29:47 +03:00
pie arch/ppc64: Add PowerPC 64 LE support 2015-04-30 09:57:49 +03:00
protobuf arch/ppc64: Add PowerPC 64 LE support 2015-04-30 09:57:49 +03:00
pycriu crit: pycriu: images: fix images incoding and add more comments 2015-04-14 15:18:33 +03:00
scripts make: Introduce ldflags-y variable 2015-04-24 14:52:55 +03:00
test test/rpc: don't use shell-job 2015-04-27 17:51:41 +03:00
.gitignore make: Rebuild version if git commit id is changed 2015-04-21 16:07:23 +03:00
.mailmap repo: Add mailmap file 2012-03-25 23:31:20 +04:00
.travis.yml travis: add python-ipaddr as a dep 2015-02-09 14:07:07 +03:00
action-scripts.c scripts: Exit early if no scripts passed 2014-11-14 15:51:28 +04:00
aio.c aio: Fix vma->start printing format on arm 2014-12-30 15:38:25 +03:00
bfd.c Use run-time page size where it matters 2015-04-22 15:39:05 +03:00
cgroup.c cgroup: don't play with a function exit code 2015-04-22 15:37:13 +03:00
COPYING Add LGPL licence for library directory 2013-04-01 12:29:06 +04:00
cr-check.c kerndat: check the lock field in fdinfo (v2) 2015-04-27 14:53:22 +03:00
cr-dedup.c page-read: Explicitly mark ENOENT with return code 2015-03-13 14:42:11 +03:00
cr-dump.c img: Always assume images to be v1.1 2015-04-14 22:08:59 +03:00
cr-errno.c cr-errno: initial commit 2014-12-19 18:58:46 +03:00
cr-exec.c dump: remove useless arguments from seize_task() 2014-11-07 17:14:54 +04:00
cr-restore.c arch/ppc64: Add PowerPC 64 LE support 2015-04-30 09:57:49 +03:00
cr-service.c add RPC options for for --enable-fs and --skip_mount 2015-04-27 14:57:27 +03:00
cr-show.c show: read a second magic when it's required 2015-04-21 16:15:44 +03:00
CREDITS Add the CREDITS file 2012-07-30 13:52:37 +04:00
crit crit: gather and parse arguments in a proper way 2015-02-09 14:08:22 +03:00
crtools crtools: rename binary to criu 2013-04-30 20:17:55 +04:00
crtools.c show: Deprecate this action in criu tool 2015-04-21 16:09:44 +03:00
Dockerfile test: add ability to execute tests in a docker container 2015-03-24 11:05:47 +03:00
eventfd.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
eventpoll.c img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
fifo.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
file-ids.c files-ids: generate id-s accoding with mnt_id, st->st_dev and st->st_ino 2014-04-21 22:39:28 +04:00
file-lock.c lock: parse the lock field in fdinfo if it's avaliable (v2) 2015-04-27 14:53:24 +03:00
files-ext.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
files-reg.c report fd/path if dump_one_reg_file()->lookup_nsid_by_mnt_id() fails 2015-04-22 15:30:06 +03:00
files.c lock: parse the lock field in fdinfo if it's avaliable (v2) 2015-04-27 14:53:24 +03:00
fsnotify.c remove some double ;;s 2015-03-31 22:09:38 +03:00
image-desc.c img: Introduce v1.1 images (v2) 2015-04-14 15:18:32 +03:00
image.c img: Always assume images to be v1.1 2015-04-14 22:08:59 +03:00
ipc_ns.c sysctl: Remove dead CTL_PRINT|_SHOW code 2015-01-27 16:18:27 +03:00
irmap.c img: Introduce empty images 2015-03-13 14:42:54 +03:00
kcmp-ids.c kcmp: Fix ret code comparison 2014-04-22 12:51:15 +04:00
kerndat.c kerndat: check the lock field in fdinfo (v2) 2015-04-27 14:53:22 +03:00
libnetlink.c nlk: Add error callback to do_rtnl_req 2015-01-22 18:54:37 +03:00
log.c log: Don't modify global @errno in __print_on_level 2015-03-27 14:06:20 +03:00
Makefile arch/ppc64: Add PowerPC 64 LE support 2015-04-30 09:57:49 +03:00
Makefile.config crtools: check for setproctitle_init 2014-09-02 16:14:39 +04:00
Makefile.crtools aio: Dump AIO rings 2014-12-26 18:13:36 +03:00
Makefile.inc install: install criu-service logrotate config 2014-02-18 12:39:50 +04:00
mem.c vma: Unify private VMAs testing 2015-04-01 12:36:46 +03:00
mount.c simplify the asprintf() failure handling in add_fsname_auto() 2015-04-24 14:33:55 +03:00
namespaces.c revert 246367e4e4 "add walk_all flag to walk_namespaces" 2015-04-14 22:34:40 +03:00
net.c revert 246367e4e4 "add walk_all flag to walk_namespaces" 2015-04-14 22:34:40 +03:00
netfilter.c iptables: use cr_system instead of system 2013-10-02 20:09:37 +04:00
page-pipe.c log: Use pr_quelled helper 2014-09-03 20:56:58 +04:00
page-read.c img: Introduce empty images 2015-03-13 14:42:54 +03:00
page-xfer.c remove some double ;;s 2015-03-31 22:09:38 +03:00
pagemap-cache.c pagemap-cache: Use page.h helpers 2014-02-21 16:29:41 +04:00
parasite-syscall.c ptrace: print PID in error messages 2015-04-24 14:31:21 +03:00
pipes.c fd: Factor out inheriting FDs code 2015-01-12 14:46:51 +03:00
plugin.c plugin: Rework plugins API, v2 2014-09-03 20:48:36 +04:00
proc_parse.c proc_parse: remove a debug message 2015-04-29 17:24:01 +03:00
protobuf-desc.c criu: add constants about user namespaces 2014-11-07 17:00:32 +04:00
protobuf.c img: Don't create empty images 2015-03-16 15:58:32 +03:00
pstree.c mnt: Add comment about mntns to tasks assignment 2015-04-01 12:37:23 +03:00
ptrace.c ptrace: call wait only if PTRACE_SEIZE was successful 2015-02-24 21:44:23 +03:00
rbtree.c code: Fix spaced indentation where found 2012-08-11 21:36:03 +04:00
README Update README file so that it looks more informative on github front page 2014-01-24 20:42:08 +04:00
rst-malloc.c whitespace-at-eol cleanup 2013-12-12 10:00:45 +04:00
sd-daemon.c systemd socket activation support 2013-12-12 09:58:50 +04:00
sd-daemon.h systemd socket activation support 2013-12-12 09:58:50 +04:00
security.c security: add cr_fchown 2015-02-10 16:54:31 +03:00
shmem.c page-read: Explicitly mark ENOENT with return code 2015-03-13 14:42:11 +03:00
sigframe.c sigframe: cast the pointer to the field ucontext::uc_sigmask to k_rtsigset_t 2014-04-08 15:36:09 +04:00
signalfd.c img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
sk-inet.c Do not call listen() when SO_REUSEADDR is off 2015-02-16 13:18:32 +03:00
sk-netlink.c img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
sk-packet.c img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
sk-queue.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
sk-tcp.c Do not call listen() when SO_REUSEADDR is off 2015-02-16 13:18:32 +03:00
sk-unix.c userns: save uid-s from a target userns (v2) 2014-11-07 17:15:45 +04:00
sockets.c sk: Restore sockets bufs via usernsd 2015-02-13 16:11:38 +04:00
stats.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
string.c string: Add strlcat helper 2013-11-29 15:36:07 +04:00
sysctl.c sysctl: Remove dead CTL_PRINT|_SHOW code 2015-01-27 16:18:27 +03:00
sysfs_parse.c Ignore mnt_id value for AUFS file descriptors. 2015-02-09 14:07:40 +03:00
timerfd.c img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
tty.c tty: Drop TTY_SUBTYPE_SLAVE from /dev/console and /dev/tty 2015-04-02 20:20:23 +03:00
tun.c img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
util.c Use run-time page size where it matters 2015-04-22 15:39:05 +03:00
uts_ns.c ns: Factor out namespace switching call 2014-09-30 21:54:11 +04:00

criu
====

An utility to checkpoint/restore tasks. Using this tool, you can
freeze a running application (or part of it) and checkpoint it to
a hard drive as a collection of files. You can then use the files
to restore and run the application from the point it was frozen
at. The distinctive feature of the CRIU project is that it is
mainly implemented in user space.

The project home is at http://criu.org

Pages worth starting with are
* Kernel configuration, compilation, etc: http://criu.org/Installation
* A simple example of usage: http://criu.org/Simple_loop
* More sophisticated example with graphical app: http://criu.org/VNC