thebeanogamer / rpms / qemu-kvm

Forked from rpms/qemu-kvm 5 months ago
Clone
ed5979
From cbe35c6a4794107ea1ddecf0b381ba4b1c8799f5 Mon Sep 17 00:00:00 2001
ed5979
From: Peter Xu <peterx@redhat.com>
ed5979
Date: Tue, 7 Feb 2023 15:57:10 -0500
ed5979
Subject: [PATCH 3/8] linux-headers: Update to v6.1
ed5979
ed5979
RH-Author: Peter Xu <peterx@redhat.com>
ed5979
RH-MergeRequest: 149: Support /dev/userfaultfd
ed5979
RH-Bugzilla: 2158704
ed5979
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
ed5979
RH-Acked-by: quintela1 <quintela@redhat.com>
ed5979
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
ed5979
RH-Commit: [1/3] 15d97026e802a0f01b5f80f81fb4414dc69b2b2d (peterx/qemu-kvm)
ed5979
ed5979
Signed-off-by: Peter Xu <peterx@redhat.com>
ed5979
Reviewed-by: Juan Quintela <quintela@redhat.com>
ed5979
Acked-by: Cornelia Huck <cohuck@redhat.com>
ed5979
Signed-off-by: Juan Quintela <quintela@redhat.com>
ed5979
(cherry picked from commit 93e0932b7be2498024cd6ba8446a0fa2cb1769bc)
ed5979
Signed-off-by: Peter Xu <peterx@redhat.com>
ed5979
---
ed5979
 include/standard-headers/drm/drm_fourcc.h     |  34 ++++-
ed5979
 include/standard-headers/linux/ethtool.h      |  63 +++++++-
ed5979
 include/standard-headers/linux/fuse.h         |   6 +-
ed5979
 .../linux/input-event-codes.h                 |   1 +
ed5979
 include/standard-headers/linux/virtio_blk.h   |  19 +++
ed5979
 linux-headers/asm-generic/hugetlb_encode.h    |  26 ++--
ed5979
 linux-headers/asm-generic/mman-common.h       |   2 +
ed5979
 linux-headers/asm-mips/mman.h                 |   2 +
ed5979
 linux-headers/asm-riscv/kvm.h                 |   4 +
ed5979
 linux-headers/linux/kvm.h                     |   1 +
ed5979
 linux-headers/linux/psci.h                    |  14 ++
ed5979
 linux-headers/linux/userfaultfd.h             |   4 +
ed5979
 linux-headers/linux/vfio.h                    | 142 ++++++++++++++++++
ed5979
 13 files changed, 298 insertions(+), 20 deletions(-)
