From 8ed7346273495dda81bfe9696440bc384151b9c9 Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Mon, 1 Nov 2021 08:03:16 -0700 Subject: [PATCH] Disable AVX512 on Darwin (#13550) Preemptively disable AVX512 until https://github.com/golang/go/issues/49233 has been resolved. This potentially affects reedsolomon, simdjson, sha256-simd, md5-simd packages. Init order requires a separate package since main itself is initialized last, but imports are initialized in the order they are imported from main (confirmed). --- internal/init/init.go | 18 +++++++++++++++++ internal/init/init_darwin_amd64.go | 31 ++++++++++++++++++++++++++++++ main.go | 3 +++ 3 files changed, 52 insertions(+) create mode 100644 internal/init/init.go create mode 100644 internal/init/init_darwin_amd64.go diff --git a/internal/init/init.go b/internal/init/init.go new file mode 100644 index 000000000..7d0c432f8 --- /dev/null +++ b/internal/init/init.go @@ -0,0 +1,18 @@ +// Copyright (c) 2015-2021 MinIO, Inc. +// +// This file is part of MinIO Object Storage stack +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package init diff --git a/internal/init/init_darwin_amd64.go b/internal/init/init_darwin_amd64.go new file mode 100644 index 000000000..7bc01758e --- /dev/null +++ b/internal/init/init_darwin_amd64.go @@ -0,0 +1,31 @@ +// Copyright (c) 2015-2021 MinIO, Inc. +// +// This file is part of MinIO Object Storage stack +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package init + +import ( + "github.com/klauspost/cpuid/v2" +) + +func init() { + // Temporary workaround for + // https://github.com/golang/go/issues/49233 + // Keep until upstream has been fixed. + cpuid.CPU.Disable(cpuid.AVX512F, cpuid.AVX512BW, cpuid.AVX512CD, cpuid.AVX512DQ, + cpuid.AVX512ER, cpuid.AVX512FP16, cpuid.AVX512IFMA, cpuid.AVX512PF, cpuid.AVX512VBMI, + cpuid.AVX512VBMI2, cpuid.AVX512VL, cpuid.AVX512VNNI, cpuid.AVX512VP2INTERSECT, cpuid.AVX512VPOPCNTDQ) +} diff --git a/main.go b/main.go index e0fc57171..47aaecd99 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,9 @@ package main // import "github.com/minio/minio" import ( "os" + // MUST be first import. + _ "github.com/minio/minio/internal/init" + minio "github.com/minio/minio/cmd" // Import gateway