Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


virtio_pci.h
01: /*
02:  * Virtio PCI driver
03:  *
04:  * This module allows virtio devices to be used over a virtual PCI device.
05:  * This can be used with QEMU based VMMs like KVM or Xen.
06:  *
07:  * Copyright IBM Corp. 2007
08:  *
09:  * Authors:
10:  *  Anthony Liguori  <aliguori@us.ibm.com>
11:  *
12:  * This header is BSD licensed so anyone can use the definitions to implement
13:  * compatible drivers/servers.
14:  *
15:  * Redistribution and use in source and binary forms, with or without
16:  * modification, are permitted provided that the following conditions
17:  * are met:
18:  * 1. Redistributions of source code must retain the above copyright
19:  *    notice, this list of conditions and the following disclaimer.
20:  * 2. Redistributions in binary form must reproduce the above copyright
21:  *    notice, this list of conditions and the following disclaimer in the
22:  *    documentation and/or other materials provided with the distribution.
23:  * 3. Neither the name of IBM nor the names of its contributors
24:  *    may be used to endorse or promote products derived from this software
25:  *    without specific prior written permission.
26:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
27:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29:  * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
30:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36:  * SUCH DAMAGE.
37:  */
38: 
39: #ifndef _LINUX_VIRTIO_PCI_H
40: #define _LINUX_VIRTIO_PCI_H
41: 
42: #include <linux/virtio_config.h>
43: 
44: /* A 32-bit r/o bitmask of the features supported by the host */
45: #define VIRTIO_PCI_HOST_FEATURES        0
46: 
47: /* A 32-bit r/w bitmask of features activated by the guest */
48: #define VIRTIO_PCI_GUEST_FEATURES       4
49: 
50: /* A 32-bit r/w PFN for the currently selected queue */
51: #define VIRTIO_PCI_QUEUE_PFN            8
52: 
53: /* A 16-bit r/o queue size for the currently selected queue */
54: #define VIRTIO_PCI_QUEUE_NUM            12
55: 
56: /* A 16-bit r/w queue selector */
57: #define VIRTIO_PCI_QUEUE_SEL            14
58: 
59: /* A 16-bit r/w queue notifier */
60: #define VIRTIO_PCI_QUEUE_NOTIFY         16
61: 
62: /* An 8-bit device status register.  */
63: #define VIRTIO_PCI_STATUS               18
64: 
65: /* An 8-bit r/o interrupt status register.  Reading the value will return the
66:  * current contents of the ISR and will also clear it.  This is effectively
67:  * a read-and-acknowledge. */
68: #define VIRTIO_PCI_ISR                  19
69: 
70: /* The bit of the ISR which indicates a device configuration change. */
71: #define VIRTIO_PCI_ISR_CONFIG           0x2
72: 
73: /* MSI-X registers: only enabled if MSI-X is enabled. */
74: /* A 16-bit vector for configuration changes. */
75: #define VIRTIO_MSI_CONFIG_VECTOR        20
76: /* A 16-bit vector for selected queue notifications. */
77: #define VIRTIO_MSI_QUEUE_VECTOR         22
78: /* Vector value used to disable MSI for queue */
79: #define VIRTIO_MSI_NO_VECTOR            0xffff
80: 
81: /* The remaining space is defined by each driver as the per-driver
82:  * configuration space */
83: #define VIRTIO_PCI_CONFIG(dev)          ((dev)->msix_enabled ? 24 : 20)
84: 
85: /* Virtio ABI version, this must match exactly */
86: #define VIRTIO_PCI_ABI_VERSION          0
87: 
88: /* How many bits to shift physical queue address written to QUEUE_PFN.
89:  * 12 is historical, and due to x86 page size. */
90: #define VIRTIO_PCI_QUEUE_ADDR_SHIFT     12
91: 
92: /* The alignment to use between consumer and producer parts of vring.
93:  * x86 pagesize again. */
94: #define VIRTIO_PCI_VRING_ALIGN          4096
95: #endif
96: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/