SlideShare a Scribd company logo
Windows PV Drivers:
Status and Updates
Paul Durrant,
Senior Principal Software Engineer,
Citrix Systems R&D
1
History:
Citrix XenServer PV
Drivers
2
● Closed source drivers specifically for XenServer
○ Assumptions and custom hacks
3
XenServer Legacy PV Drivers
● Closed source drivers specifically for XenServer
○ Assumptions and custom hacks
● Lots of interdependencies
○ Direct function calls between modules
4
XenServer Legacy PV Drivers
● Closed source drivers specifically for XenServer
○ Assumptions and custom hacks
● Lots of interdependencies
○ Direct function calls between modules
● Installed together via an NSIS[1] installer
5
XenServer Legacy PV Drivers
[1] See https://sourceforge.net/projects/nsis
● Closed source drivers specifically for XenServer
○ Assumptions and custom hacks
● Lots of interdependencies
○ Direct function calls between modules
● Installed together via an NSIS[1] installer
● Used prior to XenServer 7.0
6
XenServer Legacy PV Drivers
[1] See https://sourceforge.net/projects/nsis
7
New XenServer PV Drivers
● Most drivers completely re-written
○ No assumptions or custom hacks
8
New XenServer PV Drivers
● Most drivers completely re-written
○ No assumptions or custom hacks
● Interdependencies removed or controlled
○ No direct function calls
○ Use interfaces
9
New XenServer PV Drivers
● Most drivers completely re-written
○ No assumptions or custom hacks
● Interdependencies removed or controlled
○ No direct function calls
○ Use interfaces
● Can be separately installed
○ Available on Windows Update
10
New XenServer PV Drivers
● Most drivers completely re-written
○ No assumptions or custom hacks
● Interdependencies removed or controlled
○ No direct function calls
○ Use interfaces
● Can be separately installed
○ Available on Windows Update
● Open source
○ Adopted by Xen Project
11
New XenServer PV Drivers
URLs
● Project Front Page: https://www.xenproject.org/developers/teams/windows-pv-drivers.html
● Driver Repositories: http://xenbits.xen.org/gitweb/?a=project_list;pf=pvdrivers
● Driver Binaries: http://xenbits.xen.org/pvdrivers/win
● Mailing List: win-pv-devel@lists.xenproject.org
Background:
Windows Device
Drivers
13
Background: Device Objects
PDO
Physical Device Object
Background: Device Objects
PDO
Physical Device Object
FDO Function Device Object
Background: Device Objects
PDO
Physical Device Object
FDO Function Device Object
FiltDO
Filter Device Object
Background: Device Driver Hierarchy
Bus Driver
Background: Device Driver Hierarchy
Function Driver
Background: Device Driver Hierarchy
Function Driver
Function driver FDO binds
to bus driver PDO
Background: Device Driver Hierarchy
BAR
FOO
DRV.SYS
DRV.INF
[Inst.NT$ARCH$]
Name = Tag, FOOBAR
[Tag]
; Installation details
Function driver binds
to PDO by name
Binding is controlled
by driver INF file
Background: Device Driver Hierarchy
Filter Driver
Background: Device Driver Hierarchy
Filter Driver
Interposes on IRP
communication
Background: Device Driver Hierarchy
Filter Driver
Insertion controlled
by registry
Background: Device Driver Hierarchy
Function drivers can
also be bus drivers
Architecture:
Core Windows PV
Drivers
25
Core PV Driver Hierarchy
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
Core PV Driver Hierarchy
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
Main PV bus
infrastructure
Core PV Driver Hierarchy
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
PV network subsystem
Core PV Driver Hierarchy
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
PV storage
subsystem
Core PV Driver Hierarchy
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
Xen Platform or Xen
PV PCI device
Core PV Driver Hierarchy
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
PCI Class filter
Core PV Driver Hierarchy
Core Xen
interface
XEN.SYS
XENFILT.SYS
XENBUS.SYS
XENVIF.SYS
XENVBD.SYS
XENNET.SYS
Core PV Driver Packaging
XENBUS.INF
XENVBD.INFXENVIF.INF
XENNET.INF
Core PV Driver Packaging
XENBUS.INF
XENVBD.INFXENVIF.INF
XENNET.INF
No direct
function calls
Architecture:
Windows PV Driver
Interfaces
35
Interface Negotiation
IRP_MN_QUERY_INTERFACE
Subscriber
specifies interface
GUID and version
Provider
Subscriber
Interface Negotiation
IRP_MN_QUERY_INTERFACE
Provider hands back a
table containing
methods and contextContext
Method 1
Method 2
Interface Negotiation
Acquire and Release are
present in all interfaces for
reference counting purposes
Context
Acquire
Release
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
39
Driver Interface Examples
● XENVIF
○ VIF
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
40
Driver Interface Examples
Drivers can register a function to be called
when Xen debug-key ‘q’ is pressed
● XENVIF
○ VIF
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
41
Driver Interface Examples
Drivers can register a function to be called
when Xen debug-key ‘q’ is pressed
Drivers can register functions to be
called on resume from suspend
● XENVIF
○ VIF
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
42
Driver Interface Examples
Drivers can register a function to be called
when Xen debug-key ‘q’ is pressed
Drivers can register functions to be
called on resume from suspend
These are self explanatory
● XENVIF
○ VIF
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
43
Driver Interface Examples
Drivers can register a function to be called
when Xen debug-key ‘q’ is pressed
Drivers can register functions to be
called on resume from suspend
These are self explanatory
● XENVIF
○ VIF
Useful for managing resource allocation
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
44
Driver Interface Examples
Drivers can register a function to be called
when Xen debug-key ‘q’ is pressed
Drivers can register functions to be
called on resume from suspend
These are self explanatory
● XENVIF
○ VIF
Useful for managing resource allocation
Pseudo slab allocator
● XENBUS
○ DEBUG
○ SUSPEND
○ EVTCHN
○ GNTTAB
○ STORE
○ RANGE_SET
○ CACHE
45
Driver Interface Examples
Drivers can register a function to be called
when Xen debug-key ‘q’ is pressed
Drivers can register functions to be
called on resume from suspend
These are self explanatory
● XENVIF
○ VIF
Useful for managing resource allocation
Pseudo slab allocator
Implementation of Xen netif
protocol
Interface Compatibility
IRP_MN_QUERY_INTERFACE
GUID = DEBUG
Version = X
Interface Compatibility
IRP_MN_QUERY_INTERFACE
GUID = DEBUG
Version = X
DEBUG code only
implements version Y
Interface Compatibility
IRP_MN_QUERY_INTERFACE
GUID = DEBUG
Version = X
STATUS_NOT_SUPPORTED
DEBUG code only
implements version Y
Interface Compatibility
IRP_MN_QUERY_INTERFACE
GUID = DEBUG
Version = X
STATUS_NOT_SUPPORTED
Need to stop this from
happening
DEBUG code only
implements version Y
Interface Compatibility
BAR
● Provider implementations
should be compatible with
older versions of interfaces
FOO
Interface Compatibility
BAR
● Provider implementations
should be compatible with
older versions of interfaces
● For each new version,
modify the PDO binding
name
FOO
Version X FOOBAR_1
Version Y FOOBAR_2
Interface Compatibility
BAR
● Provider implementations
should be compatible with
older versions of interfaces
● For each new version,
modify the PDO binding
name
FOO
Version X FOOBAR_1
Version Y FOOBAR_2
[Inst.NT$ARCH$]
Name = Tag, FOOBAR_1
● Subscriber chooses the
corresponding binding
name
Interface Compatibility
Upgrade Provider
Upgrade Subscriber
Interface Compatibility
Upgrade Provider
Providers backwards
compatible with older
subscribers
Upgrade Subscriber
Interface Compatibility
Upgrade Provider
Providers backwards
compatible with older
subscribers
Upgrade Subscriber
Won’t displace older
subscriber until new
provider binding is
available
Project Status
56
57
We graduated!
58
New stable release tagged,
built, and signed
New HID drivers
Previously, when you
commented these lines
out of your xl.cfg...
This is what
you get ...
Problem
solved!
New console driver
Means we can
now do this...
Q&A
65

