On 6/2/23 16:11, Tony Krowiak wrote:
Note: This is a placeholder patch that includes unmerged uapi changes.

Signed-off-by: Tony Krowiak <[email protected]>
Link: 
https://lore.kernel.org/qemu-devel/[email protected]/

I am preparing a vfio-next tree including these changes plus a linux-headers
update. I am just waiting for the 6.5-rc1 tag to be pushed.

Thanks,

C.

---
  include/standard-headers/linux/const.h        |  2 +-
  include/standard-headers/linux/virtio_blk.h   | 18 +++----
  .../standard-headers/linux/virtio_config.h    |  6 +++
  include/standard-headers/linux/virtio_net.h   |  1 +
  linux-headers/asm-arm64/kvm.h                 | 33 ++++++++++++
  linux-headers/asm-riscv/kvm.h                 | 53 ++++++++++++++++++-
  linux-headers/asm-riscv/unistd.h              |  9 ++++
  linux-headers/asm-s390/unistd_32.h            |  1 +
  linux-headers/asm-s390/unistd_64.h            |  1 +
  linux-headers/asm-x86/kvm.h                   |  3 ++
  linux-headers/linux/const.h                   |  2 +-
  linux-headers/linux/kvm.h                     | 12 +++--
  linux-headers/linux/psp-sev.h                 |  7 +++
  linux-headers/linux/userfaultfd.h             | 17 +++++-
  linux-headers/linux/vfio.h                    |  9 ++++
  15 files changed, 158 insertions(+), 16 deletions(-)

diff --git a/include/standard-headers/linux/const.h 
b/include/standard-headers/linux/const.h
index 5e4898725168..1eb84b5087f8 100644
--- a/include/standard-headers/linux/const.h
+++ b/include/standard-headers/linux/const.h
@@ -28,7 +28,7 @@
  #define _BITUL(x)     (_UL(1) << (x))
  #define _BITULL(x)    (_ULL(1) << (x))
