Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1687140
| Path | csiph.com!news.redatomik.org!aioe.org!news.servidellagleba.it!bofh.it!news.nic.it!robomod |
|---|---|
| From | Michal Hocko <mhocko@kernel.org> |
| Newsgroups | linux.kernel |
| Subject | [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists |
| Date | Fri, 14 Jul 2017 10:10:02 +0200 |
| Message-ID | <u33PI-El-23@gated-at.bofh.it> (permalink) |
| References | <u33PH-El-3@gated-at.bofh.it> |
| X-Original-To | <linux-mm@kvack.org> |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=vQzQCMbU9TQZnWydePoO+zg8gul7f1KlsFUuppa6q84=; b=Yi/AW6K7AwOlv9ra1qGseYU5XG8/KMZ0tZ9b4o5b7jr53ksZeBAsOTNaWGMR1NcShU 9Ep2zDxylvo5cOyuR+RMcGqnoX1UZdrZq6Wt8UZPi1ZuSDM74G2toS6/XrBPwL5nxLzF R8f6wmhMsJPg4Q+cnuwdA751DjOAAWy2x4fs218X+uzV9hZOfYkdMZFh2dTF+LHYRmFt AS+zCLtb5aTpR9fxmBLiFd7nVCkGhc8uRgBlu4IgLVf8N1EpvupawPklioygUhKXyFqh 0irZJooOLTgGv9K4Fw9VlccQUkoAWTKI5QNUiy3DfX4/fMN6WyPiBHmeRaBDdpcMoMQB ez+A== |
| X-Gm-Message-State | AIVw110j75KlB4KFFWScpAoTiJwEq3956Jr0s3M+bMago9H5jX5k1hU1 XtTTh1jBtw2ac6in |
| X-Received | by 10.28.126.8 with SMTP id z8mr1885860wmc.46.1500019232709; Fri, 14 Jul 2017 01:00:32 -0700 (PDT) |
| X-Mailer | git-send-email 2.11.0 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 58 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Andrew Morton <akpm@linux-foundation.org>, Mel Gorman <mgorman@suse.de>, Johannes Weiner <hannes@cmpxchg.org>, Vlastimil Babka <vbabka@suse.cz>, LKML <linux-kernel@vger.kernel.org>, Michal Hocko <mhocko@suse.com> |
| X-Original-Date | Fri, 14 Jul 2017 10:00:04 +0200 |
| X-Original-Message-ID | <20170714080006.7250-8-mhocko@kernel.org> |
| X-Original-References | <20170714080006.7250-1-mhocko@kernel.org> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1687140 |
Show key headers only | View raw
From: Michal Hocko <mhocko@suse.com>
build_all_zonelists has been (ab)using stop_machine to make sure that
zonelists do not change while somebody is looking at them. This is
is just a gross hack because a) it complicates the context from which
we can call build_all_zonelists (see 3f906ba23689 ("mm/memory-hotplug:
switch locking to a percpu rwsem")) and b) is is not really necessary
especially after "mm, page_alloc: simplify zonelist initialization".
Updates of the zonelists happen very seldom, basically only when a zone
becomes populated during memory online or when it loses all the memory
during offline. A racing iteration over zonelists could either miss a
zone or try to work on one zone twice. Both of these are something we
can live with occasionally because there will always be at least one
zone visible so we are not likely to fail allocation too easily for
example.
Signed-off-by: Michal Hocko <mhocko@suse.com>
---
mm/page_alloc.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 78bd62418380..217889ecd13f 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5066,8 +5066,7 @@ static DEFINE_PER_CPU(struct per_cpu_nodestat, boot_nodestats);
*/
DEFINE_MUTEX(zonelists_mutex);
-/* return values int ....just for stop_machine() */
-static int __build_all_zonelists(void *data)
+static void __build_all_zonelists(void *data)
{
int nid;
int cpu;
@@ -5103,8 +5102,6 @@ static int __build_all_zonelists(void *data)
set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu)));
#endif
}
-
- return 0;
}
static noinline void __init
@@ -5147,9 +5144,7 @@ void __ref build_all_zonelists(pg_data_t *pgdat)
if (system_state == SYSTEM_BOOTING) {
build_all_zonelists_init();
} else {
- /* we have to stop all cpus to guarantee there is no user
- of zonelist */
- stop_machine_cpuslocked(__build_all_zonelists, pgdat, NULL);
+ __build_all_zonelists(pgdat);
/* cpuset refresh routine should be here */
}
vm_total_pages = nr_free_pagecache_pages();
--
2.11.0
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/9] cleanup zonelists initialization Michal Hocko <mhocko@kernel.org> - 2017-07-14 10:10 +0200
[PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Michal Hocko <mhocko@kernel.org> - 2017-07-14 10:10 +0200
Re: [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Mel Gorman <mgorman@suse.de> - 2017-07-14 12:00 +0200
Re: [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Michal Hocko <mhocko@kernel.org> - 2017-07-14 13:10 +0200
Re: [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Mel Gorman <mgorman@suse.de> - 2017-07-14 14:50 +0200
Re: [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Vlastimil Babka <vbabka@suse.cz> - 2017-07-14 13:30 +0200
Re: [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Michal Hocko <mhocko@kernel.org> - 2017-07-14 13:50 +0200
Re: [PATCH 7/9] mm, page_alloc: remove stop_machine from build_all_zonelists Michal Hocko <mhocko@kernel.org> - 2017-07-14 13:50 +0200
[PATCH 2/9] mm, page_alloc: remove boot pageset initialization from memory hotplug Michal Hocko <mhocko@kernel.org> - 2017-07-14 10:10 +0200
Re: [PATCH 2/9] mm, page_alloc: remove boot pageset initialization from memory hotplug Mel Gorman <mgorman@suse.de> - 2017-07-14 11:50 +0200
[PATCH 5/9] mm, memory_hotplug: remove explicit build_all_zonelists from try_online_node Michal Hocko <mhocko@kernel.org> - 2017-07-14 10:10 +0200
Re: [PATCH 5/9] mm, memory_hotplug: remove explicit build_all_zonelists from try_online_node Michal Hocko <mhocko@kernel.org> - 2017-07-14 14:20 +0200
[PATCH 4/9] mm, memory_hotplug: drop zone from build_all_zonelists Michal Hocko <mhocko@kernel.org> - 2017-07-14 10:10 +0200
csiph-web