Re: [PATCH 2/2] Futex non-page-pinning fix

From: Andrew Morton
Date: Tue Aug 26 2003 - 02:00:43 EST


Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>
> > What about the option of not pinning the pages at all: just fault
> > them in when required?
>
> precisely what scheme do you mean by this? There are two important points:
> when a thread sleeps on a futex, and when some thread does a wakeup on a
> futex address. We cannot hash the futex based on the virtual address
> (arbitrary share-ability of futex pages is another key appeal of them),
> and if by the time the wakeup happens the physical page goes away how do
> we find which threads are queued on this address?

I was suggesting that we hash the futex on mm+vaddr. Yes, differing vaddrs
break that.

umm, how about hashing only on offset into page? That reduces the number of
threads which need to be visited in futex_wake() by a factor of up to 1024.

In futext_wake(), fault in and pin the page, then for each thread which is
waiting on a futex which has the same offset into a page, do a
get_user_pages+follow_page, see if he's waiting on the just-faulted-in
page?


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/