linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Michal Hocko <mhocko@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Arun KS <arunks@codeaurora.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Oscar Salvador <osalvador@suse.de>,
	Pavel Tatashin <pasha.tatashin@soleen.com>,
	Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH v1 2/4] mm/memory_hotplug: Handle unaligned start and nr_pages in online_pages_blocks()
Date: Wed, 14 Aug 2019 16:17:03 +0200	[thread overview]
Message-ID: <ddb10470-8d6e-c8bd-4877-197621219612@redhat.com> (raw)
In-Reply-To: <20190814140805.GA17933@dhcp22.suse.cz>

On 14.08.19 16:08, Michal Hocko wrote:
> On Fri 09-08-19 14:56:59, David Hildenbrand wrote:
>> Take care of nr_pages not being a power of two and start not being
>> properly aligned. Essentially, what walk_system_ram_range() could provide
>> to us. get_order() will round-up in case it's not a power of two.
>>
>> This should only apply to memory blocks that contain strange memory
>> resources (especially with holes), not to ordinary DIMMs.
> 
> I would really like to see an example of such setup before making the
> code hard to read. Because I am not really sure something like that
> exists at all.

I don't have a real-live example at hand (founds this while exploring
the code), however, the linked commit changed it without stating why it
would be safe to do so.

In case you have an idea on how to make this code easier to read, please
let me know.

> 
>> Fixes: a9cd410a3d29 ("mm/page_alloc.c: memory hotplug: free pages as higher order")
>> Cc: Arun KS <arunks@codeaurora.org>
>> Cc: Andrew Morton <akpm@linux-foundation.org>
>> Cc: Oscar Salvador <osalvador@suse.de>
>> Cc: Michal Hocko <mhocko@suse.com>
>> Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
>> Cc: Dan Williams <dan.j.williams@intel.com>
>> Signed-off-by: David Hildenbrand <david@redhat.com>
>> ---
>>  mm/memory_hotplug.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>> index 3706a137d880..2abd938c8c45 100644
>> --- a/mm/memory_hotplug.c
>> +++ b/mm/memory_hotplug.c
>> @@ -640,6 +640,10 @@ static int online_pages_blocks(unsigned long start, unsigned long nr_pages)
>>  	while (start < end) {
>>  		order = min(MAX_ORDER - 1,
>>  			get_order(PFN_PHYS(end) - PFN_PHYS(start)));
>> +		/* make sure the PFN is aligned and we don't exceed the range */
>> +		while (!IS_ALIGNED(start, 1ul << order) ||
>> +		       (1ul << order) > end - start)
>> +			order--;
>>  		(*online_page_callback)(pfn_to_page(start), order);
>>  
>>  		onlined_pages += (1UL << order);
>> -- 
>> 2.21.0
> 


-- 

Thanks,

David / dhildenb

  reply	other threads:[~2019-08-14 14:17 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-09 12:56 [PATCH v1 0/4] mm/memory_hotplug: online_pages() cleanups David Hildenbrand
2019-08-09 12:56 ` [PATCH v1 1/4] resource: Use PFN_UP / PFN_DOWN in walk_system_ram_range() David Hildenbrand
2019-08-14 14:06   ` Michal Hocko
2019-08-09 12:56 ` [PATCH v1 2/4] mm/memory_hotplug: Handle unaligned start and nr_pages in online_pages_blocks() David Hildenbrand
2019-08-09 21:46   ` Andrew Morton
2019-08-10  9:18     ` David Hildenbrand
2019-08-14 14:08   ` Michal Hocko
2019-08-14 14:17     ` David Hildenbrand [this message]
2019-08-14 14:28       ` David Hildenbrand
2019-08-14 16:02         ` Michal Hocko
2019-08-14 14:28       ` Michal Hocko
2019-08-09 12:57 ` [PATCH v1 3/4] mm/memory_hotplug: Simplify online_pages_range() David Hildenbrand
2019-08-14 14:19   ` Michal Hocko
2019-08-14 14:23     ` David Hildenbrand
2019-08-09 12:57 ` [PATCH v1 4/4] mm/memory_hotplug: online_pages cannot be 0 in online_pages() David Hildenbrand
2019-08-14 14:26   ` Michal Hocko

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=ddb10470-8d6e-c8bd-4877-197621219612@redhat.com \
    --to=david@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=arunks@codeaurora.org \
    --cc=dan.j.williams@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=osalvador@suse.de \
    --cc=pasha.tatashin@soleen.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).