All of lore.kernel.org
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@parallels.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: <linux-kernel@vger.kernel.org>, <paul@paulmenage.org>,
	<lizf@cn.fujitsu.com>, <ebiederm@xmission.com>,
	<davem@davemloft.net>, <gthelen@google.com>,
	<netdev@vger.kernel.org>, <linux-mm@kvack.org>,
	<kirill@shutemov.name>
Subject: Re: [PATCH v3 1/7] Basic kernel memory functionality for the Memory Controller
Date: Mon, 26 Sep 2011 19:44:40 -0300	[thread overview]
Message-ID: <4E810058.8080305@parallels.com> (raw)
In-Reply-To: <20110926193451.b419f630.kamezawa.hiroyu@jp.fujitsu.com>

>>   #endif
>>
>> -
>> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>> +int do_kmem_account __read_mostly = 1;
>> +#else
>> +#define do_kmem_account		0
>> +#endif
>
>
> Hmm, do we really need this boot option ?
>  From my experience to have swap-accounting boot option,
> this scares us ;) I think config is enough.

If no one else wants it, I can remove it. I personally
don't need it, just wanted to follow the convention laid down by swap here.

>
>
>
>>   /*
>>    * Statistics for memory cgroup.
>>    */
>> @@ -270,6 +274,10 @@ struct mem_cgroup {
>>   	 */
>>   	struct res_counter memsw;
>>   	/*
>> +	 * the counter to account for kmem usage.
>> +	 */
>> +	struct res_counter kmem;
>> +	/*
>>   	 * Per cgroup active and inactive list, similar to the
>>   	 * per zone LRU lists.
>>   	 */
>> @@ -321,6 +329,11 @@ struct mem_cgroup {
>>   	 */
>>   	unsigned long 	move_charge_at_immigrate;
>>   	/*
>> +	 * Should kernel memory limits be stabilished independently
>> +	 * from user memory ?
>> +	 */
>> +	int		kmem_independent;
>> +	/*
>>   	 * percpu counter.
>>   	 */
>>   	struct mem_cgroup_stat_cpu *stat;
>> @@ -388,9 +401,14 @@ enum charge_type {
>>   };
>>
>>   /* for encoding cft->private value on file */
>> -#define _MEM			(0)
>> -#define _MEMSWAP		(1)
>> -#define _OOM_TYPE		(2)
>> +
>> +enum mem_type {
>> +	_MEM = 0,
>> +	_MEMSWAP,
>> +	_OOM_TYPE,
>> +	_KMEM,
>> +};
>> +
>
> ok, nice clean up.
>
>
>>   #define MEMFILE_PRIVATE(x, val)	(((x)<<  16) | (val))
>>   #define MEMFILE_TYPE(val)	(((val)>>  16)&  0xffff)
>>   #define MEMFILE_ATTR(val)	((val)&  0xffff)
>> @@ -3943,10 +3961,15 @@ static inline u64 mem_cgroup_usage(struct mem_cgroup *mem, bool swap)
>>   	u64 val;
>>
>>   	if (!mem_cgroup_is_root(mem)) {
>> +		val = 0;
>> +		if (!mem->kmem_independent)
>> +			val = res_counter_read_u64(&mem->kmem, RES_USAGE);
>
>>   		if (!swap)
>> -			return res_counter_read_u64(&mem->res, RES_USAGE);
>> +			val += res_counter_read_u64(&mem->res, RES_USAGE);
>>   		else
>> -			return res_counter_read_u64(&mem->memsw, RES_USAGE);
>> +			val += res_counter_read_u64(&mem->memsw, RES_USAGE);
>> +
>> +		return val;
>>   	}
>>
>>   	val = mem_cgroup_recursive_stat(mem, MEM_CGROUP_STAT_CACHE);
>> @@ -3979,6 +4002,10 @@ static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft)
>>   		else
>>   			val = res_counter_read_u64(&mem->memsw, name);
>>   		break;
>> +	case _KMEM:
>> +		val = res_counter_read_u64(&mem->kmem, name);
>> +		break;
>> +
>>   	default:
>>   		BUG();
>>   		break;
>> @@ -4756,6 +4783,21 @@ static int mem_cgroup_reset_vmscan_stat(struct cgroup *cgrp,
>>   	return 0;
>>   }
>>
>> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>> +static u64 kmem_limit_independent_read(struct cgroup *cont, struct cftype *cft)
>> +{
>> +	return mem_cgroup_from_cont(cont)->kmem_independent;
>> +}
>> +
>> +static int kmem_limit_independent_write(struct cgroup *cont, struct cftype *cft,
>> +					u64 val)
>> +{
>> +	cgroup_lock();
>> +	mem_cgroup_from_cont(cont)->kmem_independent = !!val;
>> +	cgroup_unlock();
>
> Hm. This code allows that parent/child can have different settings.
> Could you add parent-child check as..
>
> "If parent sets use_hierarchy==1, children must have the same kmem_independent value
> with parant's one."
Agree.
> How do you think ? I think a hierarchy must have the same config.
Yes, I think this is reasonable.

>
> BTW...I don't like naming a little ;)
>
> memory->consolidated/shared/?????_kmem_accounting ?
> Or
> memory->kmem_independent_accounting ?
>
> or some better naming ?

I can go with kmem_independent_accounting if you like, it is fine
by me.



WARNING: multiple messages have this Message-ID (diff)
From: Glauber Costa <glommer@parallels.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-kernel@vger.kernel.org, paul@paulmenage.org,
	lizf@cn.fujitsu.com, ebiederm@xmission.com, davem@davemloft.net,
	gthelen@google.com, netdev@vger.kernel.org, linux-mm@kvack.org,
	kirill@shutemov.name
Subject: Re: [PATCH v3 1/7] Basic kernel memory functionality for the Memory Controller
Date: Mon, 26 Sep 2011 19:44:40 -0300	[thread overview]
Message-ID: <4E810058.8080305@parallels.com> (raw)
In-Reply-To: <20110926193451.b419f630.kamezawa.hiroyu@jp.fujitsu.com>

>>   #endif
>>
>> -
>> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>> +int do_kmem_account __read_mostly = 1;
>> +#else
>> +#define do_kmem_account		0
>> +#endif
>
>
> Hmm, do we really need this boot option ?
>  From my experience to have swap-accounting boot option,
> this scares us ;) I think config is enough.

If no one else wants it, I can remove it. I personally
don't need it, just wanted to follow the convention laid down by swap here.

>
>
>
>>   /*
>>    * Statistics for memory cgroup.
>>    */
>> @@ -270,6 +274,10 @@ struct mem_cgroup {
>>   	 */
>>   	struct res_counter memsw;
>>   	/*
>> +	 * the counter to account for kmem usage.
>> +	 */
>> +	struct res_counter kmem;
>> +	/*
>>   	 * Per cgroup active and inactive list, similar to the
>>   	 * per zone LRU lists.
>>   	 */
>> @@ -321,6 +329,11 @@ struct mem_cgroup {
>>   	 */
>>   	unsigned long 	move_charge_at_immigrate;
>>   	/*
>> +	 * Should kernel memory limits be stabilished independently
>> +	 * from user memory ?
>> +	 */
>> +	int		kmem_independent;
>> +	/*
>>   	 * percpu counter.
>>   	 */
>>   	struct mem_cgroup_stat_cpu *stat;
>> @@ -388,9 +401,14 @@ enum charge_type {
>>   };
>>
>>   /* for encoding cft->private value on file */
>> -#define _MEM			(0)
>> -#define _MEMSWAP		(1)
>> -#define _OOM_TYPE		(2)
>> +
>> +enum mem_type {
>> +	_MEM = 0,
>> +	_MEMSWAP,
>> +	_OOM_TYPE,
>> +	_KMEM,
>> +};
>> +
>
> ok, nice clean up.
>
>
>>   #define MEMFILE_PRIVATE(x, val)	(((x)<<  16) | (val))
>>   #define MEMFILE_TYPE(val)	(((val)>>  16)&  0xffff)
>>   #define MEMFILE_ATTR(val)	((val)&  0xffff)
>> @@ -3943,10 +3961,15 @@ static inline u64 mem_cgroup_usage(struct mem_cgroup *mem, bool swap)
>>   	u64 val;
>>
>>   	if (!mem_cgroup_is_root(mem)) {
>> +		val = 0;
>> +		if (!mem->kmem_independent)
>> +			val = res_counter_read_u64(&mem->kmem, RES_USAGE);
>
>>   		if (!swap)
>> -			return res_counter_read_u64(&mem->res, RES_USAGE);
>> +			val += res_counter_read_u64(&mem->res, RES_USAGE);
>>   		else
>> -			return res_counter_read_u64(&mem->memsw, RES_USAGE);
>> +			val += res_counter_read_u64(&mem->memsw, RES_USAGE);
>> +
>> +		return val;
>>   	}
>>
>>   	val = mem_cgroup_recursive_stat(mem, MEM_CGROUP_STAT_CACHE);
>> @@ -3979,6 +4002,10 @@ static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft)
>>   		else
>>   			val = res_counter_read_u64(&mem->memsw, name);
>>   		break;
>> +	case _KMEM:
>> +		val = res_counter_read_u64(&mem->kmem, name);
>> +		break;
>> +
>>   	default:
>>   		BUG();
>>   		break;
>> @@ -4756,6 +4783,21 @@ static int mem_cgroup_reset_vmscan_stat(struct cgroup *cgrp,
>>   	return 0;
>>   }
>>
>> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>> +static u64 kmem_limit_independent_read(struct cgroup *cont, struct cftype *cft)
>> +{
>> +	return mem_cgroup_from_cont(cont)->kmem_independent;
>> +}
>> +
>> +static int kmem_limit_independent_write(struct cgroup *cont, struct cftype *cft,
>> +					u64 val)
>> +{
>> +	cgroup_lock();
>> +	mem_cgroup_from_cont(cont)->kmem_independent = !!val;
>> +	cgroup_unlock();
>
> Hm. This code allows that parent/child can have different settings.
> Could you add parent-child check as..
>
> "If parent sets use_hierarchy==1, children must have the same kmem_independent value
> with parant's one."
Agree.
> How do you think ? I think a hierarchy must have the same config.
Yes, I think this is reasonable.

>
> BTW...I don't like naming a little ;)
>
> memory->consolidated/shared/?????_kmem_accounting ?
> Or
> memory->kmem_independent_accounting ?
>
> or some better naming ?

I can go with kmem_independent_accounting if you like, it is fine
by me.


--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Glauber Costa <glommer@parallels.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: <linux-kernel@vger.kernel.org>, <paul@paulmenage.org>,
	<lizf@cn.fujitsu.com>, <ebiederm@xmission.com>,
	<davem@davemloft.net>, <gthelen@google.com>,
	<netdev@vger.kernel.org>, <linux-mm@kvack.org>,
	<kirill@shutemov.name>
Subject: Re: [PATCH v3 1/7] Basic kernel memory functionality for the Memory Controller
Date: Mon, 26 Sep 2011 19:44:40 -0300	[thread overview]
Message-ID: <4E810058.8080305@parallels.com> (raw)
In-Reply-To: <20110926193451.b419f630.kamezawa.hiroyu@jp.fujitsu.com>

>>   #endif
>>
>> -
>> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>> +int do_kmem_account __read_mostly = 1;
>> +#else
>> +#define do_kmem_account		0
>> +#endif
>
>
> Hmm, do we really need this boot option ?
>  From my experience to have swap-accounting boot option,
> this scares us ;) I think config is enough.

If no one else wants it, I can remove it. I personally
don't need it, just wanted to follow the convention laid down by swap here.

>
>
>
>>   /*
>>    * Statistics for memory cgroup.
>>    */
>> @@ -270,6 +274,10 @@ struct mem_cgroup {
>>   	 */
>>   	struct res_counter memsw;
>>   	/*
>> +	 * the counter to account for kmem usage.
>> +	 */
>> +	struct res_counter kmem;
>> +	/*
>>   	 * Per cgroup active and inactive list, similar to the
>>   	 * per zone LRU lists.
>>   	 */
>> @@ -321,6 +329,11 @@ struct mem_cgroup {
>>   	 */
>>   	unsigned long 	move_charge_at_immigrate;
>>   	/*
>> +	 * Should kernel memory limits be stabilished independently
>> +	 * from user memory ?
>> +	 */
>> +	int		kmem_independent;
>> +	/*
>>   	 * percpu counter.
>>   	 */
>>   	struct mem_cgroup_stat_cpu *stat;
>> @@ -388,9 +401,14 @@ enum charge_type {
>>   };
>>
>>   /* for encoding cft->private value on file */
>> -#define _MEM			(0)
>> -#define _MEMSWAP		(1)
>> -#define _OOM_TYPE		(2)
>> +
>> +enum mem_type {
>> +	_MEM = 0,
>> +	_MEMSWAP,
>> +	_OOM_TYPE,
>> +	_KMEM,
>> +};
>> +
>
> ok, nice clean up.
>
>
>>   #define MEMFILE_PRIVATE(x, val)	(((x)<<  16) | (val))
>>   #define MEMFILE_TYPE(val)	(((val)>>  16)&  0xffff)
>>   #define MEMFILE_ATTR(val)	((val)&  0xffff)
>> @@ -3943,10 +3961,15 @@ static inline u64 mem_cgroup_usage(struct mem_cgroup *mem, bool swap)
>>   	u64 val;
>>
>>   	if (!mem_cgroup_is_root(mem)) {
>> +		val = 0;
>> +		if (!mem->kmem_independent)
>> +			val = res_counter_read_u64(&mem->kmem, RES_USAGE);
>
>>   		if (!swap)
>> -			return res_counter_read_u64(&mem->res, RES_USAGE);
>> +			val += res_counter_read_u64(&mem->res, RES_USAGE);
>>   		else
>> -			return res_counter_read_u64(&mem->memsw, RES_USAGE);
>> +			val += res_counter_read_u64(&mem->memsw, RES_USAGE);
>> +
>> +		return val;
>>   	}
>>
>>   	val = mem_cgroup_recursive_stat(mem, MEM_CGROUP_STAT_CACHE);
>> @@ -3979,6 +4002,10 @@ static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft)
>>   		else
>>   			val = res_counter_read_u64(&mem->memsw, name);
>>   		break;
>> +	case _KMEM:
>> +		val = res_counter_read_u64(&mem->kmem, name);
>> +		break;
>> +
>>   	default:
>>   		BUG();
>>   		break;
>> @@ -4756,6 +4783,21 @@ static int mem_cgroup_reset_vmscan_stat(struct cgroup *cgrp,
>>   	return 0;
>>   }
>>
>> +#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>> +static u64 kmem_limit_independent_read(struct cgroup *cont, struct cftype *cft)
>> +{
>> +	return mem_cgroup_from_cont(cont)->kmem_independent;
>> +}
>> +
>> +static int kmem_limit_independent_write(struct cgroup *cont, struct cftype *cft,
>> +					u64 val)
>> +{
>> +	cgroup_lock();
>> +	mem_cgroup_from_cont(cont)->kmem_independent = !!val;
>> +	cgroup_unlock();
>
> Hm. This code allows that parent/child can have different settings.
> Could you add parent-child check as..
>
> "If parent sets use_hierarchy==1, children must have the same kmem_independent value
> with parant's one."
Agree.
> How do you think ? I think a hierarchy must have the same config.
Yes, I think this is reasonable.

>
> BTW...I don't like naming a little ;)
>
> memory->consolidated/shared/?????_kmem_accounting ?
> Or
> memory->kmem_independent_accounting ?
>
> or some better naming ?

I can go with kmem_independent_accounting if you like, it is fine
by me.


--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2011-09-26 22:45 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-19  0:56 [PATCH v3 0/7] per-cgroup tcp buffer pressure settings Glauber Costa
2011-09-19  0:56 ` Glauber Costa
2011-09-19  0:56 ` [PATCH v3 1/7] Basic kernel memory functionality for the Memory Controller Glauber Costa
2011-09-19  0:56   ` Glauber Costa
2011-09-21  2:23   ` Glauber Costa
2011-09-21  2:23     ` Glauber Costa
2011-09-21  2:23     ` Glauber Costa
2011-09-22  3:17     ` Balbir Singh
2011-09-22  3:17       ` Balbir Singh
2011-09-22  3:19       ` Glauber Costa
2011-09-22  3:19         ` Glauber Costa
2011-09-22  3:19         ` Glauber Costa
2011-09-24 14:43       ` Glauber Costa
2011-09-24 14:43         ` Glauber Costa
2011-09-24 14:43         ` Glauber Costa
2011-09-27 10:06         ` Balbir Singh
2011-09-27 10:06           ` Balbir Singh
2011-09-22  5:58   ` Greg Thelen
2011-09-22  5:58     ` Greg Thelen
2011-09-26 10:34   ` KAMEZAWA Hiroyuki
2011-09-26 10:34     ` KAMEZAWA Hiroyuki
2011-09-26 22:44     ` Glauber Costa [this message]
2011-09-26 22:44       ` Glauber Costa
2011-09-26 22:44       ` Glauber Costa
2011-09-26 23:18     ` Glauber Costa
2011-09-26 23:18       ` Glauber Costa
2011-09-26 23:18       ` Glauber Costa
2011-09-28  0:58       ` KAMEZAWA Hiroyuki
2011-09-28  0:58         ` KAMEZAWA Hiroyuki
2011-09-28  0:58         ` KAMEZAWA Hiroyuki
2011-09-28 12:03         ` Glauber Costa
2011-09-28 12:03           ` Glauber Costa
2011-09-28 12:03           ` Glauber Costa
2011-09-19  0:56 ` [PATCH v3 2/7] socket: initial cgroup code Glauber Costa
2011-09-19  0:56   ` Glauber Costa
2011-09-21 18:47   ` Greg Thelen
2011-09-21 18:47     ` Greg Thelen
2011-09-21 18:59     ` Glauber Costa
2011-09-21 18:59       ` Glauber Costa
2011-09-21 18:59       ` Glauber Costa
2011-09-22  6:00       ` Greg Thelen
2011-09-22  6:00         ` Greg Thelen
2011-09-22 15:09         ` Balbir Singh
2011-09-22 15:09           ` Balbir Singh
2011-09-24 13:33           ` Glauber Costa
2011-09-24 13:33             ` Glauber Costa
2011-09-24 13:33             ` Glauber Costa
2011-09-24 13:40           ` Glauber Costa
2011-09-24 13:40             ` Glauber Costa
2011-09-24 13:40             ` Glauber Costa
2011-09-24 14:45           ` Glauber Costa
2011-09-24 14:45             ` Glauber Costa
2011-09-24 14:45             ` Glauber Costa
2011-09-26 10:52             ` KAMEZAWA Hiroyuki
2011-09-26 10:52               ` KAMEZAWA Hiroyuki
2011-09-26 10:52               ` KAMEZAWA Hiroyuki
2011-09-26 22:47               ` Glauber Costa
2011-09-26 22:47                 ` Glauber Costa
2011-09-26 22:47                 ` Glauber Costa
2011-09-28  0:56                 ` KAMEZAWA Hiroyuki
2011-09-28  0:56                   ` KAMEZAWA Hiroyuki
2011-09-27 20:43               ` Glauber Costa
2011-09-27 20:43                 ` Glauber Costa
2011-09-19  0:56 ` [PATCH v3 3/7] foundations of per-cgroup memory pressure controlling Glauber Costa
2011-09-19  0:56   ` Glauber Costa
2011-09-19  0:56 ` [PATCH v3 4/7] per-cgroup tcp buffers control Glauber Costa
2011-09-19  0:56   ` Glauber Costa
2011-09-26 10:59   ` KAMEZAWA Hiroyuki
2011-09-26 10:59     ` KAMEZAWA Hiroyuki
2011-09-26 22:48     ` Glauber Costa
2011-09-26 22:48       ` Glauber Costa
2011-09-26 22:48       ` Glauber Costa
2011-09-27  1:53     ` Glauber Costa
2011-09-27  1:53       ` Glauber Costa
2011-09-27  1:53       ` Glauber Costa
2011-09-28  1:09       ` KAMEZAWA Hiroyuki
2011-09-28  1:09         ` KAMEZAWA Hiroyuki
2011-09-26 14:39   ` Andrew Vagin
2011-09-26 14:39     ` Andrew Vagin
2011-09-26 22:52     ` Glauber Costa
2011-09-26 22:52       ` Glauber Costa
2011-09-26 22:52       ` Glauber Costa
2011-09-19  0:56 ` [PATCH v3 5/7] per-netns ipv4 sysctl_tcp_mem Glauber Costa
2011-09-19  0:56   ` Glauber Costa
2011-09-19  0:56 ` [PATCH v3 6/7] tcp buffer limitation: per-cgroup limit Glauber Costa
2011-09-19  0:56   ` Glauber Costa
2011-09-22  6:01   ` Greg Thelen
2011-09-22  6:01     ` Greg Thelen
2011-09-22  9:58     ` Kirill A. Shutemov
2011-09-22  9:58       ` Kirill A. Shutemov
2011-09-22  9:58       ` Kirill A. Shutemov
2011-09-22 15:44       ` Greg Thelen
2011-09-22 15:44         ` Greg Thelen
2011-09-24 13:30     ` Glauber Costa
2011-09-24 13:30       ` Glauber Costa
2011-09-24 13:30       ` Glauber Costa
2011-09-26 11:02       ` KAMEZAWA Hiroyuki
2011-09-26 11:02         ` KAMEZAWA Hiroyuki
2011-09-26 11:02         ` KAMEZAWA Hiroyuki
2011-09-26 22:49         ` Glauber Costa
2011-09-26 22:49           ` Glauber Costa
2011-09-26 22:49           ` Glauber Costa
2011-09-22 23:08   ` Balbir Singh
2011-09-22 23:08     ` Balbir Singh
2011-09-24 13:35     ` Glauber Costa
2011-09-24 13:35       ` Glauber Costa
2011-09-24 13:35       ` Glauber Costa
2011-09-24 16:58   ` Andi Kleen
2011-09-24 16:58     ` Andi Kleen
2011-09-24 17:27     ` Glauber Costa
2011-09-24 17:27       ` Glauber Costa
2011-09-24 17:27       ` Glauber Costa
2011-09-28  2:29     ` Balbir Singh
2011-09-28  2:29       ` Balbir Singh
2011-09-28  3:06       ` Andi Kleen
2011-09-28  3:06         ` Andi Kleen
2011-09-19  0:56 ` [PATCH v3 7/7] Display current tcp memory allocation in kmem cgroup Glauber Costa
2011-09-19  0:56   ` Glauber Costa

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=4E810058.8080305@parallels.com \
    --to=glommer@parallels.com \
    --cc=davem@davemloft.net \
    --cc=ebiederm@xmission.com \
    --cc=gthelen@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=netdev@vger.kernel.org \
    --cc=paul@paulmenage.org \
    /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.