mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-06 06:27:41 -07:00
update Linux headers to 4.6
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
92741fc4b6
commit
b89485a52e
14 changed files with 140 additions and 12 deletions
|
|
@ -157,6 +157,7 @@ struct kvm_s390_skeys {
|
|||
|
||||
struct kvm_hyperv_exit {
|
||||
#define KVM_EXIT_HYPERV_SYNIC 1
|
||||
#define KVM_EXIT_HYPERV_HCALL 2
|
||||
__u32 type;
|
||||
union {
|
||||
struct {
|
||||
|
|
@ -165,6 +166,11 @@ struct kvm_hyperv_exit {
|
|||
__u64 evt_page;
|
||||
__u64 msg_page;
|
||||
} synic;
|
||||
struct {
|
||||
__u64 input;
|
||||
__u64 result;
|
||||
__u64 params[2];
|
||||
} hcall;
|
||||
} u;
|
||||
};
|
||||
|
||||
|
|
@ -856,6 +862,9 @@ struct kvm_ppc_smmu_info {
|
|||
#define KVM_CAP_IOEVENTFD_ANY_LENGTH 122
|
||||
#define KVM_CAP_HYPERV_SYNIC 123
|
||||
#define KVM_CAP_S390_RI 124
|
||||
#define KVM_CAP_SPAPR_TCE_64 125
|
||||
#define KVM_CAP_ARM_PMU_V3 126
|
||||
#define KVM_CAP_VCPU_ATTRIBUTES 127
|
||||
|
||||
#ifdef KVM_CAP_IRQ_ROUTING
|
||||
|
||||
|
|
@ -1148,6 +1157,8 @@ struct kvm_s390_ucas_mapping {
|
|||
/* Available with KVM_CAP_PPC_ALLOC_HTAB */
|
||||
#define KVM_PPC_ALLOCATE_HTAB _IOWR(KVMIO, 0xa7, __u32)
|
||||
#define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce)
|
||||
#define KVM_CREATE_SPAPR_TCE_64 _IOW(KVMIO, 0xa8, \
|
||||
struct kvm_create_spapr_tce_64)
|
||||
/* Available with KVM_CAP_RMA */
|
||||
#define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma)
|
||||
/* Available with KVM_CAP_PPC_HTAB_FD */
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ struct uffd_msg {
|
|||
__u64 reserved3;
|
||||
} reserved;
|
||||
} arg;
|
||||
} __packed;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Start at 0x12 and not at 0 to be more strict against bugs.
|
||||
|
|
|
|||
|
|
@ -59,6 +59,33 @@
|
|||
#define VFIO_TYPE (';')
|
||||
#define VFIO_BASE 100
|
||||
|
||||
/*
|
||||
* For extension of INFO ioctls, VFIO makes use of a capability chain
|
||||
* designed after PCI/e capabilities. A flag bit indicates whether
|
||||
* this capability chain is supported and a field defined in the fixed
|
||||
* structure defines the offset of the first capability in the chain.
|
||||
* This field is only valid when the corresponding bit in the flags
|
||||
* bitmap is set. This offset field is relative to the start of the
|
||||
* INFO buffer, as is the next field within each capability header.
|
||||
* The id within the header is a shared address space per INFO ioctl,
|
||||
* while the version field is specific to the capability id. The
|
||||
* contents following the header are specific to the capability id.
|
||||
*/
|
||||
struct vfio_info_cap_header {
|
||||
__u16 id; /* Identifies capability */
|
||||
__u16 version; /* Version specific to the capability ID */
|
||||
__u32 next; /* Offset of next capability */
|
||||
};
|
||||
|
||||
/*
|
||||
* Callers of INFO ioctls passing insufficiently sized buffers will see
|
||||
* the capability chain flag bit set, a zero value for the first capability
|
||||
* offset (if available within the provided argsz), and argsz will be
|
||||
* updated to report the necessary buffer size. For compatibility, the
|
||||
* INFO ioctl will not report error in this case, but the capability chain
|
||||
* will not be available.
|
||||
*/
|
||||
|
||||
/* -------- IOCTLs for VFIO file descriptor (/dev/vfio/vfio) -------- */
|
||||
|
||||
/**
|
||||
|
|
@ -194,13 +221,73 @@ struct vfio_region_info {
|
|||
#define VFIO_REGION_INFO_FLAG_READ (1 << 0) /* Region supports read */
|
||||
#define VFIO_REGION_INFO_FLAG_WRITE (1 << 1) /* Region supports write */
|
||||
#define VFIO_REGION_INFO_FLAG_MMAP (1 << 2) /* Region supports mmap */
|
||||
#define VFIO_REGION_INFO_FLAG_CAPS (1 << 3) /* Info supports caps */
|
||||
__u32 index; /* Region index */
|
||||
__u32 resv; /* Reserved for alignment */
|
||||
__u32 cap_offset; /* Offset within info struct of first cap */
|
||||
__u64 size; /* Region size (bytes) */
|
||||
__u64 offset; /* Region offset from start of device fd */
|
||||
};
|
||||
#define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8)
|
||||
|
||||
/*
|
||||
* The sparse mmap capability allows finer granularity of specifying areas
|
||||
* within a region with mmap support. When specified, the user should only
|
||||
* mmap the offset ranges specified by the areas array. mmaps outside of the
|
||||
* areas specified may fail (such as the range covering a PCI MSI-X table) or
|
||||
* may result in improper device behavior.
|
||||
*
|
||||
* The structures below define version 1 of this capability.
|
||||
*/
|
||||
#define VFIO_REGION_INFO_CAP_SPARSE_MMAP 1
|
||||
|
||||
struct vfio_region_sparse_mmap_area {
|
||||
__u64 offset; /* Offset of mmap'able area within region */
|
||||
__u64 size; /* Size of mmap'able area */
|
||||
};
|
||||
|
||||
struct vfio_region_info_cap_sparse_mmap {
|
||||
struct vfio_info_cap_header header;
|
||||
__u32 nr_areas;
|
||||
__u32 reserved;
|
||||
struct vfio_region_sparse_mmap_area areas[];
|
||||
};
|
||||
|
||||
/*
|
||||
* The device specific type capability allows regions unique to a specific
|
||||
* device or class of devices to be exposed. This helps solve the problem for
|
||||
* vfio bus drivers of defining which region indexes correspond to which region
|
||||
* on the device, without needing to resort to static indexes, as done by
|
||||
* vfio-pci. For instance, if we were to go back in time, we might remove
|
||||
* VFIO_PCI_VGA_REGION_INDEX and let vfio-pci simply define that all indexes
|
||||
* greater than or equal to VFIO_PCI_NUM_REGIONS are device specific and we'd
|
||||
* make a "VGA" device specific type to describe the VGA access space. This
|
||||
* means that non-VGA devices wouldn't need to waste this index, and thus the
|
||||
* address space associated with it due to implementation of device file
|
||||
* descriptor offsets in vfio-pci.
|
||||
*
|
||||
* The current implementation is now part of the user ABI, so we can't use this
|
||||
* for VGA, but there are other upcoming use cases, such as opregions for Intel
|
||||
* IGD devices and framebuffers for vGPU devices. We missed VGA, but we'll
|
||||
* use this for future additions.
|
||||
*
|
||||
* The structure below defines version 1 of this capability.
|
||||
*/
|
||||
#define VFIO_REGION_INFO_CAP_TYPE 2
|
||||
|
||||
struct vfio_region_info_cap_type {
|
||||
struct vfio_info_cap_header header;
|
||||
__u32 type; /* global per bus driver */
|
||||
__u32 subtype; /* type specific */
|
||||
};
|
||||
|
||||
#define VFIO_REGION_TYPE_PCI_VENDOR_TYPE (1 << 31)
|
||||
#define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
|
||||
|
||||
/* 8086 Vendor sub-types */
|
||||
#define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
|
||||
#define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
|
||||
#define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
|
||||
|
||||
/**
|
||||
* VFIO_DEVICE_GET_IRQ_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 9,
|
||||
* struct vfio_irq_info)
|
||||
|
|
@ -336,7 +423,8 @@ enum {
|
|||
* between described ranges are unimplemented.
|
||||
*/
|
||||
VFIO_PCI_VGA_REGION_INDEX,
|
||||
VFIO_PCI_NUM_REGIONS
|
||||
VFIO_PCI_NUM_REGIONS = 9 /* Fixed user ABI, region indexes >=9 use */
|
||||
/* device specific cap to define content. */
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -126,6 +126,12 @@ struct vhost_memory {
|
|||
#define VHOST_SET_VRING_CALL _IOW(VHOST_VIRTIO, 0x21, struct vhost_vring_file)
|
||||
/* Set eventfd to signal an error */
|
||||
#define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
|
||||
/* Set busy loop timeout (in us) */
|
||||
#define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, \
|
||||
struct vhost_vring_state)
|
||||
/* Get busy loop timeout (in us) */
|
||||
#define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, \
|
||||
struct vhost_vring_state)
|
||||
|
||||
/* VHOST_NET specific defines */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue