All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlastimil Babka <vbabka@suse.cz>
To: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Minchan Kim <minchan@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"jlayton@poochiereds.net" <jlayton@poochiereds.net>,
	"bfields@fieldses.org" <bfields@fieldses.org>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	"koct9i@gmail.com" <koct9i@gmail.com>,
	"aquini@redhat.com" <aquini@redhat.com>,
	"virtualization@lists.linux-foundation.org" 
	<virtualization@lists.linux-foundation.org>,
	Mel Gorman <mgorman@suse.de>, Hugh Dickins <hughd@google.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Rik van Riel <riel@redhat.com>,
	"rknize@motorola.com" <rknize@motorola.com>,
	Gioh Kim <gi-oh.kim@profitbricks.com>,
	Sangseok Lee <sangseok.lee@lge.com>,
	Chan Gyun Jeong <chan.jeong@lge.com>,
	Al Viro <viro@ZenIV.linux.org.uk>,
	YiPing Xu <xuyiping@hisilicon.com>
Subject: Re: [PATCH v3 01/16] mm: use put_page to free page instead of putback_lru_page
Date: Wed, 6 Apr 2016 09:57:28 +0200	[thread overview]
Message-ID: <5704C168.1060803@suse.cz> (raw)
In-Reply-To: <20160406005403.GA29576@hori1.linux.bs1.fc.nec.co.jp>

On 04/06/2016 02:54 AM, Naoya Horiguchi wrote:
> On Tue, Apr 05, 2016 at 10:20:50AM +0200, Vlastimil Babka wrote:
>>
>> So you agree that this race is a bug? It may turn a soft-offline attempt
>> into a killed process. In that case we should fix it the same as we are
>> fixing the failed migration case.
> 
> I agree, it's a bug, although rare and non-critical.
> 
>> Maybe it will be just enough to switch
>> the test_set_page_hwpoison() and put_page() calls?
> 
> Unfortunately that restores the other race with unpoison (described below.)
> Sorry for my bad/unclear statements, these races seems exclusive and a compatible
> solution is not found, so I prioritized fixing the latter one by comparing
> severity (the latter causes kernel crash,) which led to the current code.

Ah, I see. However unpoison is a functionality just for stress-testing,
and not expected to be used in production, right? So it's somewhat
unfortunate trade-off with danger of soft-offlining killing an unrelated
process.

>>> And another practical thing is the race with unpoison_memory() as described
>>> in commit da1b13ccfbebe. unpoison_memory() properly works only for properly
>>> poisoned pages, so doing unpoison for in-use hwpoisoned pages is fragile.
>>> That's why I'd like to avoid setting PageHWPoison for in-use pages if possible.
>>>
>>>> (Also, which part prevents pages with PageHWPoison to be allocated
>>>> again, anyway? I can't find it and test_set_page_hwpoison() doesn't
>>>> remove from buddy freelists).
>>>
>>> check_new_page() in mm/page_alloc.c should prevent reallocation of PageHWPoison.
>>> As you pointed out, memory error handler doens't remove it from buddy freelists.
>>
>> Oh, I see. It's using __PG_HWPOISON wrapper, so I didn't notice it when
>> searching. In any case that results in a bad_page() warning, right? Is
>> it desirable for a soft-offlined page?
> 
> That's right, and the bad_page warning might be too strong for soft offlining.
> We can't tell which of memory_failure/soft_offline_page a PageHWPoison came
> from, but users can find other lines in dmesg which should tell that.
> And memory error events can hit buddy pages directly, in that case we still
> need the check in check_new_page().

Ah, ok.

>> If we didn't free poisoned pages
>> to buddy system, they wouldn't trigger this warning.
> 
> Actually, we didn't free at commit add05cecef80 ("mm: soft-offline: don't free
> target page in successful page migration"), but that's was reverted in
> commit f4c18e6f7b5b ("mm: check __PG_HWPOISON separately from PAGE_FLAGS_CHECK_AT_*").
> Now I start thinking the revert was a bad decision, so I'll dig this problem again.

Good.

