Commit graph

591687 commits

Author SHA1 Message Date
Joonsoo Kim
12b730d57b mm/page_owner: add zone range overlapping check
There is a system thats node's pfns are overlapped as follows:

  -----pfn-------->
  N0 N1 N2 N0 N1 N2

Therefore, we need to care this overlapping when iterating pfn range.

There are one place in page_owner.c that iterates pfn range and it
doesn't consider this overlapping.  Add it.

Without this patch, above system could over count early allocated page
number before page_owner is activated.

Change-Id: I2addf2fe2ae4d2b0d82b2dcbdcda37663daec0f3
Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Rik van Riel <riel@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Laura Abbott <lauraa@codeaurora.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Michal Nazarewicz <mina86@mina86.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: 9d43f5aec9506d98ad492a783aa8a18226c5d474
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
2017-07-07 15:12:10 +05:30
Vlastimil Babka
10dd4d5d63 mm, page_owner: dump page owner info from dump_page()
The page_owner mechanism is useful for dealing with memory leaks.  By
reading /sys/kernel/debug/page_owner one can determine the stack traces
leading to allocations of all pages, and find e.g.  a buggy driver.

This information might be also potentially useful for debugging, such as
the VM_BUG_ON_PAGE() calls to dump_page().  So let's print the stored
info from dump_page().

Example output:

  page:ffffea000292f1c0 count:1 mapcount:0 mapping:ffff8800b2f6cc18 index:0x91d
  flags: 0x1fffff8001002c(referenced|uptodate|lru|mappedtodisk)
  page dumped because: VM_BUG_ON_PAGE(1)
  page->mem_cgroup:ffff8801392c5000
  page allocated via order 0, migratetype Movable, gfp_mask 0x24213ca(GFP_HIGHUSER_MOVABLE|__GFP_COLD|__GFP_NOWARN|__GFP_NORETRY)
   [<ffffffff811682c4>] __alloc_pages_nodemask+0x134/0x230
   [<ffffffff811b40c8>] alloc_pages_current+0x88/0x120
   [<ffffffff8115e386>] __page_cache_alloc+0xe6/0x120
   [<ffffffff8116ba6c>] __do_page_cache_readahead+0xdc/0x240
   [<ffffffff8116bd05>] ondemand_readahead+0x135/0x260
   [<ffffffff8116be9c>] page_cache_async_readahead+0x6c/0x70
   [<ffffffff811604c2>] generic_file_read_iter+0x3f2/0x760
   [<ffffffff811e0dc7>] __vfs_read+0xa7/0xd0
  page has been migrated, last migrate reason: compaction

Change-Id: Ie5f3716ab34b3a66a00973f5d87360ebd0155348
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: 4e462112e98f9ad6dd62e160f8b14c7df5fed2fc
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
2017-07-07 15:12:10 +05:30
Vlastimil Babka
f788d97308 mm, page_owner: track and print last migrate reason
During migration, page_owner info is now copied with the rest of the
page, so the stacktrace leading to free page allocation during migration
is overwritten.  For debugging purposes, it might be however useful to
know that the page has been migrated since its initial allocation.  This
might happen many times during the lifetime for different reasons and
fully tracking this, especially with stacktraces would incur extra
memory costs.  As a compromise, store and print the migrate_reason of
the last migration that occurred to the page.  This is enough to
distinguish compaction, numa balancing etc.

Example page_owner entry after the patch:

  Page allocated via order 0, mask 0x24200ca(GFP_HIGHUSER_MOVABLE)
  PFN 628753 type Movable Block 1228 type Movable Flags 0x1fffff80040030(dirty|lru|swapbacked)
   [<ffffffff811682c4>] __alloc_pages_nodemask+0x134/0x230
   [<ffffffff811b6325>] alloc_pages_vma+0xb5/0x250
   [<ffffffff81177491>] shmem_alloc_page+0x61/0x90
   [<ffffffff8117a438>] shmem_getpage_gfp+0x678/0x960
   [<ffffffff8117c2b9>] shmem_fallocate+0x329/0x440
   [<ffffffff811de600>] vfs_fallocate+0x140/0x230
   [<ffffffff811df434>] SyS_fallocate+0x44/0x70
   [<ffffffff8158cc2e>] entry_SYSCALL_64_fastpath+0x12/0x71
  Page has been migrated, last migrate reason: compaction

