Re: [PATCH] mmu notifiers #v3

Andrea Arcangeli
2008-01-22T14:43:32Z

On Tue, Jan 22, 2008 at 04:12:34PM +0200, Avi Kivity wrote:
> Andrea Arcangeli wrote:
>> diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
>> --- a/include/asm-generic/pgtable.h
>> +++ b/include/asm-generic/pgtable.h
>> @@ -44,8 +44,10 @@
>> ({ \
>> int __young; \
>> __young = ptep_test_and_clear_young(__vma, __address, __ptep); \
>> - if (__young) \
>> + if (__young) { \
>> flush_tlb_page(__vma, __address); \
>> + mmu_notifier(age_page, (__vma)->vm_mm, __address); \
>> + } \
>> __young; \
>> })
>>
>
> I think that unconditionally doing
>
> __young |= mmu_notifier(test_and_clear_young, ...);
>
> allows hardware with accessed bits more control over what is going on.

Agreed, likely it'll have to be mmu_notifier_age_page().