Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78a45c6f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (second patch-bomb from Andrew)

Merge second patchbomb from Andrew Morton:
 - the rest of MM
 - misc fs fixes
 - add execveat() syscall
 - new ratelimit feature for fault-injection
 - decompressor updates
 - ipc/ updates
 - fallocate feature creep
 - fsnotify cleanups
 - a few other misc things

* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (99 commits)
  cgroups: Documentation: fix trivial typos and wrong paragraph numberings
  parisc: percpu: update comments referring to __get_cpu_var
  percpu: update local_ops.txt to reflect this_cpu operations
  percpu: remove __get_cpu_var and __raw_get_cpu_var macros
  fsnotify: remove destroy_list from fsnotify_mark
  fsnotify: unify inode and mount marks handling
  fallocate: create FAN_MODIFY and IN_MODIFY events
  mm/cma: make kmemleak ignore CMA regions
  slub: fix cpuset check in get_any_partial
  slab: fix cpuset check in fallback_alloc
  shmdt: use i_size_read() instead of ->i_size
  ipc/shm.c: fix overly aggressive shmdt() when calls span multiple segments
  ipc/msg: increase MSGMNI, remove scaling
  ipc/sem.c: increase SEMMSL, SEMMNI, SEMOPM
  ipc/sem.c: change memory barrier in sem_lock() to smp_rmb()
  lib/decompress.c: consistency of compress formats for kernel image
  decompress_bunzip2: off by one in get_next_block()
  usr/Kconfig: make initrd compression algorithm selection not expert
  fault-inject: add ratelimit option
  ratelimit: add initialization macro
  ...
parents f96fe225 29d293b6
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -445,7 +445,7 @@ across partially overlapping sets of CPUs would risk unstable dynamics
that would be beyond our understanding.  So if each of two partially
that would be beyond our understanding.  So if each of two partially
overlapping cpusets enables the flag 'cpuset.sched_load_balance', then we
overlapping cpusets enables the flag 'cpuset.sched_load_balance', then we
form a single sched domain that is a superset of both.  We won't move
form a single sched domain that is a superset of both.  We won't move
a task to a CPU outside it cpuset, but the scheduler load balancing
a task to a CPU outside its cpuset, but the scheduler load balancing
code might waste some compute cycles considering that possibility.
code might waste some compute cycles considering that possibility.


This mismatch is why there is not a simple one-to-one relation
This mismatch is why there is not a simple one-to-one relation
@@ -552,8 +552,8 @@ otherwise initial value -1 that indicates the cpuset has no request.
   1  : search siblings (hyperthreads in a core).
   1  : search siblings (hyperthreads in a core).
   2  : search cores in a package.
   2  : search cores in a package.
   3  : search cpus in a node [= system wide on non-NUMA system]
   3  : search cpus in a node [= system wide on non-NUMA system]
 ( 4  : search nodes in a chunk of node [on NUMA system] )
   4  : search nodes in a chunk of node [on NUMA system]
 ( 5  : search system wide [on NUMA system] )
   5  : search system wide [on NUMA system]


The system default is architecture dependent.  The system default
The system default is architecture dependent.  The system default
can be changed using the relax_domain_level= boot parameter.
can be changed using the relax_domain_level= boot parameter.
+4 −4
Original line number Original line Diff line number Diff line
@@ -326,7 +326,7 @@ per cgroup, instead of globally.


* tcp memory pressure: sockets memory pressure for the tcp protocol.
* tcp memory pressure: sockets memory pressure for the tcp protocol.


2.7.3 Common use cases
2.7.2 Common use cases


Because the "kmem" counter is fed to the main user counter, kernel memory can
Because the "kmem" counter is fed to the main user counter, kernel memory can
never be limited completely independently of user memory. Say "U" is the user
never be limited completely independently of user memory. Say "U" is the user
@@ -354,19 +354,19 @@ set:


3. User Interface
3. User Interface


0. Configuration
3.0. Configuration


a. Enable CONFIG_CGROUPS
a. Enable CONFIG_CGROUPS
b. Enable CONFIG_MEMCG
b. Enable CONFIG_MEMCG
c. Enable CONFIG_MEMCG_SWAP (to use swap extension)
c. Enable CONFIG_MEMCG_SWAP (to use swap extension)
d. Enable CONFIG_MEMCG_KMEM (to use kmem extension)
d. Enable CONFIG_MEMCG_KMEM (to use kmem extension)


1. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?)
3.1. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?)
# mount -t tmpfs none /sys/fs/cgroup
# mount -t tmpfs none /sys/fs/cgroup
# mkdir /sys/fs/cgroup/memory
# mkdir /sys/fs/cgroup/memory
# mount -t cgroup none /sys/fs/cgroup/memory -o memory
# mount -t cgroup none /sys/fs/cgroup/memory -o memory


2. Make the new group and move bash into it
3.2. Make the new group and move bash into it
# mkdir /sys/fs/cgroup/memory/0
# mkdir /sys/fs/cgroup/memory/0
# echo $$ > /sys/fs/cgroup/memory/0/tasks
# echo $$ > /sys/fs/cgroup/memory/0/tasks


