Tested-by: Farrah Chen <[email protected]>
Signed-off-by: Zhao Liu <[email protected]>
---
 include/standard-headers/linux/ethtool.h      |   1 +
 include/standard-headers/linux/fuse.h         |  22 +-
 .../linux/input-event-codes.h                 |   1 +
 include/standard-headers/linux/input.h        |  22 +-
 include/standard-headers/linux/pci_regs.h     |  10 +
 include/standard-headers/linux/virtio_ids.h   |   1 +
 include/standard-headers/linux/virtio_rtc.h   | 237 ++++++++++++++++++
 include/standard-headers/linux/virtio_spi.h   | 181 +++++++++++++
 linux-headers/asm-loongarch/kvm.h             |   1 +
 linux-headers/asm-riscv/kvm.h                 |  23 +-
 linux-headers/asm-riscv/ptrace.h              |   4 +-
 linux-headers/asm-x86/kvm.h                   |  34 +++
 linux-headers/asm-x86/unistd_64.h             |   1 +
 linux-headers/asm-x86/unistd_x32.h            |   1 +
 linux-headers/linux/kvm.h                     |   3 +
 linux-headers/linux/psp-sev.h                 |  10 +-
 linux-headers/linux/stddef.h                  |   1 -
 linux-headers/linux/vduse.h                   |   2 +-
 linux-headers/linux/vhost.h                   |   4 +-
 19 files changed, 548 insertions(+), 11 deletions(-)
 create mode 100644 include/standard-headers/linux/virtio_rtc.h
 create mode 100644 include/standard-headers/linux/virtio_spi.h

diff --git a/include/standard-headers/linux/ethtool.h 
b/include/standard-headers/linux/ethtool.h
index eb803140283d..dc24512d2875 100644
--- a/include/standard-headers/linux/ethtool.h
+++ b/include/standard-headers/linux/ethtool.h
@@ -2380,6 +2380,7 @@ enum {
 #define        RXH_L4_B_0_1    (1 << 6) /* src port in case of TCP/UDP/SCTP */
 #define        RXH_L4_B_2_3    (1 << 7) /* dst port in case of TCP/UDP/SCTP */
 #define        RXH_GTP_TEID    (1 << 8) /* teid in case of GTP */
+#define        RXH_IP6_FL      (1 << 9) /* IPv6 flow label */
 #define        RXH_DISCARD     (1 << 31)
 
 #define        RX_CLS_FLOW_DISC        0xffffffffffffffffULL
diff --git a/include/standard-headers/linux/fuse.h 
b/include/standard-headers/linux/fuse.h
index d8b2fd67e16c..abf3a7885817 100644
--- a/include/standard-headers/linux/fuse.h
+++ b/include/standard-headers/linux/fuse.h
@@ -235,6 +235,11 @@
  *
  *  7.44
  *  - add FUSE_NOTIFY_INC_EPOCH
+ *
+ *  7.45
+ *  - add FUSE_COPY_FILE_RANGE_64
+ *  - add struct fuse_copy_file_range_out
+ *  - add FUSE_NOTIFY_PRUNE
  */
 
 #ifndef _LINUX_FUSE_H
@@ -266,7 +271,7 @@
 #define FUSE_KERNEL_VERSION 7
 
 /** Minor version number of this interface */
-#define FUSE_KERNEL_MINOR_VERSION 44
+#define FUSE_KERNEL_MINOR_VERSION 45
 
 /** The node ID of the root inode */
 #define FUSE_ROOT_ID 1
@@ -653,6 +658,7 @@ enum fuse_opcode {
        FUSE_SYNCFS             = 50,
        FUSE_TMPFILE            = 51,
        FUSE_STATX              = 52,
+       FUSE_COPY_FILE_RANGE_64 = 53,
 
        /* CUSE specific operations */
        CUSE_INIT               = 4096,
@@ -671,7 +677,7 @@ enum fuse_notify_code {
        FUSE_NOTIFY_DELETE = 6,
        FUSE_NOTIFY_RESEND = 7,
        FUSE_NOTIFY_INC_EPOCH = 8,
-       FUSE_NOTIFY_CODE_MAX,
+       FUSE_NOTIFY_PRUNE = 9,
 };
 
 /* The read buffer is required to be at least 8k, but may be much larger */
@@ -1110,6 +1116,12 @@ struct fuse_notify_retrieve_in {
        uint64_t        dummy4;
 };
 
+struct fuse_notify_prune_out {
+       uint32_t        count;
+       uint32_t        padding;
+       uint64_t        spare;
+};
+
 struct fuse_backing_map {
        int32_t         fd;
        uint32_t        flags;
@@ -1122,6 +1134,7 @@ struct fuse_backing_map {
 #define FUSE_DEV_IOC_BACKING_OPEN      _IOW(FUSE_DEV_IOC_MAGIC, 1, \
                                             struct fuse_backing_map)
 #define FUSE_DEV_IOC_BACKING_CLOSE     _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t)
+#define FUSE_DEV_IOC_SYNC_INIT         _IO(FUSE_DEV_IOC_MAGIC, 3)
 
 struct fuse_lseek_in {
        uint64_t        fh;
@@ -1144,6 +1157,11 @@ struct fuse_copy_file_range_in {
        uint64_t        flags;
 };
 
+/* For FUSE_COPY_FILE_RANGE_64 */
+struct fuse_copy_file_range_out {
+       uint64_t        bytes_copied;
+};
+
 #define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0)
 #define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1)
 struct fuse_setupmapping_in {
diff --git a/include/standard-headers/linux/input-event-codes.h 
b/include/standard-headers/linux/input-event-codes.h
index 00dc9caac923..c914ccd7237a 100644
--- a/include/standard-headers/linux/input-event-codes.h
+++ b/include/standard-headers/linux/input-event-codes.h
@@ -27,6 +27,7 @@
 #define INPUT_PROP_TOPBUTTONPAD                0x04    /* softbuttons at top 
of pad */
 #define INPUT_PROP_POINTING_STICK      0x05    /* is a pointing stick */
 #define INPUT_PROP_ACCELEROMETER       0x06    /* has accelerometer */
+#define INPUT_PROP_HAPTIC_TOUCHPAD     0x07    /* is a haptic touchpad */
 
 #define INPUT_PROP_MAX                 0x1f
 #define INPUT_PROP_CNT                 (INPUT_PROP_MAX + 1)
diff --git a/include/standard-headers/linux/input.h 
b/include/standard-headers/linux/input.h
index d4512c20b543..9aff211dd561 100644
--- a/include/standard-headers/linux/input.h
+++ b/include/standard-headers/linux/input.h
@@ -426,6 +426,24 @@ struct ff_rumble_effect {
        uint16_t weak_magnitude;
 };
 
+/**
+ * struct ff_haptic_effect
+ * @hid_usage: hid_usage according to Haptics page (WAVEFORM_CLICK, etc.)
+ * @vendor_id: the waveform vendor ID if hid_usage is in the vendor-defined 
range
+ * @vendor_waveform_page: the vendor waveform page if hid_usage is in the 
vendor-defined range
+ * @intensity: strength of the effect as percentage
+ * @repeat_count: number of times to retrigger effect
+ * @retrigger_period: time before effect is retriggered (in ms)
+ */
+struct ff_haptic_effect {
+       uint16_t hid_usage;
+       uint16_t vendor_id;
+       uint8_t  vendor_waveform_page;
+       uint16_t intensity;
+       uint16_t repeat_count;
+       uint16_t retrigger_period;
+};
+
 /**
  * struct ff_effect - defines force feedback effect
  * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
@@ -462,6 +480,7 @@ struct ff_effect {
                struct ff_periodic_effect periodic;
                struct ff_condition_effect condition[2]; /* One for each axis */
                struct ff_rumble_effect rumble;
+               struct ff_haptic_effect haptic;
        } u;
 };
 
@@ -469,6 +488,7 @@ struct ff_effect {
  * Force feedback effect types
  */
 
+#define FF_HAPTIC              0x4f
 #define FF_RUMBLE      0x50
 #define FF_PERIODIC    0x51
 #define FF_CONSTANT    0x52
@@ -478,7 +498,7 @@ struct ff_effect {
 #define FF_INERTIA     0x56
 #define FF_RAMP                0x57
 
-#define FF_EFFECT_MIN  FF_RUMBLE
+#define FF_EFFECT_MIN  FF_HAPTIC
 #define FF_EFFECT_MAX  FF_RAMP
 
 /*
diff --git a/include/standard-headers/linux/pci_regs.h 
b/include/standard-headers/linux/pci_regs.h
index f5b17745de60..07e06aafec50 100644
--- a/include/standard-headers/linux/pci_regs.h
+++ b/include/standard-headers/linux/pci_regs.h
@@ -207,6 +207,9 @@
 
 /* Capability lists */
 
+#define PCI_CAP_ID_MASK                0x00ff  /* Capability ID mask */
+#define PCI_CAP_LIST_NEXT_MASK 0xff00  /* Next Capability Pointer mask */
+
 #define PCI_CAP_LIST_ID                0       /* Capability ID */
 #define  PCI_CAP_ID_PM         0x01    /* Power Management */
 #define  PCI_CAP_ID_AGP                0x02    /* Accelerated Graphics Port */
@@ -776,6 +779,12 @@
 #define  PCI_ERR_UNC_MCBTLP    0x00800000      /* MC blocked TLP */
 #define  PCI_ERR_UNC_ATOMEG    0x01000000      /* Atomic egress blocked */
 #define  PCI_ERR_UNC_TLPPRE    0x02000000      /* TLP prefix blocked */
+#define  PCI_ERR_UNC_POISON_BLK        0x04000000      /* Poisoned TLP Egress 
Blocked */
+#define  PCI_ERR_UNC_DMWR_BLK  0x08000000      /* DMWr Request Egress Blocked 
*/
+#define  PCI_ERR_UNC_IDE_CHECK 0x10000000      /* IDE Check Failed */
+#define  PCI_ERR_UNC_MISR_IDE  0x20000000      /* Misrouted IDE TLP */
+#define  PCI_ERR_UNC_PCRC_CHECK        0x40000000      /* PCRC Check Failed */
+#define  PCI_ERR_UNC_XLAT_BLK  0x80000000      /* TLP Translation Egress 
Blocked */
 #define PCI_ERR_UNCOR_MASK     0x08    /* Uncorrectable Error Mask */
        /* Same bits as above */
 #define PCI_ERR_UNCOR_SEVER    0x0c    /* Uncorrectable Error Severity */
@@ -798,6 +807,7 @@
 #define  PCI_ERR_CAP_ECRC_CHKC         0x00000080 /* ECRC Check Capable */
 #define  PCI_ERR_CAP_ECRC_CHKE         0x00000100 /* ECRC Check Enable */
 #define  PCI_ERR_CAP_PREFIX_LOG_PRESENT        0x00000800 /* TLP Prefix Log 
Present */
+#define  PCI_ERR_CAP_COMP_TIME_LOG     0x00001000 /* Completion Timeout 
Prefix/Header Log Capable */
 #define  PCI_ERR_CAP_TLP_LOG_FLIT      0x00040000 /* TLP was logged in Flit 
Mode */
 #define  PCI_ERR_CAP_TLP_LOG_SIZE      0x00f80000 /* Logged TLP Size (only in 
Flit mode) */
 #define PCI_ERR_HEADER_LOG     0x1c    /* Header Log Register (16 bytes) */
diff --git a/include/standard-headers/linux/virtio_ids.h 
b/include/standard-headers/linux/virtio_ids.h
index 7aa2eb766205..6c12db16faa3 100644
--- a/include/standard-headers/linux/virtio_ids.h
+++ b/include/standard-headers/linux/virtio_ids.h
@@ -68,6 +68,7 @@
 #define VIRTIO_ID_AUDIO_POLICY         39 /* virtio audio policy */
 #define VIRTIO_ID_BT                   40 /* virtio bluetooth */
 #define VIRTIO_ID_GPIO                 41 /* virtio gpio */
+#define VIRTIO_ID_SPI                  45 /* virtio spi */
 
 /*
  * Virtio Transitional IDs
diff --git a/include/standard-headers/linux/virtio_rtc.h 
b/include/standard-headers/linux/virtio_rtc.h
new file mode 100644
index 000000000000..7e2c21ebff58
--- /dev/null
+++ b/include/standard-headers/linux/virtio_rtc.h
@@ -0,0 +1,237 @@
+/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR 
BSD-3-Clause) */
+/*
+ * Copyright (C) 2022-2024 OpenSynergy GmbH
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _LINUX_VIRTIO_RTC_H
+#define _LINUX_VIRTIO_RTC_H
+
+#include "standard-headers/linux/types.h"
+
+/* alarm feature */
+#define VIRTIO_RTC_F_ALARM     0
+
+/* read request message types */
+
+#define VIRTIO_RTC_REQ_READ                    0x0001
+#define VIRTIO_RTC_REQ_READ_CROSS              0x0002
+
+/* control request message types */
+
+#define VIRTIO_RTC_REQ_CFG                     0x1000
+#define VIRTIO_RTC_REQ_CLOCK_CAP               0x1001
+#define VIRTIO_RTC_REQ_CROSS_CAP               0x1002
+#define VIRTIO_RTC_REQ_READ_ALARM              0x1003
+#define VIRTIO_RTC_REQ_SET_ALARM               0x1004
+#define VIRTIO_RTC_REQ_SET_ALARM_ENABLED       0x1005
+
+/* alarmq message types */
+
+#define VIRTIO_RTC_NOTIF_ALARM                 0x2000
+
+/* Message headers */
+
+/** common request header */
+struct virtio_rtc_req_head {
+       uint16_t msg_type;
+       uint8_t reserved[6];
+};
+
+/** common response header */
+struct virtio_rtc_resp_head {
+#define VIRTIO_RTC_S_OK                        0
+#define VIRTIO_RTC_S_EOPNOTSUPP                2
+#define VIRTIO_RTC_S_ENODEV            3
+#define VIRTIO_RTC_S_EINVAL            4
+#define VIRTIO_RTC_S_EIO               5
+       uint8_t status;
+       uint8_t reserved[7];
+};
+
+/** common notification header */
+struct virtio_rtc_notif_head {
+       uint16_t msg_type;
+       uint8_t reserved[6];
+};
+
+/* read requests */
+
+/* VIRTIO_RTC_REQ_READ message */
+
+struct virtio_rtc_req_read {
+       struct virtio_rtc_req_head head;
+       uint16_t clock_id;
+       uint8_t reserved[6];
+};
+
+struct virtio_rtc_resp_read {
+       struct virtio_rtc_resp_head head;
+       uint64_t clock_reading;
+};
+
+/* VIRTIO_RTC_REQ_READ_CROSS message */
+
+struct virtio_rtc_req_read_cross {
+       struct virtio_rtc_req_head head;
+       uint16_t clock_id;
+/* Arm Generic Timer Counter-timer Virtual Count Register (CNTVCT_EL0) */
+#define VIRTIO_RTC_COUNTER_ARM_VCT     0
+/* x86 Time-Stamp Counter */
+#define VIRTIO_RTC_COUNTER_X86_TSC     1
+/* Invalid */
+#define VIRTIO_RTC_COUNTER_INVALID     0xFF
+       uint8_t hw_counter;
+       uint8_t reserved[5];
+};
+
+struct virtio_rtc_resp_read_cross {
+       struct virtio_rtc_resp_head head;
+       uint64_t clock_reading;
+       uint64_t counter_cycles;
+};
+
+/* control requests */
+
+/* VIRTIO_RTC_REQ_CFG message */
+
+struct virtio_rtc_req_cfg {
+       struct virtio_rtc_req_head head;
+       /* no request params */
+};
+
+struct virtio_rtc_resp_cfg {
+       struct virtio_rtc_resp_head head;
+       /** # of clocks -> clock ids < num_clocks are valid */
+       uint16_t num_clocks;
+       uint8_t reserved[6];
+};
+
+/* VIRTIO_RTC_REQ_CLOCK_CAP message */
+
+struct virtio_rtc_req_clock_cap {
+       struct virtio_rtc_req_head head;
+       uint16_t clock_id;
+       uint8_t reserved[6];
+};
+
+struct virtio_rtc_resp_clock_cap {
+       struct virtio_rtc_resp_head head;
+#define VIRTIO_RTC_CLOCK_UTC                   0
+#define VIRTIO_RTC_CLOCK_TAI                   1
+#define VIRTIO_RTC_CLOCK_MONOTONIC             2
+#define VIRTIO_RTC_CLOCK_UTC_SMEARED           3
+#define VIRTIO_RTC_CLOCK_UTC_MAYBE_SMEARED     4
+       uint8_t type;
+#define VIRTIO_RTC_SMEAR_UNSPECIFIED   0
+#define VIRTIO_RTC_SMEAR_NOON_LINEAR   1
+#define VIRTIO_RTC_SMEAR_UTC_SLS       2
+       uint8_t leap_second_smearing;
+#define VIRTIO_RTC_FLAG_ALARM_CAP              (1 << 0)
+       uint8_t flags;
+       uint8_t reserved[5];
+};
+
+/* VIRTIO_RTC_REQ_CROSS_CAP message */
+
+struct virtio_rtc_req_cross_cap {
+       struct virtio_rtc_req_head head;
+       uint16_t clock_id;
+       uint8_t hw_counter;
+       uint8_t reserved[5];
+};
+
+struct virtio_rtc_resp_cross_cap {
+       struct virtio_rtc_resp_head head;
+#define VIRTIO_RTC_FLAG_CROSS_CAP      (1 << 0)
+       uint8_t flags;
+       uint8_t reserved[7];
+};
+
+/* VIRTIO_RTC_REQ_READ_ALARM message */
+
+struct virtio_rtc_req_read_alarm {
+       struct virtio_rtc_req_head head;
+       uint16_t clock_id;
+       uint8_t reserved[6];
+};
+
+struct virtio_rtc_resp_read_alarm {
+       struct virtio_rtc_resp_head head;
+       uint64_t alarm_time;
+#define VIRTIO_RTC_FLAG_ALARM_ENABLED  (1 << 0)
+       uint8_t flags;
+       uint8_t reserved[7];
+};
+
+/* VIRTIO_RTC_REQ_SET_ALARM message */
+
+struct virtio_rtc_req_set_alarm {
+       struct virtio_rtc_req_head head;
+       uint64_t alarm_time;
+       uint16_t clock_id;
+       /* flag VIRTIO_RTC_FLAG_ALARM_ENABLED */
+       uint8_t flags;
+       uint8_t reserved[5];
+};
+
+struct virtio_rtc_resp_set_alarm {
+       struct virtio_rtc_resp_head head;
+       /* no response params */
+};
+
+/* VIRTIO_RTC_REQ_SET_ALARM_ENABLED message */
+
+struct virtio_rtc_req_set_alarm_enabled {
+       struct virtio_rtc_req_head head;
+       uint16_t clock_id;
+       /* flag VIRTIO_RTC_ALARM_ENABLED */
+       uint8_t flags;
+       uint8_t reserved[5];
+};
+
+struct virtio_rtc_resp_set_alarm_enabled {
+       struct virtio_rtc_resp_head head;
+       /* no response params */
+};
+
+/** Union of request types for requestq */
+union virtio_rtc_req_requestq {
+       struct virtio_rtc_req_read read;
+       struct virtio_rtc_req_read_cross read_cross;
+       struct virtio_rtc_req_cfg cfg;
+       struct virtio_rtc_req_clock_cap clock_cap;
+       struct virtio_rtc_req_cross_cap cross_cap;
+       struct virtio_rtc_req_read_alarm read_alarm;
+       struct virtio_rtc_req_set_alarm set_alarm;
+       struct virtio_rtc_req_set_alarm_enabled set_alarm_enabled;
+};
+
+/** Union of response types for requestq */
+union virtio_rtc_resp_requestq {
+       struct virtio_rtc_resp_read read;
+       struct virtio_rtc_resp_read_cross read_cross;
+       struct virtio_rtc_resp_cfg cfg;
+       struct virtio_rtc_resp_clock_cap clock_cap;
+       struct virtio_rtc_resp_cross_cap cross_cap;
+       struct virtio_rtc_resp_read_alarm read_alarm;
+       struct virtio_rtc_resp_set_alarm set_alarm;
+       struct virtio_rtc_resp_set_alarm_enabled set_alarm_enabled;
+};
+
+/* alarmq notifications */
+
+/* VIRTIO_RTC_NOTIF_ALARM notification */
+
+struct virtio_rtc_notif_alarm {
+       struct virtio_rtc_notif_head head;
+       uint16_t clock_id;
+       uint8_t reserved[6];
+};
+
+/** Union of notification types for alarmq */
+union virtio_rtc_notif_alarmq {
+       struct virtio_rtc_notif_alarm alarm;
+};
+
+#endif /* _LINUX_VIRTIO_RTC_H */
diff --git a/include/standard-headers/linux/virtio_spi.h 
b/include/standard-headers/linux/virtio_spi.h
new file mode 100644
index 000000000000..54e570fb4a84
--- /dev/null
+++ b/include/standard-headers/linux/virtio_spi.h
@@ -0,0 +1,181 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/*
+ * Copyright (C) 2023 OpenSynergy GmbH
+ * Copyright (C) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+#ifndef _LINUX_VIRTIO_VIRTIO_SPI_H
+#define _LINUX_VIRTIO_VIRTIO_SPI_H
+
+#include "standard-headers/linux/types.h"
+#include "standard-headers/linux/virtio_config.h"
+#include "standard-headers/linux/virtio_ids.h"
+#include "standard-headers/linux/virtio_types.h"
+
+/* Sample data on trailing clock edge */
+#define VIRTIO_SPI_CPHA                        _BITUL(0)
+/* Clock is high when IDLE */
+#define VIRTIO_SPI_CPOL                        _BITUL(1)
+/* Chip Select is active high */
+#define VIRTIO_SPI_CS_HIGH                     _BITUL(2)
+/* Transmit LSB first */
+#define VIRTIO_SPI_MODE_LSB_FIRST              _BITUL(3)
+/* Loopback mode */
+#define VIRTIO_SPI_MODE_LOOP                   _BITUL(4)
+
+/**
+ * struct virtio_spi_config - All config fields are read-only for the
+ * Virtio SPI driver
+ * @cs_max_number: maximum number of chipselect the host SPI controller
+ *   supports.
+ * @cs_change_supported: indicates if the host SPI controller supports to 
toggle
+ *   chipselect after each transfer in one message:
+ *   0: unsupported, chipselect will be kept in active state throughout the
+ *      message transaction;
+ *   1: supported.
+ *   Note: Message here contains a sequence of SPI transfers.
+ * @tx_nbits_supported: indicates the supported number of bit for writing:
+ *   bit 0: DUAL (2-bit transfer), 1 for supported
+ *   bit 1: QUAD (4-bit transfer), 1 for supported
+ *   bit 2: OCTAL (8-bit transfer), 1 for supported
+ *   other bits are reserved as 0, 1-bit transfer is always supported.
+ * @rx_nbits_supported: indicates the supported number of bit for reading:
+ *   bit 0: DUAL (2-bit transfer), 1 for supported
+ *   bit 1: QUAD (4-bit transfer), 1 for supported
+ *   bit 2: OCTAL (8-bit transfer), 1 for supported
+ *   other bits are reserved as 0, 1-bit transfer is always supported.
+ * @bits_per_word_mask: mask indicating which values of bits_per_word are
+ *   supported. If not set, no limitation for bits_per_word.
+ * @mode_func_supported: indicates the following features are supported or not:
+ *   bit 0-1: CPHA feature
+ *     0b00: invalid, should support as least one CPHA setting
+ *     0b01: supports CPHA=0 only
+ *     0b10: supports CPHA=1 only
+ *     0b11: supports CPHA=0 and CPHA=1.
+ *   bit 2-3: CPOL feature
+ *     0b00: invalid, should support as least one CPOL setting
+ *     0b01: supports CPOL=0 only
+ *     0b10: supports CPOL=1 only
+ *     0b11: supports CPOL=0 and CPOL=1.
+ *   bit 4: chipselect active high feature, 0 for unsupported and 1 for
+ *     supported, chipselect active low is supported by default.
+ *   bit 5: LSB first feature, 0 for unsupported and 1 for supported,
+ *     MSB first is supported by default.
+ *   bit 6: loopback mode feature, 0 for unsupported and 1 for supported,
+ *     normal mode is supported by default.
+ * @max_freq_hz: the maximum clock rate supported in Hz unit, 0 means no
+ *   limitation for transfer speed.
+ * @max_word_delay_ns: the maximum word delay supported, in nanoseconds.
+ *   A value of 0 indicates that word delay is unsupported.
+ *   Each transfer may consist of a sequence of words.
+ * @max_cs_setup_ns: the maximum delay supported after chipselect is asserted,
+ *   in ns unit, 0 means delay is not supported to introduce after chipselect 
is
+ *   asserted.
+ * @max_cs_hold_ns: the maximum delay supported before chipselect is 
deasserted,
+ *   in ns unit, 0 means delay is not supported to introduce before chipselect
+ *   is deasserted.
+ * @max_cs_incative_ns: maximum delay supported after chipselect is deasserted,
+ *   in ns unit, 0 means delay is not supported to introduce after chipselect 
is
+ *   deasserted.
+ */
+struct virtio_spi_config {
+       uint8_t cs_max_number;
+       uint8_t cs_change_supported;
+#define VIRTIO_SPI_RX_TX_SUPPORT_DUAL          _BITUL(0)
+#define VIRTIO_SPI_RX_TX_SUPPORT_QUAD          _BITUL(1)
+#define VIRTIO_SPI_RX_TX_SUPPORT_OCTAL         _BITUL(2)
+       uint8_t tx_nbits_supported;
+       uint8_t rx_nbits_supported;
+       uint32_t bits_per_word_mask;
+#define VIRTIO_SPI_MF_SUPPORT_CPHA_0           _BITUL(0)
+#define VIRTIO_SPI_MF_SUPPORT_CPHA_1           _BITUL(1)
+#define VIRTIO_SPI_MF_SUPPORT_CPOL_0           _BITUL(2)
+#define VIRTIO_SPI_MF_SUPPORT_CPOL_1           _BITUL(3)
+#define VIRTIO_SPI_MF_SUPPORT_CS_HIGH          _BITUL(4)
+#define VIRTIO_SPI_MF_SUPPORT_LSB_FIRST                _BITUL(5)
+#define VIRTIO_SPI_MF_SUPPORT_LOOPBACK         _BITUL(6)
+       uint32_t mode_func_supported;
+       uint32_t max_freq_hz;
+       uint32_t max_word_delay_ns;
+       uint32_t max_cs_setup_ns;
+       uint32_t max_cs_hold_ns;
+       uint32_t max_cs_inactive_ns;
+};
+
+/**
+ * struct spi_transfer_head - virtio SPI transfer descriptor
+ * @chip_select_id: chipselect index the SPI transfer used.
+ * @bits_per_word: the number of bits in each SPI transfer word.
+ * @cs_change: whether to deselect device after finishing this transfer
+ *     before starting the next transfer, 0 means cs keep asserted and
+ *     1 means cs deasserted then asserted again.
+ * @tx_nbits: bus width for write transfer.
+ *     0,1: bus width is 1, also known as SINGLE
+ *     2  : bus width is 2, also known as DUAL
+ *     4  : bus width is 4, also known as QUAD
+ *     8  : bus width is 8, also known as OCTAL
+ *     other values are invalid.
+ * @rx_nbits: bus width for read transfer.
+ *     0,1: bus width is 1, also known as SINGLE
+ *     2  : bus width is 2, also known as DUAL
+ *     4  : bus width is 4, also known as QUAD
+ *     8  : bus width is 8, also known as OCTAL
+ *     other values are invalid.
+ * @reserved: for future use.
+ * @mode: SPI transfer mode.
+ *     bit 0: CPHA, determines the timing (i.e. phase) of the data
+ *         bits relative to the clock pulses.For CPHA=0, the
+ *         "out" side changes the data on the trailing edge of the
+ *         preceding clock cycle, while the "in" side captures the data
+ *         on (or shortly after) the leading edge of the clock cycle.
+ *         For CPHA=1, the "out" side changes the data on the leading
+ *         edge of the current clock cycle, while the "in" side
+ *         captures the data on (or shortly after) the trailing edge of
+ *         the clock cycle.
+ *     bit 1: CPOL, determines the polarity of the clock. CPOL=0 is a
+ *         clock which idles at 0, and each cycle consists of a pulse
+ *         of 1. CPOL=1 is a clock which idles at 1, and each cycle
+ *         consists of a pulse of 0.
+ *     bit 2: CS_HIGH, if 1, chip select active high, else active low.
+ *     bit 3: LSB_FIRST, determines per-word bits-on-wire, if 0, MSB
+ *         first, else LSB first.
+ *     bit 4: LOOP, loopback mode.
+ * @freq: the transfer speed in Hz.
+ * @word_delay_ns: delay to be inserted between consecutive words of a
+ *     transfer, in ns unit.
+ * @cs_setup_ns: delay to be introduced after CS is asserted, in ns
+ *     unit.
+ * @cs_delay_hold_ns: delay to be introduced before CS is deasserted
+ *     for each transfer, in ns unit.
+ * @cs_change_delay_inactive_ns: delay to be introduced after CS is
+ *     deasserted and before next asserted, in ns unit.
+ */
+struct spi_transfer_head {
+       uint8_t chip_select_id;
+       uint8_t bits_per_word;
+       uint8_t cs_change;
+       uint8_t tx_nbits;
+       uint8_t rx_nbits;
+       uint8_t reserved[3];
+       uint32_t mode;
+       uint32_t freq;
+       uint32_t word_delay_ns;
+       uint32_t cs_setup_ns;
+       uint32_t cs_delay_hold_ns;
+       uint32_t cs_change_delay_inactive_ns;
+};
+
+/**
+ * struct spi_transfer_result - virtio SPI transfer result
+ * @result: Transfer result code.
+ *          VIRTIO_SPI_TRANS_OK: Transfer successful.
+ *          VIRTIO_SPI_PARAM_ERR: Parameter error.
+ *          VIRTIO_SPI_TRANS_ERR: Transfer error.
+ */
+struct spi_transfer_result {
+#define VIRTIO_SPI_TRANS_OK    0
+#define VIRTIO_SPI_PARAM_ERR   1
+#define VIRTIO_SPI_TRANS_ERR   2
+       uint8_t result;
+};
+
+#endif /* #ifndef _LINUX_VIRTIO_VIRTIO_SPI_H */
diff --git a/linux-headers/asm-loongarch/kvm.h 
b/linux-headers/asm-loongarch/kvm.h
index 5f354f5c6847..57ba1a563bb1 100644
--- a/linux-headers/asm-loongarch/kvm.h
+++ b/linux-headers/asm-loongarch/kvm.h
@@ -103,6 +103,7 @@ struct kvm_fpu {
 #define  KVM_LOONGARCH_VM_FEAT_PMU             5
 #define  KVM_LOONGARCH_VM_FEAT_PV_IPI          6
 #define  KVM_LOONGARCH_VM_FEAT_PV_STEALTIME    7
+#define  KVM_LOONGARCH_VM_FEAT_PTW             8
 
 /* Device Control API on vcpu fd */
 #define KVM_LOONGARCH_VCPU_CPUCFG      0
diff --git a/linux-headers/asm-riscv/kvm.h b/linux-headers/asm-riscv/kvm.h
index ef27d4289da1..759a4852c09a 100644
--- a/linux-headers/asm-riscv/kvm.h
+++ b/linux-headers/asm-riscv/kvm.h
@@ -9,7 +9,7 @@
 #ifndef __LINUX_KVM_RISCV_H
 #define __LINUX_KVM_RISCV_H
 
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 
 #include <linux/types.h>
 #include <asm/bitsperlong.h>
@@ -56,6 +56,7 @@ struct kvm_riscv_config {
        unsigned long mimpid;
        unsigned long zicboz_block_size;
        unsigned long satp_mode;
+       unsigned long zicbop_block_size;
 };
 
 /* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
@@ -185,6 +186,10 @@ enum KVM_RISCV_ISA_EXT_ID {
        KVM_RISCV_ISA_EXT_ZICCRSE,
        KVM_RISCV_ISA_EXT_ZAAMO,
        KVM_RISCV_ISA_EXT_ZALRSC,
+       KVM_RISCV_ISA_EXT_ZICBOP,
+       KVM_RISCV_ISA_EXT_ZFBFMIN,
+       KVM_RISCV_ISA_EXT_ZVFBFMIN,
+       KVM_RISCV_ISA_EXT_ZVFBFWMA,
        KVM_RISCV_ISA_EXT_MAX,
 };
 
@@ -205,6 +210,7 @@ enum KVM_RISCV_SBI_EXT_ID {
        KVM_RISCV_SBI_EXT_DBCN,
        KVM_RISCV_SBI_EXT_STA,
        KVM_RISCV_SBI_EXT_SUSP,
+       KVM_RISCV_SBI_EXT_FWFT,
        KVM_RISCV_SBI_EXT_MAX,
 };
 
@@ -214,6 +220,18 @@ struct kvm_riscv_sbi_sta {
        unsigned long shmem_hi;
 };
 
+struct kvm_riscv_sbi_fwft_feature {
+       unsigned long enable;
+       unsigned long flags;
+       unsigned long value;
+};
+
+/* SBI FWFT extension registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
+struct kvm_riscv_sbi_fwft {
+       struct kvm_riscv_sbi_fwft_feature misaligned_deleg;
+       struct kvm_riscv_sbi_fwft_feature pointer_masking;
+};
+
 /* Possible states for kvm_riscv_timer */
 #define KVM_RISCV_TIMER_STATE_OFF      0
 #define KVM_RISCV_TIMER_STATE_ON       1
@@ -297,6 +315,9 @@ struct kvm_riscv_sbi_sta {
 #define KVM_REG_RISCV_SBI_STA          (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
 #define KVM_REG_RISCV_SBI_STA_REG(name)                \
                (offsetof(struct kvm_riscv_sbi_sta, name) / sizeof(unsigned 
long))
+#define KVM_REG_RISCV_SBI_FWFT         (0x1 << KVM_REG_RISCV_SUBTYPE_SHIFT)
+#define KVM_REG_RISCV_SBI_FWFT_REG(name)       \
+               (offsetof(struct kvm_riscv_sbi_fwft, name) / sizeof(unsigned 
long))
 
 /* Device Control API: RISC-V AIA */
 #define KVM_DEV_RISCV_APLIC_ALIGN              0x1000
diff --git a/linux-headers/asm-riscv/ptrace.h b/linux-headers/asm-riscv/ptrace.h
index 1e3166caca8c..a3f8211ede44 100644
--- a/linux-headers/asm-riscv/ptrace.h
+++ b/linux-headers/asm-riscv/ptrace.h
@@ -6,7 +6,7 @@
 #ifndef _ASM_RISCV_PTRACE_H
 #define _ASM_RISCV_PTRACE_H
 
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 
 #include <linux/types.h>
 
@@ -127,6 +127,6 @@ struct __riscv_v_regset_state {
  */
 #define RISCV_MAX_VLENB (8192)
 
-#endif /* __ASSEMBLY__ */
+#endif /* __ASSEMBLER__ */
 
 #endif /* _ASM_RISCV_PTRACE_H */
diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index f0c1a730d9c3..3bb38f6c3a41 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -35,6 +35,11 @@
 #define MC_VECTOR 18
 #define XM_VECTOR 19
 #define VE_VECTOR 20
+#define CP_VECTOR 21
+
+#define HV_VECTOR 28
+#define VC_VECTOR 29
+#define SX_VECTOR 30
 
 /* Select x86 specific features in <linux/kvm.h> */
 #define __KVM_HAVE_PIT
@@ -409,6 +414,35 @@ struct kvm_xcrs {
        __u64 padding[16];
 };
 
+#define KVM_X86_REG_TYPE_MSR           2
+#define KVM_X86_REG_TYPE_KVM           3
+
+#define KVM_X86_KVM_REG_SIZE(reg)                                              
\
+({                                                                             
\
+       reg == KVM_REG_GUEST_SSP ? KVM_REG_SIZE_U64 : 0;                        
\
+})
+
+#define KVM_X86_REG_TYPE_SIZE(type, reg)                                       
\
+({                                                                             
\
+       __u64 type_size = (__u64)type << 32;                                    
\
+                                                                               
\
+       type_size |= type == KVM_X86_REG_TYPE_MSR ? KVM_REG_SIZE_U64 :          
\
+                    type == KVM_X86_REG_TYPE_KVM ? KVM_X86_KVM_REG_SIZE(reg) : 
\
+                    0;                                                         
\
+       type_size;                                                              
\
+})
+
+#define KVM_X86_REG_ID(type, index)                            \
+       (KVM_REG_X86 | KVM_X86_REG_TYPE_SIZE(type, index) | index)
+
+#define KVM_X86_REG_MSR(index)                                 \
+       KVM_X86_REG_ID(KVM_X86_REG_TYPE_MSR, index)
+#define KVM_X86_REG_KVM(index)                                 \
+       KVM_X86_REG_ID(KVM_X86_REG_TYPE_KVM, index)
+
+/* KVM-defined registers starting from 0 */
+#define KVM_REG_GUEST_SSP      0
+
 #define KVM_SYNC_X86_REGS      (1UL << 0)
 #define KVM_SYNC_X86_SREGS     (1UL << 1)
 #define KVM_SYNC_X86_EVENTS    (1UL << 2)
diff --git a/linux-headers/asm-x86/unistd_64.h 
b/linux-headers/asm-x86/unistd_64.h
index 2f55bebb81cc..26c258d1a609 100644
--- a/linux-headers/asm-x86/unistd_64.h
+++ b/linux-headers/asm-x86/unistd_64.h
@@ -337,6 +337,7 @@
 #define __NR_io_pgetevents 333
 #define __NR_rseq 334
 #define __NR_uretprobe 335
+#define __NR_uprobe 336
 #define __NR_pidfd_send_signal 424
 #define __NR_io_uring_setup 425
 #define __NR_io_uring_enter 426
diff --git a/linux-headers/asm-x86/unistd_x32.h 
b/linux-headers/asm-x86/unistd_x32.h
index 8cc8673f1547..65c2aed94623 100644
--- a/linux-headers/asm-x86/unistd_x32.h
+++ b/linux-headers/asm-x86/unistd_x32.h
@@ -290,6 +290,7 @@
 #define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)
 #define __NR_rseq (__X32_SYSCALL_BIT + 334)
 #define __NR_uretprobe (__X32_SYSCALL_BIT + 335)
+#define __NR_uprobe (__X32_SYSCALL_BIT + 336)
 #define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)
 #define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)
 #define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index be704965d865..4ea28ef7cac1 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -954,6 +954,7 @@ struct kvm_enable_cap {
 #define KVM_CAP_ARM_EL2_E2H0 241
 #define KVM_CAP_RISCV_MP_STATE_RESET 242
 #define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243
+#define KVM_CAP_GUEST_MEMFD_FLAGS 244
 
 struct kvm_irq_routing_irqchip {
        __u32 irqchip;
@@ -1590,6 +1591,8 @@ struct kvm_memory_attributes {
 #define KVM_MEMORY_ATTRIBUTE_PRIVATE           (1ULL << 3)
 
 #define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO,  0xd4, struct 
kvm_create_guest_memfd)
+#define GUEST_MEMFD_FLAG_MMAP          (1ULL << 0)
+#define GUEST_MEMFD_FLAG_INIT_SHARED   (1ULL << 1)
 
 struct kvm_create_guest_memfd {
        __u64 size;
diff --git a/linux-headers/linux/psp-sev.h b/linux-headers/linux/psp-sev.h
index 113c4ceb7840..c525125ea815 100644
--- a/linux-headers/linux/psp-sev.h
+++ b/linux-headers/linux/psp-sev.h
@@ -185,6 +185,10 @@ struct sev_user_data_get_id2 {
  * @mask_chip_id: whether chip id is present in attestation reports or not
  * @mask_chip_key: whether attestation reports are signed or not
  * @vlek_en: VLEK (Version Loaded Endorsement Key) hashstick is loaded
+ * @feature_info: whether SNP_FEATURE_INFO command is available
+ * @rapl_dis: whether RAPL is disabled
+ * @ciphertext_hiding_cap: whether platform has ciphertext hiding capability
+ * @ciphertext_hiding_en: whether ciphertext hiding is enabled
  * @rsvd1: reserved
  * @guest_count: the number of guest currently managed by the firmware
  * @current_tcb_version: current TCB version
@@ -200,7 +204,11 @@ struct sev_user_data_snp_status {
        __u32 mask_chip_id:1;           /* Out */
        __u32 mask_chip_key:1;          /* Out */
        __u32 vlek_en:1;                /* Out */
-       __u32 rsvd1:29;
+       __u32 feature_info:1;           /* Out */
+       __u32 rapl_dis:1;               /* Out */
+       __u32 ciphertext_hiding_cap:1;  /* Out */
+       __u32 ciphertext_hiding_en:1;   /* Out */
+       __u32 rsvd1:25;
        __u32 guest_count;              /* Out */
        __u64 current_tcb_version;      /* Out */
        __u64 reported_tcb_version;     /* Out */
diff --git a/linux-headers/linux/stddef.h b/linux-headers/linux/stddef.h
index e1fcfcf3b332..48ee4438e0ef 100644
--- a/linux-headers/linux/stddef.h
+++ b/linux-headers/linux/stddef.h
@@ -3,7 +3,6 @@
 #define _LINUX_STDDEF_H
 
 
-
 #ifndef __always_inline
 #define __always_inline __inline__
 #endif
diff --git a/linux-headers/linux/vduse.h b/linux-headers/linux/vduse.h
index f46269af349a..da6ac89af18e 100644
--- a/linux-headers/linux/vduse.h
+++ b/linux-headers/linux/vduse.h
@@ -237,7 +237,7 @@ struct vduse_iova_umem {
  * struct vduse_iova_info - information of one IOVA region
  * @start: start of the IOVA region
  * @last: last of the IOVA region
- * @capability: capability of the IOVA regsion
+ * @capability: capability of the IOVA region
  * @reserved: for future use, needs to be initialized to zero
  *
  * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of
diff --git a/linux-headers/linux/vhost.h b/linux-headers/linux/vhost.h
index 283348b64af9..c57674a6aa0d 100644
--- a/linux-headers/linux/vhost.h
+++ b/linux-headers/linux/vhost.h
@@ -260,7 +260,7 @@
  * When fork_owner is set to VHOST_FORK_OWNER_KTHREAD:
  *   - Vhost will create vhost workers as kernel threads.
  */
-#define VHOST_SET_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x83, __u8)
+#define VHOST_SET_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x84, __u8)
 
 /**
  * VHOST_GET_FORK_OWNER - Get the current fork_owner flag for the vhost device.
@@ -268,6 +268,6 @@
  *
  * @return: An 8-bit value indicating the current thread mode.
  */
-#define VHOST_GET_FORK_FROM_OWNER _IOR(VHOST_VIRTIO, 0x84, __u8)
+#define VHOST_GET_FORK_FROM_OWNER _IOR(VHOST_VIRTIO, 0x85, __u8)
 
 #endif
-- 
2.34.1


Reply via email to