On Wed, Nov 08, 2017 at 10:33:51PM +0900, Jaewon Kim wrote: > 2017-11-08 16:52 GMT+09:00 Joonsoo Kim <iamjoonsoo.kim@xxxxxxx>: > > On Tue, Nov 07, 2017 at 06:44:47PM +0900, Jaewon Kim wrote: > >> online_page_ext and page_ext_init allocate page_ext for each section, but > >> they do not allocate if the first PFN is !pfn_present(pfn) or > >> !pfn_valid(pfn). > >> > >> Though the first page is not valid, page_ext could be useful for other > >> pages in the section. But checking all PFNs in a section may be time > >> consuming job. Let's check each (section count / 16) PFN, then prepare > >> page_ext if any PFN is present or valid. > > > > I guess that this kind of section is not so many. And, this is for > > debugging so completeness would be important. It's better to check > > all pfn in the section. > Thank you for your comment. > > AFAIK physical memory address depends on HW SoC. > Sometimes a SoC remains few GB address region hole between few GB DRAM > and other few GB DRAM > such as 2GB under 4GB address and 2GB beyond 4GB address and holes between them. > If SoC designs so big hole between actual mapping, I thought too much > time will be spent on just checking all the PFNs. I don't think that it is painful because it is done just once at initialization step. However, if you worry about it, we can use pfn_present() to skip the whole section at once. !pfn_present() guarantees that there is no valid pfn in the section. If pfn_present() returns true, we need to search the whole pages in the section in order to find valid pfn. And, I think that we don't need to change online_page_ext(). AFAIK, hotplug always adds section aligned memory so pfn_present() check should be enough. Thanks. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>