+16 −3
Original line number Original line Diff line number Diff line
@@ -829,6 +829,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			CONFIG_DEBUG_PAGEALLOC, hence this option will not help
			CONFIG_DEBUG_PAGEALLOC, hence this option will not help
			tracking down these problems.
			tracking down these problems.


	debug_pagealloc=
			[KNL] When CONFIG_DEBUG_PAGEALLOC is set, this
			parameter enables the feature at boot time. In
			default, it is disabled. We can avoid allocating huge
			chunk of memory for debug pagealloc if we don't enable
			it at boot time and the system will work mostly same
			with the kernel built without CONFIG_DEBUG_PAGEALLOC.
			on: enable the feature

	debugpat	[X86] Enable PAT debugging
	debugpat	[X86] Enable PAT debugging


	decnet.addr=	[HW,NET]
	decnet.addr=	[HW,NET]
@@ -1228,9 +1237,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			multiple times interleaved with hugepages= to reserve
			multiple times interleaved with hugepages= to reserve
			huge pages of different sizes. Valid pages sizes on
			huge pages of different sizes. Valid pages sizes on
			x86-64 are 2M (when the CPU supports "pse") and 1G
			x86-64 are 2M (when the CPU supports "pse") and 1G
			(when the CPU supports the "pdpe1gb" cpuinfo flag)
			(when the CPU supports the "pdpe1gb" cpuinfo flag).
			Note that 1GB pages can only be allocated at boot time
			using hugepages= and not freed afterwards.


	hvc_iucv=	[S390] Number of z/VM IUCV hypervisor console (HVC)
	hvc_iucv=	[S390] Number of z/VM IUCV hypervisor console (HVC)
			       terminal devices. Valid values: 0..8
			       terminal devices. Valid values: 0..8
@@ -2506,6 +2513,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
	OSS		[HW,OSS]
	OSS		[HW,OSS]
			See Documentation/sound/oss/oss-parameters.txt
			See Documentation/sound/oss/oss-parameters.txt


	page_owner=	[KNL] Boot-time page_owner enabling option.
			Storage of the information about who allocated
			each page is disabled in default. With this switch,
			we can turn it on.
			on: enable the feature

	panic=		[KNL] Kernel behaviour on panic: delay <timeout>
	panic=		[KNL] Kernel behaviour on panic: delay <timeout>
			timeout > 0: seconds before rebooting
			timeout > 0: seconds before rebooting
			timeout = 0: wait forever
			timeout = 0: wait forever
+9 −4
Original line number Original line Diff line number Diff line
@@ -8,6 +8,11 @@ to implement them for any given architecture and shows how they can be used
properly. It also stresses on the precautions that must be taken when reading
properly. It also stresses on the precautions that must be taken when reading
those local variables across CPUs when the order of memory writes matters.
those local variables across CPUs when the order of memory writes matters.


Note that local_t based operations are not recommended for general kernel use.
Please use the this_cpu operations instead unless there is really a special purpose.
Most uses of local_t in the kernel have been replaced by this_cpu operations.
this_cpu operations combine the relocation with the local_t like semantics in
a single instruction and yield more compact and faster executing code.




* Purpose of local atomic operations
* Purpose of local atomic operations
@@ -87,10 +92,10 @@ the per cpu variable. For instance :
	local_inc(&get_cpu_var(counters));
	local_inc(&get_cpu_var(counters));
	put_cpu_var(counters);
	put_cpu_var(counters);


If you are already in a preemption-safe context, you can directly use
If you are already in a preemption-safe context, you can use
__get_cpu_var() instead.
this_cpu_ptr() instead.


	local_inc(&__get_cpu_var(counters));
	local_inc(this_cpu_ptr(&counters));






@@ -134,7 +139,7 @@ static void test_each(void *info)
{
{
	/* Increment the counter from a non preemptible context */
	/* Increment the counter from a non preemptible context */
	printk("Increment on cpu %d\n", smp_processor_id());
	printk("Increment on cpu %d\n", smp_processor_id());
	local_inc(&__get_cpu_var(counters));
	local_inc(this_cpu_ptr(&counters));


	/* This is what incrementing the variable would look like within a
	/* This is what incrementing the variable would look like within a
	 * preemptible context (it disables preemption) :
	 * preemptible context (it disables preemption) :
+6 −4
Original line number Original line Diff line number Diff line
@@ -116,10 +116,12 @@ set during run time.


auto_msgmni:
auto_msgmni:


Enables/Disables automatic recomputing of msgmni upon memory add/remove
This variable has no effect and may be removed in future kernel
or upon ipc namespace creation/removal (see the msgmni description
releases. Reading it always returns 0.
above). Echoing "1" into this file enables msgmni automatic recomputing.
Up to Linux 3.17, it enabled/disabled automatic recomputing of msgmni
Echoing "0" turns it off. auto_msgmni default value is 1.
upon memory add/remove or upon ipc namespace creation/removal.
Echoing "1" into this file enabled msgmni automatic recomputing.
Echoing "0" turned it off. auto_msgmni default value was 1.




==============================================================
==============================================================
Loading