Merge tag 'powerpc-6.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Aug 2022 23:38:17 +0000 (16:38 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Aug 2022 23:38:17 +0000 (16:38 -0700)
Pull powerpc updates from Michael Ellerman:

 - Add support for syscall stack randomization

 - Add support for atomic operations to the 32 & 64-bit BPF JIT

 - Full support for KASAN on 64-bit Book3E

 - Add a watchdog driver for the new PowerVM hypervisor watchdog

 - Add a number of new selftests for the Power10 PMU support

 - Add a driver for the PowerVM Platform KeyStore

 - Increase the NMI watchdog timeout during live partition migration, to
   avoid timeouts due to increased memory access latency

 - Add support for using the 'linux,pci-domain' device tree property for
   PCI domain assignment

 - Many other small features and fixes

Thanks to Alexey Kardashevskiy, Andy Shevchenko, Arnd Bergmann, Athira
Rajeev, Bagas Sanjaya, Christophe Leroy, Erhard Furtner, Fabiano Rosas,
Greg Kroah-Hartman, Greg Kurz, Haowen Bai, Hari Bathini, Jason A.
Donenfeld, Jason Wang, Jiang Jian, Joel Stanley, Juerg Haefliger, Kajol
Jain, Kees Cook, Laurent Dufour, Madhavan Srinivasan, Masahiro Yamada,
Maxime Bizon, Miaoqian Lin, Murilo Opsfelder Araújo, Nathan Lynch,
Naveen N.  Rao, Nayna Jain, Nicholas Piggin, Ning Qiang, Pali Rohár,
Petr Mladek, Rashmica Gupta, Sachin Sant, Scott Cheloha, Segher
Boessenkool, Stephen Rothwell, Uwe Kleine-König, Wolfram Sang, Xiu
Jianfeng, and Zhouyi Zhou.

* tag 'powerpc-6.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (191 commits)
  powerpc/64e: Fix kexec build error
  EDAC/ppc_4xx: Include required of_irq header directly
  powerpc/pci: Fix PHB numbering when using opal-phbid
  powerpc/64: Init jump labels before parse_early_param()
  selftests/powerpc: Avoid GCC 12 uninitialised variable warning
  powerpc/cell/axon_msi: Fix refcount leak in setup_msi_msg_address
  powerpc/xive: Fix refcount leak in xive_get_max_prio
  powerpc/spufs: Fix refcount leak in spufs_init_isolated_loader
  powerpc/perf: Include caps feature for power10 DD1 version
  powerpc: add support for syscall stack randomization
  powerpc: Move system_call_exception() to syscall.c
  powerpc/powernv: rename remaining rng powernv_ functions to pnv_
  powerpc/powernv/kvm: Use darn for H_RANDOM on Power9
  powerpc/powernv: Avoid crashing if rng is NULL
  selftests/powerpc: Fix matrix multiply assist test
  powerpc/signal: Update comment for clarity
  powerpc: make facility_unavailable_exception 64s
  powerpc/platforms/83xx/suspend: Remove write-only global variable
  powerpc/platforms/83xx/suspend: Prevent unloading the driver
  powerpc/platforms/83xx/suspend: Reorder to get rid of a forward declaration
  ...

17 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
Documentation/admin-guide/sysctl/kernel.rst
MAINTAINERS
arch/powerpc/Kconfig
arch/powerpc/include/asm/archrandom.h
arch/powerpc/include/asm/io.h
arch/powerpc/include/asm/kexec.h
arch/powerpc/include/asm/machdep.h
arch/powerpc/include/asm/pci.h
arch/powerpc/include/asm/uaccess.h
arch/powerpc/kernel/irq.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/platforms/powernv/Kconfig
arch/powerpc/platforms/pseries/Kconfig
drivers/watchdog/Kconfig
kernel/watchdog.c
scripts/remove-stale-files

diff --cc MAINTAINERS
Simple merge
index af612d4c4bccc650277d3d4711a994f16e2fb309,2daeaab21240e97c494b3e13a01caa14a10c5bec..4c466acdc70d4cbe2d94271f9051c4e73868c863
@@@ -253,9 -256,9 +255,10 @@@ config PP
        select IOMMU_HELPER                     if PPC64
        select IRQ_DOMAIN
        select IRQ_FORCED_THREADING
