From 502714fc442cef7680f549ab7dfc735956b75058 Mon Sep 17 00:00:00 2001 From: Vladimir Ratnikov Date: Thu, 17 Feb 2022 09:55:35 +0000 Subject: [PATCH] dpdk: support devargs for vmbus Type: feature Signed-off-by: Vladimir Ratnikov Change-Id: I2fd12a5b30aacdbaecb9156b829bfc06dfea377f --- src/plugins/dpdk/device/init.c | 48 +++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 09f1e18c9a5..b2f56c58f11 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -969,6 +969,8 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input) u8 *socket_mem = 0; u8 *huge_dir_path = 0; u32 vendor, device, domain, bus, func; + void *fmt_func; + void *fmt_addr; huge_dir_path = format (0, "%s/hugepages%c", vlib_unix_get_runtime_dir (), 0); @@ -1216,31 +1218,39 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input) /* copy rss_queues config from default device */ _ (rss_queues) - /* add DPDK EAL whitelist/blacklist entry */ - if (num_whitelisted > 0 && devconf->is_blacklisted == 0 && - devconf->dev_addr_type == VNET_DEV_ADDR_PCI) - { - tmp = format (0, "-a%c", 0); - vec_add1 (conf->eal_init_args, tmp); - if (devconf->devargs) + /* assume that default is PCI */ + fmt_func = format_vlib_pci_addr; + fmt_addr = &devconf->pci_addr; + + if (devconf->dev_addr_type == VNET_DEV_ADDR_VMBUS) + { + fmt_func = format_vlib_vmbus_addr; + fmt_addr = &devconf->vmbus_addr; + } + + /* add DPDK EAL whitelist/blacklist entry */ + if (num_whitelisted > 0 && devconf->is_blacklisted == 0) + { + tmp = format (0, "-a%c", 0); + vec_add1 (conf->eal_init_args, tmp); + if (devconf->devargs) { - tmp = format (0, "%U,%s%c", format_vlib_pci_addr, - &devconf->pci_addr, devconf->devargs, 0); + tmp = + format (0, "%U,%s%c", fmt_func, fmt_addr, devconf->devargs, 0); } else { - tmp = format (0, "%U%c", format_vlib_pci_addr, &devconf->pci_addr, 0); + tmp = format (0, "%U%c", fmt_func, fmt_addr, 0); } vec_add1 (conf->eal_init_args, tmp); - } - else if (num_whitelisted == 0 && devconf->is_blacklisted != 0 && - devconf->dev_addr_type == VNET_DEV_ADDR_PCI) - { - tmp = format (0, "-b%c", 0); - vec_add1 (conf->eal_init_args, tmp); - tmp = format (0, "%U%c", format_vlib_pci_addr, &devconf->pci_addr, 0); - vec_add1 (conf->eal_init_args, tmp); - } + } + else if (num_whitelisted == 0 && devconf->is_blacklisted != 0) + { + tmp = format (0, "-b%c", 0); + vec_add1 (conf->eal_init_args, tmp); + tmp = format (0, "%U%c", fmt_func, fmt_addr, 0); + vec_add1 (conf->eal_init_args, tmp); + } } #undef _ -- 2.16.6