SlideShare a Scribd company logo
Xen Project
Windows PV Drivers
Paul Durrant
Project Lead
Agenda
• Background
• Origin of the drivers
• Legacy, Standard and XenProject drivers
• Driver interfaces
• Discovery
• Compatibility
• Building and Installing drivers
• Tools
Terminology
PDO
FDO
FDO
PACKAGE (INF FILE)
PACKAGE
local/domain/device/vif
This is a Function Device Object,
created when a driver binds to a
Physical Device Object. The INF file
states the ‘names’ it will bind to.
This is a Physical Device Object,
created by a bus driver. The ‘name’
of this device is used by Windows
to select a driver.
This is a xenstore key that is used by a
PV bus driver to create a PDO.
This is an FDO created by a
child PV driver that binds to
the PDO representing the
xenstore key.
FiltDO
This is a Filter Device Object.
They can be used to interpose
on Plug’n’Play, Power or IO
messages flowing between
PDOs and FDOs.
Legacy Drivers
• Used for all versions of Windows in Citrix
XenServer 6.0
• Used only for Windows XP and Server 2003 from
XenServer 6.1
• Closed source
• Code of unknown origin made open source difficult
Legacy Drivers
ROOTXENEVTCHN PCIVEN_5853&DEV_0001
XENVBDXENEVTCHN
DISK
XENVIF
XENNET
XENUTIL
XENVBDXEVTCHN
XENVIF
XENNET
local/domain/device/vif
local/domain/device/vif/0
XENNET
XENNET
local/domain/device/vif/1 local/domain/device/vbd/768
DISK
local/domain/device/vbd/832
SCSIFILT SCSIFILT
……
Created by installer Emulated by QEMU
Standard in-box
driver
Linkage dependency
• XENIFACE omitted for simplicity
Legacy Drivers
Problems:
• SCSIFILT makes storage stack complicated
• Cross-package linkage dependencies make
upgrade very tricky
• Binary incompatibility can lead to hard-to-diagnose BSODs
• Two root nodes make load order unpredictable and
initialization of PV interfaces very fragile
• Use of synthetic root node requires an installer
• Windows Update cannot be used to deploy
“But Windows Update would be very useful for large installations or
upgrades so that’s a pain. What can we do?”
Standard Drivers
• Used for versions of Windows from Vista onwards
from XenServer 6.1
• Built using Windows 8 WDK and Visual Studio
2012
• Necessary for supporting Windows 8 onwards
• Anticipated to become open source
• All code of unknown origin was removed
PCIVEN_5853&DEV_0002
XENVBD
DISK
XENVIF
XENNET
XENVBDXENVIF
XENNET
local/domain/device/vif
local/domain/device/vif/0
XENNET
XENNET
local/domain/device/vif/1 local/domain/device/vbd/768
DISK
local/domain/device/vbd/832
……
local/domain/device/vbd
XENBUS
XENBUS
XENFILT
XEN
NOTE: New Device ID
Handles unplug
Standard Drivers
• XENIFACE omitted again for simplicity
Standard Drivers
Advantages:
• STORPORT instead of SCSIPORT
• No need for SCSIFILT
• Independent packages
• No binary compatibility issues
• No installation ordering issues
• Just PCI root node
• Windows Update now possible
Standard Drivers
Problems:
• New Device ID
• Conceived to allow Windows Update deployment, but…
• Caused big problems in XenServer 6.1
• Not acceptable to upstream community (e.g. Amazon)
• Compatibility checks don’t behave well
• Still an assumption that drivers will be installed or upgraded
together
Xen Project Drivers
• XenServer went fully open source in 2013
• Desire for Windows PV drivers to become even
more open
• Drivers already functioning on most Xen installations
• Amazon already building from source
• Windows PV Drivers sub-project ratified in June
2014
• Front page accessible from http://www.xenproject.org
• Source repositories at http://xenbits.xenproject.org
• Project lead: Paul Durrant
• Committers: Paul Durrant, Ben Chalmers and Owen Smith
Xen Project Drivers
• Plan to use for all versions of Windows from
XenServer vNext
• Windows 2003 goes out of support in May 2015
• Built using Windows 8 WDK and Visual Studio
2012
• Cannot move to 8.1 WDK as Windows 7 is not supported
• Source is buildable with 8.1 WDK and Visual Studio 2013
• Remaining problems from Standard Drivers
addressed
PCIVEN_5853&DEV_XXXX
XENVBD
DISK
XENVIF
XENNET
XENVBDXENVIF
XENNET
local/domain/device/vif
local/domain/device/vif/0
XENNET
XENNET
local/domain/device/vif/1 local/domain/device/vbd/768
DISK
local/domain/device/vbd/832
……
local/domain/device/vbd
Interface discovery:
• More on this…
NOTE: Flexible Device ID:
• More on this…
Xen Project Drivers
• XENIFACE still omitted for simplicity
XENBUS
XENBUS
XENFILT
XEN
Flexible Device ID
PCIVEN_5853&DEV_0001
PCIVEN_5853&DEV_0002
PCIVEN_5853&DEV_C000
You should have one of
these
You may have one of
these
• XENBUS binds to any of these
• Co-installer selects ‘active’ device
• Will only select if there’s no current selection
• Only active device has children
• Child PDO name carries device ID
• XenServer has reserved C000 for Windows
Update
Interface Discovery
• IRP_MN_QUERY_INTERFACE message
• Identifies interface by GUID
• Gets back jump table and context
DRIVER3
DRIVER3
DRIVER3
• Message may be forwarded to parent if
interface not implemented
• Client doesn’t care where the
interface is implemented
• Allows interfaces to be exported by
XENFILT
• Unplug
Interface Discovery Example
XENBUS
XENVIF
• XENVIF codebase imports evtchn_interface.h
from XENBUS
• XENVIF allocates a XENBUS_EVTCHN_INTERFACE
structure and passes it to XENBUS in
IRP_MN_QUERY_INTERFACE message
• Always requests XENBUS_EVTCHN_INTERFACE_VERSION_MAX
IRP_MN_QUERY_INTERFACE
Interface Discovery Example
XENBUS
XENVIF
• XENBUS fills in structure with requested interface
version
• XENBUS completes IRP
• XENVIF calls XENBUS_EVTCHN(Acquire, …)
• Acquisition not implicit in query
• References must be dropped across S4 transition (Hibernate)
• IRP_MN_QUERY_INTERFACE must be issued at
PASSIVE_LEVEL
XENBUS_EVTCHN_INTERFACE
Interface Discovery Example
Compatibility:
• XENVIF binds to a particular PDO revision
• Each PDO revision maps to a set of interface versions
• XENVIF subscribes to interface
• Co-installer writes version to
HLKM/CurrentControlSet/Services/XENBUS/Interfaces/XENVIF/EVTCHN
• XENBUS maintains compatibility
• Change of interface version implies updated binding revision
• Subscribers don’t need to be concerned with older versions of
providers
• Co-installer checks subscribers and vetoes upgrade if interface
versions are not implemented
• Ensures subscribers are updated before providers
Available Interfaces
• XENFILT
• UNPLUG
• EMULATED
• XENBUS
• DEBUG
• SUSPEND
• SHARED_INFO
• EVTCHN
• STORE
• RANGE_SET
• CACHE
• GNTTAB
• XENVIF
• VIF
Building
• BUILD.md should tell you want you need to know
• Pre-requistes
• Visual Studio 2012 (NOT Express) or 2013 (Express OK)
• Windows 8 or 8.1 WDK
(See http://msdn.microsoft.com/en-us/windows/hardware/hh852365)
• Python 3.x
• Set environment
• KIT
• SYMBOL_SERVER
• build.py free|checked [nosdv]
• Latest development builds available for download:
(See http://www.xenproject.org/downloads/windows-pv-drivers/development-builds.html)
Usually C:Program FilesWindows Kits8.0
I use C:Symbols
Installing
• INSTALL.md should tell you want you need to know
• Driver build results in directory and tarball
• Copy to target (and unpack if necessary)
• Navigate to x86 or x64
• Either run dpinst.exe or use Device Manager
• Builds are test signed
• Install .pfx file to avoid scary warning
• Make sure testsigning is enabled on 64-bit systems
bcdedit /set testsigning on
Contributing
• See MAINTAINERS file
• Follow guidance at http://wiki.xen.org/wiki/Submitting_Xen_Patches
• Subscribe to mailing list win-pv-devel@lists.xenproject.org
(See http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel)
Q & A

More Related Content

PDF
DEXCS2022OF_Install.pdf
PPTX
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
PDF
JMeter入門
PDF
リアルタイムゲームサーバーの ベンチマークをとる方法
PPTX
Asma hafsi les_data_centers_en_tunisie
PDF
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
PPTX
20181112 SRE本輪読会#26_22章_カスケード障害
PPTX
ゲームインフラコンテナ実践導入
DEXCS2022OF_Install.pdf
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
JMeter入門
リアルタイムゲームサーバーの ベンチマークをとる方法
Asma hafsi les_data_centers_en_tunisie
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
20181112 SRE本輪読会#26_22章_カスケード障害
ゲームインフラコンテナ実践導入

What's hot (20)

PDF
Ansible-cours .pdf
PDF
ロードバランスへの長い道
PDF
신입 개발자 생활백서 [개정판]
PDF
Examen sybase - Administration base de donnees
PPSX
Animations tris
PDF
Guide pfsense
PDF
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
PPT
Implentation d'une solution Cloud IAAS
PDF
How to install DEXCS2024 for OpenFOAM on VirtualBox
PDF
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
PDF
Alphorm.com Formation Hacking et Sécurité, l'essentiel
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
PPTX
OVN 設定サンプル | OVN config example 2015/12/27
PDF
Openstack kolla 20171025 josug v3
PDF
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
PDF
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
PDF
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
PDF
TUIゲームを作った話
DOCX
PDF
123DEXCS2022.pdf
Ansible-cours .pdf
ロードバランスへの長い道
신입 개발자 생활백서 [개정판]
Examen sybase - Administration base de donnees
Animations tris
Guide pfsense
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
Implentation d'une solution Cloud IAAS
How to install DEXCS2024 for OpenFOAM on VirtualBox
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
Alphorm.com Formation Hacking et Sécurité, l'essentiel
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
OVN 設定サンプル | OVN config example 2015/12/27
Openstack kolla 20171025 josug v3
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
TUIゲームを作った話
123DEXCS2022.pdf
Ad

Viewers also liked (14)

PDF
The Linux Block Layer - Built for Fast Storage
PPT
Scsi express overview
PDF
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
PDF
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
PDF
LCEU13: Securing your cloud with Xen's advanced security features - George Du...
PDF
Ceph Day Beijing - SPDK for Ceph
PPTX
LinuxCon Japan 13 : 10 years of Xen and Beyond
PDF
OSCON16: Analysis of the Xen code review process: An example of software deve...
PDF
Virtualization Architecture & KVM
PDF
Xen and the art of embedded virtualization (ELC 2017)
PPTX
Xen Project Release and Roadmap Process (4.7+)
PDF
XPDS16: High-Performance Virtualization for HPC Cloud on Xen - Jun Nakajima &...
PDF
Hypervisors and Virtualization - VMware, Hyper-V, XenServer, and KVM
PPTX
virtualization and hypervisors
The Linux Block Layer - Built for Fast Storage
Scsi express overview
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
LCEU13: Securing your cloud with Xen's advanced security features - George Du...
Ceph Day Beijing - SPDK for Ceph
LinuxCon Japan 13 : 10 years of Xen and Beyond
OSCON16: Analysis of the Xen code review process: An example of software deve...
Virtualization Architecture & KVM
Xen and the art of embedded virtualization (ELC 2017)
Xen Project Release and Roadmap Process (4.7+)
XPDS16: High-Performance Virtualization for HPC Cloud on Xen - Jun Nakajima &...
Hypervisors and Virtualization - VMware, Hyper-V, XenServer, and KVM
virtualization and hypervisors
Ad

Similar to Xen Project: Windows PV Drivers (20)

PDF
Citrix certified administrator certification
PDF
Open Source Citrix Windows PV Drivers - Paul Durrant, Citrix
PPTX
Deploying Windows 7
PDF
OSSNA18: Xen Beginners Training
PDF
Implementing SR-IOv failover for Windows guests during live migration
PDF
Using oracle vm virtual box as your development platform
PPTX
Making IT Easier to Manage Your Virtualized Environment - David Babbitt, Spic...
PPTX
No BS, Vendor Neutral Comparison of Application Layering Solutions
PDF
RHEL5 XEN HandOnTraining_v0.4.pdf
PDF
Killer Docker Workflows for Development
PPTX
555 vnx unifiedimp_m05 windows host install & int block
PDF
2010 xen-lisa
PDF
Device virtualization and management in xen
PDF
Hacking with ARM Mobile devices on Linux
PPTX
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
PPTX
Deploying Windows Containers with Draft, Helm and Kubernetes
PDF
VMware vSphere 5.1 - Upgrade Tips & Top New Features
PDF
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
PDF
Virtual Deep-Dive: XenDesktop 7
PDF
Virtual deep dive-xendesktop_stephanpfister
Citrix certified administrator certification
Open Source Citrix Windows PV Drivers - Paul Durrant, Citrix
Deploying Windows 7
OSSNA18: Xen Beginners Training
Implementing SR-IOv failover for Windows guests during live migration
Using oracle vm virtual box as your development platform
Making IT Easier to Manage Your Virtualized Environment - David Babbitt, Spic...
No BS, Vendor Neutral Comparison of Application Layering Solutions
RHEL5 XEN HandOnTraining_v0.4.pdf
Killer Docker Workflows for Development
555 vnx unifiedimp_m05 windows host install & int block
2010 xen-lisa
Device virtualization and management in xen
Hacking with ARM Mobile devices on Linux
XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citri...
Deploying Windows Containers with Draft, Helm and Kubernetes
VMware vSphere 5.1 - Upgrade Tips & Top New Features
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Virtual Deep-Dive: XenDesktop 7
Virtual deep dive-xendesktop_stephanpfister

More from The Linux Foundation (20)

PDF
ELC2019: Static Partitioning Made Simple
PDF
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
PDF
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
PDF
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
PDF
XPDDS19 Keynote: Unikraft Weather Report
PDF
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
PDF
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
PDF
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
PDF
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
PPTX
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
PPTX
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
PDF
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
PDF
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
PDF
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
PDF
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
PDF
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
PDF
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
PDF
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
PDF
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
PDF
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
ELC2019: Static Partitioning Made Simple
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPT
Teaching material agriculture food technology
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Encapsulation theory and applications.pdf
PDF
Approach and Philosophy of On baking technology
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Big Data Technologies - Introduction.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Teaching material agriculture food technology
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
20250228 LYD VKU AI Blended-Learning.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Empathic Computing: Creating Shared Understanding
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Unlocking AI with Model Context Protocol (MCP)
Encapsulation theory and applications.pdf
Approach and Philosophy of On baking technology
“AI and Expert System Decision Support & Business Intelligence Systems”
Digital-Transformation-Roadmap-for-Companies.pptx
Programs and apps: productivity, graphics, security and other tools
Spectral efficient network and resource selection model in 5G networks
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Big Data Technologies - Introduction.pptx

Xen Project: Windows PV Drivers

  • 1. Xen Project Windows PV Drivers Paul Durrant Project Lead
  • 2. Agenda • Background • Origin of the drivers • Legacy, Standard and XenProject drivers • Driver interfaces • Discovery • Compatibility • Building and Installing drivers • Tools
  • 3. Terminology PDO FDO FDO PACKAGE (INF FILE) PACKAGE local/domain/device/vif This is a Function Device Object, created when a driver binds to a Physical Device Object. The INF file states the ‘names’ it will bind to. This is a Physical Device Object, created by a bus driver. The ‘name’ of this device is used by Windows to select a driver. This is a xenstore key that is used by a PV bus driver to create a PDO. This is an FDO created by a child PV driver that binds to the PDO representing the xenstore key. FiltDO This is a Filter Device Object. They can be used to interpose on Plug’n’Play, Power or IO messages flowing between PDOs and FDOs.
  • 4. Legacy Drivers • Used for all versions of Windows in Citrix XenServer 6.0 • Used only for Windows XP and Server 2003 from XenServer 6.1 • Closed source • Code of unknown origin made open source difficult
  • 5. Legacy Drivers ROOTXENEVTCHN PCIVEN_5853&DEV_0001 XENVBDXENEVTCHN DISK XENVIF XENNET XENUTIL XENVBDXEVTCHN XENVIF XENNET local/domain/device/vif local/domain/device/vif/0 XENNET XENNET local/domain/device/vif/1 local/domain/device/vbd/768 DISK local/domain/device/vbd/832 SCSIFILT SCSIFILT …… Created by installer Emulated by QEMU Standard in-box driver Linkage dependency • XENIFACE omitted for simplicity
  • 6. Legacy Drivers Problems: • SCSIFILT makes storage stack complicated • Cross-package linkage dependencies make upgrade very tricky • Binary incompatibility can lead to hard-to-diagnose BSODs • Two root nodes make load order unpredictable and initialization of PV interfaces very fragile • Use of synthetic root node requires an installer • Windows Update cannot be used to deploy “But Windows Update would be very useful for large installations or upgrades so that’s a pain. What can we do?”
  • 7. Standard Drivers • Used for versions of Windows from Vista onwards from XenServer 6.1 • Built using Windows 8 WDK and Visual Studio 2012 • Necessary for supporting Windows 8 onwards • Anticipated to become open source • All code of unknown origin was removed
  • 9. Standard Drivers Advantages: • STORPORT instead of SCSIPORT • No need for SCSIFILT • Independent packages • No binary compatibility issues • No installation ordering issues • Just PCI root node • Windows Update now possible
  • 10. Standard Drivers Problems: • New Device ID • Conceived to allow Windows Update deployment, but… • Caused big problems in XenServer 6.1 • Not acceptable to upstream community (e.g. Amazon) • Compatibility checks don’t behave well • Still an assumption that drivers will be installed or upgraded together
  • 11. Xen Project Drivers • XenServer went fully open source in 2013 • Desire for Windows PV drivers to become even more open • Drivers already functioning on most Xen installations • Amazon already building from source • Windows PV Drivers sub-project ratified in June 2014 • Front page accessible from http://www.xenproject.org • Source repositories at http://xenbits.xenproject.org • Project lead: Paul Durrant • Committers: Paul Durrant, Ben Chalmers and Owen Smith
  • 12. Xen Project Drivers • Plan to use for all versions of Windows from XenServer vNext • Windows 2003 goes out of support in May 2015 • Built using Windows 8 WDK and Visual Studio 2012 • Cannot move to 8.1 WDK as Windows 7 is not supported • Source is buildable with 8.1 WDK and Visual Studio 2013 • Remaining problems from Standard Drivers addressed
  • 14. Flexible Device ID PCIVEN_5853&DEV_0001 PCIVEN_5853&DEV_0002 PCIVEN_5853&DEV_C000 You should have one of these You may have one of these • XENBUS binds to any of these • Co-installer selects ‘active’ device • Will only select if there’s no current selection • Only active device has children • Child PDO name carries device ID • XenServer has reserved C000 for Windows Update
  • 15. Interface Discovery • IRP_MN_QUERY_INTERFACE message • Identifies interface by GUID • Gets back jump table and context DRIVER3 DRIVER3 DRIVER3 • Message may be forwarded to parent if interface not implemented • Client doesn’t care where the interface is implemented • Allows interfaces to be exported by XENFILT • Unplug
  • 16. Interface Discovery Example XENBUS XENVIF • XENVIF codebase imports evtchn_interface.h from XENBUS • XENVIF allocates a XENBUS_EVTCHN_INTERFACE structure and passes it to XENBUS in IRP_MN_QUERY_INTERFACE message • Always requests XENBUS_EVTCHN_INTERFACE_VERSION_MAX IRP_MN_QUERY_INTERFACE
  • 17. Interface Discovery Example XENBUS XENVIF • XENBUS fills in structure with requested interface version • XENBUS completes IRP • XENVIF calls XENBUS_EVTCHN(Acquire, …) • Acquisition not implicit in query • References must be dropped across S4 transition (Hibernate) • IRP_MN_QUERY_INTERFACE must be issued at PASSIVE_LEVEL XENBUS_EVTCHN_INTERFACE
  • 18. Interface Discovery Example Compatibility: • XENVIF binds to a particular PDO revision • Each PDO revision maps to a set of interface versions • XENVIF subscribes to interface • Co-installer writes version to HLKM/CurrentControlSet/Services/XENBUS/Interfaces/XENVIF/EVTCHN • XENBUS maintains compatibility • Change of interface version implies updated binding revision • Subscribers don’t need to be concerned with older versions of providers • Co-installer checks subscribers and vetoes upgrade if interface versions are not implemented • Ensures subscribers are updated before providers
  • 19. Available Interfaces • XENFILT • UNPLUG • EMULATED • XENBUS • DEBUG • SUSPEND • SHARED_INFO • EVTCHN • STORE • RANGE_SET • CACHE • GNTTAB • XENVIF • VIF
  • 20. Building • BUILD.md should tell you want you need to know • Pre-requistes • Visual Studio 2012 (NOT Express) or 2013 (Express OK) • Windows 8 or 8.1 WDK (See http://msdn.microsoft.com/en-us/windows/hardware/hh852365) • Python 3.x • Set environment • KIT • SYMBOL_SERVER • build.py free|checked [nosdv] • Latest development builds available for download: (See http://www.xenproject.org/downloads/windows-pv-drivers/development-builds.html) Usually C:Program FilesWindows Kits8.0 I use C:Symbols
  • 21. Installing • INSTALL.md should tell you want you need to know • Driver build results in directory and tarball • Copy to target (and unpack if necessary) • Navigate to x86 or x64 • Either run dpinst.exe or use Device Manager • Builds are test signed • Install .pfx file to avoid scary warning • Make sure testsigning is enabled on 64-bit systems bcdedit /set testsigning on
  • 22. Contributing • See MAINTAINERS file • Follow guidance at http://wiki.xen.org/wiki/Submitting_Xen_Patches • Subscribe to mailing list win-pv-devel@lists.xenproject.org (See http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel)
  • 23. Q & A