Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1033518AbdD0CJA (ORCPT ); Wed, 26 Apr 2017 22:09:00 -0400 Received: from mail-pf0-f178.google.com ([209.85.192.178]:34422 "EHLO mail-pf0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1033488AbdD0CIu (ORCPT ); Wed, 26 Apr 2017 22:08:50 -0400 Date: Thu, 27 Apr 2017 11:08:38 +0900 From: Joonsoo Kim To: Michal Hocko Cc: linux-mm@kvack.org, Andrew Morton , Mel Gorman , Vlastimil Babka , Andrea Arcangeli , Jerome Glisse , Reza Arbab , Yasuaki Ishimatsu , qiuxishi@huawei.com, Kani Toshimitsu , slaoub@gmail.com, Andi Kleen , David Rientjes , Daniel Kiper , Igor Mammedov , Vitaly Kuznetsov , LKML Subject: Re: your mail Message-ID: <20170427020835.GA29169@js1304-desktop> References: <20170417054718.GD1351@js1304-desktop> <20170417081513.GA12511@dhcp22.suse.cz> <20170420012753.GA22054@js1304-desktop> <20170420072820.GB15781@dhcp22.suse.cz> <20170421043826.GC13966@js1304-desktop> <20170421071616.GC14154@dhcp22.suse.cz> <20170424014441.GA29305@js1304-desktop> <20170424075312.GA1739@dhcp22.suse.cz> <20170425025043.GA32583@js1304-desktop> <20170426091906.GB12504@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170426091906.GB12504@dhcp22.suse.cz> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2884 Lines: 56 On Wed, Apr 26, 2017 at 11:19:06AM +0200, Michal Hocko wrote: > > > [...] > > > > > > > > You are trying to change a semantic of something that has a well defined > > > > > meaning. I disagree that we should change it. It might sound like a > > > > > simpler thing to do because pfn walkers will have to be checked but what > > > > > you are proposing is conflating two different things together. > > > > > > > > I don't think that *I* try to change the semantic of pfn_valid(). > > > > It would be original semantic of pfn_valid(). > > > > > > > > "If pfn_valid() returns true, we can get proper struct page and the > > > > zone information," > > > > > > I do not see any guarantee about the zone information anywhere. In fact > > > this is not true with the original implementation as I've tried to > > > explain already. We do have new pages associated with a zone but that > > > association might change during the online phase. So you cannot really > > > rely on that information until the page is online. There is no real > > > change in that regards after my rework. > > > > I know that what you did doesn't change thing much. What I try to say > > is that previous implementation related to pfn_valid() in hotplug is > > wrong. Please do not assume that hotplug implementation is correct and > > other pfn_valid() users are incorrect. There is no design document so > > I'm not sure which one is correct but assumption that pfn_valid() user > > can access whole the struct page information makes much sense to me. > > Not really. E.g. ZONE_DEVICE pages are never online AFAIK. I believe we > still need pfn_valid to work for those pfns. Really, pfn_valid has a It's really contrary example to your insist. They requires not only struct page but also other information, especially, the zone index. They checks zone idx to know whether this page is for ZONE_DEVICE or not. So, pfn_valid() for ZONE_DEVICE pages assume that struct page has all the valid information. It's perfectly matched with my suggestion. Online isn't important issue here. What the important point is the condition that pfn_valid() return true. pfn_valid() for ZONE_DEVICE returns true after arch_add_memory() since all the struct page information is fixed there. If zone of hotplugged memory cannot be fixed at this moment, you can defef it until all the information is fixed (onlining). That seems to be better semantic of pfn_valid() to me. > different meaning than you would like it to have. Who knows how many > others like that are lurking there. I feel much more comfortable to go > and hunt already broken code and fix it rathert than break something > unexpectedly. I think that I did my best to explain my reasoning. It seems that we cannot agree with each other so it's better for some others to express their opinion to this problem. I will stop this discussion from now on. Thanks.