Patch "KVM: arm64: Hide system instruction access to Trace registers" has been added to the 5.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    KVM: arm64: Hide system instruction access to Trace registers

to the 5.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     kvm-arm64-hide-system-instruction-access-to-trace-re.patch
and it can be found in the queue-5.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 345d2c9750126a0afbd46b3c559f4a94ee7e4659
Author: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
Date:   Tue Mar 23 12:06:29 2021 +0000

    KVM: arm64: Hide system instruction access to Trace registers
    
    [ Upstream commit 1d676673d665fd2162e7e466dcfbe5373bfdb73e ]
    
    Currently we advertise the ID_AA6DFR0_EL1.TRACEVER for the guest,
    when the trace register accesses are trapped (CPTR_EL2.TTA == 1).
    So, the guest will get an undefined instruction, if trusts the
    ID registers and access one of the trace registers.
    Lets be nice to the guest and hide the feature to avoid
    unexpected behavior.
    
    Even though this can be done at KVM sysreg emulation layer,
    we do this by removing the TRACEVER from the sanitised feature
    register field. This is fine as long as the ETM drivers
    can handle the individual trace units separately, even
    when there are differences among the CPUs.
    
    Cc: Will Deacon <will@xxxxxxxxxx>
    Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
    Cc: Mark Rutland <mark.rutland@xxxxxxx>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
    Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20210323120647.454211-2-suzuki.poulose@xxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index b1f7bfadab9f..be6014fe5c3e 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -380,7 +380,6 @@ static const struct arm64_ftr_bits ftr_id_aa64dfr0[] = {
 	 * of support.
 	 */
 	S_ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_EXACT, ID_AA64DFR0_PMUVER_SHIFT, 4, 0),
-	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_EXACT, ID_AA64DFR0_TRACEVER_SHIFT, 4, 0),
 	ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_EXACT, ID_AA64DFR0_DEBUGVER_SHIFT, 4, 0x6),
 	ARM64_FTR_END,
 };



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux