diff options
| author | Dan Williams <dan.j.williams@intel.com> | 2019-03-11 15:37:55 -0400 |
|---|---|---|
| committer | Dan Williams <dan.j.williams@intel.com> | 2019-03-11 15:37:55 -0400 |
| commit | 4083014e32699af04a8e6eaa4855b08dba36a47a (patch) | |
| tree | fa37f9f9691fe64ca8a3c0cdc0315dc12462e6e4 /arch/powerpc/mm/pgtable-book3s64.c | |
| parent | 6fd96ff557963de8e62842a0dc360a6e3610d2bb (diff) | |
| parent | 78153dd45e7e0596ba32b15d02bda08e1513111e (diff) | |
Merge branch 'for-5.1/nfit/ars' into libnvdimm-for-next
Merge several updates to the ARS implementation. Highlights include:
* Support retrieval of short-ARS results if the ARS state is "requires
continuation", and even if the "no_init_ars" module parameter is
specified.
* Allow busy-polling of the kernel ARS state by allowing root to reset
the exponential back-off timer.
* Filter potentially stale ARS results by tracking query-ARS relative to
the previous start-ARS.
Diffstat (limited to 'arch/powerpc/mm/pgtable-book3s64.c')
| -rw-r--r-- | arch/powerpc/mm/pgtable-book3s64.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/powerpc/mm/pgtable-book3s64.c b/arch/powerpc/mm/pgtable-book3s64.c index f3c31f5e1026..ecd31569a120 100644 --- a/arch/powerpc/mm/pgtable-book3s64.c +++ b/arch/powerpc/mm/pgtable-book3s64.c | |||
| @@ -400,3 +400,25 @@ void arch_report_meminfo(struct seq_file *m) | |||
| 400 | atomic_long_read(&direct_pages_count[MMU_PAGE_1G]) << 20); | 400 | atomic_long_read(&direct_pages_count[MMU_PAGE_1G]) << 20); |
| 401 | } | 401 | } |
| 402 | #endif /* CONFIG_PROC_FS */ | 402 | #endif /* CONFIG_PROC_FS */ |
| 403 | |||
| 404 | /* | ||
| 405 | * For hash translation mode, we use the deposited table to store hash slot | ||
| 406 | * information and they are stored at PTRS_PER_PMD offset from related pmd | ||
| 407 | * location. Hence a pmd move requires deposit and withdraw. | ||
| 408 | * | ||
| 409 | * For radix translation with split pmd ptl, we store the deposited table in the | ||
| 410 | * pmd page. Hence if we have different pmd page we need to withdraw during pmd | ||
| 411 | * move. | ||
| 412 | * | ||
| 413 | * With hash we use deposited table always irrespective of anon or not. | ||
| 414 | * With radix we use deposited table only for anonymous mapping. | ||
| 415 | */ | ||
| 416 | int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl, | ||
| 417 | struct spinlock *old_pmd_ptl, | ||
| 418 | struct vm_area_struct *vma) | ||
| 419 | { | ||
| 420 | if (radix_enabled()) | ||
| 421 | return (new_pmd_ptl != old_pmd_ptl) && vma_is_anonymous(vma); | ||
| 422 | |||
| 423 | return true; | ||
| 424 | } | ||
