cpus_have_final_cap
if (cpus_have_final_cap(ARM64_WORKAROUND_TSB_FLUSH_FAILURE)) \
return cpus_have_final_cap(ARM64_BTI);
return cpus_have_final_cap(ARM64_HAS_LPA2);
return cpus_have_final_cap(ARM64_HAFT);
return cpus_have_final_cap(ARM64_HAS_PMUV3);
if (!cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
return (!cpus_have_final_cap(ARM64_HAS_HCR_NV1) ||
if (cpus_have_final_cap(ARM64_HAS_HCX)) {
((cpus_have_final_cap(ARM64_HAS_ADDRESS_AUTH) || \
cpus_have_final_cap(ARM64_HAS_GENERIC_AUTH)) && \
if (unlikely(cpus_have_final_cap(ARM64_HAS_NESTED_VIRT) &&
return cpus_have_final_cap(ARM64_SPECTRE_V3A);
if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
return cpus_have_final_cap(ARM64_HAS_STAGE2_FWB) &&
cpus_have_final_cap(ARM64_HAS_CACHE_DIC);
return cpus_have_final_cap(ARM64_HAS_XNX) &&
cpus_have_final_cap(ARM64_HAS_NESTED_VIRT) &&
({ cpus_have_final_cap(ARM64_KVM_HVHE) ? 2 : 3; })
({ cpus_have_final_cap(ARM64_KVM_HVHE) ? 0 : 1; })
return cpus_have_final_cap(ARM64_WORKAROUND_843419) &&
if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB)) \
return cpus_have_final_cap(ARM64_HAS_VIRT_HOST_EXTN);
return cpus_have_final_cap(ARM64_KVM_PROTECTED_MODE);
return cpus_have_final_cap(ARM64_KVM_HVHE);
return cpus_have_final_cap(ARM64_HAS_ICH_HCR_EL2_TDIR);
if (!cpus_have_final_cap(ARM64_WORKAROUND_843419))
if (cpus_have_final_cap(ARM64_WORKAROUND_843419)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_1542419)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_1542419)) {
cpus_have_final_cap(ARM64_WORKAROUND_QCOM_ORYON_CNTVOFF)) {
if (cpus_have_final_cap(ARM64_HAS_ECV_CNTPOFF))
return (cpus_have_final_cap(ARM64_HAS_WFXT) &&
if (cpus_have_final_cap(ARM64_HAS_ECV) && is_hyp_ctxt(vcpu)) {
if (!cpus_have_final_cap(ARM64_HAS_ECV)) {
if (!cpus_have_final_cap(ARM64_HAS_32BIT_EL1))
if (!cpus_have_final_cap(ARM64_HAS_NESTED_VIRT))
if (!cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
if (cpus_have_final_cap(ARM64_KVM_HVHE)) {
if (cpus_have_final_cap(ARM64_KVM_HVHE))
cpus_have_final_cap(ARM64_HAS_ADDRESS_AUTH))
if (cpus_have_final_cap(ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE) ||
cpus_have_final_cap(ARM64_WORKAROUND_1508412))
in_hyp_mode ? "" : (cpus_have_final_cap(ARM64_KVM_HVHE) ?
cpus_have_final_cap(ARM64_HAS_NESTED_VIRT) ? "+NV2": "");
r = cpus_have_final_cap(ARM64_HAS_32BIT_EL1);
r = cpus_have_final_cap(ARM64_HAS_NESTED_VIRT);
r = cpus_have_final_cap(ARM64_HAS_HCR_NV1);
r = cpus_have_final_cap(ARM64_HAS_RAS_EXTN);
if (cpus_have_final_cap(ARM64_HAS_LSE_ATOMICS))
if (cpus_have_final_cap(ARM64_HAS_TCR2)) {
if (cpus_have_final_cap(ARM64_HAS_S1PIE)) {
if (cpus_have_final_cap(ARM64_HAS_TCR2)) {
if (cpus_have_final_cap(ARM64_HAS_S1PIE)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_AMPERE_AC03_CPU_38))
if (!cpus_have_final_cap(ARM64_HAS_FGT))
if (!cpus_have_final_cap(ARM64_HAS_FGT2))
if (!cpus_have_final_cap(ARM64_HAS_FGT))
events->exception.serror_has_esr = cpus_have_final_cap(ARM64_HAS_RAS_EXTN);
if (!cpus_have_final_cap(ARM64_HAS_RAS_EXTN) && has_esr)
if (cpus_have_final_cap(ARM64_WORKAROUND_834220) &&
if (!cpus_have_final_cap(ARM64_SVE))
if (!cpus_have_final_cap(ARM64_SME))
if (cpus_have_final_cap(ARM64_SVE))
if (cpus_have_final_cap(ARM64_SME))
if (!cpus_have_final_cap(ARM64_HAS_FGT))
if (!cpus_have_final_cap(ARM64_HAS_FGT2))
if (!cpus_have_final_cap(ARM64_HAS_FGT))
if (!cpus_have_final_cap(ARM64_HAS_FGT2))
if (cpus_have_final_cap(ARM64_HAS_HCX)) {
if (cpus_have_final_cap(ARM64_HAS_HCX))
if (cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM))
if (cpus_have_final_cap(ARM64_HAS_RAS_EXTN) && (hcr & HCR_VSE)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM) &&
if (cpus_have_final_cap(ARM64_WORKAROUND_AMPERE_AC03_CPU_38) &&
if (cpus_have_final_cap(ARM64_WORKAROUND_2077057) &&
if (!cpus_have_final_cap(ARM64_HAS_RAS_EXTN))
if (!cpus_have_final_cap(ARM64_HAS_SCTLR2))
if (!cpus_have_final_cap(ARM64_HAS_RAS_EXTN))
!cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT) &&
if (!cpus_have_final_cap(ARM64_HAS_RAS_EXTN))
if (!cpus_have_final_cap(ARM64_HAS_S1PIE))
if (!cpus_have_final_cap(ARM64_HAS_TCR2))
if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
if (cpus_have_final_cap(ARM64_HAS_RAS_EXTN)) {
if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
if (cpus_have_final_cap(ARM64_HAS_EVT) &&
!cpus_have_final_cap(ARM64_MISMATCHED_CACHE_TYPE) &&
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
return (cpus_have_final_cap(ARM64_HAS_ADDRESS_AUTH) ||
cpus_have_final_cap(ARM64_HAS_GENERIC_AUTH)) &&
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
need_flush = !cpus_have_final_cap(ARM64_HAS_STAGE2_FWB);
if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
if (!cpus_have_final_cap(ARM64_KVM_HVHE))
if (cpus_have_final_cap(ARM64_KVM_HVHE)) {
if (cpus_have_final_cap(ARM64_KVM_HVHE)) {
if (!cpus_have_final_cap(ARM64_WORKAROUND_AMPERE_AC03_CPU_38))
if (!cpus_have_final_cap(ARM64_HAS_XNX) && px != ux)
return system_supports_tlb_range() && cpus_have_final_cap(ARM64_HAS_STAGE2_FWB);
if (cpus_have_final_cap(ARM64_HAS_GICV5_CPUIF))
if (!cpus_have_final_cap(ARM64_HAS_GICV5_CPUIF))
if (!cpus_have_final_cap(ARM64_WORKAROUND_PMUV3_IMPDEF_TRAPS))
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
if (exec_fault || cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
} else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC)) {
if (!cpus_have_final_cap(ARM64_HAS_RAS_EXTN))
else if (!cpus_have_final_cap(ARM64_HAS_FGT))
!cpus_have_final_cap(ARM64_HAS_HCR_NV1))
if (cpus_have_final_cap(ARM64_WORKAROUND_PMUV3_IMPDEF_TRAPS))
if (cpus_have_final_cap(ARM64_WORKAROUND_PMUV3_IMPDEF_TRAPS))
if (!cpus_have_final_cap(ARM64_HAS_WFXT) ||
if (!(cpus_have_final_cap(ARM64_HAS_RASV1P1_EXTN) &&
if (!cpus_have_final_cap(ARM64_HAS_HCR_NV1))
if (!cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
if (cpus_have_final_cap(ARM64_HAS_RAS_EXTN)) {
if (cpus_have_final_cap(ARM64_HAS_STAGE2_FWB))
if (cpus_have_final_cap(ARM64_HAS_EVT) &&
!cpus_have_final_cap(ARM64_MISMATCHED_CACHE_TYPE) &&
if (cpus_have_final_cap(ARM64_HAS_GICV5_LEGACY))
if (!cpus_have_final_cap(ARM64_HAS_ICH_HCR_EL2_TDIR) ||
if (!cpus_have_final_cap(ARM64_HAS_GICV5_LEGACY))
return (cpus_have_final_cap(ARM64_HAS_ICH_HCR_EL2_TDIR) &&
return cpus_have_final_cap(ARM64_HAS_GICV5_CPUIF) &&
if (cpus_have_final_cap(ARM64_HAS_ECV) && divider > 15) {
return (has_vhe() && cpus_have_final_cap(ARM64_HAS_ECV_CNTPOFF));