[Nouveau] [PATCH 4/5] drm/nouveau: FIFO interrupt fixes for Turing

2020-10-29 Thread Alistair Popple
Some of the low level FIFO interrupt status bits have changed for Turing. Update the handling of these to match the hardware. Signed-off-by: Alistair Popple --- .../gpu/drm/nouveau/nvkm/engine/fifo/tu102.c | 78 +++ 1 file changed, 9 insertions(+), 69 deletions(-) diff --git a

[Nouveau] [PATCH 0/5] Improve Robust Channel (RC) recovery for Turing

2020-10-29 Thread Alistair Popple
ile(1) style GPU loops and bad pointer dereferences on a Turing GPU. However if there are less trivial tests available that have been known to cause problems with channel recovery in the past let me know and I'll start testing those as well. Alistair Popple (5): drm/nouveau: Fix MMU fault int

[Nouveau] [PATCH 3/5] drm/nouveau: Move Turing specific FIFO functions

2020-10-29 Thread Alistair Popple
gk104 and other users. It should not introduce any functional changes. Signed-off-by: Alistair Popple --- .../gpu/drm/nouveau/nvkm/engine/fifo/gk104.c | 46 +- .../gpu/drm/nouveau/nvkm/engine/fifo/gk104.h | 32 ++ .../gpu/drm/nouveau/nvkm/engine/fifo/tu102.c | 463 +- 3

[Nouveau] [PATCH 1/5] drm/nouveau: Fix MMU fault interrupts on Turing

2020-10-29 Thread Alistair Popple
the new top level registers. Signed-off-by: Alistair Popple --- .../gpu/drm/nouveau/nvkm/subdev/fault/tu102.c | 21 +++- .../gpu/drm/nouveau/nvkm/subdev/mc/tu102.c| 107 +- 2 files changed, 122 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev

[Nouveau] [PATCH 5/5] drm/nouveau: Turing channel preemption fix

2020-10-29 Thread Alistair Popple
-existent registers results in further errors, so use the runlist preemption register instead. Signed-off-by: Alistair Popple --- .../gpu/drm/nouveau/nvkm/engine/fifo/tu102.c | 43 +-- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/engine

[Nouveau] [PATCH 2/5] drm/nouveau: Remove Turing interrupt hack

2020-10-29 Thread Alistair Popple
This is no longer needed now that tu102_mc_intr_stat has been updated to look at the correct top-level interrupt bits. Signed-off-by: Alistair Popple --- drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.c | 3 --- drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h | 1 - drivers/gpu/drm/nouveau/nvkm

[Nouveau] [PATCH] drm/nouveau/svm: Only map migrating pages

2020-11-30 Thread Alistair Popple
uired. Fixes: e3d8b0890469 ("drm/nouveau/svm: map pages after migration") Signed-off-by: Alistair Popple --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 14 -- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/

[Nouveau] [PATCH 0/9] Add support for SVM atomics in Nouveau

2021-02-08 Thread Alistair Popple
moved has yet to be resolved so any discussion is welcome. Alistair Popple (9): mm/migrate.c: Always allow device private pages to migrate mm/migrate.c: Allow pfn flags to be passed to migrate_vma_setup() mm/migrate: Add a unmap and pin migration mode Documentation: Add unmap and pin to

[Nouveau] [PATCH 2/9] mm/migrate.c: Allow pfn flags to be passed to migrate_vma_setup()

2021-02-08 Thread Alistair Popple
pfn arrays. Signed-off-by: Alistair Popple --- arch/powerpc/kvm/book3s_hv_uvmem.c | 4 ++-- lib/test_hmm.c | 6 -- mm/migrate.c | 1 - 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm

[Nouveau] [PATCH 3/9] mm/migrate: Add a unmap and pin migration mode

2021-02-08 Thread Alistair Popple
freed it is safe to allow the unmap and pin operation to proceed in cases where there are extra page references present. Signed-off-by: Alistair Popple --- include/linux/migrate.h | 2 + include/linux/migrate_mode.h | 1 + mm/migrate.c | 74

[Nouveau] [PATCH 1/9] mm/migrate.c: Always allow device private pages to migrate

2021-02-08 Thread Alistair Popple
private page migration as this can lead to failures to migrate pages back to the CPU which are fatal to the user process. Signed-off-by: Alistair Popple --- mm/migrate.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mm/migrate.c b/mm/migrate.c index 20ca887ea769

[Nouveau] [PATCH 4/9] Documentation: Add unmap and pin to HMM

2021-02-08 Thread Alistair Popple
Update the HMM documentation to include information on the unmap and pin operation. Signed-off-by: Alistair Popple --- Documentation/vm/hmm.rst | 22 +++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst index

[Nouveau] [PATCH 5/9] hmm-tests: Add test for unmap and pin

