Windows Plan
DPDK porting on Windows
Status
DPDK 21.08 supports running testpmd and examples with mlx5, i40e, and ice HW, vmxnet3 paravirtual devices in QEMU, or with PCAP virtual devices. It requires yet unsigned kernel-mode drivers to run (except mlx5). Only network PMDs are currently enabled.
Current focus is friction-less consumption by end-users and supporting more HW. Multi-process, and hence dpdk-pdump support is neither available nor scheduled.
Windows draft repository is suspended, all development happens in the upstream:
The DPDK documentation for Windows is updated along with upstream progress.
The PMD-specific documentation should be updated in the common NIC drivers guide.
Roadmap
Features and milestones may be noted here. This is not a commitment but plan of work. This list is obviously neither complete nor guaranteed.
Bringing support for Microsoft Visual Studio on Windows
Starting with release 23.11 integration will begin to formally support the Microsoft Visual Studio toolset. Patches are introduced that incrementally phase in full support of the core DPDK libraries, the DPDK unit tests and drivers.
The following is a draft plan of work targeting the 23.11 release. The plan is subject to change depending on delays and discussions from the review process. Contributions toward this plan from the community are welcome.
meson.build Changes
Meson does not fully abstract away command line arguments to toolchains so an initial series is available that unblocks the use of MSVC. This change is pre-requisite to undertake subsequent steps.
http://patches.dpdk.org/project/dpdk/list/?series=26662
MSVC CI Pipeline Prerequisite
Enablement of the DPDK CI pipeline is fundamental to efficiently progressing porting work for the MSVC toolset. A minimal patch series will be supplied to build the kvargs and telemetry libraries only.
MSVC CI Pipeline Bootstrap
Work will be done to onboard CI pipeline for the MSVC toolset. Initially the pipeline will only guarantee compilation but as additional libraries and tests are ported will also allow execution of the DPDK unit tests.
MSVC EAL porting
EAL is pre-requisite for porting all other libraries, drivers and unit tests. Porting of EAL will be broken down into multiple-patch series to address & decouple from the toolchain intrinsics topic.
Beginning with the DPDK 23.11 release a new option enable_stdatomic
will be introduced to allow DPDK toolchain platform combinations
to be built with or without C11 stdatomic.h
.
The use of either the standard atomics or traditional builtin intrinsics
will be placed behind a thin macro based abstraction in the rte_
namespace.
Unit Test Library Porting
In addition to EAL there are several libraries required for the basic DPDK unit test harness. Multiple series will be submitted to port the appropriate libraries to allow the harness to be invoked.
Unit Test Enablement
Fundamental unit tests (typically those testing EAL functionality) will be ported to MSVC. For tests that depend only on EAL this is not expected to require code change but is just re-enabling compilation of the tests allowing them to be built and run.
MSVC CI Pipeline Test Enablement
With initial DPDK unit tests building & passing the CI pipeline will be updated to run the unit tests.
Driver Porting
Candidate drivers will be selected from the set currently built with clang. Multiple series will be submitted (probably per-driver) with changes to port to MSVC.
Nearing the 23.11 release timeframe the plan will be reviewed to understand and schedule porting work beyond the 23.11 release.
Kernel Mode Drivers
Concurrent work is in progress by Microsoft to provide functionality by the netuio driver for use by DPDK PMDs in the next release of Windows.
Partners and providers of hardware & PMDs will be able to use the WHQL certification process to sign driver packages containing PMDs that utilize netuio functionality.
For more information visit the following links:
https://learn.microsoft.com/en-us/windows-hardware/drivers/install/whql-release-signature
https://learn.microsoft.com/en-us/previous-versions/windows/hardware/hck/jj124227(v=vs.85)
General Availability
- Ability to install and consume user-space static build
- Working user-space shared build (DLL)
- Will be addressed as a part of Microsoft Visual Studio compiler support
- Process, pipeline, and download area for signed builds of kernel-mode drivers
- virt2phys security hardening
Feature Support
- Interrupt handling for netuio
- vmxnet3 PMD with VMware hypervisor
- virtio PMD
- ena PMD
- mlx5 PMD rte_flow features
- Unit tests
- Tracing
- Documentation build (doxygen + sphinx)
Miscellaneous
- Tracing for netuio to simplify troubleshooting for end-users
- Improved documentation and automated scripts
- AVX bug in GCC
- Functional tests in CI
Future (unscheduled)
- Advanced memory management: IOMMU, inbox kernel-mode driver