More Related Content

What's hot

Ee424 fading
Ee424 fadingEe424 fading
Ee424 fading
Shraddha Bansal
 
LiFi in streetlights
LiFi in streetlightsLiFi in streetlights
LiFi in streetlights
Nikhil Kuriakose
 
TDMA, FDMA, CDMA
TDMA, FDMA, CDMATDMA, FDMA, CDMA
TDMA, FDMA, CDMA
Keerthana Nambiar
 
Intoduction to TinyOS, nesC and TOSSIM
Intoduction to TinyOS, nesC and TOSSIMIntoduction to TinyOS, nesC and TOSSIM
Intoduction to TinyOS, nesC and TOSSIM
Prakhar Bansal
 
Infrared technology
Infrared technologyInfrared technology
Infrared technologyNaveen Sihag
 
Wireless local area netwok slide
Wireless local area netwok slideWireless local area netwok slide
Wireless local area netwok slide
Fʑɭ Rɘʜɱʌŋ
 
Open ROADM Design and Technical Scope
Open ROADM Design and Technical ScopeOpen ROADM Design and Technical Scope
Open ROADM Design and Technical Scope
kinsleyaniston
 
Modulation Techniques for Mobile Radio
Modulation Techniques for Mobile RadioModulation Techniques for Mobile Radio
Modulation Techniques for Mobile Radio
METHODIST COLLEGE OF ENGG & TECH
 
