Merged,
after doxygen drv clean up patches warnings went away. Thanks!
Maxim.
On 09/02/16 18:27, Bill Fischofer wrote:
I think Christophe is the only one affected by this patch, so I agree
that waiting for him to issue a v4 makes sense. I'm sure it's a simple
update, but best to continue the habit that things are always clean at
merge.
On Fri, Sep 2, 2016 at 7:50 AM, Maxim Uvarov <maxim.uva...@linaro.org
<mailto:maxim.uva...@linaro.org>> wrote:
patch set introduce new doxygen warnings (some of warning already
exist, looks like I missed them on previous merge):
/opt/Linaro/odp3.git/include/odp/drv/spec/shm.h:27: warning:
documented symbol `odpdrv_shm_t' was not declared or defined.
/opt/Linaro/odp3.git/platform/linux-generic/include/odp/drv/plat/atomic_types.h:127:
warning: Member ODPDRV_ALIGNED(sizeof(uint64_t)) (function) of
file drv/plat/atomic_types.h is not documented.
/opt/Linaro/odp3.git/platform/linux-generic/include/odp/drv/plat/atomic_types.h:127:
warning: Member ODPDRV_ALIGNED(sizeof(uint32_t)) (function) of
file drv/plat/atomic_types.h is not documented.
/opt/Linaro/odp3.git/platform/linux-generic/include/odp/drv/plat/barrier_types.h:30:
warning: Member ODPDRV_ALIGNED (variable) of file
drv/plat/barrier_types.h is not documented.
/opt/Linaro/odp3.git/platform/linux-generic/include/odp/drv/plat/shm_types.h:28:
warning: Member ODPDRV_HANDLE_T(odpdrv_shm_t) (function) of group
odpdrv_shm is not documented.
/opt/Linaro/odp3.git/platform/linux-generic/include/odp/drv/plat/shm_types.h:28:
warning: Member ODPDRV_HANDLE_T(odpdrv_shm_t) (function) of group
odpdrv_shm is not documented.
That is not very critical for api-next bug has to be fixed. So
question is does this patches blocks anyone else work? Or we can
wait for Christophe return and merge v4?
Maxim.
On 08/31/16 05:17, Bill Fischofer wrote:
For this series:
Reviewed-and-tested-by: Bill Fischofer
<bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>>
On Sat, Aug 20, 2016 at 2:45 AM, Christophe Milard <
christophe.mil...@linaro.org
<mailto:christophe.mil...@linaro.org>> wrote:
Since v2: Fixed failure when running as root when no huge
page are
available but the hugetlbfs is writable
(Failure as mostly visible on 32 bit systems)
(Bill)
Since v1: Fixed error when compiling with clang (Bill)
This patch series introduces a new ODP memory allocator
and then uses it
on the driver interface:
The first 3 patches introduces barriers on the driver
interface.
This is based on its equivalent from the API side.
Then comes the definition of the shmen programing
functions for the DRV
interface: This should look very familiar, as it is based
on its API side
as
well, with extension to perform lookup and free directely
by name or by
address, as most drivers will probably want that.
In that sence, the well known API shmem interface will
look like a subset
of the DRV shmem interface.
Then comes the file descriptor server: its goal is to
enable sharing of
file desriptors between linux processes, regardless of
fork time.
This will be needed by the memory allocator (following
patches), but will
likely also be needed when file-descriptor based pktios
will be written as
"process mode runnable". It is therefore written as a
standalone service
where clients can register file descriptors and others
clients can query
for
those. The servers holds a table {context, key} ->fd.
The ODP memory allocator will register its files
descriptors using the
memory block index as key and "ISHM" as context. The
context is meant to
enable
the usage of the server from different users, without key
clash: if pktio
uses its pktio index as key, it won't clash with ISHM keys
as the context
(ISHM vs PKTIO) will be different.
Then comes the internal memory allocator itself: Though
its interface is
a superset of the current shared memory API, its internal
differs largely:
The new internal memory allocator (ishm) is not using
ANONYMOUS mapping
but file descriptor based mapping instead: this is to
enable its usage
from different processes, regardless of fork time.
Also, this memory allocator supports a flag, called
SINGLE_VA: when
allocated
with this flag, memory is guaranted to be mapped at the
same virtual
address
in all ODP threads (i.e linux threads or processes,
regardless of fork
time).
This is done by prealocating plenty of virtual address
space (not memory
-just address space) at global init time and mapping the
SINGLE_VA'd
blocks
there (using MAP_FIXED) on demand.
Ishm maintains the virtual space memory map.
Blocks allocated without this flag are mapped using the
normal linux
strategy,
and will likely end-up at different virtual addresses in
different linux
processes (when allocated after fork)
IMPORTANT NOTE: ishm supports huge pages BUT because the
mapping is no
longer
anonymous, the hugetlbfs mount point must be writable by
the ODP process:
Either run as root or fix the permissions!
ishm will fall back to normal pages if it fails
allocationg huge pages- as
before.
Then comes a patch adding a debug funtion to ishm: as it
was fully
separable
it became its own patch...
Then commes the linux implementation of the driver shm
interface. This,
of course, use ishm. It is just a wrapper around it.
If this ishm way of allocating memory is "approved", such
a wrapper should
be
written for the API side as well (replacing the current
shared_memory.c)
so that the API interface , the driver interface and ODP
internals make
use of a unique memory allocator: ishm.
At least comes the definition a a series of tests to test
the driver
interface shared memory. These tests are runnable in
thread or process mode
(using the usual --odph_proc flag)
Thanks for reading so far... and happy review!
Christophe
*** BLURB HERE ***
Christophe Milard (13):
linux-gen: cosmetic changes on barrier
drv: adding barrier.h
linux-gen: drv: adding barrier
linux-generic: drv: strong typing
drv: adding shared memory
linux-gen: fdserver: new fdserver added
linux-generic: system_info: adding huge page dir
linux-gen: ishm: internal shared memory allocator
(ishm) added
linux-gen: ishm: adding debug function
linux-gen: drv: shm
test: validation: drv: shmem: basic tests
test: validation: drv: shmem: testing SINGLE_VA flag
test: validation: drv: shmem: stress tests
include/odp/api/spec/barrier.h | 2 -
include/odp/drv/spec/barrier.h | 66 +
include/odp/drv/spec/shm.h | 231 ++++
include/odp_drv.h | 2 +
platform/Makefile.inc | 2 +
platform/linux-generic/Makefile.am <http://e.am>
| 15 +-
platform/linux-generic/_fdserver.c | 655 +++++++++
platform/linux-generic/_ishm.c | 1460
++++++++++++++++++++
platform/linux-generic/_ishmphy.c | 185 +++
platform/linux-generic/arch/arm/odp/api/cpu_arch.h | 25 +-
platform/linux-generic/arch/arm/odp_cpu_arch.c | 49 +-
.../linux-generic/arch/arm/odp_sysinfo_parse.c | 28 +-
platform/linux-generic/arch/powerpc/odp_cpu_arch.c | 49 +-
platform/linux-generic/drv_barrier.c | 50 +
platform/linux-generic/drv_shm.c | 102 ++
.../linux-generic/include/_fdserver_internal.h | 39 +
platform/linux-generic/include/_ishm_internal.h | 46 +
platform/linux-generic/include/_ishmphy_internal.h | 25 +
platform/linux-generic/include/ishmphy_internal.h | 24 +
.../include/odp/api/plat/barrier_types.h | 1 -
platform/linux-generic/include/odp/drv/barrier.h | 30 +
.../include/odp/drv/plat/barrier_types.h | 38 +
.../linux-generic/include/odp/drv/plat/shm_types.h | 46 +
.../include/odp/drv/plat/strong_types.h | 35 +
platform/linux-generic/include/odp/drv/shm.h | 36 +
.../linux-generic/include/odp_config_internal.h | 16 +
platform/linux-generic/include/odp_internal.h | 17 +-
platform/linux-generic/odp_barrier.c | 2 +-
platform/linux-generic/odp_init.c | 39 +
platform/linux-generic/odp_system_info.c | 181 ++-
test/common_plat/m4/configure.m4 | 3 +-
test/common_plat/validation/drv/Makefile.am | 3 +-
.../common_plat/validation/drv/drvshmem/.gitignore | 1 +
.../validation/drv/drvshmem/Makefile.am
<http://kefile.am> | 10 +
.../common_plat/validation/drv/drvshmem/drvshmem.c |
794 +++++++++++
.../common_plat/validation/drv/drvshmem/drvshmem.h | 27 +
.../validation/drv/drvshmem/drvshmem_main.c | 12 +
test/linux-generic/Makefile.am | 1 +
38 files changed, 4332 insertions(+), 15 deletions(-)
create mode 100644 include/odp/drv/spec/barrier.h
create mode 100644 include/odp/drv/spec/shm.h
create mode 100644 platform/linux-generic/_fdserver.c
create mode 100644 platform/linux-generic/_ishm.c
create mode 100644 platform/linux-generic/_ishmphy.c
mode change 120000 => 100644 platform/linux-generic/arch/
arm/odp/api/cpu_arch.h
mode change 120000 => 100644 platform/linux-generic/arch/
arm/odp_cpu_arch.c
mode change 120000 => 100644 platform/linux-generic/arch/
arm/odp_sysinfo_parse.c
mode change 120000 => 100644 platform/linux-generic/arch/
powerpc/odp_cpu_arch.c
create mode 100644 platform/linux-generic/drv_barrier.c
create mode 100644 platform/linux-generic/drv_shm.c
create mode 100644
platform/linux-generic/include/_fdserver_internal.h
create mode 100644
platform/linux-generic/include/_ishm_internal.h
create mode 100644
platform/linux-generic/include/_ishmphy_internal.h
create mode 100644
platform/linux-generic/include/ishmphy_internal.h
create mode 100644
platform/linux-generic/include/odp/drv/barrier.h
create mode 100644
platform/linux-generic/include/odp/drv/plat/barrier_
types.h
create mode 100644
platform/linux-generic/include/odp/drv/plat/shm_
types.h
create mode 100644
platform/linux-generic/include/odp/drv/plat/strong_
types.h
create mode 100644
platform/linux-generic/include/odp/drv/shm.h
create mode 100644
test/common_plat/validation/drv/drvshmem/.gitignore
create mode 100644
test/common_plat/validation/drv/drvshmem/Makefile.am
create mode 100644
test/common_plat/validation/drv/drvshmem/drvshmem.c
create mode 100644
test/common_plat/validation/drv/drvshmem/drvshmem.h
create mode 100644 test/common_plat/validation/
drv/drvshmem/drvshmem_main.c
--
2.7.4