All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tang Chen <tangchen@cn.fujitsu.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	David Vrabel <david.vrabel@citrix.com>
Cc: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	Daniel Kiper <daniel.kiper@oracle.com>,
	linux-mm@kvack.org, Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>,
	tangchen@cn.fujitsu.com
Subject: Re: [Xen-devel] [PATCHv3 01/10] mm: memory hotplug with an existing resource
Date: Sun, 16 Aug 2015 19:41:09 +0800	[thread overview]
Message-ID: <55D076D5.8070601@cn.fujitsu.com> (raw)
In-Reply-To: <20150813134003.895cd1ce421631fb55db21fb@linux-foundation.org>


On 08/14/2015 04:40 AM, Andrew Morton wrote:
> On Thu, 13 Aug 2015 11:21:43 +0100 David Vrabel <david.vrabel@citrix.com> wrote:
>
>> On 30/07/15 18:03, David Vrabel wrote:
>>> Add add_memory_resource() to add memory using an existing "System RAM"
>>> resource.  This is useful if the memory region is being located by
>>> finding a free resource slot with allocate_resource().
>>>
>>> Xen guests will make use of this in their balloon driver to hotplug
>>> arbitrary amounts of memory in response to toolstack requests.
>> Ping?  This enables a useful feature for Xen guests.
>>
> Looks OK to me.  I've cc'ed some memory_hotplug.c developers.  If
> they're OK with it, please add the patch to the (Xen?) tree which uses
> it.
>
>
>
>
> Add add_memory_resource() to add memory using an existing "System RAM"
> resource.  This is useful if the memory region is being located by
> finding a free resource slot with allocate_resource().
>
> Xen guests will make use of this in their balloon driver to hotplug
> arbitrary amounts of memory in response to toolstack requests.
>
> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> ---
>   include/linux/memory_hotplug.h |  2 ++
>   mm/memory_hotplug.c            | 28 +++++++++++++++++++++-------
>   2 files changed, 23 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
> index 6ffa0ac..c76d371 100644
> --- a/include/linux/memory_hotplug.h
> +++ b/include/linux/memory_hotplug.h
> @@ -11,6 +11,7 @@ struct zone;
>   struct pglist_data;
>   struct mem_section;
>   struct memory_block;
> +struct resource;
>   
>   #ifdef CONFIG_MEMORY_HOTPLUG
>   
> @@ -266,6 +267,7 @@ static inline void remove_memory(int nid, u64 start, u64 size) {}
>   extern int walk_memory_range(unsigned long start_pfn, unsigned long end_pfn,
>   		void *arg, int (*func)(struct memory_block *, void *));
>   extern int add_memory(int nid, u64 start, u64 size);
> +extern int add_memory_resource(int nid, struct resource *resource);
>   extern int zone_for_memory(int nid, u64 start, u64 size, int zone_default);
>   extern int arch_add_memory(int nid, u64 start, u64 size);
>   extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages);
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 003dbe4..169770a 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1224,23 +1224,21 @@ int zone_for_memory(int nid, u64 start, u64 size, int zone_default)
>   }
>   
>   /* we are OK calling __meminit stuff here - we have CONFIG_MEMORY_HOTPLUG */
> -int __ref add_memory(int nid, u64 start, u64 size)
> +int __ref add_memory_resource(int nid, struct resource *res)
>   {
> +	u64 start, size;
>   	pg_data_t *pgdat = NULL;
>   	bool new_pgdat;
>   	bool new_node;
> -	struct resource *res;
>   	int ret;
>   
> +	start = res->start;
> +	size = resource_size(res);
> +
>   	ret = check_hotplug_memory_range(start, size);
>   	if (ret)
>   		return ret;
>   
> -	res = register_memory_resource(start, size);
> -	ret = -EEXIST;
> -	if (!res)
> -		return ret;
> -
>   	{	/* Stupid hack to suppress address-never-null warning */
>   		void *p = NODE_DATA(nid);
>   		new_pgdat = !p;
> @@ -1290,6 +1288,22 @@ out:
>   	mem_hotplug_done();
>   	return ret;
>   }
> +EXPORT_SYMBOL_GPL(add_memory_resource);
> +
> +int __ref add_memory(int nid, u64 start, u64 size)
> +{
> +	struct resource *res;
> +	int ret;
> +
> +	res = register_memory_resource(start, size);
> +	if (!res)
> +		return -EEXIST;
> +
> +	ret = add_memory_resource(nid, res);
> +	if (ret < 0)

Not a big deal, but I think  "if (ret)"  is enough.

The code looks good.

Reviewed-by: Tang Chen <tangchen@cn.fujitsu.com>

Thanks.

> +		release_memory_resource(res);
> +	return ret;
> +}
>   EXPORT_SYMBOL_GPL(add_memory);
>   
>   #ifdef CONFIG_MEMORY_HOTREMOVE

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Tang Chen <tangchen@cn.fujitsu.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	David Vrabel <david.vrabel@citrix.com>
Cc: <linux-kernel@vger.kernel.org>, <xen-devel@lists.xenproject.org>,
	Daniel Kiper <daniel.kiper@oracle.com>, <linux-mm@kvack.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>,
	<tangchen@cn.fujitsu.com>
Subject: Re: [Xen-devel] [PATCHv3 01/10] mm: memory hotplug with an existing resource
Date: Sun, 16 Aug 2015 19:41:09 +0800	[thread overview]
Message-ID: <55D076D5.8070601@cn.fujitsu.com> (raw)
In-Reply-To: <20150813134003.895cd1ce421631fb55db21fb@linux-foundation.org>


On 08/14/2015 04:40 AM, Andrew Morton wrote:
> On Thu, 13 Aug 2015 11:21:43 +0100 David Vrabel <david.vrabel@citrix.com> wrote:
>
>> On 30/07/15 18:03, David Vrabel wrote:
>>> Add add_memory_resource() to add memory using an existing "System RAM"
>>> resource.  This is useful if the memory region is being located by
>>> finding a free resource slot with allocate_resource().
>>>
>>> Xen guests will make use of this in their balloon driver to hotplug
>>> arbitrary amounts of memory in response to toolstack requests.
>> Ping?  This enables a useful feature for Xen guests.
>>
> Looks OK to me.  I've cc'ed some memory_hotplug.c developers.  If
> they're OK with it, please add the patch to the (Xen?) tree which uses
> it.
>
>
>
>
> Add add_memory_resource() to add memory using an existing "System RAM"
> resource.  This is useful if the memory region is being located by
> finding a free resource slot with allocate_resource().
>
> Xen guests will make use of this in their balloon driver to hotplug
> arbitrary amounts of memory in response to toolstack requests.
>
> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> ---
>   include/linux/memory_hotplug.h |  2 ++
>   mm/memory_hotplug.c            | 28 +++++++++++++++++++++-------
>   2 files changed, 23 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
> index 6ffa0ac..c76d371 100644
> --- a/include/linux/memory_hotplug.h
> +++ b/include/linux/memory_hotplug.h
> @@ -11,6 +11,7 @@ struct zone;
>   struct pglist_data;
>   struct mem_section;
>   struct memory_block;
> +struct resource;
>   
>   #ifdef CONFIG_MEMORY_HOTPLUG
>   
> @@ -266,6 +267,7 @@ static inline void remove_memory(int nid, u64 start, u64 size) {}
>   extern int walk_memory_range(unsigned long start_pfn, unsigned long end_pfn,
>   		void *arg, int (*func)(struct memory_block *, void *));
>   extern int add_memory(int nid, u64 start, u64 size);
> +extern int add_memory_resource(int nid, struct resource *resource);
>   extern int zone_for_memory(int nid, u64 start, u64 size, int zone_default);
>   extern int arch_add_memory(int nid, u64 start, u64 size);
>   extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages);
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 003dbe4..169770a 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1224,23 +1224,21 @@ int zone_for_memory(int nid, u64 start, u64 size, int zone_default)
>   }
>   
>   /* we are OK calling __meminit stuff here - we have CONFIG_MEMORY_HOTPLUG */
> -int __ref add_memory(int nid, u64 start, u64 size)
> +int __ref add_memory_resource(int nid, struct resource *res)
>   {
> +	u64 start, size;
>   	pg_data_t *pgdat = NULL;
>   	bool new_pgdat;
>   	bool new_node;
> -	struct resource *res;
>   	int ret;
>   
> +	start = res->start;
> +	size = resource_size(res);
> +
>   	ret = check_hotplug_memory_range(start, size);
>   	if (ret)
>   		return ret;
>   
> -	res = register_memory_resource(start, size);
> -	ret = -EEXIST;
> -	if (!res)
> -		return ret;
> -
>   	{	/* Stupid hack to suppress address-never-null warning */
>   		void *p = NODE_DATA(nid);
>   		new_pgdat = !p;
> @@ -1290,6 +1288,22 @@ out:
>   	mem_hotplug_done();
>   	return ret;
>   }
> +EXPORT_SYMBOL_GPL(add_memory_resource);
> +
> +int __ref add_memory(int nid, u64 start, u64 size)
> +{
> +	struct resource *res;
> +	int ret;
> +
> +	res = register_memory_resource(start, size);
> +	if (!res)
> +		return -EEXIST;
> +
> +	ret = add_memory_resource(nid, res);
> +	if (ret < 0)

Not a big deal, but I think  "if (ret)"  is enough.

The code looks good.

Reviewed-by: Tang Chen <tangchen@cn.fujitsu.com>

Thanks.

> +		release_memory_resource(res);
> +	return ret;
> +}
>   EXPORT_SYMBOL_GPL(add_memory);
>   
>   #ifdef CONFIG_MEMORY_HOTREMOVE


  reply	other threads:[~2015-08-16 11:42 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-30 17:03 [PATCHv3 00/10] mm, xen/balloon: memory hotplug improvements David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 01/10] mm: memory hotplug with an existing resource David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-31 23:15   ` Daniel Kiper
2015-07-31 23:15     ` Daniel Kiper
2015-07-31 23:15   ` Daniel Kiper
2015-08-13 10:21   ` [Xen-devel] " David Vrabel
2015-08-13 10:21     ` David Vrabel
2015-08-13 20:40     ` Andrew Morton
2015-08-13 20:40     ` [Xen-devel] " Andrew Morton
2015-08-13 20:40       ` Andrew Morton
2015-08-16 11:41       ` Tang Chen [this message]
2015-08-16 11:41         ` Tang Chen
2015-08-16 11:41       ` Tang Chen
2015-08-13 10:21   ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 02/10] xen/balloon: remove scratch page left overs David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 03/10] x86/xen: discard RAM regions above the maximum reservation David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 04/10] xen/balloon: find non-conflicting regions to place hotplugged memory David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 05/10] xen/balloon: rationalize memory hotplug stats David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 06/10] xen/balloon: only hotplug additional memory if required David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-31 23:18   ` Daniel Kiper
2015-07-31 23:18     ` Daniel Kiper
2015-07-31 23:18   ` Daniel Kiper
2015-07-30 17:03 ` [PATCHv3 07/10] xen/balloon: make alloc_xenballoon_pages() always allocate low pages David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03 ` [PATCHv3 08/10] xen/balloon: use hotplugged pages for foreign mappings etc David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-31 23:20   ` Daniel Kiper
2015-07-31 23:20   ` Daniel Kiper
2015-07-31 23:20     ` Daniel Kiper
2015-07-30 17:03 ` [PATCHv3 09/10] x86/xen: export xen_alloc_p2m_entry() David Vrabel
2015-07-30 17:03 ` David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-31 23:22   ` Daniel Kiper
2015-07-31 23:22     ` Daniel Kiper
2015-07-31 23:22   ` Daniel Kiper
2015-07-30 17:03 ` [PATCHv3 10/10] xen/balloon: pre-allocate p2m entries for ballooned pages David Vrabel
2015-07-30 17:03   ` David Vrabel
2015-07-31 23:23   ` Daniel Kiper
2015-07-31 23:23   ` Daniel Kiper
2015-07-31 23:23     ` Daniel Kiper
2015-07-30 17:03 ` David Vrabel
2015-09-29 16:24 ` [Xen-devel] [PATCHv3 00/10] mm, xen/balloon: memory hotplug improvements David Vrabel
2015-09-29 16:24   ` David Vrabel
2015-09-29 16:24 ` David Vrabel

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=55D076D5.8070601@cn.fujitsu.com \
    --to=tangchen@cn.fujitsu.com \
    --cc=akpm@linux-foundation.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=daniel.kiper@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=xen-devel@lists.xenproject.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.