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

Commit 95211279 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (Andrew's patch-bomb)

Merge first batch of patches from Andrew Morton:
 "A few misc things and all the MM queue"

* emailed from Andrew Morton <akpm@linux-foundation.org>: (92 commits)
  memcg: avoid THP split in task migration
  thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE
  memcg: clean up existing move charge code
  mm/memcontrol.c: remove unnecessary 'break' in mem_cgroup_read()
  mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()
  mm/memcontrol.c: s/stealed/stolen/
  memcg: fix performance of mem_cgroup_begin_update_page_stat()
  memcg: remove PCG_FILE_MAPPED
  memcg: use new logic for page stat accounting
  memcg: remove PCG_MOVE_LOCK flag from page_cgroup
  memcg: simplify move_account() check
  memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)
  memcg: kill dead prev_priority stubs
  memcg: remove PCG_CACHE page_cgroup flag
  memcg: let css_get_next() rely upon rcu_read_lock()
  cgroup: revert ss_id_lock to spinlock
  idr: make idr_get_next() good for rcu_read_lock()
  memcg: remove unnecessary thp check in page stat accounting
  memcg: remove redundant returns
  memcg: enum lru_list lru
  ...
parents 5375871d 12724850
Loading
Loading
Loading
Loading
+30 −2
Original line number Original line Diff line number Diff line
@@ -290,7 +290,7 @@ Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
  rsslim        current limit in bytes on the rss
  rsslim        current limit in bytes on the rss
  start_code    address above which program text can run
  start_code    address above which program text can run
  end_code      address below which program text can run
  end_code      address below which program text can run
  start_stack   address of the start of the stack
  start_stack   address of the start of the main process stack
  esp           current value of ESP
  esp           current value of ESP
  eip           current value of EIP
  eip           current value of EIP
  pending       bitmap of pending signals
  pending       bitmap of pending signals
@@ -325,7 +325,7 @@ address perms offset dev inode pathname
a7cb1000-a7cb2000 ---p 00000000 00:00 0
a7cb1000-a7cb2000 ---p 00000000 00:00 0
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
a7eb2000-a7eb3000 ---p 00000000 00:00 0
a7eb2000-a7eb3000 ---p 00000000 00:00 0
a7eb3000-a7ed5000 rw-p 00000000 00:00 0
a7eb3000-a7ed5000 rw-p 00000000 00:00 0          [stack:1001]
a7ed5000-a8008000 r-xp 00000000 03:00 4222       /lib/libc.so.6
a7ed5000-a8008000 r-xp 00000000 03:00 4222       /lib/libc.so.6
a8008000-a800a000 r--p 00133000 03:00 4222       /lib/libc.so.6
a8008000-a800a000 r--p 00133000 03:00 4222       /lib/libc.so.6
a800a000-a800b000 rw-p 00135000 03:00 4222       /lib/libc.so.6
a800a000-a800b000 rw-p 00135000 03:00 4222       /lib/libc.so.6
@@ -357,11 +357,39 @@ is not associated with a file:


 [heap]                   = the heap of the program
 [heap]                   = the heap of the program
 [stack]                  = the stack of the main process
 [stack]                  = the stack of the main process
 [stack:1001]             = the stack of the thread with tid 1001
 [vdso]                   = the "virtual dynamic shared object",
 [vdso]                   = the "virtual dynamic shared object",
                            the kernel system call handler
                            the kernel system call handler


 or if empty, the mapping is anonymous.
 or if empty, the mapping is anonymous.


The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
of the individual tasks of a process. In this file you will see a mapping marked
as [stack] if that task sees it as a stack. This is a key difference from the
content of /proc/PID/maps, where you will see all mappings that are being used
as stack by all of those tasks. Hence, for the example above, the task-level
map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:

08048000-08049000 r-xp 00000000 03:00 8312       /opt/test
08049000-0804a000 rw-p 00001000 03:00 8312       /opt/test
0804a000-0806b000 rw-p 00000000 00:00 0          [heap]
a7cb1000-a7cb2000 ---p 00000000 00:00 0
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
a7eb2000-a7eb3000 ---p 00000000 00:00 0
a7eb3000-a7ed5000 rw-p 00000000 00:00 0          [stack]
a7ed5000-a8008000 r-xp 00000000 03:00 4222       /lib/libc.so.6
a8008000-a800a000 r--p 00133000 03:00 4222       /lib/libc.so.6
a800a000-a800b000 rw-p 00135000 03:00 4222       /lib/libc.so.6
a800b000-a800e000 rw-p 00000000 00:00 0
a800e000-a8022000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0
a8022000-a8023000 r--p 00013000 03:00 14462      /lib/libpthread.so.0
a8023000-a8024000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0
a8024000-a8027000 rw-p 00000000 00:00 0
a8027000-a8043000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2
a8043000-a8044000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2
a8044000-a8045000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2
aff35000-aff4a000 rw-p 00000000 00:00 0
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]


