Re: tlb_batch_add_one()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/30/17 1:22 PM, David Miller wrote:
> From: David Miller <davem@xxxxxxxxxxxxx>
> Date: Tue, 28 Mar 2017 17:52:26 -0700 (PDT)
> 
>>
>> There seems to be some disagreement about how the hugepage state is
>> passed into tlb_batch_add().  It's declared as an integer shift, but
>> there are call sites that pass it in the old way, as a boolean.
>>
>> For example, all of the call sites in tlb_batch_pmd_scan(), which
>> likely should be passing PAGE_SHIFT.  Passing true or false in these
>> spots can't be right.
> 
> And this appears to be causing regressions, gcc bootstraps fail with
> all kinds of memory corruption, including in the libc malloc arena.
> 
> I did a full git bisect and it showed the multipage size support
> commit as the culprit.


The wrong calls to tlb_batch_add_one(), which are passing boolean to
hugepage_shift argument, are all under CONFIG_TRANSPARENT_HUGEPAGE.
So are you getting these corruptions only when THP is enabled?
I will be sending a fix for these call-sites today.

There's another issue I found with 64K page size support during
hugetlb_free_pgd_range(). The fix is current undergoing more testing.
This bug affects 64K page size only.

I'm still trying to understand how __tlb_remove_page_size() can be used
instead of special page size change handling in tlb_batch_add_one().


Thanks,
Nitin


--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux