All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oded Gabbay <oded.gabbay@gmail.com>
To: "Sierra Guiza, Alejandro (Alex)" <alex.sierra@amd.com>
Cc: "David Hildenbrand" <david@redhat.com>,
	"Jason Gunthorpe" <jgg@nvidia.com>,
	rcampbell@nvidia.com, "Matthew Wilcox" <willy@infradead.org>,
	"Kuehling, Felix" <Felix.Kuehling@amd.com>,
	apopple@nvidia.com,
	"amd-gfx list" <amd-gfx@lists.freedesktop.org>,
	linux-xfs@vger.kernel.org, linux-mm <linux-mm@kvack.org>,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"Maling list - DRI developers" <dri-devel@lists.freedesktop.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-ext4@vger.kernel.org, "Christoph Hellwig" <hch@lst.de>
Subject: Re: [PATCH v5 01/13] mm: add zone device coherent type memory support
Date: Sat, 18 Jun 2022 12:32:42 +0300	[thread overview]
Message-ID: <CAFCwf11z5Q+2FPS1yPi6EwQuRqoJg_dLB-rYgtVwP-zQEdqjQQ@mail.gmail.com> (raw)
In-Reply-To: <02ed2cb7-3ad3-8ffc-6032-04ae1853e234@amd.com>

