Balbir Singh <bsinghar...@gmail.com> writes:

...........
............

>> diff --git a/arch/powerpc/mm/hugepage-hash64.c 
>> b/arch/powerpc/mm/hugepage-hash64.c
>> index 49b152b0f926..8424f46c2bf7 100644
>> --- a/arch/powerpc/mm/hugepage-hash64.c
>> +++ b/arch/powerpc/mm/hugepage-hash64.c
>> @@ -78,9 +78,14 @@ int __hash_page_thp(unsigned long ea, unsigned long 
>> access, unsigned long vsid,
>>               * base page size. This is because demote_segment won't flush
>>               * hash page table entries.
>>               */
>> -            if ((old_pmd & _PAGE_HASHPTE) && !(old_pmd & _PAGE_COMBO))
>> +            if ((old_pmd & _PAGE_HASHPTE) && !(old_pmd & _PAGE_COMBO)) {
>>                      flush_hash_hugepage(vsid, ea, pmdp, MMU_PAGE_64K,
>>                                          ssize, flags);
>> +                    /*
>> +                     * clear the old slot information 
>> +                     */
> Redundant comment, something more useful? why clear it?
>> +                    memset(hpte_slot_array, 0, PTE_FRAG_SIZE);
>> +            }
>>      }
>>  

explained in the commit message. 


 With THP, we also clear the slot information with respect to all
 the 64K hash pte mapping that 16MB page. They are all invalid
 now. This make sure we don't find the slot valid when we fault with
 4k base page size. Finding the slot valid should not result in any wrong
 behavior because we do check again in hash page table for the validity.
 But we can avoid that check completely.



>>      valid = hpte_valid(hpte_slot_array, index);

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to