All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Alexander Duyck <alexander.duyck@gmail.com>
Cc: virtio-dev@lists.oasis-open.org, kvm@vger.kernel.org,
	mst@redhat.com, catalin.marinas@arm.com, david@redhat.com,
	dave.hansen@intel.com, linux-kernel@vger.kernel.org,
	willy@infradead.org, linux-mm@kvack.org,
	akpm@linux-foundation.org, will@kernel.org,
	linux-arm-kernel@lists.infradead.org, osalvador@suse.de,
	yang.zhang.wz@gmail.com, pagupta@redhat.com,
	konrad.wilk@oracle.com, nitesh@redhat.com, riel@surriel.com,
	lcapitulino@redhat.com, wei.w.wang@intel.com,
	aarcange@redhat.com, ying.huang@intel.com, pbonzini@redhat.com,
	dan.j.williams@intel.com, fengguang.wu@intel.com,
	alexander.h.duyck@linux.intel.com,
	kirill.shutemov@linux.intel.com
Subject: Re: [PATCH v9 4/8] mm: Use zone and order instead of free area in free_list manipulators
Date: Tue, 10 Sep 2019 14:27:07 +0200	[thread overview]
Message-ID: <20190910122707.GX2063@dhcp22.suse.cz> (raw)
In-Reply-To: <20190907172536.10910.99561.stgit@localhost.localdomain>

On Sat 07-09-19 10:25:36, Alexander Duyck wrote:
> From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> 
> In order to enable the use of the zone from the list manipulator functions
> I will need access to the zone pointer. As it turns out most of the
> accessors were always just being directly passed &zone->free_area[order]
> anyway so it would make sense to just fold that into the function itself
> and pass the zone and order as arguments instead of the free area.

Yes this makes the interface better.

> In order to be able to reference the zone we need to move the declaration
> of the functions down so that we have the zone defined before we define the
> list manipulation functions.
> 
> Reviewed-by: Dan Williams <dan.j.williams@intel.com>
> Reviewed-by: David Hildenbrand <david@redhat.com>
> Reviewed-by: Pankaj Gupta <pagupta@redhat.com>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>

Acked-by: Michal Hocko <mhocko@suse.com>