Change-Id: I9c93f9f91fa71feaea1505d80ee56caf8daf5562
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: 7cd12b4abfd2f8f42414c520bbd051a5b7dc7a8c
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[guptap@codeaurora.org: resolve trivial merge conflicts]
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
2017-07-07 15:12:10 +05:30
Vlastimil Babka
e91e9112cb mm, page_owner: copy page owner info during migration
The page_owner mechanism stores gfp_flags of an allocation and stack
trace that lead to it.  During page migration, the original information
is practically replaced by the allocation of free page as the migration
target.  Arguably this is less useful and might lead to all the
page_owner info for migratable pages gradually converge towards
compaction or numa balancing migrations.  It has also lead to
inaccuracies such as one fixed by commit e2cfc91120 ("mm/page_owner:
set correct gfp_mask on page_owner").

This patch thus introduces copying the page_owner info during migration.
However, since the fact that the page has been migrated from its
original place might be useful for debugging, the next patch will
introduce a way to track that information as well.

Change-Id: I4eb94be5fb2c93bbf165edb9f2a80091b5c8d7b1
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: d435edca928805074dae005ab9a42d9fa60fc702
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[guptap@codeaurora.org: resolve trivial merge conflicts]
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
2017-07-07 15:12:09 +05:30
Vlastimil Babka
2e58c8c7ee mm, page_owner: convert page_owner_inited to static key
CONFIG_PAGE_OWNER attempts to impose negligible runtime overhead when
enabled during compilation, but not actually enabled during runtime by
boot param page_owner=on.  This overhead can be further reduced using
the static key mechanism, which this patch does.

Change-Id: I76e44d92ed973647d4fd6489f97db5ffeb893354
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: 7dd80b8af0bcd705a9ef2fa272c082882616a499
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[guptap@codeaurora.org: resolve trivial merge conflicts]
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
2017-07-07 15:12:09 +05:30
Vlastimil Babka
188f10f240 mm, page_owner: print migratetype of page and pageblock, symbolic flags
The information in /sys/kernel/debug/page_owner includes the migratetype
of the pageblock the page belongs to.  This is also checked against the
page's migratetype (as declared by gfp_flags during its allocation), and
the page is reported as Fallback if its migratetype differs from the
pageblock's one.  t This is somewhat misleading because in fact fallback
allocation is not the only reason why these two can differ.  It also
doesn't direcly provide the page's migratetype, although it's possible
to derive that from the gfp_flags.

It's arguably better to print both page and pageblock's migratetype and
leave the interpretation to the consumer than to suggest fallback
allocation as the only possible reason.  While at it, we can print the
migratetypes as string the same way as /proc/pagetypeinfo does, as some
of the numeric values depend on kernel configuration.  For that, this
patch moves the migratetype_names array from #ifdef CONFIG_PROC_FS part
of mm/vmstat.c to mm/page_alloc.c and exports it.

With the new format strings for flags, we can now also provide symbolic
page and gfp flags in the /sys/kernel/debug/page_owner file.  This
replaces the positional printing of page flags as single letters, which
might have looked nicer, but was limited to a subset of flags, and
required the user to remember the letters.

Example page_owner entry after the patch:

  Page allocated via order 0, mask 0x24213ca(GFP_HIGHUSER_MOVABLE|__GFP_COLD|__GFP_NOWARN|__GFP_NORETRY)
  PFN 520 type Movable Block 1 type Movable Flags 0xfffff8001006c(referenced|uptodate|lru|active|mappedtodisk)
   [<ffffffff811682c4>] __alloc_pages_nodemask+0x134/0x230
   [<ffffffff811b4058>] alloc_pages_current+0x88/0x120
   [<ffffffff8115e386>] __page_cache_alloc+0xe6/0x120
   [<ffffffff8116ba6c>] __do_page_cache_readahead+0xdc/0x240
   [<ffffffff8116bd05>] ondemand_readahead+0x135/0x260
   [<ffffffff8116bfb1>] page_cache_sync_readahead+0x31/0x50
   [<ffffffff81160523>] generic_file_read_iter+0x453/0x760
   [<ffffffff811e0d57>] __vfs_read+0xa7/0xd0

Change-Id: I08f3412dbda9075d5534eee81444843a7679e54e
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: 60f30350fd69a3e4d5f0f45937d3274c22565134
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[guptap@codeaurora.org: resolve trivial merge conflicts]
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
2017-07-07 15:12:09 +05:30
Linux Build Service Account
0c44f3c838 Merge "crypto: Change format specifier %p to %pK" 2017-07-06 12:32:05 -07:00
Linux Build Service Account
1ccca4730a Merge "msm: ipa: Fix the problem with nested sleeping primitives" 2017-07-06 12:32:04 -07:00
Linux Build Service Account
1d1ab31d0a Merge "msm: camera: isp: fixes incorrect RDI empty frame handling" 2017-07-06 12:32:03 -07:00
Linux Build Service Account
e868dcc8bb Merge "ARM: dts: msm: add MSM external display node to msm8996" 2017-07-06 04:38:59 -07:00
Linux Build Service Account
338e7392a6 Merge "drm/msm: add default value for plane enum property" 2017-07-06 04:38:58 -07:00
Linux Build Service Account
db94df44a7 Merge "ARM: dtsi: msm: reserve memory for LK's stack on msm8996" 2017-07-06 04:38:57 -07:00
Linux Build Service Account
71faca4550 Merge "regulator: core: remove some dead code" 2017-07-06 04:38:57 -07:00
Linux Build Service Account
b4d55be415 Merge "Revert "defconfig: arm64: msm: Enable virtual platform"" into msm-4.4 2017-07-06 02:48:23 -07:00
Neeraj Upadhyay
5db7f2eae3 Revert "defconfig: arm64: msm: Enable virtual platform"
This reverts commit 2bb686dccd ("defconfig: arm64: msm: Enable
virtual platform"). The configs added in this change are not in
proper state and have build failures.

Change-Id: I30922e76761a1c436b54fb07f376ad9a5f5718f8
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
2017-07-06 14:44:51 +05:30
Linux Build Service Account
f96a299e77 Merge "drm/msm: Add timestamp counter" 2017-07-05 18:20:20 -07:00
Linux Build Service Account
e28c151ad1 Merge "msm: kgsl: Add A5XX RBBM registers to pre-crash dumper list" 2017-07-05 18:20:19 -07:00
Linux Build Service Account
fc916a2143 Merge "msm: kgsl: Add a NULL check for limit pointer" 2017-07-05 18:20:18 -07:00
Linux Build Service Account
a3424d9f5f Merge "mm: add preempt points into __purge_vmap_area_lazy()" 2017-07-05 18:20:17 -07:00
Linux Build Service Account
4756ccfd60 Merge "mm: turn vmap_purge_lock into a mutex" 2017-07-05 18:20:15 -07:00
Linux Build Service Account
0f6cf457b2 Merge "compat_qcedev: Fix accessing userspace memory in kernel space" 2017-07-05 10:28:43 -07:00
Linux Build Service Account
4c408ed259 Merge "diag: Add protection while processing non-hdlc packets" 2017-07-05 10:28:41 -07:00
Linux Build Service Account
d3a27d6fc2 Merge "mmc: card: Ratelimit the error log in mmc_blk_cmd_recovery()" 2017-07-05 10:28:40 -07:00
Linux Build Service Account
c4de2baacc Merge "defconfig: Enable and disable few configs for msm8998" 2017-07-05 10:28:39 -07:00
Linux Build Service Account
488f22ed0f Merge "USB: phy-msm-qusb: Enable autoresume only when device is connected" 2017-07-05 02:57:07 -07:00
Linux Build Service Account
22a427999d Merge "mmc: host: Capture error states in Trace logs." 2017-07-05 02:57:07 -07:00
Linux Build Service Account
9e94f54b9b Merge "msm: ADSPRPC: Initialize FastRPC invoke metadata" 2017-07-05 02:57:06 -07:00
Linux Build Service Account
d669e41bdb Merge "msm: mdss: Check htotal for calculating programmable fetch" 2017-07-05 02:57:05 -07:00
Linux Build Service Account
20e0861617 Merge "drm/msm: add support for parsing YUV 420 deep color" 2017-07-04 18:14:09 -07:00
Linux Build Service Account
8267ab99bd Merge "firmware: qcom: tz_log: update interrupt info offset" 2017-07-04 18:14:08 -07:00
Linux Build Service Account
27d09a21d1 Merge "msm-camera: sensor: Fixing kernel crash during i2c read" 2017-07-04 10:05:32 -07:00
Linux Build Service Account
ae03bcca0a Merge "lpm-levels: Enter shallowest state if predicted sleep length is less" 2017-07-04 10:05:31 -07:00
Linux Build Service Account
eacfb14b93 Merge "ASoC: msm-cpe: Resolve memory out of bound access" 2017-07-04 10:05:30 -07:00
Linux Build Service Account
a6e752c97f Merge "ARM: dts: msm: Add support for MPM wakeup capability for audio interrupt for SDM660/630" 2017-07-04 10:05:29 -07:00
Linux Build Service Account
1c7cda658f Merge "msm: ispif: fix crash during dumping io register" 2017-07-04 10:05:28 -07:00
Linux Build Service Account
a9194dae5a Merge "cnss_utils: Add support of cnss_utils for WLAN" 2017-07-04 10:05:27 -07:00
Linux Build Service Account
8012ae66a7 Merge "drm/msm/sde: remove extra entries from interrupt table" 2017-07-04 10:05:22 -07:00
Siba Prasad
7b7d464e9a mmc: host: Capture error states in Trace logs.
Upon encountering any error, few important registers are being captured
in trace logs in sdhci_dumpregs(). But without capturing exact error,
it would be tough to determine from which point in driver this dumpregs
has called. So capture the error state as well in Trace logs before
calling sdhci_dumpregs(). Also capture power irq related registers in
Trace logs upon any power irq related errors.

Change-Id: Ide172cdfb88a988cd4220bed03d05b8c6c4f15cb
Signed-off-by: Siba Prasad <sibap@codeaurora.org>
2017-07-04 17:38:07 +05:30
Mohammed Khajapasha
c387bf3d33 defconfig: Enable and disable few configs for msm8998
This change enables and disables below list of configs to
address the VTS KernelConfig test case failures.

Enable configs:
CONFIG_USB_CONFIGFS_F_AUDIO_SRC
CONFIG_QUOTA
CONFIG_QUOTA_NETLINK_INTERFACE
CONFIG_QFMT_V2
CONFIG_SECURITY_PERF_EVENTS_RESTRICT
CONFIG_CGROUP_DEBUG

Disable configs in perf defconfig:
CONFIG_USELIB
CONFIG_INET_LRO

Change-Id: Icecc6a637b778e6594c0f8c2f26118ae1b0a231c
Signed-off-by: Mohammed Khajapasha <mkhaja@codeaurora.org>
2017-07-04 16:41:50 +05:30
Hareesh Gundu
3b265177fc msm: kgsl: Add a NULL check for limit pointer
KGSL power limit pointer can be error or NULL. Add a NULL
check for limit pointer to avoid NULL pointer dereference.

Change-Id: I4aacaddd1cd9b34f1befc21807eb7ab577f0a7f1
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
2017-07-04 14:34:10 +05:30
Linux Build Service Account
b14c620eb1 Merge "ASoC: sdm660_cdc: Prevent MICBIAS1 enable during headset record" 2017-07-04 01:21:03 -07:00
Linux Build Service Account
48b492e8e1 Merge "ASoC: wcd-mbhc: Disconnect ANC from RX chain during plug removal" 2017-07-04 01:21:02 -07:00
Linux Build Service Account
8775c10a30 Merge "ASoC: msm: qdsp6v2: add size check to fix out of bounds issue" 2017-07-04 01:21:01 -07:00
Linux Build Service Account
8661bf1cf3 Merge "ASoC: wcd9335: Add counter to maintain count of functions voting for max bw" 2017-07-04 01:21:00 -07:00
Linux Build Service Account
9081293223 Merge "genirq: honour default IRQ affinity setting during migration" 2017-07-04 01:20:58 -07:00
Linux Build Service Account
22d1c0de3b Merge "msm: ipa: prevent string buffer overflows" 2017-07-04 01:20:57 -07:00
Linux Build Service Account
5f7c3c00d4 Merge "msm: ipa: fix IPA MHI unit tests" 2017-07-04 01:20:55 -07:00
Linux Build Service Account
a8e21e678d Merge "drm/msm: Add a parameter query for the number of ringbuffers" 2017-07-04 01:20:54 -07:00
Linux Build Service Account
4a528fd7b8 Merge "drm/msm: Add kernel side submit profiling and tracing" 2017-07-04 01:20:53 -07:00
Linux Build Service Account
01f0e05f48 Merge "msm: camera: add protection in the cci write function" 2017-07-04 01:20:52 -07:00