ed5979
ed5979
diff --git a/include/standard-headers/drm/drm_fourcc.h b/include/standard-headers/drm/drm_fourcc.h
ed5979
index 48b620cbef..b868488f93 100644
ed5979
--- a/include/standard-headers/drm/drm_fourcc.h
ed5979
+++ b/include/standard-headers/drm/drm_fourcc.h
ed5979
@@ -98,18 +98,42 @@ extern "C" {
ed5979
 #define DRM_FORMAT_INVALID	0
ed5979
 
ed5979
 /* color index */
ed5979
+#define DRM_FORMAT_C1		fourcc_code('C', '1', ' ', ' ') /* [7:0] C0:C1:C2:C3:C4:C5:C6:C7 1:1:1:1:1:1:1:1 eight pixels/byte */
ed5979
+#define DRM_FORMAT_C2		fourcc_code('C', '2', ' ', ' ') /* [7:0] C0:C1:C2:C3 2:2:2:2 four pixels/byte */
ed5979
+#define DRM_FORMAT_C4		fourcc_code('C', '4', ' ', ' ') /* [7:0] C0:C1 4:4 two pixels/byte */
ed5979
 #define DRM_FORMAT_C8		fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
ed5979
 
ed5979
-/* 8 bpp Red */
ed5979
+/* 1 bpp Darkness (inverse relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_D1		fourcc_code('D', '1', ' ', ' ') /* [7:0] D0:D1:D2:D3:D4:D5:D6:D7 1:1:1:1:1:1:1:1 eight pixels/byte */
ed5979
+
ed5979
+/* 2 bpp Darkness (inverse relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_D2		fourcc_code('D', '2', ' ', ' ') /* [7:0] D0:D1:D2:D3 2:2:2:2 four pixels/byte */
ed5979
+
ed5979
+/* 4 bpp Darkness (inverse relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_D4		fourcc_code('D', '4', ' ', ' ') /* [7:0] D0:D1 4:4 two pixels/byte */
ed5979
+
ed5979
+/* 8 bpp Darkness (inverse relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_D8		fourcc_code('D', '8', ' ', ' ') /* [7:0] D */
ed5979
+
ed5979
+/* 1 bpp Red (direct relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_R1		fourcc_code('R', '1', ' ', ' ') /* [7:0] R0:R1:R2:R3:R4:R5:R6:R7 1:1:1:1:1:1:1:1 eight pixels/byte */
ed5979
+
ed5979
+/* 2 bpp Red (direct relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_R2		fourcc_code('R', '2', ' ', ' ') /* [7:0] R0:R1:R2:R3 2:2:2:2 four pixels/byte */
ed5979
+
ed5979
+/* 4 bpp Red (direct relationship between channel value and brightness) */
ed5979
+#define DRM_FORMAT_R4		fourcc_code('R', '4', ' ', ' ') /* [7:0] R0:R1 4:4 two pixels/byte */
ed5979
+
ed5979
+/* 8 bpp Red (direct relationship between channel value and brightness) */
ed5979
 #define DRM_FORMAT_R8		fourcc_code('R', '8', ' ', ' ') /* [7:0] R */
ed5979
 
ed5979
-/* 10 bpp Red */
ed5979
+/* 10 bpp Red (direct relationship between channel value and brightness) */
ed5979
 #define DRM_FORMAT_R10		fourcc_code('R', '1', '0', ' ') /* [15:0] x:R 6:10 little endian */
ed5979
 
ed5979
-/* 12 bpp Red */
ed5979
+/* 12 bpp Red (direct relationship between channel value and brightness) */
ed5979
 #define DRM_FORMAT_R12		fourcc_code('R', '1', '2', ' ') /* [15:0] x:R 4:12 little endian */
ed5979
 
ed5979
-/* 16 bpp Red */
ed5979
+/* 16 bpp Red (direct relationship between channel value and brightness) */
ed5979
 #define DRM_FORMAT_R16		fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */
ed5979
 
ed5979
 /* 16 bpp RG */
ed5979
@@ -204,7 +228,9 @@ extern "C" {
ed5979
 #define DRM_FORMAT_VYUY		fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
ed5979
 
ed5979
 #define DRM_FORMAT_AYUV		fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
ed5979
+#define DRM_FORMAT_AVUY8888	fourcc_code('A', 'V', 'U', 'Y') /* [31:0] A:Cr:Cb:Y 8:8:8:8 little endian */
ed5979
 #define DRM_FORMAT_XYUV8888	fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
ed5979
+#define DRM_FORMAT_XVUY8888	fourcc_code('X', 'V', 'U', 'Y') /* [31:0] X:Cr:Cb:Y 8:8:8:8 little endian */
ed5979
 #define DRM_FORMAT_VUY888	fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */
ed5979
 #define DRM_FORMAT_VUY101010	fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier only */
ed5979
 
ed5979
diff --git a/include/standard-headers/linux/ethtool.h b/include/standard-headers/linux/ethtool.h
ed5979
index 4537da20cc..1dc56cdc0a 100644
ed5979
--- a/include/standard-headers/linux/ethtool.h
ed5979
+++ b/include/standard-headers/linux/ethtool.h
ed5979
@@ -736,6 +736,51 @@ enum ethtool_module_power_mode {
ed5979
 	ETHTOOL_MODULE_POWER_MODE_HIGH,
ed5979
 };
ed5979
 
ed5979
+/**
ed5979
+ * enum ethtool_podl_pse_admin_state - operational state of the PoDL PSE
ed5979
+ *	functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
ed5979
+ * @ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN: state of PoDL PSE functions are
ed5979
+ * 	unknown
ed5979
+ * @ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED: PoDL PSE functions are disabled
ed5979
+ * @ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED: PoDL PSE functions are enabled
ed5979
+ */
ed5979
+enum ethtool_podl_pse_admin_state {
ed5979
+	ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
ed5979
+	ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
ed5979
+	ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
ed5979
+};
ed5979
+
ed5979
+/**
ed5979
+ * enum ethtool_podl_pse_pw_d_status - power detection status of the PoDL PSE.
ed5979
+ *	IEEE 802.3-2018 30.15.1.1.3 aPoDLPSEPowerDetectionStatus:
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN: PoDL PSE
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED: "The enumeration “disabled” is
ed5979
+ *	asserted true when the PoDL PSE state diagram variable mr_pse_enable is
ed5979
+ *	false"
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING: "The enumeration “searching” is
ed5979
+ *	asserted true when either of the PSE state diagram variables
ed5979
+ *	pi_detecting or pi_classifying is true."
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING: "The enumeration “deliveringPower”
ed5979
+ *	is asserted true when the PoDL PSE state diagram variable pi_powered is
ed5979
+ *	true."
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP: "The enumeration “sleep” is asserted
ed5979
+ *	true when the PoDL PSE state diagram variable pi_sleeping is true."
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE: "The enumeration “idle” is asserted true
ed5979
+ *	when the logical combination of the PoDL PSE state diagram variables
ed5979
+ *	pi_prebiased*!pi_sleeping is true."
ed5979
+ * @ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR: "The enumeration “error” is asserted
ed5979
+ *	true when the PoDL PSE state diagram variable overload_held is true."
ed5979
+ */
ed5979
+enum ethtool_podl_pse_pw_d_status {
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
ed5979
+	ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
ed5979
+};
ed5979
+
ed5979
 /**
ed5979
  * struct ethtool_gstrings - string set for data tagging
ed5979
  * @cmd: Command number = %ETHTOOL_GSTRINGS
ed5979
@@ -1840,6 +1885,20 @@ static inline int ethtool_validate_duplex(uint8_t duplex)
ed5979
 #define MASTER_SLAVE_STATE_SLAVE		3
ed5979
 #define MASTER_SLAVE_STATE_ERR			4
ed5979
 
ed5979
+/* These are used to throttle the rate of data on the phy interface when the
ed5979
+ * native speed of the interface is higher than the link speed. These should
ed5979
+ * not be used for phy interfaces which natively support multiple speeds (e.g.
ed5979
+ * MII or SGMII).
ed5979
+ */
ed5979
+/* No rate matching performed. */
ed5979
+#define RATE_MATCH_NONE		0
ed5979
+/* The phy sends pause frames to throttle the MAC. */
ed5979
+#define RATE_MATCH_PAUSE	1
ed5979
+/* The phy asserts CRS to prevent the MAC from transmitting. */
ed5979
+#define RATE_MATCH_CRS		2
ed5979
+/* The MAC is programmed with a sufficiently-large IPG. */
ed5979
+#define RATE_MATCH_OPEN_LOOP	3
ed5979
+
ed5979
 /* Which connector port. */
ed5979
 #define PORT_TP			0x00
ed5979
 #define PORT_AUI		0x01
ed5979
@@ -2033,8 +2092,8 @@ enum ethtool_reset_flags {
ed5979
  *	reported consistently by PHYLIB.  Read-only.
ed5979
  * @master_slave_cfg: Master/slave port mode.
ed5979
  * @master_slave_state: Master/slave port state.
ed5979
+ * @rate_matching: Rate adaptation performed by the PHY
ed5979
  * @reserved: Reserved for future use; see the note on reserved space.
ed5979
- * @reserved1: Reserved for future use; see the note on reserved space.
ed5979
  * @link_mode_masks: Variable length bitmaps.
ed5979
  *
ed5979
  * If autonegotiation is disabled, the speed and @duplex represent the
ed5979
@@ -2085,7 +2144,7 @@ struct ethtool_link_settings {
ed5979
 	uint8_t	transceiver;
ed5979
 	uint8_t	master_slave_cfg;
ed5979
 	uint8_t	master_slave_state;
ed5979
-	uint8_t	reserved1[1];
ed5979
+	uint8_t	rate_matching;
ed5979
 	uint32_t	reserved[7];
ed5979
 	uint32_t	link_mode_masks[];
ed5979
 	/* layout of link_mode_masks fields:
ed5979
diff --git a/include/standard-headers/linux/fuse.h b/include/standard-headers/linux/fuse.h
ed5979
index bda06258be..713d259768 100644
ed5979
--- a/include/standard-headers/linux/fuse.h
ed5979
+++ b/include/standard-headers/linux/fuse.h
ed5979
@@ -194,6 +194,9 @@
ed5979
  *  - add FUSE_SECURITY_CTX init flag
ed5979
  *  - add security context to create, mkdir, symlink, and mknod requests
ed5979
  *  - add FUSE_HAS_INODE_DAX, FUSE_ATTR_DAX
ed5979
+ *
ed5979
+ *  7.37
ed5979
+ *  - add FUSE_TMPFILE
ed5979
  */
ed5979
 
ed5979
 #ifndef _LINUX_FUSE_H
ed5979
@@ -225,7 +228,7 @@
ed5979
 #define FUSE_KERNEL_VERSION 7
ed5979
 
ed5979
 /** Minor version number of this interface */
ed5979
-#define FUSE_KERNEL_MINOR_VERSION 36
ed5979
+#define FUSE_KERNEL_MINOR_VERSION 37
ed5979
 
ed5979
 /** The node ID of the root inode */
ed5979
 #define FUSE_ROOT_ID 1
ed5979
@@ -533,6 +536,7 @@ enum fuse_opcode {
ed5979
 	FUSE_SETUPMAPPING	= 48,
ed5979
 	FUSE_REMOVEMAPPING	= 49,
ed5979
 	FUSE_SYNCFS		= 50,
ed5979
+	FUSE_TMPFILE		= 51,
ed5979
 
ed5979
 	/* CUSE specific operations */
ed5979
 	CUSE_INIT		= 4096,
ed5979
diff --git a/include/standard-headers/linux/input-event-codes.h b/include/standard-headers/linux/input-event-codes.h
ed5979
index 50790aee5a..815f7a1dff 100644
ed5979
--- a/include/standard-headers/linux/input-event-codes.h
ed5979
+++ b/include/standard-headers/linux/input-event-codes.h
ed5979
@@ -862,6 +862,7 @@
ed5979
 #define ABS_TOOL_WIDTH		0x1c
ed5979
 
ed5979
 #define ABS_VOLUME		0x20
ed5979
+#define ABS_PROFILE		0x21
ed5979
 
ed5979
 #define ABS_MISC		0x28
ed5979
 
ed5979
diff --git a/include/standard-headers/linux/virtio_blk.h b/include/standard-headers/linux/virtio_blk.h
ed5979
index 2dcc90826a..e81715cd70 100644
ed5979
--- a/include/standard-headers/linux/virtio_blk.h
ed5979
+++ b/include/standard-headers/linux/virtio_blk.h
ed5979
@@ -40,6 +40,7 @@
ed5979
 #define VIRTIO_BLK_F_MQ		12	/* support more than one vq */
ed5979
 #define VIRTIO_BLK_F_DISCARD	13	/* DISCARD is supported */
ed5979
 #define VIRTIO_BLK_F_WRITE_ZEROES	14	/* WRITE ZEROES is supported */
ed5979
+#define VIRTIO_BLK_F_SECURE_ERASE	16 /* Secure Erase is supported */
ed5979
 
ed5979
 /* Legacy feature bits */
ed5979
 #ifndef VIRTIO_BLK_NO_LEGACY
ed5979
@@ -119,6 +120,21 @@ struct virtio_blk_config {
ed5979
 	uint8_t write_zeroes_may_unmap;
ed5979
 
ed5979
 	uint8_t unused1[3];
ed5979
+
ed5979
+	/* the next 3 entries are guarded by VIRTIO_BLK_F_SECURE_ERASE */
ed5979
+	/*
ed5979
+	 * The maximum secure erase sectors (in 512-byte sectors) for
ed5979
+	 * one segment.
ed5979
+	 */
ed5979
+	__virtio32 max_secure_erase_sectors;
ed5979
+	/*
ed5979
+	 * The maximum number of secure erase segments in a
ed5979
+	 * secure erase command.
ed5979
+	 */
ed5979
+	__virtio32 max_secure_erase_seg;
ed5979
+	/* Secure erase commands must be aligned to this number of sectors. */
ed5979
+	__virtio32 secure_erase_sector_alignment;
ed5979
+
ed5979
 } QEMU_PACKED;
ed5979
 
ed5979
 /*
ed5979
@@ -153,6 +169,9 @@ struct virtio_blk_config {
ed5979
 /* Write zeroes command */
ed5979
 #define VIRTIO_BLK_T_WRITE_ZEROES	13
ed5979
 
ed5979
+/* Secure erase command */
ed5979
+#define VIRTIO_BLK_T_SECURE_ERASE	14
ed5979
+
ed5979
 #ifndef VIRTIO_BLK_NO_LEGACY
ed5979
 /* Barrier before this op. */
ed5979
 #define VIRTIO_BLK_T_BARRIER	0x80000000
ed5979
diff --git a/linux-headers/asm-generic/hugetlb_encode.h b/linux-headers/asm-generic/hugetlb_encode.h
ed5979
index 4f3d5aaa11..de687009bf 100644
ed5979
--- a/linux-headers/asm-generic/hugetlb_encode.h
ed5979
+++ b/linux-headers/asm-generic/hugetlb_encode.h
ed5979
@@ -20,18 +20,18 @@
ed5979
 #define HUGETLB_FLAG_ENCODE_SHIFT	26
ed5979
 #define HUGETLB_FLAG_ENCODE_MASK	0x3f
ed5979
 
ed5979
-#define HUGETLB_FLAG_ENCODE_16KB	(14 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_64KB	(16 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_512KB	(19 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_1MB		(20 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_2MB		(21 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_8MB		(23 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_16MB	(24 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_32MB	(25 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_256MB	(28 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_512MB	(29 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_1GB		(30 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_2GB		(31 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
-#define HUGETLB_FLAG_ENCODE_16GB	(34 << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_16KB	(14U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_64KB	(16U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_512KB	(19U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_1MB		(20U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_2MB		(21U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_8MB		(23U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_16MB	(24U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_32MB	(25U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_256MB	(28U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_512MB	(29U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_1GB		(30U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_2GB		(31U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
+#define HUGETLB_FLAG_ENCODE_16GB	(34U << HUGETLB_FLAG_ENCODE_SHIFT)
ed5979
 
ed5979
 #endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */
ed5979
diff --git a/linux-headers/asm-generic/mman-common.h b/linux-headers/asm-generic/mman-common.h
ed5979
index 6c1aa92a92..6ce1f1ceb4 100644
ed5979
--- a/linux-headers/asm-generic/mman-common.h
ed5979
+++ b/linux-headers/asm-generic/mman-common.h
ed5979
@@ -77,6 +77,8 @@
ed5979
 
ed5979
 #define MADV_DONTNEED_LOCKED	24	/* like DONTNEED, but drop locked pages too */
ed5979
 
ed5979
+#define MADV_COLLAPSE	25		/* Synchronous hugepage collapse */
ed5979
+
ed5979
 /* compatibility flags */
ed5979
 #define MAP_FILE	0
ed5979
 
ed5979
diff --git a/linux-headers/asm-mips/mman.h b/linux-headers/asm-mips/mman.h
ed5979
index 1be428663c..c6e1fc77c9 100644
ed5979
--- a/linux-headers/asm-mips/mman.h
ed5979
+++ b/linux-headers/asm-mips/mman.h
ed5979
@@ -103,6 +103,8 @@
ed5979
 
ed5979
 #define MADV_DONTNEED_LOCKED	24	/* like DONTNEED, but drop locked pages too */
ed5979
 
ed5979
+#define MADV_COLLAPSE	25		/* Synchronous hugepage collapse */
ed5979
+
ed5979
 /* compatibility flags */
ed5979
 #define MAP_FILE	0
ed5979
 
ed5979
diff --git a/linux-headers/asm-riscv/kvm.h b/linux-headers/asm-riscv/kvm.h
ed5979
index 7351417afd..8985ff234c 100644
ed5979
--- a/linux-headers/asm-riscv/kvm.h
ed5979
+++ b/linux-headers/asm-riscv/kvm.h
ed5979
@@ -48,6 +48,7 @@ struct kvm_sregs {
ed5979
 /* CONFIG registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
ed5979
 struct kvm_riscv_config {
ed5979
 	unsigned long isa;
ed5979
+	unsigned long zicbom_block_size;
ed5979
 };
ed5979
 
ed5979
 /* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
ed5979
@@ -98,6 +99,9 @@ enum KVM_RISCV_ISA_EXT_ID {
ed5979
 	KVM_RISCV_ISA_EXT_M,
ed5979
 	KVM_RISCV_ISA_EXT_SVPBMT,
ed5979
 	KVM_RISCV_ISA_EXT_SSTC,
ed5979
+	KVM_RISCV_ISA_EXT_SVINVAL,
ed5979
+	KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
ed5979
+	KVM_RISCV_ISA_EXT_ZICBOM,
ed5979
 	KVM_RISCV_ISA_EXT_MAX,
ed5979
 };
ed5979
 
ed5979
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
ed5979
index ebdafa576d..b2783c5202 100644
ed5979
--- a/linux-headers/linux/kvm.h
ed5979
+++ b/linux-headers/linux/kvm.h
ed5979
@@ -1175,6 +1175,7 @@ struct kvm_ppc_resize_hpt {
ed5979
 #define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
ed5979
 #define KVM_CAP_S390_ZPCI_OP 221
ed5979
 #define KVM_CAP_S390_CPU_TOPOLOGY 222
ed5979
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
ed5979
 
ed5979
 #ifdef KVM_CAP_IRQ_ROUTING
ed5979
 
ed5979
diff --git a/linux-headers/linux/psci.h b/linux-headers/linux/psci.h
ed5979
index 213b2a0f70..e60dfd8907 100644
ed5979
--- a/linux-headers/linux/psci.h
ed5979
+++ b/linux-headers/linux/psci.h
ed5979
@@ -48,12 +48,26 @@
ed5979
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU	PSCI_0_2_FN64(7)
ed5979
 
ed5979
 #define PSCI_1_0_FN_PSCI_FEATURES		PSCI_0_2_FN(10)
ed5979
+#define PSCI_1_0_FN_CPU_FREEZE			PSCI_0_2_FN(11)
ed5979
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND		PSCI_0_2_FN(12)
ed5979
+#define PSCI_1_0_FN_NODE_HW_STATE		PSCI_0_2_FN(13)
ed5979
 #define PSCI_1_0_FN_SYSTEM_SUSPEND		PSCI_0_2_FN(14)
ed5979
 #define PSCI_1_0_FN_SET_SUSPEND_MODE		PSCI_0_2_FN(15)
ed5979
+#define PSCI_1_0_FN_STAT_RESIDENCY		PSCI_0_2_FN(16)
ed5979
+#define PSCI_1_0_FN_STAT_COUNT			PSCI_0_2_FN(17)
ed5979
+
ed5979
 #define PSCI_1_1_FN_SYSTEM_RESET2		PSCI_0_2_FN(18)
ed5979
+#define PSCI_1_1_FN_MEM_PROTECT			PSCI_0_2_FN(19)
ed5979
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE	PSCI_0_2_FN(19)
ed5979
 
ed5979
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND	PSCI_0_2_FN64(12)
ed5979
+#define PSCI_1_0_FN64_NODE_HW_STATE		PSCI_0_2_FN64(13)
ed5979
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND		PSCI_0_2_FN64(14)
ed5979
+#define PSCI_1_0_FN64_STAT_RESIDENCY		PSCI_0_2_FN64(16)
ed5979
+#define PSCI_1_0_FN64_STAT_COUNT		PSCI_0_2_FN64(17)
ed5979
+
ed5979
 #define PSCI_1_1_FN64_SYSTEM_RESET2		PSCI_0_2_FN64(18)
ed5979
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE	PSCI_0_2_FN64(19)
ed5979
 
ed5979
 /* PSCI v0.2 power state encoding for CPU_SUSPEND function */
ed5979
 #define PSCI_0_2_POWER_STATE_ID_MASK		0xffff
ed5979
diff --git a/linux-headers/linux/userfaultfd.h b/linux-headers/linux/userfaultfd.h
ed5979
index a3a377cd44..ba5d0df52f 100644
ed5979
--- a/linux-headers/linux/userfaultfd.h
ed5979
+++ b/linux-headers/linux/userfaultfd.h
ed5979
@@ -12,6 +12,10 @@
ed5979
 
ed5979
 #include <linux/types.h>
ed5979
 
ed5979
+/* ioctls for /dev/userfaultfd */
ed5979
+#define USERFAULTFD_IOC 0xAA
ed5979
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
ed5979
+
ed5979
 /*
ed5979
  * If the UFFDIO_API is upgraded someday, the UFFDIO_UNREGISTER and
ed5979
  * UFFDIO_WAKE ioctls should be defined as _IOW and not as _IOR.  In
ed5979
diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
ed5979
index ede44b5572..bee7e42198 100644
ed5979
--- a/linux-headers/linux/vfio.h
ed5979
+++ b/linux-headers/linux/vfio.h
ed5979
@@ -986,6 +986,148 @@ enum vfio_device_mig_state {
ed5979
 	VFIO_DEVICE_STATE_RUNNING_P2P = 5,
ed5979
 };
ed5979
 
ed5979
+/*
ed5979
+ * Upon VFIO_DEVICE_FEATURE_SET, allow the device to be moved into a low power
ed5979
+ * state with the platform-based power management.  Device use of lower power
ed5979
+ * states depends on factors managed by the runtime power management core,
ed5979
+ * including system level support and coordinating support among dependent
ed5979
+ * devices.  Enabling device low power entry does not guarantee lower power
ed5979
+ * usage by the device, nor is a mechanism provided through this feature to
ed5979
+ * know the current power state of the device.  If any device access happens
ed5979
+ * (either from the host or through the vfio uAPI) when the device is in the
ed5979
+ * low power state, then the host will move the device out of the low power
ed5979
+ * state as necessary prior to the access.  Once the access is completed, the
ed5979
+ * device may re-enter the low power state.  For single shot low power support
ed5979
+ * with wake-up notification, see
ed5979
+ * VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP below.  Access to mmap'd
ed5979
+ * device regions is disabled on LOW_POWER_ENTRY and may only be resumed after
ed5979
+ * calling LOW_POWER_EXIT.
ed5979
+ */
ed5979
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
ed5979
+
ed5979
+/*
ed5979
+ * This device feature has the same behavior as
ed5979
+ * VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY with the exception that the user
ed5979
+ * provides an eventfd for wake-up notification.  When the device moves out of
ed5979
+ * the low power state for the wake-up, the host will not allow the device to
ed5979
+ * re-enter a low power state without a subsequent user call to one of the low
ed5979
+ * power entry device feature IOCTLs.  Access to mmap'd device regions is
ed5979
+ * disabled on LOW_POWER_ENTRY_WITH_WAKEUP and may only be resumed after the
ed5979
+ * low power exit.  The low power exit can happen either through LOW_POWER_EXIT
ed5979
+ * or through any other access (where the wake-up notification has been
ed5979
+ * generated).  The access to mmap'd device regions will not trigger low power
ed5979
+ * exit.
ed5979
+ *
ed5979
+ * The notification through the provided eventfd will be generated only when
ed5979
+ * the device has entered and is resumed from a low power state after
ed5979
+ * calling this device feature IOCTL.  A device that has not entered low power
ed5979
+ * state, as managed through the runtime power management core, will not
ed5979
+ * generate a notification through the provided eventfd on access.  Calling the
ed5979
+ * LOW_POWER_EXIT feature is optional in the case where notification has been
ed5979
+ * signaled on the provided eventfd that a resume from low power has occurred.
ed5979
+ */
ed5979
+struct vfio_device_low_power_entry_with_wakeup {
ed5979
+	__s32 wakeup_eventfd;
ed5979
+	__u32 reserved;
ed5979
+};
ed5979
+
ed5979
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
ed5979
+
ed5979
+/*
ed5979
+ * Upon VFIO_DEVICE_FEATURE_SET, disallow use of device low power states as
ed5979
+ * previously enabled via VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY or
ed5979
+ * VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP device features.
ed5979
+ * This device feature IOCTL may itself generate a wakeup eventfd notification
ed5979
+ * in the latter case if the device had previously entered a low power state.
ed5979
+ */
ed5979
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
ed5979
+
ed5979
+/*
ed5979
+ * Upon VFIO_DEVICE_FEATURE_SET start/stop device DMA logging.
ed5979
+ * VFIO_DEVICE_FEATURE_PROBE can be used to detect if the device supports
ed5979
+ * DMA logging.
ed5979
+ *
ed5979
+ * DMA logging allows a device to internally record what DMAs the device is
ed5979
+ * initiating and report them back to userspace. It is part of the VFIO
ed5979
+ * migration infrastructure that allows implementing dirty page tracking
ed5979
+ * during the pre copy phase of live migration. Only DMA WRITEs are logged,
ed5979
+ * and this API is not connected to VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE.
ed5979
+ *
ed5979
+ * When DMA logging is started a range of IOVAs to monitor is provided and the
ed5979
+ * device can optimize its logging to cover only the IOVA range given. Each
ed5979
+ * DMA that the device initiates inside the range will be logged by the device
ed5979
+ * for later retrieval.
ed5979
+ *
ed5979
+ * page_size is an input that hints what tracking granularity the device
ed5979
+ * should try to achieve. If the device cannot do the hinted page size then
ed5979
+ * it's the driver choice which page size to pick based on its support.
ed5979
+ * On output the device will return the page size it selected.
ed5979
+ *
ed5979
+ * ranges is a pointer to an array of
ed5979
+ * struct vfio_device_feature_dma_logging_range.
ed5979
+ *
ed5979
+ * The core kernel code guarantees to support by minimum num_ranges that fit
ed5979
+ * into a single kernel page. User space can try higher values but should give
ed5979
+ * up if the above can't be achieved as of some driver limitations.
ed5979
+ *
ed5979
+ * A single call to start device DMA logging can be issued and a matching stop
ed5979
+ * should follow at the end. Another start is not allowed in the meantime.
ed5979
+ */
ed5979
+struct vfio_device_feature_dma_logging_control {
ed5979
+	__aligned_u64 page_size;
ed5979
+	__u32 num_ranges;
ed5979
+	__u32 __reserved;
ed5979
+	__aligned_u64 ranges;
ed5979
+};
ed5979
+
ed5979
+struct vfio_device_feature_dma_logging_range {
ed5979
+	__aligned_u64 iova;
ed5979
+	__aligned_u64 length;
ed5979
+};
ed5979
+
ed5979
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
ed5979
+
ed5979
+/*
ed5979
+ * Upon VFIO_DEVICE_FEATURE_SET stop device DMA logging that was started
ed5979
+ * by VFIO_DEVICE_FEATURE_DMA_LOGGING_START
ed5979
+ */
ed5979
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
ed5979
+
ed5979
+/*
ed5979
+ * Upon VFIO_DEVICE_FEATURE_GET read back and clear the device DMA log
ed5979
+ *
ed5979
+ * Query the device's DMA log for written pages within the given IOVA range.
ed5979
+ * During querying the log is cleared for the IOVA range.
ed5979
+ *
ed5979
+ * bitmap is a pointer to an array of u64s that will hold the output bitmap
ed5979
+ * with 1 bit reporting a page_size unit of IOVA. The mapping of IOVA to bits
ed5979
+ * is given by:
ed5979
+ *  bitmap[(addr - iova)/page_size] & (1ULL << (addr % 64))
ed5979
+ *
ed5979
+ * The input page_size can be any power of two value and does not have to
ed5979
+ * match the value given to VFIO_DEVICE_FEATURE_DMA_LOGGING_START. The driver
ed5979
+ * will format its internal logging to match the reporting page size, possibly
ed5979
+ * by replicating bits if the internal page size is lower than requested.
ed5979
+ *
ed5979
+ * The LOGGING_REPORT will only set bits in the bitmap and never clear or
ed5979
+ * perform any initialization of the user provided bitmap.
ed5979
+ *
ed5979
+ * If any error is returned userspace should assume that the dirty log is
ed5979
+ * corrupted. Error recovery is to consider all memory dirty and try to
ed5979
+ * restart the dirty tracking, or to abort/restart the whole migration.
ed5979
+ *
ed5979
+ * If DMA logging is not enabled, an error will be returned.
ed5979
+ *
ed5979
+ */
ed5979
+struct vfio_device_feature_dma_logging_report {
ed5979
+	__aligned_u64 iova;
ed5979
+	__aligned_u64 length;
ed5979
+	__aligned_u64 page_size;
ed5979
+	__aligned_u64 bitmap;
ed5979
+};
ed5979
+
ed5979
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
ed5979
+
ed5979
 /* -------- API for Type1 VFIO IOMMU -------- */
ed5979
 
ed5979
 /**
ed5979
-- 
ed5979
2.31.1
ed5979