From 79d0c98b9bd5a557e8c4d6f3f2820ee09e5c98ef Mon Sep 17 00:00:00 2001 From: Mikhail Malyshev Date: Thu, 26 Oct 2023 12:32:59 +0000 Subject: [PATCH 1/2] Bump up XEN version to 4.18.0-rc4 - I had to build ninja from source since Alpine dropped a support for it in 3.8 Highlights: - QEMU 8.0.4 - libgcc instead of musl Signed-off-by: Mikhail Malyshev --- pkg/pillar/hypervisor/kvm.go | 9 +-------- pkg/xen-tools/Dockerfile | 12 ++++++------ .../01-enable-gmp-patching.patch | 13 +++++++++++++ .../patches-4.18.0-rc4/09-enable-kvm.patch | 19 +++++++++++++++++++ pkg/xen/Dockerfile | 4 ++-- 5 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 pkg/xen-tools/patches-4.18.0-rc4/01-enable-gmp-patching.patch create mode 100644 pkg/xen-tools/patches-4.18.0-rc4/09-enable-kvm.patch diff --git a/pkg/pillar/hypervisor/kvm.go b/pkg/pillar/hypervisor/kvm.go index cecb340d4d..2e64195a0e 100644 --- a/pkg/pillar/hypervisor/kvm.go +++ b/pkg/pillar/hypervisor/kvm.go @@ -54,12 +54,7 @@ const qemuConfTemplate = `# This file is automatically generated by domainmgr [machine] type = "{{.Machine}}" dump-guest-core = "off" -{{- if .DomainStatus.CPUs }} - cpumask = "{{.DomainStatus.CPUs}}" -{{- end -}} -{{- if .DomainConfig.CPUsPinned }} - cpu-pin = "on" -{{- end -}} + {{- if eq .Machine "virt" }} accel = "kvm:tcg" gic-version = "host" @@ -108,8 +103,6 @@ const qemuConfTemplate = `# This file is automatically generated by domainmgr driver = "intel-iommu" caching-mode = "on" {{ end }} -[realtime] - mlock = "off" [chardev "charmonitor"] backend = "socket" diff --git a/pkg/xen-tools/Dockerfile b/pkg/xen-tools/Dockerfile index c35c61c6e6..f10c5051d9 100644 --- a/pkg/xen-tools/Dockerfile +++ b/pkg/xen-tools/Dockerfile @@ -2,7 +2,7 @@ FROM lfedge/eve-uefi:d821658883d6748d8bbf0d6640c62288e3ce8c6f as uefi-build -FROM lfedge/eve-alpine:0f4e313d0d84ac313ea35e966def9ef96f61aafb as runx-build +FROM lfedge/eve-alpine:58438ac39bd7aee086dfd969790fd1a5c44da8bd as runx-build ENV BUILD_PKGS mkinitfs gcc musl-dev e2fsprogs chrony RUN eve-alpine-deploy.sh @@ -16,16 +16,16 @@ RUN gcc -s -o /chroot2 /tmp/chroot2.c RUN gcc -s -o /hacf /tmp/hacf.c RUN mkinitfs -n -F base -i /init-initrd -o /runx-initrd -FROM lfedge/eve-alpine:d32cf7889da970a42fdf5c1c5454a311356cb8f8 as build +FROM lfedge/eve-alpine:58438ac39bd7aee086dfd969790fd1a5c44da8bd as build ENV BUILD_PKGS \ gcc make libc-dev dev86 xz-dev perl bash python3-dev \ gettext iasl util-linux-dev ncurses-dev glib-dev \ pixman-dev libaio-dev yajl-dev argp-standalone \ linux-headers git patch texinfo tar libcap-ng-dev \ - attr-dev flex bison cmake libusb-dev zstd-dev + attr-dev flex bison cmake libusb-dev zstd-dev cmake python3 g++ samurai ENV BUILD_PKGS_arm64 dtc-dev -ENV PKGS alpine-baselayout musl-utils bash libaio libbz2 glib pixman yajl keyutils libusb xz-libs libuuid sudo zstd-libs +ENV PKGS libgcc alpine-baselayout musl-utils bash libaio libbz2 glib pixman yajl keyutils libusb xz-libs libuuid sudo zstd-libs ENV PKGS_arm64 libfdt RUN eve-alpine-deploy.sh @@ -53,10 +53,10 @@ RUN rm -rf /out/usr/man RUN strip /out/usr/lib/* || : # When changing this version, also update SEABIOS_UPSTREAM_REVISION to whatever is in `Config.mk` in the xen source -ENV XEN_VERSION 4.15.0 +ENV XEN_VERSION 4.18.0-rc4 ENV XEN_SOURCE=https://downloads.xenproject.org/release/xen/${XEN_VERSION}/xen-${XEN_VERSION}.tar.gz ENV EXTRA_QEMUU_CONFIGURE_ARGS="--enable-libusb --enable-linux-aio \ - --enable-vhost-net --enable-vhost-vsock --enable-vhost-scsi --enable-vhost-kernel \ + --enable-vhost-net --enable-vhost-kernel \ --enable-vhost-user --enable-linux-io-uring --enable-zstd" WORKDIR / diff --git a/pkg/xen-tools/patches-4.18.0-rc4/01-enable-gmp-patching.patch b/pkg/xen-tools/patches-4.18.0-rc4/01-enable-gmp-patching.patch new file mode 100644 index 0000000000..79d25d0774 --- /dev/null +++ b/pkg/xen-tools/patches-4.18.0-rc4/01-enable-gmp-patching.patch @@ -0,0 +1,13 @@ +diff --git a/stubdom/Makefile b/stubdom/Makefile +index 8cf7131c6a..c6a8051c85 100644 +--- a/stubdom/Makefile ++++ b/stubdom/Makefile +@@ -178,7 +178,7 @@ gmp-$(XEN_TARGET_ARCH): gmp-$(GMP_VERSION).tar.bz2 $(NEWLIB_STAMPFILE) + tar xjf $< + rm $@ -rf || : + mv gmp-$(GMP_VERSION) $@ +- #patch -d $@ -p0 < gmp.patch ++ patch -d $@ -p0 < gmp.patch + cd $@; CPPFLAGS="-isystem $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include $(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" CC=$(CC) $(GMPEXT) ./configure --disable-shared --enable-static --disable-fft --without-readline --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf --libdir=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib --build=`gcc -dumpmachine` --host=$(GNU_TARGET_ARCH)-xen-elf + sed -i 's/#define HAVE_OBSTACK_VPRINTF 1/\/\/#define HAVE_OBSTACK_VPRINTF 1/' $@/config.h + touch $@ diff --git a/pkg/xen-tools/patches-4.18.0-rc4/09-enable-kvm.patch b/pkg/xen-tools/patches-4.18.0-rc4/09-enable-kvm.patch new file mode 100644 index 0000000000..071de7a01b --- /dev/null +++ b/pkg/xen-tools/patches-4.18.0-rc4/09-enable-kvm.patch @@ -0,0 +1,19 @@ +--- a/tools/Makefile.orig ++++ b/tools/Makefile +@@ -232,7 +232,7 @@ + virtfs='' ; \ + fi ; \ + PKG_CONFIG_PATH=$(XEN_ROOT)/tools/pkg-config$${PKG_CONFIG_PATH:+:$${PKG_CONFIG_PATH}} \ +- $$source/configure --enable-xen --target-list=i386-softmmu \ ++ $$source/configure --enable-xen --target-list=i386-softmmu,$$(uname -m)-softmmu \ + $(QEMU_XEN_ENABLE_DEBUG) \ + $$enable_trace_backend \ + --prefix=$(prefix) \ +@@ -251,7 +251,6 @@ + --mandir=$(LIBEXEC)/share/man \ + --libexecdir=$(LIBEXEC)/libexec \ + --firmwarepath=$(LIBEXEC)/share/qemu-firmware \ +- --disable-kvm \ + --disable-docs \ + --disable-guest-agent \ + --python=$(PYTHON) \ diff --git a/pkg/xen/Dockerfile b/pkg/xen/Dockerfile index f2a4815de7..128f4d866c 100644 --- a/pkg/xen/Dockerfile +++ b/pkg/xen/Dockerfile @@ -8,7 +8,7 @@ ENV BUILD_PKGS_arm64 u-boot-tools RUN eve-alpine-deploy.sh ENV XEN_UBOOT_ADDR 0x81000000 -ENV XEN_VERSION 4.15.0 +ENV XEN_VERSION 4.18.0-rc4 ENV XEN_SOURCE=https://downloads.xenproject.org/release/xen/${XEN_VERSION}/xen-${XEN_VERSION}.tar.gz # Download and verify xen @@ -20,7 +20,7 @@ RUN [ -f "$(basename ${XEN_SOURCE})" ] || tar --absolute-names -xz < /xen.tar.gz WORKDIR /xen/xen COPY *.patch arch /tmp/ RUN cp /tmp/"$(uname -m)"/*.patch /tmp/ -RUN for p in /tmp/*.patch ; do patch -p1 < "$p" || exit 1 ; done +#RUN for p in /tmp/*.patch ; do patch -p1 < "$p" || exit 1 ; done RUN chmod +x scripts/* || : RUN make defconfig && \ From 729c4e200118a99d4d781e1fafe3881c5a378d9f Mon Sep 17 00:00:00 2001 From: Mikhail Malyshev Date: Sat, 28 Oct 2023 14:20:12 +0000 Subject: [PATCH 2/2] Bump up liburing and SEABIOS versions Signed-off-by: Mikhail Malyshev --- pkg/xen-tools/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/xen-tools/Dockerfile b/pkg/xen-tools/Dockerfile index f10c5051d9..dd239b2d34 100644 --- a/pkg/xen-tools/Dockerfile +++ b/pkg/xen-tools/Dockerfile @@ -36,7 +36,7 @@ WORKDIR / COPY alpine.patch / RUN patch -p1 < alpine.patch -ENV LIBURING_VERSION 0.7 +ENV LIBURING_VERSION 2.4 ENV LIBURING_SOURCE=https://git.kernel.dk/cgit/liburing/snapshot/liburing-${LIBURING_VERSION}.tar.bz2 # Download and verify liburing @@ -76,7 +76,7 @@ RUN cat /patches/*.patch /patches/"$(uname -m)"/*.patch | patch -p1 # Note that Xen's `configure` command uses this env variable SEABIOS_UPSTREAM_URL to find the seabios source. ENV SEABIOS_UPSTREAM_URL /seabios.git # this revision should be kept in sync with the XEN_VERSION by reading `Config.mk` in the xen source -ENV SEABIOS_UPSTREAM_REVISION rel-1.14.0 +ENV SEABIOS_UPSTREAM_REVISION rel-1.16.2 ADD --keep-git-dir git://xenbits.xen.org/seabios.git#${SEABIOS_UPSTREAM_REVISION} ${SEABIOS_UPSTREAM_URL} # we need this because it will complain about ambiguous refs RUN git config --global core.warnambiguousrefs false