linux-headers: Update to 4.2-rc1
This updates linux-headers against master 4.2-rc1 (commit d770e558e21961ad6cfdf0ff7df0eb5d7d4f0754). This is the result of ./scripts/update-linux-headers.sh work. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									7edd8e4660
								
							
						
					
					
						commit
						25b8b39b6d
					
				@ -367,7 +367,8 @@ struct input_keymap_entry {
 | 
				
			|||||||
#define KEY_MSDOS		151
 | 
					#define KEY_MSDOS		151
 | 
				
			||||||
#define KEY_COFFEE		152	/* AL Terminal Lock/Screensaver */
 | 
					#define KEY_COFFEE		152	/* AL Terminal Lock/Screensaver */
 | 
				
			||||||
#define KEY_SCREENLOCK		KEY_COFFEE
 | 
					#define KEY_SCREENLOCK		KEY_COFFEE
 | 
				
			||||||
#define KEY_DIRECTION		153
 | 
					#define KEY_ROTATE_DISPLAY	153	/* Display orientation for e.g. tablets */
 | 
				
			||||||
 | 
					#define KEY_DIRECTION		KEY_ROTATE_DISPLAY
 | 
				
			||||||
#define KEY_CYCLEWINDOWS	154
 | 
					#define KEY_CYCLEWINDOWS	154
 | 
				
			||||||
#define KEY_MAIL		155
 | 
					#define KEY_MAIL		155
 | 
				
			||||||
#define KEY_BOOKMARKS		156	/* AC Bookmarks */
 | 
					#define KEY_BOOKMARKS		156	/* AC Bookmarks */
 | 
				
			||||||
@ -700,6 +701,10 @@ struct input_keymap_entry {
 | 
				
			|||||||
#define KEY_NUMERIC_9		0x209
 | 
					#define KEY_NUMERIC_9		0x209
 | 
				
			||||||
#define KEY_NUMERIC_STAR	0x20a
 | 
					#define KEY_NUMERIC_STAR	0x20a
 | 
				
			||||||
#define KEY_NUMERIC_POUND	0x20b
 | 
					#define KEY_NUMERIC_POUND	0x20b
 | 
				
			||||||
 | 
					#define KEY_NUMERIC_A		0x20c	/* Phone key A - HUT Telephony 0xb9 */
 | 
				
			||||||
 | 
					#define KEY_NUMERIC_B		0x20d
 | 
				
			||||||
 | 
					#define KEY_NUMERIC_C		0x20e
 | 
				
			||||||
 | 
					#define KEY_NUMERIC_D		0x20f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define KEY_CAMERA_FOCUS	0x210
 | 
					#define KEY_CAMERA_FOCUS	0x210
 | 
				
			||||||
#define KEY_WPS_BUTTON		0x211	/* WiFi Protected Setup key */
 | 
					#define KEY_WPS_BUTTON		0x211	/* WiFi Protected Setup key */
 | 
				
			||||||
@ -971,7 +976,8 @@ struct input_keymap_entry {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
#define MT_TOOL_FINGER		0
 | 
					#define MT_TOOL_FINGER		0
 | 
				
			||||||
#define MT_TOOL_PEN		1
 | 
					#define MT_TOOL_PEN		1
 | 
				
			||||||
#define MT_TOOL_MAX		1
 | 
					#define MT_TOOL_PALM		2
 | 
				
			||||||
 | 
					#define MT_TOOL_MAX		2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Values describing the status of a force-feedback effect
 | 
					 * Values describing the status of a force-feedback effect
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,7 @@
 | 
				
			|||||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
					 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
				
			||||||
 * SUCH DAMAGE. */
 | 
					 * SUCH DAMAGE. */
 | 
				
			||||||
#include "standard-headers/linux/types.h"
 | 
					#include "standard-headers/linux/types.h"
 | 
				
			||||||
 | 
					#include "standard-headers/linux/virtio_types.h"
 | 
				
			||||||
#include "standard-headers/linux/virtio_ids.h"
 | 
					#include "standard-headers/linux/virtio_ids.h"
 | 
				
			||||||
#include "standard-headers/linux/virtio_config.h"
 | 
					#include "standard-headers/linux/virtio_config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -38,6 +38,8 @@
 | 
				
			|||||||
#ifndef VIRTIO_GPU_HW_H
 | 
					#ifndef VIRTIO_GPU_HW_H
 | 
				
			||||||
#define VIRTIO_GPU_HW_H
 | 
					#define VIRTIO_GPU_HW_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "standard-headers/linux/types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum virtio_gpu_ctrl_type {
 | 
					enum virtio_gpu_ctrl_type {
 | 
				
			||||||
	VIRTIO_GPU_UNDEFINED = 0,
 | 
						VIRTIO_GPU_UNDEFINED = 0,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -199,6 +199,17 @@
 | 
				
			|||||||
#define HV_X64_MSR_STIMER3_CONFIG		0x400000B6
 | 
					#define HV_X64_MSR_STIMER3_CONFIG		0x400000B6
 | 
				
			||||||
#define HV_X64_MSR_STIMER3_COUNT		0x400000B7
 | 
					#define HV_X64_MSR_STIMER3_COUNT		0x400000B7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Hyper-V guest crash notification MSR's */
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_P0			0x40000100
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_P1			0x40000101
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_P2			0x40000102
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_P3			0x40000103
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_P4			0x40000104
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_CTL			0x40000105
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_CTL_NOTIFY		(1ULL << 63)
 | 
				
			||||||
 | 
					#define HV_X64_MSR_CRASH_PARAMS		\
 | 
				
			||||||
 | 
							(1 + (HV_X64_MSR_CRASH_P4 - HV_X64_MSR_CRASH_P0))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HV_X64_MSR_HYPERCALL_ENABLE		0x00000001
 | 
					#define HV_X64_MSR_HYPERCALL_ENABLE		0x00000001
 | 
				
			||||||
#define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT	12
 | 
					#define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT	12
 | 
				
			||||||
#define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_MASK	\
 | 
					#define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_MASK	\
 | 
				
			||||||
 | 
				
			|||||||
@ -897,7 +897,7 @@ struct kvm_xen_hvm_config {
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * KVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies
 | 
					 * KVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies
 | 
				
			||||||
 * the irqfd to operate in resampling mode for level triggered interrupt
 | 
					 * the irqfd to operate in resampling mode for level triggered interrupt
 | 
				
			||||||
 * emlation.  See Documentation/virtual/kvm/api.txt.
 | 
					 * emulation.  See Documentation/virtual/kvm/api.txt.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
 | 
					#define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,8 @@
 | 
				
			|||||||
/* Two-stage IOMMU */
 | 
					/* Two-stage IOMMU */
 | 
				
			||||||
#define VFIO_TYPE1_NESTING_IOMMU	6	/* Implies v2 */
 | 
					#define VFIO_TYPE1_NESTING_IOMMU	6	/* Implies v2 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define VFIO_SPAPR_TCE_v2_IOMMU		7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * The IOCTL interface is designed for extensibility by embedding the
 | 
					 * The IOCTL interface is designed for extensibility by embedding the
 | 
				
			||||||
 * structure length (argsz) and flags into structures passed between
 | 
					 * structure length (argsz) and flags into structures passed between
 | 
				
			||||||
@ -442,6 +444,23 @@ struct vfio_iommu_type1_dma_unmap {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */
 | 
					/* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The SPAPR TCE DDW info struct provides the information about
 | 
				
			||||||
 | 
					 * the details of Dynamic DMA window capability.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @pgsizes contains a page size bitmask, 4K/64K/16M are supported.
 | 
				
			||||||
 | 
					 * @max_dynamic_windows_supported tells the maximum number of windows
 | 
				
			||||||
 | 
					 * which the platform can create.
 | 
				
			||||||
 | 
					 * @levels tells the maximum number of levels in multi-level IOMMU tables;
 | 
				
			||||||
 | 
					 * this allows splitting a table into smaller chunks which reduces
 | 
				
			||||||
 | 
					 * the amount of physically contiguous memory required for the table.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					struct vfio_iommu_spapr_tce_ddw_info {
 | 
				
			||||||
 | 
						__u64 pgsizes;			/* Bitmap of supported page sizes */
 | 
				
			||||||
 | 
						__u32 max_dynamic_windows_supported;
 | 
				
			||||||
 | 
						__u32 levels;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * The SPAPR TCE info struct provides the information about the PCI bus
 | 
					 * The SPAPR TCE info struct provides the information about the PCI bus
 | 
				
			||||||
 * address ranges available for DMA, these values are programmed into
 | 
					 * address ranges available for DMA, these values are programmed into
 | 
				
			||||||
@ -452,14 +471,17 @@ struct vfio_iommu_type1_dma_unmap {
 | 
				
			|||||||
 * addresses too so the window works as a filter rather than an offset
 | 
					 * addresses too so the window works as a filter rather than an offset
 | 
				
			||||||
 * for IOVA addresses.
 | 
					 * for IOVA addresses.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * A flag will need to be added if other page sizes are supported,
 | 
					 * Flags supported:
 | 
				
			||||||
 * so as defined here, it is always 4k.
 | 
					 * - VFIO_IOMMU_SPAPR_INFO_DDW: informs the userspace that dynamic DMA windows
 | 
				
			||||||
 | 
					 *   (DDW) support is present. @ddw is only supported when DDW is present.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
struct vfio_iommu_spapr_tce_info {
 | 
					struct vfio_iommu_spapr_tce_info {
 | 
				
			||||||
	__u32 argsz;
 | 
						__u32 argsz;
 | 
				
			||||||
	__u32 flags;			/* reserved for future use */
 | 
						__u32 flags;
 | 
				
			||||||
 | 
					#define VFIO_IOMMU_SPAPR_INFO_DDW	(1 << 0)	/* DDW supported */
 | 
				
			||||||
	__u32 dma32_window_start;	/* 32 bit window start (bytes) */
 | 
						__u32 dma32_window_start;	/* 32 bit window start (bytes) */
 | 
				
			||||||
	__u32 dma32_window_size;	/* 32 bit window size (bytes) */
 | 
						__u32 dma32_window_size;	/* 32 bit window size (bytes) */
 | 
				
			||||||
 | 
						struct vfio_iommu_spapr_tce_ddw_info ddw;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define VFIO_IOMMU_SPAPR_TCE_GET_INFO	_IO(VFIO_TYPE, VFIO_BASE + 12)
 | 
					#define VFIO_IOMMU_SPAPR_TCE_GET_INFO	_IO(VFIO_TYPE, VFIO_BASE + 12)
 | 
				
			||||||
@ -470,12 +492,23 @@ struct vfio_iommu_spapr_tce_info {
 | 
				
			|||||||
 * - unfreeze IO/DMA for frozen PE;
 | 
					 * - unfreeze IO/DMA for frozen PE;
 | 
				
			||||||
 * - read PE state;
 | 
					 * - read PE state;
 | 
				
			||||||
 * - reset PE;
 | 
					 * - reset PE;
 | 
				
			||||||
 * - configure PE.
 | 
					 * - configure PE;
 | 
				
			||||||
 | 
					 * - inject EEH error.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					struct vfio_eeh_pe_err {
 | 
				
			||||||
 | 
						__u32 type;
 | 
				
			||||||
 | 
						__u32 func;
 | 
				
			||||||
 | 
						__u64 addr;
 | 
				
			||||||
 | 
						__u64 mask;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct vfio_eeh_pe_op {
 | 
					struct vfio_eeh_pe_op {
 | 
				
			||||||
	__u32 argsz;
 | 
						__u32 argsz;
 | 
				
			||||||
	__u32 flags;
 | 
						__u32 flags;
 | 
				
			||||||
	__u32 op;
 | 
						__u32 op;
 | 
				
			||||||
 | 
						union {
 | 
				
			||||||
 | 
							struct vfio_eeh_pe_err err;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define VFIO_EEH_PE_DISABLE		0	/* Disable EEH functionality */
 | 
					#define VFIO_EEH_PE_DISABLE		0	/* Disable EEH functionality */
 | 
				
			||||||
@ -492,9 +525,70 @@ struct vfio_eeh_pe_op {
 | 
				
			|||||||
#define VFIO_EEH_PE_RESET_HOT		6	/* Assert hot reset          */
 | 
					#define VFIO_EEH_PE_RESET_HOT		6	/* Assert hot reset          */
 | 
				
			||||||
#define VFIO_EEH_PE_RESET_FUNDAMENTAL	7	/* Assert fundamental reset  */
 | 
					#define VFIO_EEH_PE_RESET_FUNDAMENTAL	7	/* Assert fundamental reset  */
 | 
				
			||||||
#define VFIO_EEH_PE_CONFIGURE		8	/* PE configuration          */
 | 
					#define VFIO_EEH_PE_CONFIGURE		8	/* PE configuration          */
 | 
				
			||||||
 | 
					#define VFIO_EEH_PE_INJECT_ERR		9	/* Inject EEH error          */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define VFIO_EEH_PE_OP			_IO(VFIO_TYPE, VFIO_BASE + 21)
 | 
					#define VFIO_EEH_PE_OP			_IO(VFIO_TYPE, VFIO_BASE + 21)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * VFIO_IOMMU_SPAPR_REGISTER_MEMORY - _IOW(VFIO_TYPE, VFIO_BASE + 17, struct vfio_iommu_spapr_register_memory)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Registers user space memory where DMA is allowed. It pins
 | 
				
			||||||
 | 
					 * user pages and does the locked memory accounting so
 | 
				
			||||||
 | 
					 * subsequent VFIO_IOMMU_MAP_DMA/VFIO_IOMMU_UNMAP_DMA calls
 | 
				
			||||||
 | 
					 * get faster.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					struct vfio_iommu_spapr_register_memory {
 | 
				
			||||||
 | 
						__u32	argsz;
 | 
				
			||||||
 | 
						__u32	flags;
 | 
				
			||||||
 | 
						__u64	vaddr;				/* Process virtual address */
 | 
				
			||||||
 | 
						__u64	size;				/* Size of mapping (bytes) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					#define VFIO_IOMMU_SPAPR_REGISTER_MEMORY	_IO(VFIO_TYPE, VFIO_BASE + 17)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY - _IOW(VFIO_TYPE, VFIO_BASE + 18, struct vfio_iommu_spapr_register_memory)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unregisters user space memory registered with
 | 
				
			||||||
 | 
					 * VFIO_IOMMU_SPAPR_REGISTER_MEMORY.
 | 
				
			||||||
 | 
					 * Uses vfio_iommu_spapr_register_memory for parameters.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY	_IO(VFIO_TYPE, VFIO_BASE + 18)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * VFIO_IOMMU_SPAPR_TCE_CREATE - _IOWR(VFIO_TYPE, VFIO_BASE + 19, struct vfio_iommu_spapr_tce_create)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Creates an additional TCE table and programs it (sets a new DMA window)
 | 
				
			||||||
 | 
					 * to every IOMMU group in the container. It receives page shift, window
 | 
				
			||||||
 | 
					 * size and number of levels in the TCE table being created.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * It allocates and returns an offset on a PCI bus of the new DMA window.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					struct vfio_iommu_spapr_tce_create {
 | 
				
			||||||
 | 
						__u32 argsz;
 | 
				
			||||||
 | 
						__u32 flags;
 | 
				
			||||||
 | 
						/* in */
 | 
				
			||||||
 | 
						__u32 page_shift;
 | 
				
			||||||
 | 
						__u64 window_size;
 | 
				
			||||||
 | 
						__u32 levels;
 | 
				
			||||||
 | 
						/* out */
 | 
				
			||||||
 | 
						__u64 start_addr;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					#define VFIO_IOMMU_SPAPR_TCE_CREATE	_IO(VFIO_TYPE, VFIO_BASE + 19)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * VFIO_IOMMU_SPAPR_TCE_REMOVE - _IOW(VFIO_TYPE, VFIO_BASE + 20, struct vfio_iommu_spapr_tce_remove)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unprograms a TCE table from all groups in the container and destroys it.
 | 
				
			||||||
 | 
					 * It receives a PCI bus offset as a window id.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					struct vfio_iommu_spapr_tce_remove {
 | 
				
			||||||
 | 
						__u32 argsz;
 | 
				
			||||||
 | 
						__u32 flags;
 | 
				
			||||||
 | 
						/* in */
 | 
				
			||||||
 | 
						__u64 start_addr;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					#define VFIO_IOMMU_SPAPR_TCE_REMOVE	_IO(VFIO_TYPE, VFIO_BASE + 20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ***************************************************************** */
 | 
					/* ***************************************************************** */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* VFIO_H */
 | 
					#endif /* VFIO_H */
 | 
				
			||||||
 | 
				
			|||||||
@ -1,192 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * Virtio PCI driver
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This module allows virtio devices to be used over a virtual PCI device.
 | 
					 | 
				
			||||||
 * This can be used with QEMU based VMMs like KVM or Xen.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Copyright IBM Corp. 2007
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Authors:
 | 
					 | 
				
			||||||
 *  Anthony Liguori  <aliguori@us.ibm.com>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This header is BSD licensed so anyone can use the definitions to implement
 | 
					 | 
				
			||||||
 * compatible drivers/servers.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Redistribution and use in source and binary forms, with or without
 | 
					 | 
				
			||||||
 * modification, are permitted provided that the following conditions
 | 
					 | 
				
			||||||
 * are met:
 | 
					 | 
				
			||||||
 * 1. Redistributions of source code must retain the above copyright
 | 
					 | 
				
			||||||
 *    notice, this list of conditions and the following disclaimer.
 | 
					 | 
				
			||||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
					 | 
				
			||||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
					 | 
				
			||||||
 *    documentation and/or other materials provided with the distribution.
 | 
					 | 
				
			||||||
 * 3. Neither the name of IBM nor the names of its contributors
 | 
					 | 
				
			||||||
 *    may be used to endorse or promote products derived from this software
 | 
					 | 
				
			||||||
 *    without specific prior written permission.
 | 
					 | 
				
			||||||
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
 | 
					 | 
				
			||||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
					 | 
				
			||||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
					 | 
				
			||||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
 | 
					 | 
				
			||||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
					 | 
				
			||||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
					 | 
				
			||||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
					 | 
				
			||||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
					 | 
				
			||||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
					 | 
				
			||||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
					 | 
				
			||||||
 * SUCH DAMAGE.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef _LINUX_VIRTIO_PCI_H
 | 
					 | 
				
			||||||
#define _LINUX_VIRTIO_PCI_H
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <linux/types.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef VIRTIO_PCI_NO_LEGACY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A 32-bit r/o bitmask of the features supported by the host */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_HOST_FEATURES	0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A 32-bit r/w bitmask of features activated by the guest */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_GUEST_FEATURES	4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A 32-bit r/w PFN for the currently selected queue */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_QUEUE_PFN		8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A 16-bit r/o queue size for the currently selected queue */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_QUEUE_NUM		12
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A 16-bit r/w queue selector */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_QUEUE_SEL		14
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A 16-bit r/w queue notifier */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_QUEUE_NOTIFY		16
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* An 8-bit device status register.  */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_STATUS		18
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* An 8-bit r/o interrupt status register.  Reading the value will return the
 | 
					 | 
				
			||||||
 * current contents of the ISR and will also clear it.  This is effectively
 | 
					 | 
				
			||||||
 * a read-and-acknowledge. */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_ISR			19
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* MSI-X registers: only enabled if MSI-X is enabled. */
 | 
					 | 
				
			||||||
/* A 16-bit vector for configuration changes. */
 | 
					 | 
				
			||||||
#define VIRTIO_MSI_CONFIG_VECTOR        20
 | 
					 | 
				
			||||||
/* A 16-bit vector for selected queue notifications. */
 | 
					 | 
				
			||||||
#define VIRTIO_MSI_QUEUE_VECTOR         22
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* The remaining space is defined by each driver as the per-driver
 | 
					 | 
				
			||||||
 * configuration space */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CONFIG_OFF(msix_enabled)	((msix_enabled) ? 24 : 20)
 | 
					 | 
				
			||||||
/* Deprecated: please use VIRTIO_PCI_CONFIG_OFF instead */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CONFIG(dev)	VIRTIO_PCI_CONFIG_OFF((dev)->msix_enabled)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Virtio ABI version, this must match exactly */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_ABI_VERSION		0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* How many bits to shift physical queue address written to QUEUE_PFN.
 | 
					 | 
				
			||||||
 * 12 is historical, and due to x86 page size. */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_QUEUE_ADDR_SHIFT	12
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* The alignment to use between consumer and producer parts of vring.
 | 
					 | 
				
			||||||
 * x86 pagesize again. */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_VRING_ALIGN		4096
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* VIRTIO_PCI_NO_LEGACY */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* The bit of the ISR which indicates a device configuration change. */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_ISR_CONFIG		0x2
 | 
					 | 
				
			||||||
/* Vector value used to disable MSI for queue */
 | 
					 | 
				
			||||||
#define VIRTIO_MSI_NO_VECTOR            0xffff
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef VIRTIO_PCI_NO_MODERN
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* IDs for different capabilities.  Must all exist. */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Common configuration */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_COMMON_CFG	1
 | 
					 | 
				
			||||||
/* Notifications */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_NOTIFY_CFG	2
 | 
					 | 
				
			||||||
/* ISR access */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_ISR_CFG		3
 | 
					 | 
				
			||||||
/* Device specific confiuration */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_DEVICE_CFG	4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* This is the PCI capability header: */
 | 
					 | 
				
			||||||
struct virtio_pci_cap {
 | 
					 | 
				
			||||||
	__u8 cap_vndr;		/* Generic PCI field: PCI_CAP_ID_VNDR */
 | 
					 | 
				
			||||||
	__u8 cap_next;		/* Generic PCI field: next ptr. */
 | 
					 | 
				
			||||||
	__u8 cap_len;		/* Generic PCI field: capability length */
 | 
					 | 
				
			||||||
	__u8 cfg_type;		/* Identifies the structure. */
 | 
					 | 
				
			||||||
	__u8 bar;		/* Where to find it. */
 | 
					 | 
				
			||||||
	__u8 padding[3];	/* Pad to full dword. */
 | 
					 | 
				
			||||||
	__le32 offset;		/* Offset within bar. */
 | 
					 | 
				
			||||||
	__le32 length;		/* Length of the structure, in bytes. */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct virtio_pci_notify_cap {
 | 
					 | 
				
			||||||
	struct virtio_pci_cap cap;
 | 
					 | 
				
			||||||
	__le32 notify_off_multiplier;	/* Multiplier for queue_notify_off. */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Fields in VIRTIO_PCI_CAP_COMMON_CFG: */
 | 
					 | 
				
			||||||
struct virtio_pci_common_cfg {
 | 
					 | 
				
			||||||
	/* About the whole device. */
 | 
					 | 
				
			||||||
	__le32 device_feature_select;	/* read-write */
 | 
					 | 
				
			||||||
	__le32 device_feature;		/* read-only */
 | 
					 | 
				
			||||||
	__le32 guest_feature_select;	/* read-write */
 | 
					 | 
				
			||||||
	__le32 guest_feature;		/* read-write */
 | 
					 | 
				
			||||||
	__le16 msix_config;		/* read-write */
 | 
					 | 
				
			||||||
	__le16 num_queues;		/* read-only */
 | 
					 | 
				
			||||||
	__u8 device_status;		/* read-write */
 | 
					 | 
				
			||||||
	__u8 config_generation;		/* read-only */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* About a specific virtqueue. */
 | 
					 | 
				
			||||||
	__le16 queue_select;		/* read-write */
 | 
					 | 
				
			||||||
	__le16 queue_size;		/* read-write, power of 2. */
 | 
					 | 
				
			||||||
	__le16 queue_msix_vector;	/* read-write */
 | 
					 | 
				
			||||||
	__le16 queue_enable;		/* read-write */
 | 
					 | 
				
			||||||
	__le16 queue_notify_off;	/* read-only */
 | 
					 | 
				
			||||||
	__le32 queue_desc_lo;		/* read-write */
 | 
					 | 
				
			||||||
	__le32 queue_desc_hi;		/* read-write */
 | 
					 | 
				
			||||||
	__le32 queue_avail_lo;		/* read-write */
 | 
					 | 
				
			||||||
	__le32 queue_avail_hi;		/* read-write */
 | 
					 | 
				
			||||||
	__le32 queue_used_lo;		/* read-write */
 | 
					 | 
				
			||||||
	__le32 queue_used_hi;		/* read-write */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Macro versions of offsets for the Old Timers! */
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_VNDR		0
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_NEXT		1
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_LEN		2
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_CFG_TYPE		3
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_BAR		4
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_OFFSET		8
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_CAP_LENGTH		12
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_NOTIFY_CAP_MULT	16
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_DFSELECT	0
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_DF		4
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_GFSELECT	8
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_GF		12
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_MSIX		16
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_NUMQ		18
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_STATUS	20
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_CFGGENERATION	21
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_SELECT	22
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_SIZE	24
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_MSIX	26
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_ENABLE	28
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_NOFF	30
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_DESCLO	32
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_DESCHI	36
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_AVAILLO	40
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_AVAILHI	44
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_USEDLO	48
 | 
					 | 
				
			||||||
#define VIRTIO_PCI_COMMON_Q_USEDHI	52
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* VIRTIO_PCI_NO_MODERN */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user