2021-02-08 Thread Alistair Popple
Adds a basic test of the HMM unmap and pin operation. Signed-off-by: Alistair Popple --- lib/test_hmm.c | 107 + lib/test_hmm_uapi.h| 1 + tools/testing/selftests/vm/hmm-tests.c | 49 +++ 3 files changed, 140

[Nouveau] [PATCH 6/9] nouveau/dmem: Only map migrating pages

2021-02-08 Thread Alistair Popple
uired. Signed-off-by: Alistair Popple --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 15 +-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index 92987daa5e17..9579bd001f11 100644 --- a/drivers/gp

[Nouveau] [PATCH 7/9] nouveau/svm: Refactor nouveau_range_fault

2021-02-08 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH 8/9] nouveau/dmem: Add support for multiple page types

2021-02-08 Thread Alistair Popple
when accessing some GPU pages. This patch extends the existing Nouveau device private page allocator to make it easier to allocate device private pages with different callbacks but should not introduce any functional changes. Signed-off-by: Alistair Popple --- drivers/gpu/drm/nouveau

[Nouveau] [PATCH 9/9] nouveau/svm: Implement atomic SVM access

2021-02-08 Thread Alistair Popple
: Alistair Popple --- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_dmem.c| 148 -- drivers/gpu/drm/nouveau/nouveau_dmem.h| 4 + drivers/gpu/drm/nouveau/nouveau_svm.c | 116 -- drivers/gpu/drm/nouveau/nvkm

Re: [Nouveau] [PATCH 0/9] Add support for SVM atomics in Nouveau

2021-02-09 Thread Alistair Popple
ssible to add a callback in the page migration logic to specially deal with moving these pages? Thanks, Alistair > Cheers, Daniel > > > > > > > Alistair Popple (9): > > mm/migrate.c: Always allow device private pages to migrate > > mm/migrate.c: Allow pfn

Re: [Nouveau] [PATCH 1/9] mm/migrate.c: Always allow device private pages to migrate

2021-02-09 Thread Alistair Popple
On Wednesday, 10 February 2021 12:39:32 AM AEDT Jason Gunthorpe wrote: > On Tue, Feb 09, 2021 at 12:07:14PM +1100, Alistair Popple wrote: > > Device private pages are used to represent device memory that is not > > directly accessible from the CPU. Extra references to a device priva

Re: [Nouveau] [PATCH 0/9] Add support for SVM atomics in Nouveau

2021-02-17 Thread Alistair Popple
On Thursday, 11 February 2021 6:55:10 PM AEDT Christoph Hellwig wrote: > On Wed, Feb 10, 2021 at 01:59:13PM -0400, Jason Gunthorpe wrote: > > Really what you want to do here is leave the CPU page in the VMA and > > the page tables where it started and deny CPU access to the page. Then > > all the p

[Nouveau] [PATCH v2 0/4] Add support for SVM atomics in Nouveau

2021-02-18 Thread Alistair Popple
. Alistair Popple (4): hmm: Device exclusive memory access hmm: Selftests for exclusive device memory nouveau/svm: Refactor nouveau_range_fault nouveau/svm: Implement atomic SVM access Documentation/vm/hmm.rst | 15 ++ drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1

[Nouveau] [PATCH v2 1/4] hmm: Device exclusive memory access

2021-02-18 Thread Alistair Popple
original mapping. This results in MMU notifiers being called which a driver uses to update access permissions such as revoking atomic access. After notifiers have been called the device will no longer have exclusive access to the region. Signed-off-by: Alistair Popple --- Documentation/vm/hmm.rst

[Nouveau] [PATCH v2 2/4] hmm: Selftests for exclusive device memory

2021-02-18 Thread Alistair Popple
Adds some selftests for exclusive device memory. Signed-off-by: Alistair Popple --- lib/test_hmm.c | 124 ++ lib/test_hmm_uapi.h| 2 + tools/testing/selftests/vm/hmm-tests.c | 219 + 3 files changed, 345

[Nouveau] [PATCH v2 3/4] nouveau/svm: Refactor nouveau_range_fault

2021-02-18 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH v2 4/4] nouveau/svm: Implement atomic SVM access

2021-02-18 Thread Alistair Popple
to proceed. Signed-off-by: Alistair Popple --- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_svm.c | 86 --- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h | 1 + .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c| 6 ++ 4 files

Re: [Nouveau] [PATCH v2 1/4] hmm: Device exclusive memory access

2021-02-18 Thread Alistair Popple
R on linus/master v5.11 next-20210218] > [cannot apply to hnaz-linux-mm/master] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch] > > ur

Re: [Nouveau] [PATCH v2 1/4] hmm: Device exclusive memory access