-#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
+#define __ALIGN_KERNEL(x, a)           __ALIGN_KERNEL_MASK(x, 
(__typeof__(x))(a) - 1)
  #define __ALIGN_KERNEL_MASK(x, mask)  (((x) + (mask)) & ~(mask))
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
diff --git a/include/standard-headers/linux/virtio_blk.h 
b/include/standard-headers/linux/virtio_blk.h
index 7155b1a4701b..d7be3cf5e42f 100644
--- a/include/standard-headers/linux/virtio_blk.h
+++ b/include/standard-headers/linux/virtio_blk.h
@@ -138,11 +138,11 @@ struct virtio_blk_config {
/* Zoned block device characteristics (if VIRTIO_BLK_F_ZONED) */
        struct virtio_blk_zoned_characteristics {
-               uint32_t zone_sectors;
-               uint32_t max_open_zones;
-               uint32_t max_active_zones;
-               uint32_t max_append_sectors;
-               uint32_t write_granularity;
+               __virtio32 zone_sectors;
+               __virtio32 max_open_zones;
+               __virtio32 max_active_zones;
+               __virtio32 max_append_sectors;
+               __virtio32 write_granularity;
                uint8_t model;
                uint8_t unused2[3];
        } zoned;
@@ -239,11 +239,11 @@ struct virtio_blk_outhdr {
   */
  struct virtio_blk_zone_descriptor {
        /* Zone capacity */
-       uint64_t z_cap;
+       __virtio64 z_cap;
        /* The starting sector of the zone */
-       uint64_t z_start;
+       __virtio64 z_start;
        /* Zone write pointer position in sectors */
-       uint64_t z_wp;
+       __virtio64 z_wp;
        /* Zone type */
        uint8_t z_type;
        /* Zone state */
@@ -252,7 +252,7 @@ struct virtio_blk_zone_descriptor {
  };
struct virtio_blk_zone_report {
-       uint64_t nr_zones;
+       __virtio64 nr_zones;
        uint8_t reserved[56];
        struct virtio_blk_zone_descriptor zones[];
  };
diff --git a/include/standard-headers/linux/virtio_config.h 
b/include/standard-headers/linux/virtio_config.h
index 965ee6ae237e..8a7d0dc8b007 100644
--- a/include/standard-headers/linux/virtio_config.h
+++ b/include/standard-headers/linux/virtio_config.h
@@ -97,6 +97,12 @@
   */
  #define VIRTIO_F_SR_IOV                       37
+/*
+ * This feature indicates that the driver passes extra data (besides
+ * identifying the virtqueue) in its device notifications.
+ */
+#define VIRTIO_F_NOTIFICATION_DATA     38
+
  /*
   * This feature indicates that the driver can reset a queue individually.
   */
diff --git a/include/standard-headers/linux/virtio_net.h 
b/include/standard-headers/linux/virtio_net.h
index c0e797067aae..2325485f2ca8 100644
--- a/include/standard-headers/linux/virtio_net.h
+++ b/include/standard-headers/linux/virtio_net.h
@@ -61,6 +61,7 @@
  #define VIRTIO_NET_F_GUEST_USO6       55      /* Guest can handle USOv6 in. */
  #define VIRTIO_NET_F_HOST_USO 56      /* Host can handle USO in. */
  #define VIRTIO_NET_F_HASH_REPORT  57  /* Supports hash report */
+#define VIRTIO_NET_F_GUEST_HDRLEN  59  /* Guest provides the exact hdr_len 
value. */
  #define VIRTIO_NET_F_RSS        60    /* Supports RSS RX steering */
  #define VIRTIO_NET_F_RSC_EXT    61    /* extended coalescing info */
  #define VIRTIO_NET_F_STANDBY    62    /* Act as standby for another device
diff --git a/linux-headers/asm-arm64/kvm.h b/linux-headers/asm-arm64/kvm.h
index d7e7bb885e20..38e5957526c2 100644
--- a/linux-headers/asm-arm64/kvm.h
+++ b/linux-headers/asm-arm64/kvm.h
@@ -198,6 +198,15 @@ struct kvm_arm_copy_mte_tags {
        __u64 reserved[2];
  };
+/*
+ * Counter/Timer offset structure. Describe the virtual/physical offset.
+ * To be used with KVM_ARM_SET_COUNTER_OFFSET.
+ */
+struct kvm_arm_counter_offset {
+       __u64 counter_offset;
+       __u64 reserved;
+};
+
  #define KVM_ARM_TAGS_TO_GUEST         0
  #define KVM_ARM_TAGS_FROM_GUEST               1
@@ -363,6 +372,10 @@ enum {
        KVM_REG_ARM_VENDOR_HYP_BIT_PTP          = 1,
  };
+/* Device Control API on vm fd */
+#define KVM_ARM_VM_SMCCC_CTRL          0
+#define   KVM_ARM_VM_SMCCC_FILTER      0
+
  /* Device Control API: ARM VGIC */
  #define KVM_DEV_ARM_VGIC_GRP_ADDR     0
  #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS        1
@@ -402,6 +415,8 @@ enum {
  #define KVM_ARM_VCPU_TIMER_CTRL               1
  #define   KVM_ARM_VCPU_TIMER_IRQ_VTIMER               0
  #define   KVM_ARM_VCPU_TIMER_IRQ_PTIMER               1
+#define   KVM_ARM_VCPU_TIMER_IRQ_HVTIMER       2
+#define   KVM_ARM_VCPU_TIMER_IRQ_HPTIMER       3
  #define KVM_ARM_VCPU_PVTIME_CTRL      2
  #define   KVM_ARM_VCPU_PVTIME_IPA     0
@@ -458,6 +473,24 @@ enum {
  /* run->fail_entry.hardware_entry_failure_reason codes. */
  #define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED   (1ULL << 0)
+enum kvm_smccc_filter_action {
+       KVM_SMCCC_FILTER_HANDLE = 0,
+       KVM_SMCCC_FILTER_DENY,
+       KVM_SMCCC_FILTER_FWD_TO_USER,
+
+};
+
+struct kvm_smccc_filter {
+       __u32 base;
+       __u32 nr_functions;
+       __u8 action;
+       __u8 pad[15];
+};
+
+/* arm64-specific KVM_EXIT_HYPERCALL flags */
+#define KVM_HYPERCALL_EXIT_SMC         (1U << 0)
+#define KVM_HYPERCALL_EXIT_16BIT       (1U << 1)
+
  #endif
#endif /* __ARM_KVM_H__ */
diff --git a/linux-headers/asm-riscv/kvm.h b/linux-headers/asm-riscv/kvm.h
index 92af6f3f057c..f92790c9481a 100644
--- a/linux-headers/asm-riscv/kvm.h
+++ b/linux-headers/asm-riscv/kvm.h
@@ -12,6 +12,7 @@
  #ifndef __ASSEMBLY__
#include <linux/types.h>
+#include <asm/bitsperlong.h>
  #include <asm/ptrace.h>
#define __KVM_HAVE_READONLY_MEM
@@ -52,6 +53,7 @@ struct kvm_riscv_config {
        unsigned long mvendorid;
        unsigned long marchid;
        unsigned long mimpid;
+       unsigned long zicboz_block_size;
  };
/* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
@@ -64,7 +66,7 @@ struct kvm_riscv_core {
  #define KVM_RISCV_MODE_S      1
  #define KVM_RISCV_MODE_U      0
-/* CSR registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
+/* General CSR registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
  struct kvm_riscv_csr {
        unsigned long sstatus;
        unsigned long sie;
@@ -78,6 +80,17 @@ struct kvm_riscv_csr {
        unsigned long scounteren;
  };
+/* AIA CSR registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
+struct kvm_riscv_aia_csr {
+       unsigned long siselect;
+       unsigned long iprio1;
+       unsigned long iprio2;
+       unsigned long sieh;
+       unsigned long siph;
+       unsigned long iprio1h;
+       unsigned long iprio2h;
+};
+
  /* TIMER registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
  struct kvm_riscv_timer {
        __u64 frequency;
@@ -105,9 +118,29 @@ enum KVM_RISCV_ISA_EXT_ID {
        KVM_RISCV_ISA_EXT_SVINVAL,
        KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
        KVM_RISCV_ISA_EXT_ZICBOM,
+       KVM_RISCV_ISA_EXT_ZICBOZ,
+       KVM_RISCV_ISA_EXT_ZBB,
+       KVM_RISCV_ISA_EXT_SSAIA,
        KVM_RISCV_ISA_EXT_MAX,
  };
+/*
+ * SBI extension IDs specific to KVM. This is not the same as the SBI
+ * extension IDs defined by the RISC-V SBI specification.
+ */
+enum KVM_RISCV_SBI_EXT_ID {
+       KVM_RISCV_SBI_EXT_V01 = 0,
+       KVM_RISCV_SBI_EXT_TIME,
+       KVM_RISCV_SBI_EXT_IPI,
+       KVM_RISCV_SBI_EXT_RFENCE,
+       KVM_RISCV_SBI_EXT_SRST,
+       KVM_RISCV_SBI_EXT_HSM,
+       KVM_RISCV_SBI_EXT_PMU,
+       KVM_RISCV_SBI_EXT_EXPERIMENTAL,
+       KVM_RISCV_SBI_EXT_VENDOR,
+       KVM_RISCV_SBI_EXT_MAX,
+};
+
  /* Possible states for kvm_riscv_timer */
  #define KVM_RISCV_TIMER_STATE_OFF     0
  #define KVM_RISCV_TIMER_STATE_ON      1
@@ -118,6 +151,8 @@ enum KVM_RISCV_ISA_EXT_ID {
  /* If you need to interpret the index values, here is the key: */
  #define KVM_REG_RISCV_TYPE_MASK               0x00000000FF000000
  #define KVM_REG_RISCV_TYPE_SHIFT      24
+#define KVM_REG_RISCV_SUBTYPE_MASK     0x0000000000FF0000
+#define KVM_REG_RISCV_SUBTYPE_SHIFT    16
/* Config registers are mapped as type 1 */
  #define KVM_REG_RISCV_CONFIG          (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
@@ -131,8 +166,12 @@ enum KVM_RISCV_ISA_EXT_ID {
/* Control and status registers are mapped as type 3 */
  #define KVM_REG_RISCV_CSR             (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_GENERAL      (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_AIA          (0x1 << KVM_REG_RISCV_SUBTYPE_SHIFT)
  #define KVM_REG_RISCV_CSR_REG(name)   \
                (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR_AIA_REG(name)        \
+       (offsetof(struct kvm_riscv_aia_csr, name) / sizeof(unsigned long))
/* Timer registers are mapped as type 4 */
  #define KVM_REG_RISCV_TIMER           (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
@@ -152,6 +191,18 @@ enum KVM_RISCV_ISA_EXT_ID {
  /* ISA Extension registers are mapped as type 7 */
  #define KVM_REG_RISCV_ISA_EXT         (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+/* SBI extension registers are mapped as type 8 */
+#define KVM_REG_RISCV_SBI_EXT          (0x08 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_SBI_SINGLE       (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
+#define KVM_REG_RISCV_SBI_MULTI_EN     (0x1 << KVM_REG_RISCV_SUBTYPE_SHIFT)
+#define KVM_REG_RISCV_SBI_MULTI_DIS    (0x2 << KVM_REG_RISCV_SUBTYPE_SHIFT)
+#define KVM_REG_RISCV_SBI_MULTI_REG(__ext_id)  \
+               ((__ext_id) / __BITS_PER_LONG)
+#define KVM_REG_RISCV_SBI_MULTI_MASK(__ext_id) \
+               (1UL << ((__ext_id) % __BITS_PER_LONG))
+#define KVM_REG_RISCV_SBI_MULTI_REG_LAST       \
+               KVM_REG_RISCV_SBI_MULTI_REG(KVM_RISCV_SBI_EXT_MAX - 1)
+
  #endif
#endif /* __LINUX_KVM_RISCV_H */
diff --git a/linux-headers/asm-riscv/unistd.h b/linux-headers/asm-riscv/unistd.h
index 73d7cdd2ec49..950ab3fd4409 100644
--- a/linux-headers/asm-riscv/unistd.h
+++ b/linux-headers/asm-riscv/unistd.h
@@ -43,3 +43,12 @@
  #define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
  #endif
  __SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
+
+/*
+ * Allows userspace to query the kernel for CPU architecture and
+ * microarchitecture details across a given set of CPUs.
+ */
+#ifndef __NR_riscv_hwprobe
+#define __NR_riscv_hwprobe (__NR_arch_specific_syscall + 14)
+#endif
+__SYSCALL(__NR_riscv_hwprobe, sys_riscv_hwprobe)
diff --git a/linux-headers/asm-s390/unistd_32.h 
b/linux-headers/asm-s390/unistd_32.h
index 8e644d65f571..800f3adb2020 100644
--- a/linux-headers/asm-s390/unistd_32.h
+++ b/linux-headers/asm-s390/unistd_32.h
@@ -419,6 +419,7 @@
  #define __NR_landlock_create_ruleset 444
  #define __NR_landlock_add_rule 445
  #define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
  #define __NR_process_mrelease 448
  #define __NR_futex_waitv 449
  #define __NR_set_mempolicy_home_node 450
diff --git a/linux-headers/asm-s390/unistd_64.h 
b/linux-headers/asm-s390/unistd_64.h
index 51da542fec10..399a6059015e 100644
--- a/linux-headers/asm-s390/unistd_64.h
+++ b/linux-headers/asm-s390/unistd_64.h
@@ -367,6 +367,7 @@
  #define __NR_landlock_create_ruleset 444
  #define __NR_landlock_add_rule 445
  #define __NR_landlock_restrict_self 446
+#define __NR_memfd_secret 447
  #define __NR_process_mrelease 448
  #define __NR_futex_waitv 449
  #define __NR_set_mempolicy_home_node 450
diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index 2937e7bf6982..2b3a8f7bd2c0 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -557,4 +557,7 @@ struct kvm_pmu_event_filter {
  #define KVM_VCPU_TSC_CTRL 0 /* control group for the timestamp counter (TSC) 
*/
  #define   KVM_VCPU_TSC_OFFSET 0 /* attribute for the TSC offset */
+/* x86-specific KVM_EXIT_HYPERCALL flags. */
+#define KVM_EXIT_HYPERCALL_LONG_MODE   BIT(0)
+
  #endif /* _ASM_X86_KVM_H */
diff --git a/linux-headers/linux/const.h b/linux-headers/linux/const.h
index 5e4898725168..1eb84b5087f8 100644
--- a/linux-headers/linux/const.h
+++ b/linux-headers/linux/const.h
@@ -28,7 +28,7 @@
  #define _BITUL(x)     (_UL(1) << (x))
  #define _BITULL(x)    (_ULL(1) << (x))
-#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
+#define __ALIGN_KERNEL(x, a)           __ALIGN_KERNEL_MASK(x, 
(__typeof__(x))(a) - 1)
  #define __ALIGN_KERNEL_MASK(x, mask)  (((x) + (mask)) & ~(mask))
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index 599de3c6e3aa..65b145b317ac 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -341,8 +341,11 @@ struct kvm_run {
                        __u64 nr;
                        __u64 args[6];
                        __u64 ret;
-                       __u32 longmode;
-                       __u32 pad;
+
+                       union {
+                               __u32 longmode;
+                               __u64 flags;
+                       };
                } hypercall;
                /* KVM_EXIT_TPR_ACCESS */
                struct {
@@ -1182,6 +1185,7 @@ struct kvm_ppc_resize_hpt {
  #define KVM_CAP_S390_PROTECTED_ASYNC_DISABLE 224
  #define KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP 225
  #define KVM_CAP_PMU_EVENT_MASKED_EVENTS 226
+#define KVM_CAP_COUNTER_OFFSET 227
#ifdef KVM_CAP_IRQ_ROUTING @@ -1449,7 +1453,7 @@ struct kvm_vfio_spapr_tce {
  #define KVM_CREATE_VCPU           _IO(KVMIO,   0x41)
  #define KVM_GET_DIRTY_LOG         _IOW(KVMIO,  0x42, struct kvm_dirty_log)
  #define KVM_SET_NR_MMU_PAGES      _IO(KVMIO,   0x44)
-#define KVM_GET_NR_MMU_PAGES      _IO(KVMIO,   0x45)
+#define KVM_GET_NR_MMU_PAGES      _IO(KVMIO,   0x45)  /* deprecated */
  #define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, \
                                        struct kvm_userspace_memory_region)
  #define KVM_SET_TSS_ADDR          _IO(KVMIO,   0x47)
@@ -1541,6 +1545,8 @@ struct kvm_s390_ucas_mapping {
  #define KVM_SET_PMU_EVENT_FILTER  _IOW(KVMIO,  0xb2, struct 
kvm_pmu_event_filter)
  #define KVM_PPC_SVM_OFF                 _IO(KVMIO,  0xb3)
  #define KVM_ARM_MTE_COPY_TAGS   _IOR(KVMIO,  0xb4, struct 
kvm_arm_copy_mte_tags)
+/* Available with KVM_CAP_COUNTER_OFFSET */
+#define KVM_ARM_SET_COUNTER_OFFSET _IOW(KVMIO,  0xb5, struct 
kvm_arm_counter_offset)
/* ioctl for vm fd */
  #define KVM_CREATE_DEVICE       _IOWR(KVMIO,  0xe0, struct kvm_create_device)
diff --git a/linux-headers/linux/psp-sev.h b/linux-headers/linux/psp-sev.h
index 51d8b3940e14..12ccb70099d4 100644
--- a/linux-headers/linux/psp-sev.h
+++ b/linux-headers/linux/psp-sev.h
@@ -36,6 +36,13 @@ enum {
   * SEV Firmware status code
   */
  typedef enum {
+       /*
+        * This error code is not in the SEV spec. Its purpose is to convey that
+        * there was an error that prevented the SEV firmware from being called.
+        * The SEV API error codes are 16 bits, so the -1 value will not overlap
+        * with possible values from the specification.
+        */
+       SEV_RET_NO_FW_CALL = -1,
        SEV_RET_SUCCESS = 0,
        SEV_RET_INVALID_PLATFORM_STATE,
        SEV_RET_INVALID_GUEST_STATE,
diff --git a/linux-headers/linux/userfaultfd.h 
b/linux-headers/linux/userfaultfd.h
index ba5d0df52fb8..14e402263a8a 100644
--- a/linux-headers/linux/userfaultfd.h
+++ b/linux-headers/linux/userfaultfd.h
@@ -38,7 +38,8 @@
                           UFFD_FEATURE_MINOR_HUGETLBFS |       \
                           UFFD_FEATURE_MINOR_SHMEM |           \
                           UFFD_FEATURE_EXACT_ADDRESS |         \
-                          UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
+                          UFFD_FEATURE_WP_HUGETLBFS_SHMEM |    \
+                          UFFD_FEATURE_WP_UNPOPULATED)
  #define UFFD_API_IOCTLS                               \
        ((__u64)1 << _UFFDIO_REGISTER |           \
         (__u64)1 << _UFFDIO_UNREGISTER | \
@@ -203,6 +204,12 @@ struct uffdio_api {
         *
         * UFFD_FEATURE_WP_HUGETLBFS_SHMEM indicates that userfaultfd
         * write-protection mode is supported on both shmem and hugetlbfs.
+        *
+        * UFFD_FEATURE_WP_UNPOPULATED indicates that userfaultfd
+        * write-protection mode will always apply to unpopulated pages
+        * (i.e. empty ptes).  This will be the default behavior for shmem
+        * & hugetlbfs, so this flag only affects anonymous memory behavior
+        * when userfault write-protection mode is registered.
         */
  #define UFFD_FEATURE_PAGEFAULT_FLAG_WP                (1<<0)
  #define UFFD_FEATURE_EVENT_FORK                       (1<<1)
@@ -217,6 +224,7 @@ struct uffdio_api {
  #define UFFD_FEATURE_MINOR_SHMEM              (1<<10)
  #define UFFD_FEATURE_EXACT_ADDRESS            (1<<11)
  #define UFFD_FEATURE_WP_HUGETLBFS_SHMEM               (1<<12)
+#define UFFD_FEATURE_WP_UNPOPULATED            (1<<13)
        __u64 features;
__u64 ioctls;
@@ -297,6 +305,13 @@ struct uffdio_writeprotect {
  struct uffdio_continue {
        struct uffdio_range range;
  #define UFFDIO_CONTINUE_MODE_DONTWAKE         ((__u64)1<<0)
+       /*
+        * UFFDIO_CONTINUE_MODE_WP will map the page write protected on
+        * the fly.  UFFDIO_CONTINUE_MODE_WP is available only if the
+        * write protected ioctl is implemented for the range
+        * according to the uffdio_register.ioctls.
+        */
+#define UFFDIO_CONTINUE_MODE_WP                        ((__u64)1<<1)
        __u64 mode;
/*
diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
index 4a534edbdcba..2658fda219e8 100644
--- a/linux-headers/linux/vfio.h
+++ b/linux-headers/linux/vfio.h
@@ -646,6 +646,15 @@ enum {
        VFIO_CCW_NUM_IRQS
  };
+/*
+ * The vfio-ap bus driver makes use of the following IRQ index mapping.
+ * Unimplemented IRQ types return a count of zero.
+ */
+enum {
+       VFIO_AP_REQ_IRQ_INDEX,
+       VFIO_AP_NUM_IRQS
+};
+
  /**
   * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 12,
   *                                          struct vfio_pci_hot_reset_info)


Reply via email to