On Tue, Aug 04, 2020 at 11:55:10AM +0200, David Hildenbrand wrote: > On 04.08.20 11:33, Mike Rapoport wrote: > > On Tue, Aug 04, 2020 at 09:24:08AM +0200, David Hildenbrand wrote: > >> Let's document what ZONE_MOVABLE means, how it's used, and which special > >> cases we have regarding unmovable pages (memory offlining vs. migration / > >> allocations). > >> > >> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > >> Cc: Michal Hocko <mhocko@xxxxxxxx> > >> Cc: Michael S. Tsirkin <mst@xxxxxxxxxx> > >> Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > >> Cc: Mike Rapoport <rppt@xxxxxxxxxx> > >> Cc: Pankaj Gupta <pankaj.gupta.linux@xxxxxxxxx> > >> Cc: Baoquan He <bhe@xxxxxxxxxx> > >> Signed-off-by: David Hildenbrand <david@xxxxxxxxxx> > > > > Several nits below, othersize > > > > Acked-by: Mike Rapoport <rppt@xxxxxxxxxxxxx> > > > >> --- > >> include/linux/mmzone.h | 34 ++++++++++++++++++++++++++++++++++ > >> 1 file changed, 34 insertions(+) > >> > >> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > >> index f6f884970511d..600d449e7d9e9 100644 > >> --- a/include/linux/mmzone.h > >> +++ b/include/linux/mmzone.h > >> @@ -372,6 +372,40 @@ enum zone_type { > >> */ > >> ZONE_HIGHMEM, > >> #endif > >> + /* > >> + * ZONE_MOVABLE is similar to ZONE_NORMAL, except that it *primarily* > >> + * only contains movable pages. Main use cases are to make memory > > > > "Primarily only" sounds awkward. Maybe > > > > ... except that it only contains movable pages with few exceptional > > cases described below. > > > > And then > > > > Main use cases for ZONE_MOVABLE are ... > > Ack! > > > > >> + * offlining more likely to succeed, and to locally limit unmovable > >> + * allocations - e.g., to increase the number of THP/huge pages. > >> + * Notable special cases are: > >> + * > >> + * 1. Pinned pages: (Long-term) pinning of movable pages might > > > > ^long, capital L looked out of place for me > > Ack! > > > > >> + * essentially turn such pages unmovable. Memory offlining might > >> + * retry a long time. > >> + * 2. memblock allocations: kernelcore/movablecore setups might create > >> + * situations where ZONE_MOVABLE contains unmovable allocations > >> + * after boot. Memory offlining and allocations fail early. > >> + * 3. Memory holes: Such pages cannot be allocated. Applies only to > >> + * boot memory, not hotplugged memory. Memory offlining and > >> + * allocations fail early. > > > > I would clarify where page struct for abscent memory come from > > Something like: > > Memory holes: We might have a memmap for memory holes, for example, if ^w ;-) > we have sections that are only partially System RAM. Such pages cannot > be ... How about ... sections that are only partially populated ? > ? > > Thanks! > > -- > Thanks, > > David / dhildenb > -- Sincerely yours, Mike.