On Tue, 8 Apr 2025 14:53:50 -0700 lon...@linuxonhyperv.com wrote: > From: Long Li <lon...@microsoft.com> > > Hyperv may expose VMBUS channels without monitoring enabled. In this case, > it programs almost all the data traffic to VF. > > This patchset enabled vmbus/netvsc to use channels without monitoring > enabled. > > This needs to change the APIs exposed by drivers/bus/vmbus. Because those > APIs are used only by NetVSC PMD and not feasible for use by a DPDK > application, all VMBUS APIs are set to deprecate in upcoming 25.11 release. > > The notice for deprecation is accepted in the following patch: > https://patchwork.dpdk.org/project/dpdk/patch/1742242184-19600-1-git-send-email-lon...@linuxonhyperv.com/ > > Change log: > v3: Add in the comment on the VMBUS API deprecation notice > > Long Li (6): > net/netvsc: introduce private data for storing vmbus device for > secondary process > net/netvsc: introduce get_vmbus_device to get the vmbus device > bus/vmbus: store UIO fd for secondary process > bus/vmbus: support channels without monitoring enabled > bus/vmbus: add rte_vmbus_device to all functions accessing vmbus > bus/vmbus: set event for channel without monitoring support > > drivers/bus/vmbus/linux/vmbus_bus.c | 9 +++-- > drivers/bus/vmbus/linux/vmbus_uio.c | 6 +-- > drivers/bus/vmbus/private.h | 2 +- > drivers/bus/vmbus/rte_bus_vmbus.h | 16 +++++--- > drivers/bus/vmbus/vmbus_channel.c | 57 ++++++++++++++++++++-------- > drivers/bus/vmbus/vmbus_common_uio.c | 9 +++-- > drivers/net/netvsc/hn_ethdev.c | 44 ++++++++++++++++----- > drivers/net/netvsc/hn_nvs.c | 33 +++++++++++----- > drivers/net/netvsc/hn_nvs.h | 21 ++++++---- > drivers/net/netvsc/hn_rndis.c | 11 +++--- > drivers/net/netvsc/hn_rxtx.c | 16 ++++---- > 11 files changed, 155 insertions(+), 69 deletions(-) >
Still see issues in clang build. This happens because clang treats _Atomic() as a different type: #################################################################################### #### [Begin job log] "ubuntu-22.04-gcc-stdatomic" at step Build and test #################################################################################### [449/3553] Compiling C object lib/librte_port.a.p/port_rte_swx_port_ring.c.o [450/3553] Generating rte_bus_ifpga.pmd.c with a custom command [451/3553] Generating rte_bus_vdev.pmd.c with a custom command [452/3553] Compiling C object drivers/libtmp_rte_common_ionic.a.p/common_ionic_ionic_common_uio.c.o [453/3553] Compiling C object lib/librte_port.a.p/port_rte_swx_port_source_sink.c.o [454/3553] Linking static target lib/librte_port.a [455/3553] Compiling C object drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus_vmbus_bufring.c.o [456/3553] Linking static target drivers/librte_common_cnxk.a [457/3553] Compiling C object drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus_linux_vmbus_bus.c.o [458/3553] Compiling C object drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus_vmbus_common.c.o [459/3553] Compiling C object drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus ccache gcc -Idrivers/libtmp_rte_bus_vmbus.a.p -Idrivers -I../drivers -Idrivers/bus/vmbus -I../drivers/bus/vmbus -I../drivers/bus/vmbus/linux -Ilib/eal/common -I../lib/eal/common -I. -I.. -Iconfig -I../config -Ilib/eal/include -I../lib/eal/include -Ilib/eal/linux/include -I../lib/eal/linux/include -Ilib/eal/x86/include -I../lib/eal/x86/include -I../kernel/linux -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/log -I../lib/log -Ilib/metrics -I../lib/metrics -Ilib/telemetry -I../lib/telemetry -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -O2 -g -include rte_config.h -Wvla -Wcast-qual -Wdeprecated -Wformat -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -march=corei7 -mrtm -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -Wno-format-truncation -Wno-address-of-packed-member -DRTE_LOG_DEFAULT_LOGTYPE=bus.vmbus -MD -MQ drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus_vmbus_channel.c.o -MF drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus_vmbus_channel.c.o.d -o drivers/libtmp_rte_bus_vmbus.a.p/bus_vmbus_vmbus_channel.c.o -c ../drivers/bus/vmbus/vmbus_channel.c ../drivers/bus/vmbus/vmbus_channel.c: In function ‘vmbus_set_monitor’: ../drivers/bus/vmbus/vmbus_channel.c:51:22: error: assignment to ‘uint32_t *’ {aka ‘unsigned int *’} from incompatible pointer type ‘_Atomic uint32_t *’ {aka ‘_Atomic unsigned int *’} [-Werror=incompatible-pointer-types] 51 | monitor_addr = &channel->monitor_page->trigs[trigger_index].pending; | ^ cc1: all warnings being treated as errors