On Thu, Apr 27, 2017 at 9:33 AM, Logan Gunthorpe <logang@xxxxxxxxxxxx> wrote: > > > On 27/04/17 10:14 AM, Dan Williams wrote: >> You're overlooking that the page reference count 1 after >> arch_add_memory(). So at the end of time we're just dropping the >> arch_add_memory() reference to release the page and related >> dev_pagemap. > > Thanks, that does actually make a lot more sense to me now. However, > there still appears to be an asymmetry in that the pgmap->ref is > incremented once and decremented once per page... > No, this hunk... @@ -379,6 +374,7 @@ void *devm_memremap_pages(struct device *dev, struct resource *res, */ list_del(&page->lru); page->pgmap = pgmap; + percpu_ref_get(ref); } ...is inside a for_each_device_pfn() loop. -- 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>