From 1f26faec8a8ebcc177e1d29c62bd8b8dbe0fe1cc Mon Sep 17 00:00:00 2001 From: Dengke Du Date: Thu, 23 May 2019 10:33:44 +0800 Subject: criu: fix dump error on Intel Apollo Lake SOC 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 Signed-off-by: Bruce Ashfield --- 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 (limited to 'recipes-containers/criu') diff --git a/recipes-containers/criu/criu_git.bb b/recipes-containers/criu/criu_git.bb index c6981c93..6fb60dbc 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 00000000..795ef4cf --- /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 +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 +Signed-off-by: Zhang Ning +Acked-by: Cyrill Gorcunov +Signed-off-by: Andrei Vagin + +Upstream-Status: Backport [https://github.com/checkpoint-restore/criu/commit/5a52e34655636a8f00a664cf42716e1439ea2ef0] +Signed-off-by: Dengke Du +--- + 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 + -- cgit v1.2.3-54-g00ecf