Merge branch 'akpm-current/current'
authorStephen Rothwell <sfr@canb.auug.org.au>
Fri, 8 Feb 2019 09:18:45 +0000 (20:18 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 8 Feb 2019 09:18:45 +0000 (20:18 +1100)
45 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
Documentation/vm/slub.rst
arch/arm/mm/dma-mapping.c
arch/arm64/Kconfig
arch/arm64/mm/init.c
arch/m68k/configs/amcore_defconfig
arch/powerpc/include/asm/book3s/64/pgtable.h
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/numa.c
arch/powerpc/mm/pgtable-book3s64.c
arch/powerpc/platforms/Kconfig.cputype
arch/powerpc/platforms/powernv/opal.c
arch/s390/Kconfig
arch/s390/mm/pgtable.c
arch/x86/Kconfig
drivers/block/mtip32xx/mtip32xx.c
drivers/iommu/intel-iommu.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
fs/Kconfig
fs/afs/super.c
fs/btrfs/disk-io.c
fs/fuse/inode.c
fs/hugetlbfs/inode.c
fs/pipe.c
fs/proc/base.c
fs/proc/internal.h
fs/proc/root.c
include/linux/cgroup-defs.h
include/linux/device.h
include/linux/kernfs.h
include/linux/sched.h
init/Kconfig
init/init_task.c
ipc/sem.c
ipc/util.h
kernel/cgroup/cgroup.c
kernel/sched/core.c
kernel/sched/fair.c
kernel/signal.c
kernel/sys.c
kernel/sysctl.c
kernel/workqueue.c
lib/Kconfig.debug
lib/Makefile
scripts/checkpatch.pl

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -401,24 -398,27 +398,49 @@@ void arch_report_meminfo(struct seq_fil
  }
  #endif /* CONFIG_PROC_FS */
  
 +/*
 + * For hash translation mode, we use the deposited table to store hash slot
 + * information and they are stored at PTRS_PER_PMD offset from related pmd
 + * location. Hence a pmd move requires deposit and withdraw.
 + *
 + * For radix translation with split pmd ptl, we store the deposited table in the
 + * pmd page. Hence if we have different pmd page we need to withdraw during pmd
 + * move.
 + *
 + * With hash we use deposited table always irrespective of anon or not.
 + * With radix we use deposited table only for anonymous mapping.
 + */
 +int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
 +                         struct spinlock *old_pmd_ptl,
 +                         struct vm_area_struct *vma)
 +{
 +      if (radix_enabled())
 +              return (new_pmd_ptl != old_pmd_ptl) && vma_is_anonymous(vma);
 +
 +      return true;
 +}
++
+ pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr,
+                            pte_t *ptep)
+ {
+       unsigned long pte_val;
+       /*
+        * Clear the _PAGE_PRESENT so that no hardware parallel update is
+        * possible. Also keep the pte_present true so that we don't take
+        * wrong fault.
+        */
+       pte_val = pte_update(vma->vm_mm, addr, ptep, _PAGE_PRESENT, _PAGE_INVALID, 0);
+       return __pte(pte_val);
+ }
+ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
+                            pte_t *ptep, pte_t old_pte, pte_t pte)
+ {
+       if (radix_enabled())
+               return radix__ptep_modify_prot_commit(vma, addr,
+                                                     ptep, old_pte, pte);
+       set_pte_at(vma->vm_mm, addr, ptep, pte);
+ }
Simple merge
Simple merge
@@@ -318,11 -319,13 +319,12 @@@ pte_t ptep_modify_prot_start(struct vm_
        }
        return old;
  }
 -EXPORT_SYMBOL(ptep_modify_prot_start);
  
- void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
-                            pte_t *ptep, pte_t pte)
+ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
+                            pte_t *ptep, pte_t old_pte, pte_t pte)
  {
        pgste_t pgste;
+       struct mm_struct *mm = vma->vm_mm;
  
        if (!MACHINE_HAS_NX)
                pte_val(pte) &= ~_PAGE_NOEXEC;
Simple merge
Simple merge
Simple merge
diff --cc fs/Kconfig
Simple merge
diff --cc fs/afs/super.c
Simple merge
Simple merge
diff --cc fs/fuse/inode.c
Simple merge
Simple merge
diff --cc fs/pipe.c
Simple merge
diff --cc fs/proc/base.c
Simple merge
Simple merge
diff --cc fs/proc/root.c
@@@ -247,9 -154,9 +247,9 @@@ static int proc_root_getattr(const stru
  
  static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry, unsigned int flags)
  {
-       if (!proc_pid_lookup(dir, dentry, flags))
+       if (!proc_pid_lookup(dentry, flags))
                return NULL;
 -      
 +
        return proc_lookup(dir, dentry, flags);
  }
  
Simple merge
Simple merge
@@@ -25,9 -25,8 +25,10 @@@ struct seq_file
  struct vm_area_struct;
  struct super_block;
  struct file_system_type;
- struct kernfs_fs_context;
 +struct fs_context;
 +
+ struct poll_table_struct;
  struct kernfs_open_node;
  struct kernfs_iattrs;
  
@@@ -1411,6 -1423,8 +1425,7 @@@ extern struct pid *cad_pid
  #define PF_UMH                        0x02000000      /* I'm an Usermodehelper process */
  #define PF_NO_SETAFFINITY     0x04000000      /* Userland is not allowed to meddle with cpus_allowed */
  #define PF_MCE_EARLY          0x08000000      /* Early kill for mce process policy */
 -#define PF_MUTEX_TESTER               0x20000000      /* Thread belongs to the rt mutex tester */
+ #define PF_MEMALLOC_NOCMA     0x10000000      /* All allocation request will have _GFP_MOVABLE cleared */
  #define PF_FREEZER_SKIP               0x40000000      /* Freezer should not count it as freezable */
  #define PF_SUSPEND_TASK               0x80000000      /* This thread called freeze_processes() and should not be frozen */
  
diff --cc init/Kconfig
Simple merge
Simple merge
diff --cc ipc/sem.c
Simple merge
diff --cc ipc/util.h
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/signal.c
Simple merge
diff --cc kernel/sys.c
Simple merge
diff --cc kernel/sysctl.c
Simple merge
Simple merge
Simple merge
diff --cc lib/Makefile
Simple merge
Simple merge