commit:     a4d33e643f3aa8cb5cf8b0555328e846e4f6f9de
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 18 21:23:13 2018 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jan 18 21:25:17 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a4d33e64

sys-libs/libomp: List broken PDS scheduler versions

The sched_yield() call has been reintroduced in PDS 0.98i. Improve
the kernel check to explicitly list which PDS versions are affected,
and which -pf kernels are affected (sadly, no fixed version yet).
Big thanks to Holger Hoffstätte for convincing upstream to fix this
and all the research!

Bug: https://bugs.gentoo.org/638410

 sys-libs/libomp/libomp-4.0.1.ebuild    | 5 ++++-
 sys-libs/libomp/libomp-5.0.1.ebuild    | 5 ++++-
 sys-libs/libomp/libomp-6.0.9999.ebuild | 5 ++++-
 sys-libs/libomp/libomp-9999.ebuild     | 5 ++++-
 4 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/sys-libs/libomp/libomp-4.0.1.ebuild 
b/sys-libs/libomp/libomp-4.0.1.ebuild
index 299e49921e1..920d364c8a8 100644
--- a/sys-libs/libomp/libomp-4.0.1.ebuild
+++ b/sys-libs/libomp/libomp-4.0.1.ebuild
@@ -43,7 +43,10 @@ S=${WORKDIR}/openmp-${PV/_/}.src
 CMAKE_BUILD_TYPE=RelWithDebInfo
 
 CONFIG_CHECK="~!SCHED_PDS"
-ERROR_SCHED_PDS="PDS scheduler is not supported as it does not implement 
sched_yield()"
+ERROR_SCHED_PDS="PDS scheduler versions >= 0.98c < 0.98i (e.g. used in kernels
+>= 4.13-pf11, no fixed release yet) do not implement sched_yield() call which
+may result in horrible performance problems with libomp. If you are using one
+of the specified kernel versions, you may want to disable the PDS scheduler."
 
 python_check_deps() {
        has_version "dev-python/lit[${PYTHON_USEDEP}]"

diff --git a/sys-libs/libomp/libomp-5.0.1.ebuild 
b/sys-libs/libomp/libomp-5.0.1.ebuild
index e53670dab6d..9075688c9e4 100644
--- a/sys-libs/libomp/libomp-5.0.1.ebuild
+++ b/sys-libs/libomp/libomp-5.0.1.ebuild
@@ -43,7 +43,10 @@ S=${WORKDIR}/openmp-${PV/_/}.src
 CMAKE_BUILD_TYPE=RelWithDebInfo
 
 CONFIG_CHECK="~!SCHED_PDS"
-ERROR_SCHED_PDS="PDS scheduler is not supported as it does not implement 
sched_yield()"
+ERROR_SCHED_PDS="PDS scheduler versions >= 0.98c < 0.98i (e.g. used in kernels
+>= 4.13-pf11, no fixed release yet) do not implement sched_yield() call which
+may result in horrible performance problems with libomp. If you are using one
+of the specified kernel versions, you may want to disable the PDS scheduler."
 
 python_check_deps() {
        has_version "dev-python/lit[${PYTHON_USEDEP}]"

diff --git a/sys-libs/libomp/libomp-6.0.9999.ebuild 
b/sys-libs/libomp/libomp-6.0.9999.ebuild
index 461064323a1..5e156aca296 100644
--- a/sys-libs/libomp/libomp-6.0.9999.ebuild
+++ b/sys-libs/libomp/libomp-6.0.9999.ebuild
@@ -44,7 +44,10 @@ DEPEND="${RDEPEND}
 CMAKE_BUILD_TYPE=RelWithDebInfo
 
 CONFIG_CHECK="~!SCHED_PDS"
-ERROR_SCHED_PDS="PDS scheduler is not supported as it does not implement 
sched_yield()"
+ERROR_SCHED_PDS="PDS scheduler versions >= 0.98c < 0.98i (e.g. used in kernels
+>= 4.13-pf11, no fixed release yet) do not implement sched_yield() call which
+may result in horrible performance problems with libomp. If you are using one
+of the specified kernel versions, you may want to disable the PDS scheduler."
 
 python_check_deps() {
        has_version "dev-python/lit[${PYTHON_USEDEP}]"

diff --git a/sys-libs/libomp/libomp-9999.ebuild 
b/sys-libs/libomp/libomp-9999.ebuild
index 630a7bf4f05..ad6d62ae744 100644
--- a/sys-libs/libomp/libomp-9999.ebuild
+++ b/sys-libs/libomp/libomp-9999.ebuild
@@ -43,7 +43,10 @@ DEPEND="${RDEPEND}
 CMAKE_BUILD_TYPE=RelWithDebInfo
 
 CONFIG_CHECK="~!SCHED_PDS"
-ERROR_SCHED_PDS="PDS scheduler is not supported as it does not implement 
sched_yield()"
+ERROR_SCHED_PDS="PDS scheduler versions >= 0.98c < 0.98i (e.g. used in kernels
+>= 4.13-pf11, no fixed release yet) do not implement sched_yield() call which
+may result in horrible performance problems with libomp. If you are using one
+of the specified kernel versions, you may want to disable the PDS scheduler."
 
 python_check_deps() {
        has_version "dev-python/lit[${PYTHON_USEDEP}]"

Reply via email to