Update to 3.19

Resolves: RHEL-17503

Signed-off-by: Radostin Stoyanov <radostin@redhat.com>
This commit is contained in:
Radostin Stoyanov 2023-12-08 15:54:49 +00:00
parent e3f61ad8da
commit 1b638dc64a
4 changed files with 13 additions and 118 deletions

View File

@ -6,7 +6,7 @@
%global _lto_cflags %%{nil}
Name: criu
Version: 3.18
Version: 3.19
Release: 1%{?dist}
Provides: crtools = %{version}-%{release}
Obsoletes: crtools <= 1.0-2
@ -15,13 +15,13 @@ License: GPLv2
URL: http://criu.org/
Source0: https://github.com/checkpoint-restore/criu/archive/v%{version}/criu-%{version}.tar.gz
Source1: criu-tmpfiles.conf
Source2: pycriu-setup-py
BuildRequires: gcc
BuildRequires: systemd
BuildRequires: libnet-devel
BuildRequires: protobuf-devel protobuf-c-devel %{py_prefix}-devel libnl3-devel libcap-devel
BuildRequires: asciidoc xmlto
BuildRequires: %{py_prefix}-pip
BuildRequires: %{py_prefix}-protobuf
BuildRequires: %{py_prefix}-setuptools
BuildRequires: %{py_prefix}-wheel
BuildRequires: perl-interpreter
@ -33,8 +33,6 @@ Recommends: tar
Patch0: 0001-Fix-building-with-annobin.patch
Patch1: criu.pc.patch
# Fix to work on CPUs with larger XSAVE area (Sapphire Rapids)
Patch2: https://github.com/checkpoint-restore/criu/commit/d739260c57576c636759afb312340fa3827312f6.patch
# user-space and kernel changes are only available for x86_64, arm,
# ppc64le, aarch64 and s390x
@ -82,7 +80,6 @@ their content in human-readable form.
%setup -q
%patch -P 0 -p1
%patch -P 1 -p1
%patch -P 2 -p1
%build
# %{?_smp_mflags} does not work
@ -91,12 +88,10 @@ CFLAGS+=`echo %{optflags} | sed -e 's,-fstack-protector\S*,,g'` make V=1 WERROR=
make docs V=1
%install
cp %{SOURCE2} lib/py/setup.py
sed -e "s,--upgrade --force-reinstall,--disable-pip-version-check --progress-bar off --verbose,g;
s,\./crit,./crit lib/py,g;" -i lib/Makefile
rm -f crit/pyproject.toml
sed -e "s,--upgrade --ignore-installed,--no-index --no-deps -v --no-build-isolation,g" -i lib/Makefile -i crit/Makefile
make install-criu DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
make install-lib DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=%{py_binary}
make install-crit DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=%{py_binary}
make install-man DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
mkdir -p %{buildroot}%{_tmpfilesdir}
install -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf
@ -108,7 +103,7 @@ rm -rf $RPM_BUILD_ROOT%{_libexecdir}/%{name}
# remove compel man-page
rm $RPM_BUILD_ROOT%{_mandir}/man1/compel.1*
# remove amdgpu plugin man-page
rm $RPM_BUILD_ROOT%{_mandir}/man1/amdgpu_plugin.1*
rm $RPM_BUILD_ROOT%{_mandir}/man1/criu-amdgpu-plugin.1*
# remove criu-ns
rm $RPM_BUILD_ROOT%{_sbindir}/criu-ns
rm $RPM_BUILD_ROOT%{_mandir}/man1/criu-ns.1*
@ -129,16 +124,20 @@ rm $RPM_BUILD_ROOT%{_mandir}/man1/criu-ns.1*
%{_libdir}/*.so.*
%files -n %{py_prefix}-%{name}
%{python3_sitelib}/pycriu/*
%{python3_sitelib}/pycriu-%{version}.dist-info
%{python3_sitelib}/pycriu*
%files -n crit
%{_bindir}/crit
%{python3_sitelib}/crit-%{version}.dist-info
%{python3_sitelib}/crit
%doc %{_mandir}/man1/crit.1*
%changelog
* Tue Apr 25 2034 Adrian Reber <adrian@lisas.de> - 3.18-1
* Fri Dec 08 2023 Radostin Stoyanov <radostin@redhat.com> - 3.19-1
- Update to 3.19
- Drop upstreamed patches
* Tue Apr 25 2023 Adrian Reber <adrian@lisas.de> - 3.18-1
- Update to 3.18
- Apply patch from upstream to support newer CPUs

View File

@ -1,74 +0,0 @@
From d739260c57576c636759afb312340fa3827312f6 Mon Sep 17 00:00:00 2001
From: Adrian Reber <areber@redhat.com>
Date: Mon, 24 Apr 2023 09:28:19 +0200
Subject: [PATCH] compel: support XSAVE on newer Intel CPUs
Newer Intel CPUs (Sapphire Rapids) have a much larger xsave area than
before. Looking at older CPUs I see 2440 bytes.
# cpuid -1 -l 0xd -s 0
...
bytes required by XSAVE/XRSTOR area = 0x00000988 (2440)
On newer CPUs (Sapphire Rapids) it grows to 11008 bytes.
# cpuid -1 -l 0xd -s 0
...
bytes required by XSAVE/XRSTOR area = 0x00002b00 (11008)
This increase the xsave area from one page to four pages.
Without this patch the fpu03 test fails, with this patch it works again.
Signed-off-by: Adrian Reber <areber@redhat.com>
---
.../arch/x86/src/lib/include/uapi/asm/fpu.h | 28 +++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/compel/arch/x86/src/lib/include/uapi/asm/fpu.h b/compel/arch/x86/src/lib/include/uapi/asm/fpu.h
index bd3b0cbd5c..8c83dd9ae4 100644
--- a/compel/arch/x86/src/lib/include/uapi/asm/fpu.h
+++ b/compel/arch/x86/src/lib/include/uapi/asm/fpu.h
@@ -21,7 +21,28 @@
#define XSTATE_YMM 0x4
#define FXSAVE_SIZE 512
-#define XSAVE_SIZE 4096
+/*
+ * This used to be 4096 (one page). There is a comment below concerning
+ * this size:
+ * "One page should be enough for the whole xsave state ;-)"
+ * Which is kind of funny as it is no longer enough ;-)
+ *
+ * Older CPUs:
+ * # cpuid -1 -l 0xd -s 0
+ * ...
+ * bytes required by XSAVE/XRSTOR area = 0x00000988 (2440)
+ *
+ * Newer CPUs (Sapphire Rapids):
+ * # cpuid -1 -l 0xd -s 0
+ * ...
+ * bytes required by XSAVE/XRSTOR area = 0x00002b00 (11008)
+ *
+ * So one page is no longer enough... But:
+ *
+ * Four pages should be enough for the whole xsave state ;-)
+ */
+
+#define XSAVE_SIZE 4*4096
#define XSAVE_HDR_SIZE 64
#define XSAVE_HDR_OFFSET FXSAVE_SIZE
@@ -235,8 +256,11 @@ struct pkru_state {
*
*
* One page should be enough for the whole xsave state ;-)
+ *
+ * Of course it was not ;-) Now using four pages...
+ *
*/
-#define EXTENDED_STATE_AREA_SIZE (4096 - sizeof(struct i387_fxsave_struct) - sizeof(struct xsave_hdr_struct))
+#define EXTENDED_STATE_AREA_SIZE (XSAVE_SIZE - sizeof(struct i387_fxsave_struct) - sizeof(struct xsave_hdr_struct))
/*
* cpu requires it to be 64 byte aligned

View File

@ -1,30 +0,0 @@
import os
from setuptools import setup, find_packages
print(find_packages('.'))
def get_version():
version = '0.0.1'
env = os.environ
if 'CRIU_VERSION_MAJOR' in env and 'CRIU_VERSION_MINOR' in env:
version = '{}.{}'.format(
env['CRIU_VERSION_MAJOR'],
env['CRIU_VERSION_MINOR']
)
if 'CRIU_VERSION_SUBLEVEL' in env and env['CRIU_VERSION_SUBLEVEL']:
version += '.' + env['CRIU_VERSION_SUBLEVEL']
return version
setup(
name='pycriu',
version=get_version(),
description='CRiu Image Tool',
author='CRIU team',
author_email='criu@openvz.org',
license='GPLv2',
url='https://github.com/checkpoint-restore/criu',
packages=['pycriu','pycriu.images'],
package_dir = {'pycriu': '.', 'pycriu.images':'images'}
)

View File

@ -1 +1 @@
SHA512 (criu-3.18.tar.gz) = 3d15554ebd2d08c8904c23b0aba00d505891c14caa4790c2fd12ad6b20bf4058fd210f1d03fd63aacc5ad8bc47e341396b48abbeb474f1fd43c3023fd1ff9171
SHA512 (criu-3.19.tar.gz) = d243818cdac51580c952a80e9164786a67ce5e294c0faa6dc700f5e8da8e36495f0b64f5c27b345ede7d6697ed7a69fa4e9a85cef451f32e3ffeb78564884571