>>> BTW, it might be a bit off-topic, but recently I felt that check_new_page()
>>> might be improvable, because when check_new_page() returns 1, the whole buddy
>>> block (not only the bad page) seems to be leaked from buddy freelist.
>>> For example, if thp (order 9) is requested, and PageHWPoison (or any other
>>> types of bad pages) is found in an order 9 block, all 512 page are discarded.
>>> Unpoison can't bring it back to buddy.
>>> So, some code to split buddy block including bad page (and recovering code from
>>> unpoison) might be helpful, although that's another story ...
>>
>> Hm sounds like another argument for not freeing the page to buddy lists
>> in the first place. Maybe a hook in free_pages_check()?
> 
> Sounds a good idea. I'll try it, too.

So what I think could hopefully work is to replace the put_page() after
migration with a hwpoison-specific construct that does something like:

if (put_page_testzero(page))
     if (test_set_page_hwpoison()) ...
     __put_page()

With some more thought about what other parts of put_page() apply - how
to handle compound pages and zone-device pages.

That should hopefully be the safest course. When put_page_testzero()
succeeds, there should be no other (current of near-future) users of the
page, and we can still do whatever we need before releasing to
__put_page(). I.e. set the HWPoison flag, and maybe combine this with
modification to free_pages_check() to divert it from becoming a buddy page.

It should be even safer than the current "put_page();
test_set_page_hwpoison();" approach in that we are currently not
guaranteed that the put_page() is indeed releasing the last pin, but we
set HWPoison in any case. Although we have just migrated the page away,
there might be a pfn scanner holding its pin and checking the page.
Hopefully no such scanner has a path that would break on HWPoison flag,
but I don't know. By not setting the HWpoison when we don't succeed
put_page_testzero(), we are safer. It's true the page might stay
unpoisoned due to a temporary pin, but the process data was migrated
away which is the important part, and userspace can retry anyway?

WARNING: multiple messages have this Message-ID (diff)
From: Vlastimil Babka <vbabka@suse.cz>
To: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Minchan Kim <minchan@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"jlayton@poochiereds.net" <jlayton@poochiereds.net>,
	"bfields@fieldses.org" <bfields@fieldses.org>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	"koct9i@gmail.com" <koct9i@gmail.com>,
	"aquini@redhat.com" <aquini@redhat.com>,
	"virtualization@lists.linux-foundation.org"
	<virtualization@lists.linux-foundation.org>,
	Mel Gorman <mgorman@suse.de>, Hugh Dickins <hughd@google.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Rik van Riel <riel@redhat.com>,
	"rknize@motorola.com" <rknize@motorola.com>,
	Gioh Kim <gi-oh.kim@profitbricks.com>,
	Sangseok Lee <sangseok.lee@lge.com>,
	Chan Gyun Jeong <chan.jeong@lge.com>,
	Al Viro <viro@ZenIV.linux.org.uk>,
	YiPing Xu <xuyiping@hisilicon.com>
Subject: Re: [PATCH v3 01/16] mm: use put_page to free page instead of putback_lru_page
Date: Wed, 6 Apr 2016 09:57:28 +0200	[thread overview]
Message-ID: <5704C168.1060803@suse.cz> (raw)
In-Reply-To: <20160406005403.GA29576@hori1.linux.bs1.fc.nec.co.jp>

On 04/06/2016 02:54 AM, Naoya Horiguchi wrote:
> On Tue, Apr 05, 2016 at 10:20:50AM +0200, Vlastimil Babka wrote:
>>
>> So you agree that this race is a bug? It may turn a soft-offline attempt
>> into a killed process. In that case we should fix it the same as we are
>> fixing the failed migration case.
> 
> I agree, it's a bug, although rare and non-critical.
> 
>> Maybe it will be just enough to switch
>> the test_set_page_hwpoison() and put_page() calls?
> 
> Unfortunately that restores the other race with unpoison (described below.)
> Sorry for my bad/unclear statements, these races seems exclusive and a compatible
> solution is not found, so I prioritized fixing the latter one by comparing
> severity (the latter causes kernel crash,) which led to the current code.

Ah, I see. However unpoison is a functionality just for stress-testing,
and not expected to be used in production, right? So it's somewhat
unfortunate trade-off with danger of soft-offlining killing an unrelated
process.

