• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/usr/include/linux/
1/*
2 * Virtio PCI driver
3 *
4 * This module allows virtio devices to be used over a virtual PCI device.
5 * This can be used with QEMU based VMMs like KVM or Xen.
6 *
7 * Copyright IBM Corp. 2007
8 *
9 * 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
16#ifndef _LINUX_VIRTIO_PCI_H
17#define _LINUX_VIRTIO_PCI_H
18
19#include <linux/virtio_config.h>
20
21/* A 32-bit r/o bitmask of the features supported by the host */
22#define VIRTIO_PCI_HOST_FEATURES	0
23
24/* A 32-bit r/w bitmask of features activated by the guest */
25#define VIRTIO_PCI_GUEST_FEATURES	4
26
27/* A 32-bit r/w PFN for the currently selected queue */
28#define VIRTIO_PCI_QUEUE_PFN		8
29
30/* A 16-bit r/o queue size for the currently selected queue */
31#define VIRTIO_PCI_QUEUE_NUM		12
32
33/* A 16-bit r/w queue selector */
34#define VIRTIO_PCI_QUEUE_SEL		14
35
36/* A 16-bit r/w queue notifier */
37#define VIRTIO_PCI_QUEUE_NOTIFY		16
38
39/* An 8-bit device status register.  */
40#define VIRTIO_PCI_STATUS		18
41
42/* An 8-bit r/o interrupt status register.  Reading the value will return the
43 * current contents of the ISR and will also clear it.  This is effectively
44 * a read-and-acknowledge. */
45#define VIRTIO_PCI_ISR			19
46
47/* The bit of the ISR which indicates a device configuration change. */
48#define VIRTIO_PCI_ISR_CONFIG		0x2
49
50/* MSI-X registers: only enabled if MSI-X is enabled. */
51/* A 16-bit vector for configuration changes. */
52#define VIRTIO_MSI_CONFIG_VECTOR        20
53/* A 16-bit vector for selected queue notifications. */
54#define VIRTIO_MSI_QUEUE_VECTOR         22
55/* Vector value used to disable MSI for queue */
56#define VIRTIO_MSI_NO_VECTOR            0xffff
57
58/* The remaining space is defined by each driver as the per-driver
59 * configuration space */
60#define VIRTIO_PCI_CONFIG(dev)		((dev)->msix_enabled ? 24 : 20)
61
62/* Virtio ABI version, this must match exactly */
63#define VIRTIO_PCI_ABI_VERSION		0
64
65/* How many bits to shift physical queue address written to QUEUE_PFN.
66 * 12 is historical, and due to x86 page size. */
67#define VIRTIO_PCI_QUEUE_ADDR_SHIFT	12
68
69/* The alignment to use between consumer and producer parts of vring.
70 * x86 pagesize again. */
71#define VIRTIO_PCI_VRING_ALIGN		4096
72#endif
73