search for: dmirror_fault

Displaying 8 results from an estimated 8 matches for "dmirror_fault".

2020 Mar 17
4
[PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On 3/17/20 5:59 AM, Christoph Hellwig wrote: > On Tue, Mar 17, 2020 at 09:47:55AM -0300, Jason Gunthorpe wrote: >> I've been using v7 of Ralph's tester and it is working well - it has >> DEVICE_PRIVATE support so I think it can test this flow too. Ralph are >> you able? >> >> This hunk seems trivial enough to me, can we include it now? > > I can send
2020 Mar 19
0
[PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
...d to invalidate the > + * device page table since the address space will be torn down. > + */ > + if (!mmget_not_zero(mm)) > + return true; Why? Don't the notifiers provide for this already. mmget_not_zero() is required before calling hmm_range_fault() though > +static int dmirror_fault(struct dmirror *dmirror, unsigned long start, > + unsigned long end, bool write) > +{ > + struct mm_struct *mm = dmirror->mm; > + unsigned long addr; > + uint64_t pfns[64]; > + struct hmm_range range = { > + .notifier = &dmirror->notifier, > + .pfns = pfns, &g...
2020 Mar 20
0
[PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On Tue, Mar 17, 2020 at 04:14:31PM -0700, Ralph Campbell wrote: > +static int dmirror_fault(struct dmirror *dmirror, unsigned long start, > + unsigned long end, bool write) > +{ > + struct mm_struct *mm = dmirror->mm; > + unsigned long addr; > + uint64_t pfns[64]; > + struct hmm_range range = { > + .notifier = &dmirror->notifier, > + .pfns = pfns, &g...
2020 Mar 20
1
[PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On 3/19/20 5:14 PM, Jason Gunthorpe wrote: > On Tue, Mar 17, 2020 at 04:14:31PM -0700, Ralph Campbell wrote: > >> +static int dmirror_fault(struct dmirror *dmirror, unsigned long start, >> + unsigned long end, bool write) >> +{ >> + struct mm_struct *mm = dmirror->mm; >> + unsigned long addr; >> + uint64_t pfns[64]; >> + struct hmm_range range = { >> + .notifier = &dmirror->notifi...
2020 Mar 19
2
[PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
...p+0x60/0x100 [ 138.582875] ? mark_held_locks+0x24/0x90 [ 138.586837] ? exit_to_usermode_loop+0x85/0x100 [ 138.591400] ? do_syscall_64+0x20b/0x290 [ 138.595360] ? entry_SYSCALL_64_after_hwframe+0x49/0xbe ./test_hmm.sh: line 58: 6211 Alarm clock ./hmm-tests >> +static int dmirror_fault(struct dmirror *dmirror, unsigned long start, >> + unsigned long end, bool write) >> +{ >> + struct mm_struct *mm = dmirror->mm; >> + unsigned long addr; >> + uint64_t pfns[64]; >> + struct hmm_range range = { >> + .notifier = &dmirror->notifi...
2019 Sep 11
6
[PATCH 0/4] HMM tests and minor fixes
These changes are based on Jason's latest hmm branch. Patch 1 was previously posted here [1] but was dropped from the orginal series. Hopefully, the tests will reduce concerns about edge conditions. I'm sure more tests could be usefully added but I thought this was a good starting point. [1] https://lore.kernel.org/linux-mm/20190726005650.2566-6-rcampbell at nvidia.com/ Ralph Campbell
2020 Jan 13
9
[PATCH v6 0/6] mm/hmm/test: add self tests for HMM
This series adds new functions to the mmu interval notifier API to allow device drivers with MMUs to dynamically mirror a process' page tables based on device faults and invalidation callbacks. The Nouveau driver is updated to use the extended API and a set of stand alone self tests is added to help validate and maintain correctness. The patches are based on linux-5.5.0-rc6 and are for
2020 Apr 22
11
[PATCH hmm 0/5] Adjust hmm_range_fault() API
...;mmap_sem); - count = hmm_range_fault(range); + ret = hmm_range_fault(range); up_read(&mm->mmap_sem); - if (count <= 0) { - if (count == 0 || count == -EBUSY) + if (ret) { + if (ret == -EBUSY) continue; - ret = count; goto out; } @@ -299,16 +282,13 @@ static int dmirror_fault(struct dmirror *dmirror, unsigned long start, { struct mm_struct *mm = dmirror->notifier.mm; unsigned long addr; - uint64_t pfns[64]; + unsigned long pfns[64]; struct hmm_range range = { .notifier = &dmirror->notifier, - .pfns = pfns, - .flags = dmirror_hmm_flags, - .values =...