Re: [PATCHv4 08/25] thp: support file pages in zap_huge_pmd()
From: Aneesh Kumar K.V
Date: Mon Mar 21 2016 - 12:42:45 EST
"Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> writes:
> [ text/plain ]
> On Mon, Mar 21, 2016 at 10:03:29AM +0530, Aneesh Kumar K.V wrote:
>> "Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> writes:
>> > [ text/plain ]
>> > On Fri, Mar 18, 2016 at 07:23:41PM +0530, Aneesh Kumar K.V wrote:
>> >> "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> writes:
>> >> > [ text/plain ]
>> >> > split_huge_pmd() for file mappings (and DAX too) is implemented by just
>> >> > clearing pmd entry as we can re-fill this area from page cache on pte
>> >> > level later.
>> >> >
>> >> > This means we don't need deposit page tables when file THP is mapped.
>> >> > Therefore we shouldn't try to withdraw a page table on zap_huge_pmd()
>> >> > file THP PMD.
>> >> Archs like ppc64 use deposited page table to track the hardware page
>> >> table slot information. We probably may want to add hooks which arch can
>> >> use to achieve the same even with file THP
>> > Could you describe more on what kind of information you're talking about?
>> Hardware page table in ppc64 requires us to map each subpage of the huge
>> page. This is needed because at low level we use segment base page size
>> to find the hash slot and on TLB miss, we use the faulting address and
>> base page size (which is 64k even with THP) to find whether we have
>> the page mapped in hash page table. Since we use base page size of 64K,
>> we need to make sure that subpages are mapped (on demand) in hash page
>> table. If we have then mapped we also need to track their hash table
>> slot information so that we can clear it on invalidate of hugepage.
>> With THP we used the deposited page table to store the hash slot
> Could you prepare the patch with these hooks so we can discuss it details?
> I still have hard time wrap my had around this.
> I think you have the same problem with DAX huge pages. Or you don't care
> about DAX?
Yes, DAX hugepage will not be working on ppc64. It is there in the TODO
list to get it working :).