Spectrum Management (ETE 521 L7)
Spectrum Management (ETE 521 L7)Spectrum Management (ETE 521 L7)
Spectrum Management (ETE 521 L7)Nazirul Islam Zico
 
GEPON Presentation
GEPON  PresentationGEPON  Presentation
GEPON Presentation
juanhev
 
CDMA
CDMACDMA
Introduction to Digital Signal Processing Using GNU Radio
Introduction to Digital Signal Processing Using GNU RadioIntroduction to Digital Signal Processing Using GNU Radio
Introduction to Digital Signal Processing Using GNU RadioAlbert Huang
 
GSM Bands and Frame Structure
GSM Bands and Frame StructureGSM Bands and Frame Structure
GSM Bands and Frame Structure
Dr. Ramchandra Mangrulkar
 
Gsm architecture
Gsm architectureGsm architecture
Gsm architecture
Prabhat gangwar
 
Wireless LAN security
Wireless LAN securityWireless LAN security
Wireless LAN securityRajan Kumar
 
Microwave link budget
Microwave link budgetMicrowave link budget
Microwave link budget
Akram AL-khazaliy
 
4G/5G RAN architecture: how a split can make the difference
4G/5G RAN architecture: how a split can make the difference4G/5G RAN architecture: how a split can make the difference
4G/5G RAN architecture: how a split can make the difference
Ericsson
 
Channel estimation - F. Ling
Channel estimation - F. LingChannel estimation - F. Ling
Channel estimation - F. LingFuyun Ling
 
Presentation slides wp on 5 g channel model updated-v1_20151217
Presentation slides   wp on 5 g channel model updated-v1_20151217Presentation slides   wp on 5 g channel model updated-v1_20151217
Presentation slides wp on 5 g channel model updated-v1_20151217
Ganesh Miriyala
 

What's hot (20)

Ee424 fading
Ee424 fadingEe424 fading
Ee424 fading
 
LiFi in streetlights
LiFi in streetlightsLiFi in streetlights
LiFi in streetlights
 
TDMA, FDMA, CDMA
TDMA, FDMA, CDMATDMA, FDMA, CDMA
TDMA, FDMA, CDMA
 
Channel impairments
Channel impairmentsChannel impairments
Channel impairments
 
Intoduction to TinyOS, nesC and TOSSIM
Intoduction to TinyOS, nesC and TOSSIMIntoduction to TinyOS, nesC and TOSSIM
Intoduction to TinyOS, nesC and TOSSIM
 
Infrared technology
Infrared technologyInfrared technology
Infrared technology
 
Wireless local area netwok slide
Wireless local area netwok slideWireless local area netwok slide
Wireless local area netwok slide
 
Open ROADM Design and Technical Scope
Open ROADM Design and Technical ScopeOpen ROADM Design and Technical Scope
Open ROADM Design and Technical Scope
 
Modulation Techniques for Mobile Radio
Modulation Techniques for Mobile RadioModulation Techniques for Mobile Radio
Modulation Techniques for Mobile Radio
 
Spectrum Management (ETE 521 L7)
Spectrum Management (ETE 521 L7)Spectrum Management (ETE 521 L7)
Spectrum Management (ETE 521 L7)
 