+       select KASAN_VMALLOC                    if KASAN && MODULES
        select MMU_GATHER_PAGE_SIZE
        select MMU_GATHER_RCU_TABLE_FREE
 +      select MMU_GATHER_MERGE_VMAS
        select MODULES_USE_ELF_RELA
        select NEED_DMA_MAP_STATE               if PPC64 || NOT_COHERENT_CACHE
        select NEED_PER_CPU_EMBED_FIRST_CHUNK   if PPC64
index 0e365c5b23969d5d390053226d8383c4720250ca,3af27bb84a3d8875a3a32925f7dd083d0d5997e3..564859e6a807ce0fb4bbc8bb403893873bed9a3a
@@@ -2,27 -2,43 +2,22 @@@
  #ifndef _ASM_POWERPC_ARCHRANDOM_H
  #define _ASM_POWERPC_ARCHRANDOM_H
  
 -#ifdef CONFIG_ARCH_RANDOM
 -
  #include <asm/machdep.h>
  
 -static inline bool __must_check arch_get_random_long(unsigned long *v)
 -{
 -      return false;
 -}
 -
 -static inline bool __must_check arch_get_random_int(unsigned int *v)
 -{
 -      return false;
 -}
 -
 -static inline bool __must_check arch_get_random_seed_long(unsigned long *v)
 +static inline size_t __must_check arch_get_random_longs(unsigned long *v, size_t max_longs)
  {
 -      if (ppc_md.get_random_seed)
 -              return ppc_md.get_random_seed(v);
 -
 -      return false;
 +      return 0;
  }
  
 -static inline bool __must_check arch_get_random_seed_int(unsigned int *v)
 +static inline size_t __must_check arch_get_random_seed_longs(unsigned long *v, size_t max_longs)
  {
 -      unsigned long val;
 -      bool rc;
 -
 -      rc = arch_get_random_seed_long(&val);
 -      if (rc)
 -              *v = val;
 -
 -      return rc;
 +      if (max_longs && ppc_md.get_random_seed && ppc_md.get_random_seed(v))
 +              return 1;
 +      return 0;
  }
 -#endif /* CONFIG_ARCH_RANDOM */
  
  #ifdef CONFIG_PPC_POWERNV
- int powernv_hwrng_present(void);
- int powernv_get_random_long(unsigned long *v);
- int powernv_get_random_real_mode(unsigned long *v);
- #else
- static inline int powernv_hwrng_present(void) { return 0; }
- static inline int powernv_get_random_real_mode(unsigned long *v) { return 0; }
+ int pnv_get_random_long(unsigned long *v);
  #endif
  
  #endif /* _ASM_POWERPC_ARCHRANDOM_H */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0822a274a549c8d19126bdebc48d2e0d93dedbe1,d50a18888bd918958b7b14ee6ba912479c065fe7..0f17268c1f0bbdcb6126eb2108cc0a7c30fbbbaa
@@@ -630,33 -217,10 +218,11 @@@ static __always_inline void call_do_sof
                   "r11", "r12"
        );
  }
 +#endif
  
- static __always_inline void call_do_irq(struct pt_regs *regs, void *sp)
- {
-       register unsigned long r3 asm("r3") = (unsigned long)regs;
-       /* Temporarily switch r1 to sp, call __do_irq() then restore r1. */
-       asm volatile (
-                PPC_STLU "     %%r1, %[offset](%[sp])  ;"
-               "mr             %%r1, %[sp]             ;"
-               "bl             %[callee]               ;"
-                PPC_LL "       %%r1, 0(%%r1)           ;"
-                : // Outputs
-                  "+r" (r3)
-                : // Inputs
-                  [sp] "b" (sp), [offset] "i" (THREAD_SIZE - STACK_FRAME_OVERHEAD),
-                  [callee] "i" (__do_irq)
-                : // Clobbers
-                  "lr", "xer", "ctr", "memory", "cr0", "cr1", "cr5", "cr6",
-                  "cr7", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
-                  "r11", "r12"
-       );
- }
  DEFINE_STATIC_CALL_RET0(ppc_get_irq, *ppc_md.get_irq);
  
void __do_irq(struct pt_regs *regs)
static void __do_irq(struct pt_regs *regs, unsigned long oldsp)
  {
        unsigned int irq;
  
Simple merge
Simple merge
Simple merge
Simple merge