On Dec 19, 2016 2:58 PM, "Dave Hansen" wrote: This boots in a small VM and on a multi-node NUMA system, but has not been tested widely. No, this is wrong. +wait_queue_head_t *bit_waitqueue(void *word, int bit) +{ + const int __maybe_unused nid = page_to_nid(virt_to_page(word)); + + return __bit_waitqueue(word, bit, nid); No can do. Part of the problem with the old coffee was that it did that virt_to_page() crud. That doesn't work with the virtually mapped stack. So bit_waitqueue() must not do the page lookup. Only [un]lock_page() that already has a page can do the NID thing. OK? Linus