From: Dan Williams <dan.j.williams@intel.com> To: Christoph Hellwig <hch@lst.de> Cc: linux-nvdimm <linux-nvdimm@lists.01.org>, nouveau@lists.freedesktop.org, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>, "Maling list - DRI developers" <dri-devel@lists.freedesktop.org>, "Linux MM" <linux-mm@kvack.org>, "Jérôme Glisse" <jglisse@redhat.com>, "Jason Gunthorpe" <jgg@mellanox.com>, "Ben Skeggs" <bskeggs@redhat.com>, linux-pci@vger.kernel.org Subject: Re: dev_pagemap related cleanups v2 Date: Tue, 18 Jun 2019 12:47:10 -0700 [thread overview] Message-ID: <CAPcyv4hBUJB2RxkDqHkfEGCupDdXfQSrEJmAdhLFwnDOwt8Lig@mail.gmail.com> (raw) In-Reply-To: <20190617122733.22432-1-hch@lst.de> [-- Attachment #1: Type: text/plain, Size: 1204 bytes --] On Mon, Jun 17, 2019 at 5:27 AM Christoph Hellwig <hch@lst.de> wrote: > > Hi Dan, Jérôme and Jason, > > below is a series that cleans up the dev_pagemap interface so that > it is more easily usable, which removes the need to wrap it in hmm > and thus allowing to kill a lot of code > > Note: this series is on top of the rdma/hmm branch + the dev_pagemap > releas fix series from Dan that went into 5.2-rc5. > > Git tree: > > git://git.infradead.org/users/hch/misc.git hmm-devmem-cleanup.2 > > Gitweb: > > http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/hmm-devmem-cleanup.2 > > Changes since v1: > - rebase > - also switch p2pdma to the internal refcount > - add type checking for pgmap->type > - rename the migrate method to migrate_to_ram > - cleanup the altmap_valid flag > - various tidbits from the reviews Attached is my incremental fixups on top of this series, with those integrated you can add: Tested-by: Dan Williams <dan.j.williams@intel.com> ...to the patches that touch kernel/memremap.c, drivers/dax, and drivers/nvdimm. You can also add: Reviewed-by: Dan Williams <dan.j.williams@intel.com> ...for the series. [-- Attachment #2: incremental.diff --] [-- Type: text/x-patch, Size: 5128 bytes --] diff --git a/drivers/dax/device.c b/drivers/dax/device.c index a9d7c90ecf1e..1af823b2fe6b 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -428,6 +428,7 @@ int dev_dax_probe(struct device *dev) return -EBUSY; } + dev_dax->pgmap.type = MEMORY_DEVICE_DEVDAX; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); diff --git a/drivers/nvdimm/Kconfig b/drivers/nvdimm/Kconfig index 54500798f23a..57d3a6c3ac70 100644 --- a/drivers/nvdimm/Kconfig +++ b/drivers/nvdimm/Kconfig @@ -118,4 +118,15 @@ config NVDIMM_KEYS depends on ENCRYPTED_KEYS depends on (LIBNVDIMM=ENCRYPTED_KEYS) || LIBNVDIMM=m +config NVDIMM_TEST_BUILD + bool "Build the unit test core" + depends on COMPILE_TEST + default COMPILE_TEST + help + Build the core of the unit test infrastructure. The result of + this build is non-functional for unit test execution, but it + otherwise helps catch build errors induced by changes to the + core devm_memremap_pages() implementation and other + infrastructure. + endif diff --git a/drivers/nvdimm/Makefile b/drivers/nvdimm/Makefile index 6f2a088afad6..40080c120363 100644 --- a/drivers/nvdimm/Makefile +++ b/drivers/nvdimm/Makefile @@ -28,3 +28,7 @@ libnvdimm-$(CONFIG_BTT) += btt_devs.o libnvdimm-$(CONFIG_NVDIMM_PFN) += pfn_devs.o libnvdimm-$(CONFIG_NVDIMM_DAX) += dax_devs.o libnvdimm-$(CONFIG_NVDIMM_KEYS) += security.o + +TOOLS := ../../tools +TEST_SRC := $(TOOLS)/testing/nvdimm/test +obj-$(CONFIG_NVDIMM_TEST_BUILD) := $(TEST_SRC)/iomap.o diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 7e0f072ddce7..470de68dabd6 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -55,12 +55,19 @@ struct vmem_altmap { * MEMORY_DEVICE_PCI_P2PDMA: * Device memory residing in a PCI BAR intended for use with Peer-to-Peer * transactions. + * + * MEMORY_DEVICE_DEVDAX: + * Host memory that has similar access semantics as System RAM i.e. DMA + * coherent and supports page pinning. In contrast to + * MEMORY_DEVICE_FS_DAX, this memory is access via a device-dax + * character device. */ enum memory_type { MEMORY_DEVICE_PRIVATE = 1, MEMORY_DEVICE_PUBLIC, MEMORY_DEVICE_FS_DAX, MEMORY_DEVICE_PCI_P2PDMA, + MEMORY_DEVICE_DEVDAX, }; struct dev_pagemap_ops { diff --git a/kernel/memremap.c b/kernel/memremap.c index 60693a1e8e92..52b4968e62cd 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -173,6 +173,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) }; pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; + bool get_ops = true; switch (pgmap->type) { case MEMORY_DEVICE_PRIVATE: @@ -199,6 +200,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) } break; case MEMORY_DEVICE_PCI_P2PDMA: + case MEMORY_DEVICE_DEVDAX: + get_ops = false; break; default: WARN(1, "Invalid pgmap type %d\n", pgmap->type); @@ -222,7 +225,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) } } - if (pgmap->type != MEMORY_DEVICE_PCI_P2PDMA) { + if (get_ops) { error = dev_pagemap_get_ops(dev, pgmap); if (error) return ERR_PTR(error); diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 8cd9b9873a7f..9019dd8afbc1 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -106,7 +106,7 @@ EXPORT_SYMBOL(__wrap_devm_memremap); static void nfit_test_kill(void *_pgmap) { - WARN_ON(!pgmap || !pgmap->ref) + struct dev_pagemap *pgmap = _pgmap; if (pgmap->ops && pgmap->ops->kill) pgmap->ops->kill(pgmap); @@ -121,20 +121,45 @@ static void nfit_test_kill(void *_pgmap) } } +static void dev_pagemap_percpu_release(struct percpu_ref *ref) +{ + struct dev_pagemap *pgmap = + container_of(ref, struct dev_pagemap, internal_ref); + + complete(&pgmap->done); +} + void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) { + int error; resource_size_t offset = pgmap->res.start; struct nfit_test_resource *nfit_res = get_nfit_res(offset); - if (nfit_res) { - int rc; + if (!nfit_res) + return devm_memremap_pages(dev, pgmap); - rc = devm_add_action_or_reset(dev, nfit_test_kill, pgmap); - if (rc) - return ERR_PTR(rc); - return nfit_res->buf + offset - nfit_res->res.start; + pgmap->dev = dev; + if (!pgmap->ref) { + if (pgmap->ops && (pgmap->ops->kill || pgmap->ops->cleanup)) + return ERR_PTR(-EINVAL); + + init_completion(&pgmap->done); + error = percpu_ref_init(&pgmap->internal_ref, + dev_pagemap_percpu_release, 0, GFP_KERNEL); + if (error) + return ERR_PTR(error); + pgmap->ref = &pgmap->internal_ref; + } else { + if (!pgmap->ops || !pgmap->ops->kill || !pgmap->ops->cleanup) { + WARN(1, "Missing reference count teardown definition\n"); + return ERR_PTR(-EINVAL); + } } - return devm_memremap_pages(dev, pgmap); + + error = devm_add_action_or_reset(dev, nfit_test_kill, pgmap); + if (error) + return ERR_PTR(error); + return nfit_res->buf + offset - nfit_res->res.start; } EXPORT_SYMBOL_GPL(__wrap_devm_memremap_pages); [-- Attachment #3: Type: text/plain, Size: 151 bytes --] _______________________________________________ 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: Christoph Hellwig <hch@lst.de> Cc: "Jérôme Glisse" <jglisse@redhat.com>, "Jason Gunthorpe" <jgg@mellanox.com>, "Ben Skeggs" <bskeggs@redhat.com>, "Linux MM" <linux-mm@kvack.org>, nouveau@lists.freedesktop.org, "Maling list - DRI developers" <dri-devel@lists.freedesktop.org>, linux-nvdimm <linux-nvdimm@lists.01.org>, linux-pci@vger.kernel.org, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org> Subject: Re: dev_pagemap related cleanups v2 Date: Tue, 18 Jun 2019 12:47:10 -0700 [thread overview] Message-ID: <CAPcyv4hBUJB2RxkDqHkfEGCupDdXfQSrEJmAdhLFwnDOwt8Lig@mail.gmail.com> (raw) In-Reply-To: <20190617122733.22432-1-hch@lst.de> [-- Attachment #1: Type: text/plain, Size: 1204 bytes --] On Mon, Jun 17, 2019 at 5:27 AM Christoph Hellwig <hch@lst.de> wrote: > > Hi Dan, Jérôme and Jason, > > below is a series that cleans up the dev_pagemap interface so that > it is more easily usable, which removes the need to wrap it in hmm > and thus allowing to kill a lot of code > > Note: this series is on top of the rdma/hmm branch + the dev_pagemap > releas fix series from Dan that went into 5.2-rc5. > > Git tree: > > git://git.infradead.org/users/hch/misc.git hmm-devmem-cleanup.2 > > Gitweb: > > http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/hmm-devmem-cleanup.2 > > Changes since v1: > - rebase > - also switch p2pdma to the internal refcount > - add type checking for pgmap->type > - rename the migrate method to migrate_to_ram > - cleanup the altmap_valid flag > - various tidbits from the reviews Attached is my incremental fixups on top of this series, with those integrated you can add: Tested-by: Dan Williams <dan.j.williams@intel.com> ...to the patches that touch kernel/memremap.c, drivers/dax, and drivers/nvdimm. You can also add: Reviewed-by: Dan Williams <dan.j.williams@intel.com> ...for the series. [-- Attachment #2: incremental.diff --] [-- Type: text/x-patch, Size: 5128 bytes --] diff --git a/drivers/dax/device.c b/drivers/dax/device.c index a9d7c90ecf1e..1af823b2fe6b 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -428,6 +428,7 @@ int dev_dax_probe(struct device *dev) return -EBUSY; } + dev_dax->pgmap.type = MEMORY_DEVICE_DEVDAX; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); diff --git a/drivers/nvdimm/Kconfig b/drivers/nvdimm/Kconfig index 54500798f23a..57d3a6c3ac70 100644 --- a/drivers/nvdimm/Kconfig +++ b/drivers/nvdimm/Kconfig @@ -118,4 +118,15 @@ config NVDIMM_KEYS depends on ENCRYPTED_KEYS depends on (LIBNVDIMM=ENCRYPTED_KEYS) || LIBNVDIMM=m +config NVDIMM_TEST_BUILD + bool "Build the unit test core" + depends on COMPILE_TEST + default COMPILE_TEST + help + Build the core of the unit test infrastructure. The result of + this build is non-functional for unit test execution, but it + otherwise helps catch build errors induced by changes to the + core devm_memremap_pages() implementation and other + infrastructure. + endif diff --git a/drivers/nvdimm/Makefile b/drivers/nvdimm/Makefile index 6f2a088afad6..40080c120363 100644 --- a/drivers/nvdimm/Makefile +++ b/drivers/nvdimm/Makefile @@ -28,3 +28,7 @@ libnvdimm-$(CONFIG_BTT) += btt_devs.o libnvdimm-$(CONFIG_NVDIMM_PFN) += pfn_devs.o libnvdimm-$(CONFIG_NVDIMM_DAX) += dax_devs.o libnvdimm-$(CONFIG_NVDIMM_KEYS) += security.o + +TOOLS := ../../tools +TEST_SRC := $(TOOLS)/testing/nvdimm/test +obj-$(CONFIG_NVDIMM_TEST_BUILD) := $(TEST_SRC)/iomap.o diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 7e0f072ddce7..470de68dabd6 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -55,12 +55,19 @@ struct vmem_altmap { * MEMORY_DEVICE_PCI_P2PDMA: * Device memory residing in a PCI BAR intended for use with Peer-to-Peer * transactions. + * + * MEMORY_DEVICE_DEVDAX: + * Host memory that has similar access semantics as System RAM i.e. DMA + * coherent and supports page pinning. In contrast to + * MEMORY_DEVICE_FS_DAX, this memory is access via a device-dax + * character device. */ enum memory_type { MEMORY_DEVICE_PRIVATE = 1, MEMORY_DEVICE_PUBLIC, MEMORY_DEVICE_FS_DAX, MEMORY_DEVICE_PCI_P2PDMA, + MEMORY_DEVICE_DEVDAX, }; struct dev_pagemap_ops { diff --git a/kernel/memremap.c b/kernel/memremap.c index 60693a1e8e92..52b4968e62cd 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -173,6 +173,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) }; pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; + bool get_ops = true; switch (pgmap->type) { case MEMORY_DEVICE_PRIVATE: @@ -199,6 +200,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) } break; case MEMORY_DEVICE_PCI_P2PDMA: + case MEMORY_DEVICE_DEVDAX: + get_ops = false; break; default: WARN(1, "Invalid pgmap type %d\n", pgmap->type); @@ -222,7 +225,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) } } - if (pgmap->type != MEMORY_DEVICE_PCI_P2PDMA) { + if (get_ops) { error = dev_pagemap_get_ops(dev, pgmap); if (error) return ERR_PTR(error); diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 8cd9b9873a7f..9019dd8afbc1 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -106,7 +106,7 @@ EXPORT_SYMBOL(__wrap_devm_memremap); static void nfit_test_kill(void *_pgmap) { - WARN_ON(!pgmap || !pgmap->ref) + struct dev_pagemap *pgmap = _pgmap; if (pgmap->ops && pgmap->ops->kill) pgmap->ops->kill(pgmap); @@ -121,20 +121,45 @@ static void nfit_test_kill(void *_pgmap) } } +static void dev_pagemap_percpu_release(struct percpu_ref *ref) +{ + struct dev_pagemap *pgmap = + container_of(ref, struct dev_pagemap, internal_ref); + + complete(&pgmap->done); +} + void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) { + int error; resource_size_t offset = pgmap->res.start; struct nfit_test_resource *nfit_res = get_nfit_res(offset); - if (nfit_res) { - int rc; + if (!nfit_res) + return devm_memremap_pages(dev, pgmap); - rc = devm_add_action_or_reset(dev, nfit_test_kill, pgmap); - if (rc) - return ERR_PTR(rc); - return nfit_res->buf + offset - nfit_res->res.start; + pgmap->dev = dev; + if (!pgmap->ref) { + if (pgmap->ops && (pgmap->ops->kill || pgmap->ops->cleanup)) + return ERR_PTR(-EINVAL); + + init_completion(&pgmap->done); + error = percpu_ref_init(&pgmap->internal_ref, + dev_pagemap_percpu_release, 0, GFP_KERNEL); + if (error) + return ERR_PTR(error); + pgmap->ref = &pgmap->internal_ref; + } else { + if (!pgmap->ops || !pgmap->ops->kill || !pgmap->ops->cleanup) { + WARN(1, "Missing reference count teardown definition\n"); + return ERR_PTR(-EINVAL); + } } - return devm_memremap_pages(dev, pgmap); + + error = devm_add_action_or_reset(dev, nfit_test_kill, pgmap); + if (error) + return ERR_PTR(error); + return nfit_res->buf + offset - nfit_res->res.start; } EXPORT_SYMBOL_GPL(__wrap_devm_memremap_pages);
next prev parent reply other threads:[~2019-06-18 19:47 UTC|newest] Thread overview: 116+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-17 12:27 dev_pagemap related cleanups v2 Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 01/25] mm: remove the unused ARCH_HAS_HMM_DEVICE Kconfig option Christoph Hellwig 2019-06-17 12:27 ` [PATCH 02/25] mm: remove the struct hmm_device infrastructure Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 03/25] mm: remove hmm_devmem_add_resource Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 04/25] mm: don't clear ->mapping in hmm_devmem_free Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 05/25] mm: export alloc_pages_vma Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig [not found] ` <20190617122733.22432-1-hch-jcswGhMUV9g@public.gmane.org> 2019-06-17 12:27 ` [PATCH 06/25] mm: factor out a devm_request_free_mem_region helper Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 17:37 ` Dan Williams 2019-06-17 17:37 ` Dan Williams 2019-06-17 17:37 ` Dan Williams 2019-06-17 17:40 ` Christoph Hellwig 2019-06-17 17:42 ` Christoph Hellwig 2019-06-17 17:42 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 19:02 ` Dan Williams 2019-06-17 19:02 ` Dan Williams 2019-06-17 19:02 ` Dan Williams 2019-06-17 19:54 ` Christoph Hellwig 2019-06-17 19:54 ` Christoph Hellwig 2019-06-17 19:54 ` Christoph Hellwig 2019-06-17 20:36 ` Dan Williams 2019-06-17 20:36 ` Dan Williams 2019-06-17 12:27 ` [PATCH 08/25] memremap: move dev_pagemap callbacks into a separate structure Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 17:51 ` Dan Williams 2019-06-17 17:51 ` Dan Williams 2019-06-17 19:55 ` Christoph Hellwig 2019-06-17 19:55 ` Christoph Hellwig 2019-06-17 19:55 ` Christoph Hellwig 2019-06-17 21:09 ` Dan Williams 2019-06-17 21:09 ` Dan Williams 2019-06-17 21:09 ` Dan Williams 2019-06-17 20:08 ` Logan Gunthorpe 2019-06-17 20:08 ` Logan Gunthorpe 2019-06-17 20:09 ` Christoph Hellwig 2019-06-17 20:09 ` Christoph Hellwig 2019-06-17 20:09 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 09/25] memremap: pass a struct dev_pagemap to ->kill and ->cleanup Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 10/25] memremap: lift the devmap_enable manipulation into devm_memremap_pages Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 19:25 ` Dan Williams 2019-06-17 19:25 ` Dan Williams 2019-06-17 19:25 ` Dan Williams 2019-06-17 12:27 ` [PATCH 11/25] memremap: add a migrate_to_ram method to struct dev_pagemap_ops Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 12/25] memremap: remove the data field in struct dev_pagemap Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 13/25] memremap: replace the altmap_valid field with a PGMAP_ALTMAP_VALID flag Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 14/25] memremap: provide an optional internal refcount in struct dev_pagemap Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 15/25] device-dax: use the dev_pagemap internal refcount Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-18 19:43 ` Dan Williams 2019-06-18 19:43 ` Dan Williams 2019-06-17 12:27 ` [PATCH 16/25] PCI/P2PDMA: " Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 20:10 ` Logan Gunthorpe 2019-06-17 20:10 ` Logan Gunthorpe 2019-06-17 20:10 ` Logan Gunthorpe 2019-06-17 12:27 ` [PATCH 17/25] nouveau: use alloc_page_vma directly Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 18/25] nouveau: use devm_memremap_pages directly Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 19/25] mm: remove hmm_vma_alloc_locked_page Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 20/25] mm: remove hmm_devmem_add Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 21/25] mm: mark DEVICE_PUBLIC as broken Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 22/25] mm: simplify ZONE_DEVICE page private data Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 23/25] mm: sort out the DEVICE_PRIVATE Kconfig mess Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 24/25] mm: remove the HMM config option Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` [PATCH 25/25] mm: don't select MIGRATE_VMA_HELPER from HMM_MIRROR Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-17 12:27 ` Christoph Hellwig 2019-06-18 19:47 ` Dan Williams [this message] 2019-06-18 19:47 ` dev_pagemap related cleanups v2 Dan Williams 2019-06-19 9:40 ` Christoph Hellwig 2019-06-19 16:36 ` Jason Gunthorpe 2019-06-19 16:46 ` Dan Williams 2019-06-19 16:46 ` Dan Williams 2019-06-19 18:19 ` Jason Gunthorpe 2019-06-20 6:32 ` Christoph Hellwig 2019-06-20 6:32 ` Christoph Hellwig
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=CAPcyv4hBUJB2RxkDqHkfEGCupDdXfQSrEJmAdhLFwnDOwt8Lig@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.