> ---
>  include/linux/mmzone.h |   70 ++++++++++++++++++++++++++----------------------
>  mm/page_alloc.c        |   30 ++++++++-------------
>  2 files changed, 49 insertions(+), 51 deletions(-)
> 
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index 125f300981c6..2ddf1f1971c0 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -100,29 +100,6 @@ struct free_area {
>  	unsigned long		nr_free;
>  };
>  
> -/* Used for pages not on another list */
> -static inline void add_to_free_area(struct page *page, struct free_area *area,
> -			     int migratetype)
> -{
> -	list_add(&page->lru, &area->free_list[migratetype]);
> -	area->nr_free++;
> -}
> -
> -/* Used for pages not on another list */
> -static inline void add_to_free_area_tail(struct page *page, struct free_area *area,
> -				  int migratetype)
> -{
> -	list_add_tail(&page->lru, &area->free_list[migratetype]);
> -	area->nr_free++;
> -}
> -
> -/* Used for pages which are on another list */
> -static inline void move_to_free_area(struct page *page, struct free_area *area,
> -			     int migratetype)
> -{
> -	list_move(&page->lru, &area->free_list[migratetype]);
> -}
> -
>  static inline struct page *get_page_from_free_area(struct free_area *area,
>  					    int migratetype)
>  {
> @@ -130,15 +107,6 @@ static inline struct page *get_page_from_free_area(struct free_area *area,
>  					struct page, lru);
>  }
>  
> -static inline void del_page_from_free_area(struct page *page,
> -		struct free_area *area)
> -{
> -	list_del(&page->lru);
> -	__ClearPageBuddy(page);
> -	set_page_private(page, 0);
> -	area->nr_free--;
> -}
> -
>  static inline bool free_area_empty(struct free_area *area, int migratetype)
>  {
>  	return list_empty(&area->free_list[migratetype]);
> @@ -796,6 +764,44 @@ static inline bool pgdat_is_empty(pg_data_t *pgdat)
>  	return !pgdat->node_start_pfn && !pgdat->node_spanned_pages;
>  }
>  
> +/* Used for pages not on another list */
> +static inline void add_to_free_list(struct page *page, struct zone *zone,
> +				    unsigned int order, int migratetype)
> +{
> +	struct free_area *area = &zone->free_area[order];
> +
> +	list_add(&page->lru, &area->free_list[migratetype]);
> +	area->nr_free++;
> +}
> +
> +/* Used for pages not on another list */
> +static inline void add_to_free_list_tail(struct page *page, struct zone *zone,
> +					 unsigned int order, int migratetype)
> +{
> +	struct free_area *area = &zone->free_area[order];
> +
> +	list_add_tail(&page->lru, &area->free_list[migratetype]);
> +	area->nr_free++;
> +}
> +
> +/* Used for pages which are on another list */
> +static inline void move_to_free_list(struct page *page, struct zone *zone,
> +				     unsigned int order, int migratetype)
> +{
> +	struct free_area *area = &zone->free_area[order];
> +
> +	list_move(&page->lru, &area->free_list[migratetype]);
> +}
> +
> +static inline void del_page_from_free_list(struct page *page, struct zone *zone,
> +					   unsigned int order)
> +{
> +	list_del(&page->lru);
> +	__ClearPageBuddy(page);
> +	set_page_private(page, 0);
> +	zone->free_area[order].nr_free--;
> +}
> +
>  #include <linux/memory_hotplug.h>
>  
>  void build_all_zonelists(pg_data_t *pgdat);
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index a791f2baeeeb..f85dc1561b85 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -921,7 +921,6 @@ static inline void __free_one_page(struct page *page,
>  	struct capture_control *capc = task_capc(zone);
>  	unsigned long uninitialized_var(buddy_pfn);
>  	unsigned long combined_pfn;
> -	struct free_area *area;
>  	unsigned int max_order;
>  	struct page *buddy;
>  
> @@ -958,7 +957,7 @@ static inline void __free_one_page(struct page *page,
>  		if (page_is_guard(buddy))
>  			clear_page_guard(zone, buddy, order, migratetype);
>  		else
> -			del_page_from_free_area(buddy, &zone->free_area[order]);
> +			del_page_from_free_list(buddy, zone, order);
>  		combined_pfn = buddy_pfn & pfn;
>  		page = page + (combined_pfn - pfn);
>  		pfn = combined_pfn;
> @@ -992,12 +991,11 @@ static inline void __free_one_page(struct page *page,
>  done_merging:
>  	set_page_order(page, order);
>  
> -	area = &zone->free_area[order];
>  	if (is_shuffle_order(order) ? shuffle_pick_tail() :
>  	    buddy_merge_likely(pfn, buddy_pfn, page, order))
> -		add_to_free_area_tail(page, area, migratetype);
> +		add_to_free_list_tail(page, zone, order, migratetype);
>  	else
> -		add_to_free_area(page, area, migratetype);
> +		add_to_free_list(page, zone, order, migratetype);
>  }
>  
>  /*
> @@ -2001,13 +1999,11 @@ void __init init_cma_reserved_pageblock(struct page *page)
>   * -- nyc
>   */
>  static inline void expand(struct zone *zone, struct page *page,
> -	int low, int high, struct free_area *area,
> -	int migratetype)
> +	int low, int high, int migratetype)
>  {
>  	unsigned long size = 1 << high;
>  
>  	while (high > low) {
> -		area--;
>  		high--;
>  		size >>= 1;
>  		VM_BUG_ON_PAGE(bad_range(zone, &page[size]), &page[size]);
> @@ -2021,7 +2017,7 @@ static inline void expand(struct zone *zone, struct page *page,
>  		if (set_page_guard(zone, &page[size], high, migratetype))
>  			continue;
>  
> -		add_to_free_area(&page[size], area, migratetype);
> +		add_to_free_list(&page[size], zone, high, migratetype);
>  		set_page_order(&page[size], high);
>  	}
>  }
> @@ -2179,8 +2175,8 @@ struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,
>  		page = get_page_from_free_area(area, migratetype);
>  		if (!page)
>  			continue;
> -		del_page_from_free_area(page, area);
> -		expand(zone, page, order, current_order, area, migratetype);
> +		del_page_from_free_list(page, zone, current_order);
> +		expand(zone, page, order, current_order, migratetype);
>  		set_pcppage_migratetype(page, migratetype);
>  		return page;
>  	}
> @@ -2188,7 +2184,6 @@ struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,
>  	return NULL;
>  }
>  
> -
>  /*
>   * This array describes the order lists are fallen back to when
>   * the free lists for the desirable migrate type are depleted
> @@ -2254,7 +2249,7 @@ static int move_freepages(struct zone *zone,
>  		VM_BUG_ON_PAGE(page_zone(page) != zone, page);
>  
>  		order = page_order(page);
> -		move_to_free_area(page, &zone->free_area[order], migratetype);
> +		move_to_free_list(page, zone, order, migratetype);
>  		page += 1 << order;
>  		pages_moved += 1 << order;
>  	}
> @@ -2370,7 +2365,6 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page,
>  		unsigned int alloc_flags, int start_type, bool whole_block)
>  {
>  	unsigned int current_order = page_order(page);
> -	struct free_area *area;
>  	int free_pages, movable_pages, alike_pages;
>  	int old_block_type;
>  
> @@ -2441,8 +2435,7 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page,
>  	return;
>  
>  single_page:
> -	area = &zone->free_area[current_order];
> -	move_to_free_area(page, area, start_type);
> +	move_to_free_list(page, zone, current_order, start_type);
>  }
>  
>  /*
> @@ -3113,7 +3106,6 @@ void split_page(struct page *page, unsigned int order)
>  
>  int __isolate_free_page(struct page *page, unsigned int order)
>  {
> -	struct free_area *area = &page_zone(page)->free_area[order];
>  	unsigned long watermark;
>  	struct zone *zone;
>  	int mt;
> @@ -3139,7 +3131,7 @@ int __isolate_free_page(struct page *page, unsigned int order)
>  
>  	/* Remove page from free list */
>  
> -	del_page_from_free_area(page, area);
> +	del_page_from_free_list(page, zone, order);
>  
>  	/*
>  	 * Set the pageblock if the isolated page is at least half of a
> @@ -8560,7 +8552,7 @@ void zone_pcp_reset(struct zone *zone)
>  		pr_info("remove from free list %lx %d %lx\n",
>  			pfn, 1 << order, end_pfn);
>  #endif
> -		del_page_from_free_area(page, &zone->free_area[order]);
> +		del_page_from_free_list(page, zone, order);
>  		for (i = 0; i < (1 << order); i++)
>  			SetPageReserved((page+i));
>  		pfn += (1 << order);

-- 
Michal Hocko
SUSE Labs

WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org>
To: Alexander Duyck <alexander.duyck@gmail.com>
Cc: yang.zhang.wz@gmail.com, pagupta@redhat.com, kvm@vger.kernel.org,
	david@redhat.com, catalin.marinas@arm.com,
	lcapitulino@redhat.com, linux-mm@kvack.org,
	alexander.h.duyck@linux.intel.com, will@kernel.org,
	aarcange@redhat.com, virtio-dev@lists.oasis-open.org,
	mst@redhat.com, willy@infradead.org, wei.w.wang@intel.com,
	ying.huang@intel.com, riel@surriel.com, konrad.wilk@oracle.com,
	dan.j.williams@intel.com, linux-arm-kernel@lists.infradead.org,
	osalvador@suse.de, nitesh@redhat.com, dave.hansen@intel.com,
	linux-kernel@vger.kernel.org, pbonzini@redhat.com,
	akpm@linux-foundation.org, fengguang.wu@intel.com,
	kirill.shutemov@linux.intel.com
Subject: Re: [PATCH v9 4/8] mm: Use zone and order instead of free area in free_list manipulators
Date: Tue, 10 Sep 2019 14:27:07 +0200	[thread overview]
Message-ID: <20190910122707.GX2063@dhcp22.suse.cz> (raw)
In-Reply-To: <20190907172536.10910.99561.stgit@localhost.localdomain>

On Sat 07-09-19 10:25:36, Alexander Duyck wrote:
> From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
> 
> In order to enable the use of the zone from the list manipulator functions
> I will need access to the zone pointer. As it turns out most of the
> accessors were always just being directly passed &zone->free_area[order]
> anyway so it would make sense to just fold that into the function itself
> and pass the zone and order as arguments instead of the free area.

Yes this makes the interface better.

> In order to be able to reference the zone we need to move the declaration
> of the functions down so that we have the zone defined before we define the
> list manipulation functions.
> 
> Reviewed-by: Dan Williams <dan.j.williams@intel.com>
> Reviewed-by: David Hildenbrand <david@redhat.com>
> Reviewed-by: Pankaj Gupta <pagupta@redhat.com>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>

Acked-by: Michal Hocko <mhocko@suse.com>

> ---
>  include/linux/mmzone.h |   70 ++++++++++++++++++++++++++----------------------
>  mm/page_alloc.c        |   30 ++++++++-------------
>  2 files changed, 49 insertions(+), 51 deletions(-)
> 
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index 125f300981c6..2ddf1f1971c0 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -100,29 +100,6 @@ struct free_area {
>  	unsigned long		nr_free;
>  };
>  
> -/* Used for pages not on another list */
> -static inline void add_to_free_area(struct page *page, struct free_area *area,
> -			     int migratetype)
> -{
> -	list_add(&page->lru, &area->free_list[migratetype]);
> -	area->nr_free++;
> -}
> -
> -/* Used for pages not on another list */
> -static inline void add_to_free_area_tail(struct page *page, struct free_area *area,
> -				  int migratetype)
> -{
> -	list_add_tail(&page->lru, &area->free_list[migratetype]);
> -	area->nr_free++;
> -}
> -
> -/* Used for pages which are on another list */
> -static inline void move_to_free_area(struct page *page, struct free_area *area,
> -			     int migratetype)
> -{
> -	list_move(&page->lru, &area->free_list[migratetype]);
> -}
> -
>  static inline struct page *get_page_from_free_area(struct free_area *area,
>  					    int migratetype)
>  {
> @@ -130,15 +107,6 @@ static inline struct page *get_page_from_free_area(struct free_area *area,
>  					struct page, lru);
>  }
>  
> -static inline void del_page_from_free_area(struct page *page,
> -		struct free_area *area)
> -{
> -	list_del(&page->lru);
> -	__ClearPageBuddy(page);
> -	set_page_private(page, 0);
> -	area->nr_free--;
> -}
> -
>  static inline bool free_area_empty(struct free_area *area, int migratetype)
>  {
>  	return list_empty(&area->free_list[migratetype]);
> @@ -796,6 +764,44 @@ static inline bool pgdat_is_empty(pg_data_t *pgdat)
>  	return !pgdat->node_start_pfn && !pgdat->node_spanned_pages;
>  }
>  
> +/* Used for pages not on another list */
> +static inline void add_to_free_list(struct page *page, struct zone *zone,
> +				    unsigned int order, int migratetype)
> +{
> +	struct free_area *area = &zone->free_area[order];
> +
> +	list_add(&page->lru, &area->free_list[migratetype]);
> +	area->nr_free++;
> +}
> +
> +/* Used for pages not on another list */
> +static inline void add_to_free_list_tail(struct page *page, struct zone *zone,
> +					 unsigned int order, int migratetype)
> +{
> +	struct free_area *area = &zone->free_area[order];
> +
> +	list_add_tail(&page->lru, &area->free_list[migratetype]);
> +	area->nr_free++;
> +}
> +
> +/* Used for pages which are on another list */
> +static inline void move_to_free_list(struct page *page, struct zone *zone,
> +				     unsigned int order, int migratetype)
> +{
> +	struct free_area *area = &zone->free_area[order];
> +
> +	list_move(&page->lru, &area->free_list[migratetype]);
> +}
> +
> +static inline void del_page_from_free_list(struct page *page, struct zone *zone,
> +					   unsigned int order)
> +{
> +	list_del(&page->lru);
> +	__ClearPageBuddy(page);
> +	set_page_private(page, 0);
> +	zone->free_area[order].nr_free--;
> +}
> +
>  #include <linux/memory_hotplug.h>
>  
>  void build_all_zonelists(pg_data_t *pgdat);
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index a791f2baeeeb..f85dc1561b85 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -921,7 +921,6 @@ static inline void __free_one_page(struct page *page,
>  	struct capture_control *capc = task_capc(zone);
>  	unsigned long uninitialized_var(buddy_pfn);
>  	unsigned long combined_pfn;
> -	struct free_area *area;
>  	unsigned int max_order;
>  	struct page *buddy;
>  
> @@ -958,7 +957,7 @@ static inline void __free_one_page(struct page *page,
>  		if (page_is_guard(buddy))
>  			clear_page_guard(zone, buddy, order, migratetype);
>  		else
> -			del_page_from_free_area(buddy, &zone->free_area[order]);
> +			del_page_from_free_list(buddy, zone, order);
>  		combined_pfn = buddy_pfn & pfn;
>  		page = page + (combined_pfn - pfn);
>  		pfn = combined_pfn;
> @@ -992,12 +991,11 @@ static inline void __free_one_page(struct page *page,
>  done_merging:
>  	set_page_order(page, order);
>  
> -	area = &zone->free_area[order];
>  	if (is_shuffle_order(order) ? shuffle_pick_tail() :
>  	    buddy_merge_likely(pfn, buddy_pfn, page, order))
> -		add_to_free_area_tail(page, area, migratetype);
> +		add_to_free_list_tail(page, zone, order, migratetype);
>  	else
> -		add_to_free_area(page, area, migratetype);
> +		add_to_free_list(page, zone, order, migratetype);
>  }
>  
>  /*
> @@ -2001,13 +1999,11 @@ void __init init_cma_reserved_pageblock(struct page *page)
>   * -- nyc
>   */
>  static inline void expand(struct zone *zone, struct page *page,
> -	int low, int high, struct free_area *area,
> -	int migratetype)
> +	int low, int high, int migratetype)
>  {
>  	unsigned long size = 1 << high;
>  
>  	while (high > low) {
> -		area--;
>  		high--;
>  		size >>= 1;
>  		VM_BUG_ON_PAGE(bad_range(zone, &page[size]), &page[size]);
> @@ -2021,7 +2017,7 @@ static inline void expand(struct zone *zone, struct page *page,
>  		if (set_page_guard(zone, &page[size], high, migratetype))
>  			continue;
>  
> -		add_to_free_area(&page[size], area, migratetype);
> +		add_to_free_list(&page[size], zone, high, migratetype);
>  		set_page_order(&page[size], high);
>  	}
>  }
> @@ -2179,8 +2175,8 @@ struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,
>  		page = get_page_from_free_area(area, migratetype);
>  		if (!page)
>  			continue;
> -		del_page_from_free_area(page, area);
> -		expand(zone, page, order, current_order, area, migratetype);
> +		del_page_from_free_list(page, zone, current_order);
> +		expand(zone, page, order, current_order, migratetype);
>  		set_pcppage_migratetype(page, migratetype);
>  		return page;
>  	}
> @@ -2188,7 +2184,6 @@ struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,
>  	return NULL;
>  }
>  
> -
>  /*
>   * This array describes the order lists are fallen back to when
>   * the free lists for the desirable migrate type are depleted
> @@ -2254,7 +2249,7 @@ static int move_freepages(struct zone *zone,
>  		VM_BUG_ON_PAGE(page_zone(page) != zone, page);
>  
>  		order = page_order(page);
> -		move_to_free_area(page, &zone->free_area[order], migratetype);
> +		move_to_free_list(page, zone, order, migratetype);
>  		page += 1 << order;
>  		pages_moved += 1 << order;
>  	}
> @@ -2370,7 +2365,6 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page,
>  		unsigned int alloc_flags, int start_type, bool whole_block)
>  {
>  	unsigned int current_order = page_order(page);
> -	struct free_area *area;
>  	int free_pages, movable_pages, alike_pages;
>  	int old_block_type;
>  
> @@ -2441,8 +2435,7 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page,
>  	return;
>  
>  single_page:
> -	area = &zone->free_area[current_order];
> -	move_to_free_area(page, area, start_type);
> +	move_to_free_list(page, zone, current_order, start_type);
>  }
>  
>  /*
> @@ -3113,7 +3106,6 @@ void split_page(struct page *page, unsigned int order)
>  
>  int __isolate_free_page(struct page *page, unsigned int order)
>  {
> -	struct free_area *area = &page_zone(page)->free_area[order];
>  	unsigned long watermark;
>  	struct zone *zone;
>  	int mt;
> @@ -3139,7 +3131,7 @@ int __isolate_free_page(struct page *page, unsigned int order)
>  
>  	/* Remove page from free list */
>  
> -	del_page_from_free_area(page, area);
> +	del_page_from_free_list(page, zone, order);
>  
>  	/*
>  	 * Set the pageblock if the isolated page is at least half of a
> @@ -8560,7 +8552,7 @@ void zone_pcp_reset(struct zone *zone)
>  		pr_info("remove from free list %lx %d %lx\n",
>  			pfn, 1 << order, end_pfn);
>  #endif
> -		del_page_from_free_area(page, &zone->free_area[order]);
> +		del_page_from_free_list(page, zone, order);
>  		for (i = 0; i < (1 << order); i++)
>  			SetPageReserved((page+i));
>  		pfn += (1 << order);

-- 
Michal Hocko
SUSE Labs

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-09-10 12:27 UTC|newest]

Thread overview: 241+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-07 17:25 [PATCH v9 0/8] stg mail -e --version=v9 \ Alexander Duyck
2019-09-07 17:25 ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25 ` Alexander Duyck
2019-09-07 17:25 ` [PATCH v9 1/8] mm: Add per-cpu logic to page shuffling Alexander Duyck
2019-09-07 17:25   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25   ` Alexander Duyck
2019-09-09  8:14   ` David Hildenbrand
2019-09-09  8:14     ` [virtio-dev] " David Hildenbrand
2019-09-09  8:14     ` David Hildenbrand
2019-09-09 15:11     ` Alexander Duyck
2019-09-09 15:11       ` [virtio-dev] " Alexander Duyck
2019-09-09 15:11       ` Alexander Duyck
2019-09-09 15:11       ` Alexander Duyck
2019-09-10 12:11       ` Michal Hocko
2019-09-10 12:11         ` Michal Hocko
2019-09-10 22:14         ` Alexander Duyck
2019-09-10 22:14           ` [virtio-dev] " Alexander Duyck
2019-09-10 22:14           ` Alexander Duyck
2019-09-10 22:14           ` Alexander Duyck
2019-09-10 22:11     ` Alexander Duyck
2019-09-10 22:11       ` [virtio-dev] " Alexander Duyck
2019-09-10 22:11       ` Alexander Duyck
2019-09-10 22:11       ` Alexander Duyck
2019-09-09  9:07   ` Kirill A. Shutemov
2019-09-09  9:07     ` Kirill A. Shutemov
2019-09-09 15:12     ` Alexander Duyck
2019-09-09 15:12       ` [virtio-dev] " Alexander Duyck
2019-09-09 15:12       ` Alexander Duyck
2019-09-09 15:12       ` Alexander Duyck
2019-09-07 17:25 ` [PATCH v9 2/8] mm: Adjust shuffle code to allow for future coalescing Alexander Duyck
2019-09-07 17:25   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25   ` Alexander Duyck
2019-09-09  8:19   ` David Hildenbrand
2019-09-09  8:19     ` [virtio-dev] " David Hildenbrand
2019-09-09  8:19     ` David Hildenbrand
2019-09-09  9:47   ` Kirill A. Shutemov
2019-09-09  9:47     ` Kirill A. Shutemov
2019-09-09 15:22     ` Alexander Duyck
2019-09-09 15:22       ` [virtio-dev] " Alexander Duyck
2019-09-09 15:22       ` Alexander Duyck
2019-09-09 15:22       ` Alexander Duyck
2019-09-09 15:35       ` Kirill A. Shutemov
2019-09-09 15:35         ` Kirill A. Shutemov
2019-09-09 15:37         ` Alexander Duyck
2019-09-09 15:37           ` [virtio-dev] " Alexander Duyck
2019-09-09 15:37           ` Alexander Duyck
2019-09-09 15:37           ` Alexander Duyck
2019-09-09 16:43     ` Alexander Duyck
2019-09-09 16:43       ` [virtio-dev] " Alexander Duyck
2019-09-09 16:43       ` Alexander Duyck
2019-09-09 16:43       ` Alexander Duyck
2019-09-09 17:00       ` Kirill A. Shutemov
2019-09-09 17:00         ` Kirill A. Shutemov
2019-09-10 12:20   ` Michal Hocko
2019-09-10 12:20     ` Michal Hocko
2019-09-10 14:48     ` Alexander Duyck
2019-09-10 14:48       ` [virtio-dev] " Alexander Duyck
2019-09-10 14:48       ` Alexander Duyck
2019-09-10 14:48       ` Alexander Duyck
2019-09-07 17:25 ` [PATCH v9 3/8] mm: Move set/get_pcppage_migratetype to mmzone.h Alexander Duyck
2019-09-07 17:25   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25   ` Alexander Duyck
2019-09-09  8:22   ` David Hildenbrand
2019-09-09  8:22     ` [virtio-dev] " David Hildenbrand
2019-09-09  8:22     ` David Hildenbrand
2019-09-09  9:56   ` Kirill A. Shutemov
2019-09-09  9:56     ` Kirill A. Shutemov
2019-09-09 18:01     ` Alexander Duyck
2019-09-09 18:01       ` [virtio-dev] " Alexander Duyck
2019-09-09 18:01       ` Alexander Duyck
2019-09-09 18:01       ` Alexander Duyck
2019-09-09 18:12       ` Alexander Duyck
2019-09-09 18:12         ` [virtio-dev] " Alexander Duyck
2019-09-09 18:12         ` Alexander Duyck
2019-09-09 18:12         ` Alexander Duyck
2019-09-10 12:23   ` Michal Hocko
2019-09-10 12:23     ` Michal Hocko
2019-09-10 14:46     ` Alexander Duyck
2019-09-10 14:46       ` [virtio-dev] " Alexander Duyck
2019-09-10 14:46       ` Alexander Duyck
2019-09-10 14:46       ` Alexander Duyck
2019-09-10 17:45       ` Michal Hocko
2019-09-10 17:45         ` Michal Hocko
2019-09-10 20:26         ` Alexander Duyck
2019-09-10 20:26           ` [virtio-dev] " Alexander Duyck
2019-09-10 20:26           ` Alexander Duyck
2019-09-10 20:26           ` Alexander Duyck
2019-09-07 17:25 ` [PATCH v9 4/8] mm: Use zone and order instead of free area in free_list manipulators Alexander Duyck
2019-09-07 17:25   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25   ` Alexander Duyck
2019-09-10 12:27   ` Michal Hocko [this message]
2019-09-10 12:27     ` Michal Hocko
2019-09-07 17:25 ` [PATCH v9 5/8] arm64: Move hugetlb related definitions out of pgtable.h to page-defs.h Alexander Duyck
2019-09-07 17:25   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25   ` Alexander Duyck
2019-09-09  8:52   ` David Hildenbrand
2019-09-09  8:52     ` [virtio-dev] " David Hildenbrand
2019-09-09  8:52     ` David Hildenbrand
2019-09-09 15:27     ` Alexander Duyck
2019-09-09 15:27       ` [virtio-dev] " Alexander Duyck
2019-09-09 15:27       ` Alexander Duyck
2019-09-09 15:27       ` Alexander Duyck
2019-09-17 17:48   ` Will Deacon
2019-09-17 17:48     ` Will Deacon
2019-09-17 20:07     ` Alexander Duyck
2019-09-17 20:07       ` [virtio-dev] " Alexander Duyck
2019-09-17 20:07       ` Alexander Duyck
2019-09-17 20:07       ` Alexander Duyck
2019-09-07 17:25 ` [PATCH v9 6/8] mm: Introduce Reported pages Alexander Duyck
2019-09-07 17:25   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:25   ` Alexander Duyck
2019-09-09 14:42   ` Kirill A. Shutemov
2019-09-09 14:42     ` Kirill A. Shutemov
2019-09-09 16:25     ` Alexander Duyck
2019-09-09 16:25       ` [virtio-dev] " Alexander Duyck
2019-09-09 16:25       ` Alexander Duyck
2019-09-09 16:25       ` Alexander Duyck
2019-09-09 16:33       ` Kirill A. Shutemov
2019-09-09 16:33         ` Kirill A. Shutemov
2019-09-07 17:26 ` [PATCH v9 7/8] virtio-balloon: Pull page poisoning config out of free page hinting Alexander Duyck
2019-09-07 17:26   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:26   ` Alexander Duyck
2019-09-09  8:59   ` David Hildenbrand
2019-09-09  8:59     ` [virtio-dev] " David Hildenbrand
2019-09-09  8:59     ` David Hildenbrand
2019-09-09 15:31     ` Alexander Duyck
2019-09-09 15:31       ` [virtio-dev] " Alexander Duyck
2019-09-09 15:31       ` Alexander Duyck
2019-09-09 15:31       ` Alexander Duyck
2019-09-07 17:26 ` [PATCH v9 8/8] virtio-balloon: Add support for providing unused page reports to host Alexander Duyck
2019-09-07 17:26   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:26   ` Alexander Duyck
2019-09-07 17:34 ` [PATCH v9 0/8] mm / virtio: Provide support for unused page reporting Alexander Duyck
2019-09-07 17:34   ` [virtio-dev] " Alexander Duyck
2019-09-07 17:34   ` Alexander Duyck
2019-09-07 17:34   ` Alexander Duyck
2019-09-10 12:42 ` [PATCH v9 0/8] stg mail -e --version=v9 \ Michal Hocko
2019-09-10 12:42   ` Michal Hocko
2019-09-10 14:42   ` Alexander Duyck
2019-09-10 14:42     ` [virtio-dev] " Alexander Duyck
2019-09-10 14:42     ` Alexander Duyck
2019-09-10 14:42     ` Alexander Duyck
2019-09-10 14:47     ` Michal Hocko
2019-09-10 14:47       ` Michal Hocko
2019-09-10 16:05       ` Alexander Duyck
2019-09-10 16:05         ` [virtio-dev] " Alexander Duyck
2019-09-10 16:05         ` Alexander Duyck
2019-09-10 16:05         ` Alexander Duyck
2019-09-10 16:18         ` [virtio-dev] " Dr. David Alan Gilbert
2019-09-10 16:18           ` Dr. David Alan Gilbert
2019-09-10 16:18           ` Dr. David Alan Gilbert
2019-09-10 16:22           ` David Hildenbrand
2019-09-10 16:22             ` David Hildenbrand
2019-09-10 16:22             ` David Hildenbrand
2019-09-11  9:23             ` Michael S. Tsirkin
2019-09-11  9:23               ` Michael S. Tsirkin
2019-09-11  9:23               ` Michael S. Tsirkin
2019-09-11  9:50               ` David Hildenbrand
2019-09-11  9:50                 ` David Hildenbrand
2019-09-11  9:50                 ` David Hildenbrand
2019-09-10 17:52         ` Michal Hocko
2019-09-10 17:52           ` Michal Hocko
2019-09-10 18:00           ` Michal Hocko
2019-09-10 18:00             ` Michal Hocko
2019-09-10 20:37             ` Alexander Duyck
2019-09-10 20:37               ` [virtio-dev] " Alexander Duyck
2019-09-10 20:37               ` Alexander Duyck
2019-09-10 20:37               ` Alexander Duyck
2019-09-10 21:23           ` Alexander Duyck
2019-09-10 21:23             ` [virtio-dev] " Alexander Duyck
2019-09-10 21:23             ` Alexander Duyck
2019-09-10 21:23             ` Alexander Duyck
2019-09-11 11:36             ` Michal Hocko
2019-09-11 11:36               ` Michal Hocko
2019-09-11 11:47               ` David Hildenbrand
2019-09-11 11:47                 ` [virtio-dev] " David Hildenbrand
2019-09-11 11:47                 ` David Hildenbrand
2019-09-11 12:08               ` Michael S. Tsirkin
2019-09-11 12:08                 ` [virtio-dev] " Michael S. Tsirkin
2019-09-11 12:08                 ` Michael S. Tsirkin
2019-09-11 12:19                 ` Michal Hocko
2019-09-11 12:19                   ` Michal Hocko
2019-09-11 12:25                   ` Michal Hocko
2019-09-11 12:25                     ` Michal Hocko
2019-09-11 12:42                     ` David Hildenbrand
2019-09-11 12:42                       ` [virtio-dev] " David Hildenbrand
2019-09-11 12:42                       ` David Hildenbrand
2019-09-11 12:54                       ` Michal Hocko
2019-09-11 12:54                         ` Michal Hocko
2019-09-11 13:03                         ` David Hildenbrand
2019-09-11 13:03                           ` [virtio-dev] " David Hildenbrand
2019-09-11 13:03                           ` David Hildenbrand
2019-09-11 13:20                           ` Michal Hocko
2019-09-11 13:20                             ` Michal Hocko
2019-09-11 13:51                             ` Michal Hocko
2019-09-11 13:51                               ` Michal Hocko
2019-09-11 16:09                               ` David Hildenbrand
2019-09-11 16:09                                 ` [virtio-dev] " David Hildenbrand
2019-09-11 16:09                                 ` David Hildenbrand
2019-09-12  7:16                                 ` Michal Hocko
2019-09-12  7:16                                   ` Michal Hocko
2019-09-12  7:47                                   ` David Hildenbrand
2019-09-12  7:47                                     ` [virtio-dev] " David Hildenbrand
2019-09-12  7:47                                     ` David Hildenbrand
2019-09-12  9:26                                     ` Michal Hocko
2019-09-12  9:26                                       ` Michal Hocko
2019-09-12 12:00                                     ` Nitesh Narayan Lal
2019-09-12 12:00                                       ` [virtio-dev] " Nitesh Narayan Lal
2019-09-12 12:00                                       ` Nitesh Narayan Lal
2019-09-11 14:03                             ` Nitesh Narayan Lal
2019-09-11 14:03                               ` [virtio-dev] " Nitesh Narayan Lal
2019-09-11 14:03                               ` Nitesh Narayan Lal
2019-09-11 16:02                             ` David Hildenbrand
2019-09-11 16:02                               ` [virtio-dev] " David Hildenbrand
2019-09-11 16:02                               ` David Hildenbrand
2019-09-11 13:19                         ` Nitesh Narayan Lal
2019-09-11 13:19                           ` [virtio-dev] " Nitesh Narayan Lal
2019-09-11 13:19                           ` Nitesh Narayan Lal
2019-09-11 12:55                       ` Nitesh Narayan Lal
2019-09-11 12:55                         ` [virtio-dev] " Nitesh Narayan Lal
2019-09-11 12:55                         ` Nitesh Narayan Lal
2019-09-11 15:12               ` Alexander Duyck
2019-09-11 15:12                 ` [virtio-dev] " Alexander Duyck
2019-09-11 15:12                 ` Alexander Duyck
2019-09-11 15:12                 ` Alexander Duyck
2019-09-12  9:19                 ` Michal Hocko
2019-09-12  9:19                   ` Michal Hocko
2019-09-12 10:24                   ` Kirill A. Shutemov
2019-09-12 10:24                     ` Kirill A. Shutemov
2019-09-12 11:11                     ` Michal Hocko
2019-09-12 11:11                       ` Michal Hocko
2019-09-12 15:42                   ` Alexander Duyck
2019-09-12 15:42                     ` [virtio-dev] " Alexander Duyck
2019-09-12 15:42                     ` Alexander Duyck
2019-09-12 15:42                     ` Alexander Duyck
2019-09-12 16:35                   ` Mel Gorman
2019-09-12 16:35                     ` Mel Gorman
2019-09-12 17:48                     ` Alexander Duyck
2019-09-12 17:48                       ` [virtio-dev] " Alexander Duyck
2019-09-12 17:48                       ` Alexander Duyck
2019-09-12 17:48                       ` Alexander Duyck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190910122707.GX2063@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.duyck@gmail.com \
    --cc=alexander.h.duyck@linux.intel.com \
    --cc=catalin.marinas@arm.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=david@redhat.com \
    --cc=fengguang.wu@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=lcapitulino@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mst@redhat.com \
    --cc=nitesh@redhat.com \
    --cc=osalvador@suse.de \
    --cc=pagupta@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=riel@surriel.com \
    --cc=virtio-dev@lists.oasis-open.org \
    --cc=wei.w.wang@intel.com \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=yang.zhang.wz@gmail.com \
    --cc=ying.huang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.