How about...

static const __initdata struct x86_cpu_id cpu_no_speculation[] = {
        { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_CEDARVIEW, X86_FEATURE_ANY },
        { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_CLOVERVIEW, X86_FEATURE_ANY },
        { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_LINCROFT, X86_FEATURE_ANY },
        { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_PENWELL, X86_FEATURE_ANY },
        { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_PINEVIEW, X86_FEATURE_ANY },
        { X86_VENDOR_INTEL, 5 },
        { X86_VENDOR_CENTAUR, 5 },
        { X86_VENDOR_ANY, 4 },
        {}
};

static const __initdata struct x86_cpu_id cpu_no_meltdown[] = {
        { X86_VENDOR_AMD },
        {}
};

static bool __init early_cpu_vulnerable_meltdown(struct cpuinfo_x86 *c)
{
        u64 ia32_cap = 0;

        if (x86_match_cpu(cpu_no_meltdown))
                return false;

        if (cpu_has(c, X86_FEATURE_ARCH_CAPABILITIES))
                rdmsrl(MSR_IA32_ARCH_CAPABILITIES, ia32_cap);

        /* Rogue Data Cache Load? No! */
        if (ia32_cap & ARCH_CAP_RDCL_NO)
                return false;

        return true;
}

...



        if (!x86_match_cpu(cpu_no_speculation)) {
                if (early_cpu_vulnerable_meltdown(c))
                        setup_force_cpu_bug(X86_BUG_CPU_MELTDOWN);
                setup_force_cpu_bug(X86_BUG_SPECTRE_V1);
                setup_force_cpu_bug(X86_BUG_SPECTRE_V2);
        }

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to