]> Git Repo - linux.git/commitdiff
KVM: arm64: Honor trap routing for FPMR
authorMarc Zyngier <[email protected]>
Tue, 20 Aug 2024 13:17:59 +0000 (14:17 +0100)
committerMarc Zyngier <[email protected]>
Tue, 27 Aug 2024 06:59:27 +0000 (07:59 +0100)
HCRX_EL2.EnFPM controls the trapping of FPMR (as well as the validity
of any FP8 instruction, but we don't really care about this last part).

Describe the trap bit so that the exception can be reinjected in a
NV guest.

Reviewed-by: Mark Brown <[email protected]>
Tested-by: Mark Brown <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Marc Zyngier <[email protected]>
arch/arm64/kvm/emulate-nested.c

index 05166eccea0a633126f2ffbc67cc86aa8a68baa5..ee280239f14f4216f1157df35cd040a5815d7ad4 100644 (file)
@@ -83,6 +83,7 @@ enum cgt_group_id {
        CGT_CPTR_TAM,
        CGT_CPTR_TCPAC,
 
+       CGT_HCRX_EnFPM,
        CGT_HCRX_TCR2En,
 
        /*
@@ -372,6 +373,12 @@ static const struct trap_bits coarse_trap_bits[] = {
                .mask           = CPTR_EL2_TCPAC,
                .behaviour      = BEHAVE_FORWARD_ANY,
        },
+       [CGT_HCRX_EnFPM] = {
+               .index          = HCRX_EL2,
+               .value          = 0,
+               .mask           = HCRX_EL2_EnFPM,
+               .behaviour      = BEHAVE_FORWARD_ANY,
+       },
        [CGT_HCRX_TCR2En] = {
                .index          = HCRX_EL2,
                .value          = 0,
@@ -1108,6 +1115,7 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
        SR_TRAP(SYS_CNTP_CTL_EL0,       CGT_CNTHCTL_EL1PTEN),
        SR_TRAP(SYS_CNTPCT_EL0,         CGT_CNTHCTL_EL1PCTEN),
        SR_TRAP(SYS_CNTPCTSS_EL0,       CGT_CNTHCTL_EL1PCTEN),
+       SR_TRAP(SYS_FPMR,               CGT_HCRX_EnFPM),
 };
 
 static DEFINE_XARRAY(sr_forward_xa);
This page took 0.061788 seconds and 4 git commands to generate.