[GIT,PULL] x86/irq change for v6.7

Message ID ZT0QC/LQKl4xNji/@gmail.com
State New
Headers
Series [GIT,PULL] x86/irq change for v6.7 |

Commit Message

Ingo Molnar Oct. 28, 2023, 1:43 p.m. UTC
  Linus,

Please pull the latest x86/irq git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-irq-2023-10-28

   # HEAD: f44075ecafb726830e63d33fbca29413149eeeb8 x86/nmi: Fix out-of-order NMI nesting checks & false positive warning

Fix out-of-order NMI nesting checks resulting in false positive warnings.

 Thanks,

	Ingo

------------------>
Paul E. McKenney (1):
      x86/nmi: Fix out-of-order NMI nesting checks & false positive warning


 arch/x86/kernel/nmi.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
  

Comments

pr-tracker-bot@kernel.org Oct. 31, 2023, 2:12 a.m. UTC | #1
The pull request you sent on Sat, 28 Oct 2023 15:43:39 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-irq-2023-10-28

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/1641b9b04002c22f616a51a164c04b7f679d241f

Thank you!
  

Patch

diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
index a0c551846b35..4766b6bed443 100644
--- a/arch/x86/kernel/nmi.c
+++ b/arch/x86/kernel/nmi.c
@@ -507,12 +507,13 @@  DEFINE_IDTENTRY_RAW(exc_nmi)
 	}
 	this_cpu_write(nmi_state, NMI_EXECUTING);
 	this_cpu_write(nmi_cr2, read_cr2());
+
+nmi_restart:
 	if (IS_ENABLED(CONFIG_NMI_CHECK_CPU)) {
 		WRITE_ONCE(nsp->idt_seq, nsp->idt_seq + 1);
 		WARN_ON_ONCE(!(nsp->idt_seq & 0x1));
 		WRITE_ONCE(nsp->recv_jiffies, jiffies);
 	}
-nmi_restart:
 
 	/*
 	 * Needs to happen before DR7 is accessed, because the hypervisor can
@@ -548,16 +549,16 @@  DEFINE_IDTENTRY_RAW(exc_nmi)
 
 	if (unlikely(this_cpu_read(nmi_cr2) != read_cr2()))
 		write_cr2(this_cpu_read(nmi_cr2));
-	if (this_cpu_dec_return(nmi_state))
-		goto nmi_restart;
-
-	if (user_mode(regs))
-		mds_user_clear_cpu_buffers();
 	if (IS_ENABLED(CONFIG_NMI_CHECK_CPU)) {
 		WRITE_ONCE(nsp->idt_seq, nsp->idt_seq + 1);
 		WARN_ON_ONCE(nsp->idt_seq & 0x1);
 		WRITE_ONCE(nsp->recv_jiffies, jiffies);
 	}
+	if (this_cpu_dec_return(nmi_state))
+		goto nmi_restart;
+
+	if (user_mode(regs))
+		mds_user_clear_cpu_buffers();
 }
 
 #if IS_ENABLED(CONFIG_KVM_INTEL)