diff options
author | Dimitris Papastamos <dimitris.papastamos@arm.com> | 2018-04-09 11:15:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-09 11:15:08 +0100 |
commit | 02956560a281eec4e9b49451f1b47369304a84b4 (patch) | |
tree | b2c8c2c5850748163875efce70ed57a7184e8f8b | |
parent | 93883a293145f6c85b3fc8c219f400e28b7d1491 (diff) | |
parent | 59dc4ef48757e4de2dc2de13d13e43acd5d91aa0 (diff) |
Merge pull request #1339 from dp-arm/dp/smccc
Fixup SMCCC_FEATURES return value for SMCCC_ARCH_WORKAROUND_1
-rw-r--r-- | docs/cpu-specific-build-macros.rst | 6 | ||||
-rw-r--r-- | services/arm_arch_svc/arm_arch_svc_setup.c | 11 |
2 files changed, 9 insertions, 8 deletions
diff --git a/docs/cpu-specific-build-macros.rst b/docs/cpu-specific-build-macros.rst index 9e11cdff..65f6adb8 100644 --- a/docs/cpu-specific-build-macros.rst +++ b/docs/cpu-specific-build-macros.rst @@ -18,7 +18,11 @@ TF-A exports a series of build flags which control which security vulnerability workarounds should be applied at runtime. - ``WORKAROUND_CVE_2017_5715``: Enables the security workaround for - `CVE-2017-5715`_. Defaults to 1. + `CVE-2017-5715`_. This flag can be set to 0 by the platform if none + of the PEs in the system need the workaround. Setting this flag to 0 provides + no performance benefit for non-affected platforms, it just helps to comply + with the recommendation in the spec regarding workaround discovery. + Defaults to 1. CPU Errata Workarounds ---------------------- diff --git a/services/arm_arch_svc/arm_arch_svc_setup.c b/services/arm_arch_svc/arm_arch_svc_setup.c index 83d3625f..eb736c06 100644 --- a/services/arm_arch_svc/arm_arch_svc_setup.c +++ b/services/arm_arch_svc/arm_arch_svc_setup.c @@ -19,19 +19,16 @@ static int32_t smccc_version(void) static int32_t smccc_arch_features(u_register_t arg) { - int ret; - switch (arg) { case SMCCC_VERSION: case SMCCC_ARCH_FEATURES: return SMC_OK; +#if WORKAROUND_CVE_2017_5715 case SMCCC_ARCH_WORKAROUND_1: - ret = check_workaround_cve_2017_5715(); - if (ret == ERRATA_APPLIES) - return 0; - else if (ret == ERRATA_NOT_APPLIES) + if (check_workaround_cve_2017_5715() == ERRATA_NOT_APPLIES) return 1; - return -1; /* ERRATA_MISSING */ + return 0; /* ERRATA_APPLIES || ERRATA_MISSING */ +#endif default: return SMC_UNK; } |