On Thu, Jun 22, 2017 at 08:16:57PM +0200, Michal Hocko wrote: >> >> Hmm... a corner case jumped into my mind which may invalidate this >> calculation. >> >> The case is: >> >> >> Zone: | DMA | DMA32 | NORMAL | >> v v v v >> >> Phy mem: [ ] [ ] >> >> ^ ^ ^ ^ >> Node: | Node0 | | Node1 | >> A B C D >> >> >> The key point is >> 1. There is a hole between Node0 and Node1 >> 2. The hole sits in a non-normal zone >> >> Let's mark the boundary as A, B, C, D. Then we would have >> node0->zone[dma21] = [A, B] >> node1->zone[dma32] = [C, D] >> >> If we want to hotplug a range in [B, C] on node0, it looks not that bad. While >> if we want to hotplug a range in [B, C] on node1, it will introduce the >> overlapped zone. Because the range [B, C] intersects none of the existing >> zones on node1. >> >> Do you think this is possible? > >Yes, it is possible. I would be much more more surprised if it was real >as well. Fixing that would require to use arch_zone_{lowest,highest}_possible_pfn >which is not available after init section disappears and I am not even >sure we should care. I would rather wait for a real life example of such >a configuration to fix it. Yep, not easy to fix, so wait for real case. Or possible to add a line in commit log? >-- >Michal Hocko >SUSE Labs -- Wei Yang Help you, Help me