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); }
smime.p7s
Description: S/MIME cryptographic signature