diff options
Diffstat (limited to 'include')
32 files changed, 248 insertions, 225 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 04086c5be930..04a7f31301f8 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -199,6 +199,9 @@ int drm_err(const char *func, const char *format, ...); | |||
199 | #define DRM_INFO(fmt, ...) \ | 199 | #define DRM_INFO(fmt, ...) \ |
200 | printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__) | 200 | printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__) |
201 | 201 | ||
202 | #define DRM_INFO_ONCE(fmt, ...) \ | ||
203 | printk_once(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__) | ||
204 | |||
202 | /** | 205 | /** |
203 | * Debug output. | 206 | * Debug output. |
204 | * | 207 | * |
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index fd8bf3219ef7..b4a745d7d9a9 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h | |||
@@ -115,7 +115,6 @@ extern int copy_strings_kernel(int argc, const char *const *argv, | |||
115 | extern int prepare_bprm_creds(struct linux_binprm *bprm); | 115 | extern int prepare_bprm_creds(struct linux_binprm *bprm); |
116 | extern void install_exec_creds(struct linux_binprm *bprm); | 116 | extern void install_exec_creds(struct linux_binprm *bprm); |
117 | extern void set_binfmt(struct linux_binfmt *new); | 117 | extern void set_binfmt(struct linux_binfmt *new); |
118 | extern void free_bprm(struct linux_binprm *); | ||
119 | extern ssize_t read_code(struct file *, unsigned long, loff_t, size_t); | 118 | extern ssize_t read_code(struct file *, unsigned long, loff_t, size_t); |
120 | 119 | ||
121 | #endif /* _LINUX_BINFMTS_H */ | 120 | #endif /* _LINUX_BINFMTS_H */ |
diff --git a/include/linux/can/skb.h b/include/linux/can/skb.h index 2f0543f7510c..f9bbbb472663 100644 --- a/include/linux/can/skb.h +++ b/include/linux/can/skb.h | |||
@@ -11,7 +11,9 @@ | |||
11 | #define CAN_SKB_H | 11 | #define CAN_SKB_H |
12 | 12 | ||
13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
14 | #include <linux/skbuff.h> | ||
14 | #include <linux/can.h> | 15 | #include <linux/can.h> |
16 | #include <net/sock.h> | ||
15 | 17 | ||
16 | /* | 18 | /* |
17 | * The struct can_skb_priv is used to transport additional information along | 19 | * The struct can_skb_priv is used to transport additional information along |
@@ -42,4 +44,40 @@ static inline void can_skb_reserve(struct sk_buff *skb) | |||
42 | skb_reserve(skb, sizeof(struct can_skb_priv)); | 44 | skb_reserve(skb, sizeof(struct can_skb_priv)); |
43 | } | 45 | } |
44 | 46 | ||
47 | static inline void can_skb_destructor(struct sk_buff *skb) | ||
48 | { | ||
49 | sock_put(skb->sk); | ||
50 | } | ||
51 | |||
52 | static inline void can_skb_set_owner(struct sk_buff *skb, struct sock *sk) | ||
53 | { | ||
54 | if (sk) { | ||
55 | sock_hold(sk); | ||
56 | skb->destructor = can_skb_destructor; | ||
57 | skb->sk = sk; | ||
58 | } | ||
59 | } | ||
60 | |||
61 | /* | ||
62 | * returns an unshared skb owned by the original sock to be echo'ed back | ||
63 | */ | ||
64 | static inline struct sk_buff *can_create_echo_skb(struct sk_buff *skb) | ||
65 | { | ||
66 | if (skb_shared(skb)) { | ||
67 | struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); | ||
68 | |||
69 | if (likely(nskb)) { | ||
70 | can_skb_set_owner(nskb, skb->sk); | ||
71 | consume_skb(skb); | ||
72 | return nskb; | ||
73 | } else { | ||
74 | kfree_skb(skb); | ||
75 | return NULL; | ||
76 | } | ||
77 | } | ||
78 | |||
79 | /* we can assume to have an unshared skb with proper owner */ | ||
80 | return skb; | ||
81 | } | ||
82 | |||
45 | #endif /* CAN_SKB_H */ | 83 | #endif /* CAN_SKB_H */ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 09f553c59813..60829565e552 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2079,6 +2079,7 @@ extern struct file * dentry_open(const struct path *, int, const struct cred *); | |||
2079 | extern int filp_close(struct file *, fl_owner_t id); | 2079 | extern int filp_close(struct file *, fl_owner_t id); |
2080 | 2080 | ||
2081 | extern struct filename *getname(const char __user *); | 2081 | extern struct filename *getname(const char __user *); |
2082 | extern struct filename *getname_kernel(const char *); | ||
2082 | 2083 | ||
2083 | enum { | 2084 | enum { |
2084 | FILE_CREATED = 1, | 2085 | FILE_CREATED = 1, |
@@ -2273,7 +2274,13 @@ extern int filemap_fdatawrite_range(struct address_space *mapping, | |||
2273 | extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end, | 2274 | extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end, |
2274 | int datasync); | 2275 | int datasync); |
2275 | extern int vfs_fsync(struct file *file, int datasync); | 2276 | extern int vfs_fsync(struct file *file, int datasync); |
2276 | extern int generic_write_sync(struct file *file, loff_t pos, loff_t count); | 2277 | static inline int generic_write_sync(struct file *file, loff_t pos, loff_t count) |
2278 | { | ||
2279 | if (!(file->f_flags & O_DSYNC) && !IS_SYNC(file->f_mapping->host)) | ||
2280 | return 0; | ||
2281 | return vfs_fsync_range(file, pos, pos + count - 1, | ||
2282 | (file->f_flags & __O_SYNC) ? 0 : 1); | ||
2283 | } | ||
2277 | extern void emergency_sync(void); | 2284 | extern void emergency_sync(void); |
2278 | extern void emergency_remount(void); | 2285 | extern void emergency_remount(void); |
2279 | #ifdef CONFIG_BLOCK | 2286 | #ifdef CONFIG_BLOCK |
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index 4d34dbbbad4d..7a8144fef406 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h | |||
@@ -4,8 +4,6 @@ | |||
4 | #include <linux/err.h> | 4 | #include <linux/err.h> |
5 | #include <linux/kernel.h> | 5 | #include <linux/kernel.h> |
6 | 6 | ||
7 | #ifdef CONFIG_GPIOLIB | ||
8 | |||
9 | struct device; | 7 | struct device; |
10 | struct gpio_chip; | 8 | struct gpio_chip; |
11 | 9 | ||
@@ -18,6 +16,8 @@ struct gpio_chip; | |||
18 | */ | 16 | */ |
19 | struct gpio_desc; | 17 | struct gpio_desc; |
20 | 18 | ||
19 | #ifdef CONFIG_GPIOLIB | ||
20 | |||
21 | /* Acquire and dispose GPIOs */ | 21 | /* Acquire and dispose GPIOs */ |
22 | struct gpio_desc *__must_check gpiod_get(struct device *dev, | 22 | struct gpio_desc *__must_check gpiod_get(struct device *dev, |
23 | const char *con_id); | 23 | const char *con_id); |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 3ccfcecf8999..b2fb167b2e6d 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -379,12 +379,14 @@ struct nfs_openres { | |||
379 | * Arguments to the open_confirm call. | 379 | * Arguments to the open_confirm call. |
380 | */ | 380 | */ |
381 | struct nfs_open_confirmargs { | 381 | struct nfs_open_confirmargs { |
382 | struct nfs4_sequence_args seq_args; | ||
382 | const struct nfs_fh * fh; | 383 | const struct nfs_fh * fh; |
383 | nfs4_stateid * stateid; | 384 | nfs4_stateid * stateid; |
384 | struct nfs_seqid * seqid; | 385 | struct nfs_seqid * seqid; |
385 | }; | 386 | }; |
386 | 387 | ||
387 | struct nfs_open_confirmres { | 388 | struct nfs_open_confirmres { |
389 | struct nfs4_sequence_res seq_res; | ||
388 | nfs4_stateid stateid; | 390 | nfs4_stateid stateid; |
389 | struct nfs_seqid * seqid; | 391 | struct nfs_seqid * seqid; |
390 | }; | 392 | }; |
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 26ebcf41c213..69ae03f6eb15 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h | |||
@@ -80,13 +80,14 @@ struct nvme_dev { | |||
80 | struct dma_pool *prp_small_pool; | 80 | struct dma_pool *prp_small_pool; |
81 | int instance; | 81 | int instance; |
82 | int queue_count; | 82 | int queue_count; |
83 | int db_stride; | 83 | u32 db_stride; |
84 | u32 ctrl_config; | 84 | u32 ctrl_config; |
85 | struct msix_entry *entry; | 85 | struct msix_entry *entry; |
86 | struct nvme_bar __iomem *bar; | 86 | struct nvme_bar __iomem *bar; |
87 | struct list_head namespaces; | 87 | struct list_head namespaces; |
88 | struct kref kref; | 88 | struct kref kref; |
89 | struct miscdevice miscdev; | 89 | struct miscdevice miscdev; |
90 | struct work_struct reset_work; | ||
90 | char name[12]; | 91 | char name[12]; |
91 | char serial[20]; | 92 | char serial[20]; |
92 | char model[40]; | 93 | char model[40]; |
@@ -94,6 +95,8 @@ struct nvme_dev { | |||
94 | u32 max_hw_sectors; | 95 | u32 max_hw_sectors; |
95 | u32 stripe_size; | 96 | u32 stripe_size; |
96 | u16 oncs; | 97 | u16 oncs; |
98 | u16 abort_limit; | ||
99 | u8 initialized; | ||
97 | }; | 100 | }; |
98 | 101 | ||
99 | /* | 102 | /* |
@@ -165,6 +168,7 @@ int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11, | |||
165 | struct sg_io_hdr; | 168 | struct sg_io_hdr; |
166 | 169 | ||
167 | int nvme_sg_io(struct nvme_ns *ns, struct sg_io_hdr __user *u_hdr); | 170 | int nvme_sg_io(struct nvme_ns *ns, struct sg_io_hdr __user *u_hdr); |
171 | int nvme_sg_io32(struct nvme_ns *ns, unsigned long arg); | ||
168 | int nvme_sg_get_version_num(int __user *ip); | 172 | int nvme_sg_get_version_num(int __user *ip); |
169 | 173 | ||
170 | #endif /* _LINUX_NVME_H */ | 174 | #endif /* _LINUX_NVME_H */ |
diff --git a/include/linux/of.h b/include/linux/of.h index 70c64ba17fa5..435cb995904d 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -169,35 +169,15 @@ static inline const char *of_node_full_name(const struct device_node *np) | |||
169 | 169 | ||
170 | extern struct device_node *of_find_node_by_name(struct device_node *from, | 170 | extern struct device_node *of_find_node_by_name(struct device_node *from, |
171 | const char *name); | 171 | const char *name); |
172 | #define for_each_node_by_name(dn, name) \ | ||
173 | for (dn = of_find_node_by_name(NULL, name); dn; \ | ||
174 | dn = of_find_node_by_name(dn, name)) | ||
175 | extern struct device_node *of_find_node_by_type(struct device_node *from, | 172 | extern struct device_node *of_find_node_by_type(struct device_node *from, |
176 | const char *type); | 173 | const char *type); |
177 | #define for_each_node_by_type(dn, type) \ | ||
178 | for (dn = of_find_node_by_type(NULL, type); dn; \ | ||
179 | dn = of_find_node_by_type(dn, type)) | ||
180 | extern struct device_node *of_find_compatible_node(struct device_node *from, | 174 | extern struct device_node *of_find_compatible_node(struct device_node *from, |
181 | const char *type, const char *compat); | 175 | const char *type, const char *compat); |
182 | #define for_each_compatible_node(dn, type, compatible) \ | ||
183 | for (dn = of_find_compatible_node(NULL, type, compatible); dn; \ | ||
184 | dn = of_find_compatible_node(dn, type, compatible)) | ||
185 | extern struct device_node *of_find_matching_node_and_match( | 176 | extern struct device_node *of_find_matching_node_and_match( |
186 | struct device_node *from, | 177 | struct device_node *from, |
187 | const struct of_device_id *matches, | 178 | const struct of_device_id *matches, |
188 | const struct of_device_id **match); | 179 | const struct of_device_id **match); |
189 | static inline struct device_node *of_find_matching_node( | 180 | |
190 | struct device_node *from, | ||
191 | const struct of_device_id *matches) | ||
192 | { | ||
193 | return of_find_matching_node_and_match(from, matches, NULL); | ||
194 | } | ||
195 | #define for_each_matching_node(dn, matches) \ | ||
196 | for (dn = of_find_matching_node(NULL, matches); dn; \ | ||
197 | dn = of_find_matching_node(dn, matches)) | ||
198 | #define for_each_matching_node_and_match(dn, matches, match) \ | ||
199 | for (dn = of_find_matching_node_and_match(NULL, matches, match); \ | ||
200 | dn; dn = of_find_matching_node_and_match(dn, matches, match)) | ||
201 | extern struct device_node *of_find_node_by_path(const char *path); | 181 | extern struct device_node *of_find_node_by_path(const char *path); |
202 | extern struct device_node *of_find_node_by_phandle(phandle handle); | 182 | extern struct device_node *of_find_node_by_phandle(phandle handle); |
203 | extern struct device_node *of_get_parent(const struct device_node *node); | 183 | extern struct device_node *of_get_parent(const struct device_node *node); |
@@ -209,43 +189,11 @@ extern struct device_node *of_get_next_available_child( | |||
209 | 189 | ||
210 | extern struct device_node *of_get_child_by_name(const struct device_node *node, | 190 | extern struct device_node *of_get_child_by_name(const struct device_node *node, |
211 | const char *name); | 191 | const char *name); |
212 | #define for_each_child_of_node(parent, child) \ | ||
213 | for (child = of_get_next_child(parent, NULL); child != NULL; \ | ||
214 | child = of_get_next_child(parent, child)) | ||
215 | |||
216 | #define for_each_available_child_of_node(parent, child) \ | ||
217 | for (child = of_get_next_available_child(parent, NULL); child != NULL; \ | ||
218 | child = of_get_next_available_child(parent, child)) | ||
219 | |||
220 | static inline int of_get_child_count(const struct device_node *np) | ||
221 | { | ||
222 | struct device_node *child; | ||
223 | int num = 0; | ||
224 | |||
225 | for_each_child_of_node(np, child) | ||
226 | num++; | ||
227 | |||
228 | return num; | ||
229 | } | ||
230 | |||
231 | static inline int of_get_available_child_count(const struct device_node *np) | ||
232 | { | ||
233 | struct device_node *child; | ||
234 | int num = 0; | ||
235 | |||
236 | for_each_available_child_of_node(np, child) | ||
237 | num++; | ||
238 | |||
239 | return num; | ||
240 | } | ||
241 | 192 | ||
242 | /* cache lookup */ | 193 | /* cache lookup */ |
243 | extern struct device_node *of_find_next_cache_node(const struct device_node *); | 194 | extern struct device_node *of_find_next_cache_node(const struct device_node *); |
244 | extern struct device_node *of_find_node_with_property( | 195 | extern struct device_node *of_find_node_with_property( |
245 | struct device_node *from, const char *prop_name); | 196 | struct device_node *from, const char *prop_name); |
246 | #define for_each_node_with_property(dn, prop_name) \ | ||
247 | for (dn = of_find_node_with_property(NULL, prop_name); dn; \ | ||
248 | dn = of_find_node_with_property(dn, prop_name)) | ||
249 | 197 | ||
250 | extern struct property *of_find_property(const struct device_node *np, | 198 | extern struct property *of_find_property(const struct device_node *np, |
251 | const char *name, | 199 | const char *name, |
@@ -367,42 +315,53 @@ static inline struct device_node *of_find_node_by_name(struct device_node *from, | |||
367 | return NULL; | 315 | return NULL; |
368 | } | 316 | } |
369 | 317 | ||
370 | static inline struct device_node *of_get_parent(const struct device_node *node) | 318 | static inline struct device_node *of_find_node_by_type(struct device_node *from, |
319 | const char *type) | ||
371 | { | 320 | { |
372 | return NULL; | 321 | return NULL; |
373 | } | 322 | } |
374 | 323 | ||
375 | static inline bool of_have_populated_dt(void) | 324 | static inline struct device_node *of_find_matching_node_and_match( |
325 | struct device_node *from, | ||
326 | const struct of_device_id *matches, | ||
327 | const struct of_device_id **match) | ||
376 | { | 328 | { |
377 | return false; | 329 | return NULL; |
378 | } | 330 | } |
379 | 331 | ||
380 | /* Kill an unused variable warning on a device_node pointer */ | 332 | static inline struct device_node *of_get_parent(const struct device_node *node) |
381 | static inline void __of_use_dn(const struct device_node *np) | ||
382 | { | 333 | { |
334 | return NULL; | ||
383 | } | 335 | } |
384 | 336 | ||
385 | #define for_each_child_of_node(parent, child) \ | 337 | static inline struct device_node *of_get_next_child( |
386 | while (__of_use_dn(parent), __of_use_dn(child), 0) | 338 | const struct device_node *node, struct device_node *prev) |
339 | { | ||
340 | return NULL; | ||
341 | } | ||
387 | 342 | ||
388 | #define for_each_available_child_of_node(parent, child) \ | 343 | static inline struct device_node *of_get_next_available_child( |
389 | while (0) | 344 | const struct device_node *node, struct device_node *prev) |
345 | { | ||
346 | return NULL; | ||
347 | } | ||
390 | 348 | ||
391 | static inline struct device_node *of_get_child_by_name( | 349 | static inline struct device_node *of_find_node_with_property( |
392 | const struct device_node *node, | 350 | struct device_node *from, const char *prop_name) |
393 | const char *name) | ||
394 | { | 351 | { |
395 | return NULL; | 352 | return NULL; |
396 | } | 353 | } |
397 | 354 | ||
398 | static inline int of_get_child_count(const struct device_node *np) | 355 | static inline bool of_have_populated_dt(void) |
399 | { | 356 | { |
400 | return 0; | 357 | return false; |
401 | } | 358 | } |
402 | 359 | ||
403 | static inline int of_get_available_child_count(const struct device_node *np) | 360 | static inline struct device_node *of_get_child_by_name( |
361 | const struct device_node *node, | ||
362 | const char *name) | ||
404 | { | 363 | { |
405 | return 0; | 364 | return NULL; |
406 | } | 365 | } |
407 | 366 | ||
408 | static inline int of_device_is_compatible(const struct device_node *device, | 367 | static inline int of_device_is_compatible(const struct device_node *device, |
@@ -569,6 +528,13 @@ extern int of_node_to_nid(struct device_node *np); | |||
569 | static inline int of_node_to_nid(struct device_node *device) { return 0; } | 528 | static inline int of_node_to_nid(struct device_node *device) { return 0; } |
570 | #endif | 529 | #endif |
571 | 530 | ||
531 | static inline struct device_node *of_find_matching_node( | ||
532 | struct device_node *from, | ||
533 | const struct of_device_id *matches) | ||
534 | { | ||
535 | return of_find_matching_node_and_match(from, matches, NULL); | ||
536 | } | ||
537 | |||
572 | /** | 538 | /** |
573 | * of_property_read_bool - Findfrom a property | 539 | * of_property_read_bool - Findfrom a property |
574 | * @np: device node from which the property value is to be read. | 540 | * @np: device node from which the property value is to be read. |
@@ -618,6 +584,55 @@ static inline int of_property_read_u32(const struct device_node *np, | |||
618 | s; \ | 584 | s; \ |
619 | s = of_prop_next_string(prop, s)) | 585 | s = of_prop_next_string(prop, s)) |
620 | 586 | ||
587 | #define for_each_node_by_name(dn, name) \ | ||
588 | for (dn = of_find_node_by_name(NULL, name); dn; \ | ||
589 | dn = of_find_node_by_name(dn, name)) | ||
590 | #define for_each_node_by_type(dn, type) \ | ||
591 | for (dn = of_find_node_by_type(NULL, type); dn; \ | ||
592 | dn = of_find_node_by_type(dn, type)) | ||
593 | #define for_each_compatible_node(dn, type, compatible) \ | ||
594 | for (dn = of_find_compatible_node(NULL, type, compatible); dn; \ | ||
595 | dn = of_find_compatible_node(dn, type, compatible)) | ||
596 | #define for_each_matching_node(dn, matches) \ | ||
597 | for (dn = of_find_matching_node(NULL, matches); dn; \ | ||
598 | dn = of_find_matching_node(dn, matches)) | ||
599 | #define for_each_matching_node_and_match(dn, matches, match) \ | ||
600 | for (dn = of_find_matching_node_and_match(NULL, matches, match); \ | ||
601 | dn; dn = of_find_matching_node_and_match(dn, matches, match)) | ||
602 | |||
603 | #define for_each_child_of_node(parent, child) \ | ||
604 | for (child = of_get_next_child(parent, NULL); child != NULL; \ | ||
605 | child = of_get_next_child(parent, child)) | ||
606 | #define for_each_available_child_of_node(parent, child) \ | ||
607 | for (child = of_get_next_available_child(parent, NULL); child != NULL; \ | ||
608 | child = of_get_next_available_child(parent, child)) | ||
609 | |||
610 | #define for_each_node_with_property(dn, prop_name) \ | ||
611 | for (dn = of_find_node_with_property(NULL, prop_name); dn; \ | ||
612 | dn = of_find_node_with_property(dn, prop_name)) | ||
613 | |||
614 | static inline int of_get_child_count(const struct device_node *np) | ||
615 | { | ||
616 | struct device_node *child; | ||
617 | int num = 0; | ||
618 | |||
619 | for_each_child_of_node(np, child) | ||
620 | num++; | ||
621 | |||
622 | return num; | ||
623 | } | ||
624 | |||
625 | static inline int of_get_available_child_count(const struct device_node *np) | ||
626 | { | ||
627 | struct device_node *child; | ||
628 | int num = 0; | ||
629 | |||
630 | for_each_available_child_of_node(np, child) | ||
631 | num++; | ||
632 | |||
633 | return num; | ||
634 | } | ||
635 | |||
621 | #if defined(CONFIG_PROC_FS) && defined(CONFIG_PROC_DEVICETREE) | 636 | #if defined(CONFIG_PROC_FS) && defined(CONFIG_PROC_DEVICETREE) |
622 | extern void proc_device_tree_add_node(struct device_node *, struct proc_dir_entry *); | 637 | extern void proc_device_tree_add_node(struct device_node *, struct proc_dir_entry *); |
623 | extern void proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop); | 638 | extern void proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop); |
diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 8d7dd6768cb7..ef370210ffb2 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h | |||
@@ -78,11 +78,13 @@ static inline int of_device_uevent_modalias(struct device *dev, | |||
78 | 78 | ||
79 | static inline void of_device_node_put(struct device *dev) { } | 79 | static inline void of_device_node_put(struct device *dev) { } |
80 | 80 | ||
81 | static inline const struct of_device_id *of_match_device( | 81 | static inline const struct of_device_id *__of_match_device( |
82 | const struct of_device_id *matches, const struct device *dev) | 82 | const struct of_device_id *matches, const struct device *dev) |
83 | { | 83 | { |
84 | return NULL; | 84 | return NULL; |
85 | } | 85 | } |
86 | #define of_match_device(matches, dev) \ | ||
87 | __of_match_device(of_match_ptr(matches), (dev)) | ||
86 | 88 | ||
87 | static inline struct device_node *of_cpu_device_node_get(int cpu) | 89 | static inline struct device_node *of_cpu_device_node_get(int cpu) |
88 | { | 90 | { |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index e464b4e987e8..d1fe1a761047 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -228,9 +228,9 @@ PAGEFLAG(OwnerPriv1, owner_priv_1) TESTCLEARFLAG(OwnerPriv1, owner_priv_1) | |||
228 | TESTPAGEFLAG(Writeback, writeback) TESTSCFLAG(Writeback, writeback) | 228 | TESTPAGEFLAG(Writeback, writeback) TESTSCFLAG(Writeback, writeback) |
229 | PAGEFLAG(MappedToDisk, mappedtodisk) | 229 | PAGEFLAG(MappedToDisk, mappedtodisk) |
230 | 230 | ||
231 | /* PG_readahead is only used for file reads; PG_reclaim is only for writes */ | 231 | /* PG_readahead is only used for reads; PG_reclaim is only for writes */ |
232 | PAGEFLAG(Reclaim, reclaim) TESTCLEARFLAG(Reclaim, reclaim) | 232 | PAGEFLAG(Reclaim, reclaim) TESTCLEARFLAG(Reclaim, reclaim) |
233 | PAGEFLAG(Readahead, reclaim) /* Reminder to do async read-ahead */ | 233 | PAGEFLAG(Readahead, reclaim) TESTCLEARFLAG(Readahead, reclaim) |
234 | 234 | ||
235 | #ifdef CONFIG_HIGHMEM | 235 | #ifdef CONFIG_HIGHMEM |
236 | /* | 236 | /* |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 68a0e84463a0..a781dec1cd0b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -128,6 +128,7 @@ struct bio_list; | |||
128 | struct fs_struct; | 128 | struct fs_struct; |
129 | struct perf_event_context; | 129 | struct perf_event_context; |
130 | struct blk_plug; | 130 | struct blk_plug; |
131 | struct filename; | ||
131 | 132 | ||
132 | /* | 133 | /* |
133 | * List of flags we want to share for kernel threads, | 134 | * List of flags we want to share for kernel threads, |
@@ -2311,7 +2312,7 @@ extern void do_group_exit(int); | |||
2311 | extern int allow_signal(int); | 2312 | extern int allow_signal(int); |
2312 | extern int disallow_signal(int); | 2313 | extern int disallow_signal(int); |
2313 | 2314 | ||
2314 | extern int do_execve(const char *, | 2315 | extern int do_execve(struct filename *, |
2315 | const char __user * const __user *, | 2316 | const char __user * const __user *, |
2316 | const char __user * const __user *); | 2317 | const char __user * const __user *); |
2317 | extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *); | 2318 | extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *); |
diff --git a/include/linux/smp.h b/include/linux/smp.h index 3834f43f9993..6ae004e437ea 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
@@ -188,6 +188,9 @@ static inline void kick_all_cpus_sync(void) { } | |||
188 | */ | 188 | */ |
189 | extern void arch_disable_smp_support(void); | 189 | extern void arch_disable_smp_support(void); |
190 | 190 | ||
191 | extern void arch_enable_nonboot_cpus_begin(void); | ||
192 | extern void arch_enable_nonboot_cpus_end(void); | ||
193 | |||
191 | void smp_setup_processor_id(void); | 194 | void smp_setup_processor_id(void); |
192 | 195 | ||
193 | #endif /* __LINUX_SMP_H */ | 196 | #endif /* __LINUX_SMP_H */ |
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index a1d4ca290862..4203c66d8803 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
@@ -273,7 +273,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
273 | * message while queuing transfers that arrive in the meantime. When the | 273 | * message while queuing transfers that arrive in the meantime. When the |
274 | * driver is finished with this message, it must call | 274 | * driver is finished with this message, it must call |
275 | * spi_finalize_current_message() so the subsystem can issue the next | 275 | * spi_finalize_current_message() so the subsystem can issue the next |
276 | * transfer | 276 | * message |
277 | * @unprepare_transfer_hardware: there are currently no more messages on the | 277 | * @unprepare_transfer_hardware: there are currently no more messages on the |
278 | * queue so the subsystem notifies the driver that it may relax the | 278 | * queue so the subsystem notifies the driver that it may relax the |
279 | * hardware by issuing this call | 279 | * hardware by issuing this call |
@@ -287,7 +287,10 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
287 | * - return 1 if the transfer is still in progress. When | 287 | * - return 1 if the transfer is still in progress. When |
288 | * the driver is finished with this transfer it must | 288 | * the driver is finished with this transfer it must |
289 | * call spi_finalize_current_transfer() so the subsystem | 289 | * call spi_finalize_current_transfer() so the subsystem |
290 | * can issue the next transfer | 290 | * can issue the next transfer. Note: transfer_one and |
291 | * transfer_one_message are mutually exclusive; when both | ||
292 | * are set, the generic subsystem does not call your | ||
293 | * transfer_one callback. | ||
291 | * @unprepare_message: undo any work done by prepare_message(). | 294 | * @unprepare_message: undo any work done by prepare_message(). |
292 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS | 295 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS |
293 | * number. Any individual value may be -ENOENT for CS lines that | 296 | * number. Any individual value may be -ENOENT for CS lines that |
diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index c557c6d096de..3a712e2e7d76 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h | |||
@@ -71,12 +71,14 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, | |||
71 | THP_ZERO_PAGE_ALLOC, | 71 | THP_ZERO_PAGE_ALLOC, |
72 | THP_ZERO_PAGE_ALLOC_FAILED, | 72 | THP_ZERO_PAGE_ALLOC_FAILED, |
73 | #endif | 73 | #endif |
74 | #ifdef CONFIG_DEBUG_TLBFLUSH | ||
74 | #ifdef CONFIG_SMP | 75 | #ifdef CONFIG_SMP |
75 | NR_TLB_REMOTE_FLUSH, /* cpu tried to flush others' tlbs */ | 76 | NR_TLB_REMOTE_FLUSH, /* cpu tried to flush others' tlbs */ |
76 | NR_TLB_REMOTE_FLUSH_RECEIVED,/* cpu received ipi for flush */ | 77 | NR_TLB_REMOTE_FLUSH_RECEIVED,/* cpu received ipi for flush */ |
77 | #endif | 78 | #endif /* CONFIG_SMP */ |
78 | NR_TLB_LOCAL_FLUSH_ALL, | 79 | NR_TLB_LOCAL_FLUSH_ALL, |
79 | NR_TLB_LOCAL_FLUSH_ONE, | 80 | NR_TLB_LOCAL_FLUSH_ONE, |
81 | #endif /* CONFIG_DEBUG_TLBFLUSH */ | ||
80 | NR_VM_EVENT_ITEMS | 82 | NR_VM_EVENT_ITEMS |
81 | }; | 83 | }; |
82 | 84 | ||
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index a67b38415768..67ce70c8279b 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h | |||
@@ -83,6 +83,14 @@ static inline void vm_events_fold_cpu(int cpu) | |||
83 | #define count_vm_numa_events(x, y) do { (void)(y); } while (0) | 83 | #define count_vm_numa_events(x, y) do { (void)(y); } while (0) |
84 | #endif /* CONFIG_NUMA_BALANCING */ | 84 | #endif /* CONFIG_NUMA_BALANCING */ |
85 | 85 | ||
86 | #ifdef CONFIG_DEBUG_TLBFLUSH | ||
87 | #define count_vm_tlb_event(x) count_vm_event(x) | ||
88 | #define count_vm_tlb_events(x, y) count_vm_events(x, y) | ||
89 | #else | ||
90 | #define count_vm_tlb_event(x) do {} while (0) | ||
91 | #define count_vm_tlb_events(x, y) do { (void)(y); } while (0) | ||
92 | #endif | ||
93 | |||
86 | #define __count_zone_vm_events(item, zone, delta) \ | 94 | #define __count_zone_vm_events(item, zone, delta) \ |
87 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + \ | 95 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + \ |
88 | zone_idx(zone), delta) | 96 | zone_idx(zone), delta) |
diff --git a/include/net/datalink.h b/include/net/datalink.h index deb7ca75db48..93cb18f729b5 100644 --- a/include/net/datalink.h +++ b/include/net/datalink.h | |||
@@ -15,4 +15,6 @@ struct datalink_proto { | |||
15 | struct list_head node; | 15 | struct list_head node; |
16 | }; | 16 | }; |
17 | 17 | ||
18 | struct datalink_proto *make_EII_client(void); | ||
19 | void destroy_EII_client(struct datalink_proto *dl); | ||
18 | #endif | 20 | #endif |
diff --git a/include/net/dn.h b/include/net/dn.h index ccc15588d108..913b73d239f5 100644 --- a/include/net/dn.h +++ b/include/net/dn.h | |||
@@ -200,6 +200,8 @@ static inline void dn_sk_ports_copy(struct flowidn *fld, struct dn_scp *scp) | |||
200 | } | 200 | } |
201 | 201 | ||
202 | unsigned int dn_mss_from_pmtu(struct net_device *dev, int mtu); | 202 | unsigned int dn_mss_from_pmtu(struct net_device *dev, int mtu); |
203 | void dn_register_sysctl(void); | ||
204 | void dn_unregister_sysctl(void); | ||
203 | 205 | ||
204 | #define DN_MENUVER_ACC 0x01 | 206 | #define DN_MENUVER_ACC 0x01 |
205 | #define DN_MENUVER_USR 0x02 | 207 | #define DN_MENUVER_USR 0x02 |
diff --git a/include/net/dn_route.h b/include/net/dn_route.h index b409ad6b8d7a..55df9939bca2 100644 --- a/include/net/dn_route.h +++ b/include/net/dn_route.h | |||
@@ -20,6 +20,8 @@ int dn_route_output_sock(struct dst_entry __rcu **pprt, struct flowidn *, | |||
20 | struct sock *sk, int flags); | 20 | struct sock *sk, int flags); |
21 | int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb); | 21 | int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb); |
22 | void dn_rt_cache_flush(int delay); | 22 | void dn_rt_cache_flush(int delay); |
23 | int dn_route_rcv(struct sk_buff *skb, struct net_device *dev, | ||
24 | struct packet_type *pt, struct net_device *orig_dev); | ||
23 | 25 | ||
24 | /* Masks for flags field */ | 26 | /* Masks for flags field */ |
25 | #define DN_RT_F_PID 0x07 /* Mask for packet type */ | 27 | #define DN_RT_F_PID 0x07 /* Mask for packet type */ |
diff --git a/include/net/ethoc.h b/include/net/ethoc.h index 96f3789b27bc..2a2d6bb34eb8 100644 --- a/include/net/ethoc.h +++ b/include/net/ethoc.h | |||
@@ -16,6 +16,7 @@ | |||
16 | struct ethoc_platform_data { | 16 | struct ethoc_platform_data { |
17 | u8 hwaddr[IFHWADDRLEN]; | 17 | u8 hwaddr[IFHWADDRLEN]; |
18 | s8 phy_id; | 18 | s8 phy_id; |
19 | u32 eth_clkfreq; | ||
19 | }; | 20 | }; |
20 | 21 | ||
21 | #endif /* !LINUX_NET_ETHOC_H */ | 22 | #endif /* !LINUX_NET_ETHOC_H */ |
diff --git a/include/net/ipx.h b/include/net/ipx.h index 9e9e35465baf..0143180fecc9 100644 --- a/include/net/ipx.h +++ b/include/net/ipx.h | |||
@@ -140,6 +140,17 @@ static __inline__ void ipxitf_hold(struct ipx_interface *intrfc) | |||
140 | } | 140 | } |
141 | 141 | ||
142 | void ipxitf_down(struct ipx_interface *intrfc); | 142 | void ipxitf_down(struct ipx_interface *intrfc); |
143 | struct ipx_interface *ipxitf_find_using_net(__be32 net); | ||
144 | int ipxitf_send(struct ipx_interface *intrfc, struct sk_buff *skb, char *node); | ||
145 | __be16 ipx_cksum(struct ipxhdr *packet, int length); | ||
146 | int ipxrtr_add_route(__be32 network, struct ipx_interface *intrfc, | ||
147 | unsigned char *node); | ||
148 | void ipxrtr_del_routes(struct ipx_interface *intrfc); | ||
149 | int ipxrtr_route_packet(struct sock *sk, struct sockaddr_ipx *usipx, | ||
150 | struct iovec *iov, size_t len, int noblock); | ||
151 | int ipxrtr_route_skb(struct sk_buff *skb); | ||
152 | struct ipx_route *ipxrtr_lookup(__be32 net); | ||
153 | int ipxrtr_ioctl(unsigned int cmd, void __user *arg); | ||
143 | 154 | ||
144 | static __inline__ void ipxitf_put(struct ipx_interface *intrfc) | 155 | static __inline__ void ipxitf_put(struct ipx_interface *intrfc) |
145 | { | 156 | { |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index da68c9a90ac5..991dcd94cbbf 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -162,6 +162,14 @@ extern struct list_head net_namespace_list; | |||
162 | struct net *get_net_ns_by_pid(pid_t pid); | 162 | struct net *get_net_ns_by_pid(pid_t pid); |
163 | struct net *get_net_ns_by_fd(int pid); | 163 | struct net *get_net_ns_by_fd(int pid); |
164 | 164 | ||
165 | #ifdef CONFIG_SYSCTL | ||
166 | void ipx_register_sysctl(void); | ||
167 | void ipx_unregister_sysctl(void); | ||
168 | #else | ||
169 | #define ipx_register_sysctl() | ||
170 | #define ipx_unregister_sysctl() | ||
171 | #endif | ||
172 | |||
165 | #ifdef CONFIG_NET_NS | 173 | #ifdef CONFIG_NET_NS |
166 | void __put_net(struct net *net); | 174 | void __put_net(struct net *net); |
167 | 175 | ||
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 01ea6eed1bb1..b2ac6246b7e0 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h | |||
@@ -284,6 +284,8 @@ extern unsigned int nf_conntrack_max; | |||
284 | extern unsigned int nf_conntrack_hash_rnd; | 284 | extern unsigned int nf_conntrack_hash_rnd; |
285 | void init_nf_conntrack_hash_rnd(void); | 285 | void init_nf_conntrack_hash_rnd(void); |
286 | 286 | ||
287 | void nf_conntrack_tmpl_insert(struct net *net, struct nf_conn *tmpl); | ||
288 | |||
287 | #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) | 289 | #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) |
288 | #define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count) | 290 | #define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count) |
289 | 291 | ||
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 57c8ff7955df..e7e14ffe0f6a 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h | |||
@@ -252,6 +252,7 @@ void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set, | |||
252 | * @owner: module reference | 252 | * @owner: module reference |
253 | * @policy: netlink attribute policy | 253 | * @policy: netlink attribute policy |
254 | * @maxattr: highest netlink attribute number | 254 | * @maxattr: highest netlink attribute number |
255 | * @family: address family for AF-specific types | ||
255 | */ | 256 | */ |
256 | struct nft_expr_type { | 257 | struct nft_expr_type { |
257 | const struct nft_expr_ops *(*select_ops)(const struct nft_ctx *, | 258 | const struct nft_expr_ops *(*select_ops)(const struct nft_ctx *, |
@@ -262,6 +263,7 @@ struct nft_expr_type { | |||
262 | struct module *owner; | 263 | struct module *owner; |
263 | const struct nla_policy *policy; | 264 | const struct nla_policy *policy; |
264 | unsigned int maxattr; | 265 | unsigned int maxattr; |
266 | u8 family; | ||
265 | }; | 267 | }; |
266 | 268 | ||
267 | /** | 269 | /** |
@@ -320,7 +322,6 @@ static inline void *nft_expr_priv(const struct nft_expr *expr) | |||
320 | * struct nft_rule - nf_tables rule | 322 | * struct nft_rule - nf_tables rule |
321 | * | 323 | * |
322 | * @list: used internally | 324 | * @list: used internally |
323 | * @rcu_head: used internally for rcu | ||
324 | * @handle: rule handle | 325 | * @handle: rule handle |
325 | * @genmask: generation mask | 326 | * @genmask: generation mask |
326 | * @dlen: length of expression data | 327 | * @dlen: length of expression data |
@@ -328,7 +329,6 @@ static inline void *nft_expr_priv(const struct nft_expr *expr) | |||
328 | */ | 329 | */ |
329 | struct nft_rule { | 330 | struct nft_rule { |
330 | struct list_head list; | 331 | struct list_head list; |
331 | struct rcu_head rcu_head; | ||
332 | u64 handle:46, | 332 | u64 handle:46, |
333 | genmask:2, | 333 | genmask:2, |
334 | dlen:16; | 334 | dlen:16; |
@@ -389,7 +389,6 @@ enum nft_chain_flags { | |||
389 | * | 389 | * |
390 | * @rules: list of rules in the chain | 390 | * @rules: list of rules in the chain |
391 | * @list: used internally | 391 | * @list: used internally |
392 | * @rcu_head: used internally | ||
393 | * @net: net namespace that this chain belongs to | 392 | * @net: net namespace that this chain belongs to |
394 | * @table: table that this chain belongs to | 393 | * @table: table that this chain belongs to |
395 | * @handle: chain handle | 394 | * @handle: chain handle |
@@ -401,7 +400,6 @@ enum nft_chain_flags { | |||
401 | struct nft_chain { | 400 | struct nft_chain { |
402 | struct list_head rules; | 401 | struct list_head rules; |
403 | struct list_head list; | 402 | struct list_head list; |
404 | struct rcu_head rcu_head; | ||
405 | struct net *net; | 403 | struct net *net; |
406 | struct nft_table *table; | 404 | struct nft_table *table; |
407 | u64 handle; | 405 | u64 handle; |
@@ -529,6 +527,9 @@ void nft_unregister_expr(struct nft_expr_type *); | |||
529 | #define MODULE_ALIAS_NFT_CHAIN(family, name) \ | 527 | #define MODULE_ALIAS_NFT_CHAIN(family, name) \ |
530 | MODULE_ALIAS("nft-chain-" __stringify(family) "-" name) | 528 | MODULE_ALIAS("nft-chain-" __stringify(family) "-" name) |
531 | 529 | ||
530 | #define MODULE_ALIAS_NFT_AF_EXPR(family, name) \ | ||
531 | MODULE_ALIAS("nft-expr-" __stringify(family) "-" name) | ||
532 | |||
532 | #define MODULE_ALIAS_NFT_EXPR(name) \ | 533 | #define MODULE_ALIAS_NFT_EXPR(name) \ |
533 | MODULE_ALIAS("nft-expr-" name) | 534 | MODULE_ALIAS("nft-expr-" name) |
534 | 535 | ||
diff --git a/include/net/netfilter/nft_reject.h b/include/net/netfilter/nft_reject.h new file mode 100644 index 000000000000..36b0da2d55bb --- /dev/null +++ b/include/net/netfilter/nft_reject.h | |||
@@ -0,0 +1,25 @@ | |||
1 | #ifndef _NFT_REJECT_H_ | ||
2 | #define _NFT_REJECT_H_ | ||
3 | |||
4 | struct nft_reject { | ||
5 | enum nft_reject_types type:8; | ||
6 | u8 icmp_code; | ||
7 | }; | ||
8 | |||
9 | extern const struct nla_policy nft_reject_policy[]; | ||
10 | |||
11 | int nft_reject_init(const struct nft_ctx *ctx, | ||
12 | const struct nft_expr *expr, | ||
13 | const struct nlattr * const tb[]); | ||
14 | |||
15 | int nft_reject_dump(struct sk_buff *skb, const struct nft_expr *expr); | ||
16 | |||
17 | void nft_reject_ipv4_eval(const struct nft_expr *expr, | ||
18 | struct nft_data data[NFT_REG_MAX + 1], | ||
19 | const struct nft_pktinfo *pkt); | ||
20 | |||
21 | void nft_reject_ipv6_eval(const struct nft_expr *expr, | ||
22 | struct nft_data data[NFT_REG_MAX + 1], | ||
23 | const struct nft_pktinfo *pkt); | ||
24 | |||
25 | #endif | ||
diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h index 633b93cac1ed..e9a1d2d973b6 100644 --- a/include/uapi/linux/in6.h +++ b/include/uapi/linux/in6.h | |||
@@ -128,22 +128,13 @@ struct in6_flowlabel_req { | |||
128 | * IPV6 extension headers | 128 | * IPV6 extension headers |
129 | */ | 129 | */ |
130 | #if __UAPI_DEF_IPPROTO_V6 | 130 | #if __UAPI_DEF_IPPROTO_V6 |
131 | enum { | 131 | #define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */ |
132 | IPPROTO_HOPOPTS = 0, /* IPv6 hop-by-hop options */ | 132 | #define IPPROTO_ROUTING 43 /* IPv6 routing header */ |
133 | #define IPPROTO_HOPOPTS IPPROTO_HOPOPTS | 133 | #define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */ |
134 | IPPROTO_ROUTING = 43, /* IPv6 routing header */ | 134 | #define IPPROTO_ICMPV6 58 /* ICMPv6 */ |
135 | #define IPPROTO_ROUTING IPPROTO_ROUTING | 135 | #define IPPROTO_NONE 59 /* IPv6 no next header */ |
136 | IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header */ | 136 | #define IPPROTO_DSTOPTS 60 /* IPv6 destination options */ |
137 | #define IPPROTO_FRAGMENT IPPROTO_FRAGMENT | 137 | #define IPPROTO_MH 135 /* IPv6 mobility header */ |
138 | IPPROTO_ICMPV6 = 58, /* ICMPv6 */ | ||
139 | #define IPPROTO_ICMPV6 IPPROTO_ICMPV6 | ||
140 | IPPROTO_NONE = 59, /* IPv6 no next header */ | ||
141 | #define IPPROTO_NONE IPPROTO_NONE | ||
142 | IPPROTO_DSTOPTS = 60, /* IPv6 destination options */ | ||
143 | #define IPPROTO_DSTOPTS IPPROTO_DSTOPTS | ||
144 | IPPROTO_MH = 135, /* IPv6 mobility header */ | ||
145 | #define IPPROTO_MH IPPROTO_MH | ||
146 | }; | ||
147 | #endif /* __UAPI_DEF_IPPROTO_V6 */ | 138 | #endif /* __UAPI_DEF_IPPROTO_V6 */ |
148 | 139 | ||
149 | /* | 140 | /* |
diff --git a/include/uapi/linux/nvme.h b/include/uapi/linux/nvme.h index 989c04e0c563..e5ab62201119 100644 --- a/include/uapi/linux/nvme.h +++ b/include/uapi/linux/nvme.h | |||
@@ -350,6 +350,16 @@ struct nvme_delete_queue { | |||
350 | __u32 rsvd11[5]; | 350 | __u32 rsvd11[5]; |
351 | }; | 351 | }; |
352 | 352 | ||
353 | struct nvme_abort_cmd { | ||
354 | __u8 opcode; | ||
355 | __u8 flags; | ||
356 | __u16 command_id; | ||
357 | __u32 rsvd1[9]; | ||
358 | __le16 sqid; | ||
359 | __u16 cid; | ||
360 | __u32 rsvd11[5]; | ||
361 | }; | ||
362 | |||
353 | struct nvme_download_firmware { | 363 | struct nvme_download_firmware { |
354 | __u8 opcode; | 364 | __u8 opcode; |
355 | __u8 flags; | 365 | __u8 flags; |
@@ -384,6 +394,7 @@ struct nvme_command { | |||
384 | struct nvme_download_firmware dlfw; | 394 | struct nvme_download_firmware dlfw; |
385 | struct nvme_format_cmd format; | 395 | struct nvme_format_cmd format; |
386 | struct nvme_dsm_cmd dsm; | 396 | struct nvme_dsm_cmd dsm; |
397 | struct nvme_abort_cmd abort; | ||
387 | }; | 398 | }; |
388 | }; | 399 | }; |
389 | 400 | ||
diff --git a/include/uapi/xen/Kbuild b/include/uapi/xen/Kbuild index 61257cb14653..5c459628e8c7 100644 --- a/include/uapi/xen/Kbuild +++ b/include/uapi/xen/Kbuild | |||
@@ -1,3 +1,5 @@ | |||
1 | # UAPI Header export list | 1 | # UAPI Header export list |
2 | header-y += evtchn.h | 2 | header-y += evtchn.h |
3 | header-y += gntalloc.h | ||
4 | header-y += gntdev.h | ||
3 | header-y += privcmd.h | 5 | header-y += privcmd.h |
diff --git a/include/xen/gntalloc.h b/include/uapi/xen/gntalloc.h index 76bd58065f4f..76bd58065f4f 100644 --- a/include/xen/gntalloc.h +++ b/include/uapi/xen/gntalloc.h | |||
diff --git a/include/xen/gntdev.h b/include/uapi/xen/gntdev.h index 5304bd3c84c5..5304bd3c84c5 100644 --- a/include/xen/gntdev.h +++ b/include/uapi/xen/gntdev.h | |||
diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index 7ad033dbc845..a5af2a26d94f 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h | |||
@@ -191,15 +191,11 @@ void gnttab_free_auto_xlat_frames(void); | |||
191 | #define gnttab_map_vaddr(map) ((void *)(map.host_virt_addr)) | 191 | #define gnttab_map_vaddr(map) ((void *)(map.host_virt_addr)) |
192 | 192 | ||
193 | int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, | 193 | int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, |
194 | struct gnttab_map_grant_ref *kmap_ops, | ||
194 | struct page **pages, unsigned int count); | 195 | struct page **pages, unsigned int count); |
195 | int gnttab_map_refs_userspace(struct gnttab_map_grant_ref *map_ops, | ||
196 | struct gnttab_map_grant_ref *kmap_ops, | ||
197 | struct page **pages, unsigned int count); | ||
198 | int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, | 196 | int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, |
197 | struct gnttab_map_grant_ref *kunmap_ops, | ||
199 | struct page **pages, unsigned int count); | 198 | struct page **pages, unsigned int count); |
200 | int gnttab_unmap_refs_userspace(struct gnttab_unmap_grant_ref *unmap_ops, | ||
201 | struct gnttab_map_grant_ref *kunmap_ops, | ||
202 | struct page **pages, unsigned int count); | ||
203 | 199 | ||
204 | /* Perform a batch of grant map/copy operations. Retry every batch slot | 200 | /* Perform a batch of grant map/copy operations. Retry every batch slot |
205 | * for which the hypervisor returns GNTST_eagain. This is typically due | 201 | * for which the hypervisor returns GNTST_eagain. This is typically due |
diff --git a/include/xen/interface/xencomm.h b/include/xen/interface/xencomm.h deleted file mode 100644 index ac45e0712afa..000000000000 --- a/include/xen/interface/xencomm.h +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | /* | ||
2 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
3 | * of this software and associated documentation files (the "Software"), to | ||
4 | * deal in the Software without restriction, including without limitation the | ||
5 | * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||
6 | * sell copies of the Software, and to permit persons to whom the Software is | ||
7 | * furnished to do so, subject to the following conditions: | ||
8 | * | ||
9 | * The above copyright notice and this permission notice shall be included in | ||
10 | * all copies or substantial portions of the Software. | ||
11 | * | ||
12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
13 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
14 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
15 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
16 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
17 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
18 | * DEALINGS IN THE SOFTWARE. | ||
19 | * | ||
20 | * Copyright (C) IBM Corp. 2006 | ||
21 | */ | ||
22 | |||
23 | #ifndef _XEN_XENCOMM_H_ | ||
24 | #define _XEN_XENCOMM_H_ | ||
25 | |||
26 | /* A xencomm descriptor is a scatter/gather list containing physical | ||
27 | * addresses corresponding to a virtually contiguous memory area. The | ||
28 | * hypervisor translates these physical addresses to machine addresses to copy | ||
29 | * to and from the virtually contiguous area. | ||
30 | */ | ||
31 | |||
32 | #define XENCOMM_MAGIC 0x58434F4D /* 'XCOM' */ | ||
33 | #define XENCOMM_INVALID (~0UL) | ||
34 | |||
35 | struct xencomm_desc { | ||
36 | uint32_t magic; | ||
37 | uint32_t nr_addrs; /* the number of entries in address[] */ | ||
38 | uint64_t address[0]; | ||
39 | }; | ||
40 | |||
41 | #endif /* _XEN_XENCOMM_H_ */ | ||
diff --git a/include/xen/xencomm.h b/include/xen/xencomm.h deleted file mode 100644 index e43b039be112..000000000000 --- a/include/xen/xencomm.h +++ /dev/null | |||
@@ -1,77 +0,0 @@ | |||
1 | /* | ||
2 | * This program is free software; you can redistribute it and/or modify | ||
3 | * it under the terms of the GNU General Public License as published by | ||
4 | * the Free Software Foundation; either version 2 of the License, or | ||
5 | * (at your option) any later version. | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | * | ||
12 | * You should have received a copy of the GNU General Public License | ||
13 | * along with this program; if not, write to the Free Software | ||
14 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
15 | * | ||
16 | * Copyright (C) IBM Corp. 2006 | ||
17 | * | ||
18 | * Authors: Hollis Blanchard <hollisb@us.ibm.com> | ||
19 | * Jerone Young <jyoung5@us.ibm.com> | ||
20 | */ | ||
21 | |||
22 | #ifndef _LINUX_XENCOMM_H_ | ||
23 | #define _LINUX_XENCOMM_H_ | ||
24 | |||
25 | #include <xen/interface/xencomm.h> | ||
26 | |||
27 | #define XENCOMM_MINI_ADDRS 3 | ||
28 | struct xencomm_mini { | ||
29 | struct xencomm_desc _desc; | ||
30 | uint64_t address[XENCOMM_MINI_ADDRS]; | ||
31 | }; | ||
32 | |||
33 | /* To avoid additionnal virt to phys conversion, an opaque structure is | ||
34 | presented. */ | ||
35 | struct xencomm_handle; | ||
36 | |||
37 | extern void xencomm_free(struct xencomm_handle *desc); | ||
38 | extern struct xencomm_handle *xencomm_map(void *ptr, unsigned long bytes); | ||
39 | extern struct xencomm_handle *__xencomm_map_no_alloc(void *ptr, | ||
40 | unsigned long bytes, struct xencomm_mini *xc_area); | ||
41 | |||
42 | #if 0 | ||
43 | #define XENCOMM_MINI_ALIGNED(xc_desc, n) \ | ||
44 | struct xencomm_mini xc_desc ## _base[(n)] \ | ||
45 | __attribute__((__aligned__(sizeof(struct xencomm_mini)))); \ | ||
46 | struct xencomm_mini *xc_desc = &xc_desc ## _base[0]; | ||
47 | #else | ||
48 | /* | ||
49 | * gcc bug workaround: | ||
50 | * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16660 | ||
51 | * gcc doesn't handle properly stack variable with | ||
52 | * __attribute__((__align__(sizeof(struct xencomm_mini)))) | ||
53 | */ | ||
54 | #define XENCOMM_MINI_ALIGNED(xc_desc, n) \ | ||
55 | unsigned char xc_desc ## _base[((n) + 1 ) * \ | ||
56 | sizeof(struct xencomm_mini)]; \ | ||
57 | struct xencomm_mini *xc_desc = (struct xencomm_mini *) \ | ||
58 | ((unsigned long)xc_desc ## _base + \ | ||
59 | (sizeof(struct xencomm_mini) - \ | ||
60 | ((unsigned long)xc_desc ## _base) % \ | ||
61 | sizeof(struct xencomm_mini))); | ||
62 | #endif | ||
63 | #define xencomm_map_no_alloc(ptr, bytes) \ | ||
64 | ({ XENCOMM_MINI_ALIGNED(xc_desc, 1); \ | ||
65 | __xencomm_map_no_alloc(ptr, bytes, xc_desc); }) | ||
66 | |||
67 | /* provided by architecture code: */ | ||
68 | extern unsigned long xencomm_vtop(unsigned long vaddr); | ||
69 | |||
70 | static inline void *xencomm_pa(void *ptr) | ||
71 | { | ||
72 | return (void *)xencomm_vtop((unsigned long)ptr); | ||
73 | } | ||
74 | |||
75 | #define xen_guest_handle(hnd) ((hnd).p) | ||
76 | |||
77 | #endif /* _LINUX_XENCOMM_H_ */ | ||