Prepare input updates for 5.6 merge window.
Showing the changes to include/uapi/linux (78 of 11657 files). Show all
Unified · Split
| @@ -143,6 +143,7 @@ · 142 unmodified lines | ||
| 143 | 143 | #define AUDIT_ANOM_PROMISCUOUS 1700 /* Device changed promiscuous mode */ |
| 144 | 144 | #define AUDIT_ANOM_ABEND 1701 /* Process ended abnormally */ |
| 145 | 145 | #define AUDIT_ANOM_LINK 1702 /* Suspicious use of file links */ |
| 146 | +#define AUDIT_ANOM_CREAT 1703 /* Suspicious file creation */ | |
| 146 | 147 | #define AUDIT_INTEGRITY_DATA 1800 /* Data integrity verification */ |
| 147 | 148 | #define AUDIT_INTEGRITY_METADATA 1801 /* Metadata integrity verification */ |
| 148 | 149 | #define AUDIT_INTEGRITY_STATUS 1802 /* Integrity enable status */ |
| @@ -120,9 +120,11 @@ struct blk_zone_report { · 119 unmodified lines | ||
| 120 | 120 | }; |
| 121 | 121 | |
| 122 | 122 | /** |
| 123 | − * struct blk_zone_range - BLKRESETZONE ioctl request | |
| 124 | − * @sector: starting sector of the first zone to issue reset write pointer | |
| 125 | − * @nr_sectors: Total number of sectors of 1 or more zones to reset | |
| 123 | + * struct blk_zone_range - BLKRESETZONE/BLKOPENZONE/ | |
| 124 | + * BLKCLOSEZONE/BLKFINISHZONE ioctl | |
| 125 | + * requests | |
| 126 | + * @sector: Starting sector of the first zone to operate on. | |
| 127 | + * @nr_sectors: Total number of sectors of all zones to operate on. | |
| 126 | 128 | */ |
| 127 | 129 | struct blk_zone_range { |
| 128 | 130 | __u64 sector; |
| @@ -139,10 +141,19 @@ struct blk_zone_range { · 10 unmodified lines | ||
| 139 | 141 | * sector range. The sector range must be zone aligned. |
| 140 | 142 | * @BLKGETZONESZ: Get the device zone size in number of 512 B sectors. |
| 141 | 143 | * @BLKGETNRZONES: Get the total number of zones of the device. |
| 144 | + * @BLKOPENZONE: Open the zones in the specified sector range. | |
| 145 | + * The 512 B sector range must be zone aligned. | |
| 146 | + * @BLKCLOSEZONE: Close the zones in the specified sector range. | |
| 147 | + * The 512 B sector range must be zone aligned. | |
| 148 | + * @BLKFINISHZONE: Mark the zones as full in the specified sector range. | |
| 149 | + * The 512 B sector range must be zone aligned. | |
| 142 | 150 | */ |
| 143 | 151 | #define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report) |
| 144 | 152 | #define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range) |
| 145 | 153 | #define BLKGETZONESZ _IOR(0x12, 132, __u32) |
| 146 | 154 | #define BLKGETNRZONES _IOR(0x12, 133, __u32) |
| 155 | +#define BLKOPENZONE _IOW(0x12, 134, struct blk_zone_range) | |
| 156 | +#define BLKCLOSEZONE _IOW(0x12, 135, struct blk_zone_range) | |
| 157 | +#define BLKFINISHZONE _IOW(0x12, 136, struct blk_zone_range) | |
| 147 | 158 | |
| 148 | 159 | #endif /* _UAPI_BLKZONED_H */ |
| @@ -173,6 +173,7 @@ enum bpf_prog_type { · 172 unmodified lines | ||
| 173 | 173 | BPF_PROG_TYPE_CGROUP_SYSCTL, |
| 174 | 174 | BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE, |
| 175 | 175 | BPF_PROG_TYPE_CGROUP_SOCKOPT, |
| 176 | + BPF_PROG_TYPE_TRACING, | |
| 176 | 177 | }; |
| 177 | 178 | |
| 178 | 179 | enum bpf_attach_type { |
| @@ -199,6 +200,9 @@ enum bpf_attach_type { · 20 unmodified lines | ||
| 199 | 200 | BPF_CGROUP_UDP6_RECVMSG, |
| 200 | 201 | BPF_CGROUP_GETSOCKOPT, |
| 201 | 202 | BPF_CGROUP_SETSOCKOPT, |
| 203 | + BPF_TRACE_RAW_TP, | |
| 204 | + BPF_TRACE_FENTRY, | |
| 205 | + BPF_TRACE_FEXIT, | |
| 202 | 206 | __MAX_BPF_ATTACH_TYPE |
| 203 | 207 | }; |
| 204 | 208 | |
| @@ -344,6 +348,9 @@ enum bpf_attach_type { · 139 unmodified lines | ||
| 344 | 348 | /* Clone map from listener for newly accepted socket */ |
| 345 | 349 | #define BPF_F_CLONE (1U << 9) |
| 346 | 350 | |
| 351 | +/* Enable memory-mapping BPF map */ | |
| 352 | +#define BPF_F_MMAPABLE (1U << 10) | |
| 353 | + | |
| 347 | 354 | /* flags for BPF_PROG_QUERY */ |
| 348 | 355 | #define BPF_F_QUERY_EFFECTIVE (1U << 0) |
| 349 | 356 | |
| @@ -420,6 +427,8 @@ union bpf_attr { · 70 unmodified lines | ||
| 420 | 427 | __u32 line_info_rec_size; /* userspace bpf_line_info size */ |
| 421 | 428 | __aligned_u64 line_info; /* line info */ |
| 422 | 429 | __u32 line_info_cnt; /* number of bpf_line_info records */ |
| 430 | + __u32 attach_btf_id; /* in-kernel BTF type id to attach to */ | |
| 431 | + __u32 attach_prog_fd; /* 0 to attach to vmlinux */ | |
| 423 | 432 | }; |
| 424 | 433 | |
| 425 | 434 | struct { /* anonymous struct used by BPF_OBJ_* commands */ |
| @@ -560,10 +569,13 @@ union bpf_attr { · 134 unmodified lines | ||
| 560 | 569 | * Return |
| 561 | 570 | * 0 on success, or a negative error in case of failure. |
| 562 | 571 | * |
| 563 | − * int bpf_probe_read(void *dst, u32 size, const void *src) | |
| 572 | + * int bpf_probe_read(void *dst, u32 size, const void *unsafe_ptr) | |
| 564 | 573 | * Description |
| 565 | 574 | * For tracing programs, safely attempt to read *size* bytes from |
| 566 | − * address *src* and store the data in *dst*. | |
| 575 | + * kernel space address *unsafe_ptr* and store the data in *dst*. | |
| 576 | + * | |
| 577 | + * Generally, use bpf_probe_read_user() or bpf_probe_read_kernel() | |
| 578 | + * instead. | |
| 567 | 579 | * Return |
| 568 | 580 | * 0 on success, or a negative error in case of failure. |
| 569 | 581 | * |
| @@ -794,7 +806,7 @@ union bpf_attr { · 224 unmodified lines | ||
| 794 | 806 | * A 64-bit integer containing the current GID and UID, and |
| 795 | 807 | * created as such: *current_gid* **<< 32 \|** *current_uid*. |
| 796 | 808 | * |
| 797 | − * int bpf_get_current_comm(char *buf, u32 size_of_buf) | |
| 809 | + * int bpf_get_current_comm(void *buf, u32 size_of_buf) | |
| 798 | 810 | * Description |
| 799 | 811 | * Copy the **comm** attribute of the current task into *buf* of |
| 800 | 812 | * *size_of_buf*. The **comm** attribute contains the name of |
| @@ -1023,7 +1035,7 @@ union bpf_attr { · 222 unmodified lines | ||
| 1023 | 1035 | * The realm of the route for the packet associated to *skb*, or 0 |
| 1024 | 1036 | * if none was found. |
| 1025 | 1037 | * |
| 1026 | − * int bpf_perf_event_output(struct pt_regs *ctx, struct bpf_map *map, u64 flags, void *data, u64 size) | |
| 1038 | + * int bpf_perf_event_output(void *ctx, struct bpf_map *map, u64 flags, void *data, u64 size) | |
| 1027 | 1039 | * Description |
| 1028 | 1040 | * Write raw *data* blob into a special BPF perf event held by |
| 1029 | 1041 | * *map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf |
| @@ -1068,7 +1080,7 @@ union bpf_attr { · 38 unmodified lines | ||
| 1068 | 1080 | * Return |
| 1069 | 1081 | * 0 on success, or a negative error in case of failure. |
| 1070 | 1082 | * |
| 1071 | − * int bpf_skb_load_bytes(const struct sk_buff *skb, u32 offset, void *to, u32 len) | |
| 1083 | + * int bpf_skb_load_bytes(const void *skb, u32 offset, void *to, u32 len) | |
| 1072 | 1084 | * Description |
| 1073 | 1085 | * This helper was provided as an easy way to load data from a |
| 1074 | 1086 | * packet. It can be used to load *len* bytes from *offset* from |
| @@ -1085,7 +1097,7 @@ union bpf_attr { · 10 unmodified lines | ||
| 1085 | 1097 | * Return |
| 1086 | 1098 | * 0 on success, or a negative error in case of failure. |
| 1087 | 1099 | * |
| 1088 | − * int bpf_get_stackid(struct pt_regs *ctx, struct bpf_map *map, u64 flags) | |
| 1100 | + * int bpf_get_stackid(void *ctx, struct bpf_map *map, u64 flags) | |
| 1089 | 1101 | * Description |
| 1090 | 1102 | * Walk a user or a kernel stack and return its id. To achieve |
| 1091 | 1103 | * this, the helper needs *ctx*, which is a pointer to the context |
| @@ -1154,7 +1166,7 @@ union bpf_attr { · 62 unmodified lines | ||
| 1154 | 1166 | * The checksum result, or a negative error code in case of |
| 1155 | 1167 | * failure. |
| 1156 | 1168 | * |
| 1157 | − * int bpf_skb_get_tunnel_opt(struct sk_buff *skb, u8 *opt, u32 size) | |
| 1169 | + * int bpf_skb_get_tunnel_opt(struct sk_buff *skb, void *opt, u32 size) | |
| 1158 | 1170 | * Description |
| 1159 | 1171 | * Retrieve tunnel options metadata for the packet associated to |
| 1160 | 1172 | * *skb*, and store the raw tunnel option data to the buffer *opt* |
| @@ -1172,7 +1184,7 @@ union bpf_attr { · 11 unmodified lines | ||
| 1172 | 1184 | * Return |
| 1173 | 1185 | * The size of the option data retrieved. |
| 1174 | 1186 | * |
| 1175 | − * int bpf_skb_set_tunnel_opt(struct sk_buff *skb, u8 *opt, u32 size) | |
| 1187 | + * int bpf_skb_set_tunnel_opt(struct sk_buff *skb, void *opt, u32 size) | |
| 1176 | 1188 | * Description |
| 1177 | 1189 | * Set tunnel options metadata for the packet associated to *skb* |
| 1178 | 1190 | * to the option data contained in the raw buffer *opt* of *size*. |
| @@ -1425,45 +1437,14 @@ union bpf_attr { · 246 unmodified lines | ||
| 1425 | 1437 | * Return |
| 1426 | 1438 | * 0 on success, or a negative error in case of failure. |
| 1427 | 1439 | * |
| 1428 | − * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr) | |
| 1440 | + * int bpf_probe_read_str(void *dst, u32 size, const void *unsafe_ptr) | |
| 1429 | 1441 | * Description |
| 1430 | − * Copy a NUL terminated string from an unsafe address | |
| 1431 | − * *unsafe_ptr* to *dst*. The *size* should include the | |
| 1432 | − * terminating NUL byte. In case the string length is smaller than | |
| 1433 | − * *size*, the target is not padded with further NUL bytes. If the | |
| 1434 | − * string length is larger than *size*, just *size*-1 bytes are | |
| 1435 | − * copied and the last byte is set to NUL. | |
| 1436 | − * | |
| 1437 | − * On success, the length of the copied string is returned. This | |
| 1438 | − * makes this helper useful in tracing programs for reading | |
| 1439 | − * strings, and more importantly to get its length at runtime. See | |
| 1440 | − * the following snippet: | |
| 1441 | − * | |
| 1442 | − * :: | |
| 1443 | − * | |
| 1444 | − * SEC("kprobe/sys_open") | |
| 1445 | − * void bpf_sys_open(struct pt_regs *ctx) | |
| 1446 | − * { | |
| 1447 | − * char buf[PATHLEN]; // PATHLEN is defined to 256 | |
| 1448 | − * int res = bpf_probe_read_str(buf, sizeof(buf), | |
| 1449 | − * ctx->di); | |
| 1450 | − * | |
| 1451 | − * // Consume buf, for example push it to | |
| 1452 | − * // userspace via bpf_perf_event_output(); we | |
| 1453 | − * // can use res (the string length) as event | |
| 1454 | − * // size, after checking its boundaries. | |
| 1455 | − * } | |
| 1442 | + * Copy a NUL terminated string from an unsafe kernel address | |
| 1443 | + * *unsafe_ptr* to *dst*. See bpf_probe_read_kernel_str() for | |
| 1444 | + * more details. | |
| 1456 | 1445 | * |
| 1457 | − * In comparison, using **bpf_probe_read()** helper here instead | |
| 1458 | − * to read the string would require to estimate the length at | |
| 1459 | − * compile time, and would often result in copying more memory | |
| 1460 | − * than necessary. | |
| 1461 | − * | |
| 1462 | − * Another useful use case is when parsing individual process | |
| 1463 | − * arguments or individual environment variables navigating | |
| 1464 | − * *current*\ **->mm->arg_start** and *current*\ | |
| 1465 | − * **->mm->env_start**: using this helper and the return value, | |
| 1466 | − * one can quickly iterate at the right offset of the memory area. | |
| 1446 | + * Generally, use bpf_probe_read_user_str() or bpf_probe_read_kernel_str() | |
| 1447 | + * instead. | |
| 1467 | 1448 | * Return |
| 1468 | 1449 | * On success, the strictly positive length of the string, |
| 1469 | 1450 | * including the trailing NUL character. On error, a negative |
| @@ -1511,7 +1492,7 @@ union bpf_attr { · 41 unmodified lines | ||
| 1511 | 1492 | * Return |
| 1512 | 1493 | * 0 |
| 1513 | 1494 | * |
| 1514 | − * int bpf_setsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, char *optval, int optlen) | |
| 1495 | + * int bpf_setsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, void *optval, int optlen) | |
| 1515 | 1496 | * Description |
| 1516 | 1497 | * Emulate a call to **setsockopt()** on the socket associated to |
| 1517 | 1498 | * *bpf_socket*, which must be a full socket. The *level* at |
| @@ -1595,7 +1576,7 @@ union bpf_attr { · 77 unmodified lines | ||
| 1595 | 1576 | * Return |
| 1596 | 1577 | * **XDP_REDIRECT** on success, or **XDP_ABORTED** on error. |
| 1597 | 1578 | * |
| 1598 | − * int bpf_sk_redirect_map(struct bpf_map *map, u32 key, u64 flags) | |
| 1579 | + * int bpf_sk_redirect_map(struct sk_buff *skb, struct bpf_map *map, u32 key, u64 flags) | |
| 1599 | 1580 | * Description |
| 1600 | 1581 | * Redirect the packet to the socket referenced by *map* (of type |
| 1601 | 1582 | * **BPF_MAP_TYPE_SOCKMAP**) at index *key*. Both ingress and |
| @@ -1715,7 +1696,7 @@ union bpf_attr { · 113 unmodified lines | ||
| 1715 | 1696 | * Return |
| 1716 | 1697 | * 0 on success, or a negative error in case of failure. |
| 1717 | 1698 | * |
| 1718 | − * int bpf_getsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, char *optval, int optlen) | |
| 1699 | + * int bpf_getsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, void *optval, int optlen) | |
| 1719 | 1700 | * Description |
| 1720 | 1701 | * Emulate a call to **getsockopt()** on the socket associated to |
| 1721 | 1702 | * *bpf_socket*, which must be a full socket. The *level* at |
| @@ -1947,7 +1928,7 @@ union bpf_attr { · 225 unmodified lines | ||
| 1947 | 1928 | * Return |
| 1948 | 1929 | * 0 on success, or a negative error in case of failure. |
| 1949 | 1930 | * |
| 1950 | − * int bpf_get_stack(struct pt_regs *regs, void *buf, u32 size, u64 flags) | |
| 1931 | + * int bpf_get_stack(void *ctx, void *buf, u32 size, u64 flags) | |
| 1951 | 1932 | * Description |
| 1952 | 1933 | * Return a user or a kernel stack in bpf program provided buffer. |
| 1953 | 1934 | * To achieve this, the helper needs *ctx*, which is a pointer |
| @@ -1980,7 +1961,7 @@ union bpf_attr { · 26 unmodified lines | ||
| 1980 | 1961 | * A non-negative value equal to or less than *size* on success, |
| 1981 | 1962 | * or a negative error in case of failure. |
| 1982 | 1963 | * |
| 1983 | − * int bpf_skb_load_bytes_relative(const struct sk_buff *skb, u32 offset, void *to, u32 len, u32 start_header) | |
| 1964 | + * int bpf_skb_load_bytes_relative(const void *skb, u32 offset, void *to, u32 len, u32 start_header) | |
| 1984 | 1965 | * Description |
| 1985 | 1966 | * This helper is similar to **bpf_skb_load_bytes**\ () in that |
| 1986 | 1967 | * it provides an easy way to load *len* bytes from *offset* |
| @@ -2033,7 +2014,7 @@ union bpf_attr { · 46 unmodified lines | ||
| 2033 | 2014 | * * > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the |
| 2034 | 2015 | * packet is not forwarded or needs assist from full stack |
| 2035 | 2016 | * |
| 2036 | − * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags) | |
| 2017 | + * int bpf_sock_hash_update(struct bpf_sock_ops *skops, struct bpf_map *map, void *key, u64 flags) | |
| 2037 | 2018 | * Description |
| 2038 | 2019 | * Add an entry to, or update a sockhash *map* referencing sockets. |
| 2039 | 2020 | * The *skops* is used as a new value for the entry associated to |
| @@ -2392,7 +2373,7 @@ union bpf_attr { · 352 unmodified lines | ||
| 2392 | 2373 | * Return |
| 2393 | 2374 | * 0 on success, or a negative error in case of failure. |
| 2394 | 2375 | * |
| 2395 | − * int bpf_msg_push_data(struct sk_buff *skb, u32 start, u32 len, u64 flags) | |
| 2376 | + * int bpf_msg_push_data(struct sk_msg_buff *msg, u32 start, u32 len, u64 flags) | |
| 2396 | 2377 | * Description |
| 2397 | 2378 | * For socket policies, insert *len* bytes into *msg* at offset |
| 2398 | 2379 | * *start*. |
| @@ -2408,9 +2389,9 @@ union bpf_attr { · 9 unmodified lines | ||
| 2408 | 2389 | * Return |
| 2409 | 2390 | * 0 on success, or a negative error in case of failure. |
| 2410 | 2391 | * |
| 2411 | − * int bpf_msg_pop_data(struct sk_msg_buff *msg, u32 start, u32 pop, u64 flags) | |
| 2392 | + * int bpf_msg_pop_data(struct sk_msg_buff *msg, u32 start, u32 len, u64 flags) | |
| 2412 | 2393 | * Description |
| 2413 | − * Will remove *pop* bytes from a *msg* starting at byte *start*. | |
| 2394 | + * Will remove *len* bytes from a *msg* starting at byte *start*. | |
| 2414 | 2395 | * This may result in **ENOMEM** errors under certain situations if |
| 2415 | 2396 | * an allocation and copy are required due to a full ring buffer. |
| 2416 | 2397 | * However, the helper will try to avoid doing the allocation |
| @@ -2505,7 +2486,7 @@ union bpf_attr { · 88 unmodified lines | ||
| 2505 | 2486 | * A **struct bpf_tcp_sock** pointer on success, or **NULL** in |
| 2506 | 2487 | * case of failure. |
| 2507 | 2488 | * |
| 2508 | − * int bpf_skb_ecn_set_ce(struct sk_buf *skb) | |
| 2489 | + * int bpf_skb_ecn_set_ce(struct sk_buff *skb) | |
| 2509 | 2490 | * Description |
| 2510 | 2491 | * Set ECN (Explicit Congestion Notification) field of IP header |
| 2511 | 2492 | * to **CE** (Congestion Encountered) if current value is **ECT** |
| @@ -2750,6 +2731,96 @@ union bpf_attr { · 238 unmodified lines | ||
| 2750 | 2731 | * **-EOPNOTSUPP** kernel configuration does not enable SYN cookies |
| 2751 | 2732 | * |
| 2752 | 2733 | * **-EPROTONOSUPPORT** IP packet version is not 4 or 6 |
| 2734 | + * | |
| 2735 | + * int bpf_skb_output(void *ctx, struct bpf_map *map, u64 flags, void *data, u64 size) | |
| 2736 | + * Description | |
| 2737 | + * Write raw *data* blob into a special BPF perf event held by | |
| 2738 | + * *map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf | |
| 2739 | + * event must have the following attributes: **PERF_SAMPLE_RAW** | |
| 2740 | + * as **sample_type**, **PERF_TYPE_SOFTWARE** as **type**, and | |
| 2741 | + * **PERF_COUNT_SW_BPF_OUTPUT** as **config**. | |
| 2742 | + * | |
| 2743 | + * The *flags* are used to indicate the index in *map* for which | |
| 2744 | + * the value must be put, masked with **BPF_F_INDEX_MASK**. | |
| 2745 | + * Alternatively, *flags* can be set to **BPF_F_CURRENT_CPU** | |
| 2746 | + * to indicate that the index of the current CPU core should be | |
| 2747 | + * used. | |
| 2748 | + * | |
| 2749 | + * The value to write, of *size*, is passed through eBPF stack and | |
| 2750 | + * pointed by *data*. | |
| 2751 | + * | |
| 2752 | + * *ctx* is a pointer to in-kernel struct sk_buff. | |
| 2753 | + * | |
| 2754 | + * This helper is similar to **bpf_perf_event_output**\ () but | |
| 2755 | + * restricted to raw_tracepoint bpf programs. | |
| 2756 | + * Return | |
| 2757 | + * 0 on success, or a negative error in case of failure. | |
| 2758 | + * | |
| 2759 | + * int bpf_probe_read_user(void *dst, u32 size, const void *unsafe_ptr) | |
| 2760 | + * Description | |
| 2761 | + * Safely attempt to read *size* bytes from user space address | |
| 2762 | + * *unsafe_ptr* and store the data in *dst*. | |
| 2763 | + * Return | |
| 2764 | + * 0 on success, or a negative error in case of failure. | |
| 2765 | + * | |
| 2766 | + * int bpf_probe_read_kernel(void *dst, u32 size, const void *unsafe_ptr) | |
| 2767 | + * Description | |
| 2768 | + * Safely attempt to read *size* bytes from kernel space address | |
| 2769 | + * *unsafe_ptr* and store the data in *dst*. | |
| 2770 | + * Return | |
| 2771 | + * 0 on success, or a negative error in case of failure. | |
| 2772 | + * | |
| 2773 | + * int bpf_probe_read_user_str(void *dst, u32 size, const void *unsafe_ptr) | |
| 2774 | + * Description | |
| 2775 | + * Copy a NUL terminated string from an unsafe user address | |
| 2776 | + * *unsafe_ptr* to *dst*. The *size* should include the | |
| 2777 | + * terminating NUL byte. In case the string length is smaller than | |
| 2778 | + * *size*, the target is not padded with further NUL bytes. If the | |
| 2779 | + * string length is larger than *size*, just *size*-1 bytes are | |
| 2780 | + * copied and the last byte is set to NUL. | |
| 2781 | + * | |
| 2782 | + * On success, the length of the copied string is returned. This | |
| 2783 | + * makes this helper useful in tracing programs for reading | |
| 2784 | + * strings, and more importantly to get its length at runtime. See | |
| 2785 | + * the following snippet: | |
| 2786 | + * | |
| 2787 | + * :: | |
| 2788 | + * | |
| 2789 | + * SEC("kprobe/sys_open") | |
| 2790 | + * void bpf_sys_open(struct pt_regs *ctx) | |
| 2791 | + * { | |
| 2792 | + * char buf[PATHLEN]; // PATHLEN is defined to 256 | |
| 2793 | + * int res = bpf_probe_read_user_str(buf, sizeof(buf), | |
| 2794 | + * ctx->di); | |
| 2795 | + * | |
| 2796 | + * // Consume buf, for example push it to | |
| 2797 | + * // userspace via bpf_perf_event_output(); we | |
| 2798 | + * // can use res (the string length) as event | |
| 2799 | + * // size, after checking its boundaries. | |
| 2800 | + * } | |
| 2801 | + * | |
| 2802 | + * In comparison, using **bpf_probe_read_user()** helper here | |
| 2803 | + * instead to read the string would require to estimate the length | |
| 2804 | + * at compile time, and would often result in copying more memory | |
| 2805 | + * than necessary. | |
| 2806 | + * | |
| 2807 | + * Another useful use case is when parsing individual process | |
| 2808 | + * arguments or individual environment variables navigating | |
| 2809 | + * *current*\ **->mm->arg_start** and *current*\ | |
| 2810 | + * **->mm->env_start**: using this helper and the return value, | |
| 2811 | + * one can quickly iterate at the right offset of the memory area. | |
| 2812 | + * Return | |
| 2813 | + * On success, the strictly positive length of the string, | |
| 2814 | + * including the trailing NUL character. On error, a negative | |
| 2815 | + * value. | |
| 2816 | + * | |
| 2817 | + * int bpf_probe_read_kernel_str(void *dst, u32 size, const void *unsafe_ptr) | |
| 2818 | + * Description | |
| 2819 | + * Copy a NUL terminated string from an unsafe kernel address *unsafe_ptr* | |
| 2820 | + * to *dst*. Same semantics as with bpf_probe_read_user_str() apply. | |
| 2821 | + * Return | |
| 2822 | + * On success, the strictly positive length of the string, including | |
| 2823 | + * the trailing NUL character. On error, a negative value. | |
| 2753 | 2824 | */ |
| 2754 | 2825 | #define __BPF_FUNC_MAPPER(FN) \ |
| 2755 | 2826 | FN(unspec), \ |
| @@ -2862,7 +2933,12 @@ union bpf_attr { · 106 unmodified lines | ||
| 2862 | 2933 | FN(sk_storage_get), \ |
| 2863 | 2934 | FN(sk_storage_delete), \ |
| 2864 | 2935 | FN(send_signal), \ |
| 2865 | − FN(tcp_gen_syncookie), | |
| 2936 | + FN(tcp_gen_syncookie), \ | |
| 2937 | + FN(skb_output), \ | |
| 2938 | + FN(probe_read_user), \ | |
| 2939 | + FN(probe_read_kernel), \ | |
| 2940 | + FN(probe_read_user_str), \ | |
| 2941 | + FN(probe_read_kernel_str), | |
| 2866 | 2942 | |
| 2867 | 2943 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper |
| 2868 | 2944 | * function eBPF program intends to call |
| @@ -270,6 +270,7 @@ struct btrfs_ioctl_fs_info_args { · 269 unmodified lines | ||
| 270 | 270 | #define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8) |
| 271 | 271 | #define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9) |
| 272 | 272 | #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10) |
| 273 | +#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11) | |
| 273 | 274 | |
| 274 | 275 | struct btrfs_ioctl_feature_flags { |
| 275 | 276 | __u64 compat_flags; |
| @@ -831,7 +832,9 @@ enum btrfs_err_code { · 555 unmodified lines | ||
| 831 | 832 | BTRFS_ERROR_DEV_TGT_REPLACE, |
| 832 | 833 | BTRFS_ERROR_DEV_MISSING_NOT_FOUND, |
| 833 | 834 | BTRFS_ERROR_DEV_ONLY_WRITABLE, |
| 834 | − BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS | |
| 835 | + BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS, | |
| 836 | + BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET, | |
| 837 | + BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET, | |
| 835 | 838 | }; |
| 836 | 839 | |
| 837 | 840 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ |
| @@ -302,6 +302,9 @@ · 301 unmodified lines | ||
| 302 | 302 | /* csum types */ |
| 303 | 303 | enum btrfs_csum_type { |
| 304 | 304 | BTRFS_CSUM_TYPE_CRC32 = 0, |
| 305 | + BTRFS_CSUM_TYPE_XXHASH = 1, | |
| 306 | + BTRFS_CSUM_TYPE_SHA256 = 2, | |
| 307 | + BTRFS_CSUM_TYPE_BLAKE2 = 3, | |
| 305 | 308 | }; |
| 306 | 309 | |
| 307 | 310 | /* |
| @@ -737,10 +740,12 @@ struct btrfs_balance_item { · 429 unmodified lines | ||
| 737 | 740 | __le64 unused[4]; |
| 738 | 741 | } __attribute__ ((__packed__)); |
| 739 | 742 | |
| 740 | −#define BTRFS_FILE_EXTENT_INLINE 0 | |
| 741 | −#define BTRFS_FILE_EXTENT_REG 1 | |
| 742 | −#define BTRFS_FILE_EXTENT_PREALLOC 2 | |
| 743 | −#define BTRFS_FILE_EXTENT_TYPES 2 | |
| 743 | +enum { | |
| 744 | + BTRFS_FILE_EXTENT_INLINE = 0, | |
| 745 | + BTRFS_FILE_EXTENT_REG = 1, | |
| 746 | + BTRFS_FILE_EXTENT_PREALLOC = 2, | |
| 747 | + BTRFS_NR_FILE_EXTENT_TYPES = 3, | |
| 748 | +}; | |
| 744 | 749 | |
| 745 | 750 | struct btrfs_file_extent_item { |
| 746 | 751 | /* |
| @@ -836,6 +841,8 @@ struct btrfs_dev_replace_item { · 89 unmodified lines | ||
| 836 | 841 | #define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6) |
| 837 | 842 | #define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7) |
| 838 | 843 | #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8) |
| 844 | +#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9) | |
| 845 | +#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10) | |
| 839 | 846 | #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \ |
| 840 | 847 | BTRFS_SPACE_INFO_GLOBAL_RSV) |
| 841 | 848 | |
| @@ -847,6 +854,8 @@ enum btrfs_raid_types { · 5 unmodified lines | ||
| 847 | 854 | BTRFS_RAID_SINGLE, |
| 848 | 855 | BTRFS_RAID_RAID5, |
| 849 | 856 | BTRFS_RAID_RAID6, |
| 857 | + BTRFS_RAID_RAID1C3, | |
| 858 | + BTRFS_RAID_RAID1C4, | |
| 850 | 859 | BTRFS_NR_RAID_TYPES |
| 851 | 860 | }; |
| 852 | 861 | |
| @@ -856,6 +865,8 @@ enum btrfs_raid_types { · 3 unmodified lines | ||
| 856 | 865 | |
| 857 | 866 | #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \ |
| 858 | 867 | BTRFS_BLOCK_GROUP_RAID1 | \ |
| 868 | + BTRFS_BLOCK_GROUP_RAID1C3 | \ | |
| 869 | + BTRFS_BLOCK_GROUP_RAID1C4 | \ | |
| 859 | 870 | BTRFS_BLOCK_GROUP_RAID5 | \ |
| 860 | 871 | BTRFS_BLOCK_GROUP_RAID6 | \ |
| 861 | 872 | BTRFS_BLOCK_GROUP_DUP | \ |
| @@ -863,7 +874,9 @@ enum btrfs_raid_types { · 1 unmodified line | ||
| 863 | 874 | #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | \ |
| 864 | 875 | BTRFS_BLOCK_GROUP_RAID6) |
| 865 | 876 | |
| 866 | −#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1) | |
| 877 | +#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1 | \ | |
| 878 | + BTRFS_BLOCK_GROUP_RAID1C3 | \ | |
| 879 | + BTRFS_BLOCK_GROUP_RAID1C4) | |
| 867 | 880 | |
| 868 | 881 | /* |
| 869 | 882 | * We need a bit for restriper to be able to tell when chunks of type |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | 2 | /* |
| 3 | 3 | * linux/can.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | 2 | /* |
| 3 | 3 | * linux/can/bcm.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | 2 | /* |
| 3 | 3 | * linux/can/error.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | 2 | /* |
| 3 | 3 | * linux/can/gw.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ | |
| 2 | 2 | /* |
| 3 | 3 | * j1939.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ | |
| 2 | 2 | /* |
| 3 | 3 | * linux/can/netlink.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | 2 | /* |
| 3 | 3 | * linux/can/raw.h |
| 4 | 4 | * |
| @@ -1,4 +1,4 @@ | ||
| 1 | −/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ | |
| 2 | 2 | #ifndef _UAPI_CAN_VXCAN_H |
| 3 | 3 | #define _UAPI_CAN_VXCAN_H |
| 4 | 4 | |
| @@ -923,7 +923,8 @@ static inline void cec_msg_give_deck_status(struct cec_msg *msg, · 922 unmodified lines | ||
| 923 | 923 | msg->len = 3; |
| 924 | 924 | msg->msg[1] = CEC_MSG_GIVE_DECK_STATUS; |
| 925 | 925 | msg->msg[2] = status_req; |
| 926 | − msg->reply = reply ? CEC_MSG_DECK_STATUS : 0; | |
| 926 | + msg->reply = (reply && status_req != CEC_OP_STATUS_REQ_OFF) ? | |
| 927 | + CEC_MSG_DECK_STATUS : 0; | |
| 927 | 928 | } |
| 928 | 929 | |
| 929 | 930 | static inline void cec_ops_give_deck_status(const struct cec_msg *msg, |
| @@ -1027,7 +1028,8 @@ static inline void cec_msg_give_tuner_device_status(struct cec_msg *msg, · 97 unmodified lines | ||
| 1027 | 1028 | msg->len = 3; |
| 1028 | 1029 | msg->msg[1] = CEC_MSG_GIVE_TUNER_DEVICE_STATUS; |
| 1029 | 1030 | msg->msg[2] = status_req; |
| 1030 | − msg->reply = reply ? CEC_MSG_TUNER_DEVICE_STATUS : 0; | |
| 1031 | + msg->reply = (reply && status_req != CEC_OP_STATUS_REQ_OFF) ? | |
| 1032 | + CEC_MSG_TUNER_DEVICE_STATUS : 0; | |
| 1031 | 1033 | } |
| 1032 | 1034 | |
| 1033 | 1035 | static inline void cec_ops_give_tuner_device_status(const struct cec_msg *msg, |
| @@ -1302,17 +1304,17 @@ static inline void cec_msg_user_control_pressed(struct cec_msg *msg, · 268 unmodified lines | ||
| 1302 | 1304 | if (!ui_cmd->has_opt_arg) |
| 1303 | 1305 | return; |
| 1304 | 1306 | switch (ui_cmd->ui_cmd) { |
| 1305 | − case 0x56: | |
| 1306 | − case 0x57: | |
| 1307 | − case 0x60: | |
| 1308 | − case 0x68: | |
| 1309 | − case 0x69: | |
| 1310 | − case 0x6a: | |
| 1307 | + case CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE: | |
| 1308 | + case CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION: | |
| 1309 | + case CEC_OP_UI_CMD_PLAY_FUNCTION: | |
| 1310 | + case CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION: | |
| 1311 | + case CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION: | |
| 1312 | + case CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION: | |
| 1311 | 1313 | /* The optional operand is one byte for all these ui commands */ |
| 1312 | 1314 | msg->len++; |
| 1313 | 1315 | msg->msg[3] = ui_cmd->play_mode; |
| 1314 | 1316 | break; |
| 1315 | − case 0x67: | |
| 1317 | + case CEC_OP_UI_CMD_TUNE_FUNCTION: | |
| 1316 | 1318 | msg->len += 4; |
| 1317 | 1319 | msg->msg[3] = (ui_cmd->channel_identifier.channel_number_fmt << 2) | |
| 1318 | 1320 | (ui_cmd->channel_identifier.major >> 8); |
| @@ -1331,17 +1333,17 @@ static inline void cec_ops_user_control_pressed(const struct cec_msg *msg, · 12 unmodified lines | ||
| 1331 | 1333 | if (msg->len == 3) |
| 1332 | 1334 | return; |
| 1333 | 1335 | switch (ui_cmd->ui_cmd) { |
| 1334 | − case 0x56: | |
| 1335 | − case 0x57: | |
| 1336 | − case 0x60: | |
| 1337 | − case 0x68: | |
| 1338 | − case 0x69: | |
| 1339 | − case 0x6a: | |
| 1336 | + case CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE: | |
| 1337 | + case CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION: | |
| 1338 | + case CEC_OP_UI_CMD_PLAY_FUNCTION: | |
| 1339 | + case CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION: | |
| 1340 | + case CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION: | |
| 1341 | + case CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION: | |
| 1340 | 1342 | /* The optional operand is one byte for all these ui commands */ |
| 1341 | 1343 | ui_cmd->play_mode = msg->msg[3]; |
| 1342 | 1344 | ui_cmd->has_opt_arg = 1; |
| 1343 | 1345 | break; |
| 1344 | − case 0x67: | |
| 1346 | + case CEC_OP_UI_CMD_TUNE_FUNCTION: | |
| 1345 | 1347 | if (msg->len < 7) |
| 1346 | 1348 | break; |
| 1347 | 1349 | ui_cmd->has_opt_arg = 1; |
| @@ -317,6 +317,8 @@ static inline int cec_is_unconfigured(__u16 log_addr_mask) · 316 unmodified lines | ||
| 317 | 317 | #define CEC_CAP_NEEDS_HPD (1 << 6) |
| 318 | 318 | /* Hardware can monitor CEC pin transitions */ |
| 319 | 319 | #define CEC_CAP_MONITOR_PIN (1 << 7) |
| 320 | +/* CEC_ADAP_G_CONNECTOR_INFO is available */ | |
| 321 | +#define CEC_CAP_CONNECTOR_INFO (1 << 8) | |
| 320 | 322 | |
| 321 | 323 | /** |
| 322 | 324 | * struct cec_caps - CEC capabilities structure. |
| @@ -375,6 +377,34 @@ struct cec_log_addrs { · 52 unmodified lines | ||
| 375 | 377 | /* CDC-Only device: supports only CDC messages */ |
| 376 | 378 | #define CEC_LOG_ADDRS_FL_CDC_ONLY (1 << 2) |
| 377 | 379 | |
| 380 | +/** | |
| 381 | + * struct cec_drm_connector_info - tells which drm connector is | |
| 382 | + * associated with the CEC adapter. | |
| 383 | + * @card_no: drm card number | |
| 384 | + * @connector_id: drm connector ID | |
| 385 | + */ | |
| 386 | +struct cec_drm_connector_info { | |
| 387 | + __u32 card_no; | |
| 388 | + __u32 connector_id; | |
| 389 | +}; | |
| 390 | + | |
| 391 | +#define CEC_CONNECTOR_TYPE_NO_CONNECTOR 0 | |
| 392 | +#define CEC_CONNECTOR_TYPE_DRM 1 | |
| 393 | + | |
| 394 | +/** | |
| 395 | + * struct cec_connector_info - tells if and which connector is | |
| 396 | + * associated with the CEC adapter. | |
| 397 | + * @type: connector type (if any) | |
| 398 | + * @drm: drm connector info | |
| 399 | + */ | |
| 400 | +struct cec_connector_info { | |
| 401 | + __u32 type; | |
| 402 | + union { | |
| 403 | + struct cec_drm_connector_info drm; | |
| 404 | + __u32 raw[16]; | |
| 405 | + }; | |
| 406 | +}; | |
| 407 | + | |
| 378 | 408 | /* Events */ |
| 379 | 409 | |
| 380 | 410 | /* Event that occurs when the adapter state changes */ |
| @@ -398,10 +428,17 @@ struct cec_log_addrs { · 17 unmodified lines | ||
| 398 | 428 | * struct cec_event_state_change - used when the CEC adapter changes state. |
| 399 | 429 | * @phys_addr: the current physical address |
| 400 | 430 | * @log_addr_mask: the current logical address mask |
| 431 | + * @have_conn_info: if non-zero, then HDMI connector information is available. | |
| 432 | + * This field is only valid if CEC_CAP_CONNECTOR_INFO is set. If that | |
| 433 | + * capability is set and @have_conn_info is zero, then that indicates | |
| 434 | + * that the HDMI connector device is not instantiated, either because | |
| 435 | + * the HDMI driver is still configuring the device or because the HDMI | |
| 436 | + * device was unbound. | |
| 401 | 437 | */ |
| 402 | 438 | struct cec_event_state_change { |
| 403 | 439 | __u16 phys_addr; |
| 404 | 440 | __u16 log_addr_mask; |
| 441 | + __u16 have_conn_info; | |
| 405 | 442 | }; |
| 406 | 443 | |
| 407 | 444 | /** |
| @@ -476,6 +513,9 @@ struct cec_event { · 68 unmodified lines | ||
| 476 | 513 | #define CEC_G_MODE _IOR('a', 8, __u32) |
| 477 | 514 | #define CEC_S_MODE _IOW('a', 9, __u32) |
| 478 | 515 | |
| 516 | +/* Get the connector info */ | |
| 517 | +#define CEC_ADAP_G_CONNECTOR_INFO _IOR('a', 10, struct cec_connector_info) | |
| 518 | + | |
| 479 | 519 | /* |
| 480 | 520 | * The remainder of this header defines all CEC messages and operands. |
| 481 | 521 | * The format matters since it the cec-ctl utility parses it to generate |
| @@ -768,8 +808,8 @@ struct cec_event { · 286 unmodified lines | ||
| 768 | 808 | #define CEC_MSG_SELECT_DIGITAL_SERVICE 0x93 |
| 769 | 809 | #define CEC_MSG_TUNER_DEVICE_STATUS 0x07 |
| 770 | 810 | /* Recording Flag Operand (rec_flag) */ |
| 771 | −#define CEC_OP_REC_FLAG_USED 0 | |
| 772 | −#define CEC_OP_REC_FLAG_NOT_USED 1 | |
| 811 | +#define CEC_OP_REC_FLAG_NOT_USED 0 | |
| 812 | +#define CEC_OP_REC_FLAG_USED 1 | |
| 773 | 813 | /* Tuner Display Info Operand (tuner_display_info) */ |
| 774 | 814 | #define CEC_OP_TUNER_DISPLAY_INFO_DIGITAL 0 |
| 775 | 815 | #define CEC_OP_TUNER_DISPLAY_INFO_NONE 1 |
| @@ -820,6 +860,95 @@ struct cec_event { · 44 unmodified lines | ||
| 820 | 860 | #define CEC_OP_MENU_STATE_DEACTIVATED 0x01 |
| 821 | 861 | |
| 822 | 862 | #define CEC_MSG_USER_CONTROL_PRESSED 0x44 |
| 863 | +/* UI Command Operand (ui_cmd) */ | |
| 864 | +#define CEC_OP_UI_CMD_SELECT 0x00 | |
| 865 | +#define CEC_OP_UI_CMD_UP 0x01 | |
| 866 | +#define CEC_OP_UI_CMD_DOWN 0x02 | |
| 867 | +#define CEC_OP_UI_CMD_LEFT 0x03 | |
| 868 | +#define CEC_OP_UI_CMD_RIGHT 0x04 | |
| 869 | +#define CEC_OP_UI_CMD_RIGHT_UP 0x05 | |
| 870 | +#define CEC_OP_UI_CMD_RIGHT_DOWN 0x06 | |
| 871 | +#define CEC_OP_UI_CMD_LEFT_UP 0x07 | |
| 872 | +#define CEC_OP_UI_CMD_LEFT_DOWN 0x08 | |
| 873 | +#define CEC_OP_UI_CMD_DEVICE_ROOT_MENU 0x09 | |
| 874 | +#define CEC_OP_UI_CMD_DEVICE_SETUP_MENU 0x0a | |
| 875 | +#define CEC_OP_UI_CMD_CONTENTS_MENU 0x0b | |
| 876 | +#define CEC_OP_UI_CMD_FAVORITE_MENU 0x0c | |
| 877 | +#define CEC_OP_UI_CMD_BACK 0x0d | |
| 878 | +#define CEC_OP_UI_CMD_MEDIA_TOP_MENU 0x10 | |
| 879 | +#define CEC_OP_UI_CMD_MEDIA_CONTEXT_SENSITIVE_MENU 0x11 | |
| 880 | +#define CEC_OP_UI_CMD_NUMBER_ENTRY_MODE 0x1d | |
| 881 | +#define CEC_OP_UI_CMD_NUMBER_11 0x1e | |
| 882 | +#define CEC_OP_UI_CMD_NUMBER_12 0x1f | |
| 883 | +#define CEC_OP_UI_CMD_NUMBER_0_OR_NUMBER_10 0x20 | |
| 884 | +#define CEC_OP_UI_CMD_NUMBER_1 0x21 | |
| 885 | +#define CEC_OP_UI_CMD_NUMBER_2 0x22 | |
| 886 | +#define CEC_OP_UI_CMD_NUMBER_3 0x23 | |
| 887 | +#define CEC_OP_UI_CMD_NUMBER_4 0x24 | |
| 888 | +#define CEC_OP_UI_CMD_NUMBER_5 0x25 | |
| 889 | +#define CEC_OP_UI_CMD_NUMBER_6 0x26 | |
| 890 | +#define CEC_OP_UI_CMD_NUMBER_7 0x27 | |
| 891 | +#define CEC_OP_UI_CMD_NUMBER_8 0x28 | |
| 892 | +#define CEC_OP_UI_CMD_NUMBER_9 0x29 | |
| 893 | +#define CEC_OP_UI_CMD_DOT 0x2a | |
| 894 | +#define CEC_OP_UI_CMD_ENTER 0x2b | |
| 895 | +#define CEC_OP_UI_CMD_CLEAR 0x2c | |
| 896 | +#define CEC_OP_UI_CMD_NEXT_FAVORITE 0x2f | |
| 897 | +#define CEC_OP_UI_CMD_CHANNEL_UP 0x30 | |
| 898 | +#define CEC_OP_UI_CMD_CHANNEL_DOWN 0x31 | |
| 899 | +#define CEC_OP_UI_CMD_PREVIOUS_CHANNEL 0x32 | |
| 900 | +#define CEC_OP_UI_CMD_SOUND_SELECT 0x33 | |
| 901 | +#define CEC_OP_UI_CMD_INPUT_SELECT 0x34 | |
| 902 | +#define CEC_OP_UI_CMD_DISPLAY_INFORMATION 0x35 | |
| 903 | +#define CEC_OP_UI_CMD_HELP 0x36 | |
| 904 | +#define CEC_OP_UI_CMD_PAGE_UP 0x37 | |
| 905 | +#define CEC_OP_UI_CMD_PAGE_DOWN 0x38 | |
| 906 | +#define CEC_OP_UI_CMD_POWER 0x40 | |
| 907 | +#define CEC_OP_UI_CMD_VOLUME_UP 0x41 | |
| 908 | +#define CEC_OP_UI_CMD_VOLUME_DOWN 0x42 | |
| 909 | +#define CEC_OP_UI_CMD_MUTE 0x43 | |
| 910 | +#define CEC_OP_UI_CMD_PLAY 0x44 | |
| 911 | +#define CEC_OP_UI_CMD_STOP 0x45 | |
| 912 | +#define CEC_OP_UI_CMD_PAUSE 0x46 | |
| 913 | +#define CEC_OP_UI_CMD_RECORD 0x47 | |
| 914 | +#define CEC_OP_UI_CMD_REWIND 0x48 | |
| 915 | +#define CEC_OP_UI_CMD_FAST_FORWARD 0x49 | |
| 916 | +#define CEC_OP_UI_CMD_EJECT 0x4a | |
| 917 | +#define CEC_OP_UI_CMD_SKIP_FORWARD 0x4b | |
| 918 | +#define CEC_OP_UI_CMD_SKIP_BACKWARD 0x4c | |
| 919 | +#define CEC_OP_UI_CMD_STOP_RECORD 0x4d | |
| 920 | +#define CEC_OP_UI_CMD_PAUSE_RECORD 0x4e | |
| 921 | +#define CEC_OP_UI_CMD_ANGLE 0x50 | |
| 922 | +#define CEC_OP_UI_CMD_SUB_PICTURE 0x51 | |
| 923 | +#define CEC_OP_UI_CMD_VIDEO_ON_DEMAND 0x52 | |
| 924 | +#define CEC_OP_UI_CMD_ELECTRONIC_PROGRAM_GUIDE 0x53 | |
| 925 | +#define CEC_OP_UI_CMD_TIMER_PROGRAMMING 0x54 | |
| 926 | +#define CEC_OP_UI_CMD_INITIAL_CONFIGURATION 0x55 | |
| 927 | +#define CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE 0x56 | |
| 928 | +#define CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION 0x57 | |
| 929 | +#define CEC_OP_UI_CMD_AUDIO_DESCRIPTION 0x58 | |
| 930 | +#define CEC_OP_UI_CMD_INTERNET 0x59 | |
| 931 | +#define CEC_OP_UI_CMD_3D_MODE 0x5a | |
| 932 | +#define CEC_OP_UI_CMD_PLAY_FUNCTION 0x60 | |
| 933 | +#define CEC_OP_UI_CMD_PAUSE_PLAY_FUNCTION 0x61 | |
| 934 | +#define CEC_OP_UI_CMD_RECORD_FUNCTION 0x62 | |
| 935 | +#define CEC_OP_UI_CMD_PAUSE_RECORD_FUNCTION 0x63 | |
| 936 | +#define CEC_OP_UI_CMD_STOP_FUNCTION 0x64 | |
| 937 | +#define CEC_OP_UI_CMD_MUTE_FUNCTION 0x65 | |
| 938 | +#define CEC_OP_UI_CMD_RESTORE_VOLUME_FUNCTION 0x66 | |
| 939 | +#define CEC_OP_UI_CMD_TUNE_FUNCTION 0x67 | |
| 940 | +#define CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION 0x68 | |
| 941 | +#define CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION 0x69 | |
| 942 | +#define CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION 0x6a | |
| 943 | +#define CEC_OP_UI_CMD_POWER_TOGGLE_FUNCTION 0x6b | |
| 944 | +#define CEC_OP_UI_CMD_POWER_OFF_FUNCTION 0x6c | |
| 945 | +#define CEC_OP_UI_CMD_POWER_ON_FUNCTION 0x6d | |
| 946 | +#define CEC_OP_UI_CMD_F1_BLUE 0x71 | |
| 947 | +#define CEC_OP_UI_CMD_F2_RED 0x72 | |
| 948 | +#define CEC_OP_UI_CMD_F3_GREEN 0x73 | |
| 949 | +#define CEC_OP_UI_CMD_F4_YELLOW 0x74 | |
| 950 | +#define CEC_OP_UI_CMD_F5 0x75 | |
| 951 | +#define CEC_OP_UI_CMD_DATA 0x76 | |
| 823 | 952 | /* UI Broadcast Type Operand (ui_bcast_type) */ |
| 824 | 953 | #define CEC_OP_UI_BCAST_TYPE_TOGGLE_ALL 0x00 |
| 825 | 954 | #define CEC_OP_UI_BCAST_TYPE_TOGGLE_DIG_ANA 0x01 |
| @@ -3,6 +3,9 @@ · 2 unmodified lines | ||
| 3 | 3 | * ioctl interface for the scsi media changer driver |
| 4 | 4 | */ |
| 5 | 5 | |
| 6 | +#ifndef _UAPI_LINUX_CHIO_H | |
| 7 | +#define _UAPI_LINUX_CHIO_H | |
| 8 | + | |
| 6 | 9 | /* changer element types */ |
| 7 | 10 | #define CHET_MT 0 /* media transport element (robot) */ |
| 8 | 11 | #define CHET_ST 1 /* storage element (media slots) */ |
| @@ -160,10 +163,4 @@ struct changer_set_voltag { · 151 unmodified lines | ||
| 160 | 163 | #define CHIOSVOLTAG _IOW('c',18,struct changer_set_voltag) |
| 161 | 164 | #define CHIOGVPARAMS _IOR('c',19,struct changer_vendor_params) |
| 162 | 165 | |
| 163 | −/* ---------------------------------------------------------------------- */ | |
| 164 | − | |
| 165 | −/* | |
| 166 | − * Local variables: | |
| 167 | − * c-basic-offset: 8 | |
| 168 | − * End: | |
| 169 | − */ | |
| 166 | +#endif /* _UAPI_LINUX_CHIO_H */ | |
| @@ -83,9 +83,9 @@ struct cyclades_monitor { · 82 unmodified lines | ||
| 83 | 83 | * open) |
| 84 | 84 | */ |
| 85 | 85 | struct cyclades_idle_stats { |
| 86 | − __kernel_time_t in_use; /* Time device has been in use (secs) */ | |
| 87 | − __kernel_time_t recv_idle; /* Time since last char received (secs) */ | |
| 88 | − __kernel_time_t xmit_idle; /* Time since last char transmitted (secs) */ | |
| 86 | + __kernel_old_time_t in_use; /* Time device has been in use (secs) */ | |
| 87 | + __kernel_old_time_t recv_idle; /* Time since last char received (secs) */ | |
| 88 | + __kernel_old_time_t xmit_idle; /* Time since last char transmitted (secs) */ | |
| 89 | 89 | unsigned long recv_bytes; /* Bytes received */ |
| 90 | 90 | unsigned long xmit_bytes; /* Bytes transmitted */ |
| 91 | 91 | unsigned long overruns; /* Input overruns */ |
| @@ -286,7 +286,7 @@ struct dcbmsg { · 285 unmodified lines | ||
| 286 | 286 | * @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported |
| 287 | 287 | * @DCB_CMD_SNUMTCS: set the number of traffic classes |
| 288 | 288 | * @DCB_CMD_GBCN: set backward congestion notification configuration |
| 289 | − * @DCB_CMD_SBCN: get backward congestion notification configration. | |
| 289 | + * @DCB_CMD_SBCN: get backward congestion notification configuration. | |
| 290 | 290 | * @DCB_CMD_GAPP: get application protocol configuration |
| 291 | 291 | * @DCB_CMD_SAPP: set application protocol configuration |
| 292 | 292 | * @DCB_CMD_IEEE_SET: set IEEE 802.1Qaz configuration |
| @@ -421,6 +421,11 @@ enum devlink_attr { · 420 unmodified lines | ||
| 421 | 421 | |
| 422 | 422 | DEVLINK_ATTR_RELOAD_FAILED, /* u8 0 or 1 */ |
| 423 | 423 | |
| 424 | + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS, /* u64 */ | |
| 425 | + | |
| 426 | + DEVLINK_ATTR_NETNS_FD, /* u32 */ | |
| 427 | + DEVLINK_ATTR_NETNS_PID, /* u32 */ | |
| 428 | + DEVLINK_ATTR_NETNS_ID, /* u32 */ | |
| 424 | 429 | /* add new attributes above here, update the policy in devlink.c */ |
| 425 | 430 | |
| 426 | 431 | __DEVLINK_ATTR_MAX, |
| @@ -53,10 +53,10 @@ struct elf_prstatus · 52 unmodified lines | ||
| 53 | 53 | pid_t pr_ppid; |
| 54 | 54 | pid_t pr_pgrp; |
| 55 | 55 | pid_t pr_sid; |
| 56 | − struct timeval pr_utime; /* User time */ | |
| 57 | − struct timeval pr_stime; /* System time */ | |
| 58 | − struct timeval pr_cutime; /* Cumulative user time */ | |
| 59 | − struct timeval pr_cstime; /* Cumulative system time */ | |
| 56 | + struct __kernel_old_timeval pr_utime; /* User time */ | |
| 57 | + struct __kernel_old_timeval pr_stime; /* System time */ | |
| 58 | + struct __kernel_old_timeval pr_cutime; /* Cumulative user time */ | |
| 59 | + struct __kernel_old_timeval pr_cstime; /* Cumulative system time */ | |
| 60 | 60 | #if 0 |
| 61 | 61 | long pr_instr; /* Current instruction */ |
| 62 | 62 | #endif |
| @@ -37,9 +37,16 @@ struct sock_extended_err { · 36 unmodified lines | ||
| 37 | 37 | * The timestamping interfaces SO_TIMESTAMPING, MSG_TSTAMP_* |
| 38 | 38 | * communicate network timestamps by passing this struct in a cmsg with |
| 39 | 39 | * recvmsg(). See Documentation/networking/timestamping.txt for details. |
| 40 | + * User space sees a timespec definition that matches either | |
| 41 | + * __kernel_timespec or __kernel_old_timespec, in the kernel we | |
| 42 | + * require two structure definitions to provide both. | |
| 40 | 43 | */ |
| 41 | 44 | struct scm_timestamping { |
| 45 | +#ifdef __KERNEL__ | |
| 46 | + struct __kernel_old_timespec ts[3]; | |
| 47 | +#else | |
| 42 | 48 | struct timespec ts[3]; |
| 49 | +#endif | |
| 43 | 50 | }; |
| 44 | 51 | |
| 45 | 52 | struct scm_timestamping64 { |
| @@ -1507,6 +1507,11 @@ enum ethtool_link_mode_bit_indices { · 1506 unmodified lines | ||
| 1507 | 1507 | ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66, |
| 1508 | 1508 | ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67, |
| 1509 | 1509 | ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68, |
| 1510 | + ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 69, | |
| 1511 | + ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 70, | |
| 1512 | + ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 71, | |
| 1513 | + ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 72, | |
| 1514 | + ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 73, | |
| 1510 | 1515 | |
| 1511 | 1516 | /* must be last entry */ |
| 1512 | 1517 | __ETHTOOL_LINK_MODE_MASK_NBITS |
| @@ -1618,6 +1623,7 @@ enum ethtool_link_mode_bit_indices { · 105 unmodified lines | ||
| 1618 | 1623 | #define SPEED_56000 56000 |
| 1619 | 1624 | #define SPEED_100000 100000 |
| 1620 | 1625 | #define SPEED_200000 200000 |
| 1626 | +#define SPEED_400000 400000 | |
| 1621 | 1627 | |
| 1622 | 1628 | #define SPEED_UNKNOWN -1 |
| 1623 | 1629 | |
| @@ -58,13 +58,20 @@ · 57 unmodified lines | ||
| 58 | 58 | * Valid hint values for F_{GET,SET}_RW_HINT. 0 is "not set", or can be |
| 59 | 59 | * used to clear any hints previously set. |
| 60 | 60 | */ |
| 61 | −#define RWF_WRITE_LIFE_NOT_SET 0 | |
| 61 | +#define RWH_WRITE_LIFE_NOT_SET 0 | |
| 62 | 62 | #define RWH_WRITE_LIFE_NONE 1 |
| 63 | 63 | #define RWH_WRITE_LIFE_SHORT 2 |
| 64 | 64 | #define RWH_WRITE_LIFE_MEDIUM 3 |
| 65 | 65 | #define RWH_WRITE_LIFE_LONG 4 |
| 66 | 66 | #define RWH_WRITE_LIFE_EXTREME 5 |
| 67 | 67 | |
| 68 | +/* | |
| 69 | + * The originally introduced spelling is remained from the first | |
| 70 | + * versions of the patch set that introduced the feature, see commit | |
| 71 | + * v4.13-rc1~212^2~51. | |
| 72 | + */ | |
| 73 | +#define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET | |
| 74 | + | |
| 68 | 75 | /* |
| 69 | 76 | * Types of directory notifications that may be requested. |
| 70 | 77 | */ |
| @@ -17,7 +17,8 @@ · 16 unmodified lines | ||
| 17 | 17 | #define FSCRYPT_POLICY_FLAGS_PAD_32 0x03 |
| 18 | 18 | #define FSCRYPT_POLICY_FLAGS_PAD_MASK 0x03 |
| 19 | 19 | #define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04 |
| 20 | −#define FSCRYPT_POLICY_FLAGS_VALID 0x07 | |
| 20 | +#define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08 | |
| 21 | +#define FSCRYPT_POLICY_FLAGS_VALID 0x0F | |
| 21 | 22 | |
| 22 | 23 | /* Encryption algorithms */ |
| 23 | 24 | #define FSCRYPT_MODE_AES_256_XTS 1 |
| @@ -38,6 +38,43 @@ · 37 unmodified lines | ||
| 38 | 38 | * |
| 39 | 39 | * Protocol changelog: |
| 40 | 40 | * |
| 41 | + * 7.1: | |
| 42 | + * - add the following messages: | |
| 43 | + * FUSE_SETATTR, FUSE_SYMLINK, FUSE_MKNOD, FUSE_MKDIR, FUSE_UNLINK, | |
| 44 | + * FUSE_RMDIR, FUSE_RENAME, FUSE_LINK, FUSE_OPEN, FUSE_READ, FUSE_WRITE, | |
| 45 | + * FUSE_RELEASE, FUSE_FSYNC, FUSE_FLUSH, FUSE_SETXATTR, FUSE_GETXATTR, | |
| 46 | + * FUSE_LISTXATTR, FUSE_REMOVEXATTR, FUSE_OPENDIR, FUSE_READDIR, | |
| 47 | + * FUSE_RELEASEDIR | |
| 48 | + * - add padding to messages to accommodate 32-bit servers on 64-bit kernels | |
| 49 | + * | |
| 50 | + * 7.2: | |
| 51 | + * - add FOPEN_DIRECT_IO and FOPEN_KEEP_CACHE flags | |
| 52 | + * - add FUSE_FSYNCDIR message | |
| 53 | + * | |
| 54 | + * 7.3: | |
| 55 | + * - add FUSE_ACCESS message | |
| 56 | + * - add FUSE_CREATE message | |
| 57 | + * - add filehandle to fuse_setattr_in | |
| 58 | + * | |
| 59 | + * 7.4: | |
| 60 | + * - add frsize to fuse_kstatfs | |
| 61 | + * - clean up request size limit checking | |
| 62 | + * | |
| 63 | + * 7.5: | |
| 64 | + * - add flags and max_write to fuse_init_out | |
| 65 | + * | |
| 66 | + * 7.6: | |
| 67 | + * - add max_readahead to fuse_init_in and fuse_init_out | |
| 68 | + * | |
| 69 | + * 7.7: | |
| 70 | + * - add FUSE_INTERRUPT message | |
| 71 | + * - add POSIX file lock support | |
| 72 | + * | |
| 73 | + * 7.8: | |
| 74 | + * - add lock_owner and flags fields to fuse_release_in | |
| 75 | + * - add FUSE_BMAP message | |
| 76 | + * - add FUSE_DESTROY message | |
| 77 | + * | |
| 41 | 78 | * 7.9: |
| 42 | 79 | * - new fuse_getattr_in input argument of GETATTR |
| 43 | 80 | * - add lk_flags in fuse_lk_in |
| @@ -13,6 +13,7 @@ enum { · 12 unmodified lines | ||
| 13 | 13 | TCA_STATS_RATE_EST64, |
| 14 | 14 | TCA_STATS_PAD, |
| 15 | 15 | TCA_STATS_BASIC_HW, |
| 16 | + TCA_STATS_PKT64, | |
| 16 | 17 | __TCA_STATS_MAX, |
| 17 | 18 | }; |
| 18 | 19 | #define TCA_STATS_MAX (__TCA_STATS_MAX - 1) |
| @@ -26,10 +27,6 @@ struct gnet_stats_basic { · 7 unmodified lines | ||
| 26 | 27 | __u64 bytes; |
| 27 | 28 | __u32 packets; |
| 28 | 29 | }; |
| 29 | −struct gnet_stats_basic_packed { | |
| 30 | − __u64 bytes; | |
| 31 | − __u32 packets; | |
| 32 | −} __attribute__ ((packed)); | |
| 33 | 30 | |
| 34 | 31 | /** |
| 35 | 32 | * struct gnet_stats_rate_est - rate estimator |
| @@ -33,6 +33,9 @@ struct gpiochip_info { · 32 unmodified lines | ||
| 33 | 33 | #define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2) |
| 34 | 34 | #define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3) |
| 35 | 35 | #define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4) |
| 36 | +#define GPIOLINE_FLAG_BIAS_PULL_UP (1UL << 5) | |
| 37 | +#define GPIOLINE_FLAG_BIAS_PULL_DOWN (1UL << 6) | |
| 38 | +#define GPIOLINE_FLAG_BIAS_DISABLE (1UL << 7) | |
| 36 | 39 | |
| 37 | 40 | /** |
| 38 | 41 | * struct gpioline_info - Information about a certain GPIO line |
| @@ -62,6 +65,9 @@ struct gpioline_info { · 23 unmodified lines | ||
| 62 | 65 | #define GPIOHANDLE_REQUEST_ACTIVE_LOW (1UL << 2) |
| 63 | 66 | #define GPIOHANDLE_REQUEST_OPEN_DRAIN (1UL << 3) |
| 64 | 67 | #define GPIOHANDLE_REQUEST_OPEN_SOURCE (1UL << 4) |
| 68 | +#define GPIOHANDLE_REQUEST_BIAS_PULL_UP (1UL << 5) | |
| 69 | +#define GPIOHANDLE_REQUEST_BIAS_PULL_DOWN (1UL << 6) | |
| 70 | +#define GPIOHANDLE_REQUEST_BIAS_DISABLE (1UL << 7) | |
| 65 | 71 | |
| 66 | 72 | /** |
| 67 | 73 | * struct gpiohandle_request - Information about a GPIO handle request |
| @@ -94,6 +100,24 @@ struct gpiohandle_request { · 26 unmodified lines | ||
| 94 | 100 | int fd; |
| 95 | 101 | }; |
| 96 | 102 | |
| 103 | +/** | |
| 104 | + * struct gpiohandle_config - Configuration for a GPIO handle request | |
| 105 | + * @flags: updated flags for the requested GPIO lines, such as | |
| 106 | + * GPIOHANDLE_REQUEST_OUTPUT, GPIOHANDLE_REQUEST_ACTIVE_LOW etc, OR:ed | |
| 107 | + * together | |
| 108 | + * @default_values: if the GPIOHANDLE_REQUEST_OUTPUT is set in flags, | |
| 109 | + * this specifies the default output value, should be 0 (low) or | |
| 110 | + * 1 (high), anything else than 0 or 1 will be interpreted as 1 (high) | |
| 111 | + * @padding: reserved for future use and should be zero filled | |
| 112 | + */ | |
| 113 | +struct gpiohandle_config { | |
| 114 | + __u32 flags; | |
| 115 | + __u8 default_values[GPIOHANDLES_MAX]; | |
| 116 | + __u32 padding[4]; /* padding for future use */ | |
| 117 | +}; | |
| 118 | + | |
| 119 | +#define GPIOHANDLE_SET_CONFIG_IOCTL _IOWR(0xB4, 0x0a, struct gpiohandle_config) | |
| 120 | + | |
| 97 | 121 | /** |
| 98 | 122 | * struct gpiohandle_data - Information of values on a GPIO handle |
| 99 | 123 | * @values: when getting the state of lines this contains the current |
| @@ -33,6 +33,7 @@ · 32 unmodified lines | ||
| 33 | 33 | #define IFNAMSIZ 16 |
| 34 | 34 | #endif /* __UAPI_DEF_IF_IFNAMSIZ */ |
| 35 | 35 | #define IFALIASZ 256 |
| 36 | +#define ALTIFNAMSIZ 128 | |
| 36 | 37 | #include <linux/hdlc/ioctl.h> |
| 37 | 38 | |
| 38 | 39 | /* For glibc compatibility. An empty enum does not compile. */ |
| @@ -167,6 +167,8 @@ enum { · 166 unmodified lines | ||
| 167 | 167 | IFLA_NEW_IFINDEX, |
| 168 | 168 | IFLA_MIN_MTU, |
| 169 | 169 | IFLA_MAX_MTU, |
| 170 | + IFLA_PROP_LIST, | |
| 171 | + IFLA_ALT_IFNAME, /* Alternative ifname */ | |
| 170 | 172 | __IFLA_MAX |
| 171 | 173 | }; |
| 172 | 174 | |
| @@ -652,6 +652,81 @@ · 651 unmodified lines | ||
| 652 | 652 | /* Electronic privacy screen control */ |
| 653 | 653 | #define KEY_PRIVACY_SCREEN_TOGGLE 0x279 |
| 654 | 654 | |
| 655 | +/* | |
| 656 | + * Some keyboards have keys which do not have a defined meaning, these keys | |
| 657 | + * are intended to be programmed / bound to macros by the user. For most | |
| 658 | + * keyboards with these macro-keys the key-sequence to inject, or action to | |
| 659 | + * take, is all handled by software on the host side. So from the kernel's | |
| 660 | + * point of view these are just normal keys. | |
| 661 | + * | |
| 662 | + * The KEY_MACRO# codes below are intended for such keys, which may be labeled | |
| 663 | + * e.g. G1-G18, or S1 - S30. The KEY_MACRO# codes MUST NOT be used for keys | |
| 664 | + * where the marking on the key does indicate a defined meaning / purpose. | |
| 665 | + * | |
| 666 | + * The KEY_MACRO# codes MUST also NOT be used as fallback for when no existing | |
| 667 | + * KEY_FOO define matches the marking / purpose. In this case a new KEY_FOO | |
| 668 | + * define MUST be added. | |
| 669 | + */ | |
| 670 | +#define KEY_MACRO1 0x290 | |
| 671 | +#define KEY_MACRO2 0x291 | |
| 672 | +#define KEY_MACRO3 0x292 | |
| 673 | +#define KEY_MACRO4 0x293 | |
| 674 | +#define KEY_MACRO5 0x294 | |
| 675 | +#define KEY_MACRO6 0x295 | |
| 676 | +#define KEY_MACRO7 0x296 | |
| 677 | +#define KEY_MACRO8 0x297 | |
| 678 | +#define KEY_MACRO9 0x298 | |
| 679 | +#define KEY_MACRO10 0x299 | |
| 680 | +#define KEY_MACRO11 0x29a | |
| 681 | +#define KEY_MACRO12 0x29b | |
| 682 | +#define KEY_MACRO13 0x29c | |
| 683 | +#define KEY_MACRO14 0x29d | |
| 684 | +#define KEY_MACRO15 0x29e | |
| 685 | +#define KEY_MACRO16 0x29f | |
| 686 | +#define KEY_MACRO17 0x2a0 | |
| 687 | +#define KEY_MACRO18 0x2a1 | |
| 688 | +#define KEY_MACRO19 0x2a2 | |
| 689 | +#define KEY_MACRO20 0x2a3 | |
| 690 | +#define KEY_MACRO21 0x2a4 | |
| 691 | +#define KEY_MACRO22 0x2a5 | |
| 692 | +#define KEY_MACRO23 0x2a6 | |
| 693 | +#define KEY_MACRO24 0x2a7 | |
| 694 | +#define KEY_MACRO25 0x2a8 | |
| 695 | +#define KEY_MACRO26 0x2a9 | |
| 696 | +#define KEY_MACRO27 0x2aa | |
| 697 | +#define KEY_MACRO28 0x2ab | |
| 698 | +#define KEY_MACRO29 0x2ac | |
| 699 | +#define KEY_MACRO30 0x2ad | |
| 700 | + | |
| 701 | +/* | |
| 702 | + * Some keyboards with the macro-keys described above have some extra keys | |
| 703 | + * for controlling the host-side software responsible for the macro handling: | |
| 704 | + * -A macro recording start/stop key. Note that not all keyboards which emit | |
| 705 | + * KEY_MACRO_RECORD_START will also emit KEY_MACRO_RECORD_STOP if | |
| 706 | + * KEY_MACRO_RECORD_STOP is not advertised, then KEY_MACRO_RECORD_START | |
| 707 | + * should be interpreted as a recording start/stop toggle; | |
| 708 | + * -Keys for switching between different macro (pre)sets, either a key for | |
| 709 | + * cycling through the configured presets or keys to directly select a preset. | |
| 710 | + */ | |
| 711 | +#define KEY_MACRO_RECORD_START 0x2b0 | |
| 712 | +#define KEY_MACRO_RECORD_STOP 0x2b1 | |
| 713 | +#define KEY_MACRO_PRESET_CYCLE 0x2b2 | |
| 714 | +#define KEY_MACRO_PRESET1 0x2b3 | |
| 715 | +#define KEY_MACRO_PRESET2 0x2b4 | |
| 716 | +#define KEY_MACRO_PRESET3 0x2b5 | |
| 717 | + | |
| 718 | +/* | |
| 719 | + * Some keyboards have a buildin LCD panel where the contents are controlled | |
| 720 | + * by the host. Often these have a number of keys directly below the LCD | |
| 721 | + * intended for controlling a menu shown on the LCD. These keys often don't | |
| 722 | + * have any labeling so we just name them KEY_KBD_LCD_MENU# | |
| 723 | + */ | |
| 724 | +#define KEY_KBD_LCD_MENU1 0x2b8 | |
| 725 | +#define KEY_KBD_LCD_MENU2 0x2b9 | |
| 726 | +#define KEY_KBD_LCD_MENU3 0x2ba | |
| 727 | +#define KEY_KBD_LCD_MENU4 0x2bb | |
| 728 | +#define KEY_KBD_LCD_MENU5 0x2bc | |
| 729 | + | |
| 655 | 730 | #define BTN_TRIGGER_HAPPY 0x2c0 |
| 656 | 731 | #define BTN_TRIGGER_HAPPY1 0x2c0 |
| 657 | 732 | #define BTN_TRIGGER_HAPPY2 0x2c1 |
| @@ -19,7 +19,10 @@ struct io_uring_sqe { · 18 unmodified lines | ||
| 19 | 19 | __u8 flags; /* IOSQE_ flags */ |
| 20 | 20 | __u16 ioprio; /* ioprio for the request */ |
| 21 | 21 | __s32 fd; /* file descriptor to do IO on */ |
| 22 | − __u64 off; /* offset into file */ | |
| 22 | + union { | |
| 23 | + __u64 off; /* offset into file */ | |
| 24 | + __u64 addr2; | |
| 25 | + }; | |
| 23 | 26 | __u64 addr; /* pointer to buffer or iovecs */ |
| 24 | 27 | __u32 len; /* buffer size or number of iovecs */ |
| 25 | 28 | union { |
| @@ -29,6 +32,8 @@ struct io_uring_sqe { · 3 unmodified lines | ||
| 29 | 32 | __u32 sync_range_flags; |
| 30 | 33 | __u32 msg_flags; |
| 31 | 34 | __u32 timeout_flags; |
| 35 | + __u32 accept_flags; | |
| 36 | + __u32 cancel_flags; | |
| 32 | 37 | }; |
| 33 | 38 | __u64 user_data; /* data to be passed back at completion time */ |
| 34 | 39 | union { |
| @@ -43,6 +48,7 @@ struct io_uring_sqe { · 8 unmodified lines | ||
| 43 | 48 | #define IOSQE_FIXED_FILE (1U << 0) /* use fixed fileset */ |
| 44 | 49 | #define IOSQE_IO_DRAIN (1U << 1) /* issue after inflight IO */ |
| 45 | 50 | #define IOSQE_IO_LINK (1U << 2) /* links next sqe */ |
| 51 | +#define IOSQE_IO_HARDLINK (1U << 3) /* like LINK, but stronger */ | |
| 46 | 52 | |
| 47 | 53 | /* |
| 48 | 54 | * io_uring_setup() flags |
| @@ -50,25 +56,41 @@ struct io_uring_sqe { · 1 unmodified line | ||
| 50 | 56 | #define IORING_SETUP_IOPOLL (1U << 0) /* io_context is polled */ |
| 51 | 57 | #define IORING_SETUP_SQPOLL (1U << 1) /* SQ poll thread */ |
| 52 | 58 | #define IORING_SETUP_SQ_AFF (1U << 2) /* sq_thread_cpu is valid */ |
| 53 | − | |
| 54 | −#define IORING_OP_NOP 0 | |
| 55 | −#define IORING_OP_READV 1 | |
| 56 | −#define IORING_OP_WRITEV 2 | |
| 57 | −#define IORING_OP_FSYNC 3 | |
| 58 | −#define IORING_OP_READ_FIXED 4 | |
| 59 | −#define IORING_OP_WRITE_FIXED 5 | |
| 60 | −#define IORING_OP_POLL_ADD 6 | |
| 61 | −#define IORING_OP_POLL_REMOVE 7 | |
| 62 | −#define IORING_OP_SYNC_FILE_RANGE 8 | |
| 63 | −#define IORING_OP_SENDMSG 9 | |
| 64 | −#define IORING_OP_RECVMSG 10 | |
| 65 | −#define IORING_OP_TIMEOUT 11 | |
| 59 | +#define IORING_SETUP_CQSIZE (1U << 3) /* app defines CQ size */ | |
| 60 | + | |
| 61 | +enum { | |
| 62 | + IORING_OP_NOP, | |
| 63 | + IORING_OP_READV, | |
| 64 | + IORING_OP_WRITEV, | |
| 65 | + IORING_OP_FSYNC, | |
| 66 | + IORING_OP_READ_FIXED, | |
| 67 | + IORING_OP_WRITE_FIXED, | |
| 68 | + IORING_OP_POLL_ADD, | |
| 69 | + IORING_OP_POLL_REMOVE, | |
| 70 | + IORING_OP_SYNC_FILE_RANGE, | |
| 71 | + IORING_OP_SENDMSG, | |
| 72 | + IORING_OP_RECVMSG, | |
| 73 | + IORING_OP_TIMEOUT, | |
| 74 | + IORING_OP_TIMEOUT_REMOVE, | |
| 75 | + IORING_OP_ACCEPT, | |
| 76 | + IORING_OP_ASYNC_CANCEL, | |
| 77 | + IORING_OP_LINK_TIMEOUT, | |
| 78 | + IORING_OP_CONNECT, | |
| 79 | + | |
| 80 | + /* this goes last, obviously */ | |
| 81 | + IORING_OP_LAST, | |
| 82 | +}; | |
| 66 | 83 | |
| 67 | 84 | /* |
| 68 | 85 | * sqe->fsync_flags |
| 69 | 86 | */ |
| 70 | 87 | #define IORING_FSYNC_DATASYNC (1U << 0) |
| 71 | 88 | |
| 89 | +/* | |
| 90 | + * sqe->timeout_flags | |
| 91 | + */ | |
| 92 | +#define IORING_TIMEOUT_ABS (1U << 0) | |
| 93 | + | |
| 72 | 94 | /* |
| 73 | 95 | * IO completion data structure (Completion Queue Entry) |
| 74 | 96 | */ |
| @@ -140,6 +162,8 @@ struct io_uring_params { · 65 unmodified lines | ||
| 140 | 162 | * io_uring_params->features flags |
| 141 | 163 | */ |
| 142 | 164 | #define IORING_FEAT_SINGLE_MMAP (1U << 0) |
| 165 | +#define IORING_FEAT_NODROP (1U << 1) | |
| 166 | +#define IORING_FEAT_SUBMIT_STABLE (1U << 2) | |
| 143 | 167 | |
| 144 | 168 | /* |
| 145 | 169 | * io_uring_register(2) opcodes and arguments |
| @@ -150,5 +174,11 @@ struct io_uring_params { · 4 unmodified lines | ||
| 150 | 174 | #define IORING_UNREGISTER_FILES 3 |
| 151 | 175 | #define IORING_REGISTER_EVENTFD 4 |
| 152 | 176 | #define IORING_UNREGISTER_EVENTFD 5 |
| 177 | +#define IORING_REGISTER_FILES_UPDATE 6 | |
| 178 | + | |
| 179 | +struct io_uring_files_update { | |
| 180 | + __u32 offset; | |
| 181 | + __s32 *fds; | |
| 182 | +}; | |
| 153 | 183 | |
| 154 | 184 | #endif |
| @@ -152,4 +152,173 @@ struct iommu_page_response { · 151 unmodified lines | ||
| 152 | 152 | __u32 code; |
| 153 | 153 | }; |
| 154 | 154 | |
| 155 | +/* defines the granularity of the invalidation */ | |
| 156 | +enum iommu_inv_granularity { | |
| 157 | + IOMMU_INV_GRANU_DOMAIN, /* domain-selective invalidation */ | |
| 158 | + IOMMU_INV_GRANU_PASID, /* PASID-selective invalidation */ | |
| 159 | + IOMMU_INV_GRANU_ADDR, /* page-selective invalidation */ | |
| 160 | + IOMMU_INV_GRANU_NR, /* number of invalidation granularities */ | |
| 161 | +}; | |
| 162 | + | |
| 163 | +/** | |
| 164 | + * struct iommu_inv_addr_info - Address Selective Invalidation Structure | |
| 165 | + * | |
| 166 | + * @flags: indicates the granularity of the address-selective invalidation | |
| 167 | + * - If the PASID bit is set, the @pasid field is populated and the invalidation | |
| 168 | + * relates to cache entries tagged with this PASID and matching the address | |
| 169 | + * range. | |
| 170 | + * - If ARCHID bit is set, @archid is populated and the invalidation relates | |
| 171 | + * to cache entries tagged with this architecture specific ID and matching | |
| 172 | + * the address range. | |
| 173 | + * - Both PASID and ARCHID can be set as they may tag different caches. | |
| 174 | + * - If neither PASID or ARCHID is set, global addr invalidation applies. | |
| 175 | + * - The LEAF flag indicates whether only the leaf PTE caching needs to be | |
| 176 | + * invalidated and other paging structure caches can be preserved. | |
| 177 | + * @pasid: process address space ID | |
| 178 | + * @archid: architecture-specific ID | |
| 179 | + * @addr: first stage/level input address | |
| 180 | + * @granule_size: page/block size of the mapping in bytes | |
| 181 | + * @nb_granules: number of contiguous granules to be invalidated | |
| 182 | + */ | |
| 183 | +struct iommu_inv_addr_info { | |
| 184 | +#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0) | |
| 185 | +#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1) | |
| 186 | +#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2) | |
| 187 | + __u32 flags; | |
| 188 | + __u32 archid; | |
| 189 | + __u64 pasid; | |
| 190 | + __u64 addr; | |
| 191 | + __u64 granule_size; | |
| 192 | + __u64 nb_granules; | |
| 193 | +}; | |
| 194 | + | |
| 195 | +/** | |
| 196 | + * struct iommu_inv_pasid_info - PASID Selective Invalidation Structure | |
| 197 | + * | |
| 198 | + * @flags: indicates the granularity of the PASID-selective invalidation | |
| 199 | + * - If the PASID bit is set, the @pasid field is populated and the invalidation | |
| 200 | + * relates to cache entries tagged with this PASID and matching the address | |
| 201 | + * range. | |
| 202 | + * - If the ARCHID bit is set, the @archid is populated and the invalidation | |
| 203 | + * relates to cache entries tagged with this architecture specific ID and | |
| 204 | + * matching the address range. | |
| 205 | + * - Both PASID and ARCHID can be set as they may tag different caches. | |
| 206 | + * - At least one of PASID or ARCHID must be set. | |
| 207 | + * @pasid: process address space ID | |
| 208 | + * @archid: architecture-specific ID | |
| 209 | + */ | |
| 210 | +struct iommu_inv_pasid_info { | |
| 211 | +#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0) | |
| 212 | +#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1) | |
| 213 | + __u32 flags; | |
| 214 | + __u32 archid; | |
| 215 | + __u64 pasid; | |
| 216 | +}; | |
| 217 | + | |
| 218 | +/** | |
| 219 | + * struct iommu_cache_invalidate_info - First level/stage invalidation | |
| 220 | + * information | |
| 221 | + * @version: API version of this structure | |
| 222 | + * @cache: bitfield that allows to select which caches to invalidate | |
| 223 | + * @granularity: defines the lowest granularity used for the invalidation: | |
| 224 | + * domain > PASID > addr | |
| 225 | + * @padding: reserved for future use (should be zero) | |
| 226 | + * @pasid_info: invalidation data when @granularity is %IOMMU_INV_GRANU_PASID | |
| 227 | + * @addr_info: invalidation data when @granularity is %IOMMU_INV_GRANU_ADDR | |
| 228 | + * | |
| 229 | + * Not all the combinations of cache/granularity are valid: | |
| 230 | + * | |
| 231 | + * +--------------+---------------+---------------+---------------+ | |
| 232 | + * | type / | DEV_IOTLB | IOTLB | PASID | | |
| 233 | + * | granularity | | | cache | | |
| 234 | + * +==============+===============+===============+===============+ | |
| 235 | + * | DOMAIN | N/A | Y | Y | | |
| 236 | + * +--------------+---------------+---------------+---------------+ | |
| 237 | + * | PASID | Y | Y | Y | | |
| 238 | + * +--------------+---------------+---------------+---------------+ | |
| 239 | + * | ADDR | Y | Y | N/A | | |
| 240 | + * +--------------+---------------+---------------+---------------+ | |
| 241 | + * | |
| 242 | + * Invalidations by %IOMMU_INV_GRANU_DOMAIN don't take any argument other than | |
| 243 | + * @version and @cache. | |
| 244 | + * | |
| 245 | + * If multiple cache types are invalidated simultaneously, they all | |
| 246 | + * must support the used granularity. | |
| 247 | + */ | |
| 248 | +struct iommu_cache_invalidate_info { | |
| 249 | +#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1 | |
| 250 | + __u32 version; | |
| 251 | +/* IOMMU paging structure cache */ | |
| 252 | +#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0) /* IOMMU IOTLB */ | |
| 253 | +#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1) /* Device IOTLB */ | |
| 254 | +#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2) /* PASID cache */ | |
| 255 | +#define IOMMU_CACHE_INV_TYPE_NR (3) | |
| 256 | + __u8 cache; | |
| 257 | + __u8 granularity; | |
| 258 | + __u8 padding[2]; | |
| 259 | + union { | |
| 260 | + struct iommu_inv_pasid_info pasid_info; | |
| 261 | + struct iommu_inv_addr_info addr_info; | |
| 262 | + }; | |
| 263 | +}; | |
| 264 | + | |
| 265 | +/** | |
| 266 | + * struct iommu_gpasid_bind_data_vtd - Intel VT-d specific data on device and guest | |
| 267 | + * SVA binding. | |
| 268 | + * | |
| 269 | + * @flags: VT-d PASID table entry attributes | |
| 270 | + * @pat: Page attribute table data to compute effective memory type | |
| 271 | + * @emt: Extended memory type | |
| 272 | + * | |
| 273 | + * Only guest vIOMMU selectable and effective options are passed down to | |
| 274 | + * the host IOMMU. | |
| 275 | + */ | |
| 276 | +struct iommu_gpasid_bind_data_vtd { | |
| 277 | +#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0) /* supervisor request */ | |
| 278 | +#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1) /* extended access enable */ | |
| 279 | +#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2) /* page-level cache disable */ | |
| 280 | +#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3) /* page-level write through */ | |
| 281 | +#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4) /* extended mem type enable */ | |
| 282 | +#define IOMMU_SVA_VTD_GPASID_CD (1 << 5) /* PASID-level cache disable */ | |
| 283 | + __u64 flags; | |
| 284 | + __u32 pat; | |
| 285 | + __u32 emt; | |
| 286 | +}; | |
| 287 | + | |
| 288 | +/** | |
| 289 | + * struct iommu_gpasid_bind_data - Information about device and guest PASID binding | |
| 290 | + * @version: Version of this data structure | |
| 291 | + * @format: PASID table entry format | |
| 292 | + * @flags: Additional information on guest bind request | |
| 293 | + * @gpgd: Guest page directory base of the guest mm to bind | |
| 294 | + * @hpasid: Process address space ID used for the guest mm in host IOMMU | |
| 295 | + * @gpasid: Process address space ID used for the guest mm in guest IOMMU | |
| 296 | + * @addr_width: Guest virtual address width | |
| 297 | + * @padding: Reserved for future use (should be zero) | |
| 298 | + * @vtd: Intel VT-d specific data | |
| 299 | + * | |
| 300 | + * Guest to host PASID mapping can be an identity or non-identity, where guest | |
| 301 | + * has its own PASID space. For non-identify mapping, guest to host PASID lookup | |
| 302 | + * is needed when VM programs guest PASID into an assigned device. VMM may | |
| 303 | + * trap such PASID programming then request host IOMMU driver to convert guest | |
| 304 | + * PASID to host PASID based on this bind data. | |
| 305 | + */ | |
| 306 | +struct iommu_gpasid_bind_data { | |
| 307 | +#define IOMMU_GPASID_BIND_VERSION_1 1 | |
| 308 | + __u32 version; | |
| 309 | +#define IOMMU_PASID_FORMAT_INTEL_VTD 1 | |
| 310 | + __u32 format; | |
| 311 | +#define IOMMU_SVA_GPASID_VAL (1 << 0) /* guest PASID valid */ | |
| 312 | + __u64 flags; | |
| 313 | + __u64 gpgd; | |
| 314 | + __u64 hpasid; | |
| 315 | + __u64 gpasid; | |
| 316 | + __u32 addr_width; | |
| 317 | + __u8 padding[12]; | |
| 318 | + /* Vendor specific data */ | |
| 319 | + union { | |
| 320 | + struct iommu_gpasid_bind_data_vtd vtd; | |
| 321 | + }; | |
| 322 | +}; | |
| 323 | + | |
| 155 | 324 | #endif /* _UAPI_IOMMU_H */ |
| @@ -4,9 +4,24 @@ · 3 unmodified lines | ||
| 4 | 4 | |
| 5 | 5 | #include <linux/types.h> |
| 6 | 6 | |
| 7 | +/* | |
| 8 | + * Argument for KCOV_REMOTE_ENABLE ioctl, see Documentation/dev-tools/kcov.rst | |
| 9 | + * and the comment before kcov_remote_start() for usage details. | |
| 10 | + */ | |
| 11 | +struct kcov_remote_arg { | |
| 12 | + __u32 trace_mode; /* KCOV_TRACE_PC or KCOV_TRACE_CMP */ | |
| 13 | + __u32 area_size; /* Length of coverage buffer in words */ | |
| 14 | + __u32 num_handles; /* Size of handles array */ | |
| 15 | + __aligned_u64 common_handle; | |
| 16 | + __aligned_u64 handles[0]; | |
| 17 | +}; | |
| 18 | + | |
| 19 | +#define KCOV_REMOTE_MAX_HANDLES 0x100 | |
| 20 | + | |
| 7 | 21 | #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long) |
| 8 | 22 | #define KCOV_ENABLE _IO('c', 100) |
| 9 | 23 | #define KCOV_DISABLE _IO('c', 101) |
| 24 | +#define KCOV_REMOTE_ENABLE _IOW('c', 102, struct kcov_remote_arg) | |
| 10 | 25 | |
| 11 | 26 | enum { |
| 12 | 27 | /* |
| @@ -32,4 +47,17 @@ enum { · 19 unmodified lines | ||
| 32 | 47 | #define KCOV_CMP_SIZE(n) ((n) << 1) |
| 33 | 48 | #define KCOV_CMP_MASK KCOV_CMP_SIZE(3) |
| 34 | 49 | |
| 50 | +#define KCOV_SUBSYSTEM_COMMON (0x00ull << 56) | |
| 51 | +#define KCOV_SUBSYSTEM_USB (0x01ull << 56) | |
| 52 | + | |
| 53 | +#define KCOV_SUBSYSTEM_MASK (0xffull << 56) | |
| 54 | +#define KCOV_INSTANCE_MASK (0xffffffffull) | |
| 55 | + | |
| 56 | +static inline __u64 kcov_remote_handle(__u64 subsys, __u64 inst) | |
| 57 | +{ | |
| 58 | + if (subsys & ~KCOV_SUBSYSTEM_MASK || inst & ~KCOV_INSTANCE_MASK) | |
| 59 | + return 0; | |
| 60 | + return subsys | inst; | |
| 61 | +} | |
| 62 | + | |
| 35 | 63 | #endif /* _LINUX_KCOV_IOCTLS_H */ |
| @@ -235,6 +235,7 @@ struct kvm_hyperv_exit { · 234 unmodified lines | ||
| 235 | 235 | #define KVM_EXIT_S390_STSI 25 |
| 236 | 236 | #define KVM_EXIT_IOAPIC_EOI 26 |
| 237 | 237 | #define KVM_EXIT_HYPERV 27 |
| 238 | +#define KVM_EXIT_ARM_NISV 28 | |
| 238 | 239 | |
| 239 | 240 | /* For KVM_EXIT_INTERNAL_ERROR */ |
| 240 | 241 | /* Emulate instruction failed. */ |
| @@ -394,6 +395,11 @@ struct kvm_run { · 153 unmodified lines | ||
| 394 | 395 | } eoi; |
| 395 | 396 | /* KVM_EXIT_HYPERV */ |
| 396 | 397 | struct kvm_hyperv_exit hyperv; |
| 398 | + /* KVM_EXIT_ARM_NISV */ | |
| 399 | + struct { | |
| 400 | + __u64 esr_iss; | |
| 401 | + __u64 fault_ipa; | |
| 402 | + } arm_nisv; | |
| 397 | 403 | /* Fix the size of the union. */ |
| 398 | 404 | char padding[256]; |
| 399 | 405 | }; |
| @@ -1000,6 +1006,9 @@ struct kvm_ppc_resize_hpt { · 600 unmodified lines | ||
| 1000 | 1006 | #define KVM_CAP_PMU_EVENT_FILTER 173 |
| 1001 | 1007 | #define KVM_CAP_ARM_IRQ_LINE_LAYOUT_2 174 |
| 1002 | 1008 | #define KVM_CAP_HYPERV_DIRECT_TLBFLUSH 175 |
| 1009 | +#define KVM_CAP_PPC_GUEST_DEBUG_SSTEP 176 | |
| 1010 | +#define KVM_CAP_ARM_NISV_TO_USER 177 | |
| 1011 | +#define KVM_CAP_ARM_INJECT_EXT_DABT 178 | |
| 1003 | 1012 | |
| 1004 | 1013 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1005 | 1014 | |
| @@ -1227,6 +1236,8 @@ enum kvm_device_type { · 221 unmodified lines | ||
| 1227 | 1236 | #define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS |
| 1228 | 1237 | KVM_DEV_TYPE_XIVE, |
| 1229 | 1238 | #define KVM_DEV_TYPE_XIVE KVM_DEV_TYPE_XIVE |
| 1239 | + KVM_DEV_TYPE_ARM_PV_TIME, | |
| 1240 | +#define KVM_DEV_TYPE_ARM_PV_TIME KVM_DEV_TYPE_ARM_PV_TIME | |
| 1230 | 1241 | KVM_DEV_TYPE_MAX, |
| 1231 | 1242 | }; |
| 1232 | 1243 | |
| @@ -1337,6 +1348,7 @@ struct kvm_s390_ucas_mapping { · 104 unmodified lines | ||
| 1337 | 1348 | #define KVM_PPC_GET_CPU_CHAR _IOR(KVMIO, 0xb1, struct kvm_ppc_cpu_char) |
| 1338 | 1349 | /* Available with KVM_CAP_PMU_EVENT_FILTER */ |
| 1339 | 1350 | #define KVM_SET_PMU_EVENT_FILTER _IOW(KVMIO, 0xb2, struct kvm_pmu_event_filter) |
| 1351 | +#define KVM_PPC_SVM_OFF _IO(KVMIO, 0xb3) | |
| 1340 | 1352 | |
| 1341 | 1353 | /* ioctl for vm fd */ |
| 1342 | 1354 | #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device) |
| @@ -27,6 +27,7 @@ enum lwtunnel_ip_t { · 26 unmodified lines | ||
| 27 | 27 | LWTUNNEL_IP_TOS, |
| 28 | 28 | LWTUNNEL_IP_FLAGS, |
| 29 | 29 | LWTUNNEL_IP_PAD, |
| 30 | + LWTUNNEL_IP_OPTS, | |
| 30 | 31 | __LWTUNNEL_IP_MAX, |
| 31 | 32 | }; |
| 32 | 33 | |
| @@ -41,11 +42,51 @@ enum lwtunnel_ip6_t { · 8 unmodified lines | ||
| 41 | 42 | LWTUNNEL_IP6_TC, |
| 42 | 43 | LWTUNNEL_IP6_FLAGS, |
| 43 | 44 | LWTUNNEL_IP6_PAD, |
| 45 | + LWTUNNEL_IP6_OPTS, | |
| 44 | 46 | __LWTUNNEL_IP6_MAX, |
| 45 | 47 | }; |
| 46 | 48 | |
| 47 | 49 | #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1) |
| 48 | 50 | |
| 51 | +enum { | |
| 52 | + LWTUNNEL_IP_OPTS_UNSPEC, | |
| 53 | + LWTUNNEL_IP_OPTS_GENEVE, | |
| 54 | + LWTUNNEL_IP_OPTS_VXLAN, | |
| 55 | + LWTUNNEL_IP_OPTS_ERSPAN, | |
| 56 | + __LWTUNNEL_IP_OPTS_MAX, | |
| 57 | +}; | |
| 58 | + | |
| 59 | +#define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1) | |
| 60 | + | |
| 61 | +enum { | |
| 62 | + LWTUNNEL_IP_OPT_GENEVE_UNSPEC, | |
| 63 | + LWTUNNEL_IP_OPT_GENEVE_CLASS, | |
| 64 | + LWTUNNEL_IP_OPT_GENEVE_TYPE, | |
| 65 | + LWTUNNEL_IP_OPT_GENEVE_DATA, | |
| 66 | + __LWTUNNEL_IP_OPT_GENEVE_MAX, | |
| 67 | +}; | |
| 68 | + | |
| 69 | +#define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1) | |
| 70 | + | |
| 71 | +enum { | |
| 72 | + LWTUNNEL_IP_OPT_VXLAN_UNSPEC, | |
| 73 | + LWTUNNEL_IP_OPT_VXLAN_GBP, | |
| 74 | + __LWTUNNEL_IP_OPT_VXLAN_MAX, | |
| 75 | +}; | |
| 76 | + | |
| 77 | +#define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1) | |
| 78 | + | |
| 79 | +enum { | |
| 80 | + LWTUNNEL_IP_OPT_ERSPAN_UNSPEC, | |
| 81 | + LWTUNNEL_IP_OPT_ERSPAN_VER, | |
| 82 | + LWTUNNEL_IP_OPT_ERSPAN_INDEX, | |
| 83 | + LWTUNNEL_IP_OPT_ERSPAN_DIR, | |
| 84 | + LWTUNNEL_IP_OPT_ERSPAN_HWID, | |
| 85 | + __LWTUNNEL_IP_OPT_ERSPAN_MAX, | |
| 86 | +}; | |
| 87 | + | |
| 88 | +#define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1) | |
| 89 | + | |
| 49 | 90 | enum { |
| 50 | 91 | LWT_BPF_PROG_UNSPEC, |
| 51 | 92 | LWT_BPF_PROG_FD, |
| @@ -94,5 +94,6 @@ · 93 unmodified lines | ||
| 94 | 94 | #define ZSMALLOC_MAGIC 0x58295829 |
| 95 | 95 | #define DMA_BUF_MAGIC 0x444d4142 /* "DMAB" */ |
| 96 | 96 | #define Z3FOLD_MAGIC 0x33 |
| 97 | +#define PPC_CMM_MAGIC 0xc7571590 | |
| 97 | 98 | |
| 98 | 99 | #endif /* __LINUX_MAGIC_H__ */ |
| @@ -19,9 +19,9 @@ struct msqid_ds { · 18 unmodified lines | ||
| 19 | 19 | struct ipc_perm msg_perm; |
| 20 | 20 | struct msg *msg_first; /* first message on queue,unused */ |
| 21 | 21 | struct msg *msg_last; /* last message in queue,unused */ |
| 22 | − __kernel_time_t msg_stime; /* last msgsnd time */ | |
| 23 | − __kernel_time_t msg_rtime; /* last msgrcv time */ | |
| 24 | − __kernel_time_t msg_ctime; /* last change time */ | |
| 22 | + __kernel_old_time_t msg_stime; /* last msgsnd time */ | |
| 23 | + __kernel_old_time_t msg_rtime; /* last msgrcv time */ | |
| 24 | + __kernel_old_time_t msg_ctime; /* last change time */ | |
| 25 | 25 | unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */ |
| 26 | 26 | unsigned long msg_lqbytes; /* ditto */ |
| 27 | 27 | unsigned short msg_cbytes; /* current number of bytes on queue */ |
| @@ -205,6 +205,8 @@ enum ipset_cadt_flags { · 204 unmodified lines | ||
| 205 | 205 | IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD), |
| 206 | 206 | IPSET_FLAG_BIT_WITH_SKBINFO = 6, |
| 207 | 207 | IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO), |
| 208 | + IPSET_FLAG_BIT_IFACE_WILDCARD = 7, | |
| 209 | + IPSET_FLAG_IFACE_WILDCARD = (1 << IPSET_FLAG_BIT_IFACE_WILDCARD), | |
| 208 | 210 | IPSET_FLAG_CADT_MAX = 15, |
| 209 | 211 | }; |
| 210 | 212 | |
| @@ -144,12 +144,14 @@ enum nft_list_attributes { · 143 unmodified lines | ||
| 144 | 144 | * @NFTA_HOOK_HOOKNUM: netfilter hook number (NLA_U32) |
| 145 | 145 | * @NFTA_HOOK_PRIORITY: netfilter hook priority (NLA_U32) |
| 146 | 146 | * @NFTA_HOOK_DEV: netdevice name (NLA_STRING) |
| 147 | + * @NFTA_HOOK_DEVS: list of netdevices (NLA_NESTED) | |
| 147 | 148 | */ |
| 148 | 149 | enum nft_hook_attributes { |
| 149 | 150 | NFTA_HOOK_UNSPEC, |
| 150 | 151 | NFTA_HOOK_HOOKNUM, |
| 151 | 152 | NFTA_HOOK_PRIORITY, |
| 152 | 153 | NFTA_HOOK_DEV, |
| 154 | + NFTA_HOOK_DEVS, | |
| 153 | 155 | __NFTA_HOOK_MAX |
| 154 | 156 | }; |
| 155 | 157 | #define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1) |
| @@ -1516,6 +1518,7 @@ enum nft_object_attributes { · 1360 unmodified lines | ||
| 1516 | 1518 | * @NFTA_FLOWTABLE_HOOK: netfilter hook configuration(NLA_U32) |
| 1517 | 1519 | * @NFTA_FLOWTABLE_USE: number of references to this flow table (NLA_U32) |
| 1518 | 1520 | * @NFTA_FLOWTABLE_HANDLE: object handle (NLA_U64) |
| 1521 | + * @NFTA_FLOWTABLE_FLAGS: flags (NLA_U32) | |
| 1519 | 1522 | */ |
| 1520 | 1523 | enum nft_flowtable_attributes { |
| 1521 | 1524 | NFTA_FLOWTABLE_UNSPEC, |
| @@ -1525,6 +1528,7 @@ enum nft_flowtable_attributes { · 3 unmodified lines | ||
| 1525 | 1528 | NFTA_FLOWTABLE_USE, |
| 1526 | 1529 | NFTA_FLOWTABLE_HANDLE, |
| 1527 | 1530 | NFTA_FLOWTABLE_PAD, |
| 1531 | + NFTA_FLOWTABLE_FLAGS, | |
| 1528 | 1532 | __NFTA_FLOWTABLE_MAX |
| 1529 | 1533 | }; |
| 1530 | 1534 | #define NFTA_FLOWTABLE_MAX (__NFTA_FLOWTABLE_MAX - 1) |
| @@ -41,19 +41,19 @@ struct xt_sctp_info { · 40 unmodified lines | ||
| 41 | 41 | #define SCTP_CHUNKMAP_SET(chunkmap, type) \ |
| 42 | 42 | do { \ |
| 43 | 43 | (chunkmap)[type / bytes(__u32)] |= \ |
| 44 | − 1 << (type % bytes(__u32)); \ | |
| 44 | + 1u << (type % bytes(__u32)); \ | |
| 45 | 45 | } while (0) |
| 46 | 46 | |
| 47 | 47 | #define SCTP_CHUNKMAP_CLEAR(chunkmap, type) \ |
| 48 | 48 | do { \ |
| 49 | 49 | (chunkmap)[type / bytes(__u32)] &= \ |
| 50 | − ~(1 << (type % bytes(__u32))); \ | |
| 50 | + ~(1u << (type % bytes(__u32))); \ | |
| 51 | 51 | } while (0) |
| 52 | 52 | |
| 53 | 53 | #define SCTP_CHUNKMAP_IS_SET(chunkmap, type) \ |
| 54 | 54 | ({ \ |
| 55 | 55 | ((chunkmap)[type / bytes (__u32)] & \ |
| 56 | − (1 << (type % bytes (__u32)))) ? 1: 0; \ | |
| 56 | + (1u << (type % bytes (__u32)))) ? 1: 0; \ | |
| 57 | 57 | }) |
| 58 | 58 | |
| 59 | 59 | #define SCTP_CHUNKMAP_RESET(chunkmap) \ |
| @@ -199,7 +199,7 @@ struct arpt_get_entries { · 198 unmodified lines | ||
| 199 | 199 | /* Helper functions */ |
| 200 | 200 | static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e) |
| 201 | 201 | { |
| 202 | − return (void *)e + e->target_offset; | |
| 202 | + return (struct xt_entry_target *)((char *)e + e->target_offset); | |
| 203 | 203 | } |
| 204 | 204 | |
| 205 | 205 | /* |
| @@ -194,7 +194,7 @@ struct ebt_entry { · 193 unmodified lines | ||
| 194 | 194 | static __inline__ struct ebt_entry_target * |
| 195 | 195 | ebt_get_target(struct ebt_entry *e) |
| 196 | 196 | { |
| 197 | − return (void *)e + e->target_offset; | |
| 197 | + return (struct ebt_entry_target *)((char *)e + e->target_offset); | |
| 198 | 198 | } |
| 199 | 199 | |
| 200 | 200 | /* {g,s}etsockopt numbers */ |
| @@ -222,7 +222,7 @@ struct ipt_get_entries { · 221 unmodified lines | ||
| 222 | 222 | static __inline__ struct xt_entry_target * |
| 223 | 223 | ipt_get_target(struct ipt_entry *e) |
| 224 | 224 | { |
| 225 | − return (void *)e + e->target_offset; | |
| 225 | + return (struct xt_entry_target *)((char *)e + e->target_offset); | |
| 226 | 226 | } |
| 227 | 227 | |
| 228 | 228 | /* |
| @@ -262,7 +262,7 @@ struct ip6t_get_entries { · 261 unmodified lines | ||
| 262 | 262 | static __inline__ struct xt_entry_target * |
| 263 | 263 | ip6t_get_target(struct ip6t_entry *e) |
| 264 | 264 | { |
| 265 | − return (void *)e + e->target_offset; | |
| 265 | + return (struct xt_entry_target *)((char *)e + e->target_offset); | |
| 266 | 266 | } |
| 267 | 267 | |
| 268 | 268 | /* |
| @@ -248,6 +248,22 @@ · 247 unmodified lines | ||
| 248 | 248 | * %NL80211_ATTR_SAE_PASSWORD. |
| 249 | 249 | */ |
| 250 | 250 | |
| 251 | +/** | |
| 252 | + * DOC: VLAN offload support for setting group keys and binding STAs to VLANs | |
| 253 | + * | |
| 254 | + * By setting @NL80211_EXT_FEATURE_VLAN_OFFLOAD flag drivers can indicate they | |
| 255 | + * support offloading VLAN functionality in a manner where the driver exposes a | |
| 256 | + * single netdev that uses VLAN tagged frames and separate VLAN-specific netdevs | |
| 257 | + * can then be added using RTM_NEWLINK/IFLA_VLAN_ID similarly to the Ethernet | |
| 258 | + * case. Frames received from stations that are not assigned to any VLAN are | |
| 259 | + * delivered on the main netdev and frames to such stations can be sent through | |
| 260 | + * that main netdev. | |
| 261 | + * | |
| 262 | + * %NL80211_CMD_NEW_KEY (for group keys), %NL80211_CMD_NEW_STATION, and | |
| 263 | + * %NL80211_CMD_SET_STATION will optionally specify vlan_id using | |
| 264 | + * %NL80211_ATTR_VLAN_ID. | |
| 265 | + */ | |
| 266 | + | |
| 251 | 267 | /** |
| 252 | 268 | * enum nl80211_commands - supported nl80211 commands |
| 253 | 269 | * |
| @@ -571,6 +587,14 @@ · 317 unmodified lines | ||
| 571 | 587 | * set of BSSID,frequency parameters is used (i.e., either the enforcing |
| 572 | 588 | * %NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict |
| 573 | 589 | * %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT). |
| 590 | + * Driver shall not modify the IEs specified through %NL80211_ATTR_IE if | |
| 591 | + * %NL80211_ATTR_MAC is included. However, if %NL80211_ATTR_MAC_HINT is | |
| 592 | + * included, these IEs through %NL80211_ATTR_IE are specified by the user | |
| 593 | + * space based on the best possible BSS selected. Thus, if the driver ends | |
| 594 | + * up selecting a different BSS, it can modify these IEs accordingly (e.g. | |
| 595 | + * userspace asks the driver to perform PMKSA caching with BSS1 and the | |
| 596 | + * driver ends up selecting BSS2 with different PMKSA cache entry; RSNIE | |
| 597 | + * has to get updated with the apt PMKID). | |
| 574 | 598 | * %NL80211_ATTR_PREV_BSSID can be used to request a reassociation within |
| 575 | 599 | * the ESS in case the device is already associated and an association with |
| 576 | 600 | * a different BSS is desired. |
| @@ -2373,6 +2397,9 @@ enum nl80211_commands { · 1796 unmodified lines | ||
| 2373 | 2397 | * the allowed channel bandwidth configurations. (u8 attribute) |
| 2374 | 2398 | * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13. |
| 2375 | 2399 | * |
| 2400 | + * @NL80211_ATTR_VLAN_ID: VLAN ID (1..4094) for the station and VLAN group key | |
| 2401 | + * (u16). | |
| 2402 | + * | |
| 2376 | 2403 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2377 | 2404 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 2378 | 2405 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| @@ -2835,6 +2862,8 @@ enum nl80211_attrs { · 456 unmodified lines | ||
| 2835 | 2862 | NL80211_ATTR_WIPHY_EDMG_CHANNELS, |
| 2836 | 2863 | NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, |
| 2837 | 2864 | |
| 2865 | + NL80211_ATTR_VLAN_ID, | |
| 2866 | + | |
| 2838 | 2867 | /* add attributes here, update the policy in nl80211.c */ |
| 2839 | 2868 | |
| 2840 | 2869 | __NL80211_ATTR_AFTER_LAST, |
| @@ -5484,6 +5513,14 @@ enum nl80211_feature_flags { · 2643 unmodified lines | ||
| 5484 | 5513 | * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in |
| 5485 | 5514 | * station mode (SAE password is passed as part of the connect command). |
| 5486 | 5515 | * |
| 5516 | + * @NL80211_EXT_FEATURE_VLAN_OFFLOAD: The driver supports a single netdev | |
| 5517 | + * with VLAN tagged frames and separate VLAN-specific netdevs added using | |
| 5518 | + * vconfig similarly to the Ethernet case. | |
| 5519 | + * | |
| 5520 | + * @NL80211_EXT_FEATURE_AQL: The driver supports the Airtime Queue Limit (AQL) | |
| 5521 | + * feature, which prevents bufferbloat by using the expected transmission | |
| 5522 | + * time to limit the amount of data buffered in the hardware. | |
| 5523 | + * | |
| 5487 | 5524 | * @NUM_NL80211_EXT_FEATURES: number of extended features. |
| 5488 | 5525 | * @MAX_NL80211_EXT_FEATURES: highest extended feature index. |
| 5489 | 5526 | */ |
| @@ -5529,6 +5566,8 @@ enum nl80211_ext_feature_index { · 39 unmodified lines | ||
| 5529 | 5566 | NL80211_EXT_FEATURE_EXT_KEY_ID, |
| 5530 | 5567 | NL80211_EXT_FEATURE_STA_TX_PWR, |
| 5531 | 5568 | NL80211_EXT_FEATURE_SAE_OFFLOAD, |
| 5569 | + NL80211_EXT_FEATURE_VLAN_OFFLOAD, | |
| 5570 | + NL80211_EXT_FEATURE_AQL, | |
| 5532 | 5571 | |
| 5533 | 5572 | /* add new features before the definition below */ |
| 5534 | 5573 | NUM_NL80211_EXT_FEATURES, |
| @@ -63,6 +63,7 @@ struct nvme_passthru_cmd64 { · 62 unmodified lines | ||
| 63 | 63 | __u32 cdw14; |
| 64 | 64 | __u32 cdw15; |
| 65 | 65 | __u32 timeout_ms; |
| 66 | + __u32 rsvd2; | |
| 66 | 67 | __u64 result; |
| 67 | 68 | }; |
| 68 | 69 | |
| @@ -173,6 +173,7 @@ enum ovs_packet_cmd { · 172 unmodified lines | ||
| 173 | 173 | * @OVS_PACKET_ATTR_LEN: Packet size before truncation. |
| 174 | 174 | * %OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment |
| 175 | 175 | * size. |
| 176 | + * @OVS_PACKET_ATTR_HASH: Packet hash info (e.g. hash, sw_hash and l4_hash in skb). | |
| 176 | 177 | * |
| 177 | 178 | * These attributes follow the &struct ovs_header within the Generic Netlink |
| 178 | 179 | * payload for %OVS_PACKET_* commands. |
| @@ -190,7 +191,8 @@ enum ovs_packet_attr { · 11 unmodified lines | ||
| 190 | 191 | OVS_PACKET_ATTR_PROBE, /* Packet operation is a feature probe, |
| 191 | 192 | error logging should be suppressed. */ |
| 192 | 193 | OVS_PACKET_ATTR_MRU, /* Maximum received IP fragment size. */ |
| 193 | − OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */ | |
| 194 | + OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */ | |
| 195 | + OVS_PACKET_ATTR_HASH, /* Packet hash. */ | |
| 194 | 196 | __OVS_PACKET_ATTR_MAX |
| 195 | 197 | }; |
| 196 | 198 | |
| @@ -34,6 +34,7 @@ · 33 unmodified lines | ||
| 34 | 34 | * of which the first 64 bytes are standardized as follows: |
| 35 | 35 | */ |
| 36 | 36 | #define PCI_STD_HEADER_SIZEOF 64 |
| 37 | +#define PCI_STD_NUM_BARS 6 /* Number of standard BARs */ | |
| 37 | 38 | #define PCI_VENDOR_ID 0x00 /* 16 bits */ |
| 38 | 39 | #define PCI_DEVICE_ID 0x02 /* 16 bits */ |
| 39 | 40 | #define PCI_COMMAND 0x04 /* 16 bits */ |
| @@ -673,6 +674,8 @@ · 633 unmodified lines | ||
| 673 | 674 | #define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003 /* Supported Speed 8GT/s */ |
| 674 | 675 | #define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004 /* Supported Speed 16GT/s */ |
| 675 | 676 | #define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005 /* Supported Speed 32GT/s */ |
| 677 | +#define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010 /* Enter Compliance */ | |
| 678 | +#define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380 /* Transmit Margin */ | |
| 676 | 679 | #define PCI_EXP_LNKSTA2 50 /* Link Status 2 */ |
| 677 | 680 | #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52 /* v2 endpoints with link end here */ |
| 678 | 681 | #define PCI_EXP_SLTCAP2 52 /* Slot Capabilities 2 */ |
| @@ -141,8 +141,9 @@ enum perf_event_sample_format { · 140 unmodified lines | ||
| 141 | 141 | PERF_SAMPLE_TRANSACTION = 1U << 17, |
| 142 | 142 | PERF_SAMPLE_REGS_INTR = 1U << 18, |
| 143 | 143 | PERF_SAMPLE_PHYS_ADDR = 1U << 19, |
| 144 | + PERF_SAMPLE_AUX = 1U << 20, | |
| 144 | 145 | |
| 145 | − PERF_SAMPLE_MAX = 1U << 20, /* non-ABI */ | |
| 146 | + PERF_SAMPLE_MAX = 1U << 21, /* non-ABI */ | |
| 146 | 147 | |
| 147 | 148 | __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63, /* non-ABI; internal use */ |
| 148 | 149 | }; |
| @@ -300,6 +301,7 @@ enum perf_event_read_format { · 151 unmodified lines | ||
| 300 | 301 | /* add: sample_stack_user */ |
| 301 | 302 | #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */ |
| 302 | 303 | #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */ |
| 304 | +#define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ | |
| 303 | 305 | |
| 304 | 306 | /* |
| 305 | 307 | * Hardware event_id to monitor via a performance monitoring event: |
| @@ -424,7 +426,9 @@ struct perf_event_attr { · 118 unmodified lines | ||
| 424 | 426 | */ |
| 425 | 427 | __u32 aux_watermark; |
| 426 | 428 | __u16 sample_max_stack; |
| 427 | − __u16 __reserved_2; /* align to __u64 */ | |
| 429 | + __u16 __reserved_2; | |
| 430 | + __u32 aux_sample_size; | |
| 431 | + __u32 __reserved_3; | |
| 428 | 432 | }; |
| 429 | 433 | |
| 430 | 434 | /* |
| @@ -864,6 +868,8 @@ enum perf_event_type { · 433 unmodified lines | ||
| 864 | 868 | * { u64 abi; # enum perf_sample_regs_abi |
| 865 | 869 | * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_INTR |
| 866 | 870 | * { u64 phys_addr;} && PERF_SAMPLE_PHYS_ADDR |
| 871 | + * { u64 size; | |
| 872 | + * char data[size]; } && PERF_SAMPLE_AUX | |
| 867 | 873 | * }; |
| 868 | 874 | */ |
| 869 | 875 | PERF_RECORD_SAMPLE = 9, |
| @@ -16,9 +16,14 @@ enum { · 15 unmodified lines | ||
| 16 | 16 | TCA_ACT_STATS, |
| 17 | 17 | TCA_ACT_PAD, |
| 18 | 18 | TCA_ACT_COOKIE, |
| 19 | + TCA_ACT_FLAGS, | |
| 19 | 20 | __TCA_ACT_MAX |
| 20 | 21 | }; |
| 21 | 22 | |
| 23 | +#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1 /* Don't use percpu allocator for | |
| 24 | + * actions stats. | |
| 25 | + */ | |
| 26 | + | |
| 22 | 27 | #define TCA_ACT_MAX __TCA_ACT_MAX |
| 23 | 28 | #define TCA_OLD_COMPAT (TCA_ACT_MAX+1) |
| 24 | 29 | #define TCA_ACT_MAX_PRIO 32 |
| @@ -566,6 +571,14 @@ enum { · 541 unmodified lines | ||
| 566 | 571 | * TCA_FLOWER_KEY_ENC_OPT_GENEVE_ |
| 567 | 572 | * attributes |
| 568 | 573 | */ |
| 574 | + TCA_FLOWER_KEY_ENC_OPTS_VXLAN, /* Nested | |
| 575 | + * TCA_FLOWER_KEY_ENC_OPT_VXLAN_ | |
| 576 | + * attributes | |
| 577 | + */ | |
| 578 | + TCA_FLOWER_KEY_ENC_OPTS_ERSPAN, /* Nested | |
| 579 | + * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_ | |
| 580 | + * attributes | |
| 581 | + */ | |
| 569 | 582 | __TCA_FLOWER_KEY_ENC_OPTS_MAX, |
| 570 | 583 | }; |
| 571 | 584 | |
| @@ -583,6 +596,27 @@ enum { · 11 unmodified lines | ||
| 583 | 596 | #define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \ |
| 584 | 597 | (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1) |
| 585 | 598 | |
| 599 | +enum { | |
| 600 | + TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC, | |
| 601 | + TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP, /* u32 */ | |
| 602 | + __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX, | |
| 603 | +}; | |
| 604 | + | |
| 605 | +#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX \ | |
| 606 | + (__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1) | |
| 607 | + | |
| 608 | +enum { | |
| 609 | + TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC, | |
| 610 | + TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER, /* u8 */ | |
| 611 | + TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX, /* be32 */ | |
| 612 | + TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR, /* u8 */ | |
| 613 | + TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID, /* u8 */ | |
| 614 | + __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX, | |
| 615 | +}; | |
| 616 | + | |
| 617 | +#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \ | |
| 618 | + (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1) | |
| 619 | + | |
| 586 | 620 | enum { |
| 587 | 621 | TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0), |
| 588 | 622 | TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1), |
| @@ -950,19 +950,25 @@ enum { · 949 unmodified lines | ||
| 950 | 950 | TCA_PIE_BETA, |
| 951 | 951 | TCA_PIE_ECN, |
| 952 | 952 | TCA_PIE_BYTEMODE, |
| 953 | + TCA_PIE_DQ_RATE_ESTIMATOR, | |
| 953 | 954 | __TCA_PIE_MAX |
| 954 | 955 | }; |
| 955 | 956 | #define TCA_PIE_MAX (__TCA_PIE_MAX - 1) |
| 956 | 957 | |
| 957 | 958 | struct tc_pie_xstats { |
| 958 | − __u64 prob; /* current probability */ | |
| 959 | − __u32 delay; /* current delay in ms */ | |
| 960 | − __u32 avg_dq_rate; /* current average dq_rate in bits/pie_time */ | |
| 961 | − __u32 packets_in; /* total number of packets enqueued */ | |
| 962 | − __u32 dropped; /* packets dropped due to pie_action */ | |
| 963 | − __u32 overlimit; /* dropped due to lack of space in queue */ | |
| 964 | − __u32 maxq; /* maximum queue size */ | |
| 965 | − __u32 ecn_mark; /* packets marked with ecn*/ | |
| 959 | + __u64 prob; /* current probability */ | |
| 960 | + __u32 delay; /* current delay in ms */ | |
| 961 | + __u32 avg_dq_rate; /* current average dq_rate in | |
| 962 | + * bits/pie_time | |
| 963 | + */ | |
| 964 | + __u32 dq_rate_estimating; /* is avg_dq_rate being calculated? */ | |
| 965 | + __u32 packets_in; /* total number of packets enqueued */ | |
| 966 | + __u32 dropped; /* packets dropped due to pie_action */ | |
| 967 | + __u32 overlimit; /* dropped due to lack of space | |
| 968 | + * in queue | |
| 969 | + */ | |
| 970 | + __u32 maxq; /* maximum queue size */ | |
| 971 | + __u32 ecn_mark; /* packets marked with ecn*/ | |
| 966 | 972 | }; |
| 967 | 973 | |
| 968 | 974 | /* CBS */ |
| @@ -104,6 +104,8 @@ struct pppol2tp_ioc_stats { · 103 unmodified lines | ||
| 104 | 104 | #define PPPIOCGDEBUG _IOR('t', 65, int) /* Read debug level */ |
| 105 | 105 | #define PPPIOCSDEBUG _IOW('t', 64, int) /* Set debug level */ |
| 106 | 106 | #define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle) /* get idle time */ |
| 107 | +#define PPPIOCGIDLE32 _IOR('t', 63, struct ppp_idle32) /* 32-bit times */ | |
| 108 | +#define PPPIOCGIDLE64 _IOR('t', 63, struct ppp_idle64) /* 64-bit times */ | |
| 107 | 109 | #define PPPIOCNEWUNIT _IOWR('t', 62, int) /* create new ppp unit */ |
| 108 | 110 | #define PPPIOCATTACH _IOW('t', 61, int) /* attach to ppp unit */ |
| 109 | 111 | #define PPPIOCDETACH _IOW('t', 60, int) /* obsolete, do not use */ |
| @@ -142,10 +142,24 @@ struct ppp_comp_stats { · 141 unmodified lines | ||
| 142 | 142 | /* |
| 143 | 143 | * The following structure records the time in seconds since |
| 144 | 144 | * the last NP packet was sent or received. |
| 145 | + * | |
| 146 | + * Linux implements both 32-bit and 64-bit time_t versions | |
| 147 | + * for compatibility with user space that defines ppp_idle | |
| 148 | + * based on the libc time_t. | |
| 145 | 149 | */ |
| 146 | 150 | struct ppp_idle { |
| 147 | − __kernel_time_t xmit_idle; /* time since last NP packet sent */ | |
| 148 | − __kernel_time_t recv_idle; /* time since last NP packet received */ | |
| 151 | + __kernel_old_time_t xmit_idle; /* time since last NP packet sent */ | |
| 152 | + __kernel_old_time_t recv_idle; /* time since last NP packet received */ | |
| 153 | +}; | |
| 154 | + | |
| 155 | +struct ppp_idle32 { | |
| 156 | + __s32 xmit_idle; /* time since last NP packet sent */ | |
| 157 | + __s32 recv_idle; /* time since last NP packet received */ | |
| 158 | +}; | |
| 159 | + | |
| 160 | +struct ppp_idle64 { | |
| 161 | + __s64 xmit_idle; /* time since last NP packet sent */ | |
| 162 | + __s64 recv_idle; /* time since last NP packet received */ | |
| 149 | 163 | }; |
| 150 | 164 | |
| 151 | 165 | #endif /* _UAPI_PPP_DEFS_H_ */ |
| @@ -58,6 +58,9 @@ typedef enum { · 57 unmodified lines | ||
| 58 | 58 | SEV_RET_HWSEV_RET_PLATFORM, |
| 59 | 59 | SEV_RET_HWSEV_RET_UNSAFE, |
| 60 | 60 | SEV_RET_UNSUPPORTED, |
| 61 | + SEV_RET_INVALID_PARAM, | |
| 62 | + SEV_RET_RESOURCE_LIMIT, | |
| 63 | + SEV_RET_SECURE_DATA_INVALID, | |
| 61 | 64 | SEV_RET_MAX, |
| 62 | 65 | } sev_ret_code; |
| 63 | 66 | |
| @@ -31,13 +31,16 @@ · 30 unmodified lines | ||
| 31 | 31 | #define PTP_ENABLE_FEATURE (1<<0) |
| 32 | 32 | #define PTP_RISING_EDGE (1<<1) |
| 33 | 33 | #define PTP_FALLING_EDGE (1<<2) |
| 34 | +#define PTP_STRICT_FLAGS (1<<3) | |
| 35 | +#define PTP_EXTTS_EDGES (PTP_RISING_EDGE | PTP_FALLING_EDGE) | |
| 34 | 36 | |
| 35 | 37 | /* |
| 36 | 38 | * flag fields valid for the new PTP_EXTTS_REQUEST2 ioctl. |
| 37 | 39 | */ |
| 38 | 40 | #define PTP_EXTTS_VALID_FLAGS (PTP_ENABLE_FEATURE | \ |
| 39 | 41 | PTP_RISING_EDGE | \ |
| 40 | − PTP_FALLING_EDGE) | |
| 42 | + PTP_FALLING_EDGE | \ | |
| 43 | + PTP_STRICT_FLAGS) | |
| 41 | 44 | |
| 42 | 45 | /* |
| 43 | 46 | * flag fields valid for the original PTP_EXTTS_REQUEST ioctl. |
| @@ -22,8 +22,8 @@ · 21 unmodified lines | ||
| 22 | 22 | #define RUSAGE_THREAD 1 /* only the calling thread */ |
| 23 | 23 | |
| 24 | 24 | struct rusage { |
| 25 | − struct timeval ru_utime; /* user time used */ | |
| 26 | − struct timeval ru_stime; /* system time used */ | |
| 25 | + struct __kernel_old_timeval ru_utime; /* user time used */ | |
| 26 | + struct __kernel_old_timeval ru_stime; /* system time used */ | |
| 27 | 27 | __kernel_long_t ru_maxrss; /* maximum resident set size */ |
| 28 | 28 | __kernel_long_t ru_ixrss; /* integral shared memory size */ |
| 29 | 29 | __kernel_long_t ru_idrss; /* integral unshared data size */ |
| @@ -164,6 +164,13 @@ enum { · 163 unmodified lines | ||
| 164 | 164 | RTM_GETNEXTHOP, |
| 165 | 165 | #define RTM_GETNEXTHOP RTM_GETNEXTHOP |
| 166 | 166 | |
| 167 | + RTM_NEWLINKPROP = 108, | |
| 168 | +#define RTM_NEWLINKPROP RTM_NEWLINKPROP | |
| 169 | + RTM_DELLINKPROP, | |
| 170 | +#define RTM_DELLINKPROP RTM_DELLINKPROP | |
| 171 | + RTM_GETLINKPROP, | |
| 172 | +#define RTM_GETLINKPROP RTM_GETLINKPROP | |
| 173 | + | |
| 167 | 174 | __RTM_MAX, |
| 168 | 175 | #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) |
| 169 | 176 | }; |
| @@ -4,6 +4,7 @@ · 3 unmodified lines | ||
| 4 | 4 | #ifndef _UAPI_SCC_H |
| 5 | 5 | #define _UAPI_SCC_H |
| 6 | 6 | |
| 7 | +#include <linux/sockios.h> | |
| 7 | 8 | |
| 8 | 9 | /* selection of hardware types */ |
| 9 | 10 | |
| @@ -33,27 +33,48 @@ · 32 unmodified lines | ||
| 33 | 33 | #define CLONE_NEWNET 0x40000000 /* New network namespace */ |
| 34 | 34 | #define CLONE_IO 0x80000000 /* Clone io context */ |
| 35 | 35 | |
| 36 | +/* Flags for the clone3() syscall. */ | |
| 37 | +#define CLONE_CLEAR_SIGHAND 0x100000000ULL /* Clear any signal handler and reset to SIG_DFL. */ | |
| 38 | + | |
| 36 | 39 | #ifndef __ASSEMBLY__ |
| 37 | 40 | /** |
| 38 | 41 | * struct clone_args - arguments for the clone3 syscall |
| 39 | − * @flags: Flags for the new process as listed above. | |
| 40 | − * All flags are valid except for CSIGNAL and | |
| 41 | − * CLONE_DETACHED. | |
| 42 | − * @pidfd: If CLONE_PIDFD is set, a pidfd will be | |
| 43 | − * returned in this argument. | |
| 44 | − * @child_tid: If CLONE_CHILD_SETTID is set, the TID of the | |
| 45 | − * child process will be returned in the child's | |
| 46 | − * memory. | |
| 47 | − * @parent_tid: If CLONE_PARENT_SETTID is set, the TID of | |
| 48 | − * the child process will be returned in the | |
| 49 | − * parent's memory. | |
| 50 | − * @exit_signal: The exit_signal the parent process will be | |
| 51 | − * sent when the child exits. | |
| 52 | − * @stack: Specify the location of the stack for the | |
| 53 | − * child process. | |
| 54 | − * @stack_size: The size of the stack for the child process. | |
| 55 | − * @tls: If CLONE_SETTLS is set, the tls descriptor | |
| 56 | − * is set to tls. | |
| 42 | + * @flags: Flags for the new process as listed above. | |
| 43 | + * All flags are valid except for CSIGNAL and | |
| 44 | + * CLONE_DETACHED. | |
| 45 | + * @pidfd: If CLONE_PIDFD is set, a pidfd will be | |
| 46 | + * returned in this argument. | |
| 47 | + * @child_tid: If CLONE_CHILD_SETTID is set, the TID of the | |
| 48 | + * child process will be returned in the child's | |
| 49 | + * memory. | |
| 50 | + * @parent_tid: If CLONE_PARENT_SETTID is set, the TID of | |
| 51 | + * the child process will be returned in the | |
| 52 | + * parent's memory. | |
| 53 | + * @exit_signal: The exit_signal the parent process will be | |
| 54 | + * sent when the child exits. | |
| 55 | + * @stack: Specify the location of the stack for the | |
| 56 | + * child process. | |
| 57 | + * Note, @stack is expected to point to the | |
| 58 | + * lowest address. The stack direction will be | |
| 59 | + * determined by the kernel and set up | |
| 60 | + * appropriately based on @stack_size. | |
| 61 | + * @stack_size: The size of the stack for the child process. | |
| 62 | + * @tls: If CLONE_SETTLS is set, the tls descriptor | |
| 63 | + * is set to tls. | |
| 64 | + * @set_tid: Pointer to an array of type *pid_t. The size | |
| 65 | + * of the array is defined using @set_tid_size. | |
| 66 | + * This array is used to select PIDs/TIDs for | |
| 67 | + * newly created processes. The first element in | |
| 68 | + * this defines the PID in the most nested PID | |
| 69 | + * namespace. Each additional element in the array | |
| 70 | + * defines the PID in the parent PID namespace of | |
| 71 | + * the original PID namespace. If the array has | |
| 72 | + * less entries than the number of currently | |
| 73 | + * nested PID namespaces only the PIDs in the | |
| 74 | + * corresponding namespaces are set. | |
| 75 | + * @set_tid_size: This defines the size of the array referenced | |
| 76 | + * in @set_tid. This cannot be larger than the | |
| 77 | + * kernel's limit of nested PID namespaces. | |
| 57 | 78 | * |
| 58 | 79 | * The structure is versioned by size and thus extensible. |
| 59 | 80 | * New struct members must go at the end of the struct and |
| @@ -68,10 +89,13 @@ struct clone_args { · 8 unmodified lines | ||
| 68 | 89 | __aligned_u64 stack; |
| 69 | 90 | __aligned_u64 stack_size; |
| 70 | 91 | __aligned_u64 tls; |
| 92 | + __aligned_u64 set_tid; | |
| 93 | + __aligned_u64 set_tid_size; | |
| 71 | 94 | }; |
| 72 | 95 | #endif |
| 73 | 96 | |
| 74 | 97 | #define CLONE_ARGS_SIZE_VER0 64 /* sizeof first published struct */ |
| 98 | +#define CLONE_ARGS_SIZE_VER1 80 /* sizeof second published struct */ | |
| 75 | 99 | |
| 76 | 100 | /* |
| 77 | 101 | * Scheduling policies |
| @@ -105,6 +105,7 @@ typedef __s32 sctp_assoc_t; · 104 unmodified lines | ||
| 105 | 105 | #define SCTP_DEFAULT_SNDINFO 34 |
| 106 | 106 | #define SCTP_AUTH_DEACTIVATE_KEY 35 |
| 107 | 107 | #define SCTP_REUSE_PORT 36 |
| 108 | +#define SCTP_PEER_ADDR_THLDS_V2 37 | |
| 108 | 109 | |
| 109 | 110 | /* Internal Socket Options. Some of the sctp library functions are |
| 110 | 111 | * implemented using these socket options. |
| @@ -137,6 +138,8 @@ typedef __s32 sctp_assoc_t; · 26 unmodified lines | ||
| 137 | 138 | #define SCTP_ASCONF_SUPPORTED 128 |
| 138 | 139 | #define SCTP_AUTH_SUPPORTED 129 |
| 139 | 140 | #define SCTP_ECN_SUPPORTED 130 |
| 141 | +#define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131 | |
| 142 | +#define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE | |
| 140 | 143 | |
| 141 | 144 | /* PR-SCTP policies */ |
| 142 | 145 | #define SCTP_PR_SCTP_NONE 0x0000 |
| @@ -410,6 +413,8 @@ enum sctp_spc_state { · 267 unmodified lines | ||
| 410 | 413 | SCTP_ADDR_ADDED, |
| 411 | 414 | SCTP_ADDR_MADE_PRIM, |
| 412 | 415 | SCTP_ADDR_CONFIRMED, |
| 416 | + SCTP_ADDR_POTENTIALLY_FAILED, | |
| 417 | +#define SCTP_ADDR_PF SCTP_ADDR_POTENTIALLY_FAILED | |
| 413 | 418 | }; |
| 414 | 419 | |
| 415 | 420 | |
| @@ -449,6 +454,16 @@ struct sctp_send_failed { · 33 unmodified lines | ||
| 449 | 454 | __u8 ssf_data[0]; |
| 450 | 455 | }; |
| 451 | 456 | |
| 457 | +struct sctp_send_failed_event { | |
| 458 | + __u16 ssf_type; | |
| 459 | + __u16 ssf_flags; | |
| 460 | + __u32 ssf_length; | |
| 461 | + __u32 ssf_error; | |
| 462 | + struct sctp_sndinfo ssfe_info; | |
| 463 | + sctp_assoc_t ssf_assoc_id; | |
| 464 | + __u8 ssf_data[0]; | |
| 465 | +}; | |
| 466 | + | |
| 452 | 467 | /* |
| 453 | 468 | * ssf_flags: 16 bits (unsigned integer) |
| 454 | 469 | * |
| @@ -605,6 +620,7 @@ struct sctp_event_subscribe { · 150 unmodified lines | ||
| 605 | 620 | __u8 sctp_stream_reset_event; |
| 606 | 621 | __u8 sctp_assoc_reset_event; |
| 607 | 622 | __u8 sctp_stream_change_event; |
| 623 | + __u8 sctp_send_failure_event_event; | |
| 608 | 624 | }; |
| 609 | 625 | |
| 610 | 626 | /* |
| @@ -632,6 +648,7 @@ union sctp_notification { · 21 unmodified lines | ||
| 632 | 648 | struct sctp_stream_reset_event sn_strreset_event; |
| 633 | 649 | struct sctp_assoc_reset_event sn_assocreset_event; |
| 634 | 650 | struct sctp_stream_change_event sn_strchange_event; |
| 651 | + struct sctp_send_failed_event sn_send_failed_event; | |
| 635 | 652 | }; |
| 636 | 653 | |
| 637 | 654 | /* Section 5.3.1 |
| @@ -667,7 +684,9 @@ enum sctp_sn_type { · 29 unmodified lines | ||
| 667 | 684 | #define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT |
| 668 | 685 | SCTP_STREAM_CHANGE_EVENT, |
| 669 | 686 | #define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT |
| 670 | − SCTP_SN_TYPE_MAX = SCTP_STREAM_CHANGE_EVENT, | |
| 687 | + SCTP_SEND_FAILED_EVENT, | |
| 688 | +#define SCTP_SEND_FAILED_EVENT SCTP_SEND_FAILED_EVENT | |
| 689 | + SCTP_SN_TYPE_MAX = SCTP_SEND_FAILED_EVENT, | |
| 671 | 690 | #define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX |
| 672 | 691 | }; |
| 673 | 692 | |
| @@ -919,6 +938,7 @@ struct sctp_paddrinfo { · 245 unmodified lines | ||
| 919 | 938 | enum sctp_spinfo_state { |
| 920 | 939 | SCTP_INACTIVE, |
| 921 | 940 | SCTP_PF, |
| 941 | +#define SCTP_POTENTIALLY_FAILED SCTP_PF | |
| 922 | 942 | SCTP_ACTIVE, |
| 923 | 943 | SCTP_UNCONFIRMED, |
| 924 | 944 | SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */ |
| @@ -1068,6 +1088,15 @@ struct sctp_paddrthlds { · 143 unmodified lines | ||
| 1068 | 1088 | __u16 spt_pathpfthld; |
| 1069 | 1089 | }; |
| 1070 | 1090 | |
| 1091 | +/* Use a new structure with spt_pathcpthld for back compatibility */ | |
| 1092 | +struct sctp_paddrthlds_v2 { | |
| 1093 | + sctp_assoc_t spt_assoc_id; | |
| 1094 | + struct sockaddr_storage spt_address; | |
| 1095 | + __u16 spt_pathmaxrxt; | |
| 1096 | + __u16 spt_pathpfthld; | |
| 1097 | + __u16 spt_pathcpthld; | |
| 1098 | +}; | |
| 1099 | + | |
| 1071 | 1100 | /* |
| 1072 | 1101 | * Socket Option for Getting the Association/Stream-Specific PR-SCTP Status |
| 1073 | 1102 | */ |
| @@ -76,6 +76,35 @@ struct seccomp_notif { · 75 unmodified lines | ||
| 76 | 76 | struct seccomp_data data; |
| 77 | 77 | }; |
| 78 | 78 | |
| 79 | +/* | |
| 80 | + * Valid flags for struct seccomp_notif_resp | |
| 81 | + * | |
| 82 | + * Note, the SECCOMP_USER_NOTIF_FLAG_CONTINUE flag must be used with caution! | |
| 83 | + * If set by the process supervising the syscalls of another process the | |
| 84 | + * syscall will continue. This is problematic because of an inherent TOCTOU. | |
| 85 | + * An attacker can exploit the time while the supervised process is waiting on | |
| 86 | + * a response from the supervising process to rewrite syscall arguments which | |
| 87 | + * are passed as pointers of the intercepted syscall. | |
| 88 | + * It should be absolutely clear that this means that the seccomp notifier | |
| 89 | + * _cannot_ be used to implement a security policy! It should only ever be used | |
| 90 | + * in scenarios where a more privileged process supervises the syscalls of a | |
| 91 | + * lesser privileged process to get around kernel-enforced security | |
| 92 | + * restrictions when the privileged process deems this safe. In other words, | |
| 93 | + * in order to continue a syscall the supervising process should be sure that | |
| 94 | + * another security mechanism or the kernel itself will sufficiently block | |
| 95 | + * syscalls if arguments are rewritten to something unsafe. | |
| 96 | + * | |
| 97 | + * Similar precautions should be applied when stacking SECCOMP_RET_USER_NOTIF | |
| 98 | + * or SECCOMP_RET_TRACE. For SECCOMP_RET_USER_NOTIF filters acting on the | |
| 99 | + * same syscall, the most recently added filter takes precedence. This means | |
| 100 | + * that the new SECCOMP_RET_USER_NOTIF filter can override any | |
| 101 | + * SECCOMP_IOCTL_NOTIF_SEND from earlier filters, essentially allowing all | |
| 102 | + * such filtered syscalls to be executed by sending the response | |
| 103 | + * SECCOMP_USER_NOTIF_FLAG_CONTINUE. Note that SECCOMP_RET_TRACE can equally | |
| 104 | + * be overriden by SECCOMP_USER_NOTIF_FLAG_CONTINUE. | |
| 105 | + */ | |
| 106 | +#define SECCOMP_USER_NOTIF_FLAG_CONTINUE (1UL << 0) | |
| 107 | + | |
| 79 | 108 | struct seccomp_notif_resp { |
| 80 | 109 | __u64 id; |
| 81 | 110 | __s64 val; |
| @@ -113,6 +113,25 @@ struct opal_shadow_mbr { · 112 unmodified lines | ||
| 113 | 113 | __u64 size; |
| 114 | 114 | }; |
| 115 | 115 | |
| 116 | +/* Opal table operations */ | |
| 117 | +enum opal_table_ops { | |
| 118 | + OPAL_READ_TABLE, | |
| 119 | + OPAL_WRITE_TABLE, | |
| 120 | +}; | |
| 121 | + | |
| 122 | +#define OPAL_UID_LENGTH 8 | |
| 123 | +struct opal_read_write_table { | |
| 124 | + struct opal_key key; | |
| 125 | + const __u64 data; | |
| 126 | + const __u8 table_uid[OPAL_UID_LENGTH]; | |
| 127 | + __u64 offset; | |
| 128 | + __u64 size; | |
| 129 | +#define OPAL_TABLE_READ (1 << OPAL_READ_TABLE) | |
| 130 | +#define OPAL_TABLE_WRITE (1 << OPAL_WRITE_TABLE) | |
| 131 | + __u64 flags; | |
| 132 | + __u64 priv; | |
| 133 | +}; | |
| 134 | + | |
| 116 | 135 | #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock) |
| 117 | 136 | #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock) |
| 118 | 137 | #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key) |
| @@ -128,5 +147,6 @@ struct opal_shadow_mbr { · 9 unmodified lines | ||
| 128 | 147 | #define IOC_OPAL_PSID_REVERT_TPR _IOW('p', 232, struct opal_key) |
| 129 | 148 | #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done) |
| 130 | 149 | #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr) |
| 150 | +#define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table) | |
| 131 | 151 | |
| 132 | 152 | #endif /* _UAPI_SED_OPAL_H */ |
| @@ -24,8 +24,8 @@ · 23 unmodified lines | ||
| 24 | 24 | /* Obsolete, used only for backwards compatibility and libc5 compiles */ |
| 25 | 25 | struct semid_ds { |
| 26 | 26 | struct ipc_perm sem_perm; /* permissions .. see ipc.h */ |
| 27 | − __kernel_time_t sem_otime; /* last semop time */ | |
| 28 | − __kernel_time_t sem_ctime; /* create/last semctl() time */ | |
| 27 | + __kernel_old_time_t sem_otime; /* last semop time */ | |
| 28 | + __kernel_old_time_t sem_ctime; /* create/last semctl() time */ | |
| 29 | 29 | struct sem *sem_base; /* ptr to first semaphore in array */ |
| 30 | 30 | struct sem_queue *sem_pending; /* pending operations to be processed */ |
| 31 | 31 | struct sem_queue **sem_pending_last; /* last pending operation */ |
| @@ -290,7 +290,7 @@ · 289 unmodified lines | ||
| 290 | 290 | /* Sunix UART */ |
| 291 | 291 | #define PORT_SUNIX 121 |
| 292 | 292 | |
| 293 | −/* Freescale Linflex UART */ | |
| 293 | +/* Freescale LINFlexD UART */ | |
| 294 | 294 | #define PORT_LINFLEXUART 122 |
| 295 | 295 | |
| 296 | 296 | #endif /* _UAPILINUX_SERIAL_CORE_H */ |
| @@ -28,9 +28,9 @@ · 27 unmodified lines | ||
| 28 | 28 | struct shmid_ds { |
| 29 | 29 | struct ipc_perm shm_perm; /* operation perms */ |
| 30 | 30 | int shm_segsz; /* size of segment (bytes) */ |
| 31 | − __kernel_time_t shm_atime; /* last attach time */ | |
| 32 | − __kernel_time_t shm_dtime; /* last detach time */ | |
| 33 | − __kernel_time_t shm_ctime; /* last change time */ | |
| 31 | + __kernel_old_time_t shm_atime; /* last attach time */ | |
| 32 | + __kernel_old_time_t shm_dtime; /* last detach time */ | |
| 33 | + __kernel_old_time_t shm_ctime; /* last change time */ | |
| 34 | 34 | __kernel_ipc_pid_t shm_cpid; /* pid of creator */ |
| 35 | 35 | __kernel_ipc_pid_t shm_lpid; /* pid of last operator */ |
| 36 | 36 | unsigned short shm_nattch; /* no. of current attaches */ |
| @@ -323,4 +323,21 @@ enum · 322 unmodified lines | ||
| 323 | 323 | __LINUX_MIB_XFRMMAX |
| 324 | 324 | }; |
| 325 | 325 | |
| 326 | +/* linux TLS mib definitions */ | |
| 327 | +enum | |
| 328 | +{ | |
| 329 | + LINUX_MIB_TLSNUM = 0, | |
| 330 | + LINUX_MIB_TLSCURRTXSW, /* TlsCurrTxSw */ | |
| 331 | + LINUX_MIB_TLSCURRRXSW, /* TlsCurrRxSw */ | |
| 332 | + LINUX_MIB_TLSCURRTXDEVICE, /* TlsCurrTxDevice */ | |
| 333 | + LINUX_MIB_TLSCURRRXDEVICE, /* TlsCurrRxDevice */ | |
| 334 | + LINUX_MIB_TLSTXSW, /* TlsTxSw */ | |
| 335 | + LINUX_MIB_TLSRXSW, /* TlsRxSw */ | |
| 336 | + LINUX_MIB_TLSTXDEVICE, /* TlsTxDevice */ | |
| 337 | + LINUX_MIB_TLSRXDEVICE, /* TlsRxDevice */ | |
| 338 | + LINUX_MIB_TLSDECRYPTERROR, /* TlsDecryptError */ | |
| 339 | + LINUX_MIB_TLSRXDEVICERESYNC, /* TlsRxDeviceResync */ | |
| 340 | + __LINUX_MIB_TLSMAX | |
| 341 | +}; | |
| 342 | + | |
| 326 | 343 | #endif /* _LINUX_SNMP_H */ |
| @@ -167,8 +167,8 @@ struct statx { · 166 unmodified lines | ||
| 167 | 167 | #define STATX_ATTR_APPEND 0x00000020 /* [I] File is append-only */ |
| 168 | 168 | #define STATX_ATTR_NODUMP 0x00000040 /* [I] File is not to be dumped */ |
| 169 | 169 | #define STATX_ATTR_ENCRYPTED 0x00000800 /* [I] File requires key to decrypt in fs */ |
| 170 | − | |
| 171 | 170 | #define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */ |
| 171 | +#define STATX_ATTR_VERITY 0x00100000 /* [I] Verity protected file */ | |
| 172 | 172 | |
| 173 | 173 | |
| 174 | 174 | #endif /* _UAPI_LINUX_STAT_H */ |
| @@ -50,6 +50,14 @@ enum { · 49 unmodified lines | ||
| 50 | 50 | * TCA_TUNNEL_KEY_ENC_OPTS_ |
| 51 | 51 | * attributes |
| 52 | 52 | */ |
| 53 | + TCA_TUNNEL_KEY_ENC_OPTS_VXLAN, /* Nested | |
| 54 | + * TCA_TUNNEL_KEY_ENC_OPTS_ | |
| 55 | + * attributes | |
| 56 | + */ | |
| 57 | + TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN, /* Nested | |
| 58 | + * TCA_TUNNEL_KEY_ENC_OPTS_ | |
| 59 | + * attributes | |
| 60 | + */ | |
| 53 | 61 | __TCA_TUNNEL_KEY_ENC_OPTS_MAX, |
| 54 | 62 | }; |
| 55 | 63 | |
| @@ -67,4 +75,25 @@ enum { · 11 unmodified lines | ||
| 67 | 75 | #define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \ |
| 68 | 76 | (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1) |
| 69 | 77 | |
| 78 | +enum { | |
| 79 | + TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC, | |
| 80 | + TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP, /* u32 */ | |
| 81 | + __TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX, | |
| 82 | +}; | |
| 83 | + | |
| 84 | +#define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX \ | |
| 85 | + (__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1) | |
| 86 | + | |
| 87 | +enum { | |
| 88 | + TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC, | |
| 89 | + TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER, /* u8 */ | |
| 90 | + TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX, /* be32 */ | |
| 91 | + TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR, /* u8 */ | |
| 92 | + TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID, /* u8 */ | |
| 93 | + __TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX, | |
| 94 | +}; | |
| 95 | + | |
| 96 | +#define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX \ | |
| 97 | + (__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1) | |
| 98 | + | |
| 70 | 99 | #endif |
| @@ -155,6 +155,14 @@ enum { · 154 unmodified lines | ||
| 155 | 155 | TCP_QUEUES_NR, |
| 156 | 156 | }; |
| 157 | 157 | |
| 158 | +/* why fastopen failed from client perspective */ | |
| 159 | +enum tcp_fastopen_client_fail { | |
| 160 | + TFO_STATUS_UNSPEC, /* catch-all */ | |
| 161 | + TFO_COOKIE_UNAVAILABLE, /* if not in TFO_CLIENT_NO_COOKIE mode */ | |
| 162 | + TFO_DATA_NOT_ACKED, /* SYN-ACK did not ack SYN data */ | |
| 163 | + TFO_SYN_RETRANSMITTED, /* SYN-ACK did not ack SYN data after timeout */ | |
| 164 | +}; | |
| 165 | + | |
| 158 | 166 | /* for TCP_INFO socket option */ |
| 159 | 167 | #define TCPI_OPT_TIMESTAMPS 1 |
| 160 | 168 | #define TCPI_OPT_SACK 2 |
| @@ -211,7 +219,7 @@ struct tcp_info { · 50 unmodified lines | ||
| 211 | 219 | __u8 tcpi_backoff; |
| 212 | 220 | __u8 tcpi_options; |
| 213 | 221 | __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; |
| 214 | − __u8 tcpi_delivery_rate_app_limited:1; | |
| 222 | + __u8 tcpi_delivery_rate_app_limited:1, tcpi_fastopen_client_fail:2; | |
| 215 | 223 | |
| 216 | 224 | __u32 tcpi_rto; |
| 217 | 225 | __u32 tcpi_ato; |
| @@ -8,13 +8,13 @@ · 7 unmodified lines | ||
| 8 | 8 | #ifndef _STRUCT_TIMESPEC |
| 9 | 9 | #define _STRUCT_TIMESPEC |
| 10 | 10 | struct timespec { |
| 11 | − __kernel_time_t tv_sec; /* seconds */ | |
| 12 | − long tv_nsec; /* nanoseconds */ | |
| 11 | + __kernel_old_time_t tv_sec; /* seconds */ | |
| 12 | + long tv_nsec; /* nanoseconds */ | |
| 13 | 13 | }; |
| 14 | 14 | #endif |
| 15 | 15 | |
| 16 | 16 | struct timeval { |
| 17 | − __kernel_time_t tv_sec; /* seconds */ | |
| 17 | + __kernel_old_time_t tv_sec; /* seconds */ | |
| 18 | 18 | __kernel_suseconds_t tv_usec; /* microseconds */ |
| 19 | 19 | }; |
| 20 | 20 | |
| @@ -28,6 +28,11 @@ struct __kernel_old_timeval { · 27 unmodified lines | ||
| 28 | 28 | }; |
| 29 | 29 | #endif |
| 30 | 30 | |
| 31 | +struct __kernel_old_timespec { | |
| 32 | + __kernel_old_time_t tv_sec; /* seconds */ | |
| 33 | + long tv_nsec; /* nanoseconds */ | |
| 34 | +}; | |
| 35 | + | |
| 31 | 36 | struct __kernel_sock_timeval { |
| 32 | 37 | __s64 tv_sec; |
| 33 | 38 | __s64 tv_usec; |
| @@ -191,6 +191,7 @@ struct sockaddr_tipc { · 190 unmodified lines | ||
| 191 | 191 | #define TIPC_GROUP_JOIN 135 /* Takes struct tipc_group_req* */ |
| 192 | 192 | #define TIPC_GROUP_LEAVE 136 /* No argument */ |
| 193 | 193 | #define TIPC_SOCK_RECVQ_USED 137 /* Default: none (read only) */ |
| 194 | +#define TIPC_NODELAY 138 /* Default: false */ | |
| 194 | 195 | |
| 195 | 196 | /* |
| 196 | 197 | * Flag values |
| @@ -232,6 +233,27 @@ struct tipc_sioc_nodeid_req { · 35 unmodified lines | ||
| 232 | 233 | char node_id[TIPC_NODEID_LEN]; |
| 233 | 234 | }; |
| 234 | 235 | |
| 236 | +/* | |
| 237 | + * TIPC Crypto, AEAD | |
| 238 | + */ | |
| 239 | +#define TIPC_AEAD_ALG_NAME (32) | |
| 240 | + | |
| 241 | +struct tipc_aead_key { | |
| 242 | + char alg_name[TIPC_AEAD_ALG_NAME]; | |
| 243 | + unsigned int keylen; /* in bytes */ | |
| 244 | + char key[]; | |
| 245 | +}; | |
| 246 | + | |
| 247 | +#define TIPC_AEAD_KEYLEN_MIN (16 + 4) | |
| 248 | +#define TIPC_AEAD_KEYLEN_MAX (32 + 4) | |
| 249 | +#define TIPC_AEAD_KEY_SIZE_MAX (sizeof(struct tipc_aead_key) + \ | |
| 250 | + TIPC_AEAD_KEYLEN_MAX) | |
| 251 | + | |
| 252 | +static inline int tipc_aead_key_size(struct tipc_aead_key *key) | |
| 253 | +{ | |
| 254 | + return sizeof(*key) + key->keylen; | |
| 255 | +} | |
| 256 | + | |
| 235 | 257 | /* The macros and functions below are deprecated: |
| 236 | 258 | */ |
| 237 | 259 | |
| @@ -309,7 +309,7 @@ static inline int TLV_SET(void *tlv, __u16 type, void *data, __u16 len) · 308 unmodified lines | ||
| 309 | 309 | tlv_ptr->tlv_len = htons(tlv_len); |
| 310 | 310 | if (len && data) { |
| 311 | 311 | memcpy(TLV_DATA(tlv_ptr), data, len); |
| 312 | − memset(TLV_DATA(tlv_ptr) + len, 0, TLV_SPACE(len) - tlv_len); | |
| 312 | + memset((char *)TLV_DATA(tlv_ptr) + len, 0, TLV_SPACE(len) - tlv_len); | |
| 313 | 313 | } |
| 314 | 314 | return TLV_SPACE(len); |
| 315 | 315 | } |
| @@ -409,7 +409,7 @@ static inline int TCM_SET(void *msg, __u16 cmd, __u16 flags, · 93 unmodified lines | ||
| 409 | 409 | tcm_hdr->tcm_flags = htons(flags); |
| 410 | 410 | if (data_len && data) { |
| 411 | 411 | memcpy(TCM_DATA(msg), data, data_len); |
| 412 | − memset(TCM_DATA(msg) + data_len, 0, TCM_SPACE(data_len) - msg_len); | |
| 412 | + memset((char *)TCM_DATA(msg) + data_len, 0, TCM_SPACE(data_len) - msg_len); | |
| 413 | 413 | } |
| 414 | 414 | return TCM_SPACE(data_len); |
| 415 | 415 | } |
| @@ -63,6 +63,8 @@ enum { · 62 unmodified lines | ||
| 63 | 63 | TIPC_NL_PEER_REMOVE, |
| 64 | 64 | TIPC_NL_BEARER_ADD, |
| 65 | 65 | TIPC_NL_UDP_GET_REMOTEIP, |
| 66 | + TIPC_NL_KEY_SET, | |
| 67 | + TIPC_NL_KEY_FLUSH, | |
| 66 | 68 | |
| 67 | 69 | __TIPC_NL_CMD_MAX, |
| 68 | 70 | TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1 |
| @@ -160,6 +162,8 @@ enum { · 91 unmodified lines | ||
| 160 | 162 | TIPC_NLA_NODE_UNSPEC, |
| 161 | 163 | TIPC_NLA_NODE_ADDR, /* u32 */ |
| 162 | 164 | TIPC_NLA_NODE_UP, /* flag */ |
| 165 | + TIPC_NLA_NODE_ID, /* data */ | |
| 166 | + TIPC_NLA_NODE_KEY, /* data */ | |
| 163 | 167 | |
| 164 | 168 | __TIPC_NLA_NODE_MAX, |
| 165 | 169 | TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1 |
| @@ -5,8 +5,8 @@ · 4 unmodified lines | ||
| 5 | 5 | #include <linux/types.h> |
| 6 | 6 | |
| 7 | 7 | struct utimbuf { |
| 8 | − __kernel_time_t actime; | |
| 9 | − __kernel_time_t modtime; | |
| 8 | + __kernel_old_time_t actime; | |
| 9 | + __kernel_old_time_t modtime; | |
| 10 | 10 | }; |
| 11 | 11 | |
| 12 | 12 | #endif |
| @@ -1034,6 +1034,7 @@ enum v4l2_jpeg_chroma_subsampling { · 1033 unmodified lines | ||
| 1034 | 1034 | #define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5) |
| 1035 | 1035 | #define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6) |
| 1036 | 1036 | #define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7) |
| 1037 | +#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8) | |
| 1037 | 1038 | |
| 1038 | 1039 | |
| 1039 | 1040 | /* Image processing controls */ |
| @@ -422,6 +422,11 @@ struct v4l2_fract { · 421 unmodified lines | ||
| 422 | 422 | __u32 denominator; |
| 423 | 423 | }; |
| 424 | 424 | |
| 425 | +struct v4l2_area { | |
| 426 | + __u32 width; | |
| 427 | + __u32 height; | |
| 428 | +}; | |
| 429 | + | |
| 425 | 430 | /** |
| 426 | 431 | * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP |
| 427 | 432 | * |
| @@ -755,6 +760,7 @@ struct v4l2_pix_format { · 327 unmodified lines | ||
| 755 | 760 | #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ |
| 756 | 761 | #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ |
| 757 | 762 | #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ |
| 763 | +#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */ | |
| 758 | 764 | |
| 759 | 765 | /* priv field value to indicates that subsequent fields are valid. */ |
| 760 | 766 | #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe |
| @@ -915,11 +921,12 @@ struct v4l2_requestbuffers { · 154 unmodified lines | ||
| 915 | 921 | }; |
| 916 | 922 | |
| 917 | 923 | /* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */ |
| 918 | −#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0) | |
| 919 | −#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1) | |
| 920 | −#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2) | |
| 921 | −#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3) | |
| 922 | −#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) | |
| 924 | +#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0) | |
| 925 | +#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1) | |
| 926 | +#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2) | |
| 927 | +#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3) | |
| 928 | +#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) | |
| 929 | +#define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) | |
| 923 | 930 | |
| 924 | 931 | /** |
| 925 | 932 | * struct v4l2_plane - plane info for multi-planar buffers |
| @@ -1041,6 +1048,8 @@ static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv) · 115 unmodified lines | ||
| 1041 | 1048 | #define V4L2_BUF_FLAG_IN_REQUEST 0x00000080 |
| 1042 | 1049 | /* timecode field is valid */ |
| 1043 | 1050 | #define V4L2_BUF_FLAG_TIMECODE 0x00000100 |
| 1051 | +/* Don't return the capture buffer until OUTPUT timestamp changes */ | |
| 1052 | +#define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200 | |
| 1044 | 1053 | /* Buffer is prepared for queuing */ |
| 1045 | 1054 | #define V4L2_BUF_FLAG_PREPARED 0x00000400 |
| 1046 | 1055 | /* Cache handling flags */ |
| @@ -1675,6 +1684,7 @@ struct v4l2_ext_control { · 628 unmodified lines | ||
| 1675 | 1684 | __u8 __user *p_u8; |
| 1676 | 1685 | __u16 __user *p_u16; |
| 1677 | 1686 | __u32 __user *p_u32; |
| 1687 | + struct v4l2_area __user *p_area; | |
| 1678 | 1688 | void __user *ptr; |
| 1679 | 1689 | }; |
| 1680 | 1690 | } __attribute__ ((packed)); |
| @@ -1720,6 +1730,7 @@ enum v4l2_ctrl_type { · 39 unmodified lines | ||
| 1720 | 1730 | V4L2_CTRL_TYPE_U8 = 0x0100, |
| 1721 | 1731 | V4L2_CTRL_TYPE_U16 = 0x0101, |
| 1722 | 1732 | V4L2_CTRL_TYPE_U32 = 0x0102, |
| 1733 | + V4L2_CTRL_TYPE_AREA = 0x0106, | |
| 1723 | 1734 | }; |
| 1724 | 1735 | |
| 1725 | 1736 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ |
| @@ -1975,6 +1986,7 @@ struct v4l2_encoder_cmd { · 249 unmodified lines | ||
| 1975 | 1986 | #define V4L2_DEC_CMD_STOP (1) |
| 1976 | 1987 | #define V4L2_DEC_CMD_PAUSE (2) |
| 1977 | 1988 | #define V4L2_DEC_CMD_RESUME (3) |
| 1989 | +#define V4L2_DEC_CMD_FLUSH (4) | |
| 1978 | 1990 | |
| 1979 | 1991 | /* Flags for V4L2_DEC_CMD_START */ |
| 1980 | 1992 | #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0) |
| @@ -169,7 +169,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, · 168 unmodified lines | ||
| 169 | 169 | { |
| 170 | 170 | vr->num = num; |
| 171 | 171 | vr->desc = p; |
| 172 | − vr->avail = p + num*sizeof(struct vring_desc); | |
| 172 | + vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc)); | |
| 173 | 173 | vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16) |
| 174 | 174 | + align-1) & ~(align - 1)); |
| 175 | 175 | } |