mirror of
https://github.com/microsoft/WSL.git
synced 2026-05-31 16:13:47 -05:00
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>
33 lines
2.3 KiB
XML
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>
|