All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Williams <dan.j.williams@intel.com>
To: Jerome Glisse <jglisse@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>, Ingo Molnar <mingo@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Logan Gunthorpe <logang@deltatee.com>,
	Kirill Shutemov <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCH v2] mm, zone_device: replace {get, put}_zone_device_page() with a single reference
Date: Fri, 28 Apr 2017 12:22:24 -0700	[thread overview]
Message-ID: <CAPcyv4i+iPm=hBviOYABaroz_JJYVy8Qja8Ka=-_uAQNnGjpeg@mail.gmail.com> (raw)
In-Reply-To: <1295710462.4327805.1493406971970.JavaMail.zimbra@redhat.com>

On Fri, Apr 28, 2017 at 12:16 PM, Jerome Glisse <jglisse@redhat.com> wrote:
>> On Fri, Apr 28, 2017 at 11:00 AM, Jerome Glisse <jglisse@redhat.com> wrote:
>> >> On Fri, Apr 28, 2017 at 10:34 AM, Jerome Glisse <jglisse@redhat.com>
>> >> 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.
>> >> >
>> >> > This is NAK from HMM point of view as i need those call. So if you
>> >> > remove
>> >> > them now i will need to add them back as part of HMM.
>> >>
>> >> I thought you only need them at page free time? You can still hook
>> >> __put_page().
>> >
>> > No, i need a hook when page refcount reach 1, not 0. That being said
>> > i don't care about put_dev_pagemap(page->pgmap); so that part of the
>> > patch is fine from HMM point of view but i definitly need to hook my-
>> > self in the general put_page() function.
>> >
>> > So i will have to undo part of this patch for HMM (put_page() will
>> > need to handle ZONE_DEVICE page differently).
>>
>> Ok, I'd rather this go in now since it fixes the existing use case,
>> and unblocks the get_user_pages_fast() conversion to generic code.
>> That also gives Kirill and -mm folks a chance to review what HMM wants
>> to do on top of the page_ref infrastructure.  The
>> {get,put}_zone_device_page interface went in in 4.5 right before
>> page_ref went in during 4.6, so it was just an oversight that
>> {get,put}_zone_device_page were not removed earlier.
>>
>
> I don't mind this going in, i am hopping people won't ignore HMM patchset
> once i repost after 4.12 merge window. Note that there is absolutely no way
> around me hooking up inside put_page(). The only other way to do it would
> be to modify virtualy all places that call that function to handle ZONE_DEVICE
> case.

Are you sure about needing to hook the 2 -> 1 transition? Could we
change ZONE_DEVICE pages to not have an elevated reference count when
they are created so you can keep the HMM references out of the mm hot
path?

WARNING: multiple messages have this Message-ID (diff)
From: Dan Williams <dan.j.williams@intel.com>
To: Jerome Glisse <jglisse@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Linux MM <linux-mm@kvack.org>, Ingo Molnar <mingo@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Logan Gunthorpe <logang@deltatee.com>,
	Kirill Shutemov <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCH v2] mm, zone_device: replace {get, put}_zone_device_page() with a single reference
Date: Fri, 28 Apr 2017 12:22:24 -0700	[thread overview]
Message-ID: <CAPcyv4i+iPm=hBviOYABaroz_JJYVy8Qja8Ka=-_uAQNnGjpeg@mail.gmail.com> (raw)
In-Reply-To: <1295710462.4327805.1493406971970.JavaMail.zimbra@redhat.com>

On Fri, Apr 28, 2017 at 12:16 PM, Jerome Glisse <jglisse@redhat.com> wrote:
>> On Fri, Apr 28, 2017 at 11:00 AM, Jerome Glisse <jglisse@redhat.com> wrote:
>> >> On Fri, Apr 28, 2017 at 10:34 AM, Jerome Glisse <jglisse@redhat.com>
>> >> 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.
>> >> >
>> >> > This is NAK from HMM point of view as i need those call. So if you
>> >> > remove
>> >> > them now i will need to add them back as part of HMM.
>> >>
>> >> I thought you only need them at page free time? You can still hook
>> >> __put_page().
>> >
>> > No, i need a hook when page refcount reach 1, not 0. That being said
>> > i don't care about put_dev_pagemap(page->pgmap); so that part of the
>> > patch is fine from HMM point of view but i definitly need to hook my-
>> > self in the general put_page() function.
>> >
>> > So i will have to undo part of this patch for HMM (put_page() will
>> > need to handle ZONE_DEVICE page differently).
>>
>> Ok, I'd rather this go in now since it fixes the existing use case,
>> and unblocks the get_user_pages_fast() conversion to generic code.
>> That also gives Kirill and -mm folks a chance to review what HMM wants
>> to do on top of the page_ref infrastructure.  The
>> {get,put}_zone_device_page interface went in in 4.5 right before
>> page_ref went in during 4.6, so it was just an oversight that
>> {get,put}_zone_device_page were not removed earlier.
>>
>
> I don't mind this going in, i am hopping people won't ignore HMM patchset
> once i repost after 4.12 merge window. Note that there is absolutely no way
> around me hooking up inside put_page(). The only other way to do it would
> be to modify virtualy all places that call that function to handle ZONE_DEVICE
> case.

Are you sure about needing to hook the 2 -> 1 transition? Could we
change ZONE_DEVICE pages to not have an elevated reference count when
they are created so you can keep the HMM references out of the mm hot
path?

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2017-04-28 19:22 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-20 21:46 [tip:x86/mm] x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation Dan Williams
2017-04-21 14:16 ` Kirill A. Shutemov
2017-04-21 19:30   ` Dan Williams
2017-04-23  9:52     ` [PATCH] Revert "x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation" Ingo Molnar
2017-04-23 23:31 ` get_zone_device_page() in get_page() and page_cache_get_speculative() Kirill A. Shutemov
2017-04-23 23:31   ` Kirill A. Shutemov
2017-04-24 17:23   ` Dan Williams
2017-04-24 17:23     ` Dan Williams
2017-04-24 17:30     ` Kirill A. Shutemov
2017-04-24 17:30       ` Kirill A. Shutemov
2017-04-24 17:47       ` Dan Williams
2017-04-24 17:47         ` Dan Williams
2017-04-24 18:01         ` Kirill A. Shutemov
2017-04-24 18:01           ` Kirill A. Shutemov
2017-04-24 18:25           ` Kirill A. Shutemov
2017-04-24 18:25             ` Kirill A. Shutemov
2017-04-24 18:41             ` Dan Williams
2017-04-24 18:41               ` Dan Williams
2017-04-25 13:19               ` Kirill A. Shutemov
2017-04-25 13:19                 ` Kirill A. Shutemov
2017-04-25 16:44                 ` Dan Williams
2017-04-25 16:44                   ` Dan Williams
2017-04-27  0:55   ` [PATCH] mm, zone_device: replace {get, put}_zone_device_page() with a single reference Dan Williams
2017-04-27  0:55     ` Dan Williams
2017-04-27  8:33     ` Kirill A. Shutemov
2017-04-27  8:33       ` Kirill A. Shutemov
2017-04-28  6:39       ` Ingo Molnar
2017-04-28  6:39         ` Ingo Molnar
2017-04-28  8:14         ` [PATCH] mm, zone_device: Replace " Kirill A. Shutemov
2017-04-28  8:14           ` Kirill A. Shutemov
2017-04-28 17:23         ` [PATCH v2] mm, zone_device: replace " Dan Williams
2017-04-28 17:23           ` Dan Williams
2017-04-28 17:34           ` Jerome Glisse
2017-04-28 17:34             ` Jerome Glisse
2017-04-28 17:41             ` Dan Williams
2017-04-28 17:41               ` Dan Williams
2017-04-28 18:00               ` Jerome Glisse
2017-04-28 18:00                 ` Jerome Glisse
2017-04-28 19:02                 ` Dan Williams
2017-04-28 19:02                   ` Dan Williams
2017-04-28 19:16                   ` Jerome Glisse
2017-04-28 19:16                     ` Jerome Glisse
2017-04-28 19:22                     ` Dan Williams [this message]
2017-04-28 19:22                       ` Dan Williams
2017-04-28 19:33                       ` Jerome Glisse
2017-04-28 19:33                         ` Jerome Glisse
2017-04-29 10:17                         ` Kirill A. Shutemov
2017-04-29 10:17                           ` Kirill A. Shutemov
2017-04-30 23:14                           ` Jerome Glisse
2017-04-30 23:14                             ` Jerome Glisse
2017-05-01  1:42                             ` Dan Williams
2017-05-01  1:42                               ` Dan Williams
2017-05-01  1:54                               ` Jerome Glisse
2017-05-01  1:54                                 ` Jerome Glisse
2017-05-01  2:40                                 ` Dan Williams
2017-05-01  2:40                                   ` Dan Williams
2017-05-01  3:48                             ` Logan Gunthorpe
2017-05-01  3:48                               ` Logan Gunthorpe
2017-05-01 10:23                             ` Kirill A. Shutemov
2017-05-01 10:23                               ` Kirill A. Shutemov
2017-05-01 13:55                               ` Jerome Glisse
2017-05-01 13:55                                 ` Jerome Glisse
2017-05-01 20:19                                 ` Dan Williams
2017-05-01 20:19                                   ` Dan Williams
2017-05-01 20:32                                   ` Jerome Glisse
2017-05-01 20:32                                     ` Jerome Glisse
2017-05-02 11:37                                 ` Kirill A. Shutemov
2017-05-02 11:37                                   ` Kirill A. Shutemov
2017-05-02 13:22                                   ` Jerome Glisse
2017-05-02 13:22                                     ` Jerome Glisse
2017-04-29 14:18           ` Ingo Molnar
2017-04-29 14:18             ` Ingo Molnar
2017-05-01  2:45             ` Dan Williams
2017-05-01  2:45               ` Dan Williams
2017-05-01  7:12               ` Ingo Molnar
2017-05-01  7:12                 ` Ingo Molnar
2017-05-01  9:33                 ` Kirill A. Shutemov
2017-05-01  9:33                   ` Kirill A. Shutemov
2017-05-01  8:28           ` [tip:x86/mm] mm, zone_device: Replace {get, put}_zone_device_page() with a single reference to fix pmem crash tip-bot for Dan Williams
2017-04-27 16:11     ` [PATCH] mm, zone_device: replace {get, put}_zone_device_page() with a single reference Logan Gunthorpe
2017-04-27 16:11       ` Logan Gunthorpe
2017-04-27 16:14       ` Dan Williams
2017-04-27 16:14         ` Dan Williams
2017-04-27 16:33         ` Logan Gunthorpe
2017-04-27 16:33           ` Logan Gunthorpe
2017-04-27 16:38           ` Dan Williams
2017-04-27 16:38             ` Dan Williams
2017-04-27 16:45             ` Logan Gunthorpe
2017-04-27 16:45               ` Logan Gunthorpe
2017-04-27 16:46               ` Dan Williams
2017-04-27 16:46                 ` Dan Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPcyv4i+iPm=hBviOYABaroz_JJYVy8Qja8Ka=-_uAQNnGjpeg@mail.gmail.com' \
    --to=dan.j.williams@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=jglisse@redhat.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=logang@deltatee.com \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.