From: Anthony Krowiak <akrowiak@linux.ibm.com>
To: "Cédric Le Goater" <clg@redhat.com>, qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org, mjrosato@linux.ibm.com,
jjherne@linux.ibm.com, pasic@linux.ibm.com, fiuczy@linux.ibm.com,
thuth@redhat.com, farman@linux.ibm.com,
borntraeger@linux.ibm.com, cohuck@redhat.com
Subject: Re: [PATCH v2 1/2] linux-headers: Update with vfio_ap IRQ index mapping
Date: Mon, 3 Jul 2023 16:31:44 -0400 [thread overview]
Message-ID: <ba982a4d-bf44-7ed9-cb48-5d2be8210660@linux.ibm.com> (raw)
In-Reply-To: <25e1e7d9-30bb-b3dc-0eeb-1d731262d43d@redhat.com>
On 7/3/23 12:31 PM, Cédric Le Goater wrote:
> 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 <akrowiak@linux.ibm.com>
>> Link:
>> https://lore.kernel.org/qemu-devel/20230530225544.280031-1-akrowiak@linux.ibm.com/
>
> 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.
Good news, thanks.
>
> 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)
>
next prev parent reply other threads:[~2023-07-03 20:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-02 14:11 [PATCH v2 0/2] s390x/ap: fix hang when mdev attached to guest is removed Tony Krowiak
2023-06-02 14:11 ` [PATCH v2 1/2] linux-headers: Update with vfio_ap IRQ index mapping Tony Krowiak
2023-07-03 16:31 ` Cédric Le Goater
2023-07-03 20:31 ` Anthony Krowiak [this message]
2023-06-02 14:11 ` [PATCH v2 2/2] s390x/ap: Wire up the device request notifier interface Tony Krowiak
2023-06-02 14:28 ` Cédric Le Goater
2023-06-02 15:00 ` Anthony Krowiak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ba982a4d-bf44-7ed9-cb48-5d2be8210660@linux.ibm.com \
--to=akrowiak@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=clg@redhat.com \
--cc=cohuck@redhat.com \
--cc=farman@linux.ibm.com \
--cc=fiuczy@linux.ibm.com \
--cc=jjherne@linux.ibm.com \
--cc=mjrosato@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).