From: Dan Williams <dan.j.williams@intel.com> To: Jason Gunthorpe <jgg@mellanox.com> Cc: "linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>, "nouveau@lists.freedesktop.org" <nouveau@lists.freedesktop.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>, "linux-mm@kvack.org" <linux-mm@kvack.org>, "Jérôme Glisse" <jglisse@redhat.com>, "Ben Skeggs" <bskeggs@redhat.com>, "linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>, "Christoph Hellwig" <hch@lst.de> Subject: Re: [PATCH 09/22] memremap: lift the devmap_enable manipulation into devm_memremap_pages Date: Thu, 13 Jun 2019 13:13:41 -0700 [thread overview] Message-ID: <CAPcyv4iwVPm2XBviR8E32VJG+ZZTHZLGxDdXS3et22CTT_3qNA@mail.gmail.com> (raw) In-Reply-To: <20190613193427.GU22062@mellanox.com> On Thu, Jun 13, 2019 at 12:35 PM Jason Gunthorpe <jgg@mellanox.com> wrote: > > On Thu, Jun 13, 2019 at 11:43:12AM +0200, Christoph Hellwig wrote: > > Just check if there is a ->page_free operation set and take care of the > > static key enable, as well as the put using device managed resources. > > diff --git a/mm/hmm.c b/mm/hmm.c > > index c76a1b5defda..6dc769feb2e1 100644 > > +++ b/mm/hmm.c > > @@ -1378,8 +1378,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, > > void *result; > > int ret; > > > > - dev_pagemap_get_ops(); > > - > > Where was the matching dev_pagemap_put_ops() for this hmm case? This > is a bug fix too? > It never existed. HMM turned on the facility and made everyone's put_page() operations slower regardless of whether HMM was in active use. > The nouveau driver is the only one to actually call this hmm function > and it does it as part of a probe function. > > Seems reasonable, however, in the unlikely event that it fails to init > 'dmem' the driver will retain a dev_pagemap_get_ops until it unloads. > This imbalance doesn't seem worth worrying about. Right, unless/until the overhead of checking for put_page() callbacks starts to hurt leaving pagemap_ops tied to lifetime of the driver load seems acceptable because who unbinds their GPU device at runtime? On the other hand it was simple enough for the pmem driver to drop the reference each time a device was unbound just to close the loop. > > Reviewed-by: Christoph Hellwig <hch@lst.de> ...minor typo. _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: Dan Williams <dan.j.williams@intel.com> To: Jason Gunthorpe <jgg@mellanox.com> Cc: "Christoph Hellwig" <hch@lst.de>, "Jérôme Glisse" <jglisse@redhat.com>, "Ben Skeggs" <bskeggs@redhat.com>, "linux-mm@kvack.org" <linux-mm@kvack.org>, "nouveau@lists.freedesktop.org" <nouveau@lists.freedesktop.org>, "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>, "linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>, "linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 09/22] memremap: lift the devmap_enable manipulation into devm_memremap_pages Date: Thu, 13 Jun 2019 13:13:41 -0700 [thread overview] Message-ID: <CAPcyv4iwVPm2XBviR8E32VJG+ZZTHZLGxDdXS3et22CTT_3qNA@mail.gmail.com> (raw) In-Reply-To: <20190613193427.GU22062@mellanox.com> On Thu, Jun 13, 2019 at 12:35 PM Jason Gunthorpe <jgg@mellanox.com> wrote: > > On Thu, Jun 13, 2019 at 11:43:12AM +0200, Christoph Hellwig wrote: > > Just check if there is a ->page_free operation set and take care of the > > static key enable, as well as the put using device managed resources. > > diff --git a/mm/hmm.c b/mm/hmm.c > > index c76a1b5defda..6dc769feb2e1 100644 > > +++ b/mm/hmm.c > > @@ -1378,8 +1378,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, > > void *result; > > int ret; > > > > - dev_pagemap_get_ops(); > > - > > Where was the matching dev_pagemap_put_ops() for this hmm case? This > is a bug fix too? > It never existed. HMM turned on the facility and made everyone's put_page() operations slower regardless of whether HMM was in active use. > The nouveau driver is the only one to actually call this hmm function > and it does it as part of a probe function. > > Seems reasonable, however, in the unlikely event that it fails to init > 'dmem' the driver will retain a dev_pagemap_get_ops until it unloads. > This imbalance doesn't seem worth worrying about. Right, unless/until the overhead of checking for put_page() callbacks starts to hurt leaving pagemap_ops tied to lifetime of the driver load seems acceptable because who unbinds their GPU device at runtime? On the other hand it was simple enough for the pmem driver to drop the reference each time a device was unbound just to close the loop. > > Reviewed-by: Christoph Hellwig <hch@lst.de> ...minor typo.
next prev parent reply other threads:[~2019-06-13 20:13 UTC|newest] Thread overview: 254+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-13 9:43 dev_pagemap related cleanups Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 01/22] mm: remove the unused ARCH_HAS_HMM_DEVICE Kconfig option Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 18:30 ` Jason Gunthorpe 2019-06-13 18:30 ` Jason Gunthorpe 2019-06-13 18:30 ` Jason Gunthorpe 2019-06-13 9:43 ` [PATCH 02/22] mm: remove the struct hmm_device infrastructure Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 18:46 ` Jason Gunthorpe 2019-06-13 18:46 ` Jason Gunthorpe 2019-06-13 18:46 ` Jason Gunthorpe 2019-06-13 23:06 ` [Nouveau] " John Hubbard 2019-06-13 23:06 ` John Hubbard 2019-06-13 23:06 ` [Nouveau] " John Hubbard 2019-06-13 9:43 ` [PATCH 03/22] mm: remove hmm_devmem_add_resource Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 18:52 ` Jason Gunthorpe 2019-06-13 18:52 ` Jason Gunthorpe 2019-06-14 6:19 ` Christoph Hellwig 2019-06-14 0:54 ` [Nouveau] " John Hubbard 2019-06-14 0:54 ` John Hubbard 2019-06-14 0:54 ` [Nouveau] " John Hubbard 2019-06-20 19:32 ` Michal Hocko 2019-06-13 9:43 ` [PATCH 04/22] mm: don't clear ->mapping in hmm_devmem_free Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:05 ` Jason Gunthorpe 2019-06-13 19:05 ` Jason Gunthorpe 2019-06-14 6:21 ` Christoph Hellwig 2019-06-14 6:21 ` Christoph Hellwig 2019-06-14 1:46 ` John Hubbard 2019-06-14 1:46 ` John Hubbard 2019-06-14 1:46 ` John Hubbard 2019-06-20 19:36 ` Michal Hocko 2019-06-20 19:36 ` Michal Hocko 2019-06-13 9:43 ` [PATCH 05/22] mm: export alloc_pages_vma Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-14 1:47 ` John Hubbard 2019-06-14 1:47 ` John Hubbard 2019-06-14 1:47 ` John Hubbard 2019-06-14 6:23 ` Christoph Hellwig 2019-06-20 19:17 ` Michal Hocko 2019-06-24 18:24 ` Dan Williams 2019-06-24 18:24 ` Dan Williams 2019-06-25 7:23 ` Christoph Hellwig 2019-06-25 7:23 ` Christoph Hellwig 2019-06-25 15:00 ` Michal Hocko 2019-06-25 15:00 ` Michal Hocko 2019-06-25 18:03 ` Dan Williams 2019-06-25 18:03 ` Dan Williams 2019-06-25 19:00 ` Michal Hocko 2019-06-25 19:00 ` Michal Hocko 2019-06-25 19:52 ` Dan Williams 2019-06-25 19:52 ` Dan Williams 2019-06-26 5:46 ` Michal Hocko 2019-06-26 5:46 ` Michal Hocko 2019-06-26 5:46 ` Michal Hocko 2019-06-26 16:14 ` Dan Williams 2019-06-27 6:41 ` Michal Hocko 2019-06-27 6:41 ` Michal Hocko 2019-06-27 6:41 ` Michal Hocko 2019-06-13 9:43 ` [PATCH 06/22] mm: factor out a devm_request_free_mem_region helper Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:16 ` Jason Gunthorpe 2019-06-13 19:16 ` Jason Gunthorpe 2019-06-14 6:24 ` Christoph Hellwig 2019-06-14 6:24 ` Christoph Hellwig 2019-06-15 2:21 ` John Hubbard 2019-06-15 2:21 ` John Hubbard 2019-06-15 2:21 ` John Hubbard 2019-06-15 14:30 ` Christoph Hellwig 2019-06-15 14:30 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 07/22] memremap: move dev_pagemap callbacks into a separate structure Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:18 ` Jason Gunthorpe 2019-06-13 19:18 ` Jason Gunthorpe 2019-06-13 19:18 ` Jason Gunthorpe 2019-06-13 20:14 ` Logan Gunthorpe 2019-06-13 20:14 ` Logan Gunthorpe 2019-06-13 9:43 ` [PATCH 08/22] memremap: pass a struct dev_pagemap to ->kill Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:26 ` Jason Gunthorpe 2019-06-13 19:26 ` Jason Gunthorpe 2019-06-13 20:12 ` Logan Gunthorpe 2019-06-13 20:12 ` Logan Gunthorpe 2019-06-13 20:12 ` Logan Gunthorpe 2019-06-13 20:15 ` Dan Williams 2019-06-13 20:15 ` Dan Williams 2019-06-13 9:43 ` [PATCH 09/22] memremap: lift the devmap_enable manipulation into devm_memremap_pages Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:34 ` Jason Gunthorpe 2019-06-13 19:34 ` Jason Gunthorpe 2019-06-13 19:34 ` Jason Gunthorpe 2019-06-13 20:13 ` Dan Williams [this message] 2019-06-13 20:13 ` Dan Williams 2019-06-14 6:28 ` Christoph Hellwig 2019-06-14 6:28 ` Christoph Hellwig 2019-06-14 6:28 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 10/22] memremap: add a migrate callback to struct dev_pagemap_ops Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 23:42 ` Ralph Campbell 2019-06-13 23:42 ` Ralph Campbell 2019-06-13 23:42 ` Ralph Campbell 2019-06-14 6:33 ` Christoph Hellwig 2019-06-14 6:33 ` Christoph Hellwig 2019-06-14 6:33 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 11/22] memremap: remove the data field in struct dev_pagemap Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:37 ` Jason Gunthorpe 2019-06-13 19:37 ` Jason Gunthorpe 2019-06-13 19:37 ` Jason Gunthorpe 2019-06-13 9:43 ` [PATCH 12/22] memremap: provide an optional internal refcount " Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 13/22] device-dax: use the dev_pagemap internal refcount Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-14 0:22 ` Ira Weiny 2019-06-14 0:22 ` Ira Weiny 2019-06-14 0:22 ` Ira Weiny 2019-06-14 6:35 ` Christoph Hellwig 2019-06-14 6:35 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 14/22] nouveau: use alloc_page_vma directly Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:39 ` Jason Gunthorpe 2019-06-13 19:39 ` Jason Gunthorpe 2019-06-13 9:43 ` [PATCH 15/22] nouveau: use devm_memremap_pages directly Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 16/22] mm: remove hmm_vma_alloc_locked_page Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 17/22] mm: remove hmm_devmem_add Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:42 ` Jason Gunthorpe 2019-06-13 19:42 ` Jason Gunthorpe 2019-06-14 6:39 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 18/22] mm: mark DEVICE_PUBLIC as broken Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:44 ` Jason Gunthorpe 2019-06-13 19:44 ` Jason Gunthorpe 2019-06-13 19:44 ` Jason Gunthorpe 2019-06-13 19:53 ` Ralph Campbell 2019-06-13 19:53 ` Ralph Campbell 2019-06-13 19:58 ` Jason Gunthorpe 2019-06-13 19:58 ` Jason Gunthorpe 2019-06-13 19:58 ` Jason Gunthorpe 2019-06-14 0:43 ` Ira Weiny 2019-06-14 0:43 ` Ira Weiny 2019-06-14 0:43 ` Ira Weiny 2019-06-14 1:23 ` John Hubbard 2019-06-14 1:23 ` John Hubbard 2019-06-14 1:23 ` John Hubbard 2019-06-19 19:27 ` Jason Gunthorpe 2019-06-19 19:27 ` Jason Gunthorpe 2019-06-19 19:46 ` Dan Williams 2019-06-19 19:46 ` Dan Williams 2019-06-26 3:15 ` John Hubbard 2019-06-26 3:15 ` John Hubbard 2019-06-26 3:15 ` John Hubbard 2019-06-26 5:45 ` Michal Hocko 2019-06-26 5:45 ` Michal Hocko 2019-06-26 5:45 ` Michal Hocko 2019-06-26 6:07 ` John Hubbard 2019-06-26 6:07 ` John Hubbard 2019-06-14 6:43 ` Christoph Hellwig 2019-06-14 6:43 ` Christoph Hellwig 2019-06-20 19:26 ` Michal Hocko 2019-06-25 7:29 ` Christoph Hellwig 2019-06-25 11:44 ` Jason Gunthorpe 2019-06-25 11:44 ` Jason Gunthorpe 2019-06-25 11:44 ` Jason Gunthorpe 2019-06-25 11:59 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 19/22] mm: simplify ZONE_DEVICE page private data Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 20/22] mm: sort out the DEVICE_PRIVATE Kconfig mess Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 19:55 ` Jason Gunthorpe 2019-06-13 19:55 ` Jason Gunthorpe 2019-06-13 9:43 ` [PATCH 21/22] mm: remove the HMM config option Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 20:01 ` Jason Gunthorpe 2019-06-13 20:01 ` Jason Gunthorpe 2019-06-14 6:47 ` Christoph Hellwig 2019-06-14 6:47 ` Christoph Hellwig 2019-06-14 6:47 ` Christoph Hellwig 2019-06-13 9:43 ` [PATCH 22/22] mm: don't select MIGRATE_VMA_HELPER from HMM_MIRROR Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 9:43 ` Christoph Hellwig 2019-06-13 20:04 ` Jason Gunthorpe 2019-06-13 20:04 ` Jason Gunthorpe 2019-06-13 20:04 ` Jason Gunthorpe 2019-06-14 1:53 ` [Nouveau] " John Hubbard 2019-06-14 1:53 ` John Hubbard 2019-06-14 1:53 ` John Hubbard 2019-06-14 6:48 ` Christoph Hellwig 2019-06-14 6:48 ` Christoph Hellwig 2019-06-13 14:16 ` dev_pagemap related cleanups Jason Gunthorpe 2019-06-13 14:16 ` Jason Gunthorpe 2019-06-14 6:12 ` Christoph Hellwig 2019-06-14 6:12 ` Christoph Hellwig 2019-06-14 6:12 ` Christoph Hellwig 2019-06-13 18:27 ` Dan Williams 2019-06-13 18:27 ` Dan Williams 2019-06-13 18:27 ` Dan Williams 2019-06-13 20:17 ` Logan Gunthorpe 2019-06-13 20:17 ` Logan Gunthorpe 2019-06-13 20:21 ` Dan Williams 2019-06-13 20:24 ` Logan Gunthorpe 2019-06-13 20:24 ` Logan Gunthorpe 2019-06-13 20:48 ` Andrew Morton 2019-06-13 20:48 ` Andrew Morton 2019-06-13 20:48 ` Andrew Morton 2019-06-13 20:40 ` Jason Gunthorpe 2019-06-13 20:40 ` Jason Gunthorpe 2019-06-13 20:40 ` Jason Gunthorpe 2019-06-13 21:21 ` Christoph Hellwig 2019-06-13 21:21 ` Christoph Hellwig 2019-06-13 23:10 ` Jason Gunthorpe 2019-06-13 23:10 ` Jason Gunthorpe 2019-06-13 23:10 ` Jason Gunthorpe 2019-06-14 6:14 ` Christoph Hellwig 2019-06-14 6:14 ` Christoph Hellwig 2019-06-14 6:14 ` Christoph Hellwig 2019-06-14 0:31 ` Ira Weiny 2019-06-14 0:31 ` Ira Weiny 2019-06-14 0:31 ` Ira Weiny 2019-06-14 6:13 ` Christoph Hellwig 2019-06-14 6:13 ` Christoph Hellwig 2019-06-15 1:14 ` Dan Williams 2019-06-15 1:14 ` Dan Williams 2019-06-15 8:33 ` Christoph Hellwig 2019-06-15 8:33 ` Christoph Hellwig 2019-06-15 8:33 ` Christoph Hellwig 2019-06-15 18:09 ` Dan Williams 2019-06-15 18:09 ` Dan Williams 2019-06-15 18:09 ` 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=CAPcyv4iwVPm2XBviR8E32VJG+ZZTHZLGxDdXS3et22CTT_3qNA@mail.gmail.com \ --to=dan.j.williams@intel.com \ --cc=bskeggs@redhat.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=hch@lst.de \ --cc=jgg@mellanox.com \ --cc=jglisse@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-nvdimm@lists.01.org \ --cc=linux-pci@vger.kernel.org \ --cc=nouveau@lists.freedesktop.org \ /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: linkBe 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.