Skip to content

[19.03 backport] Update CRIU to v3.13 "Silicon Willet" #40850

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 30, 2020

Conversation

thaJeztah
Copy link
Member

backport of #40583

full diff: checkpoint-restore/criu@v3.12...v3.13

Here we have some bugfixes, huuuge *.py patch for coding style
and nice set of new features like 32bit for ARM, TLS for page
server and new mode for CGroups.

New features

  • VDSO: arm32 support
  • Add TLS support for page server communications
  • "Ignore" mode for --manage-cgroups
  • Restore SO_BROADCAST option for inet sockets

Bugfixes

  • Auxiliary events were left in inotify queues
  • Lazy-pages daemon didn't detect stack pages and surrounders properly and marked them as "lazy"
  • Memory and resource leakage were detected by coverity, cppcheck and clang

Improvements

  • Use gettimeofday() directly from vdso for restore timings
  • Reformat all .py code into pep8 style

Signed-off-by: Sebastiaan van Stijn github@gone.nl
(cherry picked from commit f508db4)
Signed-off-by: Sebastiaan van Stijn github@gone.nl

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

full diff: checkpoint-restore/criu@v3.12...v3.13

Here we have some bugfixes, huuuge *.py patch for coding style
and nice set of new features like 32bit for ARM, TLS for page
server and new mode for CGroups.

New features

- VDSO: arm32 support
- Add TLS support for page server communications
- "Ignore" mode for --manage-cgroups
- Restore SO_BROADCAST option for inet sockets

Bugfixes

- Auxiliary events were left in inotify queues
- Lazy-pages daemon didn't detect stack pages and surrounders properly and marked them as "lazy"
- Memory and resource leakage were detected by coverity, cppcheck and clang

Improvements

- Use gettimeofday() directly from vdso for restore timings
- Reformat all .py code into pep8 style

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit f508db4)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztah thaJeztah added this to the 19.03.9 milestone Apr 22, 2020
@thaJeztah
Copy link
Member Author

I opened this, hoping that it would fix build failures on ARM that I saw;

But unfortunately that didn't fix the problem; CRIU 3.13 still has the same problem;

14:21:59 #58 58.84 include/common/asm/atomic.h:61:2: error: #error ARM architecture version (CONFIG_ARMV*) not set or unsupported.
14:21:59 #58 58.84  #error ARM architecture version (CONFIG_ARMV*) not set or unsupported.
14:21:59 #58 58.84   ^~~~~
14:21:59 #58 58.84 include/common/asm/atomic.h: In function 'atomic_add_return':
14:21:59 #58 58.84 include/common/asm/atomic.h:82:2: error: implicit declaration of function 'smp_mb' [-Werror=implicit-function-declaration]
14:21:59 #58 58.84   smp_mb();
14:21:59 #58 58.84   ^~~~~~

Failure is occurring here; https://github.com/checkpoint-restore/criu/blob/v3.13/include/common/arch/arm/asm/atomic.h#L61

Which means that both CONFIG_ARMV7 and CONFIG_ARMV6 are not defined

With a bit of Google-fu, I found this; which looks to be relevant: https://lists.denx.de/pipermail/u-boot/2015-December/239646.html

The arch/arm/lib/cache-cp15.c checks for CONFIG_ARMV7 and if this macro is
set, it configures TTBR0 register. This register must be configured for the
cache on ARMv7 to operate correctly.

The problem is that noone actually sets the CONFIG_ARMV7 macro and thus the
TTBR0 is not configured at all. On SoCFPGA, this produces all sorts of minor
issues which are hard to replicate, for example certain USB sticks are not
detected or QSPI NOR sometimes fails to write pages completely.

The solution is to replace CONFIG_ARMV7 test with CONFIG_CPU_V7 one. This is
correct because the code which added the test(s) for CONFIG_ARMV7 was added
shortly after CONFIG_ARMV7 was replaced by CONFIG_CPU_V7 and this code was
not adjusted correctly to reflect that change.

Copy link

@loot-king loot-king left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker install

@tiborvass tiborvass merged commit e734934 into moby:19.03 Apr 30, 2020
@thaJeztah thaJeztah deleted the 19.03_backport_criu_3.13 branch April 30, 2020 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants