Commit 49a0bdb0 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'powerpc-6.2-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull powerpc fixes from Michael Ellerman:

 - Fix interrupt exit race with security mitigation switching.

 - Don't select ARCH_WANTS_NO_INSTR until warnings are fixed.

 - Build fix for CONFIG_NUMA=n.

Thanks to Nicholas Piggin, Randy Dunlap, and Sachin Sant.

* tag 'powerpc-6.2-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
  powerpc/64s/interrupt: Fix interrupt exit race with security mitigation switch
  powerpc/kexec_file: fix implicit decl error
  powerpc: Don't select ARCH_WANTS_NO_INSTR
parents 462a8e08 2ea31e2e
...@@ -163,7 +163,6 @@ config PPC ...@@ -163,7 +163,6 @@ config PPC
select ARCH_WANT_IRQS_OFF_ACTIVATE_MM select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
select ARCH_WANT_LD_ORPHAN_WARN select ARCH_WANT_LD_ORPHAN_WARN
select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx
select ARCH_WANTS_NO_INSTR
select ARCH_WEAK_RELEASE_ACQUIRE select ARCH_WEAK_RELEASE_ACQUIRE
select BINFMT_ELF select BINFMT_ELF
select BUILDTIME_TABLE_SORT select BUILDTIME_TABLE_SORT
......
...@@ -50,16 +50,18 @@ static inline bool exit_must_hard_disable(void) ...@@ -50,16 +50,18 @@ static inline bool exit_must_hard_disable(void)
*/ */
static notrace __always_inline bool prep_irq_for_enabled_exit(bool restartable) static notrace __always_inline bool prep_irq_for_enabled_exit(bool restartable)
{ {
bool must_hard_disable = (exit_must_hard_disable() || !restartable);
/* This must be done with RI=1 because tracing may touch vmaps */ /* This must be done with RI=1 because tracing may touch vmaps */
trace_hardirqs_on(); trace_hardirqs_on();
if (exit_must_hard_disable() || !restartable) if (must_hard_disable)
__hard_EE_RI_disable(); __hard_EE_RI_disable();
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
/* This pattern matches prep_irq_for_idle */ /* This pattern matches prep_irq_for_idle */
if (unlikely(lazy_irq_pending_nocheck())) { if (unlikely(lazy_irq_pending_nocheck())) {
if (exit_must_hard_disable() || !restartable) { if (must_hard_disable) {
local_paca->irq_happened |= PACA_IRQ_HARD_DIS; local_paca->irq_happened |= PACA_IRQ_HARD_DIS;
__hard_RI_enable(); __hard_RI_enable();
} }
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/kexec_ranges.h> #include <asm/kexec_ranges.h>
#include <asm/crashdump-ppc64.h> #include <asm/crashdump-ppc64.h>
#include <asm/mmzone.h>
#include <asm/prom.h> #include <asm/prom.h>
struct umem_info { struct umem_info {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment