add travis ci support for ppc64le
v2 cover add travis ci support for ppc64le
This patch series adds Travis gcc compilation jobs for ppc64le. Limitations for ppc64le are similar to arm64 (see commit 31bb45bcfd).
1. Only gcc builds are supported on ppc64le.
2. A container is used, therefor Huge pages are not available. Unit tests are not run, a single test (test-null) using the no-huge option is run.
V2: Insures iova-mode is VA when --no-huge is selected.
Removed setting of --iova-mode=VA in test-null.sh.
A Travis build with theses patches can be found here:
https://travis-ci.org/djlwilder/dpdk/builds/652238523
David Wilder (3):
eal/linux: select iova-mode va with no-huge option
devtools: allow test-null.sh to run on ppc64le
ci: add travis ci support for native ppc64le
.travis.yml | 30 ++++++++++++++++++++++++++++++ devtools/test-null.sh | 2 +- lib/librte_eal/linux/eal/eal.c | 14 ++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-)
Signature · 1 line
2.25.0
PATCH v2 1/3 eal/linux: select iova-mode va with no-huge option
If --no-huge is set and iova-mode has not been specified force VA mode. If --no-huge and --iova-mode=PA is requested error out as this is an impossible configuration.
--- lib/librte_eal/linux/eal/eal.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
lib/librte_eal/linux/eal/eal.c +14 -0
@@ -1062,9 +1062,16 @@ rte_eal_init(int argc, char **argv)/* if no EAL option "--iova-mode=<pa|va>", use bus IOVA scheme */ if (internal_config.iova_mode ==RTE_IOVA_DC ) { +/* autodetect the IOVA mapping mode */ enum rte_iova_mode iova_mode =rte_bus_get_iommu_class (); +if (iova_mode ==RTE_IOVA_PA && !rte_eal_has_hugepages ()) { + iova_mode =RTE_IOVA_VA ; +RTE_LOG (WARNING ,EAL ,"Some buses want 'PA' but forcing 'VA' because --no-huge is requested.\n" ); +RTE_LOG (WARNING ,EAL ,"Not all buses may be able to initialize.\n" ); + } +if (iova_mode ==RTE_IOVA_DC ) {RTE_LOG (DEBUG ,EAL ,"Buses did not request a specific IOVA mode.\n" );
@@ -1111,6 +1118,13 @@ rte_eal_init(int argc, char **argv) internal_config.iova_mode; } +if (rte_eal_iova_mode () ==RTE_IOVA_PA && +rte_eal_has_hugepages () ==0 ) { +rte_eal_init_alert ("Cannot use IOVA as 'PA' with --no-huge" ); + rte_errno =EINVAL ; +return -1 ; + } +if (rte_eal_iova_mode () ==RTE_IOVA_PA && !phys_addrs) {rte_eal_init_alert ("Cannot use IOVA as 'PA' since physical addresses are not available" ); rte_errno =EINVAL ;
Signature · 1 line
2.25.0
PATCH v2 2/3 devtools: allow test-null.sh to run on ppc64le
In reply to David WilderMemory requirements are larger for ppc64le
due to a higher RTE_MAX_LCORE value.
--- devtools/test-null.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
devtools/test-null.sh +1 -1
@@ -27,6 +27,6 @@ else fi (sleep 1 && echo stop) | -$testpmd -c $coremask --no-huge -m 20 \ +$testpmd -c $coremask --no-huge -m 30 \ $libs -w 0:0.0 --vdev net_null1 --vdev net_null2 $eal_options -- \ --no-mlockall --total-num-mbufs=2048 $testpmd_options -ia
Signature · 1 line
2.25.0
PATCH v2 3/3 ci: add travis ci support for native ppc64le
In reply to David WilderThis change follows the example of aarch64 Travis support by adding support for ppc64le gcc builds. Limitations for ppc64le are the same as aarch64 as described in commit 31bb45bcfd.
--- .travis.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
.travis.yml +30 -0
@@ -153,5 +153,35 @@ matrix: packages: - *extra_packages - *libabigail_build_packages + - env: DEF_LIB="static" + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - *doc_packages + - env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1 + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - *libabigail_build_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh
Signature · 1 line
2.25.0
Re: [dpdk-dev] [PATCH v2 3/3] ci: add travis ci support for native ppc64le
19/02/2020 02:10, David Wilder:
Quoted 15 lines
This change follows the example of aarch64 Travis support by adding support for ppc64le gcc builds. Limitations for ppc64le are the same as aarch64 as described in commit
31bb45bcfd.Signed-off-by David Wilder <[email protected]>Reviewed-by David Christensen <[email protected]>---
.travis.yml +5
-0+ - env: DEF_LIB="static" + arch: ppc64le + compiler: gcc + addons: + apt:
.travis.yml matrix: · line 170
Quoted 10 lines
.travis.yml +10
-0+ packages: + - *required_packages + - env: DEF_LIB="shared" + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1
kmods are already disabled by default.
.travis.yml matrix: · line 177
Quoted 7 lines
.travis.yml +7
-0+ arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - *doc_packages
Why testing without EXTRA_PACKAGES?
Quoted 8 lines
.travis.yml +8
-0+ - env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1 + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - *libabigail_build_packages
Re: [dpdk-dev] [PATCH v2 3/3] ci: add travis ci support for native ppc64le
In reply to David WilderQuoted 5 lines · David Wilder
This change follows the example of aarch64 Travis support by adding support for ppc64le gcc builds. Limitations for ppc64le are the same as aarch64 as described in commit
31bb45bcfd.
checkpatch did not catch it because of the \n (?).
When referring to other commits, please use the format 'commit <12+ chars of sha1> ("<title line>")'.
Quoted 3 lines
Signed-off-by David Wilder <[email protected]>Reviewed-by David Christensen <[email protected]>
I can see no clang compilation.
Is it unsupported? forgotten? unwanted?
Quoted 9 lines
--- .travis.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+).travis.yml +0
-0
.travis.yml matrix: · line 162
Quoted 10 lines
.travis.yml +7
-0@@ -153,5 +153,35 @@ matrix: packages: - *extra_packages - *libabigail_build_packages + - env: DEF_LIB="static" + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages
Copy/pasting this part is useless.
The addons: global node would make all jobs use this required_packages as a default.
I have a patch cleaning this for arm.
Quoted 28 lines
.travis.yml +23
-1+ - env: DEF_LIB="shared" + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *required_packages + - *doc_packages + - env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1 + arch: ppc64le + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - *libabigail_build_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh --2.25.0
Signature · 1 line
David Marchand
Re: [dpdk-dev] [PATCH v2 3/3] ci: add travis ci support for native ppc64le
Quoted 11 lines · David Marchand
Quoted 5 lines · David Wilder
This change follows the example of aarch64 Travis support by adding support for ppc64le gcc builds. Limitations for ppc64le are the same as aarch64 as described in commit
31bb45bcfd.checkpatch did not catch it because of the \n (?).
When referring to other commits, please use the format 'commit <12+ chars of sha1> ("<title line>")'.
Ok
Quoted 8 lines
Quoted 4 lines
Signed-off-by David Wilder <[email protected]>Reviewed-by David Christensen <[email protected]>I can see no clang compilation.
Is it unsupported? forgotten? unwanted?
Unsupported for now (issues with altivec).
Quoted 17 lines
Quoted 17 lines
--- .travis.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+).travis.yml +4
-0@@ -153,5 +153,35 @@ matrix: packages: - *extra_packages - *libabigail_build_packages + - env: DEF_LIB="static" + arch: ppc64le + compiler: gcc + addons:
Quoted 8 lines
.travis.yml matrix: · line 162
Quoted 3 lines
.travis.yml +3
-0+ apt: + packages: + - *required_packagesCopy/pasting this part is useless.
The addons: global node would make all jobs use thisrequired_packagesas a default.
I have a patch cleaning this for arm.
I see your cleanup patch now. I will refactor the ppc support on top and let you know if I have issues.
Thanks for the review.