mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-03-21 02:02:15 -06:00
linux-headers: Update to Linux v6.6-rc1
This update contains the required header changes for the "target/s390x: AP-passthrough for PV guests" patch from Steffen Eiden. Message-ID: <20230912093432.180041-1-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
ef1535901a
commit
da3c22c74a
23 changed files with 351 additions and 16 deletions
|
|
@ -1414,9 +1414,16 @@ struct kvm_device_attr {
|
|||
__u64 addr; /* userspace address of attr data */
|
||||
};
|
||||
|
||||
#define KVM_DEV_VFIO_GROUP 1
|
||||
#define KVM_DEV_VFIO_GROUP_ADD 1
|
||||
#define KVM_DEV_VFIO_GROUP_DEL 2
|
||||
#define KVM_DEV_VFIO_FILE 1
|
||||
|
||||
#define KVM_DEV_VFIO_FILE_ADD 1
|
||||
#define KVM_DEV_VFIO_FILE_DEL 2
|
||||
|
||||
/* KVM_DEV_VFIO_GROUP aliases are for compile time uapi compatibility */
|
||||
#define KVM_DEV_VFIO_GROUP KVM_DEV_VFIO_FILE
|
||||
|
||||
#define KVM_DEV_VFIO_GROUP_ADD KVM_DEV_VFIO_FILE_ADD
|
||||
#define KVM_DEV_VFIO_GROUP_DEL KVM_DEV_VFIO_FILE_DEL
|
||||
#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
|
||||
|
||||
enum kvm_device_type {
|
||||
|
|
|
|||
|
|
@ -45,3 +45,7 @@
|
|||
TYPE NAME[]; \
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef __counted_by
|
||||
#define __counted_by(m)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@
|
|||
UFFD_FEATURE_MINOR_SHMEM | \
|
||||
UFFD_FEATURE_EXACT_ADDRESS | \
|
||||
UFFD_FEATURE_WP_HUGETLBFS_SHMEM | \
|
||||
UFFD_FEATURE_WP_UNPOPULATED)
|
||||
UFFD_FEATURE_WP_UNPOPULATED | \
|
||||
UFFD_FEATURE_POISON)
|
||||
#define UFFD_API_IOCTLS \
|
||||
((__u64)1 << _UFFDIO_REGISTER | \
|
||||
(__u64)1 << _UFFDIO_UNREGISTER | \
|
||||
|
|
@ -49,12 +50,14 @@
|
|||
(__u64)1 << _UFFDIO_COPY | \
|
||||
(__u64)1 << _UFFDIO_ZEROPAGE | \
|
||||
(__u64)1 << _UFFDIO_WRITEPROTECT | \
|
||||
(__u64)1 << _UFFDIO_CONTINUE)
|
||||
(__u64)1 << _UFFDIO_CONTINUE | \
|
||||
(__u64)1 << _UFFDIO_POISON)
|
||||
#define UFFD_API_RANGE_IOCTLS_BASIC \
|
||||
((__u64)1 << _UFFDIO_WAKE | \
|
||||
(__u64)1 << _UFFDIO_COPY | \
|
||||
(__u64)1 << _UFFDIO_WRITEPROTECT | \
|
||||
(__u64)1 << _UFFDIO_CONTINUE | \
|
||||
(__u64)1 << _UFFDIO_WRITEPROTECT)
|
||||
(__u64)1 << _UFFDIO_POISON)
|
||||
|
||||
/*
|
||||
* Valid ioctl command number range with this API is from 0x00 to
|
||||
|
|
@ -71,6 +74,7 @@
|
|||
#define _UFFDIO_ZEROPAGE (0x04)
|
||||
#define _UFFDIO_WRITEPROTECT (0x06)
|
||||
#define _UFFDIO_CONTINUE (0x07)
|
||||
#define _UFFDIO_POISON (0x08)
|
||||
#define _UFFDIO_API (0x3F)
|
||||
|
||||
/* userfaultfd ioctl ids */
|
||||
|
|
@ -91,6 +95,8 @@
|
|||
struct uffdio_writeprotect)
|
||||
#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, \
|
||||
struct uffdio_continue)
|
||||
#define UFFDIO_POISON _IOWR(UFFDIO, _UFFDIO_POISON, \
|
||||
struct uffdio_poison)
|
||||
|
||||
/* read() structure */
|
||||
struct uffd_msg {
|
||||
|
|
@ -225,6 +231,7 @@ struct uffdio_api {
|
|||
#define UFFD_FEATURE_EXACT_ADDRESS (1<<11)
|
||||
#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1<<12)
|
||||
#define UFFD_FEATURE_WP_UNPOPULATED (1<<13)
|
||||
#define UFFD_FEATURE_POISON (1<<14)
|
||||
__u64 features;
|
||||
|
||||
__u64 ioctls;
|
||||
|
|
@ -321,6 +328,18 @@ struct uffdio_continue {
|
|||
__s64 mapped;
|
||||
};
|
||||
|
||||
struct uffdio_poison {
|
||||
struct uffdio_range range;
|
||||
#define UFFDIO_POISON_MODE_DONTWAKE ((__u64)1<<0)
|
||||
__u64 mode;
|
||||
|
||||
/*
|
||||
* Fields below here are written by the ioctl and must be at the end:
|
||||
* the copy_from_user will not read past here.
|
||||
*/
|
||||
__s64 updated;
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags for the userfaultfd(2) system call itself.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -217,6 +217,7 @@ struct vfio_device_info {
|
|||
__u32 num_regions; /* Max region index + 1 */
|
||||
__u32 num_irqs; /* Max IRQ index + 1 */
|
||||
__u32 cap_offset; /* Offset within info struct of first cap */
|
||||
__u32 pad;
|
||||
};
|
||||
#define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
|
||||
|
||||
|
|
@ -677,11 +678,60 @@ enum {
|
|||
* VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 12,
|
||||
* struct vfio_pci_hot_reset_info)
|
||||
*
|
||||
* This command is used to query the affected devices in the hot reset for
|
||||
* a given device.
|
||||
*
|
||||
* This command always reports the segment, bus, and devfn information for
|
||||
* each affected device, and selectively reports the group_id or devid per
|
||||
* the way how the calling device is opened.
|
||||
*
|
||||
* - If the calling device is opened via the traditional group/container
|
||||
* API, group_id is reported. User should check if it has owned all
|
||||
* the affected devices and provides a set of group fds to prove the
|
||||
* ownership in VFIO_DEVICE_PCI_HOT_RESET ioctl.
|
||||
*
|
||||
* - If the calling device is opened as a cdev, devid is reported.
|
||||
* Flag VFIO_PCI_HOT_RESET_FLAG_DEV_ID is set to indicate this
|
||||
* data type. All the affected devices should be represented in
|
||||
* the dev_set, ex. bound to a vfio driver, and also be owned by
|
||||
* this interface which is determined by the following conditions:
|
||||
* 1) Has a valid devid within the iommufd_ctx of the calling device.
|
||||
* Ownership cannot be determined across separate iommufd_ctx and
|
||||
* the cdev calling conventions do not support a proof-of-ownership
|
||||
* model as provided in the legacy group interface. In this case
|
||||
* valid devid with value greater than zero is provided in the return
|
||||
* structure.
|
||||
* 2) Does not have a valid devid within the iommufd_ctx of the calling
|
||||
* device, but belongs to the same IOMMU group as the calling device
|
||||
* or another opened device that has a valid devid within the
|
||||
* iommufd_ctx of the calling device. This provides implicit ownership
|
||||
* for devices within the same DMA isolation context. In this case
|
||||
* the devid value of VFIO_PCI_DEVID_OWNED is provided in the return
|
||||
* structure.
|
||||
*
|
||||
* A devid value of VFIO_PCI_DEVID_NOT_OWNED is provided in the return
|
||||
* structure for affected devices where device is NOT represented in the
|
||||
* dev_set or ownership is not available. Such devices prevent the use
|
||||
* of VFIO_DEVICE_PCI_HOT_RESET ioctl outside of the proof-of-ownership
|
||||
* calling conventions (ie. via legacy group accessed devices). Flag
|
||||
* VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED would be set when all the
|
||||
* affected devices are represented in the dev_set and also owned by
|
||||
* the user. This flag is available only when
|
||||
* flag VFIO_PCI_HOT_RESET_FLAG_DEV_ID is set, otherwise reserved.
|
||||
* When set, user could invoke VFIO_DEVICE_PCI_HOT_RESET with a zero
|
||||
* length fd array on the calling device as the ownership is validated
|
||||
* by iommufd_ctx.
|
||||
*
|
||||
* Return: 0 on success, -errno on failure:
|
||||
* -enospc = insufficient buffer, -enodev = unsupported for device.
|
||||
*/
|
||||
struct vfio_pci_dependent_device {
|
||||
__u32 group_id;
|
||||
union {
|
||||
__u32 group_id;
|
||||
__u32 devid;
|
||||
#define VFIO_PCI_DEVID_OWNED 0
|
||||
#define VFIO_PCI_DEVID_NOT_OWNED -1
|
||||
};
|
||||
__u16 segment;
|
||||
__u8 bus;
|
||||
__u8 devfn; /* Use PCI_SLOT/PCI_FUNC */
|
||||
|
|
@ -690,6 +740,8 @@ struct vfio_pci_dependent_device {
|
|||
struct vfio_pci_hot_reset_info {
|
||||
__u32 argsz;
|
||||
__u32 flags;
|
||||
#define VFIO_PCI_HOT_RESET_FLAG_DEV_ID (1 << 0)
|
||||
#define VFIO_PCI_HOT_RESET_FLAG_DEV_ID_OWNED (1 << 1)
|
||||
__u32 count;
|
||||
struct vfio_pci_dependent_device devices[];
|
||||
};
|
||||
|
|
@ -700,6 +752,24 @@ struct vfio_pci_hot_reset_info {
|
|||
* VFIO_DEVICE_PCI_HOT_RESET - _IOW(VFIO_TYPE, VFIO_BASE + 13,
|
||||
* struct vfio_pci_hot_reset)
|
||||
*
|
||||
* A PCI hot reset results in either a bus or slot reset which may affect
|
||||
* other devices sharing the bus/slot. The calling user must have
|
||||
* ownership of the full set of affected devices as determined by the
|
||||
* VFIO_DEVICE_GET_PCI_HOT_RESET_INFO ioctl.
|
||||
*
|
||||
* When called on a device file descriptor acquired through the vfio
|
||||
* group interface, the user is required to provide proof of ownership
|
||||
* of those affected devices via the group_fds array in struct
|
||||
* vfio_pci_hot_reset.
|
||||
*
|
||||
* When called on a direct cdev opened vfio device, the flags field of
|
||||
* struct vfio_pci_hot_reset_info reports the ownership status of the
|
||||
* affected devices and this ioctl must be called with an empty group_fds
|
||||
* array. See above INFO ioctl definition for ownership requirements.
|
||||
*
|
||||
* Mixed usage of legacy groups and cdevs across the set of affected
|
||||
* devices is not supported.
|
||||
*
|
||||
* Return: 0 on success, -errno on failure.
|
||||
*/
|
||||
struct vfio_pci_hot_reset {
|
||||
|
|
@ -828,6 +898,83 @@ struct vfio_device_feature {
|
|||
|
||||
#define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
|
||||
|
||||
/*
|
||||
* VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18,
|
||||
* struct vfio_device_bind_iommufd)
|
||||
* @argsz: User filled size of this data.
|
||||
* @flags: Must be 0.
|
||||
* @iommufd: iommufd to bind.
|
||||
* @out_devid: The device id generated by this bind. devid is a handle for
|
||||
* this device/iommufd bond and can be used in IOMMUFD commands.
|
||||
*
|
||||
* Bind a vfio_device to the specified iommufd.
|
||||
*
|
||||
* User is restricted from accessing the device before the binding operation
|
||||
* is completed. Only allowed on cdev fds.
|
||||
*
|
||||
* Unbind is automatically conducted when device fd is closed.
|
||||
*
|
||||
* Return: 0 on success, -errno on failure.
|
||||
*/
|
||||
struct vfio_device_bind_iommufd {
|
||||
__u32 argsz;
|
||||
__u32 flags;
|
||||
__s32 iommufd;
|
||||
__u32 out_devid;
|
||||
};
|
||||
|
||||
#define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18)
|
||||
|
||||
/*
|
||||
* VFIO_DEVICE_ATTACH_IOMMUFD_PT - _IOW(VFIO_TYPE, VFIO_BASE + 19,
|
||||
* struct vfio_device_attach_iommufd_pt)
|
||||
* @argsz: User filled size of this data.
|
||||
* @flags: Must be 0.
|
||||
* @pt_id: Input the target id which can represent an ioas or a hwpt
|
||||
* allocated via iommufd subsystem.
|
||||
* Output the input ioas id or the attached hwpt id which could
|
||||
* be the specified hwpt itself or a hwpt automatically created
|
||||
* for the specified ioas by kernel during the attachment.
|
||||
*
|
||||
* Associate the device with an address space within the bound iommufd.
|
||||
* Undo by VFIO_DEVICE_DETACH_IOMMUFD_PT or device fd close. This is only
|
||||
* allowed on cdev fds.
|
||||
*
|
||||
* If a vfio device is currently attached to a valid hw_pagetable, without doing
|
||||
* a VFIO_DEVICE_DETACH_IOMMUFD_PT, a second VFIO_DEVICE_ATTACH_IOMMUFD_PT ioctl
|
||||
* passing in another hw_pagetable (hwpt) id is allowed. This action, also known
|
||||
* as a hw_pagetable replacement, will replace the device's currently attached
|
||||
* hw_pagetable with a new hw_pagetable corresponding to the given pt_id.
|
||||
*
|
||||
* Return: 0 on success, -errno on failure.
|
||||
*/
|
||||
struct vfio_device_attach_iommufd_pt {
|
||||
__u32 argsz;
|
||||
__u32 flags;
|
||||
__u32 pt_id;
|
||||
};
|
||||
|
||||
#define VFIO_DEVICE_ATTACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 19)
|
||||
|
||||
/*
|
||||
* VFIO_DEVICE_DETACH_IOMMUFD_PT - _IOW(VFIO_TYPE, VFIO_BASE + 20,
|
||||
* struct vfio_device_detach_iommufd_pt)
|
||||
* @argsz: User filled size of this data.
|
||||
* @flags: Must be 0.
|
||||
*
|
||||
* Remove the association of the device and its current associated address
|
||||
* space. After it, the device should be in a blocking DMA state. This is only
|
||||
* allowed on cdev fds.
|
||||
*
|
||||
* Return: 0 on success, -errno on failure.
|
||||
*/
|
||||
struct vfio_device_detach_iommufd_pt {
|
||||
__u32 argsz;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#define VFIO_DEVICE_DETACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 20)
|
||||
|
||||
/*
|
||||
* Provide support for setting a PCI VF Token, which is used as a shared
|
||||
* secret between PF and VF drivers. This feature may only be set on a
|
||||
|
|
@ -1304,6 +1451,7 @@ struct vfio_iommu_type1_info {
|
|||
#define VFIO_IOMMU_INFO_CAPS (1 << 1) /* Info supports caps */
|
||||
__u64 iova_pgsizes; /* Bitmap of supported page sizes */
|
||||
__u32 cap_offset; /* Offset within info struct of first cap */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue