Re: [PATCH v2] mm, zone_device: replace {get, put}_zone_device_page() with a single reference

From: Ingo Molnar
Date: Sat Apr 29 2017 - 10:35:13 EST



* Dan Williams <dan.j.williams@xxxxxxxxx> wrote:

> Kirill points out that the calls to {get,put}_dev_pagemap() can be
> removed from the mm fast path if we take a single get_dev_pagemap()
> reference to signify that the page is alive and use the final put of the
> page to drop that reference.
>
> This does require some care to make sure that any waits for the
> percpu_ref to drop to zero occur *after* devm_memremap_page_release(),
> since it now maintains its own elevated reference.
>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Jérôme Glisse <jglisse@xxxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Reviewed-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>
> Suggested-by: Kirill Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Tested-by: Kirill Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>

This changelog is lacking an explanation about how this solves the crashes you
were seeing.

Thanks,

Ingo