1=head1 NAME
2
3xen-pci-device-reservations - Xen PCI device ID registry
4
5=head1 Description
6
7PCI vendor ID 0x5853 has been reserved for use by Xen systems in order to
8advertise certain virtual hardware to guest virtual machines. The primary
9use of this is with device ID 0x0001 to advertise the Xen Platform PCI
10device - the presence of this virtual device enables a guest Operating
11System (subject to the availability of suitable drivers) to make use of
12paravirtualisation features such as disk and network devices etc.
13
14Some Xen vendors wish to provide alternative and/or additional guest drivers
15that can bind to virtual devices[1]. This may be done using the Xen PCI
16vendor ID of 0x5853 and Xen-vendor/device specific PCI device IDs. This file
17records reservations made within the device ID range in order to avoid
18multiple Xen vendors using conflicting IDs.
19
20=head1 Guidelines
21
22=over 4
23
24=item 1. A vendor may request a range of device IDs by submitting a patch to
25         this file.
26
27=item 2. Vendor allocations should be in the range 0xc000-0xfffe to reduce the
28         possibility of clashes with community IDs assigned from the bottom up.
29
30=item 3. The vendor is responsible for allocations within the range and should
31         try to record specific device IDs in PCI ID databases such as
32         https://pci-ids.ucw.cz and https://devicehunt.com
33
34=back
35
36=head1 Reservations
37
38        range     | vendor/product
39    --------------+--------------------------------------------------------------
40    0x0001        | (Xen Platform PCI device)
41    0x0002        | Citrix XenServer (grandfathered allocation for XenServer 6.1)
42    0xc000-0xc0ff | Citrix XenServer
43    0xc100-0xc1ff | Citrix XenClient
44    0xc200-0xc2ff | XCP-ng Project (https://xcp-ng.org)
45
46=head1 Notes
47
48=over 4
49
50=item 1.
51
52Upstream QEMU provides a parameterized device called xen-pvdevice that
53can be used to host guest drivers. Execute:
54
55    qemu-system-i386 -device xen-pvdevice,help
56
57for a list of all parameters. The following parameters are relevant to
58driver binding:
59
60=over 4
61
62=item  vendor-id (default 0x5853)
63
64The PCI vendor ID and subsystem vendor ID of the device.
65
66=item  device-id (must be specified)
67
68The PCI device ID and subsystem device ID of the device.
69
70=item  revision (default 0x01)
71
72The PCI revision of the device
73
74=back
75
76Also the size parameter (default 0x400000) can be used to specify the
77size of the single MMIO BAR that the device exposes. This area may be
78used by drivers for mapping grant tables, etc.
79
80Note that the presence of the Xen Platform PCI device is generally a
81pre-requisite for an additional xen-pvdevice as it is the platform
82device that provides that IO ports necessary for unplugging emulated
83devices. See hvm-emulated-unplug.markdown for details of the IO ports
84and unplug protocol.
85
86libxl provides support for creation of a single additional xen-pvdevice.
87See the vendor_device parameter in xl.cfg(5).
88
89=back
90