]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Merge tag 's390-6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 30 Sep 2025 02:14:25 +0000 (19:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 30 Sep 2025 02:14:25 +0000 (19:14 -0700)
Pull s390 updates from Alexander Gordeev:

 - Refactor SCLP memory hotplug code

 - Introduce common boot_panic() decompressor helper macro and use it to
   get rid of nearly few identical implementations

 - Take into account additional key generation flags and forward it to
   the ep11 implementation. With that allow users to modify the key
   generation process, e.g. provide valid combinations of XCP_BLOB_*
   flags

 - Replace kmalloc() + copy_from_user() with memdup_user_nul() in s390
   debug facility and HMC driver

 - Add DAX support for DCSS memory block devices

 - Make the compiler statement attribute "assume" available with a new
   __assume macro

 - Rework ffs() and fls() family bitops functions, including source code
   improvements and generated code optimizations. Use the newly
   introduced __assume macro for that

 - Enable additional network features in default configurations

 - Use __GFP_ACCOUNT flag for user page table allocations to add missing
   kmemcg accounting

 - Add WQ_PERCPU flag to explicitly request the use of the per-CPU
   workqueue for 3590 tape driver

 - Switch power reading to the per-CPU and the Hiperdispatch to the
   default workqueue

 - Add memory allocation profiling hooks to allow better profiling data
   and the /proc/allocinfo output similar to other architectures

* tag 's390-6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (21 commits)
  s390/mm: Add memory allocation profiling hooks
  s390: Replace use of system_wq with system_dfl_wq
  s390/diag324: Replace use of system_wq with system_percpu_wq
  s390/tape: Add WQ_PERCPU to alloc_workqueue users
  s390/bitops: Switch to generic ffs() if supported by compiler
  s390/bitops: Switch to generic fls(), fls64(), etc.
  s390/mm: Use __GFP_ACCOUNT for user page table allocations
  s390/configs: Enable additional network features
  s390/bitops: Cleanup __flogr()
  s390/bitops: Use __assume() for __flogr() inline assembly return value
  compiler_types: Add __assume macro
  s390/bitops: Limit return value range of __flogr()
  s390/dcssblk: Add DAX support
  s390/hmcdrv: Replace kmalloc() + copy_from_user() with memdup_user_nul()
  s390/debug: Replace kmalloc() + copy_from_user() with memdup_user_nul()
  s390/pkey: Forward keygenflags to ep11_unwrapkey
  s390/boot: Add common boot_panic() code
  s390/bitops: Optimize inlining
  s390/bitops: Slightly optimize ffs() and fls64()
  s390/sclp: Move memory hotplug code for better modularity
  ...

1  2 
arch/s390/configs/debug_defconfig
arch/s390/configs/defconfig
arch/s390/include/asm/bitops.h
init/Kconfig

Simple merge
Simple merge
index fbcc3e1cc7769e5d46d9d5687f116656d9ac1659,1564dd3a5a826a17cc5af24db7408b36f950c698..ec945fb60c021f992ccace8cf4746b2f0c4bdefc
@@@ -191,58 -189,26 +189,26 @@@ static __always_inline __attribute_cons
   * This is defined the same way as the libc and
   * compiler builtin ffs routines (man ffs).
   */
- static inline __attribute_const__ int ffs(int word)
 -static __always_inline __flatten int ffs(int word)
++static __always_inline __flatten __attribute_const__ int ffs(int word)
  {
-       unsigned long mask = 2 * BITS_PER_LONG - 1;
        unsigned int val = (unsigned int)word;
  
-       return (1 + (__flogr(-val & val) ^ (BITS_PER_LONG - 1))) & mask;
- }
- /**
-  * __fls - find last (most-significant) set bit in a long word
-  * @word: the word to search
-  *
-  * Undefined if no set bit exists, so code should check against 0 first.
-  */
- static inline __attribute_const__ unsigned long __fls(unsigned long word)
- {
-       return __flogr(word) ^ (BITS_PER_LONG - 1);
+       return BITS_PER_LONG - __flogr(-val & val);
  }
  
- /**
-  * fls64 - find last set bit in a 64-bit word
-  * @word: the word to search
-  *
-  * This is defined in a similar way as the libc and compiler builtin
-  * ffsll, but returns the position of the most significant set bit.
-  *
-  * fls64(value) returns 0 if value is 0 or the position of the last
-  * set bit if value is nonzero. The last (most significant) bit is
-  * at position 64.
-  */
- static inline __attribute_const__ int fls64(unsigned long word)
- {
-       unsigned long mask = 2 * BITS_PER_LONG - 1;
+ #else /* CONFIG_CC_HAS_BUILTIN_FFS */
  
-       return (1 + (__flogr(word) ^ (BITS_PER_LONG - 1))) & mask;
- }
+ #include <asm-generic/bitops/builtin-ffs.h>
  
- /**
-  * fls - find last (most-significant) bit set
-  * @word: the word to search
-  *
-  * This is defined the same way as ffs.
-  * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
-  */
- static inline __attribute_const__ int fls(unsigned int word)
- {
-       return fls64(word);
- }
+ #endif /* CONFIG_CC_HAS_BUILTIN_FFS */
  
+ #include <asm-generic/bitops/builtin-__ffs.h>
+ #include <asm-generic/bitops/ffz.h>
+ #include <asm-generic/bitops/builtin-__fls.h>
+ #include <asm-generic/bitops/builtin-fls.h>
+ #include <asm-generic/bitops/fls64.h>
  #include <asm/arch_hweight.h>
  #include <asm-generic/bitops/const_hweight.h>
- #include <asm-generic/bitops/ffz.h>
  #include <asm-generic/bitops/sched.h>
  #include <asm-generic/bitops/le.h>
  #include <asm-generic/bitops/ext2-atomic-setbit.h>
diff --cc init/Kconfig
Simple merge