The /proc/PID/smaps is an extension based on maps, showing the memory
The /proc/PID/smaps is an extension based on maps, showing the memory
consumption for each of the process's mappings. For each of mappings there
consumption for each of the process's mappings. For each of mappings there
+7 −0
Original line number Original line Diff line number Diff line
@@ -2635,6 +2635,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			to facilitate early boot debugging.
			to facilitate early boot debugging.
			See also Documentation/trace/events.txt
			See also Documentation/trace/events.txt


	transparent_hugepage=
			[KNL]
			Format: [always|madvise|never]
			Can be used to control the default behavior of the system
			with respect to transparent hugepages.
			See Documentation/vm/transhuge.txt for more details.

	tsc=		Disable clocksource stability checks for TSC.
	tsc=		Disable clocksource stability checks for TSC.
			Format: <string>
			Format: <string>
			[x86] reliable: mark tsc clocksource as reliable, this
			[x86] reliable: mark tsc clocksource as reliable, this
+2 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,7 @@
#define KPF_HWPOISON		19
#define KPF_HWPOISON		19
#define KPF_NOPAGE		20
#define KPF_NOPAGE		20
#define KPF_KSM			21
#define KPF_KSM			21
#define KPF_THP			22


/* [32-] kernel hacking assistances */
/* [32-] kernel hacking assistances */
#define KPF_RESERVED		32
#define KPF_RESERVED		32
@@ -147,6 +148,7 @@ static const char *page_flag_names[] = {
	[KPF_HWPOISON]		= "X:hwpoison",
	[KPF_HWPOISON]		= "X:hwpoison",
	[KPF_NOPAGE]		= "n:nopage",
	[KPF_NOPAGE]		= "n:nopage",
	[KPF_KSM]		= "x:ksm",
	[KPF_KSM]		= "x:ksm",
	[KPF_THP]		= "t:thp",


	[KPF_RESERVED]		= "r:reserved",
	[KPF_RESERVED]		= "r:reserved",
	[KPF_MLOCKED]		= "m:mlocked",
	[KPF_MLOCKED]		= "m:mlocked",
+4 −0
Original line number Original line Diff line number Diff line
@@ -60,6 +60,7 @@ There are three components to pagemap:
    19. HWPOISON
    19. HWPOISON
    20. NOPAGE
    20. NOPAGE
    21. KSM
    21. KSM
    22. THP


Short descriptions to the page flags:
Short descriptions to the page flags:


@@ -97,6 +98,9 @@ Short descriptions to the page flags:
21. KSM
21. KSM
    identical memory pages dynamically shared between one or more processes
    identical memory pages dynamically shared between one or more processes


22. THP
    contiguous pages which construct transparent hugepages

    [IO related page flags]
    [IO related page flags]
 1. ERROR     IO error occurred
 1. ERROR     IO error occurred
 3. UPTODATE  page has up-to-date data
 3. UPTODATE  page has up-to-date data
+1 −6
Original line number Original line Diff line number Diff line
@@ -776,7 +776,6 @@ static inline int handle_signal32(unsigned long signr, struct k_sigaction *ka,
				  siginfo_t *info,
				  siginfo_t *info,
				  sigset_t *oldset, struct pt_regs *regs)
				  sigset_t *oldset, struct pt_regs *regs)
{
{
	sigset_t blocked;
	int err;
	int err;


	if (ka->sa.sa_flags & SA_SIGINFO)
	if (ka->sa.sa_flags & SA_SIGINFO)
@@ -787,11 +786,7 @@ static inline int handle_signal32(unsigned long signr, struct k_sigaction *ka,
	if (err)
	if (err)
		return err;
		return err;


	sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask);
	block_sigmask(ka, signr);
	if (!(ka->sa.sa_flags & SA_NOMASK))
		sigaddset(&blocked, signr);
	set_current_blocked(&blocked);

	tracehook_signal_handler(signr, info, ka, regs, 0);
	tracehook_signal_handler(signr, info, ka, regs, 0);


	return 0;
	return 0;
Loading