Re: [PATCH V4] mm: Extend memory hotplug API to allow memoryhotplug in virtual machines

From: Andrew Morton
Date: Thu Jun 02 2011 - 15:27:05 EST


On Wed, 25 May 2011 00:27:33 +0200
Daniel Kiper <dkiper@xxxxxxxxxxxx> wrote:

> This patch applies to Linus' git tree, git commit 98b98d316349e9a028e632629fe813d07fa5afdd
> (Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6)
> with a few prerequisite patches available at https://lkml.org/lkml/2011/5/2/296
> and https://lkml.org/lkml/2011/5/17/408 (all prerequisite patches were included in -mm tree).
>
> This patch contains online_page_callback and apropriate functions for
> registering/unregistering online page callbacks. It allows to do some
> machine specific tasks during online page stage which is required
> to implement memory hotplug in virtual machines. Currently this patch
> is required by latest memory hotplug support for Xen balloon driver
> patch which will be posted soon.
>
> Additionally, originial online_page() function was splited into
> following functions doing "atomic" operations:
> - __online_page_set_limits() - set new limits for memory management code,
> - __online_page_increment_counters() - increment totalram_pages and totalhigh_pages,
> - __online_page_free() - free page to allocator.
>
> It was done to:
> - not duplicate existing code,
> - ease hotplug code devolpment by usage of well defined interface,
> - avoid stupid bugs which are unavoidable when the same code
> (by design) is developed in many places.

I grabbed this and the xen patch. I assume that all prerequisites
are now in mainline?

Please give some thought to making this extra code Kconfigurable, and
selected by Xen? See if we can avoid a bit of bloat for other kernel
users.

What is missing from the patchset is an explanation of why we should
merge it ;) Why is this feature desirable? What value does it provide
to our users? Why should we bother? Answering these questions in a
form which can be pasted into the changelog would be convenient,
thanks.

Is there any propsect that the other virtualisation schemes will use
this facility? If not, why not?

>
> ...
>
> @@ -388,7 +450,7 @@ static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages,
> if (PageReserved(pfn_to_page(start_pfn)))
> for (i = 0; i < nr_pages; i++) {
> page = pfn_to_page(start_pfn + i);
> - online_page(page);
> + online_page_callback(page);

nit. I'll change this to

(*online_page_callback)(page);

because that syntax communicates some useful information to the reader.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/