summaryrefslogtreecommitdiffstats
path: root/module/zstd
diff options
context:
space:
mode:
authorGeorgy Yakovlev <[email protected]>2020-08-27 15:50:13 -0700
committerGitHub <[email protected]>2020-08-27 15:50:13 -0700
commit735ba76104fb5d701641f1785f75b4c74809155c (patch)
treeeb574373de4626235e12e24119894e99a43d83e1 /module/zstd
parent770269ef3acb3a5e3fe49213840f00776477d678 (diff)
module/zstd: pass -U__BMI__
If kernel is compiled with -march=znver1 or -march=znver2 zstd module compilation will fail due to SSE register return with SSE disabled. What's interesting, is that -march=skylake also implies -mbmi which defines __BMI__ but compilation succeeds. It is probably due to different BMI implementations on AMD and INTEL processors and the way compiler uses instructions. Reviewed-by: Ryan Moeller <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Georgy Yakovlev <[email protected]> Closes #10758 Closes #10829
Diffstat (limited to 'module/zstd')
-rw-r--r--module/zstd/Makefile.in3
1 files changed, 3 insertions, 0 deletions
diff --git a/module/zstd/Makefile.in b/module/zstd/Makefile.in
index eea749ea8..f67db710f 100644
--- a/module/zstd/Makefile.in
+++ b/module/zstd/Makefile.in
@@ -20,6 +20,9 @@ ccflags-y += -O3
# Set it for other compilers, too.
$(obj)/lib/zstd.o: c_flags += -fno-tree-vectorize
+# SSE register return with SSE disabled if -march=znverX is passed
+$(obj)/lib/zstd.o: c_flags += -U__BMI__
+
# Quiet warnings about frame size due to unused code in unmodified zstd lib
$(obj)/lib/zstd.o: c_flags += -Wframe-larger-than=20480