Re: [PATCH v2 0/3] Support memory hot-delete to boot memory

From: Andrew Morton
Date: Mon Apr 08 2013 - 16:44:46 EST


On Mon, 8 Apr 2013 11:09:53 -0600 Toshi Kani <toshi.kani@xxxxxx> wrote:

> Memory hot-delete to a memory range present at boot causes an
> error message in __release_region(), such as:
>
> Trying to free nonexistent resource <0000000070000000-0000000077ffffff>
>
> Hot-delete operation still continues since __release_region() is
> a void function, but the target memory range is not freed from
> iomem_resource as the result. This also leads a failure in a
> subsequent hot-add operation to the same memory range since the
> address range is still in-use in iomem_resource.
>
> This problem happens because the granularity of memory resource ranges
> may be different between boot and hot-delete.

So we don't need this new code if CONFIG_MEMORY_HOTPLUG=n? If so, can
we please arrange for it to not be present if the user doesn't need it?

> During bootup,
> iomem_resource is set up from the boot descriptor table, such as EFI
> Memory Table and e820. Each resource entry usually covers the whole
> contiguous memory range. Hot-delete request, on the other hand, may
> target to a particular range of memory resource, and its size can be
> much smaller than the whole contiguous memory. Since the existing
> release interfaces like __release_region() require a requested region
> to be exactly matched to a resource entry, they do not allow a partial
> resource to be released.
>
> This patchset introduces release_mem_region_adjustable() for memory
> hot-delete operations, which allows releasing a partial memory range
> and adjusts remaining resource accordingly. This patchset makes no
> changes to the existing interfaces since their restriction is still
> valid for I/O resources.
--
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/