On Fri, Jun 17, 2022 at 8:20 PM Sierra Guiza, Alejandro (Alex)
<alex.sierra@amd.com> wrote:
>
>
> On 6/17/2022 4:40 AM, David Hildenbrand wrote:
> > On 31.05.22 22:00, Alex Sierra wrote:
> >> Device memory that is cache coherent from device and CPU point of view.
> >> This is used on platforms that have an advanced system bus (like CAPI
> >> or CXL). Any page of a process can be migrated to such memory. However,
> >> no one should be allowed to pin such memory so that it can always be
> >> evicted.
> >>
> >> Signed-off-by: Alex Sierra <alex.sierra@amd.com>
> >> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
> >> Reviewed-by: Alistair Popple <apopple@nvidia.com>
> >> [hch: rebased ontop of the refcount changes,
> >>        removed is_dev_private_or_coherent_page]
> >> Signed-off-by: Christoph Hellwig <hch@lst.de>
> >> ---
> >>   include/linux/memremap.h | 19 +++++++++++++++++++
> >>   mm/memcontrol.c          |  7 ++++---
> >>   mm/memory-failure.c      |  8 ++++++--
> >>   mm/memremap.c            | 10 ++++++++++
> >>   mm/migrate_device.c      | 16 +++++++---------
> >>   mm/rmap.c                |  5 +++--
> >>   6 files changed, 49 insertions(+), 16 deletions(-)
> >>
> >> diff --git a/include/linux/memremap.h b/include/linux/memremap.h
> >> index 8af304f6b504..9f752ebed613 100644
> >> --- a/include/linux/memremap.h
> >> +++ b/include/linux/memremap.h
> >> @@ -41,6 +41,13 @@ struct vmem_altmap {
> >>    * A more complete discussion of unaddressable memory may be found in
> >>    * include/linux/hmm.h and Documentation/vm/hmm.rst.
> >>    *
> >> + * MEMORY_DEVICE_COHERENT:
> >> + * Device memory that is cache coherent from device and CPU point of view. This
> >> + * is used on platforms that have an advanced system bus (like CAPI or CXL). A
> >> + * driver can hotplug the device memory using ZONE_DEVICE and with that memory
> >> + * type. Any page of a process can be migrated to such memory. However no one
> > Any page might not be right, I'm pretty sure. ... just thinking about special pages
> > like vdso, shared zeropage, ... pinned pages ...
>
> Hi David,
>
> Yes, I think you're right. This type does not cover all special pages.
> I need to correct that on the cover letter.
> Pinned pages are allowed as long as they're not long term pinned.
>
> Regards,
> Alex Sierra

What if I want to hotplug this device's coherent memory, but I do
*not* want the OS
to migrate any page to it ?
I want to fully-control what resides on this memory, as I can consider
this memory
"expensive". i.e. I don't have a lot of it, I want to use it for
specific purposes and
I don't want the OS to start using it when there is some memory pressure in
the system.

Oded

>
> >
> >> + * should be allowed to pin such memory so that it can always be evicted.
> >> + *
> >>    * MEMORY_DEVICE_FS_DAX:
> >>    * Host memory that has similar access semantics as System RAM i.e. DMA
> >>    * coherent and supports page pinning. In support of coordinating page
> >> @@ -61,6 +68,7 @@ struct vmem_altmap {
> >>   enum memory_type {
> >>      /* 0 is reserved to catch uninitialized type fields */
> >>      MEMORY_DEVICE_PRIVATE = 1,
> >> +    MEMORY_DEVICE_COHERENT,
> >>      MEMORY_DEVICE_FS_DAX,
> >>      MEMORY_DEVICE_GENERIC,
> >>      MEMORY_DEVICE_PCI_P2PDMA,
> >> @@ -143,6 +151,17 @@ static inline bool folio_is_device_private(const struct folio *folio)
> > In general, this LGTM, and it should be correct with PageAnonExclusive I think.
> >
> >
> > However, where exactly is pinning forbidden?
>
> Long-term pinning is forbidden since it would interfere with the device
> memory manager owning the
> device-coherent pages (e.g. evictions in TTM). However, normal pinning
> is allowed on this device type.
>
> Regards,
> Alex Sierra
>
> >

WARNING: multiple messages have this Message-ID (diff)
From: Oded Gabbay <oded.gabbay@gmail.com>
To: "Sierra Guiza, Alejandro (Alex)" <alex.sierra@amd.com>
Cc: rcampbell@nvidia.com,
	"Maling list - DRI developers" <dri-devel@lists.freedesktop.org>,
	"David Hildenbrand" <david@redhat.com>,
	"Kuehling, Felix" <Felix.Kuehling@amd.com>,
	apopple@nvidia.com, "Matthew Wilcox" <willy@infradead.org>,
	linux-xfs@vger.kernel.org, linux-mm <linux-mm@kvack.org>,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"amd-gfx list" <amd-gfx@lists.freedesktop.org>,
	"Jason Gunthorpe" <jgg@nvidia.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-ext4@vger.kernel.org, "Christoph Hellwig" <hch@lst.de>
Subject: Re: [PATCH v5 01/13] mm: add zone device coherent type memory support
Date: Sat, 18 Jun 2022 12:32:42 +0300	[thread overview]
Message-ID: <CAFCwf11z5Q+2FPS1yPi6EwQuRqoJg_dLB-rYgtVwP-zQEdqjQQ@mail.gmail.com> (raw)
In-Reply-To: <02ed2cb7-3ad3-8ffc-6032-04ae1853e234@amd.com>

On Fri, Jun 17, 2022 at 8:20 PM Sierra Guiza, Alejandro (Alex)
<alex.sierra@amd.com> wrote:
>
>
> On 6/17/2022 4:40 AM, David Hildenbrand wrote:
> > On 31.05.22 22:00, Alex Sierra wrote:
> >> Device memory that is cache coherent from device and CPU point of view.
> >> This is used on platforms that have an advanced system bus (like CAPI
> >> or CXL). Any page of a process can be migrated to such memory. However,
> >> no one should be allowed to pin such memory so that it can always be
> >> evicted.
> >>
> >> Signed-off-by: Alex Sierra <alex.sierra@amd.com>
> >> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
> >> Reviewed-by: Alistair Popple <apopple@nvidia.com>
> >> [hch: rebased ontop of the refcount changes,
> >>        removed is_dev_private_or_coherent_page]
> >> Signed-off-by: Christoph Hellwig <hch@lst.de>
> >> ---
> >>   include/linux/memremap.h | 19 +++++++++++++++++++
> >>   mm/memcontrol.c          |  7 ++++---
> >>   mm/memory-failure.c      |  8 ++++++--
> >>   mm/memremap.c            | 10 ++++++++++
> >>   mm/migrate_device.c      | 16 +++++++---------
> >>   mm/rmap.c                |  5 +++--
> >>   6 files changed, 49 insertions(+), 16 deletions(-)
> >>
> >> diff --git a/include/linux/memremap.h b/include/linux/memremap.h
> >> index 8af304f6b504..9f752ebed613 100644
> >> --- a/include/linux/memremap.h
> >> +++ b/include/linux/memremap.h
> >> @@ -41,6 +41,13 @@ struct vmem_altmap {
> >>    * A more complete discussion of unaddressable memory may be found in
> >>    * include/linux/hmm.h and Documentation/vm/hmm.rst.
> >>    *
> >> + * MEMORY_DEVICE_COHERENT:
> >> + * Device memory that is cache coherent from device and CPU point of view. This
> >> + * is used on platforms that have an advanced system bus (like CAPI or CXL). A
> >> + * driver can hotplug the device memory using ZONE_DEVICE and with that memory
> >> + * type. Any page of a process can be migrated to such memory. However no one
> > Any page might not be right, I'm pretty sure. ... just thinking about special pages
> > like vdso, shared zeropage, ... pinned pages ...
>
> Hi David,
>
> Yes, I think you're right. This type does not cover all special pages.
> I need to correct that on the cover letter.
> Pinned pages are allowed as long as they're not long term pinned.
>
> Regards,
> Alex Sierra

What if I want to hotplug this device's coherent memory, but I do
*not* want the OS
to migrate any page to it ?
I want to fully-control what resides on this memory, as I can consider
this memory
"expensive". i.e. I don't have a lot of it, I want to use it for
specific purposes and
I don't want the OS to start using it when there is some memory pressure in
the system.

Oded

>
> >
> >> + * should be allowed to pin such memory so that it can always be evicted.
> >> + *
> >>    * MEMORY_DEVICE_FS_DAX:
> >>    * Host memory that has similar access semantics as System RAM i.e. DMA
> >>    * coherent and supports page pinning. In support of coordinating page
> >> @@ -61,6 +68,7 @@ struct vmem_altmap {
> >>   enum memory_type {
> >>      /* 0 is reserved to catch uninitialized type fields */
> >>      MEMORY_DEVICE_PRIVATE = 1,
> >> +    MEMORY_DEVICE_COHERENT,
> >>      MEMORY_DEVICE_FS_DAX,
> >>      MEMORY_DEVICE_GENERIC,
> >>      MEMORY_DEVICE_PCI_P2PDMA,
> >> @@ -143,6 +151,17 @@ static inline bool folio_is_device_private(const struct folio *folio)
> > In general, this LGTM, and it should be correct with PageAnonExclusive I think.
> >
> >
> > However, where exactly is pinning forbidden?
>
> Long-term pinning is forbidden since it would interfere with the device
> memory manager owning the
> device-coherent pages (e.g. evictions in TTM). However, normal pinning
> is allowed on this device type.
>
> Regards,
> Alex Sierra
>
> >

  parent reply	other threads:[~2022-06-18  9:33 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-31 20:00 [PATCH v5 00/13] Add MEMORY_DEVICE_COHERENT for coherent device memory mapping Alex Sierra
2022-05-31 20:00 ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 01/13] mm: add zone device coherent type memory support Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-06-17  9:40   ` David Hildenbrand
2022-06-17  9:40     ` David Hildenbrand
2022-06-17 17:20     ` Sierra Guiza, Alejandro (Alex)
2022-06-17 17:20       ` Sierra Guiza, Alejandro (Alex)
2022-06-17 17:33       ` David Hildenbrand
2022-06-17 17:33         ` David Hildenbrand
2022-06-17 19:27         ` Sierra Guiza, Alejandro (Alex)
2022-06-17 19:27           ` Sierra Guiza, Alejandro (Alex)
2022-06-17 21:19           ` David Hildenbrand
2022-06-17 21:19             ` David Hildenbrand
2022-06-21 11:25             ` Felix Kuehling
2022-06-21 11:25               ` Felix Kuehling
2022-06-21 11:32               ` David Hildenbrand
2022-06-21 11:32                 ` David Hildenbrand
2022-06-21 11:55                 ` Alistair Popple
2022-06-21 11:55                   ` Alistair Popple
2022-06-21 12:25                   ` David Hildenbrand
2022-06-21 12:25                     ` David Hildenbrand
2022-06-21 16:08                     ` Sierra Guiza, Alejandro (Alex)
2022-06-21 16:08                       ` Sierra Guiza, Alejandro (Alex)
2022-06-21 16:16                       ` David Hildenbrand
2022-06-21 16:16                         ` David Hildenbrand
2022-06-22  0:16                         ` Alistair Popple
2022-06-22  0:16                           ` Alistair Popple
2022-06-22 23:06                           ` Sierra Guiza, Alejandro (Alex)
2022-06-22 23:06                             ` Sierra Guiza, Alejandro (Alex)
2022-06-22 23:16                         ` Sierra Guiza, Alejandro (Alex)
2022-06-22 23:16                           ` Sierra Guiza, Alejandro (Alex)
2022-06-23  7:57                           ` David Hildenbrand
2022-06-23  7:57                             ` David Hildenbrand
2022-06-23 18:20                             ` Sierra Guiza, Alejandro (Alex)
2022-06-23 18:20                               ` Sierra Guiza, Alejandro (Alex)
2022-06-23 18:21                               ` David Hildenbrand
2022-06-23 18:21                                 ` David Hildenbrand
2022-06-24 16:13                                 ` Sierra Guiza, Alejandro (Alex)
2022-06-24 16:13                                   ` Sierra Guiza, Alejandro (Alex)
2022-06-18  9:32       ` Oded Gabbay [this message]
2022-06-18  9:32         ` Oded Gabbay
2022-06-20  0:17         ` Alistair Popple
2022-06-20  0:17           ` Alistair Popple
2022-06-20  6:01           ` Oded Gabbay
2022-06-20  6:01             ` Oded Gabbay
2022-06-20  8:13             ` Alistair Popple
2022-06-20  8:13               ` Alistair Popple
2022-06-20 12:23               ` Oded Gabbay
2022-06-20 12:23                 ` Oded Gabbay
2022-05-31 20:00 ` [PATCH v5 02/13] mm: handling Non-LRU pages returned by vm_normal_pages Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-06-08  7:06   ` Alistair Popple
2022-06-08  7:06     ` Alistair Popple
2022-06-17  9:51   ` David Hildenbrand
2022-06-17  9:51     ` David Hildenbrand
2022-05-31 20:00 ` [PATCH v5 03/13] mm: add device coherent vma selection for memory migration Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 04/13] mm: remove the vma check in migrate_vma_setup() Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 05/13] mm/gup: migrate device coherent pages when pinning instead of failing Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 06/13] drm/amdkfd: add SPM support for SVM Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 07/13] lib: test_hmm add ioctl to get zone device type Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 08/13] lib: test_hmm add module param for " Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 09/13] lib: add support for device coherent type in test_hmm Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 10/13] tools: update hmm-test to support device coherent type Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 11/13] tools: update test_hmm script to support SP config Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 12/13] tools: add hmm gup tests for device coherent type Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-05-31 20:00 ` [PATCH v5 13/13] tools: add selftests to hmm for COW in device memory Alex Sierra
2022-05-31 20:00   ` Alex Sierra
2022-06-17  2:19 ` [PATCH v5 00/13] Add MEMORY_DEVICE_COHERENT for coherent device memory mapping Andrew Morton
2022-06-17  2:19   ` Andrew Morton
2022-06-17  7:44   ` David Hildenbrand
2022-06-17  7:44     ` David Hildenbrand

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=CAFCwf11z5Q+2FPS1yPi6EwQuRqoJg_dLB-rYgtVwP-zQEdqjQQ@mail.gmail.com \
    --to=oded.gabbay@gmail.com \
    --cc=Felix.Kuehling@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.sierra@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=apopple@nvidia.com \
    --cc=david@redhat.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hch@lst.de \
    --cc=jgg@nvidia.com \
    --cc=jglisse@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=rcampbell@nvidia.com \
    --cc=willy@infradead.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: 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.