Re: Sleeping BUG in khugepaged for i586

From: David Rientjes
Date: Wed Jun 14 2017 - 21:12:24 EST


On Thu, 8 Jun 2017, Michal Hocko wrote:

> collapse_huge_page
> pte_offset_map
> kmap_atomic
> kmap_atomic_prot
> preempt_disable
> __collapse_huge_page_copy
> pte_unmap
> kunmap_atomic
> __kunmap_atomic
> preempt_enable
>
> I suspect, so cond_resched seems indeed inappropriate on 32b systems.
>

Seems to be an issue for i386 and arm with ARM_LPAE. I'm slightly
surprised we can get away with __collapse_huge_page_swapin() for
VM_FAULT_RETRY, unless that hasn't been encountered yet. I think the
cond_resched() in __collapse_huge_page_copy() could be done only for
!in_atomic() if we choose.