>>> And another practical thing is the race with unpoison_memory() as described
>>> in commit da1b13ccfbebe. unpoison_memory() properly works only for properly
>>> poisoned pages, so doing unpoison for in-use hwpoisoned pages is fragile.
>>> That's why I'd like to avoid setting PageHWPoison for in-use pages if possible.
>>>
>>>> (Also, which part prevents pages with PageHWPoison to be allocated
>>>> again, anyway? I can't find it and test_set_page_hwpoison() doesn't
>>>> remove from buddy freelists).
>>>
>>> check_new_page() in mm/page_alloc.c should prevent reallocation of PageHWPoison.
>>> As you pointed out, memory error handler doens't remove it from buddy freelists.
>>
>> Oh, I see. It's using __PG_HWPOISON wrapper, so I didn't notice it when
>> searching. In any case that results in a bad_page() warning, right? Is
>> it desirable for a soft-offlined page?
> 
> That's right, and the bad_page warning might be too strong for soft offlining.
> We can't tell which of memory_failure/soft_offline_page a PageHWPoison came
> from, but users can find other lines in dmesg which should tell that.
> And memory error events can hit buddy pages directly, in that case we still
> need the check in check_new_page().

Ah, ok.

>> If we didn't free poisoned pages
>> to buddy system, they wouldn't trigger this warning.
> 
> Actually, we didn't free at commit add05cecef80 ("mm: soft-offline: don't free
> target page in successful page migration"), but that's was reverted in
> commit f4c18e6f7b5b ("mm: check __PG_HWPOISON separately from PAGE_FLAGS_CHECK_AT_*").
> Now I start thinking the revert was a bad decision, so I'll dig this problem again.

Good.

>>> BTW, it might be a bit off-topic, but recently I felt that check_new_page()
>>> might be improvable, because when check_new_page() returns 1, the whole buddy
>>> block (not only the bad page) seems to be leaked from buddy freelist.
>>> For example, if thp (order 9) is requested, and PageHWPoison (or any other
>>> types of bad pages) is found in an order 9 block, all 512 page are discarded.
>>> Unpoison can't bring it back to buddy.
>>> So, some code to split buddy block including bad page (and recovering code from
>>> unpoison) might be helpful, although that's another story ...
>>
>> Hm sounds like another argument for not freeing the page to buddy lists
>> in the first place. Maybe a hook in free_pages_check()?
> 
> Sounds a good idea. I'll try it, too.

So what I think could hopefully work is to replace the put_page() after
migration with a hwpoison-specific construct that does something like:

if (put_page_testzero(page))
     if (test_set_page_hwpoison()) ...
     __put_page()

With some more thought about what other parts of put_page() apply - how
to handle compound pages and zone-device pages.

That should hopefully be the safest course. When put_page_testzero()
succeeds, there should be no other (current of near-future) users of the
page, and we can still do whatever we need before releasing to
__put_page(). I.e. set the HWPoison flag, and maybe combine this with
modification to free_pages_check() to divert it from becoming a buddy page.

It should be even safer than the current "put_page();
test_set_page_hwpoison();" approach in that we are currently not
guaranteed that the put_page() is indeed releasing the last pin, but we
set HWPoison in any case. Although we have just migrated the page away,
there might be a pfn scanner holding its pin and checking the page.
Hopefully no such scanner has a path that would break on HWPoison flag,
but I don't know. By not setting the HWpoison when we don't succeed
put_page_testzero(), we are safer. It's true the page might stay
unpoisoned due to a temporary pin, but the process data was migrated
away which is the important part, and userspace can retry anyway?

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2016-04-06  7:57 UTC|newest]

Thread overview: 185+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-30  7:11 [PATCH v3 00/16] Support non-lru page migration Minchan Kim
2016-03-30  7:11 ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 01/16] mm: use put_page to free page instead of putback_lru_page Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-01 12:58   ` Vlastimil Babka
2016-04-01 12:58     ` Vlastimil Babka
2016-04-01 12:58     ` Vlastimil Babka
2016-04-04  1:39     ` Minchan Kim
2016-04-04  1:39       ` Minchan Kim
2016-04-04  1:39       ` Minchan Kim
2016-04-04  4:45       ` Naoya Horiguchi
2016-04-04  4:45         ` Naoya Horiguchi
2016-04-04 14:46         ` Vlastimil Babka
2016-04-04 14:46           ` Vlastimil Babka
2016-04-04 14:46           ` Vlastimil Babka
2016-04-05  1:54           ` Naoya Horiguchi
2016-04-05  1:54             ` Naoya Horiguchi
2016-04-05  1:54             ` Naoya Horiguchi
2016-04-05  8:20             ` Vlastimil Babka
2016-04-05  8:20               ` Vlastimil Babka
2016-04-05  8:20               ` Vlastimil Babka
2016-04-06  0:54               ` Naoya Horiguchi
2016-04-06  0:54                 ` Naoya Horiguchi
2016-04-06  0:54                 ` Naoya Horiguchi
2016-04-06  7:57                 ` Vlastimil Babka
2016-04-06  7:57                 ` Vlastimil Babka [this message]
2016-04-06  7:57                   ` Vlastimil Babka
2016-04-04  4:45       ` Naoya Horiguchi
2016-04-04  5:53   ` Balbir Singh
2016-04-04  5:53   ` Balbir Singh
2016-04-04  5:53     ` Balbir Singh
2016-04-04  6:01     ` Minchan Kim
2016-04-04  6:01       ` Minchan Kim
2016-04-04  6:01       ` Minchan Kim
2016-04-05  3:10       ` Balbir Singh
2016-04-05  3:10       ` Balbir Singh
2016-04-05  3:10         ` Balbir Singh
2016-03-30  7:12 ` [PATCH v3 02/16] mm/compaction: support non-lru movable page migration Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-01 21:29   ` Vlastimil Babka
2016-04-01 21:29     ` Vlastimil Babka
2016-04-04  5:12     ` Minchan Kim
2016-04-04  5:12       ` Minchan Kim
2016-04-04 13:24       ` Vlastimil Babka
2016-04-04 13:24         ` Vlastimil Babka
2016-04-04 13:24         ` Vlastimil Babka
2016-04-07  2:35         ` Minchan Kim
2016-04-07  2:35           ` Minchan Kim
2016-04-07  2:35         ` Minchan Kim
2016-04-04 13:24       ` Vlastimil Babka
2016-04-04  5:12     ` Minchan Kim
2016-04-01 21:29   ` Vlastimil Babka
2016-04-12  8:00   ` Chulmin Kim
2016-04-12  8:00     ` Chulmin Kim
2016-04-12 14:25     ` Minchan Kim
2016-04-12 14:25       ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 03/16] mm: add non-lru movable page support document Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-01 14:38   ` Vlastimil Babka
2016-04-01 14:38   ` Vlastimil Babka
2016-04-01 14:38     ` Vlastimil Babka
2016-04-04  2:25     ` Minchan Kim
2016-04-04  2:25       ` Minchan Kim
2016-04-04  2:25       ` Minchan Kim
2016-04-04 13:09       ` Vlastimil Babka
2016-04-04 13:09         ` Vlastimil Babka
2016-04-04 13:09         ` Vlastimil Babka
2016-04-07  2:27         ` Minchan Kim
2016-04-07  2:27         ` Minchan Kim
2016-04-07  2:27           ` Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 04/16] mm/balloon: use general movable page feature into balloon Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-05 12:03   ` Vlastimil Babka
2016-04-05 12:03     ` Vlastimil Babka
2016-04-05 12:03     ` Vlastimil Babka
2016-04-11  4:29     ` Minchan Kim
2016-04-11  4:29     ` Minchan Kim
2016-04-11  4:29       ` Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 05/16] zsmalloc: keep max_object in size_class Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-17 15:08   ` Sergey Senozhatsky
2016-04-17 15:08   ` Sergey Senozhatsky
2016-04-17 15:08     ` Sergey Senozhatsky
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 06/16] zsmalloc: squeeze inuse into page->mapping Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-17 15:08   ` Sergey Senozhatsky
2016-04-17 15:08   ` Sergey Senozhatsky
2016-04-17 15:08     ` Sergey Senozhatsky
2016-04-19  7:40     ` Minchan Kim
2016-04-19  7:40       ` Minchan Kim
2016-04-19  7:40     ` Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 07/16] zsmalloc: remove page_mapcount_reset Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-17 15:11   ` Sergey Senozhatsky
2016-04-17 15:11   ` Sergey Senozhatsky
2016-04-17 15:11     ` Sergey Senozhatsky
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 08/16] zsmalloc: squeeze freelist into page->mapping Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-17 15:56   ` Sergey Senozhatsky
2016-04-17 15:56   ` Sergey Senozhatsky
2016-04-17 15:56     ` Sergey Senozhatsky
2016-04-19  7:42     ` Minchan Kim
2016-04-19  7:42       ` Minchan Kim
2016-04-19  7:42       ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 09/16] zsmalloc: move struct zs_meta from mapping to freelist Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-17 15:22   ` Sergey Senozhatsky
2016-04-17 15:22   ` Sergey Senozhatsky
2016-04-17 15:22     ` Sergey Senozhatsky
2016-03-30  7:12 ` [PATCH v3 10/16] zsmalloc: factor page chain functionality out Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-18  0:33   ` Sergey Senozhatsky
2016-04-18  0:33     ` Sergey Senozhatsky
2016-04-19  7:46     ` Minchan Kim
2016-04-19  7:46       ` Minchan Kim
2016-04-19  7:46     ` Minchan Kim
2016-04-18  0:33   ` Sergey Senozhatsky
2016-03-30  7:12 ` [PATCH v3 11/16] zsmalloc: separate free_zspage from putback_zspage Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-18  1:04   ` Sergey Senozhatsky
2016-04-18  1:04     ` Sergey Senozhatsky
2016-04-19  7:51     ` Minchan Kim
2016-04-19  7:51       ` Minchan Kim
2016-04-19  7:53       ` Sergey Senozhatsky
2016-04-19  7:53         ` Sergey Senozhatsky
2016-04-19  7:53         ` Sergey Senozhatsky
2016-04-19  7:51     ` Minchan Kim
2016-04-18  1:04   ` Sergey Senozhatsky
2016-03-30  7:12 ` [PATCH v3 12/16] zsmalloc: zs_compact refactoring Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-04  8:04   ` Chulmin Kim
2016-04-04  8:04     ` Chulmin Kim
2016-04-04  9:01     ` Minchan Kim
2016-04-04  9:01       ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 13/16] zsmalloc: migrate head page of zspage Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-04-06 13:01   ` Chulmin Kim
2016-04-06 13:01     ` Chulmin Kim
2016-04-07  0:34     ` Chulmin Kim
2016-04-07  0:34       ` Chulmin Kim
2016-04-07  0:43     ` Minchan Kim
2016-04-07  0:43       ` Minchan Kim
2016-04-19  6:08   ` Chulmin Kim
2016-04-19  6:08     ` Chulmin Kim
2016-04-19  6:15     ` Minchan Kim
2016-04-19  6:15       ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 14/16] zsmalloc: use single linked list for page chain Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 15/16] zsmalloc: migrate tail pages in zspage Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-03-30  7:12 ` [PATCH v3 16/16] zram: use __GFP_MOVABLE for memory allocation Minchan Kim
2016-03-30  7:12 ` Minchan Kim
2016-03-30  7:12   ` Minchan Kim
2016-03-30 23:11 ` [PATCH v3 00/16] Support non-lru page migration Andrew Morton
2016-03-30 23:11   ` Andrew Morton
2016-03-30 23:11   ` Andrew Morton
2016-03-31  0:29   ` Sergey Senozhatsky
2016-03-31  0:29   ` Sergey Senozhatsky
2016-03-31  0:29     ` Sergey Senozhatsky
2016-03-31  0:57     ` Minchan Kim
2016-03-31  0:57     ` Minchan Kim
2016-03-31  0:57       ` Minchan Kim
2016-03-31  0:57   ` Minchan Kim
2016-03-31  0:57   ` Minchan Kim
2016-03-31  0:57     ` Minchan Kim
2016-04-04 13:17 ` John Einar Reitan
2016-04-04 13:17 ` John Einar Reitan
2016-04-11  4:35   ` Minchan Kim
2016-04-11  4:35     ` Minchan Kim

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=5704C168.1060803@suse.cz \
    --to=vbabka@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=aquini@redhat.com \
    --cc=bfields@fieldses.org \
    --cc=chan.jeong@lge.com \
    --cc=gi-oh.kim@profitbricks.com \
    --cc=hughd@google.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=jlayton@poochiereds.net \
    --cc=koct9i@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=minchan@kernel.org \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=riel@redhat.com \
    --cc=rknize@motorola.com \
    --cc=sangseok.lee@lge.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=viro@ZenIV.linux.org.uk \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=xuyiping@hisilicon.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.