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 =...