To build and run DPDK on Linux on IBM Z (s390x), big endian support is added and s390x vector intrinics are used in the implementation of DPDK libraries.
I appreciate your feedback. Vivian Kong (12): mk: introduce s390x architecture eal: add support for s390x architecture acl: add support for s390x architecture lpm: add support for s390x architecture examples/l3fwd: add support for s390x architecture net/i40e: add support for s390x architecture test: add support for s390x architecture hash: add support for s390x architecture doc: introduce s390x architecture ethdev: add cast for bus_device mbuf: trivial fix test: miscellaneous test fixes MAINTAINERS | 9 + app/test-acl/main.c | 4 + app/test/autotest_data.py | 2 +- app/test/test_cmdline.c | 6 +- app/test/test_cmdline_ipaddr.c | 13 +- app/test/test_cmdline_num.c | 111 +++ app/test/test_xmmt_ops.h | 14 + config/defconfig_s390x-native-linux-gcc | 1 + config/defconfig_s390x-native-linuxapp-gcc | 33 + doc/guides/nics/features/i40e.ini | 1 + doc/guides/nics/features/i40e_vec.ini | 1 + doc/guides/rel_notes/release_19_05.rst | 3 + drivers/net/i40e/Makefile | 2 + drivers/net/i40e/i40e_rxtx_vec_s390x.c | 631 ++++++++++++++++++ examples/l3fwd/l3fwd_em.c | 8 + examples/l3fwd/l3fwd_lpm_s390x.h | 137 ++++ examples/l3fwd/l3fwd_s390x.h | 259 +++++++ lib/librte_acl/Makefile | 2 + lib/librte_acl/acl_bld.c | 69 +- lib/librte_acl/acl_gen.c | 9 + lib/librte_acl/acl_run_scalar.c | 8 + lib/librte_acl/rte_acl.c | 4 + lib/librte_acl/rte_acl.h | 1 + .../common/arch/s390x/rte_cpuflags.c | 90 +++ lib/librte_eal/common/arch/s390x/rte_cycles.c | 11 + .../common/arch/s390x/rte_hypervisor.c | 11 + .../common/include/arch/s390x/rte_atomic.h | 47 ++ .../common/include/arch/s390x/rte_byteorder.h | 43 ++ .../common/include/arch/s390x/rte_cpuflags.h | 42 ++ .../common/include/arch/s390x/rte_cycles.h | 44 ++ .../common/include/arch/s390x/rte_io.h | 18 + .../common/include/arch/s390x/rte_memcpy.h | 55 ++ .../common/include/arch/s390x/rte_pause.h | 22 + .../common/include/arch/s390x/rte_prefetch.h | 40 ++ .../common/include/arch/s390x/rte_rwlock.h | 42 ++ .../common/include/arch/s390x/rte_spinlock.h | 85 +++ .../include/arch/s390x/rte_ticketlock.h | 18 + .../common/include/arch/s390x/rte_vect.h | 33 + lib/librte_ethdev/rte_ethdev_pci.h | 2 +- lib/librte_hash/rte_fbk_hash.h | 7 + lib/librte_lpm/Makefile | 2 + lib/librte_lpm/meson.build | 2 +- lib/librte_lpm/rte_lpm.h | 2 + lib/librte_lpm/rte_lpm6.c | 26 +- lib/librte_lpm/rte_lpm_s390x.h | 130 ++++ lib/librte_mbuf/rte_mbuf.h | 2 +- mk/arch/s390x/rte.vars.mk | 16 + mk/rte.cpuflags.mk | 5 + 48 files changed, 2099 insertions(+), 24 deletions(-) create mode 120000 config/defconfig_s390x-native-linux-gcc create mode 100644 config/defconfig_s390x-native-linuxapp-gcc create mode 100644 drivers/net/i40e/i40e_rxtx_vec_s390x.c create mode 100644 examples/l3fwd/l3fwd_lpm_s390x.h create mode 100644 examples/l3fwd/l3fwd_s390x.h create mode 100644 lib/librte_eal/common/arch/s390x/rte_cpuflags.c create mode 100644 lib/librte_eal/common/arch/s390x/rte_cycles.c create mode 100644 lib/librte_eal/common/arch/s390x/rte_hypervisor.c create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_atomic.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_byteorder.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_cpuflags.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_cycles.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_io.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_memcpy.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_pause.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_prefetch.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_rwlock.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_spinlock.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_ticketlock.h create mode 100644 lib/librte_eal/common/include/arch/s390x/rte_vect.h create mode 100644 lib/librte_lpm/rte_lpm_s390x.h create mode 100644 mk/arch/s390x/rte.vars.mk -- 2.17.1