[dpdk-dev] Windows Draft Build

Dmitry Kozlyuk dmitry.kozliuk at gmail.com
Mon Feb 17 02:14:24 CET 2020


> "Dpdk.sln" builds OK, will try launching sample apps
> a bit later.

Netuio driver consistently fails to install on Windows 10 in QEMU with
virtio-net (modern interface). Described below is my attempt to install the
driver from clean "windpdk-v18.08-clang" branch of "dpdk-draft-windows" repo.
The only change is hardware ID in INF file. What am I doing wrong here?

1. QEMU version: 4.2.0

QEMU command line:

    qemu-system-x86_64 \
        -enable-kvm \
        -cpu host -smp 'cores=4,sockets=1,threads=1' \
        -m 6G \
        -drive "file=$disk,format=qcow2" \
        -nic "user,id=winnet,model=e1000,smb=$HOME/src/dpdk" \
        -netdev 'socket,listen=:10000,id=dp0' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp0' \
        -netdev 'socket,listen=:10001,id=dp1' -device 'virtio-net-pci,disable-modern=off,disable-legacy=on,netdev=dp1' \
        -vga qxl

2. Loading unsigned drivers is enabled as follows:

     Microsoft Windows [Version 10.0.18363.418]
     (c) 2019 Microsoft Corporation. All rights reserved.

     Z:\>bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
     The operation completed successfully.

     Z:\>bcdedit.exe -set TESTSIGNING ON
     The operation completed successfully.

     Z:\>shutdown -r -t 0

After that, the desktop message shows:

     Test Mode
     Windows 10 Pro
     Build 18362.19h1_release.190318-1202

Including this step FTR, it works for other drivers.

3. Device status (no conflicting drivers):

     The drivers for this device are not installed. (Code 28)

     There are no compatible drivers for this device.

     To find a driver for this device, click Update Driver.

Device event log (note the hardware ID part):

     Device PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01\3&13c0b0c5&0&20
     requires further installation.

4. INF file is modified to include corresponding hardware ID:

diff --git a/kernel/windows/netuio/netuio.inf b/kernel/windows/netuio/netuio.inf
index b1696cc50..b6fd2c798 100644
--- a/kernel/windows/netuio/netuio.inf
+++ b/kernel/windows/netuio/netuio.inf
@@ -55,6 +55,7 @@ DriverVer=
 %F158B.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_158B   ; I40E_DEV_ID_25G_SFP28
 %F37D0.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_37D0
 %F153B.netuio.Description%=netuio_Device, PCI\VEN_8086&DEV_153B
+%virtio.netuio.Description%=netuio_Device, PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01
@@ -121,5 +122,6 @@ F158A.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XX
 F158B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Network Adapter XXV710-DA1"
 F37D0.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection X722"
 F153B.netuio.Description = "DPDK netUIO for Intel(R) Ethernet Connection I217-V"
+virtio.netuio.Description = "DPDK netUIO for virtio-net (modern)"
 netuio.DeviceDesc = "netuio Device"
 netuio.SVCDESC = "netuio Service"

5. Installation command fails after waiting for several minutes:

     Z:\>pnputil /add-driver Z:\windows\x64\Debug\netuio\netuio\netuio.inf /install
     Microsoft PnP Utility

     Adding driver package:  netuio.inf
     Driver package added successfully.
     Published Name:         oem2.inf
     Unable to install driver package: This operation returned because the timeout period expired.

     Total driver packages:  1
     Added driver packages:  0


Please find "C:\Windows\INF\setupapi.dev.log" attached as "clean_setupapi.dev.log".
Using devcon.exe from DDK yields similar result and log.

I also tried to add event tracing to the driver, but the driver doesn't even
get loaded, that is, DriverEntry is never called, so the cause shouldn't be
in driver code.

> I'm planning to use QEMU and virtio PMD (modern interface,
> because legacy uses PIO, which is not implemented by netuio) by adding a
> project similar to existing "librte_pmd_i40e".

Also tried doing this, attaching patches. Got the same result.

I start every new attempt to install a driver variant from clean system
restored from disk snapshot. "Userpci" driver from my port installs and binds
OK, so this is not an QEMU/Windows incompatibility issue.

Dmitry Kozlyuk

More information about the dev mailing list