aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2018-08-06 11:31:36 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2018-08-06 11:31:36 -0400
commitd2ce98ca0a192e1bcb89068adfe6cb736f5e351c (patch)
tree888ccaba7b3e09bf4b81324dff38a65f5667296c /include/uapi/linux
parent85eae57bbb0612387201635659be543aaac2109e (diff)
parentd72e90f33aa4709ebecc5005562f52335e106a60 (diff)
Merge tag 'v4.18-rc6' into HEAD
Pull bug fixes into the KVM development tree to avoid nasty conflicts.
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/aio_abi.h12
-rw-r--r--include/uapi/linux/bpf.h28
-rw-r--r--include/uapi/linux/ethtool.h2
-rw-r--r--include/uapi/linux/rseq.h102
-rw-r--r--include/uapi/linux/target_core_user.h4
-rw-r--r--include/uapi/linux/tcp.h4
-rw-r--r--include/uapi/linux/types_32_64.h50
7 files changed, 93 insertions, 109 deletions
diff --git a/include/uapi/linux/aio_abi.h b/include/uapi/linux/aio_abi.h
index d00221345c19..d4593a6062ef 100644
--- a/include/uapi/linux/aio_abi.h
+++ b/include/uapi/linux/aio_abi.h
@@ -29,7 +29,6 @@
29 29
30#include <linux/types.h> 30#include <linux/types.h>
31#include <linux/fs.h> 31#include <linux/fs.h>
32#include <linux/signal.h>
33#include <asm/byteorder.h> 32#include <asm/byteorder.h>
34 33
35typedef __kernel_ulong_t aio_context_t; 34typedef __kernel_ulong_t aio_context_t;
@@ -39,8 +38,10 @@ enum {
39 IOCB_CMD_PWRITE = 1, 38 IOCB_CMD_PWRITE = 1,
40 IOCB_CMD_FSYNC = 2, 39 IOCB_CMD_FSYNC = 2,
41 IOCB_CMD_FDSYNC = 3, 40 IOCB_CMD_FDSYNC = 3,
42 /* 4 was the experimental IOCB_CMD_PREADX */ 41 /* These two are experimental.
43 IOCB_CMD_POLL = 5, 42 * IOCB_CMD_PREADX = 4,
43 * IOCB_CMD_POLL = 5,
44 */
44 IOCB_CMD_NOOP = 6, 45 IOCB_CMD_NOOP = 6,
45 IOCB_CMD_PREADV = 7, 46 IOCB_CMD_PREADV = 7,
46 IOCB_CMD_PWRITEV = 8, 47 IOCB_CMD_PWRITEV = 8,
@@ -108,10 +109,5 @@ struct iocb {
108#undef IFBIG 109#undef IFBIG
109#undef IFLITTLE 110#undef IFLITTLE
110 111
111struct __aio_sigset {
112 const sigset_t __user *sigmask;
113 size_t sigsetsize;
114};
115
116#endif /* __LINUX__AIO_ABI_H */ 112#endif /* __LINUX__AIO_ABI_H */
117 113
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 59b19b6a40d7..b7db3261c62d 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -1857,7 +1857,8 @@ union bpf_attr {
1857 * is resolved), the nexthop address is returned in ipv4_dst 1857 * is resolved), the nexthop address is returned in ipv4_dst
1858 * or ipv6_dst based on family, smac is set to mac address of 1858 * or ipv6_dst based on family, smac is set to mac address of
1859 * egress device, dmac is set to nexthop mac address, rt_metric 1859 * egress device, dmac is set to nexthop mac address, rt_metric
1860 * is set to metric from route (IPv4/IPv6 only). 1860 * is set to metric from route (IPv4/IPv6 only), and ifindex
1861 * is set to the device index of the nexthop from the FIB lookup.
1861 * 1862 *
1862 * *plen* argument is the size of the passed in struct. 1863 * *plen* argument is the size of the passed in struct.
1863 * *flags* argument can be a combination of one or more of the 1864 * *flags* argument can be a combination of one or more of the
@@ -1873,9 +1874,10 @@ union bpf_attr {
1873 * *ctx* is either **struct xdp_md** for XDP programs or 1874 * *ctx* is either **struct xdp_md** for XDP programs or
1874 * **struct sk_buff** tc cls_act programs. 1875 * **struct sk_buff** tc cls_act programs.
1875 * Return 1876 * Return
1876 * Egress device index on success, 0 if packet needs to continue 1877 * * < 0 if any input argument is invalid
1877 * up the stack for further processing or a negative error in case 1878 * * 0 on success (packet is forwarded, nexthop neighbor exists)
1878 * of failure. 1879 * * > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the
1880 * * packet is not forwarded or needs assist from full stack
1879 * 1881 *
1880 * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags) 1882 * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags)
1881 * Description 1883 * Description
@@ -2612,6 +2614,18 @@ struct bpf_raw_tracepoint_args {
2612#define BPF_FIB_LOOKUP_DIRECT BIT(0) 2614#define BPF_FIB_LOOKUP_DIRECT BIT(0)
2613#define BPF_FIB_LOOKUP_OUTPUT BIT(1) 2615#define BPF_FIB_LOOKUP_OUTPUT BIT(1)
2614 2616
2617enum {
2618 BPF_FIB_LKUP_RET_SUCCESS, /* lookup successful */
2619 BPF_FIB_LKUP_RET_BLACKHOLE, /* dest is blackholed; can be dropped */
2620 BPF_FIB_LKUP_RET_UNREACHABLE, /* dest is unreachable; can be dropped */
2621 BPF_FIB_LKUP_RET_PROHIBIT, /* dest not allowed; can be dropped */
2622 BPF_FIB_LKUP_RET_NOT_FWDED, /* packet is not forwarded */
2623 BPF_FIB_LKUP_RET_FWD_DISABLED, /* fwding is not enabled on ingress */
2624 BPF_FIB_LKUP_RET_UNSUPP_LWT, /* fwd requires encapsulation */
2625 BPF_FIB_LKUP_RET_NO_NEIGH, /* no neighbor entry for nh */
2626 BPF_FIB_LKUP_RET_FRAG_NEEDED, /* fragmentation required to fwd */
2627};
2628
2615struct bpf_fib_lookup { 2629struct bpf_fib_lookup {
2616 /* input: network family for lookup (AF_INET, AF_INET6) 2630 /* input: network family for lookup (AF_INET, AF_INET6)
2617 * output: network family of egress nexthop 2631 * output: network family of egress nexthop
@@ -2625,7 +2639,11 @@ struct bpf_fib_lookup {
2625 2639
2626 /* total length of packet from network header - used for MTU check */ 2640 /* total length of packet from network header - used for MTU check */
2627 __u16 tot_len; 2641 __u16 tot_len;
2628 __u32 ifindex; /* L3 device index for lookup */ 2642
2643 /* input: L3 device index for lookup
2644 * output: device index from FIB lookup
2645 */
2646 __u32 ifindex;
2629 2647
2630 union { 2648 union {
2631 /* inputs to lookup */ 2649 /* inputs to lookup */
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index 4ca65b56084f..7363f18e65a5 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -226,7 +226,7 @@ enum tunable_id {
226 ETHTOOL_TX_COPYBREAK, 226 ETHTOOL_TX_COPYBREAK,
227 ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */ 227 ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
228 /* 228 /*
229 * Add your fresh new tubale attribute above and remember to update 229 * Add your fresh new tunable attribute above and remember to update
230 * tunable_strings[] in net/core/ethtool.c 230 * tunable_strings[] in net/core/ethtool.c
231 */ 231 */
232 __ETHTOOL_TUNABLE_COUNT, 232 __ETHTOOL_TUNABLE_COUNT,
diff --git a/include/uapi/linux/rseq.h b/include/uapi/linux/rseq.h
index d620fa43756c..9a402fdb60e9 100644
--- a/include/uapi/linux/rseq.h
+++ b/include/uapi/linux/rseq.h
@@ -10,13 +10,8 @@
10 * Copyright (c) 2015-2018 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> 10 * Copyright (c) 2015-2018 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 */ 11 */
12 12
13#ifdef __KERNEL__ 13#include <linux/types.h>
14# include <linux/types.h> 14#include <asm/byteorder.h>
15#else
16# include <stdint.h>
17#endif
18
19#include <linux/types_32_64.h>
20 15
21enum rseq_cpu_id_state { 16enum rseq_cpu_id_state {
22 RSEQ_CPU_ID_UNINITIALIZED = -1, 17 RSEQ_CPU_ID_UNINITIALIZED = -1,
@@ -52,10 +47,10 @@ struct rseq_cs {
52 __u32 version; 47 __u32 version;
53 /* enum rseq_cs_flags */ 48 /* enum rseq_cs_flags */
54 __u32 flags; 49 __u32 flags;
55 LINUX_FIELD_u32_u64(start_ip); 50 __u64 start_ip;
56 /* Offset from start_ip. */ 51 /* Offset from start_ip. */
57 LINUX_FIELD_u32_u64(post_commit_offset); 52 __u64 post_commit_offset;
58 LINUX_FIELD_u32_u64(abort_ip); 53 __u64 abort_ip;
59} __attribute__((aligned(4 * sizeof(__u64)))); 54} __attribute__((aligned(4 * sizeof(__u64))));
60 55
61/* 56/*
@@ -67,28 +62,30 @@ struct rseq_cs {
67struct rseq { 62struct rseq {
68 /* 63 /*
69 * Restartable sequences cpu_id_start field. Updated by the 64 * Restartable sequences cpu_id_start field. Updated by the
70 * kernel, and read by user-space with single-copy atomicity 65 * kernel. Read by user-space with single-copy atomicity
71 * semantics. Aligned on 32-bit. Always contains a value in the 66 * semantics. This field should only be read by the thread which
72 * range of possible CPUs, although the value may not be the 67 * registered this data structure. Aligned on 32-bit. Always
73 * actual current CPU (e.g. if rseq is not initialized). This 68 * contains a value in the range of possible CPUs, although the
74 * CPU number value should always be compared against the value 69 * value may not be the actual current CPU (e.g. if rseq is not
75 * of the cpu_id field before performing a rseq commit or 70 * initialized). This CPU number value should always be compared
76 * returning a value read from a data structure indexed using 71 * against the value of the cpu_id field before performing a rseq
77 * the cpu_id_start value. 72 * commit or returning a value read from a data structure indexed
73 * using the cpu_id_start value.
78 */ 74 */
79 __u32 cpu_id_start; 75 __u32 cpu_id_start;
80 /* 76 /*
81 * Restartable sequences cpu_id field. Updated by the kernel, 77 * Restartable sequences cpu_id field. Updated by the kernel.
82 * and read by user-space with single-copy atomicity semantics. 78 * Read by user-space with single-copy atomicity semantics. This
83 * Aligned on 32-bit. Values RSEQ_CPU_ID_UNINITIALIZED and 79 * field should only be read by the thread which registered this
84 * RSEQ_CPU_ID_REGISTRATION_FAILED have a special semantic: the 80 * data structure. Aligned on 32-bit. Values
85 * former means "rseq uninitialized", and latter means "rseq 81 * RSEQ_CPU_ID_UNINITIALIZED and RSEQ_CPU_ID_REGISTRATION_FAILED
86 * initialization failed". This value is meant to be read within 82 * have a special semantic: the former means "rseq uninitialized",
87 * rseq critical sections and compared with the cpu_id_start 83 * and latter means "rseq initialization failed". This value is
88 * value previously read, before performing the commit instruction, 84 * meant to be read within rseq critical sections and compared
89 * or read and compared with the cpu_id_start value before returning 85 * with the cpu_id_start value previously read, before performing
90 * a value loaded from a data structure indexed using the 86 * the commit instruction, or read and compared with the
91 * cpu_id_start value. 87 * cpu_id_start value before returning a value loaded from a data
88 * structure indexed using the cpu_id_start value.
92 */ 89 */
93 __u32 cpu_id; 90 __u32 cpu_id;
94 /* 91 /*
@@ -105,27 +102,44 @@ struct rseq {
105 * targeted by the rseq_cs. Also needs to be set to NULL by user-space 102 * targeted by the rseq_cs. Also needs to be set to NULL by user-space
106 * before reclaiming memory that contains the targeted struct rseq_cs. 103 * before reclaiming memory that contains the targeted struct rseq_cs.
107 * 104 *
108 * Read and set by the kernel with single-copy atomicity semantics. 105 * Read and set by the kernel. Set by user-space with single-copy
109 * Set by user-space with single-copy atomicity semantics. Aligned 106 * atomicity semantics. This field should only be updated by the
110 * on 64-bit. 107 * thread which registered this data structure. Aligned on 64-bit.
111 */ 108 */
112 LINUX_FIELD_u32_u64(rseq_cs); 109 union {
110 __u64 ptr64;
111#ifdef __LP64__
112 __u64 ptr;
113#else
114 struct {
115#if (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN)) || defined(__BIG_ENDIAN)
116 __u32 padding; /* Initialized to zero. */
117 __u32 ptr32;
118#else /* LITTLE */
119 __u32 ptr32;
120 __u32 padding; /* Initialized to zero. */
121#endif /* ENDIAN */
122 } ptr;
123#endif
124 } rseq_cs;
125
113 /* 126 /*
114 * - RSEQ_DISABLE flag: 127 * Restartable sequences flags field.
128 *
129 * This field should only be updated by the thread which
130 * registered this data structure. Read by the kernel.
131 * Mainly used for single-stepping through rseq critical sections
132 * with debuggers.
115 * 133 *
116 * Fallback fast-track flag for single-stepping.
117 * Set by user-space if lack of progress is detected.
118 * Cleared by user-space after rseq finish.
119 * Read by the kernel.
120 * - RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT 134 * - RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT
121 * Inhibit instruction sequence block restart and event 135 * Inhibit instruction sequence block restart on preemption
122 * counter increment on preemption for this thread. 136 * for this thread.
123 * - RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL 137 * - RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL
124 * Inhibit instruction sequence block restart and event 138 * Inhibit instruction sequence block restart on signal
125 * counter increment on signal delivery for this thread. 139 * delivery for this thread.
126 * - RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE 140 * - RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE
127 * Inhibit instruction sequence block restart and event 141 * Inhibit instruction sequence block restart on migration for
128 * counter increment on migration for this thread. 142 * this thread.
129 */ 143 */
130 __u32 flags; 144 __u32 flags;
131} __attribute__((aligned(4 * sizeof(__u64)))); 145} __attribute__((aligned(4 * sizeof(__u64))));
diff --git a/include/uapi/linux/target_core_user.h b/include/uapi/linux/target_core_user.h
index 6e299349b158..b7b57967d90f 100644
--- a/include/uapi/linux/target_core_user.h
+++ b/include/uapi/linux/target_core_user.h
@@ -44,6 +44,7 @@
44#define TCMU_MAILBOX_VERSION 2 44#define TCMU_MAILBOX_VERSION 2
45#define ALIGN_SIZE 64 /* Should be enough for most CPUs */ 45#define ALIGN_SIZE 64 /* Should be enough for most CPUs */
46#define TCMU_MAILBOX_FLAG_CAP_OOOC (1 << 0) /* Out-of-order completions */ 46#define TCMU_MAILBOX_FLAG_CAP_OOOC (1 << 0) /* Out-of-order completions */
47#define TCMU_MAILBOX_FLAG_CAP_READ_LEN (1 << 1) /* Read data length */
47 48
48struct tcmu_mailbox { 49struct tcmu_mailbox {
49 __u16 version; 50 __u16 version;
@@ -71,6 +72,7 @@ struct tcmu_cmd_entry_hdr {
71 __u16 cmd_id; 72 __u16 cmd_id;
72 __u8 kflags; 73 __u8 kflags;
73#define TCMU_UFLAG_UNKNOWN_OP 0x1 74#define TCMU_UFLAG_UNKNOWN_OP 0x1
75#define TCMU_UFLAG_READ_LEN 0x2
74 __u8 uflags; 76 __u8 uflags;
75 77
76} __packed; 78} __packed;
@@ -119,7 +121,7 @@ struct tcmu_cmd_entry {
119 __u8 scsi_status; 121 __u8 scsi_status;
120 __u8 __pad1; 122 __u8 __pad1;
121 __u16 __pad2; 123 __u16 __pad2;
122 __u32 __pad3; 124 __u32 read_len;
123 char sense_buffer[TCMU_SENSE_BUFFERSIZE]; 125 char sense_buffer[TCMU_SENSE_BUFFERSIZE];
124 } rsp; 126 } rsp;
125 }; 127 };
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
index 29eb659aa77a..e3f6ed8a7064 100644
--- a/include/uapi/linux/tcp.h
+++ b/include/uapi/linux/tcp.h
@@ -127,6 +127,10 @@ enum {
127 127
128#define TCP_CM_INQ TCP_INQ 128#define TCP_CM_INQ TCP_INQ
129 129
130#define TCP_REPAIR_ON 1
131#define TCP_REPAIR_OFF 0
132#define TCP_REPAIR_OFF_NO_WP -1 /* Turn off without window probes */
133
130struct tcp_repair_opt { 134struct tcp_repair_opt {
131 __u32 opt_code; 135 __u32 opt_code;
132 __u32 opt_val; 136 __u32 opt_val;
diff --git a/include/uapi/linux/types_32_64.h b/include/uapi/linux/types_32_64.h
deleted file mode 100644
index 0a87ace34a57..000000000000
--- a/include/uapi/linux/types_32_64.h
+++ /dev/null
@@ -1,50 +0,0 @@
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2#ifndef _UAPI_LINUX_TYPES_32_64_H
3#define _UAPI_LINUX_TYPES_32_64_H
4
5/*
6 * linux/types_32_64.h
7 *
8 * Integer type declaration for pointers across 32-bit and 64-bit systems.
9 *
10 * Copyright (c) 2015-2018 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 */
12
13#ifdef __KERNEL__
14# include <linux/types.h>
15#else
16# include <stdint.h>
17#endif
18
19#include <asm/byteorder.h>
20
21#ifdef __BYTE_ORDER
22# if (__BYTE_ORDER == __BIG_ENDIAN)
23# define LINUX_BYTE_ORDER_BIG_ENDIAN
24# else
25# define LINUX_BYTE_ORDER_LITTLE_ENDIAN
26# endif
27#else
28# ifdef __BIG_ENDIAN
29# define LINUX_BYTE_ORDER_BIG_ENDIAN
30# else
31# define LINUX_BYTE_ORDER_LITTLE_ENDIAN
32# endif
33#endif
34
35#ifdef __LP64__
36# define LINUX_FIELD_u32_u64(field) __u64 field
37# define LINUX_FIELD_u32_u64_INIT_ONSTACK(field, v) field = (intptr_t)v
38#else
39# ifdef LINUX_BYTE_ORDER_BIG_ENDIAN
40# define LINUX_FIELD_u32_u64(field) __u32 field ## _padding, field
41# define LINUX_FIELD_u32_u64_INIT_ONSTACK(field, v) \
42 field ## _padding = 0, field = (intptr_t)v
43# else
44# define LINUX_FIELD_u32_u64(field) __u32 field, field ## _padding
45# define LINUX_FIELD_u32_u64_INIT_ONSTACK(field, v) \
46 field = (intptr_t)v, field ## _padding = 0
47# endif
48#endif
49
50#endif /* _UAPI_LINUX_TYPES_32_64_H */