From nobody Thu Feb 22 17:47:08 2024 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TggZP0grmz5B4jP; Thu, 22 Feb 2024 17:47:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TggZP07qrz4Xc7; Thu, 22 Feb 2024 17:47:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708624029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qG7dHkcrpwmNr4/NSGfEcMMhMSP81fZJhZUljB/OHPA=; b=JbeD0PJUMxvvcKyTeE/XBOCj2ip4J0v9+JK7IdWLr2YUJedpO5J97CnyTyjsucByWIljCV dlNnAT5XmOdsTL/ZlAcDfOmU3QkBxh7od0h2eO2VpgxpEkDMgRAcbWEUgBJZ270thOKzNu qAiNwgLwt1bIRKk23QiX/JvDG3Bvgk6fVE+ApU872nxRc+yekqO/BHEQJAeDRGOfSxInex 24irjVzCR8i3fz5ZeDfJUwXfFwdLVmQ7eIcQb2H9JRJYyBcFTmYsPNHqEfc2fuhW2BmWkq QBSf9w9vwMFrfnQDg4nnftChLrHeKa0nDDVjmEQ7riS6R4dpIv3OTl/S7A7FTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708624029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qG7dHkcrpwmNr4/NSGfEcMMhMSP81fZJhZUljB/OHPA=; b=ROY1WinCf1PIl8oMW7DLw56jd/S9CMTU3FIjF3XewytoL8QYp/KX6U1cl9gQ541Gswd6sC 1LXG6PZmwIE/Mh/K0PA6gLaKDeh3ZF6fZab0iX49w7ufEg/+evlvCO5mXzUtZ7roWpizdQ DYuE/W9fDftLsHFVNqOETnGVtWRQyXKEukDf1wurilWEb/DxwbtSVqCV82Xo7S+VeCqWtf EdI069GkG+rtZghJqlijnxj6FDOmyymutPIdgHcGup9f01rqakGBXq0+O0TEDIoaJs2TjI 91yDJwQkIlfny5bJTL0jtGJB+/W9MIAOKqh3bijYzhG1QmmmVWUPvcGecnOKbg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1708624029; a=rsa-sha256; cv=none; b=l/xmj8nLgejySWD9ppJhxFMVh9Bl30nI0TXvt9rWPii45Se05zWPck7RZghksAkkUPH1ez J5fHnzvR0vaB63JjlyQCRGIGIeNQVWIZSab44l6qiUTn8Xvn/88aXI1nnDdJIltBKC3sjc RUOfMiVNRAts1QJJwGDe66zLyCIaGh8FfpuFR8h7OegXTDxbgDdX1vzJ4ZegnlhefCk07S JDjHIhqeZa7KDgwlVpEiQ++0QJyNpuSBktsjoxOLWIkeB3vep//yasl+B9ypZhmW9bCntb A8xIYS9alCzWIAJyzUDaK9N/UAnq3Jy6aB0VCR2+vi5oMl8que3qIPPVICW+bQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TggZN6BPkzhl8; Thu, 22 Feb 2024 17:47:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 41MHl8oU050496; Thu, 22 Feb 2024 17:47:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 41MHl8kf050493; Thu, 22 Feb 2024 17:47:08 GMT (envelope-from git) Date: Thu, 22 Feb 2024 17:47:08 GMT Message-Id: <202402221747.41MHl8kf050493@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Roger Pau =?utf-8?Q?Monn=C3=A9?= Subject: git: 10944178948b - main - {sysutils,emulators}/xen-{tools,kernel}: update to latest stable hash List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: royger X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 10944178948b26e458cb4f077e3537bd0671c056 Auto-Submitted: auto-generated The branch main has been updated by royger: URL: https://cgit.FreeBSD.org/ports/commit/?id=10944178948b26e458cb4f077e3537bd0671c056 commit 10944178948b26e458cb4f077e3537bd0671c056 Author: Roger Pau Monné AuthorDate: 2024-02-22 16:53:07 +0000 Commit: Roger Pau Monné CommitDate: 2024-02-22 17:46:42 +0000 {sysutils,emulators}/xen-{tools,kernel}: update to latest stable hash Update the kernel and tools packages and also include a fix for a clang code generation bug. Sponsored by: Cloud Software Group Approved by: bapt (implicit) --- emulators/xen-kernel/Makefile | 7 +- emulators/xen-kernel/distinfo | 6 +- ...all-use-an-union-as-register-type-for-fun.patch | 137 +++++++++++++++++++++ sysutils/xen-tools/Makefile | 4 +- sysutils/xen-tools/distinfo | 6 +- 5 files changed, 150 insertions(+), 10 deletions(-) diff --git a/emulators/xen-kernel/Makefile b/emulators/xen-kernel/Makefile index e86397813da8..cb81823d89d6 100644 --- a/emulators/xen-kernel/Makefile +++ b/emulators/xen-kernel/Makefile @@ -1,11 +1,11 @@ PORTNAME= xen PKGNAMESUFFIX= -kernel -DISTVERSION= 4.18.0.20231212 +DISTVERSION= 4.18.0.20240201 CATEGORIES= emulators USE_GITLAB= yes GL_ACCOUNT= xen-project -GL_TAGNAME= 1792d1723b7fb45a20b145d2de4d233913b22c09 +GL_TAGNAME= b1fdd7d0e47e0831ac7a99d0417385fc10d3068c MAINTAINER= royger@FreeBSD.org COMMENT= Hypervisor using a microkernel design @@ -28,6 +28,9 @@ 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 .if ${OPSYS} != FreeBSD diff --git a/emulators/xen-kernel/distinfo b/emulators/xen-kernel/distinfo index b769fc627058..629e0923053c 100644 --- a/emulators/xen-kernel/distinfo +++ b/emulators/xen-kernel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1702977481 -SHA256 (xen-project-xen-1792d1723b7fb45a20b145d2de4d233913b22c09_GL0.tar.gz) = cd999c5c715190cffa80e51d2099423039aca535d478d0090c31bacdf33a3401 -SIZE (xen-project-xen-1792d1723b7fb45a20b145d2de4d233913b22c09_GL0.tar.gz) = 6825501 +TIMESTAMP = 1708622887 +SHA256 (xen-project-xen-b1fdd7d0e47e0831ac7a99d0417385fc10d3068c_GL0.tar.gz) = 4cb7ef37b51d9d1ff58272fafebfa91d48aadacdb5cc4ee6f046488234be8c1b +SIZE (xen-project-xen-b1fdd7d0e47e0831ac7a99d0417385fc10d3068c_GL0.tar.gz) = 6826601 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 new file mode 100644 index 000000000000..ec00a478cb23 --- /dev/null +++ b/emulators/xen-kernel/files/v2-0001-x86-altcall-use-an-union-as-register-type-for-fun.patch @@ -0,0 +1,137 @@ +From e0d563ca60b16dfab45956f60a6c1b7b1e218ba4 Mon Sep 17 00:00:00 2001 +From: Roger Pau Monne +To: xen-devel@lists.xenproject.org +Cc: Jan Beulich +Cc: Andrew Cooper +Cc: "Roger Pau Monné" +Cc: Wei Liu +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 +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é +--- +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 + diff --git a/sysutils/xen-tools/Makefile b/sysutils/xen-tools/Makefile index d44e36e0deeb..a38f0c4d4ffa 100644 --- a/sysutils/xen-tools/Makefile +++ b/sysutils/xen-tools/Makefile @@ -1,12 +1,12 @@ PORTNAME= xen PKGNAMESUFFIX= -tools -DISTVERSION= 4.18.0.20231212 +DISTVERSION= 4.18.0.20240201 PORTREVISION= 1 CATEGORIES= sysutils emulators USE_GITLAB= yes GL_ACCOUNT= xen-project -GL_TAGNAME= 1792d1723b7fb45a20b145d2de4d233913b22c09 +GL_TAGNAME= b1fdd7d0e47e0831ac7a99d0417385fc10d3068c GL_TUPLE= qemu-project:qemu:v8.0.4:qemu \ qemu-project:dtc:b6910bec:dtc \ qemu-project:meson:3a9b285a:meson \ diff --git a/sysutils/xen-tools/distinfo b/sysutils/xen-tools/distinfo index 7ca93c276af3..97bbb13a4006 100644 --- a/sysutils/xen-tools/distinfo +++ b/sysutils/xen-tools/distinfo @@ -1,6 +1,6 @@ -TIMESTAMP = 1702977532 -SHA256 (xen-project-xen-1792d1723b7fb45a20b145d2de4d233913b22c09_GL0.tar.gz) = cd999c5c715190cffa80e51d2099423039aca535d478d0090c31bacdf33a3401 -SIZE (xen-project-xen-1792d1723b7fb45a20b145d2de4d233913b22c09_GL0.tar.gz) = 6825501 +TIMESTAMP = 1708623243 +SHA256 (xen-project-xen-b1fdd7d0e47e0831ac7a99d0417385fc10d3068c_GL0.tar.gz) = 4cb7ef37b51d9d1ff58272fafebfa91d48aadacdb5cc4ee6f046488234be8c1b +SIZE (xen-project-xen-b1fdd7d0e47e0831ac7a99d0417385fc10d3068c_GL0.tar.gz) = 6826601 SHA256 (qemu-v8.0.4.tar.bz2) = 958eae6b32046bb512b5b968f66e896258fa8c4ec5c7fdf2d780fd206c677774 SIZE (qemu-v8.0.4.tar.bz2) = 31468222 SHA256 (dtc-b6910bec.tar.bz2) = f180420b105bdd35cfee9977d6ee2ee5d6601aa2a84693c048a985a604bd2c1c