Skip to content

Commit 4902807

Browse files
committed
octeon: add octeon virtio support
This patch contains following changes: 1.Adds new bus support as virtio. 2.Adds new octeon-virtio driver support. Type: feature Signed-off-by: Bheemappa Agasimundin <bagasimundin@marvell.com> Signed-off-by: Monendra Singh Kushwaha <kmonendra@marvell.com> Change-Id: Ifaf6b0eb4c8822759f311d8bc35e2160e55df3ba
1 parent 7d0d4f8 commit 4902807

16 files changed

Lines changed: 2392 additions & 29 deletions

File tree

build/external/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ ifneq ($(shell uname), FreeBSD)
2222
include packages/rdma-core.mk
2323
include packages/xdp-tools.mk
2424
include packages/octeon-roc.mk
25+
include packages/octeon-dao.mk
2526
endif # ! FreeBSD
2627
include packages/dpdk.mk
2728

@@ -33,7 +34,7 @@ clean:
3334
ifeq ($(shell uname), FreeBSD)
3435
install: $(if $(ARCH_X86_64), ipsec-mb-install) dpdk-install quicly-install
3536
else
36-
install: $(if $(ARCH_X86_64), ipsec-mb-install) dpdk-install rdma-core-install quicly-install xdp-tools-install $(if $(AARCH64), octeon-roc-install)
37+
install: $(if $(ARCH_X86_64), ipsec-mb-install) dpdk-install rdma-core-install quicly-install xdp-tools-install $(if $(AARCH64), octeon-roc-install octeon-dao-install)
3738
endif # FreeBSD
3839

3940
.PHONY: config

build/external/packages/dpdk.mk

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ DPDK_MLX_IBV_LINK ?= static
2121
# On most of the systems, default value for max lcores is 128
2222
DPDK_MAX_LCORES ?=
2323

24-
dpdk_version ?= 24.11.1
24+
dpdk_version ?= 25.11
2525
dpdk_base_url ?= http://fast.dpdk.org/rel
2626
dpdk_tarball := dpdk-$(dpdk_version).tar.xz
2727

28-
dpdk_tarball_sha256sum_24.11.1 := bcae7d42c449fc456dfb279feabcbe0599a29bebb2fe2905761e187339d96b8e
28+
dpdk_tarball_sha256sum_25.11 := 52e90d2a531ef3ded0283bd91abc94980698f1f6471fa09658a0217cf6609526
2929

3030
dpdk_tarball_sha256sum := $(dpdk_tarball_sha256sum_$(dpdk_version))
3131
dpdk_url := $(dpdk_base_url)/$(dpdk_tarball)
@@ -57,29 +57,20 @@ endif
5757
DPDK_DRIVERS_DISABLED := baseband/\*, \
5858
bus/dpaa, \
5959
bus/ifpga, \
60-
common/cnxk, \
6160
compress/isal, \
62-
compress/octeontx, \
6361
compress/zlib, \
6462
crypto/ccp, \
65-
crypto/cnxk, \
6663
crypto/dpaa_sec, \
6764
crypto/openssl, \
6865
crypto/aesni_mb, \
6966
crypto/aesni_gcm, \
7067
crypto/kasumi, \
7168
crypto/snow3g, \
7269
crypto/zuc, \
73-
event/\*, \
7470
mempool/dpaa, \
75-
mempool/cnxk, \
76-
net/af_packet, \
7771
net/bnx2x, \
78-
net/bonding, \
79-
net/cnxk, \
8072
net/ipn3ke, \
8173
net/liquidio, \
82-
net/pcap, \
8374
net/pfe, \
8475
net/sfc, \
8576
net/softnic, \
@@ -90,27 +81,10 @@ DPDK_DRIVERS_DISABLED := baseband/\*, \
9081
DPDK_LIBS_DISABLED := acl, \
9182
bbdev, \
9283
bitratestats, \
93-
bpf, \
94-
cfgfile, \
95-
cnxk, \
96-
distributor, \
97-
efd, \
98-
fib, \
99-
flow_classify, \
100-
graph, \
101-
gro, \
102-
gso, \
10384
jobstats, \
10485
kni, \
105-
latencystats, \
106-
lpm, \
10786
member, \
108-
node, \
10987
pipeline, \
110-
port, \
111-
power, \
112-
rawdev, \
113-
rib, \
11488
table
11589

11690
DPDK_MLX_CONFIG_FLAG :=
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright (c) 2024 Marvell.
3+
4+
DAO_DEBUG ?= n
5+
octeon-dao_version := dao-cn10k-26.02.0-ubuntu-24.04-26.02.0
6+
octeon-dao_tarball := $(octeon-dao_version).tar.gz
7+
octeon-dao_tarball_sha256sum := 0bd606591bd9d42d6b04d656da2ca4bbf4b5c66762e4acaf93664ad1a505f387
8+
9+
octeon-dao_tarball_strip_dirs := 1
10+
octeon-dao_url := https://github.com/MarvellEmbeddedProcessors/dao/archive/refs/tags/$(octeon-dao_tarball)
11+
12+
octeon_dao_cmake_args ?=
13+
14+
DAO_BUILD_TYPE:=release
15+
ifeq ($(DAO_DEBUG), y)
16+
DAO_BUILD_TYPE:=debug
17+
endif
18+
19+
DAO_MESON_ARGS = \
20+
--default-library static \
21+
-Dprefer_static_build=true --prefer-static \
22+
-Denable_apps=virtio-l2fwd \
23+
-Denable_libs=virtio,virtio_net,vfio,pem,pal,common \
24+
--buildtype=$(DAO_BUILD_TYPE) \
25+
-Denable_kmods=false
26+
27+
PREFIX = $(OCTEON_SDK_SYSROOT)
28+
29+
ifeq (,$(findstring $(OCTEON_VERSION),cn10k cn9k))
30+
DAO_MESON_ARGS += -Dplatform=native
31+
DAO_MESON_ARGS += --prefix $(octeon-dao_install_dir)
32+
PREFIX = $(octeon-dao_install_dir)
33+
else ifeq ($(OCTEON_VERSION), cn10k)
34+
DAO_MESON_ARGS += --cross-file=$(octeon-dao_src_dir)/config/arm64_cn10k_linux_gcc
35+
DAO_MESON_ARGS += --prefix $(OCTEON_SDK_SYSROOT)
36+
else ifeq ($(OCTEON_VERSION), cn9k)
37+
DAO_MESON_ARGS += --cross-file=$(octeon-dao_src_dir)/config/arm64_cn9k_linux_gcc
38+
DAO_MESON_ARGS += --prefix $(OCTEON_SDK_SYSROOT)
39+
endif
40+
41+
PIP_DOWNLOAD_DIR = $(CURDIR)/downloads/
42+
43+
define octeon-dao_config_cmds
44+
PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig meson setup $(octeon-dao_src_dir) \
45+
$(octeon-dao_build_dir) \
46+
$(DAO_MESON_ARGS) -Dc_args="-Wno-error" -Dc_link_args="-Wno-error"\
47+
| tee $(dao_config_log) && \
48+
echo "DAO post meson configuration"
49+
endef
50+
51+
define octeon-dao_build_cmds
52+
cd ${octeon-dao_build_dir} && rm -f $(octeon-dao_build_log) && \
53+
ninja install -C ${octeon-dao_build_dir} | tee $(octeon-dao_build_log)
54+
endef
55+
56+
define octeon-dao_install_cmds
57+
cd ${octeon-dao_build_dir} && \
58+
meson install &&\
59+
echo "meson installed directory ${octeon-dao_install_dir}"
60+
endef
61+
62+
$(eval $(call package,octeon-dao))

src/plugins/dev_octeon/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@ if (NOT OCTEON_ROC_LIB)
1919
return ()
2020
endif()
2121

22+
if (NOT OCTEON_ROC_DIR OR NOT OCTEON_ROC_LIB)
23+
include (dev_octeon_virtio.mk)
24+
return ()
25+
endif()
26+
2227
include_directories (${OCTEON_ROC_DIR}/)
28+
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/dpu/)
2329

2430
add_vpp_plugin(dev_octeon
2531
SOURCES
@@ -39,6 +45,7 @@ add_vpp_plugin(dev_octeon
3945
tm.c
4046
pfc.c
4147
dma.c
48+
dpu/dpu.c
4249

4350
MULTIARCH_SOURCES
4451
rx_node.c
@@ -48,3 +55,4 @@ add_vpp_plugin(dev_octeon
4855
${OCTEON_ROC_LIB}
4956
)
5057

58+
include (dev_octeon_virtio.mk)
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Copyright(c) 2024 Marvell.
3+
4+
# Find OCTEON roc files
5+
vpp_plugin_find_library(dev-octeon-virtio DAO_PAL_LIB "libdao_pal.a")
6+
vpp_plugin_find_library(dev-octeon-virtio DAO_VIRT_LIB "libdao_virtio.a")
7+
vpp_plugin_find_library(dev-octeon-virtio DAO_VIRT_NET_LIB "libdao_virtio_net.a")
8+
vpp_plugin_find_library(dev-octeon-virtio DAO_VFIO_LIB "libdao_vfio.a")
9+
vpp_plugin_find_library(dev-octeon-virtio DAO_PEM_LIB "libdao_pem.a")
10+
vpp_plugin_find_library(dev-octeon-virtio DAO_COMM_LIB "libdao_common.a")
11+
vpp_plugin_find_library(dev-octeon-virtio DAO_DPDK_LIB "libdpdk.a")
12+
13+
vpp_find_path(DAO_NETDEV_INCLUDE_DIR NAMES dao_virtio_netdev.h)
14+
15+
if (NOT DAO_NETDEV_INCLUDE_DIR)
16+
message("OCTEON VIRTIO DAO files not found - Marvell OCTEON virtio device plugin disabled")
17+
return()
18+
endif()
19+
20+
set(DAO_CONFG_INCLUDE_DIR "${DAO_NETDEV_INCLUDE_DIR}/..")
21+
22+
if (NOT DAO_PAL_LIB OR NOT DAO_VIRT_LIB OR NOT DAO_VIRT_NET_LIB OR NOT DAO_VFIO_LIB OR NOT DAO_PEM_LIB OR NOT DAO_COMM_LIB)
23+
message("OCTEON VIRTIO DAO LIBS are not found - Marvell OCTEON virtio device plugin disabled")
24+
return()
25+
endif()
26+
27+
unset(DAO_LINK_FLAGS)
28+
29+
get_filename_component(DAO_DPDK_LIB_DIR ${DAO_DPDK_LIB} DIRECTORY)
30+
31+
link_directories(${DAO_DPDK_LIB_DIR})
32+
string_append(DAO_LINK_FLAGS "-L${DAO_DPDK_LIB_DIR}")
33+
string_append(DAO_LINK_FLAGS "-lnuma -lz -lelf -lpcap -ljansson -lfdt")
34+
if(OPENSSL_FOUND)
35+
string_append(DAO_LINK_FLAGS "-lssl")
36+
string_append(DAO_LINK_FLAGS "-lcrypto")
37+
endif()
38+
39+
string_append(DAO_LINK_FLAGS "-Wl,--whole-archive,${DAO_PAL_LIB},${DAO_VIRT_LIB},${DAO_VIRT_NET_LIB},${DAO_VFIO_LIB},${DAO_PEM_LIB},${DAO_COMM_LIB},${DAO_DPDK_LIB},--no-whole-archive")
40+
41+
include_directories (${DAO_NETDEV_INCLUDE_DIR}/)
42+
include_directories (${DAO_CONFG_INCLUDE_DIR}/)
43+
44+
add_vpp_plugin(dev_octeon_virtio
45+
SOURCES
46+
virtio.c
47+
virtio_bus.c
48+
virtio_port.c
49+
virtio_ctrl.c
50+
virtio_tx_node.c
51+
virtio_rx_node.c
52+
virtio_format.c
53+
54+
LINK_FLAGS
55+
"${DAO_LINK_FLAGS}"
56+
)

0 commit comments

Comments
 (0)