Patch "x86/mce/inject: Clear test status value" has been added to the 6.1-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

    x86/mce/inject: Clear test status value

to the 6.1-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:
     x86-mce-inject-clear-test-status-value.patch
and it can be found in the queue-6.1 subdirectory.

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



commit c669f11bcad386a81ceb69fc5e1ad6cada0cc51b
Author: Yazen Ghannam <yazen.ghannam@xxxxxxx>
Date:   Sat Nov 18 13:32:29 2023 -0600

    x86/mce/inject: Clear test status value
    
    [ Upstream commit 6175b407756b22e7fdc771181b7d832ebdedef5c ]
    
    AMD systems generally allow MCA "simulation" where MCA registers can be
    written with valid data and the full MCA handling flow can be tested by
    software.
    
    However, the platform on Scalable MCA systems, can prevent software from
    writing data to the MCA registers. There is no architectural way to
    determine this configuration. Therefore, the MCE injection module will
    check for this behavior by writing and reading back a test status value.
    This is done during module init, and the check can run on any CPU with
    any valid MCA bank.
    
    If MCA_STATUS writes are ignored by the platform, then there are no side
    effects on the hardware state.
    
    If the writes are not ignored, then the test status value will remain in
    the hardware MCA_STATUS register. It is likely that the value will not
    be overwritten by hardware or software, since the tested CPU and bank
    are arbitrary. Therefore, the user may see a spurious, synthetic MCA
    error reported whenever MCA is polled for this CPU.
    
    Clear the test value immediately after writing it. It is very unlikely
    that a valid MCA error is logged by hardware during the test. Errors
    that cause an #MC won't be affected.
    
    Fixes: 891e465a1bd8 ("x86/mce: Check whether writes to MCA_STATUS are getting ignored")
    Signed-off-by: Yazen Ghannam <yazen.ghannam@xxxxxxx>
    Signed-off-by: Borislav Petkov (AMD) <bp@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20231118193248.1296798-2-yazen.ghannam@xxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/x86/kernel/cpu/mce/inject.c b/arch/x86/kernel/cpu/mce/inject.c
index 12cf2e7ca33c..87c15ab89651 100644
--- a/arch/x86/kernel/cpu/mce/inject.c
+++ b/arch/x86/kernel/cpu/mce/inject.c
@@ -747,6 +747,7 @@ static void check_hw_inj_possible(void)
 
 		wrmsrl_safe(mca_msr_reg(bank, MCA_STATUS), status);
 		rdmsrl_safe(mca_msr_reg(bank, MCA_STATUS), &status);
+		wrmsrl_safe(mca_msr_reg(bank, MCA_STATUS), 0);
 
 		if (!status) {
 			hw_injection_possible = false;




[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