aboutsummaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorRoger Pau Monné <royger@FreeBSD.org>2024-04-12 09:23:55 +0000
committerRoger Pau Monné <royger@FreeBSD.org>2024-04-12 10:46:10 +0000
commit80e73db7c8577c8333d529939b61d22ef4b818bc (patch)
tree789170977db9f69e4b407e8d5efb2783459fba6c /emulators
parent0b12627c43b5e4b7f35f537b2e93ff97114849d4 (diff)
downloadports-80e73db7c8577c8333d529939b61d22ef4b818bc.tar.gz
ports-80e73db7c8577c8333d529939b61d22ef4b818bc.zip
{emulators,sysutils}/xen-{kernel,tools}: update to 4.8.2
Changelog: https://xenbits.xen.org/gitweb/?p=xen.git;a=shortlog;h=RELEASE-4.18.2 Sponsored by: Cloud Software Group Approved by: bapt (implicit)
Diffstat (limited to 'emulators')
-rw-r--r--emulators/xen-kernel/Makefile13
-rw-r--r--emulators/xen-kernel/distinfo6
-rw-r--r--emulators/xen-kernel/files/v2-0001-x86-altcall-use-an-union-as-register-type-for-fun.patch137
3 files changed, 9 insertions, 147 deletions
diff --git a/emulators/xen-kernel/Makefile b/emulators/xen-kernel/Makefile
index cb81823d89d6..0fdbe20e30a8 100644
--- a/emulators/xen-kernel/Makefile
+++ b/emulators/xen-kernel/Makefile
@@ -1,11 +1,11 @@
PORTNAME= xen
PKGNAMESUFFIX= -kernel
-DISTVERSION= 4.18.0.20240201
+DISTVERSION= 4.18.2.20240411
CATEGORIES= emulators
USE_GITLAB= yes
GL_ACCOUNT= xen-project
-GL_TAGNAME= b1fdd7d0e47e0831ac7a99d0417385fc10d3068c
+GL_TAGNAME= 2d38302c33b117aa9a417056db241aefc840c2f0
MAINTAINER= royger@FreeBSD.org
COMMENT= Hypervisor using a microkernel design
@@ -28,9 +28,6 @@ PLIST_FILES= /boot/xen \
lib/debug/boot/xen.debug \
lib/debug/boot/xen-debug.debug
-# Workaround clang code generation bug.
-EXTRA_PATCHES+= ${PATCHDIR}/v2-0001-x86-altcall-use-an-union-as-register-type-for-fun.patch:-p1
-
.include <bsd.port.options.mk>
.if ${OPSYS} != FreeBSD
@@ -42,10 +39,12 @@ IGNORE= only supported on FreeBSD
#
# Build both a production and a debug hypervisor.
do-build:
- ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${WRKSRC} build-xen ${MAKE_ARGS} debug=y
+ ${ECHO} "CONFIG_DEBUG=y" > ${WRKSRC}/xen/.config
+ ${MAKE_CMD} -C ${WRKSRC}/xen olddefconfig ${MAKE_ARGS}
+ ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${WRKSRC} build-xen ${MAKE_ARGS}
cp ${WRKSRC}/xen/xen ${WRKSRC}/xen/xen-debug
cp ${WRKSRC}/xen/xen-syms ${WRKSRC}/xen/xen-debug-syms
- ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${WRKSRC} clean-xen ${MAKE_ARGS}
+ ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${WRKSRC} distclean-xen ${MAKE_ARGS}
${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${WRKSRC} build-xen ${MAKE_ARGS}
do-install:
diff --git a/emulators/xen-kernel/distinfo b/emulators/xen-kernel/distinfo
index 629e0923053c..d049ee74dd8a 100644
--- a/emulators/xen-kernel/distinfo
+++ b/emulators/xen-kernel/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1708622887
-SHA256 (xen-project-xen-b1fdd7d0e47e0831ac7a99d0417385fc10d3068c_GL0.tar.gz) = 4cb7ef37b51d9d1ff58272fafebfa91d48aadacdb5cc4ee6f046488234be8c1b
-SIZE (xen-project-xen-b1fdd7d0e47e0831ac7a99d0417385fc10d3068c_GL0.tar.gz) = 6826601
+TIMESTAMP = 1712913898
+SHA256 (xen-project-xen-2d38302c33b117aa9a417056db241aefc840c2f0_GL0.tar.gz) = c64a6ecc1b5f74f96ecaf73daf5dac58c9db00f8afcaa0e216b3b560d48a7008
+SIZE (xen-project-xen-2d38302c33b117aa9a417056db241aefc840c2f0_GL0.tar.gz) = 6840489
diff --git a/emulators/xen-kernel/files/v2-0001-x86-altcall-use-an-union-as-register-type-for-fun.patch b/emulators/xen-kernel/files/v2-0001-x86-altcall-use-an-union-as-register-type-for-fun.patch
deleted file mode 100644
index ec00a478cb23..000000000000
--- a/emulators/xen-kernel/files/v2-0001-x86-altcall-use-an-union-as-register-type-for-fun.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From e0d563ca60b16dfab45956f60a6c1b7b1e218ba4 Mon Sep 17 00:00:00 2001
-From: Roger Pau Monne <roger.pau@citrix.com>
-To: xen-devel@lists.xenproject.org
-Cc: Jan Beulich <jbeulich@suse.com>
-Cc: Andrew Cooper <andrew.cooper3@citrix.com>
-Cc: "Roger Pau Monné" <roger.pau@citrix.com>
-Cc: Wei Liu <wl@xen.org>
-Date: Wed, 21 Feb 2024 16:55:12 +0100
-Subject: [PATCH v2] x86/altcall: use an union as register type for function
- parameters
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The current code for alternative calls uses the caller parameter types as the
-types for the register variables that serve as function parameters:
-
-uint8_t foo;
-[...]
-alternative_call(myfunc, foo);
-
-Would expand roughly into:
-
-register unint8_t a1_ asm("rdi") = foo;
-register unsigned long a2_ asm("rsi");
-[...]
-asm volatile ("call *%c[addr](%%rip)"...);
-
-However under certain circumstances clang >= 16.0.0 with -O2 can generate
-incorrect code, given the following example:
-
-unsigned int func(uint8_t t)
-{
- return t;
-}
-
-static void bar(uint8_t b)
-{
- int ret_;
- register uint8_t di asm("rdi") = b;
- register unsigned long si asm("rsi");
- register unsigned long dx asm("rdx");
- register unsigned long cx asm("rcx");
- register unsigned long r8 asm("r8");
- register unsigned long r9 asm("r9");
- register unsigned long r10 asm("r10");
- register unsigned long r11 asm("r11");
-
- asm volatile ( "call %c[addr]"
- : "+r" (di), "=r" (si), "=r" (dx),
- "=r" (cx), "=r" (r8), "=r" (r9),
- "=r" (r10), "=r" (r11), "=a" (ret_)
- : [addr] "i" (&(func)), "g" (func)
- : "memory" );
-}
-
-void foo(unsigned int a)
-{
- bar(a);
-}
-
-Clang generates the following code:
-
-func: # @func
- movl %edi, %eax
- retq
-foo: # @foo
- callq func
- retq
-
-Note the truncation of the unsigned int parameter 'a' of foo() to uint8_t when
-passed into bar() is lost.
-
-The above can be worked around by using an union when defining the register
-variables, so that `di` becomes:
-
-register union {
- uint8_t e;
- unsigned long r;
-} di asm("rdi") = { .e = b };
-
-Which results in following code generated for `foo()`:
-
-foo: # @foo
- movzbl %dil, %edi
- callq func
- retq
-
-So the truncation is not longer lost. Apply such workaround only when built
-with clang.
-
-Reported-by: Matthew Grooms <mgrooms@shrew.net>
-Link: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277200
-Link: https://github.com/llvm/llvm-project/issues/82598
-Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
----
-Changes since v1:
- - Only apply the union workaround with clang.
-
-Seems like all gitlab build tests are OK with this approach.
----
- xen/arch/x86/include/asm/alternative.h | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/xen/arch/x86/include/asm/alternative.h b/xen/arch/x86/include/asm/alternative.h
-index a1cd6a9fe5b8..3fe27ea791bf 100644
---- a/xen/arch/x86/include/asm/alternative.h
-+++ b/xen/arch/x86/include/asm/alternative.h
-@@ -167,9 +167,25 @@ extern void alternative_branches(void);
- #define ALT_CALL_arg5 "r8"
- #define ALT_CALL_arg6 "r9"
-
-+#ifdef CONFIG_CC_IS_CLANG
-+/*
-+ * Use an union with an unsigned long in order to prevent clang from skipping a
-+ * possible truncation of the value. By using the union any truncation is
-+ * carried before the call instruction.
-+ * https://github.com/llvm/llvm-project/issues/82598
-+ */
-+#define ALT_CALL_ARG(arg, n) \
-+ register union { \
-+ typeof(arg) e; \
-+ unsigned long r; \
-+ } a ## n ## _ asm ( ALT_CALL_arg ## n ) = { \
-+ .e = ({ BUILD_BUG_ON(sizeof(arg) > sizeof(void *)); (arg); }) \
-+ }
-+#else
- #define ALT_CALL_ARG(arg, n) \
- register typeof(arg) a ## n ## _ asm ( ALT_CALL_arg ## n ) = \
- ({ BUILD_BUG_ON(sizeof(arg) > sizeof(void *)); (arg); })
-+#endif
- #define ALT_CALL_NO_ARG(n) \
- register unsigned long a ## n ## _ asm ( ALT_CALL_arg ## n )
-
---
-2.43.0
-