Revert "Update BLST, add force-adx support (#1595)" (#1649)

This reverts commit 4fca306397.

Something in the BLST update is causing SIGILLs on aarch64 non-portable builds. While we debug the issue, I think it's best if we just revert the update.
This commit is contained in:
Michael Sproul 2020-09-23 00:25:56 +00:00
parent a97ec318c4
commit 62c8548ed0
5 changed files with 12 additions and 23 deletions

2
Cargo.lock generated
View File

@ -525,7 +525,7 @@ dependencies = [
[[package]] [[package]]
name = "blst" name = "blst"
version = "0.1.1" version = "0.1.1"
source = "git+https://github.com/supranational/blst.git?rev=a8398ed284b0d78858302ad1ceb25a80e7bbe535#a8398ed284b0d78858302ad1ceb25a80e7bbe535" source = "git+https://github.com/sigp/blst.git?rev=284f7059642851c760a09fb1708bcb59c7ca323c#284f7059642851c760a09fb1708bcb59c7ca323c"
dependencies = [ dependencies = [
"cc", "cc",
"glob", "glob",

View File

@ -18,15 +18,17 @@ project.
The `Makefile` in the project contains four targets for cross-compiling: The `Makefile` in the project contains four targets for cross-compiling:
- `build-x86_64`: builds an optimized version for x86_64 processors (suitable for most users). - `build-x86_64`: builds an optimized version for x86_64 processors (suitable
Supports Intel Broadwell (2014) and newer, and AMD Ryzen (2017) and newer. for most users).
- `build-x86_64-portable`: builds a version for x86_64 processors which avoids using some modern CPU - `build-x86_64-portable`: builds a version x86_64 processors which avoids
instructions that are incompatible with older CPUs. Suitable for pre-Broadwell/Ryzen CPUs. using some modern CPU instructions that might cause an "illegal
- `build-aarch64`: builds an optimized version for 64-bit ARM processors instruction" error on older CPUs.
- `build-aarch64`: builds an optimized version for 64bit ARM processors
(suitable for Raspberry Pi 4). (suitable for Raspberry Pi 4).
- `build-aarch64-portable`: builds a version for 64-bit ARM processors which avoids using some - `build-aarch64-portable`: builds a version 64 bit ARM processors which avoids
modern CPU instructions. In practice, very few ARM processors lack the instructions necessary to using some modern CPU instructions that might cause an "illegal
run the faster non-portable build. instruction" error on older CPUs.
### Example ### Example

View File

@ -17,7 +17,7 @@ eth2_hashing = "0.1.0"
ethereum-types = "0.9.1" ethereum-types = "0.9.1"
arbitrary = { version = "0.4.4", features = ["derive"], optional = true } arbitrary = { version = "0.4.4", features = ["derive"], optional = true }
zeroize = { version = "1.0.0", features = ["zeroize_derive"] } zeroize = { version = "1.0.0", features = ["zeroize_derive"] }
blst = { git = "https://github.com/supranational/blst.git", rev = "a8398ed284b0d78858302ad1ceb25a80e7bbe535" } blst = { git = "https://github.com/sigp/blst.git", rev = "284f7059642851c760a09fb1708bcb59c7ca323c" }
[features] [features]
default = ["supranational"] default = ["supranational"]
@ -25,4 +25,3 @@ fake_crypto = []
milagro = [] milagro = []
supranational = [] supranational = []
supranational-portable = ["supranational", "blst/portable"] supranational-portable = ["supranational", "blst/portable"]
supranational-force-adx = ["supranational", "blst/force-adx"]

View File

@ -9,9 +9,6 @@ edition = "2018"
write_ssz_files = ["beacon_node/write_ssz_files"] write_ssz_files = ["beacon_node/write_ssz_files"]
# Compiles the BLS crypto code so that the binary is portable across machines. # Compiles the BLS crypto code so that the binary is portable across machines.
portable = ["bls/supranational-portable"] portable = ["bls/supranational-portable"]
# Compiles BLST so that it always uses ADX instructions.
# Compatible with processors from 2013 onwards.
modern = ["bls/supranational-force-adx"]
# Uses the slower Milagro BLS library, which is written in native Rust. # Uses the slower Milagro BLS library, which is written in native Rust.
milagro = ["bls/milagro"] milagro = ["bls/milagro"]

View File

@ -16,8 +16,6 @@ pub const ETH2_CONFIG_FILENAME: &str = "eth2-spec.toml";
fn bls_library_name() -> &'static str { fn bls_library_name() -> &'static str {
if cfg!(feature = "portable") { if cfg!(feature = "portable") {
"blst-portable" "blst-portable"
} else if cfg!(feature = "modern") {
"blst-modern"
} else if cfg!(feature = "milagro") { } else if cfg!(feature = "milagro") {
"milagro" "milagro"
} else { } else {
@ -183,13 +181,6 @@ fn run<E: EthSpec>(
)); ));
} }
#[cfg(all(feature = "modern", target_arch = "x86_64"))]
if !std::is_x86_feature_detected!("adx") {
return Err(format!(
"CPU incompatible with optimized binary, please try Lighthouse portable build"
));
}
let debug_level = matches let debug_level = matches
.value_of("debug-level") .value_of("debug-level")
.ok_or_else(|| "Expected --debug-level flag".to_string())?; .ok_or_else(|| "Expected --debug-level flag".to_string())?;