Files
WSL/packages.config
Ben Hillis c4ef2c7dd9 virtio: improve virtiofs and VirtioProxy performance with per-device SWIOTLB pool (#40654)
Improves virtiofs and VirtioProxy performance by giving each virtio
device its own SWIOTLB aperture instead of sharing a single global
pool. The guest kernel reserves a contiguous physical range at boot,
publishes the (base, size), and the host programs a matching
per-device aperture in wsldevicehost.

  1. The WSL kernel allocates a contiguous range at boot
     (alloc_contig_pages with __GFP_DMA32 | __GFP_ZERO) and exposes
     the chosen physical (base, size) under
       /sys/bus/vmbus/drivers/hv_pci/swiotlb_{base,size}

  2. mini_init (WSL2) and the WSLC init handler read those sysfs files
     and return the values in LX_INIT_GUEST_CAPABILITIES and
     WSLC_GET_GUEST_CAPABILITIES_RESULT respectively.

  3. WslCoreVm::ReadGuestCapabilities and
     WSLCVirtualMachine::ReadGuestCapabilities capture the values.
     WSLC forwards them to wslservice via the new
     HcsVirtualMachine::ApplyGuestCapabilities IDL method (with a
     WSLCGuestCapabilities struct so future kernel-published values
     can be added without bumping the interface IID).

  4. Both VM owners format "swiotlb=0x{base:x},{size}" once into
     m_swiotlbOption and pass it verbatim to AddGuestDevice /
     AddSharePath for every virtiofs share and virtio-net adapter
     (VirtioProxy networking). wsldevicehost consumes the token and
     creates the per-device SWIOTLB aperture.

If the kernel does not publish the sysfs files (older kernel) both
values come back as zero, the host omits the device-options token,
and the WSL2 path emits a one-time user warning via
MessageSwiotlbKernelUnsupported so users understand why performance
is degraded. (The WSLC path always uses the bundled kernel, so the
warning does not apply there.)

Other changes:

  * Bump Microsoft.WSL.Kernel to 6.18.26.3-1, which is the first
    official kernel that publishes the hv_pci swiotlb_{base,size}
    sysfs files this PR consumes.

  * Bump Microsoft.WSL.DeviceHost to 1.2.29-0 for the device-side
    SWIOTLB aperture support.

  * Default pool sizing moves to helpers::ComputeDefaultSwiotlbConfig
    and is only requested on the kernel command line when a virtio
    device that needs bounce buffers (VirtioFs / Virtio9p /
    VirtioProxy) is in use.

  * Telemetry: emit GuestKernelInfo / WSLCReadGuestCapabilities /
    WSLCApplyGuestCapabilities events with the kernel-chosen base
    and size so we can validate the handshake in CI.

Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-28 01:27:03 +00:00

33 lines
2.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommunityToolkit.Mvvm" version="8.4.0" />
<package id="CommunityToolkit.WinUI.Animations" version="8.2.250402" />
<package id="CommunityToolkit.WinUI.Controls.SettingsControls" version="8.2.250402" />
<package id="Microsoft.Direct3D.Linux" version="1.611.1-81528511" targetFramework="native" />
<package id="Microsoft.DXCore.Linux.amd64fre" version="10.0.26100.1-240331-1435.ge-release" targetFramework="native" />
<package id="Microsoft.DXCore.Linux.arm64fre" version="10.0.26100.1-240331-1435.ge-release" targetFramework="native" />
<package id="Microsoft.Extensions.Hosting" version="10.0.0" />
<package id="Microsoft.Identity.MSAL.WSL.Proxy" version="0.1.1" />
<package id="Microsoft.NETCore.App.Runtime.win-arm64" version="10.0.8" />
<package id="Microsoft.NETCore.App.Runtime.win-x64" version="10.0.8" />
<package id="Microsoft.RemoteDesktop.Client.MSRDC.SessionHost" version="1.2.6676" />
<package id="Microsoft.Taef" version="10.100.251104001" targetFramework="native" />
<package id="Microsoft.Windows.CsWinRT" version="2.2.0" />
<package id="Microsoft.Windows.ImplementationLibrary" version="1.0.251108.1" targetFramework="native" />
<package id="Microsoft.Windows.SDK.NET.Ref" version="10.0.26100.81" />
<package id="Microsoft.WindowsAppSDK" version="1.8.251106002" />
<package id="Microsoft.WSL.bsdtar" version="0.0.2-2" />
<package id="Microsoft.WSL.Dependencies.amd64fre" version="10.0.27820.1000-250318-1700.rs-base2-hyp" targetFramework="native" />
<package id="Microsoft.WSL.Dependencies.arm64fre" version="10.0.27820.1000-250318-1700.rs-base2-hyp" targetFramework="native" />
<package id="Microsoft.WSL.DeviceHost" version="1.2.29-0" />
<package id="Microsoft.WSL.Kernel" version="6.18.26.3-1" targetFramework="native" />
<package id="Microsoft.WSL.LinuxSdk" version="1.20.0" targetFramework="native" />
<package id="Microsoft.WSL.TestData" version="0.4.0" />
<package id="Microsoft.WSL.TestDistro" version="2.7.1-1" />
<package id="Microsoft.WSLg" version="1.0.77" />
<package id="Microsoft.Xaml.Behaviors.WinUI.Managed" version="3.0.0" />
<package id="vswhere" version="3.1.7" />
<package id="WinUIEx" version="2.9.0" />
<package id="Wix" version="5.0.2" />
</packages>