1. 05 May, 2015 12 commits
  2. 30 Apr, 2015 1 commit
    • Laurent Dufour's avatar
      arch/ppc64: Add PowerPC 64 LE support · 303b8758
      Laurent Dufour authored
      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: 's avatarLaurent Dufour <ldufour@linux.vnet.ibm.com>
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      303b8758
  3. 29 Apr, 2015 2 commits
  4. 27 Apr, 2015 10 commits
  5. 24 Apr, 2015 13 commits
  6. 23 Apr, 2015 1 commit
  7. 22 Apr, 2015 1 commit
    • Christopher Covington's avatar
      Use run-time page size where it matters · cefe22bd
      Christopher Covington authored
      In AArch64, pages may be 4K or 64K depending on kernel configuration.
      The GNU C Library documentation suggests [1], "the correct interface
      to query about the page size is sysconf". Introduce one new
      architecture-specific function-like macro, page_size(), that on x86
      and AArch32 remains a constant so as to minimally affect performance,
      but on AArch64 is sysconf(_SC_PAGESIZE) for correctness.
      
      1. https://www.gnu.org/software/libc/manual/html_node/Query-Memory-Parameters.html
      
      To minimize churn, the PAGE_SIZE macro is left as a build-time
      estimation of what the run-time page size might be.
      
      This fixes the following errors for CRIU on AArch64 kernels with
      CONFIG_ARM64_64K_PAGES=y, allowing dump of
      `setsid sleep < /dev/null &> /dev/null` to succeed.
      
      Error (kerndat.c:48): Can't stat self map_files: No such file or directory
      
      Error (util.c:668): Can't read pme for pid 90: No such file or directory
      
      Error (parasite-syscall.c:1135): Can't open 89/map_files/0x3ffb7da0000-0x3ffb7dac000 on procfs: No such file or directory
      Signed-off-by: 's avatarChristopher Covington <cov@codeaurora.org>
      Acked-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
      Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
      cefe22bd