DPDK website maintenance
 help / color / mirror / Atom feed
From: Andre Muezerie <andremue@linux.microsoft.com>
To: web@dpdk.org
Cc: Andre Muezerie <andremue@ntdev.microsoft.com>,
	Andre Muezerie <andremue@linux.microsoft.com>
Subject: [PATCH] update Windows roadmap for 25.03
Date: Tue,  3 Dec 2024 13:03:52 -0800	[thread overview]
Message-ID: <1733259832-11430-1-git-send-email-andremue@linux.microsoft.com> (raw)

From: Andre Muezerie <andremue@ntdev.microsoft.com>

Summary of changes:

- Provided details about what is in focus for 25.03: work to be done
and pre-requisites.
- Removed or summarized tasks that were completed in past releases.
- Minor updates.

Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
---
 content/roadmap/windows.md | 93 +++++++++++++++++++++++---------------
 1 file changed, 56 insertions(+), 37 deletions(-)

diff --git a/content/roadmap/windows.md b/content/roadmap/windows.md
index dd8d3a9..fa001fe 100644
--- a/content/roadmap/windows.md
+++ b/content/roadmap/windows.md
@@ -7,17 +7,17 @@ title = "Windows Plan"
 
 ### Status
 
-DPDK 21.08 supports running testpmd and examples
+Starting with DPDK 21.08 it is possible to run 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.
+The focus for 25.03 is getting more of the DPDK code to compile with MSVC.
+The goal is to get parity between clang and MSVC, so that all code that
+currently compiles with clang on Windows can also be compiled with MSVC.
 
-[Windows draft repository](//git.dpdk.org/draft/dpdk-draft-windows/)
-is suspended, all development happens in the upstream:
+All development happens in the upstream:
 
 - [dpdk](//git.dpdk.org/dpdk/)
 - [dpdk-kmods](//git.dpdk.org/dpdk-kmods/)
@@ -33,55 +33,75 @@ The PMD-specific documentation should be updated in the common
 
 {{% notice info %}}
 Features and milestones may be noted here.
-This is not a commitment but plan of work.
+This is not a commitment but a plan of work.
 This list is obviously neither complete nor guaranteed.
 {{% /notice %}}
 
 
 #### Bringing support for Microsoft Visual Studio on Windows
 
-Starting with release 23.11 integration will begin to formally support
+Starting with release 23.11, integration began to formally support
 the Microsoft Visual Studio toolset.
-Patches are introduced that incrementally phase in full support
+Patches were introduced to 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.
+Continuing that effort, the following is a work plan targeting the 25.03 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
+##### Eliminate VLAs
 
-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.
+MSVC does not support Variable Length Arrays (VLAs). Therefore there is a need
+to replace VLAs with standard C arrays or alloca(). alloca() is available for
+all toolchain/platform combinations officially supported by DPDK.
 
-http://patches.dpdk.org/project/dpdk/list/?series=26662
+The series [Remove use of VLAs for Windows](https://patches.dpdk.org/project/dpdk/list/?series=34007)
+removes the use of VLAs from code built for Windows for all three toolchains.
+Since this is a large series touching many files, it's a pre-requisite for
+many subsequent changes.
 
-##### MSVC CI Pipeline Prerequisite
+##### Structure Packing
 
-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 struct packing is not compatible with GCC. A discussion about possible
+solutions was held and as a result the series
+[Fix packing of structs when building with MSVC](https://patches.dpdk.org/project/dpdk/list/?series=34043)
+was submitted for review.
 
-##### MSVC CI Pipeline Bootstrap
+This series provides a macro (__rte_packed_begin) that can be used to push
+existing pack value and sets packing to 1-byte. The existing __rte_packed
+macro is replaced with __rte_packed_end and restores the pack value prior
+to the push.
 
-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.
+Like the VLA-related change, this series is also large and is a pre-requisite
+for many subsequent changes.
 
-##### MSVC EAL porting
+##### MSVC CI Pipeline
 
-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.
+The DPDK CI pipeline is fundamental to making progress with porting work for
+the MSVC toolset as it avoids regressions from being introduced. The CI
+pipeline is in place and is being relied on as work progresses. It
+automatically starts compiling additional code as it gets enabled by the
+patches that get completed.
 
-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.
+As additional libraries and tests are ported, the pipeline will also allow
+execution of the DPDK unit tests.
+
+##### MSVC Library Porting
+
+Several libraries are already compiling with MSVC: log, kvargs, telemetry,
+eal, ptr_compress, ring, meter, pci, timer and cfgfile.
+
+These are some of the libraries that will be ported for 25.03: rcu, mbuf,
+lpm, dmadev, mldev, stack and fib.
+
+Porting new libraries might be broken down into multiple-patch series to
+address & decouple different issues separately.
+
+It's important to note that some libraries (EAL is a great example) are
+pre-requisite for porting other libraries, drivers and unit tests. As
+mentioned above, the VLA and structure packing changes are pre-requisites
+as well.
 
 ##### Unit Test Library Porting
 
@@ -92,7 +112,7 @@ to allow the harness to be invoked.
 
 ##### Unit Test Enablement
 
-Fundamental unit tests (typically those testing EAL functionality) will be ported to MSVC.
+Fundamental unit tests 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.
 
@@ -106,14 +126,14 @@ updated to run the unit tests.
 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.
+Nearing the 25.03 release timeframe the plan will be reviewed to
+understand and schedule porting work beyond the 25.03 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.
+by the netuio driver for use by DPDK PMDs.
 
 Partners and providers of hardware & PMDs will be able to use the
 WHQL certification process to sign driver packages containing PMDs
@@ -129,7 +149,6 @@ https://learn.microsoft.com/en-us/previous-versions/windows/hardware/hck/jj12422
 #### General Availability
 
 * Ability to install and consume user-space static build
-    - [Meson 0.58+ issue](https://github.com/mesonbuild/meson/issues/8981)
     - [pkg-config file for Npcap](https://github.com/nmap/npcap/issues/299)
 * [Working user-space shared build (DLL)][dll]
     - Will be addressed as a part of Microsoft Visual Studio compiler support
-- 
2.47.0.vfs.0.3


                 reply	other threads:[~2024-12-03 21:04 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1733259832-11430-1-git-send-email-andremue@linux.microsoft.com \
    --to=andremue@linux.microsoft.com \
    --cc=andremue@ntdev.microsoft.com \
    --cc=web@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).