76daa3
From b198c479d7a97c2400a7eebf73581707323e0e7e Mon Sep 17 00:00:00 2001
76daa3
From: Auger Eric <eric.auger@redhat.com>
76daa3
Date: Fri, 16 Jun 2017 15:17:52 +0200
76daa3
Subject: [PATCH 1/5] linux-headers: update
76daa3
76daa3
RH-Author: Auger Eric <eric.auger@redhat.com>
76daa3
Message-id: <1497626276-18221-2-git-send-email-eric.auger@redhat.com>
76daa3
Patchwork-id: 75633
76daa3
O-Subject: [Pegas-1.0 qemu-kvm PATCH v2 1/5] linux-headers: update
76daa3
Bugzilla: 1462061
76daa3
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
76daa3
RH-Acked-by: Peter Xu <peterx@redhat.com>
76daa3
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
76daa3
From: Cornelia Huck <cornelia.huck@de.ibm.com>
76daa3
76daa3
Update against Linux v4.12-rc1.
76daa3
76daa3
Also include the new vfio_ccw.h header.
76daa3
76daa3
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
76daa3
(cherry picked from commit 74c98e20a604b9db58284b8727688df70e9bf643)
76daa3
Signed-off-by: Eric Auger <eric.auger@redhat.com>
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 include/standard-headers/asm-x86/hyperv.h          |  7 +++++-
76daa3
 include/standard-headers/linux/input-event-codes.h |  1 +
76daa3
 include/standard-headers/linux/input.h             | 11 +++++---
76daa3
 include/standard-headers/linux/pci_regs.h          |  3 ++-
76daa3
 linux-headers/asm-arm/kvm.h                        | 10 +++++++-
76daa3
 linux-headers/asm-arm/unistd-common.h              |  1 +
76daa3
 linux-headers/asm-arm64/kvm.h                      | 10 +++++++-
76daa3
 linux-headers/asm-powerpc/kvm.h                    |  3 +++
76daa3
 linux-headers/asm-powerpc/unistd.h                 |  1 +
76daa3
 linux-headers/asm-s390/kvm.h                       | 29 +++++++++++++++++++---
76daa3
 linux-headers/asm-s390/unistd.h                    |  4 ++-
76daa3
 linux-headers/asm-x86/kvm.h                        |  3 +++
76daa3
 linux-headers/asm-x86/unistd_32.h                  |  2 ++
76daa3
 linux-headers/asm-x86/unistd_64.h                  |  1 +
76daa3
 linux-headers/asm-x86/unistd_x32.h                 |  1 +
76daa3
 linux-headers/linux/kvm.h                          | 25 +++++++++++++++++++
76daa3
 linux-headers/linux/userfaultfd.h                  | 11 +++++---
76daa3
 linux-headers/linux/vfio.h                         | 18 ++++++++++++++
76daa3
 linux-headers/linux/vfio_ccw.h                     | 24 ++++++++++++++++++
76daa3
 scripts/update-linux-headers.sh                    |  2 +-
76daa3
 20 files changed, 151 insertions(+), 16 deletions(-)
76daa3
 create mode 100644 linux-headers/linux/vfio_ccw.h
76daa3
76daa3
diff --git a/include/standard-headers/asm-x86/hyperv.h b/include/standard-headers/asm-x86/hyperv.h
76daa3
index eca9a2c..d0c6e0a 100644
76daa3
--- a/include/standard-headers/asm-x86/hyperv.h
76daa3
+++ b/include/standard-headers/asm-x86/hyperv.h
76daa3
@@ -124,7 +124,7 @@
76daa3
   * Recommend using hypercall for address space switches rather
76daa3
   * than MOV to CR3 instruction
76daa3
   */
76daa3
-#define HV_X64_MWAIT_RECOMMENDED		(1 << 0)
76daa3
+#define HV_X64_AS_SWITCH_RECOMMENDED		(1 << 0)
76daa3
 /* Recommend using hypercall for local TLB flushes rather
76daa3
  * than INVLPG or MOV to CR3 instructions */
76daa3
 #define HV_X64_LOCAL_TLB_FLUSH_RECOMMENDED	(1 << 1)
76daa3
@@ -148,6 +148,11 @@
76daa3
 #define HV_X64_RELAXED_TIMING_RECOMMENDED	(1 << 5)
76daa3
 
