On Tue, Feb 7, 2017 at 12:44 AM, Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> wrote: > On Mon, Feb 06, 2017 at 09:30:22AM -0800, Dan Williams wrote: >> On Mon, Feb 6, 2017 at 9:27 AM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: >> > On Mon, Feb 06, 2017 at 08:24:48AM -0800, Dan Williams wrote: >> >> > Also can be use this opportunity >> >> > to fold ->huge_fault into ->fault? > > BTW, for tmpfs we already use ->fault for both small and huge pages. > If ->fault returned THP, core mm look if it's possible to map the page as > huge in this particular VMA (due to size/alignment). If yes mm maps the > page with PMD, if not fallback to PTE. > > I think it would be nice to do the same for DAX: filesystem provides core > mm with largest page this part of file can be mapped with (base aligned > address + lenght for DAX) and core mm sort out the rest. For DAX we would need plumb pfn_t into the core mm so that we have the PFN_DEV and PFN_MAP flags beyond the raw pfn. > >> >> Hmm, yes, just need a scheme to not attempt huge_faults on pte-only handlers. >> > >> > Do we need anything more than checking vma->vm_flags for VM_HUGETLB? >> >> s/VM_HUGETLB/VM_HUGEPAGE/ >> >> ...but yes as long as we specify that a VM_HUGEPAGE handler must >> minimally handle pud and pmd. > > VM_HUGEPAGE is result of MADV_HUGEPAGE. It's not required to have THP in > the VMA. Filesystem-DAX and Device-DAX specify VM_HUGEPAGE by default.