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
@ -206,6 +206,11 @@
|
||||
* - add extension header
|
||||
* - add FUSE_EXT_GROUPS
|
||||
* - add FUSE_CREATE_SUPP_GROUP
|
||||
* - add FUSE_HAS_EXPIRE_ONLY
|
||||
*
|
||||
* 7.39
|
||||
* - add FUSE_DIRECT_IO_RELAX
|
||||
* - add FUSE_STATX and related structures
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FUSE_H
|
||||
@ -237,7 +242,7 @@
|
||||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
/** Minor version number of this interface */
|
||||
#define FUSE_KERNEL_MINOR_VERSION 38
|
||||
#define FUSE_KERNEL_MINOR_VERSION 39
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
@ -264,6 +269,40 @@ struct fuse_attr {
|
||||
uint32_t flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* The following structures are bit-for-bit compatible with the statx(2) ABI in
|
||||
* Linux.
|
||||
*/
|
||||
struct fuse_sx_time {
|
||||
int64_t tv_sec;
|
||||
uint32_t tv_nsec;
|
||||
int32_t __reserved;
|
||||
};
|
||||
|
||||
struct fuse_statx {
|
||||
uint32_t mask;
|
||||
uint32_t blksize;
|
||||
uint64_t attributes;
|
||||
uint32_t nlink;
|
||||
uint32_t uid;
|
||||
uint32_t gid;
|
||||
uint16_t mode;
|
||||
uint16_t __spare0[1];
|
||||
uint64_t ino;
|
||||
uint64_t size;
|
||||
uint64_t blocks;
|
||||
uint64_t attributes_mask;
|
||||
struct fuse_sx_time atime;
|
||||
struct fuse_sx_time btime;
|
||||
struct fuse_sx_time ctime;
|
||||
struct fuse_sx_time mtime;
|
||||
uint32_t rdev_major;
|
||||
uint32_t rdev_minor;
|
||||
uint32_t dev_major;
|
||||
uint32_t dev_minor;
|
||||
uint64_t __spare2[14];
|
||||
};
|
||||
|
||||
struct fuse_kstatfs {
|
||||
uint64_t blocks;
|
||||
uint64_t bfree;
|
||||
@ -365,6 +404,9 @@ struct fuse_file_lock {
|
||||
* FUSE_HAS_INODE_DAX: use per inode DAX
|
||||
* FUSE_CREATE_SUPP_GROUP: add supplementary group info to create, mkdir,
|
||||
* symlink and mknod (single group that matches parent)
|
||||
* FUSE_HAS_EXPIRE_ONLY: kernel supports expiry-only entry invalidation
|
||||
* FUSE_DIRECT_IO_RELAX: relax restrictions in FOPEN_DIRECT_IO mode, for now
|
||||
* allow shared mmap
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
@ -402,6 +444,8 @@ struct fuse_file_lock {
|
||||
#define FUSE_SECURITY_CTX (1ULL << 32)
|
||||
#define FUSE_HAS_INODE_DAX (1ULL << 33)
|
||||
#define FUSE_CREATE_SUPP_GROUP (1ULL << 34)
|
||||
#define FUSE_HAS_EXPIRE_ONLY (1ULL << 35)
|
||||
#define FUSE_DIRECT_IO_RELAX (1ULL << 36)
|
||||
|
||||
/**
|
||||
* CUSE INIT request/reply flags
|
||||
@ -568,6 +612,7 @@ enum fuse_opcode {
|
||||
FUSE_REMOVEMAPPING = 49,
|
||||
FUSE_SYNCFS = 50,
|
||||
FUSE_TMPFILE = 51,
|
||||
FUSE_STATX = 52,
|
||||
|
||||
/* CUSE specific operations */
|
||||
CUSE_INIT = 4096,
|
||||
@ -632,6 +677,22 @@ struct fuse_attr_out {
|
||||
struct fuse_attr attr;
|
||||
};
|
||||
|
||||
struct fuse_statx_in {
|
||||
uint32_t getattr_flags;
|
||||
uint32_t reserved;
|
||||
uint64_t fh;
|
||||
uint32_t sx_flags;
|
||||
uint32_t sx_mask;
|
||||
};
|
||||
|
||||
struct fuse_statx_out {
|
||||
uint64_t attr_valid; /* Cache timeout for the attributes */
|
||||
uint32_t attr_valid_nsec;
|
||||
uint32_t flags;
|
||||
uint64_t spare[2];
|
||||
struct fuse_statx stat;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_MKNOD_IN_SIZE 8
|
||||
|
||||
struct fuse_mknod_in {
|
||||
|
@ -181,5 +181,9 @@ struct vhost_vdpa_iova_range {
|
||||
#define VHOST_BACKEND_F_SUSPEND 0x4
|
||||
/* Device can be resumed */
|
||||
#define VHOST_BACKEND_F_RESUME 0x5
|
||||
/* Device supports the driver enabling virtqueues both before and after
|
||||
* DRIVER_OK
|
||||
*/
|
||||
#define VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK 0x6
|
||||
|
||||
#endif
|
||||
|
@ -56,6 +56,7 @@
|
||||
#define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow
|
||||
* Steering */
|
||||
#define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */
|
||||
#define VIRTIO_NET_F_VQ_NOTF_COAL 52 /* Device supports virtqueue notification coalescing */
|
||||
#define VIRTIO_NET_F_NOTF_COAL 53 /* Device supports notifications coalescing */
|
||||
#define VIRTIO_NET_F_GUEST_USO4 54 /* Guest can handle USOv4 in. */
|
||||
#define VIRTIO_NET_F_GUEST_USO6 55 /* Guest can handle USOv6 in. */
|
||||
@ -391,5 +392,18 @@ struct virtio_net_ctrl_coal_rx {
|
||||
};
|
||||
|
||||
#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
|
||||
#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_SET 2
|
||||
#define VIRTIO_NET_CTRL_NOTF_COAL_VQ_GET 3
|
||||
|
||||
struct virtio_net_ctrl_coal {
|
||||
uint32_t max_packets;
|
||||
uint32_t max_usecs;
|
||||
};
|
||||
|
||||
struct virtio_net_ctrl_coal_vq {
|
||||
uint16_t vqn;
|
||||
uint16_t reserved;
|
||||
struct virtio_net_ctrl_coal coal;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_VIRTIO_NET_H */
|
||||
|
@ -1 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2012 ARM Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef __ASM_BITSPERLONG_H
|
||||
#define __ASM_BITSPERLONG_H
|
||||
|
||||
#define __BITS_PER_LONG 64
|
||||
|
||||
#include <asm-generic/bitsperlong.h>
|
||||
|
||||
#endif /* __ASM_BITSPERLONG_H */
|
||||
|
@ -820,8 +820,11 @@ __SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node)
|
||||
#define __NR_cachestat 451
|
||||
__SYSCALL(__NR_cachestat, sys_cachestat)
|
||||
|
||||
#define __NR_fchmodat2 452
|
||||
__SYSCALL(__NR_fchmodat2, sys_fchmodat2)
|
||||
|
||||
#undef __NR_syscalls
|
||||
#define __NR_syscalls 452
|
||||
#define __NR_syscalls 453
|
||||
|
||||
/*
|
||||
* 32 bit systems traditionally used different
|
||||
|
@ -380,5 +380,6 @@
|
||||
#define __NR_futex_waitv (__NR_Linux + 449)
|
||||
#define __NR_set_mempolicy_home_node (__NR_Linux + 450)
|
||||
#define __NR_cachestat (__NR_Linux + 451)
|
||||
#define __NR_fchmodat2 (__NR_Linux + 452)
|
||||
|
||||
#endif /* _ASM_UNISTD_N32_H */
|
||||
|
@ -356,5 +356,6 @@
|
||||
#define __NR_futex_waitv (__NR_Linux + 449)
|
||||
#define __NR_set_mempolicy_home_node (__NR_Linux + 450)
|
||||
#define __NR_cachestat (__NR_Linux + 451)
|
||||
#define __NR_fchmodat2 (__NR_Linux + 452)
|
||||
|
||||
#endif /* _ASM_UNISTD_N64_H */
|
||||
|
@ -426,5 +426,6 @@
|
||||
#define __NR_futex_waitv (__NR_Linux + 449)
|
||||
#define __NR_set_mempolicy_home_node (__NR_Linux + 450)
|
||||
#define __NR_cachestat (__NR_Linux + 451)
|
||||
#define __NR_fchmodat2 (__NR_Linux + 452)
|
||||
|
||||
#endif /* _ASM_UNISTD_O32_H */
|
||||
|
@ -433,6 +433,7 @@
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
||||
#endif /* _ASM_UNISTD_32_H */
|
||||
|
@ -405,6 +405,7 @@
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
||||
#endif /* _ASM_UNISTD_64_H */
|
||||
|
@ -1 +1,14 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2012 ARM Ltd.
|
||||
* Copyright (C) 2015 Regents of the University of California
|
||||
*/
|
||||
|
||||
#ifndef _ASM_RISCV_BITSPERLONG_H
|
||||
#define _ASM_RISCV_BITSPERLONG_H
|
||||
|
||||
#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
|
||||
|
||||
#include <asm-generic/bitsperlong.h>
|
||||
|
||||
#endif /* _ASM_RISCV_BITSPERLONG_H */
|
||||
|
@ -55,6 +55,7 @@ struct kvm_riscv_config {
|
||||
unsigned long marchid;
|
||||
unsigned long mimpid;
|
||||
unsigned long zicboz_block_size;
|
||||
unsigned long satp_mode;
|
||||
};
|
||||
|
||||
/* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
|
||||
@ -124,6 +125,12 @@ enum KVM_RISCV_ISA_EXT_ID {
|
||||
KVM_RISCV_ISA_EXT_SSAIA,
|
||||
KVM_RISCV_ISA_EXT_V,
|
||||
KVM_RISCV_ISA_EXT_SVNAPOT,
|
||||
KVM_RISCV_ISA_EXT_ZBA,
|
||||
KVM_RISCV_ISA_EXT_ZBS,
|
||||
KVM_RISCV_ISA_EXT_ZICNTR,
|
||||
KVM_RISCV_ISA_EXT_ZICSR,
|
||||
KVM_RISCV_ISA_EXT_ZIFENCEI,
|
||||
KVM_RISCV_ISA_EXT_ZIHPM,
|
||||
KVM_RISCV_ISA_EXT_MAX,
|
||||
};
|
||||
|
||||
@ -193,6 +200,15 @@ enum KVM_RISCV_SBI_EXT_ID {
|
||||
|
||||
/* ISA Extension registers are mapped as type 7 */
|
||||
#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_ISA_SINGLE (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_ISA_MULTI_EN (0x1 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_ISA_MULTI_DIS (0x2 << KVM_REG_RISCV_SUBTYPE_SHIFT)
|
||||
#define KVM_REG_RISCV_ISA_MULTI_REG(__ext_id) \
|
||||
((__ext_id) / __BITS_PER_LONG)
|
||||
#define KVM_REG_RISCV_ISA_MULTI_MASK(__ext_id) \
|
||||
(1UL << ((__ext_id) % __BITS_PER_LONG))
|
||||
#define KVM_REG_RISCV_ISA_MULTI_REG_LAST \
|
||||
KVM_REG_RISCV_ISA_MULTI_REG(KVM_RISCV_ISA_EXT_MAX - 1)
|
||||
|
||||
/* SBI extension registers are mapped as type 8 */
|
||||
#define KVM_REG_RISCV_SBI_EXT (0x08 << KVM_REG_RISCV_TYPE_SHIFT)
|
||||
|
@ -159,6 +159,22 @@ struct kvm_s390_vm_cpu_subfunc {
|
||||
__u8 reserved[1728];
|
||||
};
|
||||
|
||||
#define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST 6
|
||||
#define KVM_S390_VM_CPU_MACHINE_UV_FEAT_GUEST 7
|
||||
|
||||
#define KVM_S390_VM_CPU_UV_FEAT_NR_BITS 64
|
||||
struct kvm_s390_vm_cpu_uv_feat {
|
||||
union {
|
||||
struct {
|
||||
__u64 : 4;
|
||||
__u64 ap : 1; /* bit 4 */
|
||||
__u64 ap_intr : 1; /* bit 5 */
|
||||
__u64 : 58;
|
||||
};
|
||||
__u64 feat;
|
||||
};
|
||||
};
|
||||
|
||||
/* kvm attributes for crypto */
|
||||
#define KVM_S390_VM_CRYPTO_ENABLE_AES_KW 0
|
||||
#define KVM_S390_VM_CRYPTO_ENABLE_DEA_KW 1
|
||||
|
@ -424,5 +424,6 @@
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
#endif /* _ASM_S390_UNISTD_32_H */
|
||||
|
@ -372,5 +372,6 @@
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
#endif /* _ASM_S390_UNISTD_64_H */
|
||||
|
@ -3,14 +3,10 @@
|
||||
#define _ASM_X86_MMAN_H
|
||||
|
||||
#define MAP_32BIT 0x40 /* only give out 32bit addresses */
|
||||
#define MAP_ABOVE4G 0x80 /* only map above 4GB */
|
||||
|
||||
#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
|
||||
#define arch_calc_vm_prot_bits(prot, key) ( \
|
||||
((key) & 0x1 ? VM_PKEY_BIT0 : 0) | \
|
||||
((key) & 0x2 ? VM_PKEY_BIT1 : 0) | \
|
||||
((key) & 0x4 ? VM_PKEY_BIT2 : 0) | \
|
||||
((key) & 0x8 ? VM_PKEY_BIT3 : 0))
|
||||
#endif
|
||||
/* Flags for map_shadow_stack(2) */
|
||||
#define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */
|
||||
|
||||
#include <asm-generic/mman.h>
|
||||
|
||||
|
@ -442,6 +442,7 @@
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
||||
#endif /* _ASM_UNISTD_32_H */
|
||||
|
@ -364,6 +364,8 @@
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
#define __NR_map_shadow_stack 453
|
||||
|
||||
|
||||
#endif /* _ASM_UNISTD_64_H */
|
||||
|
@ -317,6 +317,7 @@
|
||||
#define __NR_futex_waitv (__X32_SYSCALL_BIT + 449)
|
||||
#define __NR_set_mempolicy_home_node (__X32_SYSCALL_BIT + 450)
|
||||
#define __NR_cachestat (__X32_SYSCALL_BIT + 451)
|
||||
#define __NR_fchmodat2 (__X32_SYSCALL_BIT + 452)
|
||||
#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
|
||||
#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
|
||||
#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
|
||||
|
@ -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…
Reference in New Issue
Block a user