Project Mentor: Lars Kurth - Lars is the Community Manager for xen.org and has agreed to act as the project’s Mentor.

Background

ParaVirtualization aware (PV) device drivers are an important part of HVM guests running under Xen. Citrix has provided a set of PV driver
for Windows since the inception of XenServer. These drivers have evolved over the years and recently the full set has been made open
source with a BSD license and are therefore available to the community to modify and build.
Paul Durrant gave a talk at the 2013 Xen Developer Summit in Edinburgh (see http://www.slideshare.net/xen_com_mgr/open-source-pv-drivers) to
introduce the drivers. This proposal is intended to be a logical next step to that initial offering to the community.

Relevance to Xen and its Community

The drivers have a dependency on Xen as they are ParaVirtualization aware. They are not tied in any way to Citrix commercial Xen offerings;
they are designed to function on any build of Xen since 3.4. They encompass high performance network and storage frontends and enable
functionality such as memory ballooning, and clean shutdown or reboot via the xl toolstack. They are well tested and supported, since they
are crucial to Citrix products, and are of benefit to anyone wishing to run Windows (i386 or x86_64) as a guest under Xen.

Current Status

Recent builds of the drivers are currently being tested by Citrix and Amazon using the Microsoft HCK and Citrix will be providing logo-signed builds of the drivers in future commercial Xen offerings. Amazon are evaluating the drivers and may ship them in future AMIs.
Citrix may also provide logo-signed drivers via Microsoft's Windows Update mechanism, making them widely available to anyone running
Windows under Xen (not just XenServer) without the need for them to build the drivers themselves. Any other organization is also free to do
the same by registering a top level PV device with the Xen community (see pci-device-reservations.txt) and logo-signing their driver builds.

Incubation

The aim of making the Windows PV Drivers an incubated project is to raise their profile to members of the Xen community other than Citrix
and Amazon and hopefully gain more developer interest and contribution. The driver set provide APIs to fundamental Xen subsystems such
as grant tables, event channels and xenstore and therefore provide a basis for further frontends, e.g. HID (keyboard and mouse), PV audio
and possibly framebuffer. Current maintainers of the driver repositories are all employed by Citrix but by becoming an incubated project we
hope gain maintainers from the community as we build interest.
We hope we can work with the maintainers of the GPLPV Windows Drivers to standardize Windows PV drivers for the Xen project.

Required Infrastructure

Repositories

As a Xen Project sub-project we would wish the driver repositories to be hosted on xenbits, but mirrored to GitHub to allow use of the the
GitHub workflow. It makes sense to maintain a separate repository for each driver as:
Each driver is separately installable with no compile-time linkage to any other driver. Some headers may be imported from one
repository to another to facilitate run-time discovery of interfaces provided by one driver and consumed by another, but it is desirable
that this is an explicit step to move from one version of an interface to another.
A continuous integration server project can be created for each repository such that the only a modified driver is re-built, rather than
the entire set.

The set of drivers (and hence repositories) is currently:

XENBUS: Bus driver binding to the top-level PCI device (and providing most of the interfaces to Xen)

Agreements

Workflow: as Xen Project Hypervisor - no use of GitHub, but list based ✓ implemented

Actions

Action Lars: Minor text changes as per [1]✓Action Lars: Verify whether due diligence on licenses and build has been performed ✓ Citrix has run a license check and made some code modifications to ensure all files are under a BSD LicenseAction Lars: Verify whether code builds from existing public repositories ✓Action Paul: Nominate initial set of maintainers and committers and communicate to Lars ✓Action Paul: Confirm workflow with team ✓Action Lars: Request creation of mailing list ✓Action Lars: Infrastructure: confirm with Rackspace whether we can use one extra VM for build and test ✓ Rackspace is happy to do this
Action Paul: Contact Ian Jackson to set up pvdrivers/win/ on xenbits.xenproject.org and migrate code ✓Action Paul: Work with Ian Jackson to set up build VM : inform Antony Messerly from Rackspace ✓Action Lars: Create portal on xenproject.org and wiki.xenproject.org and update lists.xenproject.org ✓Action Paul: Notify developers on xen-devel of newly created infrastructure and list ✓Action Lars: Work with Sarah and Paul on launch communication ✓