On Wed 07-06-17 13:56:01, David Rientjes wrote: > On Wed, 7 Jun 2017, Vlastimil Babka wrote: > > > >> Hmm I'd expect such spin lock to be reported together with mmap_sem in > > >> the debugging "locks held" message? > > > > > > My bisection of the problem is about half done. My latest good version is > > > commit > > > 7b8cd33 and the latest bad one is 2ea659a. Only about 7 steps to go. > > > > Hmm, your bisection will most likely just find commit 338a16ba15495 > > which added the cond_resched() at mm/khugepaged.c:655. CCing David who > > added it. > > > > I agree it's probably going to bisect to 338a16ba15495 since it's the > cond_resched() at the line number reported, but I think there must be > something else going on. I think the list of locks held by khugepaged is > correct because it matches with the implementation. The preempt_count(), > as suggested by Andrew, does not. If this is reproducible, I'd like to > know what preempt_count() is.
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. -- Michal Hocko SUSE Labs