On 09/13/2018 11:46 AM, Peter Zijlstra wrote: > On Thu, Sep 13, 2018 at 08:42:30PM +0200, Peter Zijlstra wrote: >>>> +#define flush_tlb_range(vma, start, end) \ >>>> + flush_tlb_mm_range((vma)->vm_mm, start, end, \ >>>> + (vma)->vm_flags & VM_HUGETLB ? PMD_SHIFT : >>>> PAGE_SHIFT) >>> This is safe. But, Couldn't this PMD_SHIFT also be PUD_SHIFT for a 1G >>> hugetlb page? >> It could be, but can we tell at that point? > I had me a look in higetlb.h, would something like so work? > > #define flush_tlb_range(vma, start, end) \ > flush_tlb_mm_range((vma)->vm_mm, start, end, \ > huge_page_shift(hstate_vma(vma))) >
I think you still need the VM_HUGETLB check somewhere because hstate_vma() won't work on non-VM_HUGETLB VMAs. But, yeah, something close to that should be OK.