GEPON Presentation
GEPON  PresentationGEPON  Presentation
GEPON Presentation
 
CDMA
CDMACDMA
CDMA
 
Introduction to Digital Signal Processing Using GNU Radio
Introduction to Digital Signal Processing Using GNU RadioIntroduction to Digital Signal Processing Using GNU Radio
Introduction to Digital Signal Processing Using GNU Radio
 
GSM Bands and Frame Structure
GSM Bands and Frame StructureGSM Bands and Frame Structure
GSM Bands and Frame Structure
 
Gsm architecture
Gsm architectureGsm architecture
Gsm architecture
 
Wireless LAN security
Wireless LAN securityWireless LAN security
Wireless LAN security
 
Microwave link budget
Microwave link budgetMicrowave link budget
Microwave link budget
 
4G/5G RAN architecture: how a split can make the difference
4G/5G RAN architecture: how a split can make the difference4G/5G RAN architecture: how a split can make the difference
4G/5G RAN architecture: how a split can make the difference
 
Channel estimation - F. Ling
Channel estimation - F. LingChannel estimation - F. Ling
Channel estimation - F. Ling
 
Presentation slides wp on 5 g channel model updated-v1_20151217
Presentation slides   wp on 5 g channel model updated-v1_20151217Presentation slides   wp on 5 g channel model updated-v1_20151217
Presentation slides wp on 5 g channel model updated-v1_20151217
 

Similar to XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citrix Systems

Citrix certified administrator certification
Citrix certified administrator certificationCitrix certified administrator certification
Citrix certified administrator certification
Cisco-642-902
 
Open Source Citrix Windows PV Drivers - Paul Durrant, Citrix
Open Source Citrix Windows PV Drivers - Paul Durrant, CitrixOpen Source Citrix Windows PV Drivers - Paul Durrant, Citrix
Open Source Citrix Windows PV Drivers - Paul Durrant, Citrix
The Linux Foundation
 
Xen Project: Windows PV Drivers
Xen Project: Windows PV DriversXen Project: Windows PV Drivers
Xen Project: Windows PV Drivers
The Linux Foundation
 
R12.2 dba
R12.2 dbaR12.2 dba
R12.2 dba
ansalapi
 
Opendj - A LDAP Server for dummies
Opendj - A LDAP Server for dummiesOpendj - A LDAP Server for dummies
Opendj - A LDAP Server for dummies
Claudio Borges
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the Cloud
Salesforce Developers
 
10 Things I Hate About You - Taming Windows w/Ansible
10 Things I Hate About You - Taming Windows w/Ansible10 Things I Hate About You - Taming Windows w/Ansible
10 Things I Hate About You - Taming Windows w/Ansible
Chocolatey Software
 
Ranger admin dev overview
Ranger admin dev overviewRanger admin dev overview
Ranger admin dev overviewTushar Dudhatra
 
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253Sachin Jaypatre
 
Oracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linuxOracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linux
Venu Palakolanu
 
Juniper SRX Quickstart 12.1R3 by Thomas Schmidt
Juniper SRX Quickstart 12.1R3 by Thomas SchmidtJuniper SRX Quickstart 12.1R3 by Thomas Schmidt
Juniper SRX Quickstart 12.1R3 by Thomas Schmidt
Nam Nguyen
 
Percona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ MumbaiPercona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ Mumbai
Nilnandan Joshi
 
NGINX ADC: Basics and Best Practices
NGINX ADC: Basics and Best PracticesNGINX ADC: Basics and Best Practices
NGINX ADC: Basics and Best Practices
NGINX, Inc.
 
NGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEANGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEA
NGINX, Inc.
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
Kynetics
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
NicolaLaGloria
 
OSSNA18: Xen Beginners Training
OSSNA18: Xen Beginners Training OSSNA18: Xen Beginners Training
OSSNA18: Xen Beginners Training
The Linux Foundation
 
Continuous delivery with docker
Continuous delivery with dockerContinuous delivery with docker
Continuous delivery with docker
Johan Janssen
 

Similar to XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citrix Systems (20)

Citrix certified administrator certification
Citrix certified administrator certificationCitrix certified administrator certification
Citrix certified administrator certification
 
