{"id":2227023,"url":"http://patchwork.ozlabs.org/api/patches/2227023/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260423012838.3695392-2-gaosong@loongson.cn/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260423012838.3695392-2-gaosong@loongson.cn>","list_archive_url":null,"date":"2026-04-23T01:28:38","name":"[2/2] linux-headers: update to Linux 7.1-rc1","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"bf73d0bdf4246b2f29021fee85dbc184572ee728","submitter":{"id":82024,"url":"http://patchwork.ozlabs.org/api/people/82024/?format=json","name":"gaosong","email":"gaosong@loongson.cn"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260423012838.3695392-2-gaosong@loongson.cn/mbox/","series":[{"id":501139,"url":"http://patchwork.ozlabs.org/api/series/501139/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501139","date":"2026-04-23T01:28:38","name":"[1/2] update-linux-headers.sh: add typelimits.h to portable header list","version":1,"mbox":"http://patchwork.ozlabs.org/series/501139/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227023/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227023/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":"legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1K0k4MJvz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 11:55:00 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wFjHE-000389-Bh; Wed, 22 Apr 2026 21:54:48 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <gaosong@loongson.cn>)\n id 1wFjHC-00037d-37\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 21:54:46 -0400","from mail.loongson.cn ([114.242.206.163])\n by eggs.gnu.org with esmtp (Exim 4.90_1)\n (envelope-from <gaosong@loongson.cn>) id 1wFjH5-0006Iz-Nt\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 21:54:45 -0400","from loongson.cn (unknown [10.2.5.185])\n by gateway (Coremail) with SMTP id _____8Bx0erWe+lpUhkDAA--.11073S3;\n Thu, 23 Apr 2026 09:54:30 +0800 (CST)","from localhost.localdomain (unknown [10.2.5.185])\n by front1 (Coremail) with SMTP id qMiowJCx_8LQe+lpeAtzAA--.22398S3;\n Thu, 23 Apr 2026 09:54:26 +0800 (CST)"],"From":"Song Gao <gaosong@loongson.cn>","To":"qemu-devel@nongnu.org","Cc":"maobibo@loongson.cn, philmd@linaro.org, richard.henderson@linaro.org,\n clg@redhat.com, pbonzini@redhat.com, cohuck@redhat.com, thuth@redhat.com,\n mst@redhat.com, peter.maydell@linaro.org","Subject":"[PATCH 2/2] linux-headers: update to Linux 7.1-rc1","Date":"Thu, 23 Apr 2026 09:28:38 +0800","Message-Id":"<20260423012838.3695392-2-gaosong@loongson.cn>","X-Mailer":"git-send-email 2.39.1","In-Reply-To":"<20260423012838.3695392-1-gaosong@loongson.cn>","References":"<20260423012838.3695392-1-gaosong@loongson.cn>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-CM-TRANSID":"qMiowJCx_8LQe+lpeAtzAA--.22398S3","X-CM-SenderInfo":"5jdr20tqj6z05rqj20fqof0/","X-Coremail-Antispam":"1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7\n ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx\n nUUI43ZEXa7xR_UUUUUUUUU==","Received-SPF":"pass client-ip=114.242.206.163;\n envelope-from=gaosong@loongson.cn;\n helo=mail.loongson.cn","X-Spam_score_int":"-18","X-Spam_score":"-1.9","X-Spam_bar":"-","X-Spam_report":"(-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"Update the Linux kernel UAPI headers to version 7.1-rc1.\nThis commit was created automatically by update-linux-headers.sh.\n\nSigned-off-by: Song Gao <gaosong@loongson.cn>\n---\n include/standard-headers/drm/drm_fourcc.h     |  28 +-\n include/standard-headers/linux/const.h        |  18 +\n include/standard-headers/linux/ethtool.h      |  28 +-\n .../linux/input-event-codes.h                 |  13 +\n include/standard-headers/linux/pci_regs.h     |  71 ++-\n include/standard-headers/linux/typelimits.h   |   8 +\n include/standard-headers/linux/virtio_ring.h  |   3 +-\n include/standard-headers/linux/virtio_rtc.h   | 237 ++++++++++\n include/standard-headers/linux/vmclock-abi.h  |  20 +\n linux-headers/asm-arm64/kvm.h                 |   1 +\n linux-headers/asm-arm64/unistd_64.h           |   1 +\n linux-headers/asm-generic/unistd.h            |   5 +-\n linux-headers/asm-loongarch/kvm.h             |   5 +\n linux-headers/asm-loongarch/kvm_para.h        |   1 +\n linux-headers/asm-loongarch/unistd_64.h       |   2 +\n linux-headers/asm-mips/unistd_n32.h           |   1 +\n linux-headers/asm-mips/unistd_n64.h           |   1 +\n linux-headers/asm-mips/unistd_o32.h           |   1 +\n linux-headers/asm-powerpc/unistd_32.h         |   1 +\n linux-headers/asm-powerpc/unistd_64.h         |   1 +\n linux-headers/asm-riscv/kvm.h                 |  11 +-\n linux-headers/asm-riscv/ptrace.h              |  37 ++\n linux-headers/asm-riscv/unistd_32.h           |   1 +\n linux-headers/asm-riscv/unistd_64.h           |   1 +\n linux-headers/asm-s390/unistd_32.h            | 446 ------------------\n linux-headers/asm-s390/unistd_64.h            |   1 +\n linux-headers/asm-x86/kvm.h                   |  21 +-\n linux-headers/asm-x86/unistd_32.h             |   1 +\n linux-headers/asm-x86/unistd_64.h             |   1 +\n linux-headers/asm-x86/unistd_x32.h            |   1 +\n linux-headers/linux/const.h                   |  18 +\n linux-headers/linux/iommufd.h                 |  48 ++\n linux-headers/linux/kvm.h                     |  46 +-\n linux-headers/linux/mshv.h                    |   4 +-\n linux-headers/linux/psp-sev.h                 |   2 +-\n linux-headers/linux/stddef.h                  |   4 +\n linux-headers/linux/vduse.h                   |  85 +++-\n linux-headers/linux/vfio.h                    |  30 +-\n 38 files changed, 711 insertions(+), 493 deletions(-)\n create mode 100644 include/standard-headers/linux/typelimits.h\n create mode 100644 include/standard-headers/linux/virtio_rtc.h\n delete mode 100644 linux-headers/asm-s390/unistd_32.h","diff":"diff --git a/include/standard-headers/drm/drm_fourcc.h b/include/standard-headers/drm/drm_fourcc.h\nindex b39e197cc7..4bad457cc2 100644\n--- a/include/standard-headers/drm/drm_fourcc.h\n+++ b/include/standard-headers/drm/drm_fourcc.h\n@@ -400,8 +400,8 @@ extern \"C\" {\n  * implementation can multiply the values by 2^6=64. For that reason the padding\n  * must only contain zeros.\n  * index 0 = Y plane, [15:0] z:Y [6:10] little endian\n- * index 1 = Cr plane, [15:0] z:Cr [6:10] little endian\n- * index 2 = Cb plane, [15:0] z:Cb [6:10] little endian\n+ * index 1 = Cb plane, [15:0] z:Cb [6:10] little endian\n+ * index 2 = Cr plane, [15:0] z:Cr [6:10] little endian\n  */\n #define DRM_FORMAT_S010\tfourcc_code('S', '0', '1', '0') /* 2x2 subsampled Cb (1) and Cr (2) planes 10 bits per channel */\n #define DRM_FORMAT_S210\tfourcc_code('S', '2', '1', '0') /* 2x1 subsampled Cb (1) and Cr (2) planes 10 bits per channel */\n@@ -413,8 +413,8 @@ extern \"C\" {\n  * implementation can multiply the values by 2^4=16. For that reason the padding\n  * must only contain zeros.\n  * index 0 = Y plane, [15:0] z:Y [4:12] little endian\n- * index 1 = Cr plane, [15:0] z:Cr [4:12] little endian\n- * index 2 = Cb plane, [15:0] z:Cb [4:12] little endian\n+ * index 1 = Cb plane, [15:0] z:Cb [4:12] little endian\n+ * index 2 = Cr plane, [15:0] z:Cr [4:12] little endian\n  */\n #define DRM_FORMAT_S012\tfourcc_code('S', '0', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes 12 bits per channel */\n #define DRM_FORMAT_S212\tfourcc_code('S', '2', '1', '2') /* 2x1 subsampled Cb (1) and Cr (2) planes 12 bits per channel */\n@@ -423,8 +423,8 @@ extern \"C\" {\n /*\n  * 3 plane YCbCr\n  * index 0 = Y plane, [15:0] Y little endian\n- * index 1 = Cr plane, [15:0] Cr little endian\n- * index 2 = Cb plane, [15:0] Cb little endian\n+ * index 1 = Cb plane, [15:0] Cb little endian\n+ * index 2 = Cr plane, [15:0] Cr little endian\n  */\n #define DRM_FORMAT_S016\tfourcc_code('S', '0', '1', '6') /* 2x2 subsampled Cb (1) and Cr (2) planes 16 bits per channel */\n #define DRM_FORMAT_S216\tfourcc_code('S', '2', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes 16 bits per channel */\n@@ -1421,6 +1421,22 @@ drm_fourcc_canonicalize_nvidia_format_mod(uint64_t modifier)\n #define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED \\\n \tDRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)\n \n+/*\n+ * ARM 64k interleaved modifier\n+ *\n+ * This is used by ARM Mali v10+ GPUs. With this modifier, the plane is divided\n+ * into 64k byte 1:1 or 2:1 -sided tiles. The 64k tiles are laid out linearly.\n+ * Each 64k tile is divided into blocks of 16x16 texel blocks, which are\n+ * themselves laid out linearly within a 64k tile. Then within each 16x16\n+ * block, texel blocks are laid out according to U order, similar to\n+ * 16X16_BLOCK_U_INTERLEAVED.\n+ *\n+ * Note that unlike 16X16_BLOCK_U_INTERLEAVED, the layout does not change\n+ * depending on whether a format is compressed or not.\n+ */\n+#define DRM_FORMAT_MOD_ARM_INTERLEAVED_64K \\\n+\tDRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 2ULL)\n+\n /*\n  * Allwinner tiled modifier\n  *\ndiff --git a/include/standard-headers/linux/const.h b/include/standard-headers/linux/const.h\nindex 95ede23342..c6a9d0c983 100644\n--- a/include/standard-headers/linux/const.h\n+++ b/include/standard-headers/linux/const.h\n@@ -50,4 +50,22 @@\n \n #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))\n \n+/*\n+ * Divide positive or negative dividend by positive or negative divisor\n+ * and round to closest integer. Result is undefined for negative\n+ * divisors if the dividend variable type is unsigned and for negative\n+ * dividends if the divisor variable type is unsigned.\n+ */\n+#define __KERNEL_DIV_ROUND_CLOSEST(x, divisor)\t\t\\\n+({\t\t\t\t\t\t\t\\\n+\t__typeof__(x) __x = x;\t\t\t\t\\\n+\t__typeof__(divisor) __d = divisor;\t\t\\\n+\t\t\t\t\t\t\t\\\n+\t(((__typeof__(x))-1) > 0 ||\t\t\t\\\n+\t ((__typeof__(divisor))-1) > 0 ||\t\t\\\n+\t (((__x) > 0) == ((__d) > 0))) ?\t\t\\\n+\t\t(((__x) + ((__d) / 2)) / (__d)) :\t\\\n+\t\t(((__x) - ((__d) / 2)) / (__d));\t\\\n+})\n+\n #endif /* _LINUX_CONST_H */\ndiff --git a/include/standard-headers/linux/ethtool.h b/include/standard-headers/linux/ethtool.h\nindex d0f7a63f10..5d82126cd7 100644\n--- a/include/standard-headers/linux/ethtool.h\n+++ b/include/standard-headers/linux/ethtool.h\n@@ -17,11 +17,10 @@\n #include \"net/eth.h\"\n \n #include \"standard-headers/linux/const.h\"\n+#include \"standard-headers/linux/typelimits.h\"\n #include \"standard-headers/linux/types.h\"\n #include \"standard-headers/linux/if_ether.h\"\n \n-#include <limits.h> /* for INT_MAX */\n-\n /* All structures exposed to userland should be defined such that they\n  * have the same layout for 32-bit and 64-bit userland.\n  */\n@@ -228,7 +227,7 @@ enum tunable_id {\n \tETHTOOL_ID_UNSPEC,\n \tETHTOOL_RX_COPYBREAK,\n \tETHTOOL_TX_COPYBREAK,\n-\tETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */\n+\tETHTOOL_PFC_PREVENTION_TOUT, /* both pause and pfc, see man ethtool */\n \tETHTOOL_TX_COPYBREAK_BUF_SIZE,\n \t/*\n \t * Add your fresh new tunable attribute above and remember to update\n@@ -603,6 +602,8 @@ enum ethtool_link_ext_state {\n \tETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,\n \tETHTOOL_LINK_EXT_STATE_OVERHEAT,\n \tETHTOOL_LINK_EXT_STATE_MODULE,\n+\tETHTOOL_LINK_EXT_STATE_OTP_SPEED_VIOLATION,\n+\tETHTOOL_LINK_EXT_STATE_BMC_REQUEST_DOWN,\n };\n \n /* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */\n@@ -1094,13 +1095,20 @@ enum ethtool_module_fw_flash_status {\n  * struct ethtool_gstrings - string set for data tagging\n  * @cmd: Command number = %ETHTOOL_GSTRINGS\n  * @string_set: String set ID; one of &enum ethtool_stringset\n- * @len: On return, the number of strings in the string set\n+ * @len: Number of strings in the string set\n  * @data: Buffer for strings.  Each string is null-padded to a size of\n  *\t%ETH_GSTRING_LEN.\n  *\n  * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in\n  * the string set.  They must allocate a buffer of the appropriate\n  * size immediately following this structure.\n+ *\n+ * Setting @len on input is optional (though preferred), but must be zeroed\n+ * otherwise.\n+ * When set, @len will return the requested count if it matches the actual\n+ * count; otherwise, it will be zero.\n+ * This prevents issues when the number of strings is different than the\n+ * userspace allocation.\n  */\n struct ethtool_gstrings {\n \tuint32_t\tcmd;\n@@ -1177,13 +1185,20 @@ struct ethtool_test {\n /**\n  * struct ethtool_stats - device-specific statistics\n  * @cmd: Command number = %ETHTOOL_GSTATS\n- * @n_stats: On return, the number of statistics\n+ * @n_stats: Number of statistics\n  * @data: Array of statistics\n  *\n  * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the\n  * number of statistics that will be returned.  They must allocate a\n  * buffer of the appropriate size (8 * number of statistics)\n  * immediately following this structure.\n+ *\n+ * Setting @n_stats on input is optional (though preferred), but must be zeroed\n+ * otherwise.\n+ * When set, @n_stats will return the requested count if it matches the actual\n+ * count; otherwise, it will be zero.\n+ * This prevents issues when the number of stats is different than the\n+ * userspace allocation.\n  */\n struct ethtool_stats {\n \tuint32_t\tcmd;\n@@ -2190,6 +2205,7 @@ enum ethtool_link_mode_bit_indices {\n #define SPEED_40000\t\t40000\n #define SPEED_50000\t\t50000\n #define SPEED_56000\t\t56000\n+#define SPEED_80000\t\t80000\n #define SPEED_100000\t\t100000\n #define SPEED_200000\t\t200000\n #define SPEED_400000\t\t400000\n@@ -2200,7 +2216,7 @@ enum ethtool_link_mode_bit_indices {\n \n static inline int ethtool_validate_speed(uint32_t speed)\n {\n-\treturn speed <= INT_MAX || speed == (uint32_t)SPEED_UNKNOWN;\n+\treturn speed <= __KERNEL_INT_MAX || speed == (uint32_t)SPEED_UNKNOWN;\n }\n \n /* Duplex, half or full. */\ndiff --git a/include/standard-headers/linux/input-event-codes.h b/include/standard-headers/linux/input-event-codes.h\nindex ede79c6ae4..dd7c986106 100644\n--- a/include/standard-headers/linux/input-event-codes.h\n+++ b/include/standard-headers/linux/input-event-codes.h\n@@ -643,6 +643,10 @@\n #define KEY_EPRIVACY_SCREEN_ON\t\t0x252\n #define KEY_EPRIVACY_SCREEN_OFF\t\t0x253\n \n+#define KEY_ACTION_ON_SELECTION\t\t0x254\t/* AL Action on Selection (HUTRR119) */\n+#define KEY_CONTEXTUAL_INSERT\t\t0x255\t/* AL Contextual Insertion (HUTRR119) */\n+#define KEY_CONTEXTUAL_QUERY\t\t0x256\t/* AL Contextual Query (HUTRR119) */\n+\n #define KEY_KBDINPUTASSIST_PREV\t\t0x260\n #define KEY_KBDINPUTASSIST_NEXT\t\t0x261\n #define KEY_KBDINPUTASSIST_PREVGROUP\t\t0x262\n@@ -891,6 +895,7 @@\n \n #define ABS_VOLUME\t\t0x20\n #define ABS_PROFILE\t\t0x21\n+#define ABS_SND_PROFILE\t\t0x22\n \n #define ABS_MISC\t\t0x28\n \n@@ -1000,4 +1005,12 @@\n #define SND_MAX\t\t\t0x07\n #define SND_CNT\t\t\t(SND_MAX+1)\n \n+/*\n+ * ABS_SND_PROFILE values\n+ */\n+\n+#define SND_PROFILE_SILENT\t0x00\n+#define SND_PROFILE_VIBRATE\t0x01\n+#define SND_PROFILE_RING\t0x02\n+\n #endif\ndiff --git a/include/standard-headers/linux/pci_regs.h b/include/standard-headers/linux/pci_regs.h\nindex 3add74ae25..14f634ab93 100644\n--- a/include/standard-headers/linux/pci_regs.h\n+++ b/include/standard-headers/linux/pci_regs.h\n@@ -132,6 +132,11 @@\n #define PCI_SECONDARY_BUS\t0x19\t/* Secondary bus number */\n #define PCI_SUBORDINATE_BUS\t0x1a\t/* Highest bus number behind the bridge */\n #define PCI_SEC_LATENCY_TIMER\t0x1b\t/* Latency timer for secondary interface */\n+/* Masks for dword-sized processing of Bus Number and Sec Latency Timer fields */\n+#define  PCI_PRIMARY_BUS_MASK\t\t0x000000ff\n+#define  PCI_SECONDARY_BUS_MASK\t\t0x0000ff00\n+#define  PCI_SUBORDINATE_BUS_MASK\t0x00ff0000\n+#define  PCI_SEC_LATENCY_TIMER_MASK\t0xff000000\n #define PCI_IO_BASE\t\t0x1c\t/* I/O range behind the bridge */\n #define PCI_IO_LIMIT\t\t0x1d\n #define  PCI_IO_RANGE_TYPE_MASK\t0x0fUL\t/* I/O bridging type */\n@@ -707,7 +712,7 @@\n #define  PCI_EXP_LNKCTL2_HASD\t\t0x0020 /* HW Autonomous Speed Disable */\n #define PCI_EXP_LNKSTA2\t\t0x32\t/* Link Status 2 */\n #define  PCI_EXP_LNKSTA2_FLIT\t\t0x0400 /* Flit Mode Status */\n-#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2\t0x32\t/* end of v2 EPs w/ link */\n+#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2\t0x34\t/* end of v2 EPs w/ link */\n #define PCI_EXP_SLTCAP2\t\t0x34\t/* Slot Capabilities 2 */\n #define  PCI_EXP_SLTCAP2_IBPD\t0x00000001 /* In-band PD Disable Supported */\n #define PCI_EXP_SLTCTL2\t\t0x38\t/* Slot Control 2 */\n@@ -1253,11 +1258,6 @@\n #define PCI_DEV3_STA\t\t0x0c\t/* Device 3 Status Register */\n #define  PCI_DEV3_STA_SEGMENT\t0x8\t/* Segment Captured (end-to-end flit-mode detected) */\n \n-/* Compute Express Link (CXL r3.1, sec 8.1.5) */\n-#define PCI_DVSEC_CXL_PORT\t\t\t\t3\n-#define PCI_DVSEC_CXL_PORT_CTL\t\t\t\t0x0c\n-#define PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR\t\t0x00000001\n-\n /* Integrity and Data Encryption Extended Capability */\n #define PCI_IDE_CAP\t\t\t0x04\n #define  PCI_IDE_CAP_LINK\t\t0x1  /* Link IDE Stream Supported */\n@@ -1338,4 +1338,63 @@\n #define  PCI_IDE_SEL_ADDR_3(x)\t\t(28 + (x) * PCI_IDE_SEL_ADDR_BLOCK_SIZE)\n #define PCI_IDE_SEL_BLOCK_SIZE(nr_assoc)  (20 + PCI_IDE_SEL_ADDR_BLOCK_SIZE * (nr_assoc))\n \n+/*\n+ * Compute Express Link (CXL r4.0, sec 8.1)\n+ *\n+ * Note that CXL DVSEC id 3 and 7 to be ignored when the CXL link state\n+ * is \"disconnected\" (CXL r4.0, sec 9.12.3). Re-enumerate these\n+ * registers on downstream link-up events.\n+ */\n+\n+/* CXL r4.0, 8.1.3: PCIe DVSEC for CXL Device */\n+#define PCI_DVSEC_CXL_DEVICE\t\t\t\t0\n+#define  PCI_DVSEC_CXL_CAP\t\t\t\t0xA\n+#define   PCI_DVSEC_CXL_MEM_CAPABLE\t\t\t_BITUL(2)\n+#define   PCI_DVSEC_CXL_HDM_COUNT\t\t\t__GENMASK(5, 4)\n+#define  PCI_DVSEC_CXL_CTRL\t\t\t\t0xC\n+#define   PCI_DVSEC_CXL_MEM_ENABLE\t\t\t_BITUL(2)\n+#define  PCI_DVSEC_CXL_RANGE_SIZE_HIGH(i)\t\t(0x18 + (i * 0x10))\n+#define  PCI_DVSEC_CXL_RANGE_SIZE_LOW(i)\t\t(0x1C + (i * 0x10))\n+#define   PCI_DVSEC_CXL_MEM_INFO_VALID\t\t\t_BITUL(0)\n+#define   PCI_DVSEC_CXL_MEM_ACTIVE\t\t\t_BITUL(1)\n+#define   PCI_DVSEC_CXL_MEM_SIZE_LOW\t\t\t__GENMASK(31, 28)\n+#define  PCI_DVSEC_CXL_RANGE_BASE_HIGH(i)\t\t(0x20 + (i * 0x10))\n+#define  PCI_DVSEC_CXL_RANGE_BASE_LOW(i)\t\t(0x24 + (i * 0x10))\n+#define   PCI_DVSEC_CXL_MEM_BASE_LOW\t\t\t__GENMASK(31, 28)\n+\n+#define CXL_DVSEC_RANGE_MAX\t\t\t\t2\n+\n+/* CXL r4.0, 8.1.4: Non-CXL Function Map DVSEC */\n+#define PCI_DVSEC_CXL_FUNCTION_MAP\t\t\t2\n+\n+/* CXL r4.0, 8.1.5: Extensions DVSEC for Ports */\n+#define PCI_DVSEC_CXL_PORT\t\t\t\t3\n+#define  PCI_DVSEC_CXL_PORT_CTL\t\t\t\t0x0c\n+#define   PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR\t\t0x00000001\n+\n+/* CXL r4.0, 8.1.6: GPF DVSEC for CXL Port */\n+#define PCI_DVSEC_CXL_PORT_GPF\t\t\t\t4\n+#define  PCI_DVSEC_CXL_PORT_GPF_PHASE_1_CONTROL\t\t0x0C\n+#define   PCI_DVSEC_CXL_PORT_GPF_PHASE_1_TMO_BASE\t__GENMASK(3, 0)\n+#define   PCI_DVSEC_CXL_PORT_GPF_PHASE_1_TMO_SCALE\t__GENMASK(11, 8)\n+#define  PCI_DVSEC_CXL_PORT_GPF_PHASE_2_CONTROL\t\t0xE\n+#define   PCI_DVSEC_CXL_PORT_GPF_PHASE_2_TMO_BASE\t__GENMASK(3, 0)\n+#define   PCI_DVSEC_CXL_PORT_GPF_PHASE_2_TMO_SCALE\t__GENMASK(11, 8)\n+\n+/* CXL r4.0, 8.1.7: GPF DVSEC for CXL Device */\n+#define PCI_DVSEC_CXL_DEVICE_GPF\t\t\t5\n+\n+/* CXL r4.0, 8.1.8: Flex Bus DVSEC */\n+#define PCI_DVSEC_CXL_FLEXBUS_PORT\t\t\t7\n+#define  PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS\t\t0xE\n+#define   PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE\t_BITUL(0)\n+#define   PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM\t\t_BITUL(2)\n+\n+/* CXL r4.0, 8.1.9: Register Locator DVSEC */\n+#define PCI_DVSEC_CXL_REG_LOCATOR\t\t\t8\n+#define  PCI_DVSEC_CXL_REG_LOCATOR_BLOCK1\t\t0xC\n+#define   PCI_DVSEC_CXL_REG_LOCATOR_BIR\t\t\t__GENMASK(2, 0)\n+#define   PCI_DVSEC_CXL_REG_LOCATOR_BLOCK_ID\t\t__GENMASK(15, 8)\n+#define   PCI_DVSEC_CXL_REG_LOCATOR_BLOCK_OFF_LOW\t__GENMASK(31, 16)\n+\n #endif /* LINUX_PCI_REGS_H */\ndiff --git a/include/standard-headers/linux/typelimits.h b/include/standard-headers/linux/typelimits.h\nnew file mode 100644\nindex 0000000000..1304520082\n--- /dev/null\n+++ b/include/standard-headers/linux/typelimits.h\n@@ -0,0 +1,8 @@\n+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n+#ifndef _LINUX_TYPELIMITS_H\n+#define _LINUX_TYPELIMITS_H\n+\n+#define __KERNEL_INT_MAX ((int)(~0U >> 1))\n+#define __KERNEL_INT_MIN (-__KERNEL_INT_MAX - 1)\n+\n+#endif /* _LINUX_TYPELIMITS_H */\ndiff --git a/include/standard-headers/linux/virtio_ring.h b/include/standard-headers/linux/virtio_ring.h\nindex 22f6eb8ca7..7baf1968a3 100644\n--- a/include/standard-headers/linux/virtio_ring.h\n+++ b/include/standard-headers/linux/virtio_ring.h\n@@ -31,7 +31,6 @@\n  * SUCH DAMAGE.\n  *\n  * Copyright Rusty Russell IBM Corporation 2007. */\n-#include <stdint.h>\n #include \"standard-headers/linux/types.h\"\n #include \"standard-headers/linux/virtio_types.h\"\n \n@@ -200,7 +199,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p,\n \tvr->num = num;\n \tvr->desc = p;\n \tvr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc));\n-\tvr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16)\n+\tvr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16)\n \t\t+ align-1) & ~(align - 1));\n }\n \ndiff --git a/include/standard-headers/linux/virtio_rtc.h b/include/standard-headers/linux/virtio_rtc.h\nnew file mode 100644\nindex 0000000000..7e2c21ebff\n--- /dev/null\n+++ b/include/standard-headers/linux/virtio_rtc.h\n@@ -0,0 +1,237 @@\n+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */\n+/*\n+ * Copyright (C) 2022-2024 OpenSynergy GmbH\n+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.\n+ */\n+\n+#ifndef _LINUX_VIRTIO_RTC_H\n+#define _LINUX_VIRTIO_RTC_H\n+\n+#include \"standard-headers/linux/types.h\"\n+\n+/* alarm feature */\n+#define VIRTIO_RTC_F_ALARM\t0\n+\n+/* read request message types */\n+\n+#define VIRTIO_RTC_REQ_READ\t\t\t0x0001\n+#define VIRTIO_RTC_REQ_READ_CROSS\t\t0x0002\n+\n+/* control request message types */\n+\n+#define VIRTIO_RTC_REQ_CFG\t\t\t0x1000\n+#define VIRTIO_RTC_REQ_CLOCK_CAP\t\t0x1001\n+#define VIRTIO_RTC_REQ_CROSS_CAP\t\t0x1002\n+#define VIRTIO_RTC_REQ_READ_ALARM\t\t0x1003\n+#define VIRTIO_RTC_REQ_SET_ALARM\t\t0x1004\n+#define VIRTIO_RTC_REQ_SET_ALARM_ENABLED\t0x1005\n+\n+/* alarmq message types */\n+\n+#define VIRTIO_RTC_NOTIF_ALARM\t\t\t0x2000\n+\n+/* Message headers */\n+\n+/** common request header */\n+struct virtio_rtc_req_head {\n+\tuint16_t msg_type;\n+\tuint8_t reserved[6];\n+};\n+\n+/** common response header */\n+struct virtio_rtc_resp_head {\n+#define VIRTIO_RTC_S_OK\t\t\t0\n+#define VIRTIO_RTC_S_EOPNOTSUPP\t\t2\n+#define VIRTIO_RTC_S_ENODEV\t\t3\n+#define VIRTIO_RTC_S_EINVAL\t\t4\n+#define VIRTIO_RTC_S_EIO\t\t5\n+\tuint8_t status;\n+\tuint8_t reserved[7];\n+};\n+\n+/** common notification header */\n+struct virtio_rtc_notif_head {\n+\tuint16_t msg_type;\n+\tuint8_t reserved[6];\n+};\n+\n+/* read requests */\n+\n+/* VIRTIO_RTC_REQ_READ message */\n+\n+struct virtio_rtc_req_read {\n+\tstruct virtio_rtc_req_head head;\n+\tuint16_t clock_id;\n+\tuint8_t reserved[6];\n+};\n+\n+struct virtio_rtc_resp_read {\n+\tstruct virtio_rtc_resp_head head;\n+\tuint64_t clock_reading;\n+};\n+\n+/* VIRTIO_RTC_REQ_READ_CROSS message */\n+\n+struct virtio_rtc_req_read_cross {\n+\tstruct virtio_rtc_req_head head;\n+\tuint16_t clock_id;\n+/* Arm Generic Timer Counter-timer Virtual Count Register (CNTVCT_EL0) */\n+#define VIRTIO_RTC_COUNTER_ARM_VCT\t0\n+/* x86 Time-Stamp Counter */\n+#define VIRTIO_RTC_COUNTER_X86_TSC\t1\n+/* Invalid */\n+#define VIRTIO_RTC_COUNTER_INVALID\t0xFF\n+\tuint8_t hw_counter;\n+\tuint8_t reserved[5];\n+};\n+\n+struct virtio_rtc_resp_read_cross {\n+\tstruct virtio_rtc_resp_head head;\n+\tuint64_t clock_reading;\n+\tuint64_t counter_cycles;\n+};\n+\n+/* control requests */\n+\n+/* VIRTIO_RTC_REQ_CFG message */\n+\n+struct virtio_rtc_req_cfg {\n+\tstruct virtio_rtc_req_head head;\n+\t/* no request params */\n+};\n+\n+struct virtio_rtc_resp_cfg {\n+\tstruct virtio_rtc_resp_head head;\n+\t/** # of clocks -> clock ids < num_clocks are valid */\n+\tuint16_t num_clocks;\n+\tuint8_t reserved[6];\n+};\n+\n+/* VIRTIO_RTC_REQ_CLOCK_CAP message */\n+\n+struct virtio_rtc_req_clock_cap {\n+\tstruct virtio_rtc_req_head head;\n+\tuint16_t clock_id;\n+\tuint8_t reserved[6];\n+};\n+\n+struct virtio_rtc_resp_clock_cap {\n+\tstruct virtio_rtc_resp_head head;\n+#define VIRTIO_RTC_CLOCK_UTC\t\t\t0\n+#define VIRTIO_RTC_CLOCK_TAI\t\t\t1\n+#define VIRTIO_RTC_CLOCK_MONOTONIC\t\t2\n+#define VIRTIO_RTC_CLOCK_UTC_SMEARED\t\t3\n+#define VIRTIO_RTC_CLOCK_UTC_MAYBE_SMEARED\t4\n+\tuint8_t type;\n+#define VIRTIO_RTC_SMEAR_UNSPECIFIED\t0\n+#define VIRTIO_RTC_SMEAR_NOON_LINEAR\t1\n+#define VIRTIO_RTC_SMEAR_UTC_SLS\t2\n+\tuint8_t leap_second_smearing;\n+#define VIRTIO_RTC_FLAG_ALARM_CAP\t\t(1 << 0)\n+\tuint8_t flags;\n+\tuint8_t reserved[5];\n+};\n+\n+/* VIRTIO_RTC_REQ_CROSS_CAP message */\n+\n+struct virtio_rtc_req_cross_cap {\n+\tstruct virtio_rtc_req_head head;\n+\tuint16_t clock_id;\n+\tuint8_t hw_counter;\n+\tuint8_t reserved[5];\n+};\n+\n+struct virtio_rtc_resp_cross_cap {\n+\tstruct virtio_rtc_resp_head head;\n+#define VIRTIO_RTC_FLAG_CROSS_CAP\t(1 << 0)\n+\tuint8_t flags;\n+\tuint8_t reserved[7];\n+};\n+\n+/* VIRTIO_RTC_REQ_READ_ALARM message */\n+\n+struct virtio_rtc_req_read_alarm {\n+\tstruct virtio_rtc_req_head head;\n+\tuint16_t clock_id;\n+\tuint8_t reserved[6];\n+};\n+\n+struct virtio_rtc_resp_read_alarm {\n+\tstruct virtio_rtc_resp_head head;\n+\tuint64_t alarm_time;\n+#define VIRTIO_RTC_FLAG_ALARM_ENABLED\t(1 << 0)\n+\tuint8_t flags;\n+\tuint8_t reserved[7];\n+};\n+\n+/* VIRTIO_RTC_REQ_SET_ALARM message */\n+\n+struct virtio_rtc_req_set_alarm {\n+\tstruct virtio_rtc_req_head head;\n+\tuint64_t alarm_time;\n+\tuint16_t clock_id;\n+\t/* flag VIRTIO_RTC_FLAG_ALARM_ENABLED */\n+\tuint8_t flags;\n+\tuint8_t reserved[5];\n+};\n+\n+struct virtio_rtc_resp_set_alarm {\n+\tstruct virtio_rtc_resp_head head;\n+\t/* no response params */\n+};\n+\n+/* VIRTIO_RTC_REQ_SET_ALARM_ENABLED message */\n+\n+struct virtio_rtc_req_set_alarm_enabled {\n+\tstruct virtio_rtc_req_head head;\n+\tuint16_t clock_id;\n+\t/* flag VIRTIO_RTC_ALARM_ENABLED */\n+\tuint8_t flags;\n+\tuint8_t reserved[5];\n+};\n+\n+struct virtio_rtc_resp_set_alarm_enabled {\n+\tstruct virtio_rtc_resp_head head;\n+\t/* no response params */\n+};\n+\n+/** Union of request types for requestq */\n+union virtio_rtc_req_requestq {\n+\tstruct virtio_rtc_req_read read;\n+\tstruct virtio_rtc_req_read_cross read_cross;\n+\tstruct virtio_rtc_req_cfg cfg;\n+\tstruct virtio_rtc_req_clock_cap clock_cap;\n+\tstruct virtio_rtc_req_cross_cap cross_cap;\n+\tstruct virtio_rtc_req_read_alarm read_alarm;\n+\tstruct virtio_rtc_req_set_alarm set_alarm;\n+\tstruct virtio_rtc_req_set_alarm_enabled set_alarm_enabled;\n+};\n+\n+/** Union of response types for requestq */\n+union virtio_rtc_resp_requestq {\n+\tstruct virtio_rtc_resp_read read;\n+\tstruct virtio_rtc_resp_read_cross read_cross;\n+\tstruct virtio_rtc_resp_cfg cfg;\n+\tstruct virtio_rtc_resp_clock_cap clock_cap;\n+\tstruct virtio_rtc_resp_cross_cap cross_cap;\n+\tstruct virtio_rtc_resp_read_alarm read_alarm;\n+\tstruct virtio_rtc_resp_set_alarm set_alarm;\n+\tstruct virtio_rtc_resp_set_alarm_enabled set_alarm_enabled;\n+};\n+\n+/* alarmq notifications */\n+\n+/* VIRTIO_RTC_NOTIF_ALARM notification */\n+\n+struct virtio_rtc_notif_alarm {\n+\tstruct virtio_rtc_notif_head head;\n+\tuint16_t clock_id;\n+\tuint8_t reserved[6];\n+};\n+\n+/** Union of notification types for alarmq */\n+union virtio_rtc_notif_alarmq {\n+\tstruct virtio_rtc_notif_alarm alarm;\n+};\n+\n+#endif /* _LINUX_VIRTIO_RTC_H */\ndiff --git a/include/standard-headers/linux/vmclock-abi.h b/include/standard-headers/linux/vmclock-abi.h\nindex 15b0316cb4..fe824badc0 100644\n--- a/include/standard-headers/linux/vmclock-abi.h\n+++ b/include/standard-headers/linux/vmclock-abi.h\n@@ -115,6 +115,17 @@ struct vmclock_abi {\n \t * bit again after the update, using the about-to-be-valid fields.\n \t */\n #define VMCLOCK_FLAG_TIME_MONOTONIC\t\t(1 << 7)\n+\t/*\n+\t * If the VM_GEN_COUNTER_PRESENT flag is set, the hypervisor will\n+\t * bump the vm_generation_counter field every time the guest is\n+\t * loaded from some save state (restored from a snapshot).\n+\t */\n+#define VMCLOCK_FLAG_VM_GEN_COUNTER_PRESENT     (1 << 8)\n+\t/*\n+\t * If the NOTIFICATION_PRESENT flag is set, the hypervisor will send\n+\t * a notification every time it updates seq_count to a new even number.\n+\t */\n+#define VMCLOCK_FLAG_NOTIFICATION_PRESENT       (1 << 9)\n \n \tuint8_t pad[2];\n \tuint8_t clock_status;\n@@ -177,6 +188,15 @@ struct vmclock_abi {\n \tuint64_t time_frac_sec;\t\t/* Units of 1/2^64 of a second */\n \tuint64_t time_esterror_nanosec;\n \tuint64_t time_maxerror_nanosec;\n+\n+\t/*\n+\t * This field changes to another non-repeating value when the guest\n+\t * has been loaded from a snapshot. In addition to handling a\n+\t * disruption in time (which will also be signalled through the\n+\t * disruption_marker field), a guest may wish to discard UUIDs,\n+\t * reset network connections, reseed entropy, etc.\n+\t */\n+\tuint64_t vm_generation_counter;\n };\n \n #endif /*  __VMCLOCK_ABI_H__ */\ndiff --git a/linux-headers/asm-arm64/kvm.h b/linux-headers/asm-arm64/kvm.h\nindex 46ffbddab5..6aefe79738 100644\n--- a/linux-headers/asm-arm64/kvm.h\n+++ b/linux-headers/asm-arm64/kvm.h\n@@ -416,6 +416,7 @@ enum {\n #define   KVM_DEV_ARM_ITS_RESTORE_TABLES        2\n #define   KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES\t3\n #define   KVM_DEV_ARM_ITS_CTRL_RESET\t\t4\n+#define   KVM_DEV_ARM_VGIC_USERSPACE_PPIS\t5\n \n /* Device Control API on vcpu fd */\n #define KVM_ARM_VCPU_PMU_V3_CTRL\t0\ndiff --git a/linux-headers/asm-arm64/unistd_64.h b/linux-headers/asm-arm64/unistd_64.h\nindex 1ef9c40813..70b3754a42 100644\n--- a/linux-headers/asm-arm64/unistd_64.h\n+++ b/linux-headers/asm-arm64/unistd_64.h\n@@ -327,6 +327,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_64_H */\ndiff --git a/linux-headers/asm-generic/unistd.h b/linux-headers/asm-generic/unistd.h\nindex 942370b3f5..a627acc8fb 100644\n--- a/linux-headers/asm-generic/unistd.h\n+++ b/linux-headers/asm-generic/unistd.h\n@@ -860,8 +860,11 @@ __SYSCALL(__NR_file_setattr, sys_file_setattr)\n #define __NR_listns 470\n __SYSCALL(__NR_listns, sys_listns)\n \n+#define __NR_rseq_slice_yield 471\n+__SYSCALL(__NR_rseq_slice_yield, sys_rseq_slice_yield)\n+\n #undef __NR_syscalls\n-#define __NR_syscalls 471\n+#define __NR_syscalls 472\n \n /*\n  * 32 bit systems traditionally used different\ndiff --git a/linux-headers/asm-loongarch/kvm.h b/linux-headers/asm-loongarch/kvm.h\nindex de6c3f18e4..cd0b5c11ca 100644\n--- a/linux-headers/asm-loongarch/kvm.h\n+++ b/linux-headers/asm-loongarch/kvm.h\n@@ -105,6 +105,7 @@ struct kvm_fpu {\n #define  KVM_LOONGARCH_VM_FEAT_PV_STEALTIME\t7\n #define  KVM_LOONGARCH_VM_FEAT_PTW\t\t8\n #define  KVM_LOONGARCH_VM_FEAT_MSGINT\t\t9\n+#define  KVM_LOONGARCH_VM_FEAT_PV_PREEMPT\t10\n \n /* Device Control API on vcpu fd */\n #define KVM_LOONGARCH_VCPU_CPUCFG\t0\n@@ -154,4 +155,8 @@ struct kvm_iocsr_entry {\n #define KVM_DEV_LOONGARCH_PCH_PIC_GRP_CTRL\t        0x40000006\n #define KVM_DEV_LOONGARCH_PCH_PIC_CTRL_INIT\t        0\n \n+#define KVM_DEV_LOONGARCH_DMSINTC_GRP_CTRL\t\t0x40000007\n+#define KVM_DEV_LOONGARCH_DMSINTC_MSG_ADDR_BASE\t\t0x0\n+#define KVM_DEV_LOONGARCH_DMSINTC_MSG_ADDR_SIZE\t\t0x1\n+\n #endif /* __UAPI_ASM_LOONGARCH_KVM_H */\ndiff --git a/linux-headers/asm-loongarch/kvm_para.h b/linux-headers/asm-loongarch/kvm_para.h\nindex fd7f40713d..3fd87a096b 100644\n--- a/linux-headers/asm-loongarch/kvm_para.h\n+++ b/linux-headers/asm-loongarch/kvm_para.h\n@@ -15,6 +15,7 @@\n #define CPUCFG_KVM_FEATURE\t\t(CPUCFG_KVM_BASE + 4)\n #define  KVM_FEATURE_IPI\t\t1\n #define  KVM_FEATURE_STEAL_TIME\t\t2\n+#define  KVM_FEATURE_PREEMPT\t\t3\n /* BIT 24 - 31 are features configurable by user space vmm */\n #define  KVM_FEATURE_VIRT_EXTIOI\t24\n #define  KVM_FEATURE_USER_HCALL\t\t25\ndiff --git a/linux-headers/asm-loongarch/unistd_64.h b/linux-headers/asm-loongarch/unistd_64.h\nindex aa5daac4ef..3a29d86e1d 100644\n--- a/linux-headers/asm-loongarch/unistd_64.h\n+++ b/linux-headers/asm-loongarch/unistd_64.h\n@@ -300,6 +300,7 @@\n #define __NR_landlock_create_ruleset 444\n #define __NR_landlock_add_rule 445\n #define __NR_landlock_restrict_self 446\n+#define __NR_memfd_secret 447\n #define __NR_process_mrelease 448\n #define __NR_futex_waitv 449\n #define __NR_set_mempolicy_home_node 450\n@@ -323,6 +324,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_64_H */\ndiff --git a/linux-headers/asm-mips/unistd_n32.h b/linux-headers/asm-mips/unistd_n32.h\nindex a33d106dca..5fa1ee0cb4 100644\n--- a/linux-headers/asm-mips/unistd_n32.h\n+++ b/linux-headers/asm-mips/unistd_n32.h\n@@ -399,5 +399,6 @@\n #define __NR_file_getattr (__NR_Linux + 468)\n #define __NR_file_setattr (__NR_Linux + 469)\n #define __NR_listns (__NR_Linux + 470)\n+#define __NR_rseq_slice_yield (__NR_Linux + 471)\n \n #endif /* _ASM_UNISTD_N32_H */\ndiff --git a/linux-headers/asm-mips/unistd_n64.h b/linux-headers/asm-mips/unistd_n64.h\nindex 1bc251e450..e1f873d83a 100644\n--- a/linux-headers/asm-mips/unistd_n64.h\n+++ b/linux-headers/asm-mips/unistd_n64.h\n@@ -375,5 +375,6 @@\n #define __NR_file_getattr (__NR_Linux + 468)\n #define __NR_file_setattr (__NR_Linux + 469)\n #define __NR_listns (__NR_Linux + 470)\n+#define __NR_rseq_slice_yield (__NR_Linux + 471)\n \n #endif /* _ASM_UNISTD_N64_H */\ndiff --git a/linux-headers/asm-mips/unistd_o32.h b/linux-headers/asm-mips/unistd_o32.h\nindex c57175d496..8207e9ca4f 100644\n--- a/linux-headers/asm-mips/unistd_o32.h\n+++ b/linux-headers/asm-mips/unistd_o32.h\n@@ -445,5 +445,6 @@\n #define __NR_file_getattr (__NR_Linux + 468)\n #define __NR_file_setattr (__NR_Linux + 469)\n #define __NR_listns (__NR_Linux + 470)\n+#define __NR_rseq_slice_yield (__NR_Linux + 471)\n \n #endif /* _ASM_UNISTD_O32_H */\ndiff --git a/linux-headers/asm-powerpc/unistd_32.h b/linux-headers/asm-powerpc/unistd_32.h\nindex a3f4aa2fe2..1f63360120 100644\n--- a/linux-headers/asm-powerpc/unistd_32.h\n+++ b/linux-headers/asm-powerpc/unistd_32.h\n@@ -452,6 +452,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_32_H */\ndiff --git a/linux-headers/asm-powerpc/unistd_64.h b/linux-headers/asm-powerpc/unistd_64.h\nindex d4444557f1..87439c53c1 100644\n--- a/linux-headers/asm-powerpc/unistd_64.h\n+++ b/linux-headers/asm-powerpc/unistd_64.h\n@@ -424,6 +424,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_64_H */\ndiff --git a/linux-headers/asm-riscv/kvm.h b/linux-headers/asm-riscv/kvm.h\nindex 54f3ad7ed2..504e733053 100644\n--- a/linux-headers/asm-riscv/kvm.h\n+++ b/linux-headers/asm-riscv/kvm.h\n@@ -110,6 +110,10 @@ struct kvm_riscv_timer {\n \t__u64 state;\n };\n \n+/* Possible states for kvm_riscv_timer */\n+#define KVM_RISCV_TIMER_STATE_OFF\t0\n+#define KVM_RISCV_TIMER_STATE_ON\t1\n+\n /*\n  * ISA extension IDs specific to KVM. This is not the same as the host ISA\n  * extension IDs as that is internal to the host and should not be exposed\n@@ -192,6 +196,9 @@ enum KVM_RISCV_ISA_EXT_ID {\n \tKVM_RISCV_ISA_EXT_ZFBFMIN,\n \tKVM_RISCV_ISA_EXT_ZVFBFMIN,\n \tKVM_RISCV_ISA_EXT_ZVFBFWMA,\n+\tKVM_RISCV_ISA_EXT_ZCLSD,\n+\tKVM_RISCV_ISA_EXT_ZILSD,\n+\tKVM_RISCV_ISA_EXT_ZALASR,\n \tKVM_RISCV_ISA_EXT_MAX,\n };\n \n@@ -235,10 +242,6 @@ struct kvm_riscv_sbi_fwft {\n \tstruct kvm_riscv_sbi_fwft_feature pointer_masking;\n };\n \n-/* Possible states for kvm_riscv_timer */\n-#define KVM_RISCV_TIMER_STATE_OFF\t0\n-#define KVM_RISCV_TIMER_STATE_ON\t1\n-\n /* If you need to interpret the index values, here is the key: */\n #define KVM_REG_RISCV_TYPE_MASK\t\t0x00000000FF000000\n #define KVM_REG_RISCV_TYPE_SHIFT\t24\ndiff --git a/linux-headers/asm-riscv/ptrace.h b/linux-headers/asm-riscv/ptrace.h\nindex a3f8211ede..cf87642994 100644\n--- a/linux-headers/asm-riscv/ptrace.h\n+++ b/linux-headers/asm-riscv/ptrace.h\n@@ -9,6 +9,7 @@\n #ifndef __ASSEMBLER__\n \n #include <linux/types.h>\n+#include <linux/const.h>\n \n #define PTRACE_GETFDPIC\t\t33\n \n@@ -127,6 +128,42 @@ struct __riscv_v_regset_state {\n  */\n #define RISCV_MAX_VLENB (8192)\n \n+struct __sc_riscv_cfi_state {\n+\tunsigned long ss_ptr;   /* shadow stack pointer */\n+};\n+\n+#define PTRACE_CFI_BRANCH_LANDING_PAD_EN_BIT\t\t0\n+#define PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_BIT\t\t1\n+#define PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_BIT\t2\n+#define PTRACE_CFI_SHADOW_STACK_EN_BIT\t\t\t3\n+#define PTRACE_CFI_SHADOW_STACK_LOCK_BIT\t\t4\n+#define PTRACE_CFI_SHADOW_STACK_PTR_BIT\t\t\t5\n+\n+#define PTRACE_CFI_BRANCH_LANDING_PAD_EN_STATE\t\t_BITUL(PTRACE_CFI_BRANCH_LANDING_PAD_EN_BIT)\n+#define PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_STATE\t\\\n+\t_BITUL(PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_BIT)\n+#define PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_STATE\t\\\n+\t_BITUL(PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_BIT)\n+#define PTRACE_CFI_SHADOW_STACK_EN_STATE\t\t_BITUL(PTRACE_CFI_SHADOW_STACK_EN_BIT)\n+#define PTRACE_CFI_SHADOW_STACK_LOCK_STATE\t\t_BITUL(PTRACE_CFI_SHADOW_STACK_LOCK_BIT)\n+#define PTRACE_CFI_SHADOW_STACK_PTR_STATE\t\t_BITUL(PTRACE_CFI_SHADOW_STACK_PTR_BIT)\n+\n+#define PTRACE_CFI_STATE_INVALID_MASK\t~(PTRACE_CFI_BRANCH_LANDING_PAD_EN_STATE | \\\n+\t\t\t\t\t  PTRACE_CFI_BRANCH_LANDING_PAD_LOCK_STATE | \\\n+\t\t\t\t\t  PTRACE_CFI_BRANCH_EXPECTED_LANDING_PAD_STATE | \\\n+\t\t\t\t\t  PTRACE_CFI_SHADOW_STACK_EN_STATE | \\\n+\t\t\t\t\t  PTRACE_CFI_SHADOW_STACK_LOCK_STATE | \\\n+\t\t\t\t\t  PTRACE_CFI_SHADOW_STACK_PTR_STATE)\n+\n+struct __cfi_status {\n+\t__u64 cfi_state;\n+};\n+\n+struct user_cfi_state {\n+\tstruct __cfi_status\tcfi_status;\n+\t__u64 shstk_ptr;\n+};\n+\n #endif /* __ASSEMBLER__ */\n \n #endif /* _ASM_RISCV_PTRACE_H */\ndiff --git a/linux-headers/asm-riscv/unistd_32.h b/linux-headers/asm-riscv/unistd_32.h\nindex 9f33956246..828f3c2b9d 100644\n--- a/linux-headers/asm-riscv/unistd_32.h\n+++ b/linux-headers/asm-riscv/unistd_32.h\n@@ -318,6 +318,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_32_H */\ndiff --git a/linux-headers/asm-riscv/unistd_64.h b/linux-headers/asm-riscv/unistd_64.h\nindex c2e7258916..8fa59835a3 100644\n--- a/linux-headers/asm-riscv/unistd_64.h\n+++ b/linux-headers/asm-riscv/unistd_64.h\n@@ -328,6 +328,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_64_H */\ndiff --git a/linux-headers/asm-s390/unistd_32.h b/linux-headers/asm-s390/unistd_32.h\ndeleted file mode 100644\nindex 37b8f6f358..0000000000\n--- a/linux-headers/asm-s390/unistd_32.h\n+++ /dev/null\n@@ -1,446 +0,0 @@\n-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */\n-#ifndef _ASM_S390_UNISTD_32_H\n-#define _ASM_S390_UNISTD_32_H\n-\n-#define __NR_exit 1\n-#define __NR_fork 2\n-#define __NR_read 3\n-#define __NR_write 4\n-#define __NR_open 5\n-#define __NR_close 6\n-#define __NR_restart_syscall 7\n-#define __NR_creat 8\n-#define __NR_link 9\n-#define __NR_unlink 10\n-#define __NR_execve 11\n-#define __NR_chdir 12\n-#define __NR_time 13\n-#define __NR_mknod 14\n-#define __NR_chmod 15\n-#define __NR_lchown 16\n-#define __NR_lseek 19\n-#define __NR_getpid 20\n-#define __NR_mount 21\n-#define __NR_umount 22\n-#define __NR_setuid 23\n-#define __NR_getuid 24\n-#define __NR_stime 25\n-#define __NR_ptrace 26\n-#define __NR_alarm 27\n-#define __NR_pause 29\n-#define __NR_utime 30\n-#define __NR_access 33\n-#define __NR_nice 34\n-#define __NR_sync 36\n-#define __NR_kill 37\n-#define __NR_rename 38\n-#define __NR_mkdir 39\n-#define __NR_rmdir 40\n-#define __NR_dup 41\n-#define __NR_pipe 42\n-#define __NR_times 43\n-#define __NR_brk 45\n-#define __NR_setgid 46\n-#define __NR_getgid 47\n-#define __NR_signal 48\n-#define __NR_geteuid 49\n-#define __NR_getegid 50\n-#define __NR_acct 51\n-#define __NR_umount2 52\n-#define __NR_ioctl 54\n-#define __NR_fcntl 55\n-#define __NR_setpgid 57\n-#define __NR_umask 60\n-#define __NR_chroot 61\n-#define __NR_ustat 62\n-#define __NR_dup2 63\n-#define __NR_getppid 64\n-#define __NR_getpgrp 65\n-#define __NR_setsid 66\n-#define __NR_sigaction 67\n-#define __NR_setreuid 70\n-#define __NR_setregid 71\n-#define __NR_sigsuspend 72\n-#define __NR_sigpending 73\n-#define __NR_sethostname 74\n-#define __NR_setrlimit 75\n-#define __NR_getrlimit 76\n-#define __NR_getrusage 77\n-#define __NR_gettimeofday 78\n-#define __NR_settimeofday 79\n-#define __NR_getgroups 80\n-#define __NR_setgroups 81\n-#define __NR_symlink 83\n-#define __NR_readlink 85\n-#define __NR_uselib 86\n-#define __NR_swapon 87\n-#define __NR_reboot 88\n-#define __NR_readdir 89\n-#define __NR_mmap 90\n-#define __NR_munmap 91\n-#define __NR_truncate 92\n-#define __NR_ftruncate 93\n-#define __NR_fchmod 94\n-#define __NR_fchown 95\n-#define __NR_getpriority 96\n-#define __NR_setpriority 97\n-#define __NR_statfs 99\n-#define __NR_fstatfs 100\n-#define __NR_ioperm 101\n-#define __NR_socketcall 102\n-#define __NR_syslog 103\n-#define __NR_setitimer 104\n-#define __NR_getitimer 105\n-#define __NR_stat 106\n-#define __NR_lstat 107\n-#define __NR_fstat 108\n-#define __NR_lookup_dcookie 110\n-#define __NR_vhangup 111\n-#define __NR_idle 112\n-#define __NR_wait4 114\n-#define __NR_swapoff 115\n-#define __NR_sysinfo 116\n-#define __NR_ipc 117\n-#define __NR_fsync 118\n-#define __NR_sigreturn 119\n-#define __NR_clone 120\n-#define __NR_setdomainname 121\n-#define __NR_uname 122\n-#define __NR_adjtimex 124\n-#define __NR_mprotect 125\n-#define __NR_sigprocmask 126\n-#define __NR_create_module 127\n-#define __NR_init_module 128\n-#define __NR_delete_module 129\n-#define __NR_get_kernel_syms 130\n-#define __NR_quotactl 131\n-#define __NR_getpgid 132\n-#define __NR_fchdir 133\n-#define __NR_bdflush 134\n-#define __NR_sysfs 135\n-#define __NR_personality 136\n-#define __NR_afs_syscall 137\n-#define __NR_setfsuid 138\n-#define __NR_setfsgid 139\n-#define __NR__llseek 140\n-#define __NR_getdents 141\n-#define __NR__newselect 142\n-#define __NR_flock 143\n-#define __NR_msync 144\n-#define __NR_readv 145\n-#define __NR_writev 146\n-#define __NR_getsid 147\n-#define __NR_fdatasync 148\n-#define __NR__sysctl 149\n-#define __NR_mlock 150\n-#define __NR_munlock 151\n-#define __NR_mlockall 152\n-#define __NR_munlockall 153\n-#define __NR_sched_setparam 154\n-#define __NR_sched_getparam 155\n-#define __NR_sched_setscheduler 156\n-#define __NR_sched_getscheduler 157\n-#define __NR_sched_yield 158\n-#define __NR_sched_get_priority_max 159\n-#define __NR_sched_get_priority_min 160\n-#define __NR_sched_rr_get_interval 161\n-#define __NR_nanosleep 162\n-#define __NR_mremap 163\n-#define __NR_setresuid 164\n-#define __NR_getresuid 165\n-#define __NR_query_module 167\n-#define __NR_poll 168\n-#define __NR_nfsservctl 169\n-#define __NR_setresgid 170\n-#define __NR_getresgid 171\n-#define __NR_prctl 172\n-#define __NR_rt_sigreturn 173\n-#define __NR_rt_sigaction 174\n-#define __NR_rt_sigprocmask 175\n-#define __NR_rt_sigpending 176\n-#define __NR_rt_sigtimedwait 177\n-#define __NR_rt_sigqueueinfo 178\n-#define __NR_rt_sigsuspend 179\n-#define __NR_pread64 180\n-#define __NR_pwrite64 181\n-#define __NR_chown 182\n-#define __NR_getcwd 183\n-#define __NR_capget 184\n-#define __NR_capset 185\n-#define __NR_sigaltstack 186\n-#define __NR_sendfile 187\n-#define __NR_getpmsg 188\n-#define __NR_putpmsg 189\n-#define __NR_vfork 190\n-#define __NR_ugetrlimit 191\n-#define __NR_mmap2 192\n-#define __NR_truncate64 193\n-#define __NR_ftruncate64 194\n-#define __NR_stat64 195\n-#define __NR_lstat64 196\n-#define __NR_fstat64 197\n-#define __NR_lchown32 198\n-#define __NR_getuid32 199\n-#define __NR_getgid32 200\n-#define __NR_geteuid32 201\n-#define __NR_getegid32 202\n-#define __NR_setreuid32 203\n-#define __NR_setregid32 204\n-#define __NR_getgroups32 205\n-#define __NR_setgroups32 206\n-#define __NR_fchown32 207\n-#define __NR_setresuid32 208\n-#define __NR_getresuid32 209\n-#define __NR_setresgid32 210\n-#define __NR_getresgid32 211\n-#define __NR_chown32 212\n-#define __NR_setuid32 213\n-#define __NR_setgid32 214\n-#define __NR_setfsuid32 215\n-#define __NR_setfsgid32 216\n-#define __NR_pivot_root 217\n-#define __NR_mincore 218\n-#define __NR_madvise 219\n-#define __NR_getdents64 220\n-#define __NR_fcntl64 221\n-#define __NR_readahead 222\n-#define __NR_sendfile64 223\n-#define __NR_setxattr 224\n-#define __NR_lsetxattr 225\n-#define __NR_fsetxattr 226\n-#define __NR_getxattr 227\n-#define __NR_lgetxattr 228\n-#define __NR_fgetxattr 229\n-#define __NR_listxattr 230\n-#define __NR_llistxattr 231\n-#define __NR_flistxattr 232\n-#define __NR_removexattr 233\n-#define __NR_lremovexattr 234\n-#define __NR_fremovexattr 235\n-#define __NR_gettid 236\n-#define __NR_tkill 237\n-#define __NR_futex 238\n-#define __NR_sched_setaffinity 239\n-#define __NR_sched_getaffinity 240\n-#define __NR_tgkill 241\n-#define __NR_io_setup 243\n-#define __NR_io_destroy 244\n-#define __NR_io_getevents 245\n-#define __NR_io_submit 246\n-#define __NR_io_cancel 247\n-#define __NR_exit_group 248\n-#define __NR_epoll_create 249\n-#define __NR_epoll_ctl 250\n-#define __NR_epoll_wait 251\n-#define __NR_set_tid_address 252\n-#define __NR_fadvise64 253\n-#define __NR_timer_create 254\n-#define __NR_timer_settime 255\n-#define __NR_timer_gettime 256\n-#define __NR_timer_getoverrun 257\n-#define __NR_timer_delete 258\n-#define __NR_clock_settime 259\n-#define __NR_clock_gettime 260\n-#define __NR_clock_getres 261\n-#define __NR_clock_nanosleep 262\n-#define __NR_fadvise64_64 264\n-#define __NR_statfs64 265\n-#define __NR_fstatfs64 266\n-#define __NR_remap_file_pages 267\n-#define __NR_mbind 268\n-#define __NR_get_mempolicy 269\n-#define __NR_set_mempolicy 270\n-#define __NR_mq_open 271\n-#define __NR_mq_unlink 272\n-#define __NR_mq_timedsend 273\n-#define __NR_mq_timedreceive 274\n-#define __NR_mq_notify 275\n-#define __NR_mq_getsetattr 276\n-#define __NR_kexec_load 277\n-#define __NR_add_key 278\n-#define __NR_request_key 279\n-#define __NR_keyctl 280\n-#define __NR_waitid 281\n-#define __NR_ioprio_set 282\n-#define __NR_ioprio_get 283\n-#define __NR_inotify_init 284\n-#define __NR_inotify_add_watch 285\n-#define __NR_inotify_rm_watch 286\n-#define __NR_migrate_pages 287\n-#define __NR_openat 288\n-#define __NR_mkdirat 289\n-#define __NR_mknodat 290\n-#define __NR_fchownat 291\n-#define __NR_futimesat 292\n-#define __NR_fstatat64 293\n-#define __NR_unlinkat 294\n-#define __NR_renameat 295\n-#define __NR_linkat 296\n-#define __NR_symlinkat 297\n-#define __NR_readlinkat 298\n-#define __NR_fchmodat 299\n-#define __NR_faccessat 300\n-#define __NR_pselect6 301\n-#define __NR_ppoll 302\n-#define __NR_unshare 303\n-#define __NR_set_robust_list 304\n-#define __NR_get_robust_list 305\n-#define __NR_splice 306\n-#define __NR_sync_file_range 307\n-#define __NR_tee 308\n-#define __NR_vmsplice 309\n-#define __NR_move_pages 310\n-#define __NR_getcpu 311\n-#define __NR_epoll_pwait 312\n-#define __NR_utimes 313\n-#define __NR_fallocate 314\n-#define __NR_utimensat 315\n-#define __NR_signalfd 316\n-#define __NR_timerfd 317\n-#define __NR_eventfd 318\n-#define __NR_timerfd_create 319\n-#define __NR_timerfd_settime 320\n-#define __NR_timerfd_gettime 321\n-#define __NR_signalfd4 322\n-#define __NR_eventfd2 323\n-#define __NR_inotify_init1 324\n-#define __NR_pipe2 325\n-#define __NR_dup3 326\n-#define __NR_epoll_create1 327\n-#define __NR_preadv 328\n-#define __NR_pwritev 329\n-#define __NR_rt_tgsigqueueinfo 330\n-#define __NR_perf_event_open 331\n-#define __NR_fanotify_init 332\n-#define __NR_fanotify_mark 333\n-#define __NR_prlimit64 334\n-#define __NR_name_to_handle_at 335\n-#define __NR_open_by_handle_at 336\n-#define __NR_clock_adjtime 337\n-#define __NR_syncfs 338\n-#define __NR_setns 339\n-#define __NR_process_vm_readv 340\n-#define __NR_process_vm_writev 341\n-#define __NR_s390_runtime_instr 342\n-#define __NR_kcmp 343\n-#define __NR_finit_module 344\n-#define __NR_sched_setattr 345\n-#define __NR_sched_getattr 346\n-#define __NR_renameat2 347\n-#define __NR_seccomp 348\n-#define __NR_getrandom 349\n-#define __NR_memfd_create 350\n-#define __NR_bpf 351\n-#define __NR_s390_pci_mmio_write 352\n-#define __NR_s390_pci_mmio_read 353\n-#define __NR_execveat 354\n-#define __NR_userfaultfd 355\n-#define __NR_membarrier 356\n-#define __NR_recvmmsg 357\n-#define __NR_sendmmsg 358\n-#define __NR_socket 359\n-#define __NR_socketpair 360\n-#define __NR_bind 361\n-#define __NR_connect 362\n-#define __NR_listen 363\n-#define __NR_accept4 364\n-#define __NR_getsockopt 365\n-#define __NR_setsockopt 366\n-#define __NR_getsockname 367\n-#define __NR_getpeername 368\n-#define __NR_sendto 369\n-#define __NR_sendmsg 370\n-#define __NR_recvfrom 371\n-#define __NR_recvmsg 372\n-#define __NR_shutdown 373\n-#define __NR_mlock2 374\n-#define __NR_copy_file_range 375\n-#define __NR_preadv2 376\n-#define __NR_pwritev2 377\n-#define __NR_s390_guarded_storage 378\n-#define __NR_statx 379\n-#define __NR_s390_sthyi 380\n-#define __NR_kexec_file_load 381\n-#define __NR_io_pgetevents 382\n-#define __NR_rseq 383\n-#define __NR_pkey_mprotect 384\n-#define __NR_pkey_alloc 385\n-#define __NR_pkey_free 386\n-#define __NR_semget 393\n-#define __NR_semctl 394\n-#define __NR_shmget 395\n-#define __NR_shmctl 396\n-#define __NR_shmat 397\n-#define __NR_shmdt 398\n-#define __NR_msgget 399\n-#define __NR_msgsnd 400\n-#define __NR_msgrcv 401\n-#define __NR_msgctl 402\n-#define __NR_clock_gettime64 403\n-#define __NR_clock_settime64 404\n-#define __NR_clock_adjtime64 405\n-#define __NR_clock_getres_time64 406\n-#define __NR_clock_nanosleep_time64 407\n-#define __NR_timer_gettime64 408\n-#define __NR_timer_settime64 409\n-#define __NR_timerfd_gettime64 410\n-#define __NR_timerfd_settime64 411\n-#define __NR_utimensat_time64 412\n-#define __NR_pselect6_time64 413\n-#define __NR_ppoll_time64 414\n-#define __NR_io_pgetevents_time64 416\n-#define __NR_recvmmsg_time64 417\n-#define __NR_mq_timedsend_time64 418\n-#define __NR_mq_timedreceive_time64 419\n-#define __NR_semtimedop_time64 420\n-#define __NR_rt_sigtimedwait_time64 421\n-#define __NR_futex_time64 422\n-#define __NR_sched_rr_get_interval_time64 423\n-#define __NR_pidfd_send_signal 424\n-#define __NR_io_uring_setup 425\n-#define __NR_io_uring_enter 426\n-#define __NR_io_uring_register 427\n-#define __NR_open_tree 428\n-#define __NR_move_mount 429\n-#define __NR_fsopen 430\n-#define __NR_fsconfig 431\n-#define __NR_fsmount 432\n-#define __NR_fspick 433\n-#define __NR_pidfd_open 434\n-#define __NR_clone3 435\n-#define __NR_close_range 436\n-#define __NR_openat2 437\n-#define __NR_pidfd_getfd 438\n-#define __NR_faccessat2 439\n-#define __NR_process_madvise 440\n-#define __NR_epoll_pwait2 441\n-#define __NR_mount_setattr 442\n-#define __NR_quotactl_fd 443\n-#define __NR_landlock_create_ruleset 444\n-#define __NR_landlock_add_rule 445\n-#define __NR_landlock_restrict_self 446\n-#define __NR_memfd_secret 447\n-#define __NR_process_mrelease 448\n-#define __NR_futex_waitv 449\n-#define __NR_set_mempolicy_home_node 450\n-#define __NR_cachestat 451\n-#define __NR_fchmodat2 452\n-#define __NR_map_shadow_stack 453\n-#define __NR_futex_wake 454\n-#define __NR_futex_wait 455\n-#define __NR_futex_requeue 456\n-#define __NR_statmount 457\n-#define __NR_listmount 458\n-#define __NR_lsm_get_self_attr 459\n-#define __NR_lsm_set_self_attr 460\n-#define __NR_lsm_list_modules 461\n-#define __NR_mseal 462\n-#define __NR_setxattrat 463\n-#define __NR_getxattrat 464\n-#define __NR_listxattrat 465\n-#define __NR_removexattrat 466\n-#define __NR_open_tree_attr 467\n-#define __NR_file_getattr 468\n-#define __NR_file_setattr 469\n-\n-#endif /* _ASM_S390_UNISTD_32_H */\ndiff --git a/linux-headers/asm-s390/unistd_64.h b/linux-headers/asm-s390/unistd_64.h\nindex 8d9e579ef5..01f674c1bc 100644\n--- a/linux-headers/asm-s390/unistd_64.h\n+++ b/linux-headers/asm-s390/unistd_64.h\n@@ -390,6 +390,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_64_H */\ndiff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h\nindex b804fd25a2..01d46e2929 100644\n--- a/linux-headers/asm-x86/kvm.h\n+++ b/linux-headers/asm-x86/kvm.h\n@@ -197,13 +197,13 @@ struct kvm_msrs {\n \t__u32 nmsrs; /* number of msrs in entries */\n \t__u32 pad;\n \n-\tstruct kvm_msr_entry entries[];\n+\t__DECLARE_FLEX_ARRAY(struct kvm_msr_entry, entries);\n };\n \n /* for KVM_GET_MSR_INDEX_LIST */\n struct kvm_msr_list {\n \t__u32 nmsrs; /* number of msrs in entries */\n-\t__u32 indices[];\n+\t__DECLARE_FLEX_ARRAY(__u32, indices);\n };\n \n /* Maximum size of any access bitmap in bytes */\n@@ -243,7 +243,7 @@ struct kvm_cpuid_entry {\n struct kvm_cpuid {\n \t__u32 nent;\n \t__u32 padding;\n-\tstruct kvm_cpuid_entry entries[];\n+\t__DECLARE_FLEX_ARRAY(struct kvm_cpuid_entry, entries);\n };\n \n struct kvm_cpuid_entry2 {\n@@ -265,7 +265,7 @@ struct kvm_cpuid_entry2 {\n struct kvm_cpuid2 {\n \t__u32 nent;\n \t__u32 padding;\n-\tstruct kvm_cpuid_entry2 entries[];\n+\t__DECLARE_FLEX_ARRAY(struct kvm_cpuid_entry2, entries);\n };\n \n /* for KVM_GET_PIT and KVM_SET_PIT */\n@@ -396,7 +396,7 @@ struct kvm_xsave {\n \t * the contents of CPUID leaf 0xD on the host.\n \t */\n \t__u32 region[1024];\n-\t__u32 extra[];\n+\t__DECLARE_FLEX_ARRAY(__u32, extra);\n };\n \n #define KVM_MAX_XCRS\t16\n@@ -474,6 +474,7 @@ struct kvm_sync_regs {\n #define KVM_X86_QUIRK_SLOT_ZAP_ALL\t\t(1 << 7)\n #define KVM_X86_QUIRK_STUFF_FEATURE_MSRS\t(1 << 8)\n #define KVM_X86_QUIRK_IGNORE_GUEST_PAT\t\t(1 << 9)\n+#define KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM (1 << 10)\n \n #define KVM_STATE_NESTED_FORMAT_VMX\t0\n #define KVM_STATE_NESTED_FORMAT_SVM\t1\n@@ -501,6 +502,7 @@ struct kvm_sync_regs {\n #define KVM_X86_GRP_SEV\t\t\t1\n #  define KVM_X86_SEV_VMSA_FEATURES\t0\n #  define KVM_X86_SNP_POLICY_BITS\t1\n+#  define KVM_X86_SEV_SNP_REQ_CERTS\t2\n \n struct kvm_vmx_nested_state_data {\n \t__u8 vmcs12[KVM_STATE_NESTED_VMX_VMCS_SIZE];\n@@ -562,7 +564,7 @@ struct kvm_pmu_event_filter {\n \t__u32 fixed_counter_bitmap;\n \t__u32 flags;\n \t__u32 pad[4];\n-\t__u64 events[];\n+\t__DECLARE_FLEX_ARRAY(__u64, events);\n };\n \n #define KVM_PMU_EVENT_ALLOW 0\n@@ -741,6 +743,7 @@ enum sev_cmd_id {\n \tKVM_SEV_SNP_LAUNCH_START = 100,\n \tKVM_SEV_SNP_LAUNCH_UPDATE,\n \tKVM_SEV_SNP_LAUNCH_FINISH,\n+\tKVM_SEV_SNP_ENABLE_REQ_CERTS,\n \n \tKVM_SEV_NR_MAX,\n };\n@@ -912,8 +915,10 @@ struct kvm_sev_snp_launch_finish {\n \t__u64 pad1[4];\n };\n \n-#define KVM_X2APIC_API_USE_32BIT_IDS            (1ULL << 0)\n-#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK  (1ULL << 1)\n+#define KVM_X2APIC_API_USE_32BIT_IDS\t\t\t_BITULL(0)\n+#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK\t\t_BITULL(1)\n+#define KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST\t_BITULL(2)\n+#define KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST\t_BITULL(3)\n \n struct kvm_hyperv_eventfd {\n \t__u32 conn_id;\ndiff --git a/linux-headers/asm-x86/unistd_32.h b/linux-headers/asm-x86/unistd_32.h\nindex 34255aac64..e945468829 100644\n--- a/linux-headers/asm-x86/unistd_32.h\n+++ b/linux-headers/asm-x86/unistd_32.h\n@@ -461,6 +461,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_32_H */\ndiff --git a/linux-headers/asm-x86/unistd_64.h b/linux-headers/asm-x86/unistd_64.h\nindex 07f242a5fa..3c49b00ed1 100644\n--- a/linux-headers/asm-x86/unistd_64.h\n+++ b/linux-headers/asm-x86/unistd_64.h\n@@ -385,6 +385,7 @@\n #define __NR_file_getattr 468\n #define __NR_file_setattr 469\n #define __NR_listns 470\n+#define __NR_rseq_slice_yield 471\n \n \n #endif /* _ASM_UNISTD_64_H */\ndiff --git a/linux-headers/asm-x86/unistd_x32.h b/linux-headers/asm-x86/unistd_x32.h\nindex 08fc9da2fa..bd2af9ad08 100644\n--- a/linux-headers/asm-x86/unistd_x32.h\n+++ b/linux-headers/asm-x86/unistd_x32.h\n@@ -338,6 +338,7 @@\n #define __NR_file_getattr (__X32_SYSCALL_BIT + 468)\n #define __NR_file_setattr (__X32_SYSCALL_BIT + 469)\n #define __NR_listns (__X32_SYSCALL_BIT + 470)\n+#define __NR_rseq_slice_yield (__X32_SYSCALL_BIT + 471)\n #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)\n #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)\n #define __NR_ioctl (__X32_SYSCALL_BIT + 514)\ndiff --git a/linux-headers/linux/const.h b/linux-headers/linux/const.h\nindex 95ede23342..c6a9d0c983 100644\n--- a/linux-headers/linux/const.h\n+++ b/linux-headers/linux/const.h\n@@ -50,4 +50,22 @@\n \n #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))\n \n+/*\n+ * Divide positive or negative dividend by positive or negative divisor\n+ * and round to closest integer. Result is undefined for negative\n+ * divisors if the dividend variable type is unsigned and for negative\n+ * dividends if the divisor variable type is unsigned.\n+ */\n+#define __KERNEL_DIV_ROUND_CLOSEST(x, divisor)\t\t\\\n+({\t\t\t\t\t\t\t\\\n+\t__typeof__(x) __x = x;\t\t\t\t\\\n+\t__typeof__(divisor) __d = divisor;\t\t\\\n+\t\t\t\t\t\t\t\\\n+\t(((__typeof__(x))-1) > 0 ||\t\t\t\\\n+\t ((__typeof__(divisor))-1) > 0 ||\t\t\\\n+\t (((__x) > 0) == ((__d) > 0))) ?\t\t\\\n+\t\t(((__x) + ((__d) / 2)) / (__d)) :\t\\\n+\t\t(((__x) - ((__d) / 2)) / (__d));\t\\\n+})\n+\n #endif /* _LINUX_CONST_H */\ndiff --git a/linux-headers/linux/iommufd.h b/linux-headers/linux/iommufd.h\nindex 384183a403..82587c7d62 100644\n--- a/linux-headers/linux/iommufd.h\n+++ b/linux-headers/linux/iommufd.h\n@@ -465,16 +465,27 @@ struct iommu_hwpt_arm_smmuv3 {\n \t__aligned_le64 ste[2];\n };\n \n+/**\n+ * struct iommu_hwpt_amd_guest - AMD IOMMU guest I/O page table data\n+ *\t\t\t\t (IOMMU_HWPT_DATA_AMD_GUEST)\n+ * @dte: Guest Device Table Entry (DTE)\n+ */\n+struct iommu_hwpt_amd_guest {\n+\t__aligned_u64 dte[4];\n+};\n+\n /**\n  * enum iommu_hwpt_data_type - IOMMU HWPT Data Type\n  * @IOMMU_HWPT_DATA_NONE: no data\n  * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table\n  * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table\n+ * @IOMMU_HWPT_DATA_AMD_GUEST: AMD IOMMU guest page table\n  */\n enum iommu_hwpt_data_type {\n \tIOMMU_HWPT_DATA_NONE = 0,\n \tIOMMU_HWPT_DATA_VTD_S1 = 1,\n \tIOMMU_HWPT_DATA_ARM_SMMUV3 = 2,\n+\tIOMMU_HWPT_DATA_AMD_GUEST = 3,\n };\n \n /**\n@@ -623,6 +634,32 @@ struct iommu_hw_info_tegra241_cmdqv {\n \t__u8 __reserved;\n };\n \n+/**\n+ * struct iommu_hw_info_amd - AMD IOMMU device info\n+ *\n+ * @efr : Value of AMD IOMMU Extended Feature Register (EFR)\n+ * @efr2: Value of AMD IOMMU Extended Feature 2 Register (EFR2)\n+ *\n+ * Please See description of these registers in the following sections of\n+ * the AMD I/O Virtualization Technology (IOMMU) Specification.\n+ * (https://docs.amd.com/v/u/en-US/48882_3.10_PUB)\n+ *\n+ * - MMIO Offset 0030h IOMMU Extended Feature Register\n+ * - MMIO Offset 01A0h IOMMU Extended Feature 2 Register\n+ *\n+ * Note: The EFR and EFR2 are raw values reported by hardware.\n+ * VMM is responsible to determine the appropriate flags to be exposed to\n+ * the VM since cetertain features are not currently supported by the kernel\n+ * for HW-vIOMMU.\n+ *\n+ * Current VMM-allowed list of feature flags are:\n+ * - EFR[GTSup, GASup, GioSup, PPRSup, EPHSup, GATS, GLX, PASmax]\n+ */\n+struct iommu_hw_info_amd {\n+\t__aligned_u64 efr;\n+\t__aligned_u64 efr2;\n+};\n+\n /**\n  * enum iommu_hw_info_type - IOMMU Hardware Info Types\n  * @IOMMU_HW_INFO_TYPE_NONE: Output by the drivers that do not report hardware\n@@ -632,6 +669,7 @@ struct iommu_hw_info_tegra241_cmdqv {\n  * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type\n  * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM\n  *                                     SMMUv3) info type\n+ * @IOMMU_HW_INFO_TYPE_AMD: AMD IOMMU info type\n  */\n enum iommu_hw_info_type {\n \tIOMMU_HW_INFO_TYPE_NONE = 0,\n@@ -639,6 +677,7 @@ enum iommu_hw_info_type {\n \tIOMMU_HW_INFO_TYPE_INTEL_VTD = 1,\n \tIOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2,\n \tIOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3,\n+\tIOMMU_HW_INFO_TYPE_AMD = 4,\n };\n \n /**\n@@ -656,11 +695,15 @@ enum iommu_hw_info_type {\n  * @IOMMU_HW_CAP_PCI_PASID_PRIV: Privileged Mode Supported, user ignores it\n  *                               when the struct\n  *                               iommu_hw_info::out_max_pasid_log2 is zero.\n+ * @IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED: ATS is not supported or cannot be used\n+ *                                      on this device (absence implies ATS\n+ *                                      may be enabled)\n  */\n enum iommufd_hw_capabilities {\n \tIOMMU_HW_CAP_DIRTY_TRACKING = 1 << 0,\n \tIOMMU_HW_CAP_PCI_PASID_EXEC = 1 << 1,\n \tIOMMU_HW_CAP_PCI_PASID_PRIV = 1 << 2,\n+\tIOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED = 1 << 3,\n };\n \n /**\n@@ -1013,6 +1056,11 @@ struct iommu_fault_alloc {\n enum iommu_viommu_type {\n \tIOMMU_VIOMMU_TYPE_DEFAULT = 0,\n \tIOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1,\n+\t/*\n+\t * TEGRA241_CMDQV requirements (otherwise, VCMDQs will not work)\n+\t * - Kernel will allocate a VINTF (HYP_OWN=0) to back this VIOMMU. So,\n+\t *   VMM must wire the HYP_OWN bit to 0 in guest VINTF_CONFIG register\n+\t */\n \tIOMMU_VIOMMU_TYPE_TEGRA241_CMDQV = 2,\n };\n \ndiff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h\nindex a4ab42dcba..50e87ed72c 100644\n--- a/linux-headers/linux/kvm.h\n+++ b/linux-headers/linux/kvm.h\n@@ -11,9 +11,11 @@\n #include <linux/const.h>\n #include <linux/types.h>\n \n+#include <linux/stddef.h>\n #include <linux/ioctl.h>\n #include <asm/kvm.h>\n \n+\n #define KVM_API_VERSION 12\n \n /*\n@@ -135,6 +137,12 @@ struct kvm_xen_exit {\n \t} u;\n };\n \n+struct kvm_exit_snp_req_certs {\n+\t__u64 gpa;\n+\t__u64 npages;\n+\t__u64 ret;\n+};\n+\n #define KVM_S390_GET_SKEYS_NONE   1\n #define KVM_S390_SKEYS_MAX        1048576\n \n@@ -180,6 +188,8 @@ struct kvm_xen_exit {\n #define KVM_EXIT_MEMORY_FAULT     39\n #define KVM_EXIT_TDX              40\n #define KVM_EXIT_ARM_SEA          41\n+#define KVM_EXIT_ARM_LDST64B      42\n+#define KVM_EXIT_SNP_REQ_CERTS    43\n \n /* For KVM_EXIT_INTERNAL_ERROR */\n /* Emulate instruction failed. */\n@@ -394,7 +404,7 @@ struct kvm_run {\n \t\t} eoi;\n \t\t/* KVM_EXIT_HYPERV */\n \t\tstruct kvm_hyperv_exit hyperv;\n-\t\t/* KVM_EXIT_ARM_NISV */\n+\t\t/* KVM_EXIT_ARM_NISV / KVM_EXIT_ARM_LDST64B */\n \t\tstruct {\n \t\t\t__u64 esr_iss;\n \t\t\t__u64 fault_ipa;\n@@ -474,6 +484,8 @@ struct kvm_run {\n \t\t\t__u64 gva;\n \t\t\t__u64 gpa;\n \t\t} arm_sea;\n+\t\t/* KVM_EXIT_SNP_REQ_CERTS */\n+\t\tstruct kvm_exit_snp_req_certs snp_req_certs;\n \t\t/* Fix the size of the union. */\n \t\tchar padding[256];\n \t};\n@@ -520,7 +532,7 @@ struct kvm_coalesced_mmio {\n \n struct kvm_coalesced_mmio_ring {\n \t__u32 first, last;\n-\tstruct kvm_coalesced_mmio coalesced_mmio[];\n+\t__DECLARE_FLEX_ARRAY(struct kvm_coalesced_mmio, coalesced_mmio);\n };\n \n #define KVM_COALESCED_MMIO_MAX \\\n@@ -570,7 +582,7 @@ struct kvm_clear_dirty_log {\n /* for KVM_SET_SIGNAL_MASK */\n struct kvm_signal_mask {\n \t__u32 len;\n-\t__u8  sigset[];\n+\t__DECLARE_FLEX_ARRAY(__u8, sigset);\n };\n \n /* for KVM_TPR_ACCESS_REPORTING */\n@@ -681,6 +693,11 @@ struct kvm_enable_cap {\n #define KVM_VM_TYPE_ARM_IPA_SIZE_MASK\t0xffULL\n #define KVM_VM_TYPE_ARM_IPA_SIZE(x)\t\t\\\n \t((x) & KVM_VM_TYPE_ARM_IPA_SIZE_MASK)\n+\n+#define KVM_VM_TYPE_ARM_PROTECTED\t(1UL << 31)\n+#define KVM_VM_TYPE_ARM_MASK\t\t(KVM_VM_TYPE_ARM_IPA_SIZE_MASK | \\\n+\t\t\t\t\t KVM_VM_TYPE_ARM_PROTECTED)\n+\n /*\n  * ioctls for /dev/kvm fds:\n  */\n@@ -966,6 +983,8 @@ struct kvm_enable_cap {\n #define KVM_CAP_GUEST_MEMFD_FLAGS 244\n #define KVM_CAP_ARM_SEA_TO_USER 245\n #define KVM_CAP_S390_USER_OPEREXEC 246\n+#define KVM_CAP_S390_KEYOP 247\n+#define KVM_CAP_S390_VSIE_ESAMODE 248\n \n struct kvm_irq_routing_irqchip {\n \t__u32 irqchip;\n@@ -1028,7 +1047,7 @@ struct kvm_irq_routing_entry {\n struct kvm_irq_routing {\n \t__u32 nr;\n \t__u32 flags;\n-\tstruct kvm_irq_routing_entry entries[];\n+\t__DECLARE_FLEX_ARRAY(struct kvm_irq_routing_entry, entries);\n };\n \n #define KVM_IRQFD_FLAG_DEASSIGN (1 << 0)\n@@ -1119,7 +1138,7 @@ struct kvm_dirty_tlb {\n \n struct kvm_reg_list {\n \t__u64 n; /* number of regs */\n-\t__u64 reg[];\n+\t__DECLARE_FLEX_ARRAY(__u64, reg);\n };\n \n struct kvm_one_reg {\n@@ -1201,6 +1220,10 @@ enum kvm_device_type {\n #define KVM_DEV_TYPE_LOONGARCH_EIOINTC\tKVM_DEV_TYPE_LOONGARCH_EIOINTC\n \tKVM_DEV_TYPE_LOONGARCH_PCHPIC,\n #define KVM_DEV_TYPE_LOONGARCH_PCHPIC\tKVM_DEV_TYPE_LOONGARCH_PCHPIC\n+\tKVM_DEV_TYPE_LOONGARCH_DMSINTC,\n+#define KVM_DEV_TYPE_LOONGARCH_DMSINTC\tKVM_DEV_TYPE_LOONGARCH_DMSINTC\n+\tKVM_DEV_TYPE_ARM_VGIC_V5,\n+#define KVM_DEV_TYPE_ARM_VGIC_V5\tKVM_DEV_TYPE_ARM_VGIC_V5\n \n \tKVM_DEV_TYPE_MAX,\n \n@@ -1211,6 +1234,16 @@ struct kvm_vfio_spapr_tce {\n \t__s32\ttablefd;\n };\n \n+#define KVM_S390_KEYOP_ISKE 0x01\n+#define KVM_S390_KEYOP_RRBE 0x02\n+#define KVM_S390_KEYOP_SSKE 0x03\n+struct kvm_s390_keyop {\n+\t__u64 guest_addr;\n+\t__u8  key;\n+\t__u8  operation;\n+\t__u8  pad[6];\n+};\n+\n /*\n  * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns\n  * a vcpu fd.\n@@ -1230,6 +1263,7 @@ struct kvm_vfio_spapr_tce {\n #define KVM_S390_UCAS_MAP        _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)\n #define KVM_S390_UCAS_UNMAP      _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)\n #define KVM_S390_VCPU_FAULT\t _IOW(KVMIO, 0x52, unsigned long)\n+#define KVM_S390_KEYOP           _IOWR(KVMIO, 0x53, struct kvm_s390_keyop)\n \n /* Device model IOC */\n #define KVM_CREATE_IRQCHIP        _IO(KVMIO,   0x60)\n@@ -1571,7 +1605,7 @@ struct kvm_stats_desc {\n \t__u16 size;\n \t__u32 offset;\n \t__u32 bucket_size;\n-\tchar name[];\n+\t__DECLARE_FLEX_ARRAY(char, name);\n };\n \n #define KVM_GET_STATS_FD  _IO(KVMIO,  0xce)\ndiff --git a/linux-headers/linux/mshv.h b/linux-headers/linux/mshv.h\nindex acceeddc1c..6c7d3a9316 100644\n--- a/linux-headers/linux/mshv.h\n+++ b/linux-headers/linux/mshv.h\n@@ -27,6 +27,8 @@ enum {\n \tMSHV_PT_BIT_X2APIC,\n \tMSHV_PT_BIT_GPA_SUPER_PAGES,\n \tMSHV_PT_BIT_CPU_AND_XSAVE_FEATURES,\n+\tMSHV_PT_BIT_NESTED_VIRTUALIZATION,\n+\tMSHV_PT_BIT_SMT_ENABLED_GUEST,\n \tMSHV_PT_BIT_COUNT,\n };\n \n@@ -355,7 +357,7 @@ struct mshv_vtl_sint_post_msg {\n \n struct mshv_vtl_ram_disposition {\n \t__u64 start_pfn;\n-\t__u64 last_pfn;\n+\t__u64 last_pfn; /* last_pfn is excluded from the range [start_pfn, last_pfn) */\n };\n \n struct mshv_vtl_set_poll_file {\ndiff --git a/linux-headers/linux/psp-sev.h b/linux-headers/linux/psp-sev.h\nindex 9479928a4a..7df5002259 100644\n--- a/linux-headers/linux/psp-sev.h\n+++ b/linux-headers/linux/psp-sev.h\n@@ -277,7 +277,7 @@ struct sev_user_data_snp_wrapped_vlek_hashstick {\n  * struct sev_issue_cmd - SEV ioctl parameters\n  *\n  * @cmd: SEV commands to execute\n- * @opaque: pointer to the command structure\n+ * @data: pointer to the command structure\n  * @error: SEV FW return code on failure\n  */\n struct sev_issue_cmd {\ndiff --git a/linux-headers/linux/stddef.h b/linux-headers/linux/stddef.h\nindex 48ee4438e0..4574982594 100644\n--- a/linux-headers/linux/stddef.h\n+++ b/linux-headers/linux/stddef.h\n@@ -69,6 +69,10 @@\n #define __counted_by_be(m)\n #endif\n \n+#ifndef __counted_by_ptr\n+#define __counted_by_ptr(m)\n+#endif\n+\n #define __kernel_nonstring\n \n #endif /* _LINUX_STDDEF_H */\ndiff --git a/linux-headers/linux/vduse.h b/linux-headers/linux/vduse.h\nindex da6ac89af1..e19b3c0f51 100644\n--- a/linux-headers/linux/vduse.h\n+++ b/linux-headers/linux/vduse.h\n@@ -10,6 +10,10 @@\n \n #define VDUSE_API_VERSION\t0\n \n+/* VQ groups and ASID support */\n+\n+#define VDUSE_API_VERSION_1\t1\n+\n /*\n  * Get the version of VDUSE API that kernel supported (VDUSE_API_VERSION).\n  * This is used for future extension.\n@@ -27,6 +31,8 @@\n  * @features: virtio features\n  * @vq_num: the number of virtqueues\n  * @vq_align: the allocation alignment of virtqueue's metadata\n+ * @ngroups: number of vq groups that VDUSE device declares\n+ * @nas: number of address spaces that VDUSE device declares\n  * @reserved: for future use, needs to be initialized to zero\n  * @config_size: the size of the configuration space\n  * @config: the buffer of the configuration space\n@@ -41,7 +47,9 @@ struct vduse_dev_config {\n \t__u64 features;\n \t__u32 vq_num;\n \t__u32 vq_align;\n-\t__u32 reserved[13];\n+\t__u32 ngroups; /* if VDUSE_API_VERSION >= 1 */\n+\t__u32 nas; /* if VDUSE_API_VERSION >= 1 */\n+\t__u32 reserved[11];\n \t__u32 config_size;\n \t__u8 config[];\n };\n@@ -118,14 +126,18 @@ struct vduse_config_data {\n  * struct vduse_vq_config - basic configuration of a virtqueue\n  * @index: virtqueue index\n  * @max_size: the max size of virtqueue\n- * @reserved: for future use, needs to be initialized to zero\n+ * @reserved1: for future use, needs to be initialized to zero\n+ * @group: virtqueue group\n+ * @reserved2: for future use, needs to be initialized to zero\n  *\n  * Structure used by VDUSE_VQ_SETUP ioctl to setup a virtqueue.\n  */\n struct vduse_vq_config {\n \t__u32 index;\n \t__u16 max_size;\n-\t__u16 reserved[13];\n+\t__u16 reserved1;\n+\t__u32 group;\n+\t__u16 reserved2[10];\n };\n \n /*\n@@ -156,6 +168,16 @@ struct vduse_vq_state_packed {\n \t__u16 last_used_idx;\n };\n \n+/**\n+ * struct vduse_vq_group_asid - virtqueue group ASID\n+ * @group: Index of the virtqueue group\n+ * @asid: Address space ID of the group\n+ */\n+struct vduse_vq_group_asid {\n+\t__u32 group;\n+\t__u32 asid;\n+};\n+\n /**\n  * struct vduse_vq_info - information of a virtqueue\n  * @index: virtqueue index\n@@ -215,6 +237,7 @@ struct vduse_vq_eventfd {\n  * @uaddr: start address of userspace memory, it must be aligned to page size\n  * @iova: start of the IOVA region\n  * @size: size of the IOVA region\n+ * @asid: Address space ID of the IOVA region\n  * @reserved: for future use, needs to be initialized to zero\n  *\n  * Structure used by VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM\n@@ -224,7 +247,8 @@ struct vduse_iova_umem {\n \t__u64 uaddr;\n \t__u64 iova;\n \t__u64 size;\n-\t__u64 reserved[3];\n+\t__u32 asid;\n+\t__u32 reserved[5];\n };\n \n /* Register userspace memory for IOVA regions */\n@@ -238,6 +262,7 @@ struct vduse_iova_umem {\n  * @start: start of the IOVA region\n  * @last: last of the IOVA region\n  * @capability: capability of the IOVA region\n+ * @asid: Address space ID of the IOVA region, only if device API version >= 1\n  * @reserved: for future use, needs to be initialized to zero\n  *\n  * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of\n@@ -248,7 +273,8 @@ struct vduse_iova_info {\n \t__u64 last;\n #define VDUSE_IOVA_CAP_UMEM (1 << 0)\n \t__u64 capability;\n-\t__u64 reserved[3];\n+\t__u32 asid; /* Only if device API version >= 1 */\n+\t__u32 reserved[5];\n };\n \n /*\n@@ -257,6 +283,32 @@ struct vduse_iova_info {\n  */\n #define VDUSE_IOTLB_GET_INFO\t_IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)\n \n+/**\n+ * struct vduse_iotlb_entry_v2 - entry of IOTLB to describe one IOVA region\n+ *\n+ * @v1: the original vduse_iotlb_entry\n+ * @asid: address space ID of the IOVA region\n+ * @reserved: for future use, needs to be initialized to zero\n+ *\n+ * Structure used by VDUSE_IOTLB_GET_FD2 ioctl to find an overlapped IOVA region.\n+ */\n+struct vduse_iotlb_entry_v2 {\n+\t__u64 offset;\n+\t__u64 start;\n+\t__u64 last;\n+\t__u8 perm;\n+\t__u8 padding[7];\n+\t__u32 asid;\n+\t__u32 reserved[11];\n+};\n+\n+/*\n+ * Same as VDUSE_IOTLB_GET_FD but with vduse_iotlb_entry_v2 argument that\n+ * support extra fields.\n+ */\n+#define VDUSE_IOTLB_GET_FD2\t_IOWR(VDUSE_BASE, 0x1b, struct vduse_iotlb_entry_v2)\n+\n+\n /* The control messages definition for read(2)/write(2) on /dev/vduse/$NAME */\n \n /**\n@@ -265,11 +317,14 @@ struct vduse_iova_info {\n  * @VDUSE_SET_STATUS: set the device status\n  * @VDUSE_UPDATE_IOTLB: Notify userspace to update the memory mapping for\n  *                      specified IOVA range via VDUSE_IOTLB_GET_FD ioctl\n+ * @VDUSE_SET_VQ_GROUP_ASID: Notify userspace to update the address space of a\n+ *                           virtqueue group.\n  */\n enum vduse_req_type {\n \tVDUSE_GET_VQ_STATE,\n \tVDUSE_SET_STATUS,\n \tVDUSE_UPDATE_IOTLB,\n+\tVDUSE_SET_VQ_GROUP_ASID,\n };\n \n /**\n@@ -304,6 +359,19 @@ struct vduse_iova_range {\n \t__u64 last;\n };\n \n+/**\n+ * struct vduse_iova_range_v2 - IOVA range [start, last] if API_VERSION >= 1\n+ * @start: start of the IOVA range\n+ * @last: last of the IOVA range\n+ * @asid: address space ID of the IOVA range\n+ */\n+struct vduse_iova_range_v2 {\n+\t__u64 start;\n+\t__u64 last;\n+\t__u32 asid;\n+\t__u32 padding;\n+};\n+\n /**\n  * struct vduse_dev_request - control request\n  * @type: request type\n@@ -312,6 +380,8 @@ struct vduse_iova_range {\n  * @vq_state: virtqueue state, only index field is available\n  * @s: device status\n  * @iova: IOVA range for updating\n+ * @iova_v2: IOVA range for updating if API_VERSION >= 1\n+ * @vq_group_asid: ASID of a virtqueue group\n  * @padding: padding\n  *\n  * Structure used by read(2) on /dev/vduse/$NAME.\n@@ -324,6 +394,11 @@ struct vduse_dev_request {\n \t\tstruct vduse_vq_state vq_state;\n \t\tstruct vduse_dev_status s;\n \t\tstruct vduse_iova_range iova;\n+\t\t/* Following members but padding exist only if vduse api\n+\t\t * version >= 1\n+\t\t */\n+\t\tstruct vduse_iova_range_v2 iova_v2;\n+\t\tstruct vduse_vq_group_asid vq_group_asid;\n \t\t__u32 padding[32];\n \t};\n };\ndiff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h\nindex 720edfee7a..f3282b8e86 100644\n--- a/linux-headers/linux/vfio.h\n+++ b/linux-headers/linux/vfio.h\n@@ -141,7 +141,7 @@ struct vfio_info_cap_header {\n  *\n  * Retrieve information about the group.  Fills in provided\n  * struct vfio_group_info.  Caller sets argsz.\n- * Return: 0 on succes, -errno on failure.\n+ * Return: 0 on success, -errno on failure.\n  * Availability: Always\n  */\n struct vfio_group_status {\n@@ -964,6 +964,10 @@ struct vfio_device_bind_iommufd {\n  * hwpt corresponding to the given pt_id.\n  *\n  * Return: 0 on success, -errno on failure.\n+ *\n+ * When a device is resetting, -EBUSY will be returned to reject any concurrent\n+ * attachment to the resetting device itself or any sibling device in the IOMMU\n+ * group having the resetting device.\n  */\n struct vfio_device_attach_iommufd_pt {\n \t__u32\targsz;\n@@ -1262,6 +1266,19 @@ enum vfio_device_mig_state {\n  * The initial_bytes field indicates the amount of initial precopy\n  * data available from the device. This field should have a non-zero initial\n  * value and decrease as migration data is read from the device.\n+ * The presence of the VFIO_PRECOPY_INFO_REINIT output flag indicates\n+ * that new initial data is present on the stream.\n+ * The new initial data may result, for example, from device reconfiguration\n+ * during migration that requires additional initialization data.\n+ * In that case initial_bytes may report a non-zero value irrespective of\n+ * any previously reported values, which progresses towards zero as precopy\n+ * data is read from the data stream. dirty_bytes is also reset\n+ * to zero and represents the state change of the device relative to the new\n+ * initial_bytes.\n+ * VFIO_PRECOPY_INFO_REINIT can be reported only after userspace opts in to\n+ * VFIO_DEVICE_FEATURE_MIG_PRECOPY_INFOv2. Without this opt-in, the flags field\n+ * of struct vfio_precopy_info is reserved for bug-compatibility reasons.\n+ *\n  * It is recommended to leave PRE_COPY for STOP_COPY only after this field\n  * reaches zero. Leaving PRE_COPY earlier might make things slower.\n  *\n@@ -1297,6 +1314,7 @@ enum vfio_device_mig_state {\n struct vfio_precopy_info {\n \t__u32 argsz;\n \t__u32 flags;\n+#define VFIO_PRECOPY_INFO_REINIT (1 << 0) /* output - new initial data is present */\n \t__aligned_u64 initial_bytes;\n \t__aligned_u64 dirty_bytes;\n };\n@@ -1506,6 +1524,16 @@ struct vfio_device_feature_dma_buf {\n \tstruct vfio_region_dma_range dma_ranges[] __counted_by(nr_ranges);\n };\n \n+/*\n+ * Enables the migration precopy_info_v2 behaviour.\n+ *\n+ * VFIO_DEVICE_FEATURE_MIG_PRECOPY_INFOv2.\n+ *\n+ * On SET, enables the v2 pre_copy_info behaviour, where the\n+ * vfio_precopy_info.flags is a valid output field.\n+ */\n+#define VFIO_DEVICE_FEATURE_MIG_PRECOPY_INFOv2  12\n+\n /* -------- API for Type1 VFIO IOMMU -------- */\n \n /**\n","prefixes":["2/2"]}