On Wed, May 11, 2016 at 08:17:41AM -0700, Yasuaki Ishimatsu wrote:
On Tue, 10 May 2016 15:39:43 -0500
Reza Arbab <ar...@linux.vnet.ibm.com> wrote:
<snip>
+       if (idx < target) {
+               /* pages must be at end of current zone */
+               if (pfn + nr_pages != zone_end_pfn(zone))
+                       return 0;
<snip>
+       if (target < idx) {
+               /* pages must be at beginning of current zone */
+               if (pfn != zone->zone_start_pfn)
+                       return 0;

According your patch, memory address must be continuous for changing zone.
So if memory address is uncontinuous as follows, memory address 
0x180000000-0x1FFFFFFFF
can be changed from ZONE_NORMAL to ZONE_MOVABLE. But memory address 
0x80000000-0xFFFFFFFF
can not be changed from ZONE_NORMAL to ZONE_MOVABLE since it does not meet
above condition.

Memory address
 0x80000000 -  0xFFFFFFFF
0x180000000 - 0x1FFFFFFFF

Ah, I see. What do you think of this instead?

<snip>
+       if (idx < target) {
+               /* must be the last pages present in current zone */
+               for (i = pfn + nr_pages; i < zone_end_pfn(zone); i++)
+                       if (pfn_present(i))
+                               return 0;
<snip>
+       if (target < idx) {
+               /* must be the first pages present in current zone */
+               for (i = zone->zone_start_pfn; i < pfn; i++)
+                       if (pfn_present(i))
+                               return 0;

--
Reza Arbab

Reply via email to