From: Andrea Arcangeli <aarcange@redhat.com>
To: CAI Qian <caiqian@redhat.com>
Cc: linux-mm@kvack.org
Subject: pgd_lock must be taken with irqs enabled
Date: Fri, 28 Jan 2011 17:50:50 +0100 [thread overview]
Message-ID: <20110128165050.GI16981@random.random> (raw)
In-Reply-To: <77942321.201910.1296197041743.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
On Fri, Jan 28, 2011 at 01:44:01AM -0500, CAI Qian wrote:
> > > INFO: task pgrep:6039 blocked for more than 120 seconds.
> > > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
> > > message.
> > > pgrep D ffff887f606f1ab0 0 6039 6038 0x00000080
> > > ffff8821e39c1ce0 0000000000000082 0000000000000246 0000000000000000
> > > 0000000000014d40 ffff887f606f1520 ffff887f606f1ab0 ffff8821e39c1fd8
> > > ffff887f606f1ab8 0000000000014d40 ffff8821e39c0010 0000000000014d40
> > > Call Trace:
> > > [<ffffffff814afeb5>] rwsem_down_failed_common+0xb5/0x140
> > > [<ffffffff814aff75>] rwsem_down_read_failed+0x15/0x17
> > > [<ffffffff81230174>] call_rwsem_down_read_failed+0x14/0x30
> > > [<ffffffff814af504>] ? down_read+0x24/0x30
> > > [<ffffffff8111f4dc>] access_process_vm+0x4c/0x200
> > > [<ffffffff8113f3fe>] ? fallback_alloc+0x14e/0x270
> > > [<ffffffff811afa4d>] proc_pid_cmdline+0x6d/0x120
> > > [<ffffffff81137eba>] ? alloc_pages_current+0x9a/0x100
> > > [<ffffffff811b037d>] proc_info_read+0xad/0xf0
> > > [<ffffffff81154315>] vfs_read+0xc5/0x190
> > > [<ffffffff811544e1>] sys_read+0x51/0x90
> > > [<ffffffff8100bf82>] system_call_fastpath+0x16/0x1b
> >
> > pgrep hung too, it's not just khugepaged hanging and it's not obvious
> > for now that khugepaged was guilty of forgetting an unlock, could be
> > the process deadlocked somewhere with the mmap_sem hold. Can you press
> > SYSRQ+T? Hopefully that will show the holder. Also is CONFIG_NUMA=y/n?
> Unfortunately, SYSRQ+T was not working. CONFIG_NUMA=y and this is an
> NUMA system as well.
I reviewed it again but it's unlikely the holder of the mmap_sem was
khugepaged. Something hung on the mmap_sem and pgrep and khugepaged
got blocked on it.
I'm however aware of a deadlock in pgd_lock, no idea if it's what
you're hitting but it worth fixing that one now!
x86 takes the pgd_lock by clearing irqs, and then it takes the
page_table_lock with irqs already off. It's always forbidden to keep
irqs off while taking the page_table_lock, because all IPIs are sent
for the tlb flushes with the page_table_lock held if PT locks are
disabled (NR_CPUS small) or if THP is on. It's not THP bug, it's core
bug in pgd_lock that will trigger with PT locks disabled too without
THP: all those spin_lock_irqsave must become spin_lock. Either that or
the page_table_lock must not be taken with irqs off.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-01-28 16:51 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-25 23:48 mmotm 2011-01-25-15-47 uploaded akpm
2011-01-25 23:48 ` akpm
2011-01-26 8:45 ` CAI Qian
2011-01-26 13:52 ` Andrea Arcangeli
2011-01-28 6:44 ` CAI Qian
2011-01-28 16:50 ` Andrea Arcangeli [this message]
2011-01-26 10:20 ` [patch] epoll-fix-compiler-warning-and-optimize-the-non-blocking-path-fix Johannes Weiner
2011-01-26 10:20 ` Johannes Weiner
2011-01-26 15:05 ` Davide Libenzi
2011-01-26 15:05 ` Davide Libenzi
2011-01-26 19:16 ` [PATCH -mmotm] backlight: apple_bl depends on ACPI Randy Dunlap
2011-01-31 22:31 ` Matthew Garrett
2011-02-03 7:39 ` epoll broken [was: mmotm 2011-01-25-15-47 uploaded] Jiri Slaby
2011-02-03 7:53 ` Eric Dumazet
2011-02-03 9:03 ` Jiri Slaby
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110128165050.GI16981@random.random \
--to=aarcange@redhat.com \
--cc=caiqian@redhat.com \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.