lkml.org 
[lkml]   [2018]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 04/14] arm64: Add ARCH_WORKAROUND_2 probing
    On Tue, May 22, 2018 at 04:06:38PM +0100, Marc Zyngier wrote:
    > As for Spectre variant-2, we rely on SMCCC 1.1 to provide the
    > discovery mechanism for detecting the SSBD mitigation.
    >
    > A new capability is also allocated for that purpose, and a
    > config option.
    >
    > Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

    Reviewed-by: Mark Rutland <mark.rutland@arm.com>

    [...]

    > +static void do_ssbd(bool state)
    > +{
    > + switch (psci_ops.conduit) {
    > + case PSCI_CONDUIT_HVC:
    > + arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_WORKAROUND_2, state, NULL);
    > + break;
    > +
    > + case PSCI_CONDUIT_SMC:
    > + arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2, state, NULL);
    > + break;
    > +
    > + default:
    > + WARN_ON_ONCE(1);
    > + break;
    > + }
    > +}
    > +
    > +static bool has_ssbd_mitigation(const struct arm64_cpu_capabilities *entry,
    > + int scope)
    > +{
    > + struct arm_smccc_res res;
    > + bool supported = true;
    > +
    > + WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible());
    > +
    > + if (psci_ops.smccc_version == SMCCC_VERSION_1_0)
    > + return false;
    > +
    > + /*
    > + * The probe function return value is either negative
    > + * (unsupported or mitigated), positive (unaffected), or zero
    > + * (requires mitigation). We only need to do anything in the
    > + * last case.
    > + */
    > + switch (psci_ops.conduit) {
    > + case PSCI_CONDUIT_HVC:
    > + arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
    > + ARM_SMCCC_ARCH_WORKAROUND_2, &res);
    > + if ((int)res.a0 != 0)
    > + supported = false;
    > + break;
    > +
    > + case PSCI_CONDUIT_SMC:
    > + arm_smccc_1_1_smc(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
    > + ARM_SMCCC_ARCH_WORKAROUND_2, &res);
    > + if ((int)res.a0 != 0)
    > + supported = false;
    > + break;

    Once this is merged, I'll rebase my SMCCCC conduit cleanup atop.

    Mark.

    \
     
     \ /
      Last update: 2018-05-24 13:28    [W:4.163 / U:0.332 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site