All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/9] mm: zone & pgdat accessors plus some cleanup
@ 2013-01-17 22:52 ` Cody P Schafer
  0 siblings, 0 replies; 36+ messages in thread
From: Cody P Schafer @ 2013-01-17 22:52 UTC (permalink / raw)
  To: Linux MM, David Hansen; +Cc: LKML, Andrew Morton, Catalin Marinas

Summaries:
1 - avoid repeating checks for section in page flags by adding a define.
2 - add & switch to zone_end_pfn() and zone_spans_pfn()
3 - adds zone_is_initialized() & zone_is_empty()
4 - adds a VM_BUG using zone_is_initialized() in __free_one_page()
5 - add pgdat_end_pfn() and pgdat_is_empty()
6 - add debugging message to VM_BUG check.
7 - add ensure_zone_is_initialized() (for memory_hotplug)
8 - use the above addition in memory_hotplug
9 - use pgdat_end_pfn()

As a general concern: spanned_pages & start_pfn (in pgdat & zone) are supposed
to be locked (via a seqlock) when read (due to changes to them via
memory_hotplug), but very few (only 1?) of their users appear to actually lock
them.

--

Since v1:
 - drop zone+pgdat growth factoring (I use this in some WIP code to resign the
   NUMA node a page belongs to, will send with that patchset)
 - merge zone_end_pfn() & zone_spans_pfn() introduction & usage
 - split zone_is_initialized() & zone_is_empty() out from the above.
 - add a missing semicolon

 include/linux/mm.h     |  8 ++++++--
 include/linux/mmzone.h | 34 +++++++++++++++++++++++++++++----
 mm/compaction.c        | 10 +++++-----
 mm/kmemleak.c          |  5 ++---
 mm/memory_hotplug.c    | 52 ++++++++++++++++++++++++++------------------------
 mm/page_alloc.c        | 31 +++++++++++++++++-------------
 mm/vmstat.c            |  2 +-
 7 files changed, 89 insertions(+), 53 deletions(-)


^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2013-02-05 22:59 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-17 22:52 [PATCH v2 0/9] mm: zone & pgdat accessors plus some cleanup Cody P Schafer
2013-01-17 22:52 ` Cody P Schafer
2013-01-17 22:52 ` [PATCH 1/9] mm: add SECTION_IN_PAGE_FLAGS Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-02-02  0:20   ` Andrew Morton
2013-02-02  0:20     ` Andrew Morton
2013-02-05 22:23     ` Cody P Schafer
2013-02-05 22:23       ` Cody P Schafer
2013-01-17 22:52 ` [PATCH 2/9] mm: add & use zone_end_pfn() and zone_spans_pfn() Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-01-17 22:52 ` [PATCH 3/9] mm: add zone_is_empty() and zone_is_initialized() Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-01-17 22:52 ` [PATCH 4/9] mm/page_alloc: add a VM_BUG in __free_one_page() if the zone is uninitialized Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-01-17 22:52 ` [PATCH 5/9] mmzone: add pgdat_{end_pfn,is_empty}() helpers & consolidate Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-02-02  0:23   ` Andrew Morton
2013-02-02  0:23     ` Andrew Morton
2013-01-17 22:52 ` [PATCH 6/9] mm/page_alloc: add informative debugging message in page_outside_zone_boundaries() Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-02-02  0:28   ` Andrew Morton
2013-02-02  0:28     ` Andrew Morton
2013-02-02  0:29     ` Andrew Morton
2013-02-02  0:29       ` Andrew Morton
2013-02-05 22:20       ` Cody P Schafer
2013-02-05 22:20         ` Cody P Schafer
2013-01-17 22:52 ` [PATCH 7/9] mm: add helper ensure_zone_is_initialized() Cody P Schafer
2013-01-17 22:52   ` Cody P Schafer
2013-01-17 22:53 ` [PATCH 8/9] mm/memory_hotplug: use ensure_zone_is_initialized() Cody P Schafer
2013-01-17 22:53   ` Cody P Schafer
2013-01-17 22:53 ` [PATCH 9/9] mm/memory_hotplug: use pgdat_end_pfn() instead of open coding the same Cody P Schafer
2013-01-17 22:53   ` Cody P Schafer
2013-02-02  0:39 ` [PATCH v2 0/9] mm: zone & pgdat accessors plus some cleanup Andrew Morton
2013-02-02  0:39   ` Andrew Morton
2013-02-05 22:59   ` Cody P Schafer
2013-02-05 22:59     ` Cody P Schafer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.