Message ID | 20190109235544.2992426-1-jeremy.linton@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | arm64: add system vulnerability sysfs entries | expand |
Hi Jeremy, > Jeremy Linton <jeremy.linton@arm.com> hat am 10. Januar 2019 um 00:55 geschrieben: > > > Arm64 machines should be displaying a human readable > vulnerability status to speculative execution attacks in > /sys/devices/system/cpu/vulnerabilities > > This series enables that behavior by providing the expected > functions. Those functions expose the cpu errata and feature > states, as well as whether firmware is responding appropriately > to display the overall machine status. This means that in a > heterogeneous machine we will only claim the machine is mitigated > or safe if we are confident all booted cores are safe or > mitigated. > i applied this v3 series and Marc's v2 series. Now i'm getting the following on a Raspberry Pi 3 B+ : meltdown:Not affected spec_store_bypass:Not affected spectre_v1:Mitigation: __user pointer sanitization So the entries l1tf and spectre_v2 disappeared. Stefan
Hi, On 01/15/2019 01:50 PM, Stefan Wahren wrote: > Hi Jeremy, > >> Jeremy Linton <jeremy.linton@arm.com> hat am 10. Januar 2019 um 00:55 geschrieben: >> >> >> Arm64 machines should be displaying a human readable >> vulnerability status to speculative execution attacks in >> /sys/devices/system/cpu/vulnerabilities >> >> This series enables that behavior by providing the expected >> functions. Those functions expose the cpu errata and feature >> states, as well as whether firmware is responding appropriately >> to display the overall machine status. This means that in a >> heterogeneous machine we will only claim the machine is mitigated >> or safe if we are confident all booted cores are safe or >> mitigated. >> > > i applied this v3 series and Marc's v2 series. > > Now i'm getting the following on a Raspberry Pi 3 B+ : > > meltdown:Not affected > spec_store_bypass:Not affected > spectre_v1:Mitigation: __user pointer sanitization > > So the entries l1tf and spectre_v2 disappeared. Yes, the l1tf entry should be gone. I believe there is a problem with the "1/2 advertise.." patch in that the 'arm64_requested_vuln_attrs |=' line needs to be hoisted to the top of check_branch_predictor() and the '__spectrev2_safe = false' line needs to be hoisted 6 lines immediately above "/* Fallback to firmware detection*/" That should re-enable the spectre_v2 entry.
Hi, > Jeremy Linton <jeremy.linton@arm.com> hat am 15. Januar 2019 um 22:21 geschrieben: > > > Hi, > > On 01/15/2019 01:50 PM, Stefan Wahren wrote: > > Hi Jeremy, > > > >> Jeremy Linton <jeremy.linton@arm.com> hat am 10. Januar 2019 um 00:55 geschrieben: > >> > >> > >> Arm64 machines should be displaying a human readable > >> vulnerability status to speculative execution attacks in > >> /sys/devices/system/cpu/vulnerabilities > >> > >> This series enables that behavior by providing the expected > >> functions. Those functions expose the cpu errata and feature > >> states, as well as whether firmware is responding appropriately > >> to display the overall machine status. This means that in a > >> heterogeneous machine we will only claim the machine is mitigated > >> or safe if we are confident all booted cores are safe or > >> mitigated. > >> > > > > i applied this v3 series and Marc's v2 series. > > > > Now i'm getting the following on a Raspberry Pi 3 B+ : > > > > meltdown:Not affected > > spec_store_bypass:Not affected > > spectre_v1:Mitigation: __user pointer sanitization > > > > So the entries l1tf and spectre_v2 disappeared. > > Yes, the l1tf entry should be gone. > > I believe there is a problem with the "1/2 advertise.." patch in that > the 'arm64_requested_vuln_attrs |=' line needs to be hoisted to the top > of check_branch_predictor() and the '__spectrev2_safe = false' line > needs to be hoisted 6 lines immediately above "/* Fallback to firmware > detection*/" a snippet or a new version would be nice > > That should re-enable the spectre_v2 entry.
On 01/18/2019 12:05 PM, Stefan Wahren wrote: > Hi, > >> Jeremy Linton <jeremy.linton@arm.com> hat am 15. Januar 2019 um 22:21 geschrieben: >> >> >> Hi, >> >> On 01/15/2019 01:50 PM, Stefan Wahren wrote: >>> Hi Jeremy, >>> >>>> Jeremy Linton <jeremy.linton@arm.com> hat am 10. Januar 2019 um 00:55 geschrieben: >>>> >>>> >>>> Arm64 machines should be displaying a human readable >>>> vulnerability status to speculative execution attacks in >>>> /sys/devices/system/cpu/vulnerabilities >>>> >>>> This series enables that behavior by providing the expected >>>> functions. Those functions expose the cpu errata and feature >>>> states, as well as whether firmware is responding appropriately >>>> to display the overall machine status. This means that in a >>>> heterogeneous machine we will only claim the machine is mitigated >>>> or safe if we are confident all booted cores are safe or >>>> mitigated. >>>> >>> >>> i applied this v3 series and Marc's v2 series. >>> >>> Now i'm getting the following on a Raspberry Pi 3 B+ : >>> >>> meltdown:Not affected >>> spec_store_bypass:Not affected >>> spectre_v1:Mitigation: __user pointer sanitization >>> >>> So the entries l1tf and spectre_v2 disappeared. >> >> Yes, the l1tf entry should be gone. >> >> I believe there is a problem with the "1/2 advertise.." patch in that >> the 'arm64_requested_vuln_attrs |=' line needs to be hoisted to the top >> of check_branch_predictor() and the '__spectrev2_safe = false' line >> needs to be hoisted 6 lines immediately above "/* Fallback to firmware >> detection*/" > > a snippet or a new version would be nice Sure, I've got another version, to be posted soon (probably Tue of next week). In the meantime, Marc's tree should work with the following fix: diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c index b44f87e7360d..7cfd34b2c0e5 100644 --- a/arch/arm64/kernel/cpu_errata.c +++ b/arch/arm64/kernel/cpu_errata.c @@ -286,11 +286,15 @@ static int detect_harden_bp_fw(void) } #endif /* CONFIG_HARDEN_BRANCH_PREDICTOR */ +#if defined(CONFIG_ARM64_SSBD) || \ + defined(CONFIG_GENERIC_CPU_VULNERABILITIES) +static bool __ssb_safe = true; +#endif + #ifdef CONFIG_ARM64_SSBD DEFINE_PER_CPU_READ_MOSTLY(u64, arm64_ssbd_callback_required); int ssbd_state __read_mostly = ARM64_SSBD_KERNEL; -static bool __ssb_safe = true; static const struct ssbd_options { const char *str; @@ -569,6 +573,8 @@ check_branch_predictor(const struct arm64_cpu_capabilities *entry, int scope) WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible()); + arm64_requested_vuln_attrs |= VULN_SPECTREV2; + /* If the CPU has CSV2 set, we're safe */ if (cpuid_feature_extract_unsigned_field(read_cpuid(ID_AA64PFR0_EL1), ID_AA64PFR0_CSV2_SHIFT)) @@ -578,17 +584,17 @@ check_branch_predictor(const struct arm64_cpu_capabilities *entry, int scope) if (is_midr_in_range_list(read_cpuid_id(), spectre_v2_safe_list)) return false; + __spectrev2_safe = false; + /* Fallback to firmware detection */ need_wa = detect_harden_bp_fw(); if (!need_wa) return false; - __spectrev2_safe = false; - if (need_wa < 0) pr_warn_once("ARM_SMCCC_ARCH_WORKAROUND_1 missing from firmware\n"); - arm64_requested_vuln_attrs |= VULN_SPECTREV2; + return (need_wa > 0); }
> Jeremy Linton <jeremy.linton@arm.com> hat am 18. Januar 2019 um 23:22 geschrieben: > > > On 01/18/2019 12:05 PM, Stefan Wahren wrote: > > Hi, > > > > ... > > > > a snippet or a new version would be nice > > Sure, I've got another version, to be posted soon (probably Tue of next > week). > > In the meantime, Marc's tree should work with the following fix: > > diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c > index b44f87e7360d..7cfd34b2c0e5 100644 > --- a/arch/arm64/kernel/cpu_errata.c > +++ b/arch/arm64/kernel/cpu_errata.c > @@ -286,11 +286,15 @@ static int detect_harden_bp_fw(void) > } > #endif /* CONFIG_HARDEN_BRANCH_PREDICTOR */ > > +#if defined(CONFIG_ARM64_SSBD) || \ > + defined(CONFIG_GENERIC_CPU_VULNERABILITIES) > +static bool __ssb_safe = true; > +#endif > + > #ifdef CONFIG_ARM64_SSBD > DEFINE_PER_CPU_READ_MOSTLY(u64, arm64_ssbd_callback_required); > > int ssbd_state __read_mostly = ARM64_SSBD_KERNEL; > -static bool __ssb_safe = true; > > static const struct ssbd_options { > const char *str; > @@ -569,6 +573,8 @@ check_branch_predictor(const struct > arm64_cpu_capabilities *entry, int scope) > > WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible()); > > + arm64_requested_vuln_attrs |= VULN_SPECTREV2; > + > /* If the CPU has CSV2 set, we're safe */ > if > (cpuid_feature_extract_unsigned_field(read_cpuid(ID_AA64PFR0_EL1), > ID_AA64PFR0_CSV2_SHIFT)) > @@ -578,17 +584,17 @@ check_branch_predictor(const struct > arm64_cpu_capabilities *entry, int scope) > if (is_midr_in_range_list(read_cpuid_id(), spectre_v2_safe_list)) > return false; > > + __spectrev2_safe = false; > + > /* Fallback to firmware detection */ > need_wa = detect_harden_bp_fw(); > if (!need_wa) > return false; > > - __spectrev2_safe = false; > - > if (need_wa < 0) > pr_warn_once("ARM_SMCCC_ARCH_WORKAROUND_1 missing from > firmware\n"); > > - arm64_requested_vuln_attrs |= VULN_SPECTREV2; > + > > return (need_wa > 0); > } > > fine with these changes i'm getting the following: meltdown:Not affected spec_store_bypass:Not affected spectre_v1:Mitigation: __user pointer sanitization spectre_v2:Not affected Thanks Stefan