2021-02-22 Thread Alistair Popple
On Friday, 19 February 2021 8:47:41 PM AEDT Christoph Hellwig wrote: > > page = migration_entry_to_page(swpent); > > else if (is_device_private_entry(swpent)) > > page = device_private_entry_to_page(swpent); > > + else if (is_device_excl

[Nouveau] [PATCH v3 0/8] Add support for SVM atomics in Nouveau

2021-02-25 Thread Alistair Popple
stead of device private pages. Alistair Popple (8): mm: Remove special swap entry functions mm/swapops: Rework swap entry manipulation code mm/rmap: Split try_to_munlock from try_to_unmap mm/rmap: Split migration into its own function mm: Device exclusive memory access mm: Selftests for e

[Nouveau] [PATCH v3 1/8] mm: Remove special swap entry functions

2021-02-25 Thread Alistair Popple
Remove the migration and device private entry_to_page() and entry_to_pfn() inline functions and instead open code them directly. This results in shorter code which is easier to understand. Signed-off-by: Alistair Popple --- arch/s390/mm/pgtable.c | 2 +- fs/proc/task_mmu.c | 23

[Nouveau] [PATCH v3 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-02-25 Thread Alistair Popple
rather than overload try_to_unmap_one() with unrelated behaviour split this out into it's own function and remove the flag. Signed-off-by: Alistair Popple --- Given the comments on not needing to hold mmap_lock it was not 100% clear to me if it is safe to check vma->vma_flags & VM_LOCK

[Nouveau] [PATCH v3 2/8] mm/swapops: Rework swap entry manipulation code

2021-02-25 Thread Alistair Popple
-off-by: Alistair Popple --- include/linux/swapops.h | 56 ++--- mm/debug_vm_pgtable.c | 12 - mm/hmm.c| 2 +- mm/huge_memory.c| 26 +-- mm/hugetlb.c| 10 +--- mm/memory.c | 10

[Nouveau] [PATCH v3 4/8] mm/rmap: Split migration into its own function

2021-02-25 Thread Alistair Popple
try_to_migrate() for PageAnon or try_to_unmap(). Signed-off-by: Alistair Popple --- include/linux/rmap.h | 4 +- mm/huge_memory.c | 10 +- mm/migrate.c | 9 +- mm/rmap.c| 352 +++ 4 files changed, 269 insertions(+), 106

[Nouveau] [PATCH v3 5/8] mm: Device exclusive memory access

2021-02-25 Thread Alistair Popple
original mapping. This results in MMU notifiers being called which a driver uses to update access permissions such as revoking atomic access. After notifiers have been called the device will no longer have exclusive access to the region. Signed-off-by: Alistair Popple --- Documentation/vm/hmm.rst

[Nouveau] [PATCH v3 6/8] mm: Selftests for exclusive device memory

2021-02-25 Thread Alistair Popple
Adds some selftests for exclusive device memory. Signed-off-by: Alistair Popple --- lib/test_hmm.c | 124 ++ lib/test_hmm_uapi.h| 2 + tools/testing/selftests/vm/hmm-tests.c | 219 + 3 files changed, 345

[Nouveau] [PATCH v3 7/8] nouveau/svm: Refactor nouveau_range_fault

2021-02-25 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH v3 8/8] nouveau/svm: Implement atomic SVM access

2021-02-25 Thread Alistair Popple
to proceed. Signed-off-by: Alistair Popple --- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_svm.c | 88 --- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h | 1 + .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c| 6 ++ 4 files

Re: [Nouveau] [PATCH v3 1/8] mm: Remove special swap entry functions

2021-03-01 Thread Alistair Popple
On Tuesday, 2 March 2021 4:46:42 AM AEDT Jason Gunthorpe wrote: > > I wish you could come up with a more descriptive word that special > here > > What I understand is this is true when the swap_offset is a pfn? Correct, and that points to a better name. Maybe is_pfn_swap_entry()? In which case

Re: [Nouveau] [PATCH v3 1/8] mm: Remove special swap entry functions

2021-03-02 Thread Alistair Popple
On Saturday, 27 February 2021 2:59:09 AM AEDT Christoph Hellwig wrote: > > - struct page *page = migration_entry_to_page(entry); > > + struct page *page = pfn_to_page(swp_offset(entry)); > > I wonder if keeping a single special_entry_to_page() helper would still > me a useful.

Re: [Nouveau] [PATCH v3 5/8] mm: Device exclusive memory access

2021-03-02 Thread Alistair Popple
On Tuesday, 2 March 2021 11:05:59 AM AEDT Jason Gunthorpe wrote: > On Fri, Feb 26, 2021 at 06:18:29PM +1100, Alistair Popple wrote: > > > +/** > > + * make_device_exclusive_range() - Mark a range for exclusive use by a device > > + * @mm: mm_struct of assoicated targe

Re: [Nouveau] [PATCH v3 6/8] mm: Selftests for exclusive device memory

2021-03-02 Thread Alistair Popple
On Tuesday, 2 March 2021 10:14:56 AM AEDT Ralph Campbell wrote: > > From: Alistair Popple > > Sent: Thursday, February 25, 2021 11:19 PM > > To: linux...@kvack.org; nouveau@lists.freedesktop.org; > > bske...@redhat.com; a...@linux-foundation.org > > Cc: linux-

Re: [Nouveau] [PATCH v3 1/8] mm: Remove special swap entry functions

2021-03-02 Thread Alistair Popple
On Tuesday, 2 March 2021 7:52:53 PM AEDT Alistair Popple wrote: > On Saturday, 27 February 2021 2:59:09 AM AEDT Christoph Hellwig wrote: > > > - struct page *page = migration_entry_to_page(entry); > > > + struct page *page = pfn_to_page(swp_offset(entry));

Re: [Nouveau] [PATCH v3 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-03 Thread Alistair Popple
On Tuesday, 2 March 2021 3:10:49 AM AEDT Jason Gunthorpe wrote: > > + while (page_vma_mapped_walk(&pvmw)) { > > + /* > > +* If the page is mlock()d, we cannot swap it out. > > +* If it's recently referenced (perhaps page_referenced > > +

Re: [Nouveau] [PATCH v3 5/8] mm: Device exclusive memory access

2021-03-03 Thread Alistair Popple
On Tuesday, 2 March 2021 11:41:52 PM AEDT Jason Gunthorpe wrote: > > However try_to_protect() scans the PTEs again under the PTL so checking the > > mapping of interest actually gets replaced during the rmap walk seems like a > > reasonable solution. Thanks for the comments. > > It does seem c

[Nouveau] [PATCH v4 1/8] mm: Remove special swap entry functions

2021-03-03 Thread Alistair Popple
Remove the migration and device private entry_to_page() and entry_to_pfn() inline functions and instead open code them directly. This results in shorter code which is easier to understand. Signed-off-by: Alistair Popple --- v4: * Added pfn_swap_entry_to_page() * Reinstated check that migration

[Nouveau] [PATCH v4 0/8] Add support for SVM atomics in Nouveau

2021-03-03 Thread Alistair Popple
g device page tables. v3: * Refactored some existing functionality. * Switched to using get_user_pages_remote() instead of open-coding it. * Moved code out of hmm. v2: * Changed implementation to use special swap entries instead of device private pages. Alistair Popple (8): mm: Remove special sw

[Nouveau] [PATCH v4 2/8] mm/swapops: Rework swap entry manipulation code

2021-03-03 Thread Alistair Popple
-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- include/linux/swapops.h | 56 ++--- mm/debug_vm_pgtable.c | 12 - mm/hmm.c| 2 +- mm/huge_memory.c| 26 +-- mm/hugetlb.c

[Nouveau] [PATCH v4 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-03 Thread Alistair Popple
rather than overload try_to_unmap_one() with unrelated behaviour split this out into it's own function and remove the flag. Signed-off-by: Alistair Popple --- Christoph - I didn't add your Reviewed-by because removal of the extra VM_LOCKED check changed things slightly. Let me know if you&#

[Nouveau] [PATCH v4 4/8] mm/rmap: Split migration into its own function

2021-03-03 Thread Alistair Popple
try_to_migrate() for PageAnon or try_to_unmap(). Signed-off-by: Alistair Popple Reviewed-by: Christoph Hellwig --- include/linux/rmap.h | 4 +- mm/huge_memory.c | 10 +- mm/migrate.c | 9 +- mm/rmap.c| 352 +++ 4 files changed

[Nouveau] [PATCH v4 5/8] mm: Device exclusive memory access

2021-03-03 Thread Alistair Popple
original mapping. This results in MMU notifiers being called which a driver uses to update access permissions such as revoking atomic access. After notifiers have been called the device will no longer have exclusive access to the region. Signed-off-by: Alistair Popple --- v4: * Add function to check

[Nouveau] [PATCH v4 6/8] mm: Selftests for exclusive device memory

2021-03-03 Thread Alistair Popple
Adds some selftests for exclusive device memory. Signed-off-by: Alistair Popple Acked-by: Jason Gunthorpe Tested-by: Ralph Campbell Reviewed-by: Ralph Campbell --- lib/test_hmm.c | 124 ++ lib/test_hmm_uapi.h| 2 + tools/testing

[Nouveau] [PATCH v4 7/8] nouveau/svm: Refactor nouveau_range_fault

2021-03-03 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH v4 8/8] nouveau/svm: Implement atomic SVM access

2021-03-03 Thread Alistair Popple
to proceed. Signed-off-by: Alistair Popple --- v4: * Check that page table entries haven't changed before mapping on the device --- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_svm.c | 107 -- drivers/gpu/drm/nouveau

Re: [Nouveau] [PATCH v3 4/8] mm/rmap: Split migration into its own function

2021-03-04 Thread Alistair Popple
On Wednesday, 3 March 2021 9:08:15 AM AEDT Zi Yan wrote: > On 26 Feb 2021, at 2:18, Alistair Popple wrote: > > diff --git a/include/linux/rmap.h b/include/linux/rmap.h > > index 7f1ee411bd7b..77fa17de51d7 100644 > > --- a/include/linux/rmap.h > > +++ b/include/linu

Re: [Nouveau] [PATCH v4 4/8] mm/rmap: Split migration into its own function

2021-03-08 Thread Alistair Popple
On Tuesday, 9 March 2021 5:58:12 AM AEDT Ralph Campbell wrote: > > On 3/3/21 10:16 PM, Alistair Popple wrote: > > Migration is currently implemented as a mode of operation for > > try_to_unmap_one() generally specified by passing the TTU_MIGRATION flag > > or in the

Re: [Nouveau] [PATCH v4 5/8] mm: Device exclusive memory access

2021-03-08 Thread Alistair Popple
On Tuesday, 9 March 2021 6:44:41 AM AEDT Ralph Campbell wrote: > > On 3/3/21 10:16 PM, Alistair Popple wrote: > > Some devices require exclusive write access to shared virtual > > memory (SVM) ranges to perform atomic operations on that memory. This > > requires CPU page

[Nouveau] [PATCH v5 0/8] Add support for SVM atomics in Nouveau

2021-03-09 Thread Alistair Popple
l swap entries instead of device private pages. Alistair Popple (8): mm: Remove special swap entry functions mm/swapops: Rework swap entry manipulation code mm/rmap: Split try_to_munlock from try_to_unmap mm/rmap: Split migration into its own function mm: Device exclusive memory access

[Nouveau] [PATCH v5 1/8] mm: Remove special swap entry functions

2021-03-09 Thread Alistair Popple
Remove the migration and device private entry_to_page() and entry_to_pfn() inline functions and instead open code them directly. This results in shorter code which is easier to understand. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell --- v4: * Added pfn_swap_entry_to_page

[Nouveau] [PATCH v5 2/8] mm/swapops: Rework swap entry manipulation code

2021-03-09 Thread Alistair Popple
-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: Ralph Campbell --- include/linux/swapops.h | 56 ++--- mm/debug_vm_pgtable.c | 12 - mm/hmm.c| 2 +- mm/huge_memory.c| 26

[Nouveau] [PATCH v5 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-09 Thread Alistair Popple
rather than overload try_to_unmap_one() with unrelated behaviour split this out into it's own function and remove the flag. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell --- Christoph - I didn't add your Reviewed-by from v3 because removal of the extra VM_LOCKED check in

[Nouveau] [PATCH v5 4/8] mm/rmap: Split migration into its own function

2021-03-09 Thread Alistair Popple
try_to_migrate() for PageAnon or try_to_unmap(). Signed-off-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Ralph Campbell --- v5: * Added comments about how PMD splitting works for migration vs. unmapping * Tightened up the flag check in try_to_migrate() to be explicit about

[Nouveau] [PATCH v5 5/8] mm: Device exclusive memory access

2021-03-09 Thread Alistair Popple
original mapping. This results in MMU notifiers being called which a driver uses to update access permissions such as revoking atomic access. After notifiers have been called the device will no longer have exclusive access to the region. Signed-off-by: Alistair Popple --- v5: * Renamed range

[Nouveau] [PATCH v5 6/8] mm: Selftests for exclusive device memory

2021-03-09 Thread Alistair Popple
Adds some selftests for exclusive device memory. Signed-off-by: Alistair Popple Acked-by: Jason Gunthorpe Tested-by: Ralph Campbell Reviewed-by: Ralph Campbell --- lib/test_hmm.c | 126 +- lib/test_hmm_uapi.h| 2 + tools/testing

[Nouveau] [PATCH v5 7/8] nouveau/svm: Refactor nouveau_range_fault

2021-03-09 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH v5 8/8] nouveau/svm: Implement atomic SVM access

2021-03-09 Thread Alistair Popple
to proceed. Signed-off-by: Alistair Popple --- v4: * Check that page table entries haven't changed before mapping on the device --- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_svm.c | 102 -- drivers/gpu/drm/nouveau

Re: [Nouveau] [PATCH v5 1/8] mm: Remove special swap entry functions

2021-03-11 Thread Alistair Popple
On Tuesday, 9 March 2021 11:49:49 PM AEDT Matthew Wilcox wrote: > On Tue, Mar 09, 2021 at 11:14:58PM +1100, Alistair Popple wrote: > > -static inline struct page *migration_entry_to_page(swp_entry_t entry) > > -{ > > - struct page *p = pfn_to_page(swp_offset(entry)); >

[Nouveau] [PATCH v6 0/8] Add support for SVM atomics in Nouveau

2021-03-12 Thread Alistair Popple
n tested using the latest upstream Mesa userspace with a simple OpenCL test program which checks the results of atomic GPU operations on a SVM buffer whilst also writing to the same buffer from the CPU. Alistair Popple (8): mm: Remove special swap entry functions mm/swapops: Rework swap entry mani

[Nouveau] [PATCH v6 1/8] mm: Remove special swap entry functions

2021-03-12 Thread Alistair Popple
Remove the migration and device private entry_to_page() and entry_to_pfn() inline functions and instead open code them directly. This results in shorter code which is easier to understand. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell --- v6: * Removed redundant compound_page

[Nouveau] [PATCH v6 2/8] mm/swapops: Rework swap entry manipulation code

2021-03-12 Thread Alistair Popple
-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: Ralph Campbell --- include/linux/swapops.h | 56 ++--- mm/debug_vm_pgtable.c | 12 - mm/hmm.c| 2 +- mm/huge_memory.c| 26

[Nouveau] [PATCH v6 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-12 Thread Alistair Popple
rather than overload try_to_unmap_one() with unrelated behaviour split this out into it's own function and remove the flag. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell --- Christoph - I didn't add your Reviewed-by from v3 because removal of the extra VM_LOCKED check in

[Nouveau] [PATCH v6 5/8] mm: Device exclusive memory access

2021-03-12 Thread Alistair Popple
original mapping. This results in MMU notifiers being called which a driver uses to update access permissions such as revoking atomic access. After notifiers have been called the device will no longer have exclusive access to the region. Signed-off-by: Alistair Popple --- v6: * Fixed a bisectablity

[Nouveau] [PATCH v6 4/8] mm/rmap: Split migration into its own function

2021-03-12 Thread Alistair Popple
try_to_migrate() for PageAnon or try_to_unmap(). Signed-off-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Ralph Campbell --- v5: * Added comments about how PMD splitting works for migration vs. unmapping * Tightened up the flag check in try_to_migrate() to be explicit about

[Nouveau] [PATCH v6 6/8] mm: Selftests for exclusive device memory

2021-03-12 Thread Alistair Popple
Adds some selftests for exclusive device memory. Signed-off-by: Alistair Popple Acked-by: Jason Gunthorpe Tested-by: Ralph Campbell Reviewed-by: Ralph Campbell --- lib/test_hmm.c | 124 ++ lib/test_hmm_uapi.h| 2 + tools/testing

[Nouveau] [PATCH v6 7/8] nouveau/svm: Refactor nouveau_range_fault

2021-03-12 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH v6 8/8] nouveau/svm: Implement atomic SVM access

2021-03-12 Thread Alistair Popple
to proceed. Signed-off-by: Alistair Popple --- v4: * Check that page table entries haven't changed before mapping on the device --- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_svm.c | 100 -- drivers/gpu/drm/nouveau

Re: [Nouveau] [PATCH v6 1/8] mm: Remove special swap entry functions

2021-03-22 Thread Alistair Popple
On Monday, 15 March 2021 6:27:57 PM AEDT Christoph Hellwig wrote: > On Fri, Mar 12, 2021 at 07:38:44PM +1100, Alistair Popple wrote: > > Remove the migration and device private entry_to_page() and > > entry_to_pfn() inline functions and instead open code them directly. > > Th

Re: [Nouveau] [PATCH v6 8/8] nouveau/svm: Implement atomic SVM access

2021-03-22 Thread Alistair Popple
On Monday, 15 March 2021 6:51:13 PM AEDT Christoph Hellwig wrote: > > - /*XXX: atomic? */ > > - return (fa->access == 0 || fa->access == 3) - > > - (fb->access == 0 || fb->access == 3); > > + /* Atomic access (2) has highest priority */ > > + return (-1*(fa->access == 2) + (fa->acc

Re: [Nouveau] [PATCH v6 5/8] mm: Device exclusive memory access

2021-03-22 Thread Alistair Popple
On Monday, 15 March 2021 6:42:45 PM AEDT Christoph Hellwig wrote: > > +Not all devices support atomic access to system memory. To support atomic > > +operations to a shared virtual memory page such a device needs access to that > > +page which is exclusive of any userspace access from the CPU. The

[Nouveau] [PATCH v7 0/8] Add support for SVM atomics in Nouveau

2021-03-25 Thread Alistair Popple
upstream Mesa userspace with a simple OpenCL test program which checks the results of atomic GPU operations on a SVM buffer whilst also writing to the same buffer from the CPU. Alistair Popple (8): mm: Remove special swap entry functions mm/swapops: Rework swap entry manipulation code mm/rma

[Nouveau] [PATCH v7 1/8] mm: Remove special swap entry functions

2021-03-25 Thread Alistair Popple
pfn_swap_entry_to_page(). Also open-code the various entry_to_pfn() functions as this results is shorter code that is easier to understand. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell Reviewed-by: Christoph Hellwig --- v7: * Reworded commit message to include pfn_swap_entry_to_page

[Nouveau] [PATCH v7 2/8] mm/swapops: Rework swap entry manipulation code

2021-03-25 Thread Alistair Popple
-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: Ralph Campbell --- include/linux/swapops.h | 56 ++--- mm/debug_vm_pgtable.c | 12 - mm/hmm.c| 2 +- mm/huge_memory.c| 26

[Nouveau] [PATCH v7 4/8] mm/rmap: Split migration into its own function

2021-03-25 Thread Alistair Popple
try_to_migrate() for PageAnon or try_to_unmap(). Signed-off-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Ralph Campbell --- v5: * Added comments about how PMD splitting works for migration vs. unmapping * Tightened up the flag check in try_to_migrate() to be explicit about

[Nouveau] [PATCH v7 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-25 Thread Alistair Popple
rather than overload try_to_unmap_one() with unrelated behaviour split this out into it's own function and remove the flag. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell Reviewed-by: Christoph Hellwig --- v7: * Added Christoph's Reviewed-by v4: * Removed redundant check for

[Nouveau] [PATCH v7 6/8] mm: Selftests for exclusive device memory

2021-03-25 Thread Alistair Popple
Adds some selftests for exclusive device memory. Signed-off-by: Alistair Popple Acked-by: Jason Gunthorpe Tested-by: Ralph Campbell Reviewed-by: Ralph Campbell --- lib/test_hmm.c | 124 +++ lib/test_hmm_uapi.h| 2 + tools/testing

[Nouveau] [PATCH v7 7/8] nouveau/svm: Refactor nouveau_range_fault

2021-03-25 Thread Alistair Popple
Call mmu_interval_notifier_insert() as part of nouveau_range_fault(). This doesn't introduce any functional change but makes it easier for a subsequent patch to alter the behaviour of nouveau_range_fault() to support GPU atomic operations. Signed-off-by: Alistair Popple --- drivers/gp

[Nouveau] [PATCH v7 5/8] mm: Device exclusive memory access

2021-03-25 Thread Alistair Popple
original mapping. This results in MMU notifiers being called which a driver uses to update access permissions such as revoking atomic access. After notifiers have been called the device will no longer have exclusive access to the region. Signed-off-by: Alistair Popple Reviewed-by: Christoph Hellwig

[Nouveau] [PATCH v7 8/8] nouveau/svm: Implement atomic SVM access

2021-03-25 Thread Alistair Popple
to proceed. Signed-off-by: Alistair Popple --- v7: * Removed magic values for fault access levels * Improved readability of fault comparison code v4: * Check that page table entries haven't changed before mapping on the device --- drivers/gpu/drm/nouveau/include/nvif/if000c.h

Re: [Nouveau] [PATCH v7 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-30 Thread Alistair Popple
On Wednesday, 31 March 2021 5:49:03 AM AEDT Jason Gunthorpe wrote: > On Fri, Mar 26, 2021 at 11:08:00AM +1100, Alistair Popple wrote: > > > +static bool try_to_munlock_one(struct page *page, struct vm_area_struct *vma, > > +unsigned long address, void *arg) &

Re: [Nouveau] [PATCH v7 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-30 Thread Alistair Popple
On Wednesday, 31 March 2021 9:09:30 AM AEDT Alistair Popple wrote: > On Wednesday, 31 March 2021 5:49:03 AM AEDT Jason Gunthorpe wrote: > > On Fri, Mar 26, 2021 at 11:08:00AM +1100, Alistair Popple wrote: > > So what clears PG_mlocked on this call path? > > See munloc

Re: [Nouveau] [PATCH v7 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-30 Thread Alistair Popple
On Wednesday, 31 March 2021 9:43:19 AM AEDT John Hubbard wrote: > On 3/30/21 3:24 PM, Jason Gunthorpe wrote: > ... > >> As far as I can tell this has always been called try_to_munlock() even though > >> it appears to do the opposite. > > > > Maybe we should change it then? > > > >>> /** > >>>

Re: [Nouveau] [PATCH v7 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-30 Thread Alistair Popple
On Wednesday, 31 March 2021 2:56:38 PM AEDT John Hubbard wrote: > On 3/30/21 3:56 PM, Alistair Popple wrote: > ... > >> +1 for renaming "munlock*" items to "mlock*", where applicable. good grief. > > > > At least the situation was weird enough to pr

Re: [Nouveau] [PATCH v7 5/8] mm: Device exclusive memory access

2021-03-31 Thread Alistair Popple
On Wednesday, 31 March 2021 6:32:34 AM AEDT Jason Gunthorpe wrote: > On Fri, Mar 26, 2021 at 11:08:02AM +1100, Alistair Popple wrote: > > diff --git a/mm/memory.c b/mm/memory.c > > index 3a5705cfc891..33d11527ef77 100644 > > +++ b/mm/memory.c > > @@ -781,6 +781,27 @@

Re: [Nouveau] [PATCH v7 5/8] mm: Device exclusive memory access

2021-03-31 Thread Alistair Popple
On Thursday, 1 April 2021 12:18:54 AM AEDT Jason Gunthorpe wrote: > On Wed, Mar 31, 2021 at 11:59:28PM +1100, Alistair Popple wrote: > > > I guess that makes sense as the split could go either way at the > > moment but I should add a check to make sure this isn't used with

Re: [Nouveau] [PATCH v7 5/8] mm: Device exclusive memory access

2021-03-31 Thread Alistair Popple
On Thursday, 1 April 2021 12:46:04 AM AEDT Jason Gunthorpe wrote: > On Thu, Apr 01, 2021 at 12:27:52AM +1100, Alistair Popple wrote: > > On Thursday, 1 April 2021 12:18:54 AM AEDT Jason Gunthorpe wrote: > > > On Wed, Mar 31, 2021 at 11:59:28PM +1100, Alistair Popple wrote: >

Re: [Nouveau] [PATCH v7 5/8] mm: Device exclusive memory access

2021-03-31 Thread Alistair Popple
On Thursday, 1 April 2021 11:48:13 AM AEDT Jason Gunthorpe wrote: > On Thu, Apr 01, 2021 at 11:45:57AM +1100, Alistair Popple wrote: > > On Thursday, 1 April 2021 12:46:04 AM AEDT Jason Gunthorpe wrote: > > > On Thu, Apr 01, 2021 at 12:27:52AM +1100, Alistair Popple wrote: >

Re: [Nouveau] [PATCH v7 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-03-31 Thread Alistair Popple
On Wednesday, 31 March 2021 10:57:46 PM AEDT Jason Gunthorpe wrote: > On Wed, Mar 31, 2021 at 03:15:47PM +1100, Alistair Popple wrote: > > On Wednesday, 31 March 2021 2:56:38 PM AEDT John Hubbard wrote: > > > On 3/30/21 3:56 PM, Alistair Popple wrote: > > > ... > &

[Nouveau] [PATCH v8 0/8] Add support for SVM atomics in Nouveau

2021-04-07 Thread Alistair Popple
ecks the results of atomic GPU operations on a SVM buffer whilst also writing to the same buffer from the CPU. Alistair Popple (8): mm: Remove special swap entry functions mm/swapops: Rework swap entry manipulation code mm/rmap: Split try_to_munlock from try_to_unmap mm/rmap: Split migration

[Nouveau] [PATCH v8 1/8] mm: Remove special swap entry functions

2021-04-07 Thread Alistair Popple
pfn_swap_entry_to_page(). Also open-code the various entry_to_pfn() functions as this results is shorter code that is easier to understand. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell Reviewed-by: Christoph Hellwig --- v7: * Reworded commit message to include pfn_swap_entry_to_page

[Nouveau] [PATCH v8 2/8] mm/swapops: Rework swap entry manipulation code

2021-04-07 Thread Alistair Popple
-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: Ralph Campbell --- include/linux/swapops.h | 56 ++--- mm/debug_vm_pgtable.c | 12 - mm/hmm.c| 2 +- mm/huge_memory.c| 26

[Nouveau] [PATCH v8 3/8] mm/rmap: Split try_to_munlock from try_to_unmap

2021-04-07 Thread Alistair Popple
rather than overload try_to_unmap_one() with unrelated behaviour split this out into it's own function and remove the flag. Signed-off-by: Alistair Popple Reviewed-by: Ralph Campbell Reviewed-by: Christoph Hellwig --- v8: * Renamed try_to_munlock to page_mlock to better reflect what the fun

[Nouveau] [PATCH v8 4/8] mm/rmap: Split migration into its own function

2021-04-07 Thread Alistair Popple
try_to_migrate() for PageAnon or try_to_unmap(). Signed-off-by: Alistair Popple Reviewed-by: Christoph Hellwig Reviewed-by: Ralph Campbell --- v5: * Added comments about how PMD splitting works for migration vs. unmapping * Tightened up the flag check in try_to_migrate() to be explicit about

  1   2   3   >