[meta-virtualization] [PATCH] criu: fix dump error on Intel Apollo Lake SOC
Dengke Du
dengke.du at windriver.com
Wed May 22 19:33:44 PDT 2019
Fix dump error when executing: criu dump -D checkpoint -t pid
-------------------------------------------------
Error (criu/arch/x86/crtools.c:362): x86: Corruption in XFEATURE_YMM area (expected 64 but 0 obtained)
Error (criu/cr-dump.c:1280): Can't infect (pid: 2874) with parasite
Error (criu/cr-dump.c:1732): Dumping FAILED.
-------------------------------------------------
Backport upstream patch on criu-dev branch to fix this:
[https://github.com/checkpoint-restore/criu/commit/5a52e34655636a8f00a664cf42716e1439ea2ef0]
Signed-off-by: Dengke Du <dengke.du at windriver.com>
---
recipes-containers/criu/criu_git.bb | 1 +
...-crtools-do-not-error-when-YMM-is-missing.patch | 48 ++++++++++++++++++++++
2 files changed, 49 insertions(+)
create mode 100644 recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch
diff --git a/recipes-containers/criu/criu_git.bb b/recipes-containers/criu/criu_git.bb
index c6981c9..6fb60db 100644
--- a/recipes-containers/criu/criu_git.bb
+++ b/recipes-containers/criu/criu_git.bb
@@ -21,6 +21,7 @@ SRC_URI = "git://github.com/xemul/criu.git;protocol=git \
file://0002-criu-Skip-documentation-install.patch \
file://0001-criu-Change-libraries-install-directory.patch \
file://lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch \
+ file://0001-x86-crtools-do-not-error-when-YMM-is-missing.patch \
"
COMPATIBLE_HOST = "(x86_64|arm|aarch64).*-linux"
diff --git a/recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch b/recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch
new file mode 100644
index 0000000..795ef4c
--- /dev/null
+++ b/recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch
@@ -0,0 +1,48 @@
+From 6072c23dbd3bbdc9fead4d90fd2ea2212f2ae0cd Mon Sep 17 00:00:00 2001
+From: Zhang Ning <ning.a.zhang at intel.com>
+Date: Tue, 16 Apr 2019 15:45:05 +0800
+Subject: [PATCH] x86/crtools: do not error when YMM is missing
+
+for Intel Apollo Lake SOC, its cpuinfo and fpu features:
+cpu: x86_family 6 x86_vendor_id GenuineIntel x86_model_id Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
+cpu: fpu: xfeatures_mask 0x11 xsave_size 1088 xsave_size_max 1088 xsaves_size 704
+cpu: fpu: x87 floating point registers xstate_offsets 0 / 0 xstate_sizes 160 / 160
+
+this CPU doesn't have AVX registers, YMM feature.
+
+when CRIU runs on this CPU, it will report dump error:
+Dumping GP/FPU registers for 4888
+Error (criu/arch/x86/crtools.c:362): x86: Corruption in XFEATURE_YMM area (expected 64 but 0 obtained)
+Error (criu/cr-dump.c:1278): Can't infect (pid: 4888) with parasite
+
+that's because x86/crtools.c will still valid YMM xsave frame, thus fail to dump.
+
+bypass unsupported feature, to make CRIU runs this kinds of CPUs.
+
+Cc: Chen Hu <hu1.chen at intel.com>
+Signed-off-by: Zhang Ning <ning.a.zhang at intel.com>
+Acked-by: Cyrill Gorcunov <gorcunov at gmail.com>
+Signed-off-by: Andrei Vagin <avagin at gmail.com>
+
+Upstream-Status: Backport [https://github.com/checkpoint-restore/criu/commit/5a52e34655636a8f00a664cf42716e1439ea2ef0]
+Signed-off-by: Dengke Du <dengke.du at windriver.com>
+---
+ criu/arch/x86/crtools.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/criu/arch/x86/crtools.c b/criu/arch/x86/crtools.c
+index ee016da..efc23e5 100644
+--- a/criu/arch/x86/crtools.c
++++ b/criu/arch/x86/crtools.c
+@@ -354,7 +354,7 @@ static bool valid_xsave_frame(CoreEntry *core)
+ };
+
+ for (i = 0; i < ARRAY_SIZE(features); i++) {
+- if (!features[i].ptr && i > 0)
++ if (!features[i].ptr)
+ continue;
+
+ if (features[i].expected > features[i].obtained) {
+--
+2.7.4
+
--
2.7.4
More information about the meta-virtualization
mailing list