Messages in this thread Patch in this message | | | From | Thomas Gleixner <> | Subject | Re: [PATCH] threads: Update PID limit comment according to futex UAPI change | Date | Thu, 11 May 2023 14:47:08 +0200 |
| |
Reviving this old thread.
On Tue, Mar 03 2020 at 15:12, Thomas Gleixner wrote: > Peter Zijlstra <peterz@infradead.org> writes: >> On Mon, Mar 02, 2020 at 12:29:39PM +0100, Jann Horn wrote: >>> /* >>> * A maximum of 4 million PIDs should be enough for a while. >>> - * [NOTE: PID/TIDs are limited to 2^29 ~= 500+ million, see futex.h.] >>> + * [NOTE: PID/TIDs are limited to 2^30 ~= 1 billion, see FUTEX_TID_MASK.] >>> */ >>> #define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \ >>> (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT)) >> >> I just noticed another mention of this in Documentation/robust-futex-ABI.txt >> There it states that bit-29 is reserved for future use. >> >> Thomas, do we want to release that bit and update all this? > > In fact we've released it long ago: > > include/uapi/linux/futex.h: > > #define FUTEX_TID_MASK 0x3fffffff
That futex mask is irrelevant because there is another limitiation for the PID space namely posix CPU timers:
static inline clockid_t make_process_cpuclock(const unsigned int pid, const clockid_t clock) { return ((~pid) << 3) | clock; }
That existed even before we fiddled with robust futexes and puts a hard limit of 29 bits on the PID space.
So we want something like the below.
Thanks,
tglx --- --- a/include/linux/threads.h +++ b/include/linux/threads.h @@ -29,7 +29,9 @@ /* * A maximum of 4 million PIDs should be enough for a while. - * [NOTE: PID/TIDs are limited to 2^30 ~= 1 billion, see FUTEX_TID_MASK.] + * + * PID/TIDs are limited to 2^29 due to POSIX CPU timers. See + * make_process_cpuclock(). */ #define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \ (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))
| |