hmm.c (05fc1df95e5dc09802813bab9c1e718f1e419d93) hmm.c (7d082987e5e562c07a208503a607a733d50553ba)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright 2013 Red Hat Inc.
4 *
5 * Authors: Jérôme Glisse <jglisse@redhat.com>
6 */
7/*
8 * Refer to include/linux/hmm.h for information about heterogeneous memory

--- 388 unchanged lines hidden (view full) ---

397
398 hmm_range_need_fault(hmm_vma_walk, pfns, npages,
399 0, &fault, &write_fault);
400 if (fault || write_fault) {
401 hmm_vma_walk->last = addr;
402 pmd_migration_entry_wait(walk->mm, pmdp);
403 return -EBUSY;
404 }
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright 2013 Red Hat Inc.
4 *
5 * Authors: Jérôme Glisse <jglisse@redhat.com>
6 */
7/*
8 * Refer to include/linux/hmm.h for information about heterogeneous memory

--- 388 unchanged lines hidden (view full) ---

397
398 hmm_range_need_fault(hmm_vma_walk, pfns, npages,
399 0, &fault, &write_fault);
400 if (fault || write_fault) {
401 hmm_vma_walk->last = addr;
402 pmd_migration_entry_wait(walk->mm, pmdp);
403 return -EBUSY;
404 }
405 return 0;
405 return hmm_pfns_fill(start, end, range, HMM_PFN_NONE);
406 } else if (!pmd_present(pmd))
407 return hmm_pfns_fill(start, end, range, HMM_PFN_ERROR);
408
409 if (pmd_devmap(pmd) || pmd_trans_huge(pmd)) {
410 /*
411 * No need to take pmd_lock here, even if some other thread
412 * is splitting the huge pmd we will get that event through
413 * mmu_notifier callback.

--- 290 unchanged lines hidden ---
406 } else if (!pmd_present(pmd))
407 return hmm_pfns_fill(start, end, range, HMM_PFN_ERROR);
408
409 if (pmd_devmap(pmd) || pmd_trans_huge(pmd)) {
410 /*
411 * No need to take pmd_lock here, even if some other thread
412 * is splitting the huge pmd we will get that event through
413 * mmu_notifier callback.

--- 290 unchanged lines hidden ---