Skip to contentSkip to conversation

add travis ci support for ppc64le

PATCH Superseded David Wilder 3 participants 7 messages Feb 19, 2020

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index 9530ee55f..d3a0a1731 100644
@@ -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
#2 lore raw

PATCH v2 2/3 devtools: allow test-null.sh to run on ppc64le

In reply to David Wilder

Memory 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
index 548de8113..b7defe1fd 100755
@@ -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
#3 lore raw

PATCH v2 3/3 ci: add travis ci support for native ppc64le

In reply to 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.

---
 .travis.yml | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
.travis.yml +30 -0
index 1d43f16ae..c15bf4f07 100644
@@ -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
#4 lore raw

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.

---

.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
#5 lore raw

Re: [dpdk-dev] [PATCH v2 3/3] ci: add travis ci support for native ppc64le

In reply to David Wilder
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>")'.

Quoted 3 lines

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
index 1d43f16ae..c15bf4f07 100644

.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
author
#6 lore raw

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

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
index 1d43f16ae..c15bf4f07 100644
@@ -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_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.

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.