Blame view

mm/init-mm.c 1.29 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  // SPDX-License-Identifier: GPL-2.0
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
2
3
4
5
6
7
  #include <linux/mm_types.h>
  #include <linux/rbtree.h>
  #include <linux/rwsem.h>
  #include <linux/spinlock.h>
  #include <linux/list.h>
  #include <linux/cpumask.h>
a2ae8c055   Ben Dooks (Codethink)   mm/init-mm.c: inc...
8
  #include <linux/mman.h>
65fddcfca   Mike Rapoport   mm: reorder inclu...
9
  #include <linux/pgtable.h>
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
10

60063497a   Arun Sharma   atomic: use <linu...
11
  #include <linux/atomic.h>
bfedb5892   Eric W. Biederman   mm: Add a user_ns...
12
  #include <linux/user_namespace.h>
a1b200e27   Heiko Carstens   mm: provide init_...
13
14
15
16
17
  #include <asm/mmu.h>
  
  #ifndef INIT_MM_CONTEXT
  #define INIT_MM_CONTEXT(name)
  #endif
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
18

c1a2f7f0c   Rik van Riel   mm: Allocate the ...
19
20
21
22
23
24
25
26
27
28
  /*
   * For dynamically allocated mm_structs, there is a dynamically sized cpumask
   * at the end of the structure, the size of which depends on the maximum CPU
   * number the system can see. That way we allocate only as much memory for
   * mm_cpumask() as needed for the hundreds, or thousands of processes that
   * a system typically runs.
   *
   * Since there is only one init_mm in the entire system, keep it simple
   * and size this cpu_bitmask to NR_CPUS.
   */
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
29
30
31
32
33
  struct mm_struct init_mm = {
  	.mm_rb		= RB_ROOT,
  	.pgd		= swapper_pg_dir,
  	.mm_users	= ATOMIC_INIT(2),
  	.mm_count	= ATOMIC_INIT(1),
537946556   Jason Gunthorpe   mm/gup: prevent g...
34
  	.write_protect_seq = SEQCNT_ZERO(init_mm.write_protect_seq),
14c3656b7   Michel Lespinasse   mmap locking API:...
35
  	MMAP_LOCK_INITIALIZER(init_mm)
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
36
  	.page_table_lock =  __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock),
88aa7cc68   Yang Shi   mm: introduce arg...
37
  	.arg_lock	=  __SPIN_LOCK_UNLOCKED(init_mm.arg_lock),
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
38
  	.mmlist		= LIST_HEAD_INIT(init_mm.mmlist),
bfedb5892   Eric W. Biederman   mm: Add a user_ns...
39
  	.user_ns	= &init_user_ns,
2286bf4e4   Mike Rapoport   mm: use CPU_BITS_...
40
  	.cpu_bitmap	= CPU_BITS_NONE,
a1b200e27   Heiko Carstens   mm: provide init_...
41
  	INIT_MM_CONTEXT(init_mm)
bb1f17b03   Alexey Dobriyan   mm: consolidate i...
42
  };