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 |
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: