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

Commit 02a7b1e4 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Revert "mm: make cma the first choice for movable request""

parents 1020c276 ef502971
Loading
Loading
Loading
Loading
+37 −0
Original line number Original line Diff line number Diff line
@@ -1171,8 +1171,35 @@ void pagefault_out_of_memory(void)
	mutex_unlock(&oom_lock);
	mutex_unlock(&oom_lock);
}
}


/* Call this function with task_lock being held as we're accessing ->mm */
void dump_killed_info(struct task_struct *selected)
{
	int selected_tasksize = get_mm_rss(selected->mm);

	pr_info_ratelimited("Killing '%s' (%d), adj %hd,\n"
			"   to free %ldkB on behalf of '%s' (%d)\n"
			"   Free CMA is %ldkB\n"
			"   Total reserve is %ldkB\n"
			"   Total free pages is %ldkB\n"
			"   Total file cache is %ldkB\n",
			selected->comm, selected->pid,
			selected->signal->oom_score_adj,
			selected_tasksize * (long)(PAGE_SIZE / 1024),
			current->comm, current->pid,
			global_zone_page_state(NR_FREE_CMA_PAGES) *
				(long)(PAGE_SIZE / 1024),
			totalreserve_pages * (long)(PAGE_SIZE / 1024),
			global_zone_page_state(NR_FREE_PAGES) *
				(long)(PAGE_SIZE / 1024),
			global_node_page_state(NR_FILE_PAGES) *
				(long)(PAGE_SIZE / 1024));
}

void add_to_oom_reaper(struct task_struct *p)
void add_to_oom_reaper(struct task_struct *p)
{
{
	static DEFINE_RATELIMIT_STATE(reaper_rs, DEFAULT_RATELIMIT_INTERVAL,
						 DEFAULT_RATELIMIT_BURST);

	if (!sysctl_reap_mem_on_sigkill)
	if (!sysctl_reap_mem_on_sigkill)
		return;
		return;


@@ -1185,6 +1212,16 @@ void add_to_oom_reaper(struct task_struct *p)
		__mark_oom_victim(p);
		__mark_oom_victim(p);
		wake_oom_reaper(p);
		wake_oom_reaper(p);
	}
	}

	dump_killed_info(p);
	task_unlock(p);
	task_unlock(p);

	if (__ratelimit(&reaper_rs) && p->signal->oom_score_adj == 0) {
		show_mem(SHOW_MEM_FILTER_NODES, NULL);
		show_mem_call_notifiers();
		if (sysctl_oom_dump_tasks)
			dump_tasks(NULL, NULL);
	}

	put_task_struct(p);
	put_task_struct(p);
}
}
+5 −5
Original line number Original line Diff line number Diff line
@@ -2451,14 +2451,14 @@ __rmqueue_fallback(struct zone *zone, int order, int start_migratetype)
static __always_inline struct page *
static __always_inline struct page *
__rmqueue(struct zone *zone, unsigned int order, int migratetype)
__rmqueue(struct zone *zone, unsigned int order, int migratetype)
{
{
	struct page *page = NULL;
	struct page *page;


retry:
retry:
	page = __rmqueue_smallest(zone, order, migratetype);
	if (unlikely(!page)) {
		if (migratetype == MIGRATE_MOVABLE)
		if (migratetype == MIGRATE_MOVABLE)
			page = __rmqueue_cma_fallback(zone, order);
			page = __rmqueue_cma_fallback(zone, order);


	if (!page) {
		page = __rmqueue_smallest(zone, order, migratetype);
		if (!page && __rmqueue_fallback(zone, order, migratetype))
		if (!page && __rmqueue_fallback(zone, order, migratetype))
			goto retry;
			goto retry;
	}
	}