summaryrefslogtreecommitdiff
path: root/mm/compaction.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2019-08-15 11:10:38 +0200
committerThomas Gleixner <tglx@linutronix.de>2019-08-15 11:10:38 +0200
commit4511708b9a044f2bc83c7c7f7f8a2c45ec488219 (patch)
treee892580504b082e9852f5925ba66d1e22910f5e8 /mm/compaction.c
parent7f06d0aa530cc61cb5e048d4eb34921dee12058a (diff)
parent1cd8fa288eb83c1fe0dfa492b09d228a8d802fbf (diff)
Merge tag 'perf-core-for-mingo-5.4-20190814' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo: Intel PT: Adrian Hunter: - Add PEBS via Intel PT support, the kernel bits went via PeterZ. perf record: Alexander Shishkin: - Add an option to take an AUX snapshot on exit. Tan Xiaojun: - Support aarch64 random socket_id assignment, just like was fixed for S/390. tools: Andy Shevchenko: - Keep list of tools in alphabetical order on 'make -C tools help'. perf session: Arnaldo Carvalho de Melo: - Avoid infinite loop when seeing invalid header.size, reported by Vince Weaver using a perf.data fuzzer. Documentation: Vince Weaver: - Clarify HEADER_SAMPLE_TOPOLOGY format in the perf.data spec. perf config: Arnaldo Carvalho de Melo: - Honour $PERF_CONFIG env var to specify alternate .perfconfig. perf test: Arnaldo Carvalho de Melo: - Disable ~/.perfconfig to get default output in 'perf trace' tests. perf top: Arnaldo Carvalho de Melo: - Set display thread COMM to help with debugging. - Collapse and resort evsels in a group, so that we have output similar to 'perf report' when using event groups, i.e. perf top -e '{cycles,instructions}' Will have two columns, and the instructions one will work. core: Igor Lubashev: - Detect if libcap development files are available so that we can use capabilities to match the checks made by the kernel instead of using plain (geteuid() == 0). Intel: Haiyan Song: - Add Icelake V1.00 event file. perf trace: Leo Yan: - Fix segmentation fault when access syscall info on arm64. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'mm/compaction.c')
-rw-r--r--mm/compaction.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index 9e1b9acb116b..952dc2fb24e5 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -842,13 +842,15 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
/*
* Periodically drop the lock (if held) regardless of its
- * contention, to give chance to IRQs. Abort async compaction
- * if contended.
+ * contention, to give chance to IRQs. Abort completely if
+ * a fatal signal is pending.
*/
if (!(low_pfn % SWAP_CLUSTER_MAX)
&& compact_unlock_should_abort(&pgdat->lru_lock,
- flags, &locked, cc))
- break;
+ flags, &locked, cc)) {
+ low_pfn = 0;
+ goto fatal_pending;
+ }
if (!pfn_valid_within(low_pfn))
goto isolate_fail;
@@ -1060,6 +1062,7 @@ isolate_abort:
trace_mm_compaction_isolate_migratepages(start_pfn, low_pfn,
nr_scanned, nr_isolated);
+fatal_pending:
cc->total_migrate_scanned += nr_scanned;
if (nr_isolated)
count_compact_events(COMPACTISOLATED, nr_isolated);