From: Nathan Fontenot <nfont@linux.vnet.ibm.com>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev list <linuxppc-dev@ozlabs.org>
Subject: Re: [5/5] pseries: Implement memory hotplug remove in the kernel
Date: Wed, 17 Sep 2014 14:58:45 -0500 [thread overview]
Message-ID: <5419E7F5.2040000@linux.vnet.ibm.com> (raw)
In-Reply-To: <1410937650.27681.13.camel@concordia>
On 09/17/2014 02:07 AM, Michael Ellerman wrote:
>
> On Mon, 2014-09-15 at 15:33 -0500, Nathan Fontenot wrote:
>> This patch adds the ability to do memory hotplug remove in the kernel.
>>
>> Currently the hotplug add/remove of memory is handled by the drmgr
>> command. The drmgr command performs the add/remove by performing
>> some work in user-space and making requests to the kernel to handle
>> other pieces. By moving all of the work to the kernel we can do the
>> add and remove faster, and provide a common place to do memory hotplug
>> for both the PowerVM and PowerKVM environments.
>>
>> Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
>> ---
>> arch/powerpc/platforms/pseries/hotplug-memory.c | 140 +++++++++++++++++++++++
>> 1 file changed, 139 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
>> index b254773..160c424 100644
>> --- a/arch/powerpc/platforms/pseries/hotplug-memory.c
>> +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
>> @@ -193,7 +193,137 @@ static int pseries_remove_mem_node(struct device_node *np)
>> pseries_remove_memblock(base, lmb_size);
>> return 0;
>> }
>> +
>> +static int lmb_is_removable(struct of_drconf_cell *lmb)
>> +{
>
> Do we not already have something like this?
No. Perhaps your thinking of the code in drivers/base/memory.c that
handles the sysfs removable file. That code just calls the same
is_mem_section_removable() routine.
>
>> + int i, scns_per_block;
>> + int rc = 1;
>
> I can see this makes the &= work below.
>
> But what if block_sz / MIN_MEMORY_BLOCK_SIZE = 0 ?
If that happens, something else is really wrong. Most
likely a malformed device tree.
For pseries MIN_MEMORY_BLOCK_SIZE is defined to be the smallest
LMB size we suppport, 16MB.
I can add a pr_warn() statement here and bail if that happens.
>
>> + unsigned long pfn, block_sz;
>> + u64 phys_addr;
>> +
>> + phys_addr = be64_to_cpu(lmb->base_addr);
>> + block_sz = memory_block_size_bytes();
>> + scns_per_block = block_sz / MIN_MEMORY_BLOCK_SIZE;
>> +
>> + for (i = 0; i < scns_per_block; i++) {
>> + pfn = PFN_DOWN(phys_addr);
>> + if (!pfn_present(pfn))
>> + continue;
>> +
>> + rc &= is_mem_section_removable(pfn, PAGES_PER_SECTION);
>> + phys_addr += MIN_MEMORY_BLOCK_SIZE;
>> + }
>> +
>> + return rc;
>> +}
>
>> +static int dlpar_memory_remove(struct pseries_hp_errorlog *hp_elog)
>> +{
>
> ...
>
>> +}
>
> Most of the same comments as for add.
>
ok, I'll go through them and apply them to the remove code.
Thanks for the review.
-Nathan
prev parent reply other threads:[~2014-09-17 19:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-15 20:26 [PATCH 0/5] pseries: Move memory hotplug to the kernel Nathan Fontenot
2014-09-15 20:29 ` [PATCH 1/5] pseries: Define rtas hotplug event sections Nathan Fontenot
2014-09-17 7:06 ` [1/5] " Michael Ellerman
2014-09-17 16:49 ` Nathan Fontenot
2014-09-15 20:30 ` [PATCH 2/5] pseries: Export drc_[acquire|release]_drc() routines Nathan Fontenot
2014-09-17 7:07 ` [2/5] " Michael Ellerman
2014-09-17 16:50 ` Nathan Fontenot
2014-09-15 20:31 ` [PATCH 3/5] pseries: Create device hotplug entry point Nathan Fontenot
2014-09-17 7:07 ` [3/5] " Michael Ellerman
2014-09-17 19:15 ` Nathan Fontenot
2014-09-23 1:15 ` Tyrel Datwyler
2014-09-23 14:43 ` Nathan Fontenot
2014-09-15 20:32 ` [PATCH 4/5] pseries: Implement memory hotplug add in the kernel Nathan Fontenot
2014-09-17 7:07 ` [4/5] " Michael Ellerman
2014-09-17 19:45 ` Nathan Fontenot
2014-09-24 20:57 ` Nathan Fontenot
2014-09-15 20:33 ` [PATCH 5/5] pseries: Implement memory hotplug remove " Nathan Fontenot
2014-09-17 7:07 ` [5/5] " Michael Ellerman
2014-09-17 19:58 ` Nathan Fontenot [this message]
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=5419E7F5.2040000@linux.vnet.ibm.com \
--to=nfont@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=mpe@ellerman.id.au \
/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.