76daa3
 /*
76daa3
+ * Virtual APIC support
76daa3
+ */
76daa3
+#define HV_X64_DEPRECATING_AEOI_RECOMMENDED	(1 << 9)
76daa3
+
76daa3
+/*
76daa3
  * Crash notification flag.
76daa3
  */
76daa3
 #define HV_CRASH_CTL_CRASH_NOTIFY (1ULL << 63)
76daa3
diff --git a/include/standard-headers/linux/input-event-codes.h b/include/standard-headers/linux/input-event-codes.h
76daa3
index c8b3338..29d463a 100644
76daa3
--- a/include/standard-headers/linux/input-event-codes.h
76daa3
+++ b/include/standard-headers/linux/input-event-codes.h
76daa3
@@ -641,6 +641,7 @@
76daa3
  * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
76daa3
  */
76daa3
 #define KEY_DATA			0x277
76daa3
+#define KEY_ONSCREEN_KEYBOARD		0x278
76daa3
 
76daa3
 #define BTN_TRIGGER_HAPPY		0x2c0
76daa3
 #define BTN_TRIGGER_HAPPY1		0x2c0
76daa3
diff --git a/include/standard-headers/linux/input.h b/include/standard-headers/linux/input.h
76daa3
index b472b85..666e201 100644
76daa3
--- a/include/standard-headers/linux/input.h
76daa3
+++ b/include/standard-headers/linux/input.h
76daa3
@@ -58,9 +58,14 @@ struct input_id {
76daa3
  * Note that input core does not clamp reported values to the
76daa3
  * [minimum, maximum] limits, such task is left to userspace.
76daa3
  *
76daa3
- * Resolution for main axes (ABS_X, ABS_Y, ABS_Z) is reported in
76daa3
- * units per millimeter (units/mm), resolution for rotational axes
76daa3
- * (ABS_RX, ABS_RY, ABS_RZ) is reported in units per radian.
76daa3
+ * The default resolution for main axes (ABS_X, ABS_Y, ABS_Z)
76daa3
+ * is reported in units per millimeter (units/mm), resolution
76daa3
+ * for rotational axes (ABS_RX, ABS_RY, ABS_RZ) is reported
76daa3
+ * in units per radian.
76daa3
+ * When INPUT_PROP_ACCELEROMETER is set the resolution changes.
76daa3
+ * The main axes (ABS_X, ABS_Y, ABS_Z) are then reported in
76daa3
+ * in units per g (units/g) and in units per degree per second
76daa3
+ * (units/deg/s) for rotational axes (ABS_RX, ABS_RY, ABS_RZ).
76daa3
  */
76daa3
 struct input_absinfo {
76daa3
 	int32_t value;
76daa3
diff --git a/include/standard-headers/linux/pci_regs.h b/include/standard-headers/linux/pci_regs.h
76daa3
index 634c9c4..d56bb00 100644
76daa3
--- a/include/standard-headers/linux/pci_regs.h
76daa3
+++ b/include/standard-headers/linux/pci_regs.h
76daa3
@@ -114,7 +114,7 @@
76daa3
 #define PCI_SUBSYSTEM_ID	0x2e
76daa3
 #define PCI_ROM_ADDRESS		0x30	/* Bits 31..11 are address, 10..1 reserved */
76daa3
 #define  PCI_ROM_ADDRESS_ENABLE	0x01
76daa3
-#define PCI_ROM_ADDRESS_MASK	(~0x7ffUL)
76daa3
+#define PCI_ROM_ADDRESS_MASK	(~0x7ffU)
76daa3
 
76daa3
 #define PCI_CAPABILITY_LIST	0x34	/* Offset of first capability list entry */
76daa3
 
76daa3
@@ -630,6 +630,7 @@
76daa3
 #define  PCI_EXP_DEVCTL2_COMP_TIMEOUT	0x000f	/* Completion Timeout Value */
76daa3
 #define  PCI_EXP_DEVCTL2_ARI		0x0020	/* Alternative Routing-ID */
76daa3
 #define PCI_EXP_DEVCTL2_ATOMIC_REQ	0x0040	/* Set Atomic requests */
76daa3
+#define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080 /* Block atomic egress */
76daa3
 #define  PCI_EXP_DEVCTL2_IDO_REQ_EN	0x0100	/* Allow IDO for requests */
76daa3
 #define  PCI_EXP_DEVCTL2_IDO_CMP_EN	0x0200	/* Allow IDO for completions */
76daa3
 #define  PCI_EXP_DEVCTL2_LTR_EN		0x0400	/* Enable LTR mechanism */
76daa3
diff --git a/linux-headers/asm-arm/kvm.h b/linux-headers/asm-arm/kvm.h
76daa3
index 1101d55..7258a00 100644
76daa3
--- a/linux-headers/asm-arm/kvm.h
76daa3
+++ b/linux-headers/asm-arm/kvm.h
76daa3
@@ -27,6 +27,8 @@
76daa3
 #define __KVM_HAVE_IRQ_LINE
76daa3
 #define __KVM_HAVE_READONLY_MEM
76daa3
 
76daa3
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
76daa3
+
76daa3
 #define KVM_REG_SIZE(id)						\
76daa3
 	(1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
76daa3
 
76daa3
@@ -114,6 +116,8 @@ struct kvm_debug_exit_arch {
76daa3
 };
76daa3
 
76daa3
 struct kvm_sync_regs {
76daa3
+	/* Used with KVM_CAP_ARM_USER_IRQ */
76daa3
+	__u64 device_irq_level;
76daa3
 };
76daa3
 
76daa3
 struct kvm_arch_memory_slot {
76daa3
@@ -192,13 +196,17 @@ struct kvm_arch_memory_slot {
76daa3
 #define KVM_DEV_ARM_VGIC_GRP_REDIST_REGS 5
76daa3
 #define KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS 6
76daa3
 #define KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO  7
76daa3
+#define KVM_DEV_ARM_VGIC_GRP_ITS_REGS	8
76daa3
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT	10
76daa3
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK \
76daa3
 			(0x3fffffULL << KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT)
76daa3
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK 0x3ff
76daa3
 #define VGIC_LEVEL_INFO_LINE_LEVEL	0
76daa3
 
76daa3
-#define   KVM_DEV_ARM_VGIC_CTRL_INIT    0
76daa3
+#define   KVM_DEV_ARM_VGIC_CTRL_INIT		0
76daa3
+#define   KVM_DEV_ARM_ITS_SAVE_TABLES		1
76daa3
+#define   KVM_DEV_ARM_ITS_RESTORE_TABLES	2
76daa3
+#define   KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES	3
76daa3
 
76daa3
 /* KVM_IRQ_LINE irq field index values */
76daa3
 #define KVM_ARM_IRQ_TYPE_SHIFT		24
76daa3
diff --git a/linux-headers/asm-arm/unistd-common.h b/linux-headers/asm-arm/unistd-common.h
76daa3
index 13a74af..8d5ceae 100644
76daa3
--- a/linux-headers/asm-arm/unistd-common.h
76daa3
+++ b/linux-headers/asm-arm/unistd-common.h
76daa3
@@ -353,5 +353,6 @@
76daa3
 #define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)
76daa3
 #define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)
76daa3
 #define __NR_pkey_free (__NR_SYSCALL_BASE + 396)
76daa3
+#define __NR_statx (__NR_SYSCALL_BASE + 397)
76daa3
 
76daa3
 #endif /* _ASM_ARM_UNISTD_COMMON_H */
76daa3
diff --git a/linux-headers/asm-arm64/kvm.h b/linux-headers/asm-arm64/kvm.h
76daa3
index 651ec30..31bb1dd 100644
76daa3
--- a/linux-headers/asm-arm64/kvm.h
76daa3
+++ b/linux-headers/asm-arm64/kvm.h
76daa3
@@ -39,6 +39,8 @@
76daa3
 #define __KVM_HAVE_IRQ_LINE
76daa3
 #define __KVM_HAVE_READONLY_MEM
76daa3
 
76daa3
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
76daa3
+
76daa3
 #define KVM_REG_SIZE(id)						\
76daa3
 	(1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
76daa3
 
76daa3
@@ -143,6 +145,8 @@ struct kvm_debug_exit_arch {
76daa3
 #define KVM_GUESTDBG_USE_HW		(1 << 17)
76daa3
 
76daa3
 struct kvm_sync_regs {
76daa3
+	/* Used with KVM_CAP_ARM_USER_IRQ */
76daa3
+	__u64 device_irq_level;
76daa3
 };
76daa3
 
76daa3
 struct kvm_arch_memory_slot {
76daa3
@@ -212,13 +216,17 @@ struct kvm_arch_memory_slot {
76daa3
 #define KVM_DEV_ARM_VGIC_GRP_REDIST_REGS 5
76daa3
 #define KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS 6
76daa3
 #define KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO  7
76daa3
+#define KVM_DEV_ARM_VGIC_GRP_ITS_REGS 8
76daa3
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT	10
76daa3
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK \
76daa3
 			(0x3fffffULL << KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT)
76daa3
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK	0x3ff
76daa3
 #define VGIC_LEVEL_INFO_LINE_LEVEL	0
76daa3
 
76daa3
-#define   KVM_DEV_ARM_VGIC_CTRL_INIT	0
76daa3
+#define   KVM_DEV_ARM_VGIC_CTRL_INIT		0
76daa3
+#define   KVM_DEV_ARM_ITS_SAVE_TABLES           1
76daa3
+#define   KVM_DEV_ARM_ITS_RESTORE_TABLES        2
76daa3
+#define   KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES	3
76daa3
 
76daa3
 /* Device Control API on vcpu fd */
76daa3
 #define KVM_ARM_VCPU_PMU_V3_CTRL	0
76daa3
diff --git a/linux-headers/asm-powerpc/kvm.h b/linux-headers/asm-powerpc/kvm.h
76daa3
index 4edbe4b..07fbeb9 100644
76daa3
--- a/linux-headers/asm-powerpc/kvm.h
76daa3
+++ b/linux-headers/asm-powerpc/kvm.h
76daa3
@@ -29,6 +29,9 @@
76daa3
 #define __KVM_HAVE_IRQ_LINE
76daa3
 #define __KVM_HAVE_GUEST_DEBUG
76daa3
 
76daa3
+/* Not always available, but if it is, this is the correct offset.  */
76daa3
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
76daa3
+
76daa3
 struct kvm_regs {
76daa3
 	__u64 pc;
76daa3
 	__u64 cr;
76daa3
diff --git a/linux-headers/asm-powerpc/unistd.h b/linux-headers/asm-powerpc/unistd.h
76daa3
index 598043c..a178634 100644
76daa3
--- a/linux-headers/asm-powerpc/unistd.h
76daa3
+++ b/linux-headers/asm-powerpc/unistd.h
76daa3
@@ -393,5 +393,6 @@
76daa3
 #define __NR_preadv2		380
76daa3
 #define __NR_pwritev2		381
76daa3
 #define __NR_kexec_file_load	382
76daa3
+#define __NR_statx		383
76daa3
 
76daa3
 #endif /* _ASM_POWERPC_UNISTD_H_ */
76daa3
diff --git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h
76daa3
index ac63ca6..243f195 100644
76daa3
--- a/linux-headers/asm-s390/kvm.h
76daa3
+++ b/linux-headers/asm-s390/kvm.h
76daa3
@@ -26,6 +26,8 @@
76daa3
 #define KVM_DEV_FLIC_ADAPTER_REGISTER	6
76daa3
 #define KVM_DEV_FLIC_ADAPTER_MODIFY	7
76daa3
 #define KVM_DEV_FLIC_CLEAR_IO_IRQ	8
76daa3
+#define KVM_DEV_FLIC_AISM		9
76daa3
+#define KVM_DEV_FLIC_AIRQ_INJECT	10
76daa3
 /*
76daa3
  * We can have up to 4*64k pending subchannels + 8 adapter interrupts,
76daa3
  * as well as up  to ASYNC_PF_PER_VCPU*KVM_MAX_VCPUS pfault done interrupts.
76daa3
@@ -41,7 +43,14 @@ struct kvm_s390_io_adapter {
76daa3
 	__u8 isc;
76daa3
 	__u8 maskable;
76daa3
 	__u8 swap;
76daa3
-	__u8 pad;
76daa3
+	__u8 flags;
76daa3
+};
76daa3
+
76daa3
+#define KVM_S390_ADAPTER_SUPPRESSIBLE 0x01
76daa3
+
76daa3
+struct kvm_s390_ais_req {
76daa3
+	__u8 isc;
76daa3
+	__u16 mode;
76daa3
 };
76daa3
 
76daa3
 #define KVM_S390_IO_ADAPTER_MASK 1
76daa3
@@ -110,6 +119,7 @@ struct kvm_s390_vm_cpu_machine {
76daa3
 #define KVM_S390_VM_CPU_FEAT_CMMA	10
76daa3
 #define KVM_S390_VM_CPU_FEAT_PFMFI	11
76daa3
 #define KVM_S390_VM_CPU_FEAT_SIGPIF	12
76daa3
+#define KVM_S390_VM_CPU_FEAT_KSS	13
76daa3
 struct kvm_s390_vm_cpu_feat {
76daa3
 	__u64 feat[16];
76daa3
 };
76daa3
@@ -131,7 +141,8 @@ struct kvm_s390_vm_cpu_subfunc {
76daa3
 	__u8 kmo[16];		/* with MSA4 */
76daa3
 	__u8 pcc[16];		/* with MSA4 */
76daa3
 	__u8 ppno[16];		/* with MSA5 */
76daa3
-	__u8 reserved[1824];
76daa3
+	__u8 kma[16];		/* with MSA8 */
76daa3
+	__u8 reserved[1808];
76daa3
 };
76daa3
 
76daa3
 /* kvm attributes for crypto */
76daa3
@@ -197,6 +208,10 @@ struct kvm_guest_debug_arch {
76daa3
 #define KVM_SYNC_VRS    (1UL << 6)
76daa3
 #define KVM_SYNC_RICCB  (1UL << 7)
76daa3
 #define KVM_SYNC_FPRS   (1UL << 8)
76daa3
+#define KVM_SYNC_GSCB   (1UL << 9)
76daa3
+/* length and alignment of the sdnx as a power of two */
76daa3
+#define SDNXC 8
76daa3
+#define SDNXL (1UL << SDNXC)
76daa3
 /* definition of registers in kvm_run */
76daa3
 struct kvm_sync_regs {
76daa3
 	__u64 prefix;	/* prefix register */
76daa3
@@ -217,8 +232,16 @@ struct kvm_sync_regs {
76daa3
 	};
76daa3
 	__u8  reserved[512];	/* for future vector expansion */
76daa3
 	__u32 fpc;		/* valid on KVM_SYNC_VRS or KVM_SYNC_FPRS */
76daa3
-	__u8 padding[52];	/* riccb needs to be 64byte aligned */
76daa3
+	__u8 padding1[52];	/* riccb needs to be 64byte aligned */
76daa3
 	__u8 riccb[64];		/* runtime instrumentation controls block */
76daa3
+	__u8 padding2[192];	/* sdnx needs to be 256byte aligned */
76daa3
+	union {
76daa3
+		__u8 sdnx[SDNXL];  /* state description annex */
76daa3
+		struct {
76daa3
+			__u64 reserved1[2];
76daa3
+			__u64 gscb[4];
76daa3
+		};
76daa3
+	};
76daa3
 };
76daa3
 
76daa3
 #define KVM_REG_S390_TODPR	(KVM_REG_S390 | KVM_REG_SIZE_U32 | 0x1)
76daa3
diff --git a/linux-headers/asm-s390/unistd.h b/linux-headers/asm-s390/unistd.h
76daa3
index 8a404fd..65e7e59 100644
76daa3
--- a/linux-headers/asm-s390/unistd.h
76daa3
+++ b/linux-headers/asm-s390/unistd.h
76daa3
@@ -313,7 +313,9 @@
76daa3
 #define __NR_copy_file_range	375
76daa3
 #define __NR_preadv2		376
76daa3
 #define __NR_pwritev2		377
76daa3
-#define NR_syscalls 378
76daa3
+#define __NR_s390_guarded_storage	378
76daa3
+#define __NR_statx		379
76daa3
+#define NR_syscalls 380
76daa3
 
76daa3
 /* 
76daa3
  * There are some system calls that are not present on 64 bit, some
76daa3
diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
76daa3
index 739c0c5..c2824d0 100644
76daa3
--- a/linux-headers/asm-x86/kvm.h
76daa3
+++ b/linux-headers/asm-x86/kvm.h
76daa3
@@ -9,6 +9,9 @@
76daa3
 #include <linux/types.h>
76daa3
 #include <linux/ioctl.h>
76daa3
 
76daa3
+#define KVM_PIO_PAGE_OFFSET 1
76daa3
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
76daa3
+
76daa3
 #define DE_VECTOR 0
76daa3
 #define DB_VECTOR 1
76daa3
 #define BP_VECTOR 3
76daa3
diff --git a/linux-headers/asm-x86/unistd_32.h b/linux-headers/asm-x86/unistd_32.h
76daa3
index d45ea28..8a206df 100644
76daa3
--- a/linux-headers/asm-x86/unistd_32.h
76daa3
+++ b/linux-headers/asm-x86/unistd_32.h
76daa3
@@ -380,5 +380,7 @@
76daa3
 #define __NR_pkey_mprotect 380
76daa3
 #define __NR_pkey_alloc 381
76daa3
 #define __NR_pkey_free 382
76daa3
+#define __NR_statx 383
76daa3
+#define __NR_arch_prctl 384
76daa3
 
76daa3
 #endif /* _ASM_X86_UNISTD_32_H */
76daa3
diff --git a/linux-headers/asm-x86/unistd_64.h b/linux-headers/asm-x86/unistd_64.h
76daa3
index e22db91..336c2e4 100644
76daa3
--- a/linux-headers/asm-x86/unistd_64.h
76daa3
+++ b/linux-headers/asm-x86/unistd_64.h
76daa3
@@ -333,5 +333,6 @@
76daa3
 #define __NR_pkey_mprotect 329
76daa3
 #define __NR_pkey_alloc 330
76daa3
 #define __NR_pkey_free 331
76daa3
+#define __NR_statx 332
76daa3
 
76daa3
 #endif /* _ASM_X86_UNISTD_64_H */
76daa3
diff --git a/linux-headers/asm-x86/unistd_x32.h b/linux-headers/asm-x86/unistd_x32.h
76daa3
index 84e58b2..cb98a52 100644
76daa3
--- a/linux-headers/asm-x86/unistd_x32.h
76daa3
+++ b/linux-headers/asm-x86/unistd_x32.h
76daa3
@@ -286,6 +286,7 @@
76daa3
 #define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)
76daa3
 #define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)
76daa3
 #define __NR_pkey_free (__X32_SYSCALL_BIT + 331)
76daa3
+#define __NR_statx (__X32_SYSCALL_BIT + 332)
76daa3
 #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
76daa3
 #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
76daa3
 #define __NR_ioctl (__X32_SYSCALL_BIT + 514)
76daa3
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
76daa3
index 4e082a8..d2892da 100644
76daa3
--- a/linux-headers/linux/kvm.h
76daa3
+++ b/linux-headers/linux/kvm.h
76daa3
@@ -702,6 +702,10 @@ struct kvm_ppc_resize_hpt {
76daa3
 #define KVM_VM_PPC_HV 1
76daa3
 #define KVM_VM_PPC_PR 2
76daa3
 
76daa3
+/* on MIPS, 0 forces trap & emulate, 1 forces VZ ASE */
76daa3
+#define KVM_VM_MIPS_TE		0
76daa3
+#define KVM_VM_MIPS_VZ		1
76daa3
+
76daa3
 #define KVM_S390_SIE_PAGE_OFFSET 1
76daa3
 
76daa3
 /*
76daa3
@@ -883,6 +887,14 @@ struct kvm_ppc_resize_hpt {
76daa3
 #define KVM_CAP_PPC_MMU_RADIX 134
76daa3
 #define KVM_CAP_PPC_MMU_HASH_V3 135
76daa3
 #define KVM_CAP_IMMEDIATE_EXIT 136
76daa3
+#define KVM_CAP_MIPS_VZ 137
76daa3
+#define KVM_CAP_MIPS_TE 138
76daa3
+#define KVM_CAP_MIPS_64BIT 139
76daa3
+#define KVM_CAP_S390_GS 140
76daa3
+#define KVM_CAP_S390_AIS 141
76daa3
+#define KVM_CAP_SPAPR_TCE_VFIO 142
76daa3
+#define KVM_CAP_X86_GUEST_MWAIT 143
76daa3
+#define KVM_CAP_ARM_USER_IRQ 144
76daa3
 
76daa3
 #ifdef KVM_CAP_IRQ_ROUTING
76daa3
 
76daa3
@@ -1087,6 +1099,7 @@ struct kvm_device_attr {
76daa3
 #define  KVM_DEV_VFIO_GROUP			1
76daa3
 #define   KVM_DEV_VFIO_GROUP_ADD			1
76daa3
 #define   KVM_DEV_VFIO_GROUP_DEL			2
76daa3
+#define   KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE		3
76daa3
 
76daa3
 enum kvm_device_type {
76daa3
 	KVM_DEV_TYPE_FSL_MPIC_20	= 1,
76daa3
@@ -1108,6 +1121,11 @@ enum kvm_device_type {
76daa3
 	KVM_DEV_TYPE_MAX,
76daa3
 };
76daa3
 
76daa3
+struct kvm_vfio_spapr_tce {
76daa3
+	__s32	groupfd;
76daa3
+	__s32	tablefd;
76daa3
+};
76daa3
+
76daa3
 /*
76daa3
  * ioctls for VM fds
76daa3
  */
76daa3
@@ -1354,4 +1372,11 @@ struct kvm_assigned_msix_entry {
76daa3
 #define KVM_X2APIC_API_USE_32BIT_IDS            (1ULL << 0)
76daa3
 #define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK  (1ULL << 1)
76daa3
 
76daa3
+/* Available with KVM_CAP_ARM_USER_IRQ */
76daa3
+
76daa3
+/* Bits for run->s.regs.device_irq_level */
76daa3
+#define KVM_ARM_DEV_EL1_VTIMER		(1 << 0)
76daa3
+#define KVM_ARM_DEV_EL1_PTIMER		(1 << 1)
76daa3
+#define KVM_ARM_DEV_PMU			(1 << 2)
76daa3
+
76daa3
 #endif /* __LINUX_KVM_H */
76daa3
diff --git a/linux-headers/linux/userfaultfd.h b/linux-headers/linux/userfaultfd.h
76daa3
index 2ed5dc3..9701772 100644
76daa3
--- a/linux-headers/linux/userfaultfd.h
76daa3
+++ b/linux-headers/linux/userfaultfd.h
76daa3
@@ -20,7 +20,8 @@
76daa3
 #define UFFD_API ((__u64)0xAA)
76daa3
 #define UFFD_API_FEATURES (UFFD_FEATURE_EVENT_FORK |		\
76daa3
 			   UFFD_FEATURE_EVENT_REMAP |		\
76daa3
-			   UFFD_FEATURE_EVENT_MADVDONTNEED |	\
76daa3
+			   UFFD_FEATURE_EVENT_REMOVE |	\
76daa3
+			   UFFD_FEATURE_EVENT_UNMAP |		\
76daa3
 			   UFFD_FEATURE_MISSING_HUGETLBFS |	\
76daa3
 			   UFFD_FEATURE_MISSING_SHMEM)
76daa3
 #define UFFD_API_IOCTLS				\
76daa3
@@ -92,7 +93,7 @@ struct uffd_msg {
76daa3
 		struct {
76daa3
 			__u64	start;
76daa3
 			__u64	end;
76daa3
-		} madv_dn;
76daa3
+		} remove;
76daa3
 
76daa3
 		struct {
76daa3
 			/* unused reserved fields */
76daa3
@@ -109,7 +110,8 @@ struct uffd_msg {
76daa3
 #define UFFD_EVENT_PAGEFAULT	0x12
76daa3
 #define UFFD_EVENT_FORK		0x13
76daa3
 #define UFFD_EVENT_REMAP	0x14
76daa3
-#define UFFD_EVENT_MADVDONTNEED	0x15
76daa3
+#define UFFD_EVENT_REMOVE	0x15
76daa3
+#define UFFD_EVENT_UNMAP	0x16
76daa3
 
76daa3
 /* flags for UFFD_EVENT_PAGEFAULT */
76daa3
 #define UFFD_PAGEFAULT_FLAG_WRITE	(1<<0)	/* If this was a write fault */
76daa3
@@ -155,9 +157,10 @@ struct uffdio_api {
76daa3
 #define UFFD_FEATURE_PAGEFAULT_FLAG_WP		(1<<0)
76daa3
 #define UFFD_FEATURE_EVENT_FORK			(1<<1)
76daa3
 #define UFFD_FEATURE_EVENT_REMAP		(1<<2)
76daa3
-#define UFFD_FEATURE_EVENT_MADVDONTNEED		(1<<3)
76daa3
+#define UFFD_FEATURE_EVENT_REMOVE		(1<<3)
76daa3
 #define UFFD_FEATURE_MISSING_HUGETLBFS		(1<<4)
76daa3
 #define UFFD_FEATURE_MISSING_SHMEM		(1<<5)
76daa3
+#define UFFD_FEATURE_EVENT_UNMAP		(1<<6)
76daa3
 	__u64 features;
76daa3
 
76daa3
 	__u64 ioctls;
76daa3
diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
76daa3
index 531cb2e..4e7ab4c 100644
76daa3
--- a/linux-headers/linux/vfio.h
76daa3
+++ b/linux-headers/linux/vfio.h
76daa3
@@ -198,6 +198,7 @@ struct vfio_device_info {
76daa3
 #define VFIO_DEVICE_FLAGS_PCI	(1 << 1)	/* vfio-pci device */
76daa3
 #define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2)	/* vfio-platform device */
76daa3
 #define VFIO_DEVICE_FLAGS_AMBA  (1 << 3)	/* vfio-amba device */
76daa3
+#define VFIO_DEVICE_FLAGS_CCW	(1 << 4)	/* vfio-ccw device */
76daa3
 	__u32	num_regions;	/* Max region index + 1 */
76daa3
 	__u32	num_irqs;	/* Max IRQ index + 1 */
76daa3
 };
76daa3
@@ -212,6 +213,7 @@ struct vfio_device_info {
76daa3
 #define VFIO_DEVICE_API_PCI_STRING		"vfio-pci"
76daa3
 #define VFIO_DEVICE_API_PLATFORM_STRING		"vfio-platform"
76daa3
 #define VFIO_DEVICE_API_AMBA_STRING		"vfio-amba"
76daa3
+#define VFIO_DEVICE_API_CCW_STRING		"vfio-ccw"
76daa3
 
76daa3
 /**
76daa3
  * VFIO_DEVICE_GET_REGION_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 8,
76daa3
@@ -446,6 +448,22 @@ enum {
76daa3
 	VFIO_PCI_NUM_IRQS
76daa3
 };
76daa3
 
76daa3
+/*
76daa3
+ * The vfio-ccw bus driver makes use of the following fixed region and
76daa3
+ * IRQ index mapping. Unimplemented regions return a size of zero.
76daa3
+ * Unimplemented IRQ types return a count of zero.
76daa3
+ */
76daa3
+
76daa3
+enum {
76daa3
+	VFIO_CCW_CONFIG_REGION_INDEX,
76daa3
+	VFIO_CCW_NUM_REGIONS
76daa3
+};
76daa3
+
76daa3
+enum {
76daa3
+	VFIO_CCW_IO_IRQ_INDEX,
76daa3
+	VFIO_CCW_NUM_IRQS
76daa3
+};
76daa3
+
76daa3
 /**
76daa3
  * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IORW(VFIO_TYPE, VFIO_BASE + 12,
76daa3
  *					      struct vfio_pci_hot_reset_info)
76daa3
diff --git a/linux-headers/linux/vfio_ccw.h b/linux-headers/linux/vfio_ccw.h
76daa3
new file mode 100644
76daa3
index 0000000..3a56551
76daa3
--- /dev/null
76daa3
+++ b/linux-headers/linux/vfio_ccw.h
76daa3
@@ -0,0 +1,24 @@
76daa3
+/*
76daa3
+ * Interfaces for vfio-ccw
76daa3
+ *
76daa3
+ * Copyright IBM Corp. 2017
76daa3
+ *
76daa3
+ * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
76daa3
+ */
76daa3
+
76daa3
+#ifndef _VFIO_CCW_H_
76daa3
+#define _VFIO_CCW_H_
76daa3
+
76daa3
+#include <linux/types.h>
76daa3
+
76daa3
+struct ccw_io_region {
76daa3
+#define ORB_AREA_SIZE 12
76daa3
+	__u8	orb_area[ORB_AREA_SIZE];
76daa3
+#define SCSW_AREA_SIZE 12
76daa3
+	__u8	scsw_area[SCSW_AREA_SIZE];
76daa3
+#define IRB_AREA_SIZE 96
76daa3
+	__u8	irb_area[IRB_AREA_SIZE];
76daa3
+	__u32	ret_code;
76daa3
+} __attribute__((packed));
76daa3
+
76daa3
+#endif
76daa3
diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
76daa3
index 6a370a8..2f906c4 100755
76daa3
--- a/scripts/update-linux-headers.sh
76daa3
+++ b/scripts/update-linux-headers.sh
76daa3
@@ -113,7 +113,7 @@ done
76daa3
 
76daa3
 rm -rf "$output/linux-headers/linux"
76daa3
 mkdir -p "$output/linux-headers/linux"
76daa3
-for header in kvm.h kvm_para.h vfio.h vhost.h \
76daa3
+for header in kvm.h kvm_para.h vfio.h vfio_ccw.h vhost.h \
76daa3
               psci.h userfaultfd.h; do
76daa3
     cp "$tmpdir/include/linux/$header" "$output/linux-headers/linux"
76daa3
 done
76daa3
-- 
76daa3
1.8.3.1
76daa3