Messages in this thread | | | From | Dan Williams <> | Date | Thu, 27 Apr 2017 09:38:29 -0700 | Subject | Re: [PATCH] mm, zone_device: replace {get, put}_zone_device_page() with a single reference |
| |
On Thu, Apr 27, 2017 at 9:33 AM, Logan Gunthorpe <logang@deltatee.com> 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.
| |