public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Georgy Yakovlev" <gyakovlev@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-fs/zfs-kmod/files/, sys-fs/zfs-kmod/
Date: Fri, 13 Jan 2023 04:33:47 +0000 (UTC)	[thread overview]
Message-ID: <1673584365.06df21657de6a4d31985750139fe4817c6a256ad.gyakovlev@gentoo> (raw)

commit:     06df21657de6a4d31985750139fe4817c6a256ad
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 13 04:32:45 2023 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Fri Jan 13 04:32:45 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=06df2165

sys-fs/zfs-kmod: add ieee-long-double patch to 2.1.7

Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 .../files/2.1.7-ppc64-ieee128-compat.patch         | 217 +++++++++++++++++++++
 sys-fs/zfs-kmod/zfs-kmod-2.1.7.ebuild              |   5 +-
 2 files changed, 221 insertions(+), 1 deletion(-)

diff --git a/sys-fs/zfs-kmod/files/2.1.7-ppc64-ieee128-compat.patch b/sys-fs/zfs-kmod/files/2.1.7-ppc64-ieee128-compat.patch
new file mode 100644
index 000000000000..5613cb8ca9d1
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/2.1.7-ppc64-ieee128-compat.patch
@@ -0,0 +1,217 @@
+From 8324d738fdb3096bd97336476bb399e6c312289a Mon Sep 17 00:00:00 2001
+From: Richard Yao <richard.yao@alumni.stonybrook.edu>
+Date: Thu, 12 Jan 2023 11:06:57 -0500
+Subject: [PATCH] Linux ppc64le ieee128 compat: Do not redefine __asm on
+ external headers
+
+There is an external assembly declaration extension in GNU C that glibc
+uses when building with ieee128 floating point support on ppc64le.
+Marking that as volatile makes no sense, so the build breaks.
+
+It does not make sense to only mark this as volatile on Linux, since if
+do not want the compiler reordering things on Linux, we do not want the
+compiler reordering things on any other platform, so we stop treating
+Linux specially and just manually inline the CPP macro so that we can
+eliminate it. This should fix the build on ppc64le.
+
+Closes openzfs/zfs#14308
+Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
+---
+ .../vdev_raidz_math_powerpc_altivec_common.h  | 44 +++++++++----------
+ 1 file changed, 20 insertions(+), 24 deletions(-)
+
+diff --git a/module/zfs/vdev_raidz_math_powerpc_altivec_common.h b/module/zfs/vdev_raidz_math_powerpc_altivec_common.h
+index 46d42c5e241..f76eb47a9c6 100644
+--- a/module/zfs/vdev_raidz_math_powerpc_altivec_common.h
++++ b/module/zfs/vdev_raidz_math_powerpc_altivec_common.h
+@@ -26,10 +26,6 @@
+ #include <sys/types.h>
+ #include <sys/simd.h>
+ 
+-#ifdef __linux__
+-#define	__asm __asm__ __volatile__
+-#endif
+-
+ #define	_REG_CNT(_0, _1, _2, _3, _4, _5, _6, _7, N, ...) N
+ #define	REG_CNT(r...) _REG_CNT(r, 8, 7, 6, 5, 4, 3, 2, 1)
+ 
+@@ -142,7 +138,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 8:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"lvx 21,0,%[SRC0]\n"				\
+ 		"lvx 20,0,%[SRC1]\n"				\
+ 		"lvx 19,0,%[SRC2]\n"				\
+@@ -172,7 +168,7 @@ typedef struct v {
+ 		:	"v18", "v19", "v20", "v21");		\
+ 		break;						\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"lvx 21,0,%[SRC0]\n"				\
+ 		"lvx 20,0,%[SRC1]\n"				\
+ 		"lvx 19,0,%[SRC2]\n"				\
+@@ -189,7 +185,7 @@ typedef struct v {
+ 		:	"v18", "v19", "v20", "v21");		\
+ 		break;						\
+ 	case 2:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"lvx 21,0,%[SRC0]\n"				\
+ 		"lvx 20,0,%[SRC1]\n"				\
+ 		"vxor " VR0(r) "," VR0(r) ",21\n"		\
+@@ -208,7 +204,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 8:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vxor " VR4(r) "," VR4(r) "," VR0(r) "\n"	\
+ 		"vxor " VR5(r) "," VR5(r) "," VR1(r) "\n"	\
+ 		"vxor " VR6(r) "," VR6(r) "," VR2(r) "\n"	\
+@@ -217,7 +213,7 @@ typedef struct v {
+ 		:	RVR0(r), RVR1(r), RVR2(r), RVR3(r));	\
+ 		break;						\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vxor " VR2(r) "," VR2(r) "," VR0(r) "\n"	\
+ 		"vxor " VR3(r) "," VR3(r) "," VR1(r) "\n"	\
+ 		:	UVR2(r), UVR3(r)			\
+@@ -232,7 +228,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 8:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vxor " VR0(r) "," VR0(r) "," VR0(r) "\n"	\
+ 		"vxor " VR1(r) "," VR1(r) "," VR1(r) "\n"	\
+ 		"vxor " VR2(r) "," VR2(r) "," VR2(r) "\n"	\
+@@ -245,7 +241,7 @@ typedef struct v {
+ 			WVR4(r), WVR5(r), WVR6(r), WVR7(r));	\
+ 		break;						\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vxor " VR0(r) "," VR0(r) "," VR0(r) "\n"	\
+ 		"vxor " VR1(r) "," VR1(r) "," VR1(r) "\n"	\
+ 		"vxor " VR2(r) "," VR2(r) "," VR2(r) "\n"	\
+@@ -253,7 +249,7 @@ typedef struct v {
+ 		:	WVR0(r), WVR1(r), WVR2(r), WVR3(r));	\
+ 		break;						\
+ 	case 2:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vxor " VR0(r) "," VR0(r) "," VR0(r) "\n"	\
+ 		"vxor " VR1(r) "," VR1(r) "," VR1(r) "\n"	\
+ 		:	WVR0(r), WVR1(r));			\
+@@ -267,7 +263,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 8:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vor " VR4(r) "," VR0(r) "," VR0(r) "\n"	\
+ 		"vor " VR5(r) "," VR1(r) "," VR1(r) "\n"	\
+ 		"vor " VR6(r) "," VR2(r) "," VR2(r) "\n"	\
+@@ -276,7 +272,7 @@ typedef struct v {
+ 		:	RVR0(r), RVR1(r), RVR2(r), RVR3(r));	\
+ 		break;						\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vor " VR2(r) "," VR0(r) "," VR0(r) "\n"	\
+ 		"vor " VR3(r) "," VR1(r) "," VR1(r) "\n"	\
+ 		:	WVR2(r), WVR3(r)			\
+@@ -291,7 +287,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 8:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"lvx " VR0(r) " ,0,%[SRC0]\n"			\
+ 		"lvx " VR1(r) " ,0,%[SRC1]\n"			\
+ 		"lvx " VR2(r) " ,0,%[SRC2]\n"			\
+@@ -312,7 +308,7 @@ typedef struct v {
+ 		[SRC7] "r" ((OFFSET(src, 112))));		\
+ 		break;						\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"lvx " VR0(r) " ,0,%[SRC0]\n"			\
+ 		"lvx " VR1(r) " ,0,%[SRC1]\n"			\
+ 		"lvx " VR2(r) " ,0,%[SRC2]\n"			\
+@@ -324,7 +320,7 @@ typedef struct v {
+ 		[SRC3] "r" ((OFFSET(src, 48))));		\
+ 		break;						\
+ 	case 2:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"lvx " VR0(r) " ,0,%[SRC0]\n"			\
+ 		"lvx " VR1(r) " ,0,%[SRC1]\n"			\
+ 		:	WVR0(r), WVR1(r)			\
+@@ -340,7 +336,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 8:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"stvx " VR0(r) " ,0,%[DST0]\n"			\
+ 		"stvx " VR1(r) " ,0,%[DST1]\n"			\
+ 		"stvx " VR2(r) " ,0,%[DST2]\n"			\
+@@ -362,7 +358,7 @@ typedef struct v {
+ 		:	"memory");				\
+ 		break;						\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"stvx " VR0(r) " ,0,%[DST0]\n"			\
+ 		"stvx " VR1(r) " ,0,%[DST1]\n"			\
+ 		"stvx " VR2(r) " ,0,%[DST2]\n"			\
+@@ -375,7 +371,7 @@ typedef struct v {
+ 		: "memory");					\
+ 		break;						\
+ 	case 2:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"stvx " VR0(r) " ,0,%[DST0]\n"			\
+ 		"stvx " VR1(r) " ,0,%[DST1]\n"			\
+ 		: :	[DST0] "r" ((OFFSET(dst, 0))),		\
+@@ -400,7 +396,7 @@ typedef struct v {
+ 
+ #define	MUL2_SETUP()						\
+ {								\
+-	__asm(							\
++	__asm__ __volatile__(					\
+ 		"vspltisb " VR(16) ",14\n"			\
+ 		"vspltisb " VR(17) ",15\n"			\
+ 		"vaddubm " VR(16) "," VR(17) "," VR(16) "\n"	\
+@@ -412,7 +408,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 4:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vcmpgtsb 19," VR(17) "," VR0(r) "\n"		\
+ 		"vcmpgtsb 18," VR(17) "," VR1(r) "\n"		\
+ 		"vcmpgtsb 21," VR(17) "," VR2(r) "\n"		\
+@@ -434,7 +430,7 @@ typedef struct v {
+ 		:	"v18", "v19", "v20", "v21");		\
+ 		break;						\
+ 	case 2:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		"vcmpgtsb 19," VR(17) "," VR0(r) "\n"		\
+ 		"vcmpgtsb 18," VR(17) "," VR1(r) "\n"		\
+ 		"vand 19,19," VR(16) "\n"			\
+@@ -478,7 +474,7 @@ typedef struct v {
+ {								\
+ 	switch (REG_CNT(r)) {					\
+ 	case 2:							\
+-		__asm(						\
++		__asm__ __volatile__(				\
+ 		/* lts for upper part */			\
+ 		"vspltisb 15,15\n"				\
+ 		"lvx 10,0,%[lt0]\n"				\

diff --git a/sys-fs/zfs-kmod/zfs-kmod-2.1.7.ebuild b/sys-fs/zfs-kmod/zfs-kmod-2.1.7.ebuild
index d12dfd611acc..4b53b2ee95a4 100644
--- a/sys-fs/zfs-kmod/zfs-kmod-2.1.7.ebuild
+++ b/sys-fs/zfs-kmod/zfs-kmod-2.1.7.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -62,6 +62,9 @@ DOCS=( AUTHORS COPYRIGHT META README.md )
 
 PATCHES=(
 	"${FILESDIR}"/${PN}-2.1.6-fgrep.patch
+
+	# https://github.com/openzfs/zfs/issues/14308
+	"${FILESDIR}"/2.1.7-ppc64-ieee128-compat.patch
 )
 
 pkg_pretend() {


             reply	other threads:[~2023-01-13  4:33 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-13  4:33 Georgy Yakovlev [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-12-28  3:43 [gentoo-commits] repo/gentoo:master commit in: sys-fs/zfs-kmod/files/, sys-fs/zfs-kmod/ Sam James
2023-01-27 19:34 Georgy Yakovlev
2023-01-24 21:04 Georgy Yakovlev
2022-06-30 10:37 Sam James
2022-06-07 18:47 Georgy Yakovlev
2022-04-22  1:54 Sam James
2021-11-08  6:09 Sam James
2020-11-03 20:07 Georgy Yakovlev
2020-08-26 23:35 Georgy Yakovlev
2019-12-13 23:43 Georgy Yakovlev
2019-06-23  8:00 Georgy Yakovlev
2019-04-26 21:09 Georgy Yakovlev
2019-01-09  6:31 Georgy Yakovlev
2015-09-18 12:50 Richard Yao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1673584365.06df21657de6a4d31985750139fe4817c6a256ad.gyakovlev@gentoo \
    --to=gyakovlev@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox