]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
Merge tag 's390-6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 29 Nov 2024 18:40:52 +0000 (10:40 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 29 Nov 2024 18:40:52 +0000 (10:40 -0800)
Pull more s390 updates from Heiko Carstens:

 - Add swap entry for hugetlbfs support

 - Add PTE_MARKER support for hugetlbs mappings; this fixes a regression
   (possible page fault loop) which was introduced when support for
   UFFDIO_POISON for hugetlbfs was added

 - Add ARCH_HAS_PREEMPT_LAZY and PREEMPT_DYNAMIC support

 - Mark IRQ entries in entry code, so that stack tracers can filter out
   the non-IRQ parts of stack traces. This fixes stack depot capacity
   limit warnings, since without filtering the number of unique stack
   traces is huge

 - In PCI code fix leak of struct zpci_dev object, and fix potential
   double remove of hotplug slot

 - Fix pagefault_disable() / pagefault_enable() unbalance in
   arch_stack_user_walk_common()

 - A couple of inline assembly optimizations, more cmpxchg() to
   try_cmpxchg() conversions, and removal of usages of xchg() and
   cmpxchg() on one and two byte memory areas

 - Various other small improvements and cleanups

* tag 's390-6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (27 commits)
  Revert "s390/mm: Allow large pages for KASAN shadow mapping"
  s390/spinlock: Use flag output constraint for arch_cmpxchg_niai8()
  s390/spinlock: Use R constraint for arch_load_niai4()
  s390/spinlock: Generate shorter code for arch_spin_unlock()
  s390/spinlock: Remove condition code clobber from arch_spin_unlock()
  s390/spinlock: Use symbolic names in inline assemblies
  s390: Support PREEMPT_DYNAMIC
  s390/pci: Fix potential double remove of hotplug slot
  s390/pci: Fix leak of struct zpci_dev when zpci_add_device() fails
  s390/mm/hugetlbfs: Add missing includes
  s390/mm: Add PTE_MARKER support for hugetlbfs mappings
  s390/mm: Introduce region-third and segment table swap entries
  s390/mm: Introduce region-third and segment table entry present bits
  s390/mm: Rearrange region-third and segment table entry SW bits
  KVM: s390: Increase size of union sca_utility to four bytes
  KVM: s390: Remove one byte cmpxchg() usage
  KVM: s390: Use try_cmpxchg() instead of cmpxchg() loops
  s390/ap: Replace xchg() with WRITE_ONCE()
  s390/mm: Allow large pages for KASAN shadow mapping
  s390: Add ARCH_HAS_PREEMPT_LAZY support
  ...

1  2 
arch/s390/Kconfig
arch/s390/include/asm/hugetlb.h
arch/s390/include/asm/kvm_host.h
arch/s390/include/asm/pgtable.h
arch/s390/kvm/kvm-s390.c
arch/s390/mm/fault.c
arch/s390/mm/gmap.c
arch/s390/mm/hugetlbpage.c
arch/s390/pci/pci.c

Simple merge
index 6f815d4ba0cabbf28dae0744dbc5754e23a9f15e,5bdb35991ecb02d6e500c934c634e87da8955533..a40664b236e912213b46f9596bb2e8aa045a9434
  #define _ASM_S390_HUGETLB_H
  
  #include <linux/pgtable.h>
+ #include <linux/swap.h>
+ #include <linux/swapops.h>
  #include <asm/page.h>
  
 -#define hugetlb_free_pgd_range                        free_pgd_range
  #define hugepages_supported()                 (MACHINE_HAS_EDAT1)
  
 +#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
  void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
                     pte_t *ptep, pte_t pte, unsigned long sz);
  void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
@@@ -75,13 -91,41 +77,13 @@@ static inline int huge_pte_none(pte_t p
        return pte_none(pte);
  }
  
 +#define __HAVE_ARCH_HUGE_PTE_NONE_MOSTLY
  static inline int huge_pte_none_mostly(pte_t pte)
  {
-       return huge_pte_none(pte);
+       return huge_pte_none(pte) || is_pte_marker(pte);
  }
  
 -static inline int huge_pte_write(pte_t pte)
 -{
 -      return pte_write(pte);
 -}
 -
 -static inline int huge_pte_dirty(pte_t pte)
 -{
 -      return pte_dirty(pte);
 -}
 -
 -static inline pte_t huge_pte_mkwrite(pte_t pte)
 -{
 -      return pte_mkwrite_novma(pte);
 -}
 -
 -static inline pte_t huge_pte_mkdirty(pte_t pte)
 -{
 -      return pte_mkdirty(pte);
 -}
 -
 -static inline pte_t huge_pte_wrprotect(pte_t pte)
 -{
 -      return pte_wrprotect(pte);
 -}
 -
 -static inline pte_t huge_pte_modify(pte_t pte, pgprot_t newprot)
 -{
 -      return pte_modify(pte, newprot);
 -}
 -
 +#define __HAVE_ARCH_HUGE_PTE_MKUFFD_WP
  static inline pte_t huge_pte_mkuffd_wp(pte_t pte)
  {
        return pte;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge