diff options
author | Fuad Tabba <tabba@google.com> | 2023-07-24 13:38:25 +0100 |
---|---|---|
committer | Oliver Upton <oliver.upton@linux.dev> | 2023-07-26 17:08:29 +0000 |
commit | 380624d4358b0150804d279c20632555e453bc1f (patch) | |
tree | 9d5aefefdbe9d488d05ce7af9cdf7f9567d8e9bd | |
parent | 45a3681a10ff1732fcd7a177fbf1f9ceeaffd7c9 (diff) | |
download | linux-380624d4358b0150804d279c20632555e453bc1f.tar.gz linux-380624d4358b0150804d279c20632555e453bc1f.tar.bz2 linux-380624d4358b0150804d279c20632555e453bc1f.zip |
KVM: arm64: Disable SME traps for (h)VHE at setup
Ensure that SME traps are disabled for (h)VHE when setting up
EL2, as they are for nVHE.
Signed-off-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230724123829.2929609-5-tabba@google.com
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
-rw-r--r-- | arch/arm64/include/asm/el2_setup.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/el2_setup.h b/arch/arm64/include/asm/el2_setup.h index 41c5b02f38c5..b7afaa026842 100644 --- a/arch/arm64/include/asm/el2_setup.h +++ b/arch/arm64/include/asm/el2_setup.h @@ -293,9 +293,19 @@ check_override id_aa64pfr1, ID_AA64PFR1_EL1_SME_SHIFT, .Linit_sme_\@, .Lskip_sme_\@, x1, x2 .Linit_sme_\@: /* SME register access and priority mapping */ + __check_hvhe .Lcptr_nvhe_sme_\@, x1 + + // (h)VHE case + mrs x0, cpacr_el1 // Disable SME traps + orr x0, x0, #(CPACR_EL1_SMEN_EL0EN | CPACR_EL1_SMEN_EL1EN) + msr cpacr_el1, x0 + b .Lskip_set_cptr_sme_\@ + +.Lcptr_nvhe_sme_\@: // nVHE case mrs x0, cptr_el2 // Disable SME traps bic x0, x0, #CPTR_EL2_TSM msr cptr_el2, x0 +.Lskip_set_cptr_sme_\@: isb mrs x1, sctlr_el2 |