aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/bpf.h56
-rw-r--r--include/uapi/linux/input-event-codes.h2
-rw-r--r--include/uapi/linux/keyctl.h30
-rw-r--r--include/uapi/linux/kfd_ioctl.h18
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h4
-rw-r--r--include/uapi/linux/netfilter_bridge.h4
-rw-r--r--include/uapi/linux/perf_event.h2
-rw-r--r--include/uapi/linux/prctl.h1
-rw-r--r--include/uapi/linux/sctp.h3
-rw-r--r--include/uapi/linux/v4l2-controls.h5
-rw-r--r--include/uapi/linux/virtio_balloon.h8
11 files changed, 103 insertions, 30 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 852dc17ab47a..72c453a8bf50 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -2170,7 +2170,7 @@ union bpf_attr {
2170 * Return 2170 * Return
2171 * 0 on success, or a negative error in case of failure. 2171 * 0 on success, or a negative error in case of failure.
2172 * 2172 *
2173 * struct bpf_sock *bpf_sk_lookup_tcp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u32 netns, u64 flags) 2173 * struct bpf_sock *bpf_sk_lookup_tcp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u64 netns, u64 flags)
2174 * Description 2174 * Description
2175 * Look for TCP socket matching *tuple*, optionally in a child 2175 * Look for TCP socket matching *tuple*, optionally in a child
2176 * network namespace *netns*. The return value must be checked, 2176 * network namespace *netns*. The return value must be checked,
@@ -2187,12 +2187,14 @@ union bpf_attr {
2187 * **sizeof**\ (*tuple*\ **->ipv6**) 2187 * **sizeof**\ (*tuple*\ **->ipv6**)
2188 * Look for an IPv6 socket. 2188 * Look for an IPv6 socket.
2189 * 2189 *
2190 * If the *netns* is zero, then the socket lookup table in the 2190 * If the *netns* is a negative signed 32-bit integer, then the
2191 * netns associated with the *ctx* will be used. For the TC hooks, 2191 * socket lookup table in the netns associated with the *ctx* will
2192 * this in the netns of the device in the skb. For socket hooks, 2192 * will be used. For the TC hooks, this is the netns of the device
2193 * this in the netns of the socket. If *netns* is non-zero, then 2193 * in the skb. For socket hooks, this is the netns of the socket.
2194 * it specifies the ID of the netns relative to the netns 2194 * If *netns* is any other signed 32-bit value greater than or
2195 * associated with the *ctx*. 2195 * equal to zero then it specifies the ID of the netns relative to
2196 * the netns associated with the *ctx*. *netns* values beyond the
2197 * range of 32-bit integers are reserved for future use.
2196 * 2198 *
2197 * All values for *flags* are reserved for future usage, and must 2199 * All values for *flags* are reserved for future usage, and must
2198 * be left at zero. 2200 * be left at zero.
@@ -2201,8 +2203,10 @@ union bpf_attr {
2201 * **CONFIG_NET** configuration option. 2203 * **CONFIG_NET** configuration option.
2202 * Return 2204 * Return
2203 * Pointer to *struct bpf_sock*, or NULL in case of failure. 2205 * Pointer to *struct bpf_sock*, or NULL in case of failure.
2206 * For sockets with reuseport option, the *struct bpf_sock*
2207 * result is from reuse->socks[] using the hash of the tuple.
2204 * 2208 *
2205 * struct bpf_sock *bpf_sk_lookup_udp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u32 netns, u64 flags) 2209 * struct bpf_sock *bpf_sk_lookup_udp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u64 netns, u64 flags)
2206 * Description 2210 * Description
2207 * Look for UDP socket matching *tuple*, optionally in a child 2211 * Look for UDP socket matching *tuple*, optionally in a child
2208 * network namespace *netns*. The return value must be checked, 2212 * network namespace *netns*. The return value must be checked,
@@ -2219,12 +2223,14 @@ union bpf_attr {
2219 * **sizeof**\ (*tuple*\ **->ipv6**) 2223 * **sizeof**\ (*tuple*\ **->ipv6**)
2220 * Look for an IPv6 socket. 2224 * Look for an IPv6 socket.
2221 * 2225 *
2222 * If the *netns* is zero, then the socket lookup table in the 2226 * If the *netns* is a negative signed 32-bit integer, then the
2223 * netns associated with the *ctx* will be used. For the TC hooks, 2227 * socket lookup table in the netns associated with the *ctx* will
2224 * this in the netns of the device in the skb. For socket hooks, 2228 * will be used. For the TC hooks, this is the netns of the device
2225 * this in the netns of the socket. If *netns* is non-zero, then 2229 * in the skb. For socket hooks, this is the netns of the socket.
2226 * it specifies the ID of the netns relative to the netns 2230 * If *netns* is any other signed 32-bit value greater than or
2227 * associated with the *ctx*. 2231 * equal to zero then it specifies the ID of the netns relative to
2232 * the netns associated with the *ctx*. *netns* values beyond the
2233 * range of 32-bit integers are reserved for future use.
2228 * 2234 *
2229 * All values for *flags* are reserved for future usage, and must 2235 * All values for *flags* are reserved for future usage, and must
2230 * be left at zero. 2236 * be left at zero.
@@ -2233,6 +2239,8 @@ union bpf_attr {
2233 * **CONFIG_NET** configuration option. 2239 * **CONFIG_NET** configuration option.
2234 * Return 2240 * Return
2235 * Pointer to *struct bpf_sock*, or NULL in case of failure. 2241 * Pointer to *struct bpf_sock*, or NULL in case of failure.
2242 * For sockets with reuseport option, the *struct bpf_sock*
2243 * result is from reuse->socks[] using the hash of the tuple.
2236 * 2244 *
2237 * int bpf_sk_release(struct bpf_sock *sk) 2245 * int bpf_sk_release(struct bpf_sock *sk)
2238 * Description 2246 * Description
@@ -2405,6 +2413,9 @@ enum bpf_func_id {
2405/* BPF_FUNC_perf_event_output for sk_buff input context. */ 2413/* BPF_FUNC_perf_event_output for sk_buff input context. */
2406#define BPF_F_CTXLEN_MASK (0xfffffULL << 32) 2414#define BPF_F_CTXLEN_MASK (0xfffffULL << 32)
2407 2415
2416/* Current network namespace */
2417#define BPF_F_CURRENT_NETNS (-1L)
2418
2408/* Mode for BPF_FUNC_skb_adjust_room helper. */ 2419/* Mode for BPF_FUNC_skb_adjust_room helper. */
2409enum bpf_adj_room_mode { 2420enum bpf_adj_room_mode {
2410 BPF_ADJ_ROOM_NET, 2421 BPF_ADJ_ROOM_NET,
@@ -2422,6 +2433,12 @@ enum bpf_lwt_encap_mode {
2422 BPF_LWT_ENCAP_SEG6_INLINE 2433 BPF_LWT_ENCAP_SEG6_INLINE
2423}; 2434};
2424 2435
2436#define __bpf_md_ptr(type, name) \
2437union { \
2438 type name; \
2439 __u64 :64; \
2440} __attribute__((aligned(8)))
2441
2425/* user accessible mirror of in-kernel sk_buff. 2442/* user accessible mirror of in-kernel sk_buff.
2426 * new fields can only be added to the end of this structure 2443 * new fields can only be added to the end of this structure
2427 */ 2444 */
@@ -2456,7 +2473,7 @@ struct __sk_buff {
2456 /* ... here. */ 2473 /* ... here. */
2457 2474
2458 __u32 data_meta; 2475 __u32 data_meta;
2459 struct bpf_flow_keys *flow_keys; 2476 __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
2460}; 2477};
2461 2478
2462struct bpf_tunnel_key { 2479struct bpf_tunnel_key {
@@ -2572,8 +2589,8 @@ enum sk_action {
2572 * be added to the end of this structure 2589 * be added to the end of this structure
2573 */ 2590 */
2574struct sk_msg_md { 2591struct sk_msg_md {
2575 void *data; 2592 __bpf_md_ptr(void *, data);
2576 void *data_end; 2593 __bpf_md_ptr(void *, data_end);
2577 2594
2578 __u32 family; 2595 __u32 family;
2579 __u32 remote_ip4; /* Stored in network byte order */ 2596 __u32 remote_ip4; /* Stored in network byte order */
@@ -2589,8 +2606,9 @@ struct sk_reuseport_md {
2589 * Start of directly accessible data. It begins from 2606 * Start of directly accessible data. It begins from
2590 * the tcp/udp header. 2607 * the tcp/udp header.
2591 */ 2608 */
2592 void *data; 2609 __bpf_md_ptr(void *, data);
2593 void *data_end; /* End of directly accessible data */ 2610 /* End of directly accessible data */
2611 __bpf_md_ptr(void *, data_end);
2594 /* 2612 /*
2595 * Total length of packet (starting from the tcp/udp header). 2613 * Total length of packet (starting from the tcp/udp header).
2596 * Note that the directly accessible bytes (data_end - data) 2614 * Note that the directly accessible bytes (data_end - data)
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index ae366b87426a..7f14d4a66c28 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -716,6 +716,8 @@
716 * the situation described above. 716 * the situation described above.
717 */ 717 */
718#define REL_RESERVED 0x0a 718#define REL_RESERVED 0x0a
719#define REL_WHEEL_HI_RES 0x0b
720#define REL_HWHEEL_HI_RES 0x0c
719#define REL_MAX 0x0f 721#define REL_MAX 0x0f
720#define REL_CNT (REL_MAX+1) 722#define REL_CNT (REL_MAX+1)
721 723
diff --git a/include/uapi/linux/keyctl.h b/include/uapi/linux/keyctl.h
index 0f3cb13db8e9..f45ee0f69c0c 100644
--- a/include/uapi/linux/keyctl.h
+++ b/include/uapi/linux/keyctl.h
@@ -61,6 +61,11 @@
61#define KEYCTL_INVALIDATE 21 /* invalidate a key */ 61#define KEYCTL_INVALIDATE 21 /* invalidate a key */
62#define KEYCTL_GET_PERSISTENT 22 /* get a user's persistent keyring */ 62#define KEYCTL_GET_PERSISTENT 22 /* get a user's persistent keyring */
63#define KEYCTL_DH_COMPUTE 23 /* Compute Diffie-Hellman values */ 63#define KEYCTL_DH_COMPUTE 23 /* Compute Diffie-Hellman values */
64#define KEYCTL_PKEY_QUERY 24 /* Query public key parameters */
65#define KEYCTL_PKEY_ENCRYPT 25 /* Encrypt a blob using a public key */
66#define KEYCTL_PKEY_DECRYPT 26 /* Decrypt a blob using a public key */
67#define KEYCTL_PKEY_SIGN 27 /* Create a public key signature */
68#define KEYCTL_PKEY_VERIFY 28 /* Verify a public key signature */
64#define KEYCTL_RESTRICT_KEYRING 29 /* Restrict keys allowed to link to a keyring */ 69#define KEYCTL_RESTRICT_KEYRING 29 /* Restrict keys allowed to link to a keyring */
65 70
66/* keyctl structures */ 71/* keyctl structures */
@@ -82,4 +87,29 @@ struct keyctl_kdf_params {
82 __u32 __spare[8]; 87 __u32 __spare[8];
83}; 88};
84 89
90#define KEYCTL_SUPPORTS_ENCRYPT 0x01
91#define KEYCTL_SUPPORTS_DECRYPT 0x02
92#define KEYCTL_SUPPORTS_SIGN 0x04
93#define KEYCTL_SUPPORTS_VERIFY 0x08
94
95struct keyctl_pkey_query {
96 __u32 supported_ops; /* Which ops are supported */
97 __u32 key_size; /* Size of the key in bits */
98 __u16 max_data_size; /* Maximum size of raw data to sign in bytes */
99 __u16 max_sig_size; /* Maximum size of signature in bytes */
100 __u16 max_enc_size; /* Maximum size of encrypted blob in bytes */
101 __u16 max_dec_size; /* Maximum size of decrypted blob in bytes */
102 __u32 __spare[10];
103};
104
105struct keyctl_pkey_params {
106 __s32 key_id; /* Serial no. of public key to use */
107 __u32 in_len; /* Input data size */
108 union {
109 __u32 out_len; /* Output buffer size (encrypt/decrypt/sign) */
110 __u32 in2_len; /* 2nd input data size (verify) */
111 };
112 __u32 __spare[7];
113};
114
85#endif /* _LINUX_KEYCTL_H */ 115#endif /* _LINUX_KEYCTL_H */
diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h
index f5ff8a76e208..b01eb502d49c 100644
--- a/include/uapi/linux/kfd_ioctl.h
+++ b/include/uapi/linux/kfd_ioctl.h
@@ -83,11 +83,11 @@ struct kfd_ioctl_set_cu_mask_args {
83}; 83};
84 84
85struct kfd_ioctl_get_queue_wave_state_args { 85struct kfd_ioctl_get_queue_wave_state_args {
86 uint64_t ctl_stack_address; /* to KFD */ 86 __u64 ctl_stack_address; /* to KFD */
87 uint32_t ctl_stack_used_size; /* from KFD */ 87 __u32 ctl_stack_used_size; /* from KFD */
88 uint32_t save_area_used_size; /* from KFD */ 88 __u32 save_area_used_size; /* from KFD */
89 uint32_t queue_id; /* to KFD */ 89 __u32 queue_id; /* to KFD */
90 uint32_t pad; 90 __u32 pad;
91}; 91};
92 92
93/* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */ 93/* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */
@@ -255,10 +255,10 @@ struct kfd_hsa_memory_exception_data {
255 255
256/* hw exception data */ 256/* hw exception data */
257struct kfd_hsa_hw_exception_data { 257struct kfd_hsa_hw_exception_data {
258 uint32_t reset_type; 258 __u32 reset_type;
259 uint32_t reset_cause; 259 __u32 reset_cause;
260 uint32_t memory_lost; 260 __u32 memory_lost;
261 uint32_t gpu_id; 261 __u32 gpu_id;
262}; 262};
263 263
264/* Event data */ 264/* Event data */
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index 579974b0bf0d..7de4f1bdaf06 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -1635,8 +1635,8 @@ enum nft_ng_attributes {
1635 NFTA_NG_MODULUS, 1635 NFTA_NG_MODULUS,
1636 NFTA_NG_TYPE, 1636 NFTA_NG_TYPE,
1637 NFTA_NG_OFFSET, 1637 NFTA_NG_OFFSET,
1638 NFTA_NG_SET_NAME, 1638 NFTA_NG_SET_NAME, /* deprecated */
1639 NFTA_NG_SET_ID, 1639 NFTA_NG_SET_ID, /* deprecated */
1640 __NFTA_NG_MAX 1640 __NFTA_NG_MAX
1641}; 1641};
1642#define NFTA_NG_MAX (__NFTA_NG_MAX - 1) 1642#define NFTA_NG_MAX (__NFTA_NG_MAX - 1)
diff --git a/include/uapi/linux/netfilter_bridge.h b/include/uapi/linux/netfilter_bridge.h
index 156ccd089df1..1610fdbab98d 100644
--- a/include/uapi/linux/netfilter_bridge.h
+++ b/include/uapi/linux/netfilter_bridge.h
@@ -11,6 +11,10 @@
11#include <linux/if_vlan.h> 11#include <linux/if_vlan.h>
12#include <linux/if_pppox.h> 12#include <linux/if_pppox.h>
13 13
14#ifndef __KERNEL__
15#include <limits.h> /* for INT_MIN, INT_MAX */
16#endif
17
14/* Bridge Hooks */ 18/* Bridge Hooks */
15/* After promisc drops, checksum checks. */ 19/* After promisc drops, checksum checks. */
16#define NF_BR_PRE_ROUTING 0 20#define NF_BR_PRE_ROUTING 0
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index f35eb72739c0..9de8780ac8d9 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -646,10 +646,12 @@ struct perf_event_mmap_page {
646 * 646 *
647 * PERF_RECORD_MISC_MMAP_DATA - PERF_RECORD_MMAP* events 647 * PERF_RECORD_MISC_MMAP_DATA - PERF_RECORD_MMAP* events
648 * PERF_RECORD_MISC_COMM_EXEC - PERF_RECORD_COMM event 648 * PERF_RECORD_MISC_COMM_EXEC - PERF_RECORD_COMM event
649 * PERF_RECORD_MISC_FORK_EXEC - PERF_RECORD_FORK event (perf internal)
649 * PERF_RECORD_MISC_SWITCH_OUT - PERF_RECORD_SWITCH* events 650 * PERF_RECORD_MISC_SWITCH_OUT - PERF_RECORD_SWITCH* events
650 */ 651 */
651#define PERF_RECORD_MISC_MMAP_DATA (1 << 13) 652#define PERF_RECORD_MISC_MMAP_DATA (1 << 13)
652#define PERF_RECORD_MISC_COMM_EXEC (1 << 13) 653#define PERF_RECORD_MISC_COMM_EXEC (1 << 13)
654#define PERF_RECORD_MISC_FORK_EXEC (1 << 13)
653#define PERF_RECORD_MISC_SWITCH_OUT (1 << 13) 655#define PERF_RECORD_MISC_SWITCH_OUT (1 << 13)
654/* 656/*
655 * These PERF_RECORD_MISC_* flags below are safely reused 657 * These PERF_RECORD_MISC_* flags below are safely reused
diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h
index c0d7ea0bf5b6..b17201edfa09 100644
--- a/include/uapi/linux/prctl.h
+++ b/include/uapi/linux/prctl.h
@@ -212,6 +212,7 @@ struct prctl_mm_map {
212#define PR_SET_SPECULATION_CTRL 53 212#define PR_SET_SPECULATION_CTRL 53
213/* Speculation control variants */ 213/* Speculation control variants */
214# define PR_SPEC_STORE_BYPASS 0 214# define PR_SPEC_STORE_BYPASS 0
215# define PR_SPEC_INDIRECT_BRANCH 1
215/* Return and control values for PR_SET/GET_SPECULATION_CTRL */ 216/* Return and control values for PR_SET/GET_SPECULATION_CTRL */
216# define PR_SPEC_NOT_AFFECTED 0 217# define PR_SPEC_NOT_AFFECTED 0
217# define PR_SPEC_PRCTL (1UL << 0) 218# define PR_SPEC_PRCTL (1UL << 0)
diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h
index 34dd3d497f2c..c81feb373d3e 100644
--- a/include/uapi/linux/sctp.h
+++ b/include/uapi/linux/sctp.h
@@ -568,6 +568,8 @@ struct sctp_assoc_reset_event {
568 568
569#define SCTP_ASSOC_CHANGE_DENIED 0x0004 569#define SCTP_ASSOC_CHANGE_DENIED 0x0004
570#define SCTP_ASSOC_CHANGE_FAILED 0x0008 570#define SCTP_ASSOC_CHANGE_FAILED 0x0008
571#define SCTP_STREAM_CHANGE_DENIED SCTP_ASSOC_CHANGE_DENIED
572#define SCTP_STREAM_CHANGE_FAILED SCTP_ASSOC_CHANGE_FAILED
571struct sctp_stream_change_event { 573struct sctp_stream_change_event {
572 __u16 strchange_type; 574 __u16 strchange_type;
573 __u16 strchange_flags; 575 __u16 strchange_flags;
@@ -1151,6 +1153,7 @@ struct sctp_add_streams {
1151/* SCTP Stream schedulers */ 1153/* SCTP Stream schedulers */
1152enum sctp_sched_type { 1154enum sctp_sched_type {
1153 SCTP_SS_FCFS, 1155 SCTP_SS_FCFS,
1156 SCTP_SS_DEFAULT = SCTP_SS_FCFS,
1154 SCTP_SS_PRIO, 1157 SCTP_SS_PRIO,
1155 SCTP_SS_RR, 1158 SCTP_SS_RR,
1156 SCTP_SS_MAX = SCTP_SS_RR 1159 SCTP_SS_MAX = SCTP_SS_RR
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index 51b095898f4b..998983a6e6b7 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -50,6 +50,8 @@
50#ifndef __LINUX_V4L2_CONTROLS_H 50#ifndef __LINUX_V4L2_CONTROLS_H
51#define __LINUX_V4L2_CONTROLS_H 51#define __LINUX_V4L2_CONTROLS_H
52 52
53#include <linux/types.h>
54
53/* Control classes */ 55/* Control classes */
54#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ 56#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
55#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ 57#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
@@ -1110,6 +1112,7 @@ struct v4l2_mpeg2_sequence {
1110 __u8 profile_and_level_indication; 1112 __u8 profile_and_level_indication;
1111 __u8 progressive_sequence; 1113 __u8 progressive_sequence;
1112 __u8 chroma_format; 1114 __u8 chroma_format;
1115 __u8 pad;
1113}; 1116};
1114 1117
1115struct v4l2_mpeg2_picture { 1118struct v4l2_mpeg2_picture {
@@ -1128,6 +1131,7 @@ struct v4l2_mpeg2_picture {
1128 __u8 alternate_scan; 1131 __u8 alternate_scan;
1129 __u8 repeat_first_field; 1132 __u8 repeat_first_field;
1130 __u8 progressive_frame; 1133 __u8 progressive_frame;
1134 __u8 pad;
1131}; 1135};
1132 1136
1133struct v4l2_ctrl_mpeg2_slice_params { 1137struct v4l2_ctrl_mpeg2_slice_params {
@@ -1142,6 +1146,7 @@ struct v4l2_ctrl_mpeg2_slice_params {
1142 1146
1143 __u8 backward_ref_index; 1147 __u8 backward_ref_index;
1144 __u8 forward_ref_index; 1148 __u8 forward_ref_index;
1149 __u8 pad;
1145}; 1150};
1146 1151
1147struct v4l2_ctrl_mpeg2_quantization { 1152struct v4l2_ctrl_mpeg2_quantization {
diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h
index 13b8cb563892..a1966cd7b677 100644
--- a/include/uapi/linux/virtio_balloon.h
+++ b/include/uapi/linux/virtio_balloon.h
@@ -34,15 +34,23 @@
34#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */ 34#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
35#define VIRTIO_BALLOON_F_STATS_VQ 1 /* Memory Stats virtqueue */ 35#define VIRTIO_BALLOON_F_STATS_VQ 1 /* Memory Stats virtqueue */
36#define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* Deflate balloon on OOM */ 36#define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* Deflate balloon on OOM */
37#define VIRTIO_BALLOON_F_FREE_PAGE_HINT 3 /* VQ to report free pages */
38#define VIRTIO_BALLOON_F_PAGE_POISON 4 /* Guest is using page poisoning */
37 39
38/* Size of a PFN in the balloon interface. */ 40/* Size of a PFN in the balloon interface. */
39#define VIRTIO_BALLOON_PFN_SHIFT 12 41#define VIRTIO_BALLOON_PFN_SHIFT 12
40 42
43#define VIRTIO_BALLOON_CMD_ID_STOP 0
44#define VIRTIO_BALLOON_CMD_ID_DONE 1
41struct virtio_balloon_config { 45struct virtio_balloon_config {
42 /* Number of pages host wants Guest to give up. */ 46 /* Number of pages host wants Guest to give up. */
43 __u32 num_pages; 47 __u32 num_pages;
44 /* Number of pages we've actually got in balloon. */ 48 /* Number of pages we've actually got in balloon. */
45 __u32 actual; 49 __u32 actual;
50 /* Free page report command id, readonly by guest */
51 __u32 free_page_report_cmd_id;
52 /* Stores PAGE_POISON if page poisoning is in use */
53 __u32 poison_val;
46}; 54};
47 55
48#define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */ 56#define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */