aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch')
-rw-r--r--debian/patches/dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/debian/patches/dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch b/debian/patches/dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch
new file mode 100644
index 00000000..e98d33f1
--- /dev/null
+++ b/debian/patches/dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch
@@ -0,0 +1,74 @@
+From: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
+Date: Thu, 8 Sep 2016 22:18:10 +0530
+Subject: [PATCH 7/7] examples/ip_pipeline: fix lcore mapping for ppc64
+
+This patch fixes ip_pipeline panic in app_init_core_map while preparing cpu
+core map in powerpc with SMT off. cpu_core_map_compute_linux currently prepares
+core mapping based on file existence in sysfs ie.
+
+/sys/devices/system/cpu/cpu<LCORE_NUM>/topology/physical_package_id
+ /sys/devices/system/cpu/cpu<LCORE_NUM>/topology/core_id
+
+These files do not exist for lcores which are offline for any reason (as in
+powerpc, while SMT is off). In this situation, this function should further
+continue preparing map for other online lcores instead of returning with -1
+for a first unavailable lcore.
+
+Also, in SMT=off scenario for powerpc, lcore ids can not be always indexed from
+0 upto 'number of cores present' (/sys/devices/system/cpu/present). For eg, for
+an online lcore 32, core_id returned in sysfs is 112 where online lcores are
+10 (as in one configuration), hence sysfs lcore id can not be checked with
+indexing lcore number before positioning lcore map array.
+
+Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
+Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
+Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
+
+Origin: Upstream, commit:58d55fd279dc6f8f8d92fcab3362e24e19c9fbea
+Author: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
+Last-Update: 2016-09-21
+---
+ examples/ip_pipeline/cpu_core_map.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/examples/ip_pipeline/cpu_core_map.c b/examples/ip_pipeline/cpu_core_map.c
+index cb088b1..dd8f678 100644
+--- a/examples/ip_pipeline/cpu_core_map.c
++++ b/examples/ip_pipeline/cpu_core_map.c
+@@ -351,8 +351,10 @@ cpu_core_map_compute_linux(struct cpu_core_map *map)
+ int lcore_socket_id =
+ cpu_core_map_get_socket_id_linux(lcore_id);
+
++#if !defined(RTE_ARCH_PPC_64)
+ if (lcore_socket_id < 0)
+ return -1;
++#endif
+
+ if (((uint32_t) lcore_socket_id) == socket_id)
+ n_detected++;
+@@ -368,6 +370,7 @@ cpu_core_map_compute_linux(struct cpu_core_map *map)
+ cpu_core_map_get_socket_id_linux(
+ lcore_id);
+
++#if !defined(RTE_ARCH_PPC_64)
+ if (lcore_socket_id < 0)
+ return -1;
+
+@@ -377,9 +380,14 @@ cpu_core_map_compute_linux(struct cpu_core_map *map)
+
+ if (lcore_core_id < 0)
+ return -1;
++#endif
+
++#if !defined(RTE_ARCH_PPC_64)
+ if (((uint32_t) lcore_socket_id == socket_id) &&
+ ((uint32_t) lcore_core_id == core_id)) {
++#else
++ if (((uint32_t) lcore_socket_id == socket_id)) {
++#endif
+ uint32_t pos = cpu_core_map_pos(map,
+ socket_id,
+ core_id_contig,
+--
+1.9.1
+