Open Source Citrix Windows PV Drivers - Paul Durrant, Citrix
Open Source Citrix Windows PV Drivers - Paul Durrant, CitrixOpen Source Citrix Windows PV Drivers - Paul Durrant, Citrix
Open Source Citrix Windows PV Drivers - Paul Durrant, Citrix
 
Xen Project: Windows PV Drivers
Xen Project: Windows PV DriversXen Project: Windows PV Drivers
Xen Project: Windows PV Drivers
 
R12.2 dba
R12.2 dbaR12.2 dba
R12.2 dba
 
Opendj - A LDAP Server for dummies
Opendj - A LDAP Server for dummiesOpendj - A LDAP Server for dummies
Opendj - A LDAP Server for dummies
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the Cloud
 
10 Things I Hate About You - Taming Windows w/Ansible
10 Things I Hate About You - Taming Windows w/Ansible10 Things I Hate About You - Taming Windows w/Ansible
10 Things I Hate About You - Taming Windows w/Ansible
 
Ranger admin dev overview
Ranger admin dev overviewRanger admin dev overview
Ranger admin dev overview
 
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
Zenoss core beta_installation_guide_r5.0.0b2_d99.14.253
 
Oracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linuxOracle forms and reports 11g installation on linux
Oracle forms and reports 11g installation on linux
 
Juniper SRX Quickstart 12.1R3 by Thomas Schmidt
Juniper SRX Quickstart 12.1R3 by Thomas SchmidtJuniper SRX Quickstart 12.1R3 by Thomas Schmidt
Juniper SRX Quickstart 12.1R3 by Thomas Schmidt
 
Percona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ MumbaiPercona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ Mumbai
 
NGINX ADC: Basics and Best Practices
NGINX ADC: Basics and Best PracticesNGINX ADC: Basics and Best Practices
NGINX ADC: Basics and Best Practices
 
Rac on NFS
Rac on NFSRac on NFS
Rac on NFS
 
NGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEANGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEA
 
PHP selber bauen
PHP selber bauenPHP selber bauen
PHP selber bauen
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
 
OSSNA18: Xen Beginners Training
OSSNA18: Xen Beginners Training OSSNA18: Xen Beginners Training
OSSNA18: Xen Beginners Training
 
Continuous delivery with docker
Continuous delivery with dockerContinuous delivery with docker
Continuous delivery with docker
 

More from The Linux Foundation

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

More from The Linux Foundation (20)

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

Recently uploaded

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 

Recently uploaded (20)

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 

XPDDS18: Windows PV Drivers Project: Status and Updates - Paul Durrant, Citrix Systems

Editor's Notes

  1. Hi. My name is Paul Durrant. I’m a Senior Principal Software Engineer in the XenServer group at Citrix Systems R&D, based in Cambridge UK. I’ve been a contributor to the Xen Project for many years now. I’m community lead for the Windows PV Drivers but I also contribute to Linux, QEMU and the hypervisor itself. Today I’m going to talk about the PV drivers, their history, their architecture and the current status of the project.
  2. So, first some history… The Xen Project PV drivers ancestry lies in the PV drivers that were written to support the Citrix XenServer product (lately rebranded Citrix Hypervisor)
  3. These drivers were closed source Citrix proprietary drivers to support only XenServer. They contained assumptions about their environment that were only true for VMs running on XenServer, and they also relied on custom hacks in the hypervisor and QEMU.
  4. There were lots of non-obvious interdependencies between drivers. Some drivers event made direct function calls to code supplied by other drivers, which was the cause of many blue screens during driver updates (where it was easy for binary incompatibilities to creep in).
  5. So, to mitigate against incompatibilities all the drivers were remove or installed together as a single unit via an NSIS installer. So this meant, for instance, that a relatively trivial fix to a nework driver would require re-installation of the storage driver… And because the storage driver is responsible for the system disk then a reboot would be needed… This was not popular.
  6. These drivers were used for all versons of XenServer prior to 7.0, at which point...
  7. We switched over to a new set of drivers…
  8. We got rid of all the assumptions and dependencies on custom hacks, which improved compatibility across different versions of XenServer and also meant that drivers worked on upstream Xen installations… Which helped development a lot, since we could easily develop and test against e.g. new PV backends in upstream versions of Linux, or new hypervisor features (such as per-vcpu event channel interrupts).
  9. All the direct inter-module function calls were removed and, where necessary, replaced with something we called interfaces which I’ll talk about later
  10. And because the direct function calls are gone, the drivers no longer need to be removed or installed as a unit... They can be installed independently, in any order, using standard mechanisms (via device manager if you like) and that means… We could post them on Windows Update, so no need to manually install if you don’t want to.
  11. And they are all open source. So, because they are no longer tied to XenServer by custom hacks or assumptions, they have now been adopted by the Xen Project as the official Windows PV drivers.
  12. These are the relevant URLs where you can get information about the project. You can download the code and build it yourself (using VS2015 or VS2017 for the master branches)... Or you can get the binaries that are built by our public build infrastructure (which are currently built with VS2015)... You can also find Linux Foundation signed releases built from the stable branch on the project front page too.
  13. Now I’ll go on to describe the architecture of the drivers… But before I can do that I need to give those of you who are not experienced Windows driver developers a quick tutorial...
  14. Windows drivers deal with device objects, but there are several types of these... The first is the Physical Device Object (or PDO) and this essentially represents a piece of hardware i.e. a node in the machine’s bus topology… I’ll colour these pink like so.
  15. The next type is the Function Device Object (or FDO)… I’ll colour these blue...
  16. ...And the last type is the Filter Device Object, which are not called FDOs… They are generally shortened to FiltDO and I’ll colour these green. Now let’s look are how FDOs and FiltDOs relate to PDOs...
  17. Windows objects form a hierarchy and the crucial entity in that hierarchy is a Bus Driver… This is a driver that creates FDOs and PDOs. Let’s ignore the FDO for the moment and consider just the PDOs... As I said, PDOs generally relate to nodes and machines bus topology so a Bus Driver is typically enumerating some layer in that topology and creating a PDO for everything it finds.
  18. Now there are some PDOs we can look at what an FDO is… FDOs are created by Function Drivers...
  19. And a function driver creates an FDO in response to being told about a PDO by the Windows PnP subsystem… This is called binding But how does Windows know which function driver to tell about which PDO?
  20. Well PDOs have names which are determined by the bus driver that created them… And function drivers have a companion file as part of their package, called an INF file… And that INF file contains information about the names of the PDOs to which the function driver can bind… So when the function driver is installed into Windows, the PnP subsystem uses the information in the INF file to figure out which PDOs to tell it about. But what about FiltDOs?
  21. Well, FiltDOs are created by Filter Drivers and they logically sit between FDOs and PDOs...
  22. And they get to interpose on the communications between and FDO and the PDO to which it is bound… This communication is in the form of messages, called I/O Request Packets or IRPs and a FiltDO can create new IRPs to send to the PDO, completely block IRPs from the FDO, or make modifications to them as they pass. But how does Windows decide which filter drivers to put into the hierarchy?
  23. Well, insertion of filters is managed by certain registry keys and they can be specified to interpose on PDOs with certain names, or a certain class.., For example, you can set up registry keys to load a filter on top of every PDO created the main PCI bus driver… and indeed, we’ll see in a bit, this is exactly what one of the PV driver packages does.
  24. Now, the last thing to note is that the reason that top level bus driver had an FDO is that bus drivers are also function drivers… So the driver hierarchy in Windows grows tree-fashion… The top level bus driver (which doesn’t actually bind to a real PDO itself) creates its own PDOs, then a bus driver is loaded (because of its INF file) and binds an FDO… The it creates its own PDOs, and then another bus driver may loaded… or maybe just a plain function driver this time… And so it goes on.
  25. Now let’s look at a concrete exmaple… the core PV drivers… By core, I mean the drivers involved in providing the PV network and storage data paths...
  26. This is their hierarchy…
  27. We have the main bus infrastructure here, which enumerates its PDOs from the various PV device classes it finds in xenstore...
  28. Here we have the PV network drivers… XENVIF creates a PDO for every vif node it finds in xenstore… And then XENNET is an NDIS (network) miniport driver that binds to those PDOs.
  29. And over here we have the PV storage driver… XENVBD creates a PDO for every vbd node it finds in xenstore… There’s no function driver in this case, because Windows supplies its own generic function driver called DISK.SYS. All XENVBD has to do is create PDOs with the right names for that driver to bind.
  30. The hierarchy is all rooted on a PCI device that is synthesized by QEMU. The XENBUS driver there in the middle can bind to a couple of different PCI PDOs.... They both have a Vendor ID registered to the Xen Project, but one has device id 0x0001 (or 0x0002 for XenServer… for historical reasons) and the other has device id 0xC000… The 0xC000 device is the magic one you need if you want to get drivers from Windows Update…
  31. You’ll also notice that between XENBUS’s FDO and the PCI PDO there is a FiltDO created by XENFILT. XENFILT is actually installed as a class filter, and so it actually creates a FiltDO for Core Xen interface every PCI PDO in the system… And one of the reasons this we do this is so that we can find out about what emulated network and storage devices are present in the system
  32. Actually there’s one more driver… and it has no objects at all! Windows also has a special type of driver that is neither a bus driver, nor a function driver, and it’s called an export driver. It’s basically just a DLL for the kernel, and indeed it’s init hook is called DllInitialize() rather than DriverEntry(). And the purpose of this driver, as you might guess from the name, is to be the interface to Xen… It owns the hypercall page and contains all the hypercall stubs. It’s also the only driver into which other drivers make direct function calls, XENBUS and XENFILT in this case… but that is ok because...
  33. As we can see from this diagram, the XEN driver is controlled by the same INF file as XENBUS and XENFILT, and so all three are always installed together as a unit...
  34. What would not be ok, as I mentioned in the history section, is a direct call like this… Because it’s to easy for binary compatibility issues to creep when doing driver updates… In this example, any change in the XEN driver’s implementation could cause XENVIF to call the wrong thing, or worse, pass the wrong number of arguments and mess up the stack. But we want XENVIF to be able to interact with XEN, for things like event channels and grant tables, so how are we going to allow this?
  35. Well that’s where interfaces come in… I mentioned them before but now I’ll go into some detail...
  36. Happily Windows specifies a type of IRP to use in this kind of thing, so we use that… When a subscriber wants to access an interface then it sends the QUERY_INTERFACE IRP to the provider specifying the ID of the interface (Windows uses GUIDs for this kind of thing) and the version of the interface it knows about.
  37. The provider then hands back a table to the subscriber with a set of methods it can call, and a private context pointer to pass to each of the methods (which it may need to disambiguate between multiple subscribers).
  38. All of the PV driver interfaces implement these two methods… Acquire() and Release() These are to track actual use of interfaces by subscribers and in most cases the first call to Acquire() will cause the interface implementation’s internal state to be initialized… And similarly the last call to Release() will tear down that state. Note that the jump table is valid regardless of calls Acquire() or Release()... The implementation can’t be unloaded because of the parent/child relationship of the drivers in Windows’ device object hierarchy. The reason for the methods is that the internal state of all interfaces must be torn down before the system state can transition out of S0, so all the drivers have power management code that makes sure they clean up during a system sleep or hibernate.... And the reason for that is that the OS instance may resume in a new domain (certainly this is true of hibernate) and so all the interfaces that talk to the hypervisor must start from scratch.
  39. So here’s a list of some of the interfaces that the PV drivers provide… This list is not exhaustive but let’s go through it...
  40. The XENBUS DEBUG interface at the top is pretty simple. It just allows other drivers to register a callback that will be invoked (at interrupt level) when the Xen debug key ‘q’ is pressed… either on the serial console or by issuing an xl debug-keys command.
  41. Next, there’s the SUSPEND interface. Drivers use this to register callbacks the are invoked early or late in a resume from suspend (which may be a restore or a migrate-in). Early callbacks are invoked with interrupts disabled. Late callbacks are invoked with interrupts (i.e. events) enabled. All callbacks are invoked whilst the system has all CPUs, other than the one handling the resume, spinning in a tight loop to make sure everything is set up before arbitrary system code can run.
  42. Then there are EVTCHN, GNTTAB and STORE… and you can probably guess what they do.
  43. Then there’s RANGE_SET which is a set of methods for allocating and freeing ranges of numbers. This can be useful in resource management and indeed the GNTTAB code uses this interface internally for managing grant references.
  44. Then there’s the CACHE interface which provides a pseudo slab allocator. I say pseudo because it doesn’t actually allocate slabs, it just uses non-paged pool, but it implements the object constructor/destructor primitives and these are heavily used by XENVIF.
  45. And then lastly we have the one interface that XENVIF provides… The VIF interface is basically a complete implementation of the Xen netif protocol and this underpins the operation of XENNET… That means XENNET is actually a pretty small driver. All it has to do is marshal network packets between the VIF interface and the NDIS stack. The majority of the code in the PV network subsystem is actually in XENVIF.
  46. Now, the main reason we want to use interfaces is to avoid those direct function calls which make driver updates unsafe… But how do we make driver updates safe when interface versions might need to change… say when we add a feature... Well let’s look at what might go wrong… Say we update the provider, but the subscriber is still an older version… It now looks for DEBUG interface version X
  47. But we’ve updated the implementation of the DEBUG interface to version Y...
  48. So, now the subscriber can’t access the functionality it needs...
  49. We really want to avoid this happening… In certain circumstances, say where the subscriber is XENVBD and it’s providing the OS system disk, an interface negotiation failure like this might lead to a blue screen and a non-bootable VM.
  50. So there are some rules that providers and subscribers need to follow… The first for providers is that interface implementations should be compatible with older versions… Just because we add a feature to an implementation doesn’t mean we can’t support older subscribers that don’t know about that feature...
  51. The next is a bit more subtle… Remember we talked about PDO names… Well PDOs can actually have more than one name… So for each combination of interface versions that a provider supports, it should define a new name, and all of these names should be applied to the PDOs it creates… So in this case we have version X of an interface referencing a PDO name of BAR_1 and version Y of the interface referencing a PDO name of BAR_2. Remember that the PDO simultaneously has both of those names…
  52. Those are the main provider rules… Now the subscriber needs to follow a rule too, which is that it must bind to the PDO name that corresponds to the versions of the interfaces it’s going to use. So, in this example, because the subscriber wants to use DEBUG version X, it needs to bind to PDO name BAR_1.
  53. So bearing those rules in mind let’s think about the safety of upgrading providers and subscribers… Can we safely upgrade a provider?
  54. Well, yes, because we maintain backwards compatibility and… Because we maintain backwards compatibility the old PDO name is still valid, so the old subscribers can still bind to it. Now, can we upgrade a subscriber?
  55. Yes, because we will try to bind to the provider’s new PDO name so… If the old provider is still in place, Windows will not load the new version of the subscriber (because it sees it as a driver with nothing to bind to)... But as soon as the new version of the provider is installed then Windows will favour the new version of the subscriber because it will have a newer build date and a more recent version number. Remember than driver removal is not something that Windows really supports… old versions are not removed, they are just displaced from use. They remain in driverstore forever.
  56. So, that completes my explanation of the driver architecture.... Now a quick summary of the project status...
  57. Well firstly… We graduated… That means we are out of incubation and we are a fully fledged sub-project of the Xen Project.
  58. Next, a few weeks ago I did a new tag of all the driver stable branches and built and signed version 8.2.1 of the drivers. You can get the binaries from this link on the project front page. These drivers have various bug fixes in and I would recommend you upgrade if you’re still on the 8.2.0 release.
  59. Also, we have some new drivers! There are a couple of drivers now that use the PV vkbd protocol for paravirtual keyboard and tablet device. XENVKBD is the class bus driver (analogous to XENVIF or XENVBD) and XENHID is the function driver that handles both keyboard and tablet HID protocols. Let’s have a look at why these are a nice addition to the PV driver set...
  60. Well, before they existed, and you commented these lines out of your xl.cfg to turn off USB emulation (which is actually quite a dom0 cpu hog)...
  61. This happened… As you can see, the mouse pointer in the VM’s console is not in-sync with the VNC client’s mouse pointer… and that’s because Windows has fallen back to using QEMU’s implementation of a PS/2 mouse… which is, of course, a relative (rather than absolute) pointing device.
  62. Well, install XENVKBD and XENHID and that problem goes away… So no need for emulated USB any more.
  63. But that’s not all… There’s also a new console driver called XENCONS… Let’s have a look what that lets us do...
  64. You can see that, from a dom0 shell we can use xl console to get access to a command shell in the VM… And then we can use a sysinternals tool called psexec to actually kick off a process in the interactive console. And this is not a security hole… I logged in as the same used in both places!
  65. I’ll end there. Thanks for listening. If anyone has any questions then please fire away...