On Tue, 2016-08-23 at 21:48 -0700, Dan Williams wrote: > On Tue, Aug 23, 2016 at 9:28 PM, Kani, Toshimitsu <toshi.k...@hpe.com > > > > BTW, why does devm_memremap_pages() put a whole range to > > pgmap_radix as device memory, but only initialize page->pgmap for > > its data range? Is there particular reason for this inconsistency? > > The radix tree is indexed by section number, but we don't always > initialize a full section. The cases when we don't use a full > section is when it overlaps device metadata, or if a platform > multiplexes the device memory range with another resource within the > same section.
I see, but I still feel odd about making get_dev_pagemap() to work for metadata, but get_page() -> get_zone_device_page() to crash like this. follow_devmap_pmd() assumes get_page() to work when get_dev_pagemap() returns a valid pgmap... Thanks, -Toshi