Skip to content

Commit c120ec1

Browse files
committed
Merge tag 'x86-urgent-2020-10-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar: "Two fixes: - Fix a (hopefully final) IRQ state tracking bug vs MCE handling - Fix a documentation link" * tag 'x86-urgent-2020-10-11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: Documentation/x86: Fix incorrect references to zero-page.txt x86/mce: Use idtentry_nmi_enter/exit()
2 parents aa5c3a2 + 0c76898 commit c120ec1

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

Documentation/x86/boot.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,8 +1342,8 @@ follow::
13421342

13431343
In addition to read/modify/write the setup header of the struct
13441344
boot_params as that of 16-bit boot protocol, the boot loader should
1345-
also fill the additional fields of the struct boot_params as that
1346-
described in zero-page.txt.
1345+
also fill the additional fields of the struct boot_params as
1346+
described in chapter :doc:`zero-page`.
13471347

13481348
After setting up the struct boot_params, the boot loader can load the
13491349
32/64-bit kernel in the same way as that of 16-bit boot protocol.
@@ -1379,7 +1379,7 @@ can be calculated as follows::
13791379
In addition to read/modify/write the setup header of the struct
13801380
boot_params as that of 16-bit boot protocol, the boot loader should
13811381
also fill the additional fields of the struct boot_params as described
1382-
in zero-page.txt.
1382+
in chapter :doc:`zero-page`.
13831383

13841384
After setting up the struct boot_params, the boot loader can load
13851385
64-bit kernel in the same way as that of 16-bit boot protocol, but

arch/x86/kernel/cpu/mce/core.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,6 +1904,8 @@ void (*machine_check_vector)(struct pt_regs *) = unexpected_machine_check;
19041904

19051905
static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
19061906
{
1907+
bool irq_state;
1908+
19071909
WARN_ON_ONCE(user_mode(regs));
19081910

19091911
/*
@@ -1914,7 +1916,7 @@ static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
19141916
mce_check_crashing_cpu())
19151917
return;
19161918

1917-
nmi_enter();
1919+
irq_state = idtentry_enter_nmi(regs);
19181920
/*
19191921
* The call targets are marked noinstr, but objtool can't figure
19201922
* that out because it's an indirect call. Annotate it.
@@ -1925,7 +1927,7 @@ static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
19251927
if (regs->flags & X86_EFLAGS_IF)
19261928
trace_hardirqs_on_prepare();
19271929
instrumentation_end();
1928-
nmi_exit();
1930+
idtentry_exit_nmi(regs, irq_state);
19291931
}
19301932

19311933
static __always_inline void exc_machine_check_user(struct pt_regs *regs)

0 commit comments

Comments
 (0)