On Dec 19, 2016 2:58 PM, "Dave Hansen" <dave.hansen@xxxxxxxxxxxxxxx> 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