[Bug 222242] [patch] allow masks smaller than cpuset_t, if large enough for mp_maxid
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 24 Feb 2023 21:22:21 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=222242
--- Comment #1 from Ed Maste <emaste@freebsd.org> ---
Believe addressed by f35093f8d6d8155ab2e56c11ee03d474688b16a2 and subsequent
commits
commit f35093f8d6d8155ab2e56c11ee03d474688b16a2
Author: Dmitry Chagin <dchagin@FreeBSD.org>
Date: Wed May 11 10:36:01 2022 +0300
Use Linux semantics for the thread affinity syscalls.
Linux has more tolerant checks of the user supplied cpuset_t's.
Minimum cpuset_t size that the Linux kernel permits in case of
getaffinity() is the maximum CPU id, present in the system / NBBY,
the maximum size is not limited.
For setaffinity(), Linux does not limit the size of the user-provided
cpuset_t, internally using only the meaningful part of the set, where
the upper bound is the maximum CPU id, present in the system, no larger
than the size of the kernel cpuset_t.
Unlike FreeBSD, Linux ignores high bits if set in the setaffinity(),
so clear it in the sched_setaffinity() and Linuxulator itself.
Reviewed by: Pau Amma (man pages)
In collaboration with: jhb
Differential revision: https://reviews.freebsd.org/D34849
MFC after: 2 weeks
commit 01f74ccd5a0d1a444703e931339709c7de5296b5
Author: Dmitry Chagin <dchagin@FreeBSD.org>
AuthorDate: 2023-01-29 12:35:18 +0000
Commit: Dmitry Chagin <dchagin@FreeBSD.org>
CommitDate: 2023-01-29 12:35:18 +0000
libthr: Fix pthread_attr_[g|s]etaffinity_np to match it's manual and the
kernel.
Since f35093f8 semantics of a thread affinity functions is changed to be a
compatible with Linux:
In case of getaffinity(), the minimum cpuset_t size that the kernel permits
is
the maximum CPU id, present in the system, / NBBY bytes, the maximum size
is not
limited.
In case of setaffinity(), the kernel does not limit the size of the
user-provided
cpuset_t, internally using only the meaningful part of the set, where the
upper
bound is the maximum CPU id, present in the system, no larger than the size
of
the kernel cpuset_t.
To match pthread_attr_[g|s]etaffinity_np checks of the user-provided
cpusets to
the kernel behavior export the minimum cpuset_t size allowed by running
kernel
via new sysctl kern.sched.cpusetsizemin and use it in checks.
Reviewed by:
Differential Revision: https://reviews.freebsd.org/D38112
MFC after: 1 week
--
You are receiving this mail because:
You are the assignee for the bug.