For this series:

Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org>

On Mon, 22 Feb 2016 16:46:37 -0600
"Gary S. Robertson" <gary.robert...@linaro.org> wrote:

> Current versions of ODP linux-generic use sched_getaffinity() and / or
> pthread_getaffinity_np() to obtain counts and sets of CPUs for use by
> ODP tasks.  This method returns inappropriate results when the
> underlying kernel is compiled with NO_HZ_FULL support, as are the
> current LNG kernels. See Linaro BUG 2027 for details.
>       https://bugs.linaro.org/show_bug.cgi?id=2027
> 
> Some of the validation and performance tests were using deprecated methods
> for determining counts of available CPUs.  Fixing the linux-generic
> cpumask creation issues exposed the incorrect test code and caused these
> tests to hang up.  Since these tests are used to validate ODP linux-generic
> code changes, fixing the tests became a prerequisite to submitting patches
> to address BUG 2027... so patch 1 in this series addresses the test
> faults.  These test changes were confirmed to work properly whether the
> bug 2027 fix is in place or not - they do not depend on the bug fix.
> 
> As to the bug fix itself, the 'getaffinity' CPU detection logic is
> replaced by code which mines the /sysfs pseudo-filesystem for info
> about the CPUs detected on the system at boot time.
> 
> In this third revision the bug fix code has been modified to behave thusly:
> 
> Per consensus based on discussions the new CPU detection logic by default
> includes all installed CPUs in both the control and worker cpumasks.
> Default cpumask generation is consistent with non-isolated operations.
> 
> All thread sibling cpumask optimization has been removed and the
> added initialization stage marker for cpumasks has been removed as well.
> 
> Per a suggestion by Petri S. the cpumask generation is moved from the
> odp_cpumask_default_control() and odp_cpumask_default_worker()
> functions into the odp_init_global() function.
> 
> The odp_cpumask_default*() functions now use the cpumasks supplied by
> odp_init_global() without modification - except for returning a mask
> containing only the number of CPUs requested or the number available
> (whichever is fewer) - when asked to provide a default worker cpumask.
> 
> As a bonus the bug fix cpumask generation logic also reduces the
> number of changes required in order to support an anticipated
> ODP API change which would allow ODP to accept and use control and
> worker cpumasks specified by an external entity such as a provisioning
> executive or a command-line argument parser.
> 
> Gary S. Robertson (2):
>   linux-generic: Correct worker count calculation in tests
>   linux-generic: Make cpu detection work with NO_HZ_FULL
> 
>  platform/linux-generic/include/odp_internal.h |  6 ++
>  platform/linux-generic/odp_cpumask_task.c     | 45 +++++++-------
>  platform/linux-generic/odp_init.c             | 90 
> ++++++++++++++++++++++++++-
>  platform/linux-generic/odp_system_info.c      | 14 ++---
>  test/performance/odp_atomic.c                 |  9 ++-
>  test/validation/cpumask/cpumask.c             |  2 +-
>  test/validation/shmem/shmem.c                 |  5 +-
>  test/validation/timer/timer.c                 | 16 ++---
>  8 files changed, 139 insertions(+), 48 deletions(-)
> 
> -- 
> 1.9.1
> 


-- 
Bill Fischofer <bill.fischo...@linaro.org>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to