From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id F0D8D45E21; Tue, 3 Dec 2024 22:04:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C8F6040261; Tue, 3 Dec 2024 22:04:10 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 819C64025D for ; Tue, 3 Dec 2024 22:04:08 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1213) id 9C53520BCAE0; Tue, 3 Dec 2024 13:04:07 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 9C53520BCAE0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1733259847; bh=N/drdox7YK7Ht3ZooPvX7PC2N0ELtQmDovOC/hpsrto=; h=From:To:Cc:Subject:Date:From; b=LcJ6PLST0BO87zfsTA8daOtbxFgDsEWo9jg/aDwMXzl2rTYsYOUQWwMdHJOnkokyQ ovGNwBIqwnFNzrACtrOMEvM4QDnWjqpue6ChrK3QXK2DjxmRr+RYh42AEIHwsvM6gF JB1dFN3j18k/gB/uvEUehN3dYhp1DmRB9Rjce7vE= From: Andre Muezerie To: web@dpdk.org Cc: Andre Muezerie , Andre Muezerie Subject: [PATCH] update Windows roadmap for 25.03 Date: Tue, 3 Dec 2024 13:03:52 -0800 Message-Id: <1733259832-11430-1-git-send-email-andremue@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 X-BeenThere: web@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK website maintenance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: web-bounces@dpdk.org From: Andre Muezerie 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 --- 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