diff options
| author | Chris Metcalf <cmetcalf@tilera.com> | 2011-08-02 16:14:02 -0400 |
|---|---|---|
| committer | Chris Metcalf <cmetcalf@tilera.com> | 2011-08-02 16:14:02 -0400 |
| commit | 3d071cd313643cf82b1ce1ce4fdf08d63ad53964 (patch) | |
| tree | 874c1683f32f07614aa123f6ca5cf6c2bd443704 /include/linux | |
| parent | cf8e98d15361f8c594da00a3f7a500787fc1a426 (diff) | |
| parent | 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe (diff) | |
Merge tag 'v3.0' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
Diffstat (limited to 'include/linux')
55 files changed, 378 insertions, 94 deletions
diff --git a/include/linux/amba/serial.h b/include/linux/amba/serial.h index 5479fdc849e9..514ed45c462e 100644 --- a/include/linux/amba/serial.h +++ b/include/linux/amba/serial.h | |||
| @@ -201,6 +201,9 @@ struct amba_pl011_data { | |||
| 201 | bool (*dma_filter)(struct dma_chan *chan, void *filter_param); | 201 | bool (*dma_filter)(struct dma_chan *chan, void *filter_param); |
| 202 | void *dma_rx_param; | 202 | void *dma_rx_param; |
| 203 | void *dma_tx_param; | 203 | void *dma_tx_param; |
| 204 | void (*init) (void); | ||
| 205 | void (*exit) (void); | ||
| 206 | void (*reset) (void); | ||
| 204 | }; | 207 | }; |
| 205 | #endif | 208 | #endif |
| 206 | 209 | ||
diff --git a/include/linux/basic_mmio_gpio.h b/include/linux/basic_mmio_gpio.h index 1ae12710d732..98999cf107ce 100644 --- a/include/linux/basic_mmio_gpio.h +++ b/include/linux/basic_mmio_gpio.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
| 17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
| 18 | #include <linux/compiler.h> | 18 | #include <linux/compiler.h> |
| 19 | #include <linux/spinlock_types.h> | ||
| 19 | 20 | ||
| 20 | struct bgpio_pdata { | 21 | struct bgpio_pdata { |
| 21 | int base; | 22 | int base; |
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 2a7cea53ca0d..6395692b2e7a 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h | |||
| @@ -167,7 +167,7 @@ enum rq_flag_bits { | |||
| 167 | (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER) | 167 | (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER) |
| 168 | #define REQ_COMMON_MASK \ | 168 | #define REQ_COMMON_MASK \ |
| 169 | (REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_DISCARD | \ | 169 | (REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_DISCARD | \ |
| 170 | REQ_NOIDLE | REQ_FLUSH | REQ_FUA) | 170 | REQ_NOIDLE | REQ_FLUSH | REQ_FUA | REQ_SECURE) |
| 171 | #define REQ_CLONE_MASK REQ_COMMON_MASK | 171 | #define REQ_CLONE_MASK REQ_COMMON_MASK |
| 172 | 172 | ||
| 173 | #define REQ_RAHEAD (1 << __REQ_RAHEAD) | 173 | #define REQ_RAHEAD (1 << __REQ_RAHEAD) |
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index b22fb0d3db0f..8c7c2de7631a 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
| @@ -169,7 +169,8 @@ extern void blk_trace_shutdown(struct request_queue *); | |||
| 169 | extern int do_blk_trace_setup(struct request_queue *q, char *name, | 169 | extern int do_blk_trace_setup(struct request_queue *q, char *name, |
| 170 | dev_t dev, struct block_device *bdev, | 170 | dev_t dev, struct block_device *bdev, |
| 171 | struct blk_user_trace_setup *buts); | 171 | struct blk_user_trace_setup *buts); |
| 172 | extern void __trace_note_message(struct blk_trace *, const char *fmt, ...); | 172 | extern __attribute__((format(printf, 2, 3))) |
| 173 | void __trace_note_message(struct blk_trace *, const char *fmt, ...); | ||
| 173 | 174 | ||
| 174 | /** | 175 | /** |
| 175 | * blk_add_trace_msg - Add a (simple) message to the blktrace stream | 176 | * blk_add_trace_msg - Add a (simple) message to the blktrace stream |
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index d4646b48dc4a..18a1baf31f2d 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
| @@ -188,6 +188,7 @@ struct clocksource { | |||
| 188 | #ifdef CONFIG_CLOCKSOURCE_WATCHDOG | 188 | #ifdef CONFIG_CLOCKSOURCE_WATCHDOG |
| 189 | /* Watchdog related data, used by the framework */ | 189 | /* Watchdog related data, used by the framework */ |
| 190 | struct list_head wd_list; | 190 | struct list_head wd_list; |
| 191 | cycle_t cs_last; | ||
| 191 | cycle_t wd_last; | 192 | cycle_t wd_last; |
| 192 | #endif | 193 | #endif |
| 193 | } ____cacheline_aligned; | 194 | } ____cacheline_aligned; |
diff --git a/include/linux/compat.h b/include/linux/compat.h index ddcb7db38e67..846bb1792572 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
| @@ -467,6 +467,8 @@ asmlinkage long compat_sys_setsockopt(int fd, int level, int optname, | |||
| 467 | char __user *optval, unsigned int optlen); | 467 | char __user *optval, unsigned int optlen); |
| 468 | asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg, | 468 | asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg, |
| 469 | unsigned flags); | 469 | unsigned flags); |
| 470 | asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg, | ||
| 471 | unsigned vlen, unsigned int flags); | ||
| 470 | asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, | 472 | asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, |
| 471 | unsigned int flags); | 473 | unsigned int flags); |
| 472 | asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, | 474 | asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, |
diff --git a/include/linux/connector.h b/include/linux/connector.h index 7c60d0942adb..f696bccd48cb 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
| @@ -44,7 +44,7 @@ | |||
| 44 | #define CN_VAL_DRBD 0x1 | 44 | #define CN_VAL_DRBD 0x1 |
| 45 | #define CN_KVP_IDX 0x9 /* HyperV KVP */ | 45 | #define CN_KVP_IDX 0x9 /* HyperV KVP */ |
| 46 | 46 | ||
| 47 | #define CN_NETLINK_USERS 9 | 47 | #define CN_NETLINK_USERS 10 /* Highest index + 1 */ |
| 48 | 48 | ||
| 49 | /* | 49 | /* |
| 50 | * Maximum connector's message size. | 50 | * Maximum connector's message size. |
diff --git a/include/linux/device.h b/include/linux/device.h index c66111affca9..e4f62d8896b7 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -530,7 +530,6 @@ struct device_dma_parameters { | |||
| 530 | * @dma_mem: Internal for coherent mem override. | 530 | * @dma_mem: Internal for coherent mem override. |
| 531 | * @archdata: For arch-specific additions. | 531 | * @archdata: For arch-specific additions. |
| 532 | * @of_node: Associated device tree node. | 532 | * @of_node: Associated device tree node. |
| 533 | * @of_match: Matching of_device_id from driver. | ||
| 534 | * @devt: For creating the sysfs "dev". | 533 | * @devt: For creating the sysfs "dev". |
| 535 | * @devres_lock: Spinlock to protect the resource of the device. | 534 | * @devres_lock: Spinlock to protect the resource of the device. |
| 536 | * @devres_head: The resources list of the device. | 535 | * @devres_head: The resources list of the device. |
| @@ -654,13 +653,13 @@ static inline int device_is_registered(struct device *dev) | |||
| 654 | 653 | ||
| 655 | static inline void device_enable_async_suspend(struct device *dev) | 654 | static inline void device_enable_async_suspend(struct device *dev) |
| 656 | { | 655 | { |
| 657 | if (!dev->power.in_suspend) | 656 | if (!dev->power.is_prepared) |
| 658 | dev->power.async_suspend = true; | 657 | dev->power.async_suspend = true; |
| 659 | } | 658 | } |
| 660 | 659 | ||
| 661 | static inline void device_disable_async_suspend(struct device *dev) | 660 | static inline void device_disable_async_suspend(struct device *dev) |
| 662 | { | 661 | { |
| 663 | if (!dev->power.in_suspend) | 662 | if (!dev->power.is_prepared) |
| 664 | dev->power.async_suspend = false; | 663 | dev->power.async_suspend = false; |
| 665 | } | 664 | } |
| 666 | 665 | ||
diff --git a/include/linux/device_cgroup.h b/include/linux/device_cgroup.h index 0b0d9c39ed67..7aad1f440867 100644 --- a/include/linux/device_cgroup.h +++ b/include/linux/device_cgroup.h | |||
| @@ -2,8 +2,16 @@ | |||
| 2 | #include <linux/fs.h> | 2 | #include <linux/fs.h> |
| 3 | 3 | ||
| 4 | #ifdef CONFIG_CGROUP_DEVICE | 4 | #ifdef CONFIG_CGROUP_DEVICE |
| 5 | extern int devcgroup_inode_permission(struct inode *inode, int mask); | 5 | extern int __devcgroup_inode_permission(struct inode *inode, int mask); |
| 6 | extern int devcgroup_inode_mknod(int mode, dev_t dev); | 6 | extern int devcgroup_inode_mknod(int mode, dev_t dev); |
| 7 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) | ||
| 8 | { | ||
| 9 | if (likely(!inode->i_rdev)) | ||
| 10 | return 0; | ||
| 11 | if (!S_ISBLK(inode->i_mode) && !S_ISCHR(inode->i_mode)) | ||
| 12 | return 0; | ||
| 13 | return __devcgroup_inode_permission(inode, mask); | ||
| 14 | } | ||
| 7 | #else | 15 | #else |
| 8 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) | 16 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) |
| 9 | { return 0; } | 17 | { return 0; } |
diff --git a/include/linux/drbd_limits.h b/include/linux/drbd_limits.h index 246f576c981d..447c36752385 100644 --- a/include/linux/drbd_limits.h +++ b/include/linux/drbd_limits.h | |||
| @@ -117,10 +117,10 @@ | |||
| 117 | /* drbdsetup XY resize -d Z | 117 | /* drbdsetup XY resize -d Z |
| 118 | * you are free to reduce the device size to nothing, if you want to. | 118 | * you are free to reduce the device size to nothing, if you want to. |
| 119 | * the upper limit with 64bit kernel, enough ram and flexible meta data | 119 | * the upper limit with 64bit kernel, enough ram and flexible meta data |
| 120 | * is 16 TB, currently. */ | 120 | * is 1 PiB, currently. */ |
| 121 | /* DRBD_MAX_SECTORS */ | 121 | /* DRBD_MAX_SECTORS */ |
| 122 | #define DRBD_DISK_SIZE_SECT_MIN 0 | 122 | #define DRBD_DISK_SIZE_SECT_MIN 0 |
| 123 | #define DRBD_DISK_SIZE_SECT_MAX (16 * (2LLU << 30)) | 123 | #define DRBD_DISK_SIZE_SECT_MAX (1 * (2LLU << 40)) |
| 124 | #define DRBD_DISK_SIZE_SECT_DEF 0 /* = disabled = no user size... */ | 124 | #define DRBD_DISK_SIZE_SECT_DEF 0 /* = disabled = no user size... */ |
| 125 | 125 | ||
| 126 | #define DRBD_ON_IO_ERROR_DEF EP_PASS_ON | 126 | #define DRBD_ON_IO_ERROR_DEF EP_PASS_ON |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index c6a850ab2ec5..439b173c5882 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
| @@ -268,7 +268,7 @@ struct ethtool_pauseparam { | |||
| 268 | __u32 cmd; /* ETHTOOL_{G,S}PAUSEPARAM */ | 268 | __u32 cmd; /* ETHTOOL_{G,S}PAUSEPARAM */ |
| 269 | 269 | ||
| 270 | /* If the link is being auto-negotiated (via ethtool_cmd.autoneg | 270 | /* If the link is being auto-negotiated (via ethtool_cmd.autoneg |
| 271 | * being true) the user may set 'autonet' here non-zero to have the | 271 | * being true) the user may set 'autoneg' here non-zero to have the |
| 272 | * pause parameters be auto-negotiated too. In such a case, the | 272 | * pause parameters be auto-negotiated too. In such a case, the |
| 273 | * {rx,tx}_pause values below determine what capabilities are | 273 | * {rx,tx}_pause values below determine what capabilities are |
| 274 | * advertised. | 274 | * advertised. |
| @@ -811,7 +811,7 @@ bool ethtool_invalid_flags(struct net_device *dev, u32 data, u32 supported); | |||
| 811 | * @get_tx_csum: Deprecated as redundant. Report whether transmit checksums | 811 | * @get_tx_csum: Deprecated as redundant. Report whether transmit checksums |
| 812 | * are turned on or off. | 812 | * are turned on or off. |
| 813 | * @set_tx_csum: Deprecated in favour of generic netdev features. Turn | 813 | * @set_tx_csum: Deprecated in favour of generic netdev features. Turn |
| 814 | * transmit checksums on or off. Returns a egative error code or zero. | 814 | * transmit checksums on or off. Returns a negative error code or zero. |
| 815 | * @get_sg: Deprecated as redundant. Report whether scatter-gather is | 815 | * @get_sg: Deprecated as redundant. Report whether scatter-gather is |
| 816 | * enabled. | 816 | * enabled. |
| 817 | * @set_sg: Deprecated in favour of generic netdev features. Turn | 817 | * @set_sg: Deprecated in favour of generic netdev features. Turn |
| @@ -1087,7 +1087,7 @@ struct ethtool_ops { | |||
| 1087 | /* The following are all involved in forcing a particular link | 1087 | /* The following are all involved in forcing a particular link |
| 1088 | * mode for the device for setting things. When getting the | 1088 | * mode for the device for setting things. When getting the |
| 1089 | * devices settings, these indicate the current mode and whether | 1089 | * devices settings, these indicate the current mode and whether |
| 1090 | * it was foced up into this mode or autonegotiated. | 1090 | * it was forced up into this mode or autonegotiated. |
| 1091 | */ | 1091 | */ |
| 1092 | 1092 | ||
| 1093 | /* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */ | 1093 | /* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index c55d6b7cd5d6..b5b979247863 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -208,6 +208,7 @@ struct inodes_stat_t { | |||
| 208 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ | 208 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ |
| 209 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ | 209 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ |
| 210 | #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ | 210 | #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ |
| 211 | #define MS_NOSEC (1<<28) | ||
| 211 | #define MS_BORN (1<<29) | 212 | #define MS_BORN (1<<29) |
| 212 | #define MS_ACTIVE (1<<30) | 213 | #define MS_ACTIVE (1<<30) |
| 213 | #define MS_NOUSER (1<<31) | 214 | #define MS_NOUSER (1<<31) |
| @@ -638,6 +639,7 @@ struct address_space { | |||
| 638 | struct prio_tree_root i_mmap; /* tree of private and shared mappings */ | 639 | struct prio_tree_root i_mmap; /* tree of private and shared mappings */ |
| 639 | struct list_head i_mmap_nonlinear;/*list VM_NONLINEAR mappings */ | 640 | struct list_head i_mmap_nonlinear;/*list VM_NONLINEAR mappings */ |
| 640 | struct mutex i_mmap_mutex; /* protect tree, count, list */ | 641 | struct mutex i_mmap_mutex; /* protect tree, count, list */ |
| 642 | /* Protected by tree_lock together with the radix tree */ | ||
| 641 | unsigned long nrpages; /* number of total pages */ | 643 | unsigned long nrpages; /* number of total pages */ |
| 642 | pgoff_t writeback_index;/* writeback starts here */ | 644 | pgoff_t writeback_index;/* writeback starts here */ |
| 643 | const struct address_space_operations *a_ops; /* methods */ | 645 | const struct address_space_operations *a_ops; /* methods */ |
| @@ -743,9 +745,13 @@ struct inode { | |||
| 743 | 745 | ||
| 744 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ | 746 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ |
| 745 | unsigned int i_flags; | 747 | unsigned int i_flags; |
| 748 | unsigned long i_state; | ||
| 749 | #ifdef CONFIG_SECURITY | ||
| 750 | void *i_security; | ||
| 751 | #endif | ||
| 746 | struct mutex i_mutex; | 752 | struct mutex i_mutex; |
| 747 | 753 | ||
| 748 | unsigned long i_state; | 754 | |
| 749 | unsigned long dirtied_when; /* jiffies of first dirtying */ | 755 | unsigned long dirtied_when; /* jiffies of first dirtying */ |
| 750 | 756 | ||
| 751 | struct hlist_node i_hash; | 757 | struct hlist_node i_hash; |
| @@ -797,9 +803,6 @@ struct inode { | |||
| 797 | atomic_t i_readcount; /* struct files open RO */ | 803 | atomic_t i_readcount; /* struct files open RO */ |
| 798 | #endif | 804 | #endif |
| 799 | atomic_t i_writecount; | 805 | atomic_t i_writecount; |
| 800 | #ifdef CONFIG_SECURITY | ||
| 801 | void *i_security; | ||
| 802 | #endif | ||
| 803 | #ifdef CONFIG_FS_POSIX_ACL | 806 | #ifdef CONFIG_FS_POSIX_ACL |
| 804 | struct posix_acl *i_acl; | 807 | struct posix_acl *i_acl; |
| 805 | struct posix_acl *i_default_acl; | 808 | struct posix_acl *i_default_acl; |
| @@ -2591,7 +2594,7 @@ static inline int is_sxid(mode_t mode) | |||
| 2591 | 2594 | ||
| 2592 | static inline void inode_has_no_xattr(struct inode *inode) | 2595 | static inline void inode_has_no_xattr(struct inode *inode) |
| 2593 | { | 2596 | { |
| 2594 | if (!is_sxid(inode->i_mode)) | 2597 | if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & MS_NOSEC)) |
| 2595 | inode->i_flags |= S_NOSEC; | 2598 | inode->i_flags |= S_NOSEC; |
| 2596 | } | 2599 | } |
| 2597 | 2600 | ||
diff --git a/include/linux/fscache.h b/include/linux/fscache.h index 7c4d72f5581f..9ec20dec3353 100644 --- a/include/linux/fscache.h +++ b/include/linux/fscache.h | |||
| @@ -204,6 +204,8 @@ extern bool __fscache_check_page_write(struct fscache_cookie *, struct page *); | |||
| 204 | extern void __fscache_wait_on_page_write(struct fscache_cookie *, struct page *); | 204 | extern void __fscache_wait_on_page_write(struct fscache_cookie *, struct page *); |
| 205 | extern bool __fscache_maybe_release_page(struct fscache_cookie *, struct page *, | 205 | extern bool __fscache_maybe_release_page(struct fscache_cookie *, struct page *, |
| 206 | gfp_t); | 206 | gfp_t); |
| 207 | extern void __fscache_uncache_all_inode_pages(struct fscache_cookie *, | ||
| 208 | struct inode *); | ||
| 207 | 209 | ||
| 208 | /** | 210 | /** |
| 209 | * fscache_register_netfs - Register a filesystem as desiring caching services | 211 | * fscache_register_netfs - Register a filesystem as desiring caching services |
| @@ -643,4 +645,23 @@ bool fscache_maybe_release_page(struct fscache_cookie *cookie, | |||
| 643 | return false; | 645 | return false; |
| 644 | } | 646 | } |
| 645 | 647 | ||
| 648 | /** | ||
| 649 | * fscache_uncache_all_inode_pages - Uncache all an inode's pages | ||
| 650 | * @cookie: The cookie representing the inode's cache object. | ||
| 651 | * @inode: The inode to uncache pages from. | ||
| 652 | * | ||
| 653 | * Uncache all the pages in an inode that are marked PG_fscache, assuming them | ||
| 654 | * to be associated with the given cookie. | ||
| 655 | * | ||
| 656 | * This function may sleep. It will wait for pages that are being written out | ||
| 657 | * and will wait whilst the PG_fscache mark is removed by the cache. | ||
| 658 | */ | ||
| 659 | static inline | ||
| 660 | void fscache_uncache_all_inode_pages(struct fscache_cookie *cookie, | ||
| 661 | struct inode *inode) | ||
| 662 | { | ||
| 663 | if (fscache_cookie_valid(cookie)) | ||
| 664 | __fscache_uncache_all_inode_pages(cookie, inode); | ||
| 665 | } | ||
| 666 | |||
| 646 | #endif /* _LINUX_FSCACHE_H */ | 667 | #endif /* _LINUX_FSCACHE_H */ |
diff --git a/include/linux/fsl-diu-fb.h b/include/linux/fsl-diu-fb.h index 781d4671415f..daa9952d2174 100644 --- a/include/linux/fsl-diu-fb.h +++ b/include/linux/fsl-diu-fb.h | |||
| @@ -24,12 +24,6 @@ | |||
| 24 | * See mpc8610fb_set_par(), map_video_memory(), and unmap_video_memory() | 24 | * See mpc8610fb_set_par(), map_video_memory(), and unmap_video_memory() |
| 25 | */ | 25 | */ |
| 26 | #define MEM_ALLOC_THRESHOLD (1024*768*4+32) | 26 | #define MEM_ALLOC_THRESHOLD (1024*768*4+32) |
| 27 | /* Minimum value that the pixel clock can be set to in pico seconds | ||
| 28 | * This is determined by platform clock/3 where the minimum platform | ||
| 29 | * clock is 533MHz. This gives 5629 pico seconds. | ||
| 30 | */ | ||
| 31 | #define MIN_PIX_CLK 5629 | ||
| 32 | #define MAX_PIX_CLK 96096 | ||
| 33 | 27 | ||
| 34 | #include <linux/types.h> | 28 | #include <linux/types.h> |
| 35 | 29 | ||
diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 32d47e710661..17b5a0d80e42 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h | |||
| @@ -3,6 +3,17 @@ | |||
| 3 | 3 | ||
| 4 | /* see Documentation/gpio.txt */ | 4 | /* see Documentation/gpio.txt */ |
| 5 | 5 | ||
| 6 | /* make these flag values available regardless of GPIO kconfig options */ | ||
| 7 | #define GPIOF_DIR_OUT (0 << 0) | ||
| 8 | #define GPIOF_DIR_IN (1 << 0) | ||
| 9 | |||
| 10 | #define GPIOF_INIT_LOW (0 << 1) | ||
| 11 | #define GPIOF_INIT_HIGH (1 << 1) | ||
| 12 | |||
| 13 | #define GPIOF_IN (GPIOF_DIR_IN) | ||
| 14 | #define GPIOF_OUT_INIT_LOW (GPIOF_DIR_OUT | GPIOF_INIT_LOW) | ||
| 15 | #define GPIOF_OUT_INIT_HIGH (GPIOF_DIR_OUT | GPIOF_INIT_HIGH) | ||
| 16 | |||
| 6 | #ifdef CONFIG_GENERIC_GPIO | 17 | #ifdef CONFIG_GENERIC_GPIO |
| 7 | #include <asm/gpio.h> | 18 | #include <asm/gpio.h> |
| 8 | 19 | ||
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 51932e5acf7c..fd0dc30c9f15 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
| @@ -135,6 +135,7 @@ struct hrtimer_sleeper { | |||
| 135 | * @cpu_base: per cpu clock base | 135 | * @cpu_base: per cpu clock base |
| 136 | * @index: clock type index for per_cpu support when moving a | 136 | * @index: clock type index for per_cpu support when moving a |
| 137 | * timer to a base on another cpu. | 137 | * timer to a base on another cpu. |
| 138 | * @clockid: clock id for per_cpu support | ||
| 138 | * @active: red black tree root node for the active timers | 139 | * @active: red black tree root node for the active timers |
| 139 | * @resolution: the resolution of the clock, in nanoseconds | 140 | * @resolution: the resolution of the clock, in nanoseconds |
| 140 | * @get_time: function to retrieve the current time of the clock | 141 | * @get_time: function to retrieve the current time of the clock |
diff --git a/include/linux/i2c/adp8870.h b/include/linux/i2c/adp8870.h new file mode 100644 index 000000000000..624dceccbd5b --- /dev/null +++ b/include/linux/i2c/adp8870.h | |||
| @@ -0,0 +1,153 @@ | |||
| 1 | /* | ||
| 2 | * Definitions and platform data for Analog Devices | ||
| 3 | * Backlight drivers ADP8870 | ||
| 4 | * | ||
| 5 | * Copyright 2009-2010 Analog Devices Inc. | ||
| 6 | * | ||
| 7 | * Licensed under the GPL-2 or later. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __LINUX_I2C_ADP8870_H | ||
| 11 | #define __LINUX_I2C_ADP8870_H | ||
| 12 | |||
| 13 | #define ID_ADP8870 8870 | ||
| 14 | |||
| 15 | #define ADP8870_MAX_BRIGHTNESS 0x7F | ||
| 16 | #define FLAG_OFFT_SHIFT 8 | ||
| 17 | |||
| 18 | /* | ||
| 19 | * LEDs subdevice platform data | ||
| 20 | */ | ||
| 21 | |||
| 22 | #define ADP8870_LED_DIS_BLINK (0 << FLAG_OFFT_SHIFT) | ||
| 23 | #define ADP8870_LED_OFFT_600ms (1 << FLAG_OFFT_SHIFT) | ||
| 24 | #define ADP8870_LED_OFFT_1200ms (2 << FLAG_OFFT_SHIFT) | ||
| 25 | #define ADP8870_LED_OFFT_1800ms (3 << FLAG_OFFT_SHIFT) | ||
| 26 | |||
| 27 | #define ADP8870_LED_ONT_200ms 0 | ||
| 28 | #define ADP8870_LED_ONT_600ms 1 | ||
| 29 | #define ADP8870_LED_ONT_800ms 2 | ||
| 30 | #define ADP8870_LED_ONT_1200ms 3 | ||
| 31 | |||
| 32 | #define ADP8870_LED_D7 (7) | ||
| 33 | #define ADP8870_LED_D6 (6) | ||
| 34 | #define ADP8870_LED_D5 (5) | ||
| 35 | #define ADP8870_LED_D4 (4) | ||
| 36 | #define ADP8870_LED_D3 (3) | ||
| 37 | #define ADP8870_LED_D2 (2) | ||
| 38 | #define ADP8870_LED_D1 (1) | ||
| 39 | |||
| 40 | /* | ||
| 41 | * Backlight subdevice platform data | ||
| 42 | */ | ||
| 43 | |||
| 44 | #define ADP8870_BL_D7 (1 << 6) | ||
| 45 | #define ADP8870_BL_D6 (1 << 5) | ||
| 46 | #define ADP8870_BL_D5 (1 << 4) | ||
| 47 | #define ADP8870_BL_D4 (1 << 3) | ||
| 48 | #define ADP8870_BL_D3 (1 << 2) | ||
| 49 | #define ADP8870_BL_D2 (1 << 1) | ||
| 50 | #define ADP8870_BL_D1 (1 << 0) | ||
| 51 | |||
| 52 | #define ADP8870_FADE_T_DIS 0 /* Fade Timer Disabled */ | ||
| 53 | #define ADP8870_FADE_T_300ms 1 /* 0.3 Sec */ | ||
| 54 | #define ADP8870_FADE_T_600ms 2 | ||
| 55 | #define ADP8870_FADE_T_900ms 3 | ||
| 56 | #define ADP8870_FADE_T_1200ms 4 | ||
| 57 | #define ADP8870_FADE_T_1500ms 5 | ||
| 58 | #define ADP8870_FADE_T_1800ms 6 | ||
| 59 | #define ADP8870_FADE_T_2100ms 7 | ||
| 60 | #define ADP8870_FADE_T_2400ms 8 | ||
| 61 | #define ADP8870_FADE_T_2700ms 9 | ||
| 62 | #define ADP8870_FADE_T_3000ms 10 | ||
| 63 | #define ADP8870_FADE_T_3500ms 11 | ||
| 64 | #define ADP8870_FADE_T_4000ms 12 | ||
| 65 | #define ADP8870_FADE_T_4500ms 13 | ||
| 66 | #define ADP8870_FADE_T_5000ms 14 | ||
| 67 | #define ADP8870_FADE_T_5500ms 15 /* 5.5 Sec */ | ||
| 68 | |||
| 69 | #define ADP8870_FADE_LAW_LINEAR 0 | ||
| 70 | #define ADP8870_FADE_LAW_SQUARE 1 | ||
| 71 | #define ADP8870_FADE_LAW_CUBIC1 2 | ||
| 72 | #define ADP8870_FADE_LAW_CUBIC2 3 | ||
| 73 | |||
| 74 | #define ADP8870_BL_AMBL_FILT_80ms 0 /* Light sensor filter time */ | ||
| 75 | #define ADP8870_BL_AMBL_FILT_160ms 1 | ||
| 76 | #define ADP8870_BL_AMBL_FILT_320ms 2 | ||
| 77 | #define ADP8870_BL_AMBL_FILT_640ms 3 | ||
| 78 | #define ADP8870_BL_AMBL_FILT_1280ms 4 | ||
| 79 | #define ADP8870_BL_AMBL_FILT_2560ms 5 | ||
| 80 | #define ADP8870_BL_AMBL_FILT_5120ms 6 | ||
| 81 | #define ADP8870_BL_AMBL_FILT_10240ms 7 /* 10.24 sec */ | ||
| 82 | |||
| 83 | /* | ||
| 84 | * Blacklight current 0..30mA | ||
| 85 | */ | ||
| 86 | #define ADP8870_BL_CUR_mA(I) ((I * 127) / 30) | ||
| 87 | |||
| 88 | /* | ||
| 89 | * L2 comparator current 0..1106uA | ||
| 90 | */ | ||
| 91 | #define ADP8870_L2_COMP_CURR_uA(I) ((I * 255) / 1106) | ||
| 92 | |||
| 93 | /* | ||
| 94 | * L3 comparator current 0..551uA | ||
| 95 | */ | ||
| 96 | #define ADP8870_L3_COMP_CURR_uA(I) ((I * 255) / 551) | ||
| 97 | |||
| 98 | /* | ||
| 99 | * L4 comparator current 0..275uA | ||
| 100 | */ | ||
| 101 | #define ADP8870_L4_COMP_CURR_uA(I) ((I * 255) / 275) | ||
| 102 | |||
| 103 | /* | ||
| 104 | * L5 comparator current 0..138uA | ||
| 105 | */ | ||
| 106 | #define ADP8870_L5_COMP_CURR_uA(I) ((I * 255) / 138) | ||
| 107 | |||
| 108 | struct adp8870_backlight_platform_data { | ||
| 109 | u8 bl_led_assign; /* 1 = Backlight 0 = Individual LED */ | ||
| 110 | u8 pwm_assign; /* 1 = Enables PWM mode */ | ||
| 111 | |||
| 112 | u8 bl_fade_in; /* Backlight Fade-In Timer */ | ||
| 113 | u8 bl_fade_out; /* Backlight Fade-Out Timer */ | ||
| 114 | u8 bl_fade_law; /* fade-on/fade-off transfer characteristic */ | ||
| 115 | |||
| 116 | u8 en_ambl_sens; /* 1 = enable ambient light sensor */ | ||
| 117 | u8 abml_filt; /* Light sensor filter time */ | ||
| 118 | |||
| 119 | u8 l1_daylight_max; /* use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 120 | u8 l1_daylight_dim; /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 121 | u8 l2_bright_max; /* use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 122 | u8 l2_bright_dim; /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 123 | u8 l3_office_max; /* use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 124 | u8 l3_office_dim; /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 125 | u8 l4_indoor_max; /* use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 126 | u8 l4_indor_dim; /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 127 | u8 l5_dark_max; /* use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 128 | u8 l5_dark_dim; /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */ | ||
| 129 | |||
| 130 | u8 l2_trip; /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */ | ||
| 131 | u8 l2_hyst; /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */ | ||
| 132 | u8 l3_trip; /* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */ | ||
| 133 | u8 l3_hyst; /* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */ | ||
| 134 | u8 l4_trip; /* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */ | ||
| 135 | u8 l4_hyst; /* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */ | ||
| 136 | u8 l5_trip; /* use L5_COMP_CURR_uA(I) 0 <= I <= 138 uA */ | ||
| 137 | u8 l5_hyst; /* use L6_COMP_CURR_uA(I) 0 <= I <= 138 uA */ | ||
| 138 | |||
| 139 | /** | ||
| 140 | * Independent Current Sinks / LEDS | ||
| 141 | * Sinks not assigned to the Backlight can be exposed to | ||
| 142 | * user space using the LEDS CLASS interface | ||
| 143 | */ | ||
| 144 | |||
| 145 | int num_leds; | ||
| 146 | struct led_info *leds; | ||
| 147 | u8 led_fade_in; /* LED Fade-In Timer */ | ||
| 148 | u8 led_fade_out; /* LED Fade-Out Timer */ | ||
| 149 | u8 led_fade_law; /* fade-on/fade-off transfer characteristic */ | ||
| 150 | u8 led_on_time; | ||
| 151 | }; | ||
| 152 | |||
| 153 | #endif /* __LINUX_I2C_ADP8870_H */ | ||
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h index 6d66ce1791a9..7b318630139f 100644 --- a/include/linux/if_packet.h +++ b/include/linux/if_packet.h | |||
| @@ -62,6 +62,7 @@ struct tpacket_auxdata { | |||
| 62 | __u16 tp_mac; | 62 | __u16 tp_mac; |
| 63 | __u16 tp_net; | 63 | __u16 tp_net; |
| 64 | __u16 tp_vlan_tci; | 64 | __u16 tp_vlan_tci; |
| 65 | __u16 tp_padding; | ||
| 65 | }; | 66 | }; |
| 66 | 67 | ||
| 67 | /* Rx ring - header status */ | 68 | /* Rx ring - header status */ |
| @@ -101,6 +102,7 @@ struct tpacket2_hdr { | |||
| 101 | __u32 tp_sec; | 102 | __u32 tp_sec; |
| 102 | __u32 tp_nsec; | 103 | __u32 tp_nsec; |
| 103 | __u16 tp_vlan_tci; | 104 | __u16 tp_vlan_tci; |
| 105 | __u16 tp_padding; | ||
| 104 | }; | 106 | }; |
| 105 | 107 | ||
| 106 | #define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll)) | 108 | #define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll)) |
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index dc01681fbb42..affa27380b72 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
| @@ -225,7 +225,7 @@ static inline int vlan_hwaccel_receive_skb(struct sk_buff *skb, | |||
| 225 | } | 225 | } |
| 226 | 226 | ||
| 227 | /** | 227 | /** |
| 228 | * __vlan_put_tag - regular VLAN tag inserting | 228 | * vlan_insert_tag - regular VLAN tag inserting |
| 229 | * @skb: skbuff to tag | 229 | * @skb: skbuff to tag |
| 230 | * @vlan_tci: VLAN TCI to insert | 230 | * @vlan_tci: VLAN TCI to insert |
| 231 | * | 231 | * |
| @@ -234,8 +234,10 @@ static inline int vlan_hwaccel_receive_skb(struct sk_buff *skb, | |||
| 234 | * | 234 | * |
| 235 | * Following the skb_unshare() example, in case of error, the calling function | 235 | * Following the skb_unshare() example, in case of error, the calling function |
| 236 | * doesn't have to worry about freeing the original skb. | 236 | * doesn't have to worry about freeing the original skb. |
| 237 | * | ||
| 238 | * Does not change skb->protocol so this function can be used during receive. | ||
| 237 | */ | 239 | */ |
| 238 | static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, u16 vlan_tci) | 240 | static inline struct sk_buff *vlan_insert_tag(struct sk_buff *skb, u16 vlan_tci) |
| 239 | { | 241 | { |
| 240 | struct vlan_ethhdr *veth; | 242 | struct vlan_ethhdr *veth; |
| 241 | 243 | ||
| @@ -255,8 +257,25 @@ static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, u16 vlan_tci) | |||
| 255 | /* now, the TCI */ | 257 | /* now, the TCI */ |
| 256 | veth->h_vlan_TCI = htons(vlan_tci); | 258 | veth->h_vlan_TCI = htons(vlan_tci); |
| 257 | 259 | ||
| 258 | skb->protocol = htons(ETH_P_8021Q); | 260 | return skb; |
| 261 | } | ||
| 259 | 262 | ||
| 263 | /** | ||
| 264 | * __vlan_put_tag - regular VLAN tag inserting | ||
| 265 | * @skb: skbuff to tag | ||
| 266 | * @vlan_tci: VLAN TCI to insert | ||
| 267 | * | ||
| 268 | * Inserts the VLAN tag into @skb as part of the payload | ||
| 269 | * Returns a VLAN tagged skb. If a new skb is created, @skb is freed. | ||
| 270 | * | ||
| 271 | * Following the skb_unshare() example, in case of error, the calling function | ||
| 272 | * doesn't have to worry about freeing the original skb. | ||
| 273 | */ | ||
| 274 | static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, u16 vlan_tci) | ||
| 275 | { | ||
| 276 | skb = vlan_insert_tag(skb, vlan_tci); | ||
| 277 | if (skb) | ||
| 278 | skb->protocol = htons(ETH_P_8021Q); | ||
| 260 | return skb; | 279 | return skb; |
| 261 | } | 280 | } |
| 262 | 281 | ||
diff --git a/include/linux/input/sh_keysc.h b/include/linux/input/sh_keysc.h index 649dc7f12925..5d253cd93691 100644 --- a/include/linux/input/sh_keysc.h +++ b/include/linux/input/sh_keysc.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #ifndef __SH_KEYSC_H__ | 1 | #ifndef __SH_KEYSC_H__ |
| 2 | #define __SH_KEYSC_H__ | 2 | #define __SH_KEYSC_H__ |
| 3 | 3 | ||
| 4 | #define SH_KEYSC_MAXKEYS 49 | 4 | #define SH_KEYSC_MAXKEYS 64 |
| 5 | 5 | ||
| 6 | struct sh_keysc_info { | 6 | struct sh_keysc_info { |
| 7 | enum { SH_KEYSC_MODE_1, SH_KEYSC_MODE_2, SH_KEYSC_MODE_3, | 7 | enum { SH_KEYSC_MODE_1, SH_KEYSC_MODE_2, SH_KEYSC_MODE_3, |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 6c12989839d9..f6efed0039ed 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -414,6 +414,7 @@ enum | |||
| 414 | TASKLET_SOFTIRQ, | 414 | TASKLET_SOFTIRQ, |
| 415 | SCHED_SOFTIRQ, | 415 | SCHED_SOFTIRQ, |
| 416 | HRTIMER_SOFTIRQ, | 416 | HRTIMER_SOFTIRQ, |
| 417 | RCU_SOFTIRQ, /* Preferable RCU should always be the last softirq */ | ||
| 417 | 418 | ||
| 418 | NR_SOFTIRQS | 419 | NR_SOFTIRQS |
| 419 | }; | 420 | }; |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 8b4538446636..baa397eb9c33 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -676,7 +676,8 @@ void irq_gc_mask_disable_reg(struct irq_data *d); | |||
| 676 | void irq_gc_mask_set_bit(struct irq_data *d); | 676 | void irq_gc_mask_set_bit(struct irq_data *d); |
| 677 | void irq_gc_mask_clr_bit(struct irq_data *d); | 677 | void irq_gc_mask_clr_bit(struct irq_data *d); |
| 678 | void irq_gc_unmask_enable_reg(struct irq_data *d); | 678 | void irq_gc_unmask_enable_reg(struct irq_data *d); |
| 679 | void irq_gc_ack(struct irq_data *d); | 679 | void irq_gc_ack_set_bit(struct irq_data *d); |
| 680 | void irq_gc_ack_clr_bit(struct irq_data *d); | ||
| 680 | void irq_gc_mask_disable_reg_and_ack(struct irq_data *d); | 681 | void irq_gc_mask_disable_reg_and_ack(struct irq_data *d); |
| 681 | void irq_gc_eoi(struct irq_data *d); | 682 | void irq_gc_eoi(struct irq_data *d); |
| 682 | int irq_gc_set_wake(struct irq_data *d, unsigned int on); | 683 | int irq_gc_set_wake(struct irq_data *d, unsigned int on); |
diff --git a/include/linux/irqreturn.h b/include/linux/irqreturn.h index 819acaaac3f5..714ba08dc092 100644 --- a/include/linux/irqreturn.h +++ b/include/linux/irqreturn.h | |||
| @@ -8,9 +8,9 @@ | |||
| 8 | * @IRQ_WAKE_THREAD handler requests to wake the handler thread | 8 | * @IRQ_WAKE_THREAD handler requests to wake the handler thread |
| 9 | */ | 9 | */ |
| 10 | enum irqreturn { | 10 | enum irqreturn { |
| 11 | IRQ_NONE, | 11 | IRQ_NONE = (0 << 0), |
| 12 | IRQ_HANDLED, | 12 | IRQ_HANDLED = (1 << 0), |
| 13 | IRQ_WAKE_THREAD, | 13 | IRQ_WAKE_THREAD = (1 << 1), |
| 14 | }; | 14 | }; |
| 15 | 15 | ||
| 16 | typedef enum irqreturn irqreturn_t; | 16 | typedef enum irqreturn irqreturn_t; |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 4ecb7b16b278..d087c2e7b2aa 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
| @@ -1024,7 +1024,6 @@ struct journal_s | |||
| 1024 | 1024 | ||
| 1025 | /* Filing buffers */ | 1025 | /* Filing buffers */ |
| 1026 | extern void jbd2_journal_unfile_buffer(journal_t *, struct journal_head *); | 1026 | extern void jbd2_journal_unfile_buffer(journal_t *, struct journal_head *); |
| 1027 | extern void __jbd2_journal_unfile_buffer(struct journal_head *); | ||
| 1028 | extern void __jbd2_journal_refile_buffer(struct journal_head *); | 1027 | extern void __jbd2_journal_refile_buffer(struct journal_head *); |
| 1029 | extern void jbd2_journal_refile_buffer(journal_t *, struct journal_head *); | 1028 | extern void jbd2_journal_refile_buffer(journal_t *, struct journal_head *); |
| 1030 | extern void __jbd2_journal_file_buffer(struct journal_head *, transaction_t *, int); | 1029 | extern void __jbd2_journal_file_buffer(struct journal_head *, transaction_t *, int); |
| @@ -1165,7 +1164,6 @@ extern void jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_in | |||
| 1165 | */ | 1164 | */ |
| 1166 | struct journal_head *jbd2_journal_add_journal_head(struct buffer_head *bh); | 1165 | struct journal_head *jbd2_journal_add_journal_head(struct buffer_head *bh); |
| 1167 | struct journal_head *jbd2_journal_grab_journal_head(struct buffer_head *bh); | 1166 | struct journal_head *jbd2_journal_grab_journal_head(struct buffer_head *bh); |
| 1168 | void jbd2_journal_remove_journal_head(struct buffer_head *bh); | ||
| 1169 | void jbd2_journal_put_journal_head(struct journal_head *jh); | 1167 | void jbd2_journal_put_journal_head(struct journal_head *jh); |
| 1170 | 1168 | ||
| 1171 | /* | 1169 | /* |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index fb0e7329fee1..953352a88336 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -671,8 +671,8 @@ struct sysinfo { | |||
| 671 | 671 | ||
| 672 | #ifdef __CHECKER__ | 672 | #ifdef __CHECKER__ |
| 673 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) | 673 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) |
| 674 | #define BUILD_BUG_ON_ZERO(e) | 674 | #define BUILD_BUG_ON_ZERO(e) (0) |
| 675 | #define BUILD_BUG_ON_NULL(e) | 675 | #define BUILD_BUG_ON_NULL(e) ((void*)0) |
| 676 | #define BUILD_BUG_ON(condition) | 676 | #define BUILD_BUG_ON(condition) |
| 677 | #else /* __CHECKER__ */ | 677 | #else /* __CHECKER__ */ |
| 678 | 678 | ||
diff --git a/include/linux/kmod.h b/include/linux/kmod.h index d4a5c84c503d..0da38cf7db7b 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h | |||
| @@ -45,7 +45,7 @@ static inline int request_module_nowait(const char *name, ...) { return -ENOSYS; | |||
| 45 | #endif | 45 | #endif |
| 46 | 46 | ||
| 47 | 47 | ||
| 48 | struct key; | 48 | struct cred; |
| 49 | struct file; | 49 | struct file; |
| 50 | 50 | ||
| 51 | enum umh_wait { | 51 | enum umh_wait { |
| @@ -62,7 +62,7 @@ struct subprocess_info { | |||
| 62 | char **envp; | 62 | char **envp; |
| 63 | enum umh_wait wait; | 63 | enum umh_wait wait; |
| 64 | int retval; | 64 | int retval; |
| 65 | int (*init)(struct subprocess_info *info); | 65 | int (*init)(struct subprocess_info *info, struct cred *new); |
| 66 | void (*cleanup)(struct subprocess_info *info); | 66 | void (*cleanup)(struct subprocess_info *info); |
| 67 | void *data; | 67 | void *data; |
| 68 | }; | 68 | }; |
| @@ -73,7 +73,7 @@ struct subprocess_info *call_usermodehelper_setup(char *path, char **argv, | |||
| 73 | 73 | ||
| 74 | /* Set various pieces of state into the subprocess_info structure */ | 74 | /* Set various pieces of state into the subprocess_info structure */ |
| 75 | void call_usermodehelper_setfns(struct subprocess_info *info, | 75 | void call_usermodehelper_setfns(struct subprocess_info *info, |
| 76 | int (*init)(struct subprocess_info *info), | 76 | int (*init)(struct subprocess_info *info, struct cred *new), |
| 77 | void (*cleanup)(struct subprocess_info *info), | 77 | void (*cleanup)(struct subprocess_info *info), |
| 78 | void *data); | 78 | void *data); |
| 79 | 79 | ||
| @@ -87,7 +87,7 @@ void call_usermodehelper_freeinfo(struct subprocess_info *info); | |||
| 87 | static inline int | 87 | static inline int |
| 88 | call_usermodehelper_fns(char *path, char **argv, char **envp, | 88 | call_usermodehelper_fns(char *path, char **argv, char **envp, |
| 89 | enum umh_wait wait, | 89 | enum umh_wait wait, |
| 90 | int (*init)(struct subprocess_info *info), | 90 | int (*init)(struct subprocess_info *info, struct cred *new), |
| 91 | void (*cleanup)(struct subprocess_info *), void *data) | 91 | void (*cleanup)(struct subprocess_info *), void *data) |
| 92 | { | 92 | { |
| 93 | struct subprocess_info *info; | 93 | struct subprocess_info *info; |
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index 2a0d7d651dc3..ee0c952188de 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #ifndef _LINUX_KMSG_DUMP_H | 12 | #ifndef _LINUX_KMSG_DUMP_H |
| 13 | #define _LINUX_KMSG_DUMP_H | 13 | #define _LINUX_KMSG_DUMP_H |
| 14 | 14 | ||
| 15 | #include <linux/errno.h> | ||
| 15 | #include <linux/list.h> | 16 | #include <linux/list.h> |
| 16 | 17 | ||
| 17 | enum kmsg_dump_reason { | 18 | enum kmsg_dump_reason { |
diff --git a/include/linux/kobject_ns.h b/include/linux/kobject_ns.h index 82cb5bf461fb..f66b065a8b5f 100644 --- a/include/linux/kobject_ns.h +++ b/include/linux/kobject_ns.h | |||
| @@ -32,15 +32,17 @@ enum kobj_ns_type { | |||
| 32 | 32 | ||
| 33 | /* | 33 | /* |
| 34 | * Callbacks so sysfs can determine namespaces | 34 | * Callbacks so sysfs can determine namespaces |
| 35 | * @current_ns: return calling task's namespace | 35 | * @grab_current_ns: return a new reference to calling task's namespace |
| 36 | * @netlink_ns: return namespace to which a sock belongs (right?) | 36 | * @netlink_ns: return namespace to which a sock belongs (right?) |
| 37 | * @initial_ns: return the initial namespace (i.e. init_net_ns) | 37 | * @initial_ns: return the initial namespace (i.e. init_net_ns) |
| 38 | * @drop_ns: drops a reference to namespace | ||
| 38 | */ | 39 | */ |
| 39 | struct kobj_ns_type_operations { | 40 | struct kobj_ns_type_operations { |
| 40 | enum kobj_ns_type type; | 41 | enum kobj_ns_type type; |
| 41 | const void *(*current_ns)(void); | 42 | void *(*grab_current_ns)(void); |
| 42 | const void *(*netlink_ns)(struct sock *sk); | 43 | const void *(*netlink_ns)(struct sock *sk); |
| 43 | const void *(*initial_ns)(void); | 44 | const void *(*initial_ns)(void); |
| 45 | void (*drop_ns)(void *); | ||
| 44 | }; | 46 | }; |
| 45 | 47 | ||
| 46 | int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); | 48 | int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); |
| @@ -48,9 +50,9 @@ int kobj_ns_type_registered(enum kobj_ns_type type); | |||
| 48 | const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent); | 50 | const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent); |
| 49 | const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj); | 51 | const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj); |
| 50 | 52 | ||
| 51 | const void *kobj_ns_current(enum kobj_ns_type type); | 53 | void *kobj_ns_grab_current(enum kobj_ns_type type); |
| 52 | const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk); | 54 | const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk); |
| 53 | const void *kobj_ns_initial(enum kobj_ns_type type); | 55 | const void *kobj_ns_initial(enum kobj_ns_type type); |
| 54 | void kobj_ns_exit(enum kobj_ns_type type, const void *ns); | 56 | void kobj_ns_drop(enum kobj_ns_type type, void *ns); |
| 55 | 57 | ||
| 56 | #endif /* _LINUX_KOBJECT_NS_H */ | 58 | #endif /* _LINUX_KOBJECT_NS_H */ |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 9724a38ee69d..50940da6adf3 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -84,6 +84,7 @@ int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem); | |||
| 84 | 84 | ||
| 85 | extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page); | 85 | extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page); |
| 86 | extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); | 86 | extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); |
| 87 | extern struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm); | ||
| 87 | 88 | ||
| 88 | static inline | 89 | static inline |
| 89 | int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup) | 90 | int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup) |
| @@ -246,6 +247,11 @@ static inline struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page) | |||
| 246 | return NULL; | 247 | return NULL; |
| 247 | } | 248 | } |
| 248 | 249 | ||
| 250 | static inline struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm) | ||
| 251 | { | ||
| 252 | return NULL; | ||
| 253 | } | ||
| 254 | |||
| 249 | static inline int mm_match_cgroup(struct mm_struct *mm, struct mem_cgroup *mem) | 255 | static inline int mm_match_cgroup(struct mm_struct *mm, struct mem_cgroup *mem) |
| 250 | { | 256 | { |
| 251 | return 1; | 257 | return 1; |
diff --git a/include/linux/memory.h b/include/linux/memory.h index e1e3b2b84f85..935699b30b7c 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h | |||
| @@ -20,6 +20,8 @@ | |||
| 20 | #include <linux/compiler.h> | 20 | #include <linux/compiler.h> |
| 21 | #include <linux/mutex.h> | 21 | #include <linux/mutex.h> |
| 22 | 22 | ||
| 23 | #define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) | ||
| 24 | |||
| 23 | struct memory_block { | 25 | struct memory_block { |
| 24 | unsigned long start_section_nr; | 26 | unsigned long start_section_nr; |
| 25 | unsigned long end_section_nr; | 27 | unsigned long end_section_nr; |
diff --git a/include/linux/mfd/ds1wm.h b/include/linux/mfd/ds1wm.h index be469a357cbb..38a372a0e285 100644 --- a/include/linux/mfd/ds1wm.h +++ b/include/linux/mfd/ds1wm.h | |||
| @@ -3,4 +3,11 @@ | |||
| 3 | struct ds1wm_driver_data { | 3 | struct ds1wm_driver_data { |
| 4 | int active_high; | 4 | int active_high; |
| 5 | int clock_rate; | 5 | int clock_rate; |
| 6 | /* in milliseconds, the amount of time to */ | ||
| 7 | /* sleep following a reset pulse. Zero */ | ||
| 8 | /* should work if your bus devices recover*/ | ||
| 9 | /* time respects the 1-wire spec since the*/ | ||
| 10 | /* ds1wm implements the precise timings of*/ | ||
| 11 | /* a reset pulse/presence detect sequence.*/ | ||
| 12 | unsigned int reset_recover_delay; | ||
| 6 | }; | 13 | }; |
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index c6927a4d157f..6ad43554ac05 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
| @@ -64,6 +64,19 @@ struct mmc_ext_csd { | |||
| 64 | unsigned long long enhanced_area_offset; /* Units: Byte */ | 64 | unsigned long long enhanced_area_offset; /* Units: Byte */ |
| 65 | unsigned int enhanced_area_size; /* Units: KB */ | 65 | unsigned int enhanced_area_size; /* Units: KB */ |
| 66 | unsigned int boot_size; /* in bytes */ | 66 | unsigned int boot_size; /* in bytes */ |
| 67 | u8 raw_partition_support; /* 160 */ | ||
| 68 | u8 raw_erased_mem_count; /* 181 */ | ||
| 69 | u8 raw_ext_csd_structure; /* 194 */ | ||
| 70 | u8 raw_card_type; /* 196 */ | ||
| 71 | u8 raw_s_a_timeout; /* 217 */ | ||
| 72 | u8 raw_hc_erase_gap_size; /* 221 */ | ||
| 73 | u8 raw_erase_timeout_mult; /* 223 */ | ||
| 74 | u8 raw_hc_erase_grp_size; /* 224 */ | ||
| 75 | u8 raw_sec_trim_mult; /* 229 */ | ||
| 76 | u8 raw_sec_erase_mult; /* 230 */ | ||
| 77 | u8 raw_sec_feature_support;/* 231 */ | ||
| 78 | u8 raw_trim_mult; /* 232 */ | ||
| 79 | u8 raw_sectors[4]; /* 212 - 4 bytes */ | ||
| 67 | }; | 80 | }; |
| 68 | 81 | ||
| 69 | struct sd_scr { | 82 | struct sd_scr { |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index c928dac6cad0..9f7c3ebcbbad 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
| @@ -647,6 +647,13 @@ typedef struct pglist_data { | |||
| 647 | #endif | 647 | #endif |
| 648 | #define nid_page_nr(nid, pagenr) pgdat_page_nr(NODE_DATA(nid),(pagenr)) | 648 | #define nid_page_nr(nid, pagenr) pgdat_page_nr(NODE_DATA(nid),(pagenr)) |
| 649 | 649 | ||
| 650 | #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) | ||
| 651 | |||
| 652 | #define node_end_pfn(nid) ({\ | ||
| 653 | pg_data_t *__pgdat = NODE_DATA(nid);\ | ||
| 654 | __pgdat->node_start_pfn + __pgdat->node_spanned_pages;\ | ||
| 655 | }) | ||
| 656 | |||
| 650 | #include <linux/memory_hotplug.h> | 657 | #include <linux/memory_hotplug.h> |
| 651 | 658 | ||
| 652 | extern struct mutex zonelists_mutex; | 659 | extern struct mutex zonelists_mutex; |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ca333e79e10f..9e19477991ad 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -1097,12 +1097,6 @@ struct net_device { | |||
| 1097 | #define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \ | 1097 | #define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \ |
| 1098 | NETIF_F_FSO) | 1098 | NETIF_F_FSO) |
| 1099 | 1099 | ||
| 1100 | #define NETIF_F_ALL_TX_OFFLOADS (NETIF_F_ALL_CSUM | NETIF_F_SG | \ | ||
| 1101 | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ | ||
| 1102 | NETIF_F_HIGHDMA | \ | ||
| 1103 | NETIF_F_SCTP_CSUM | \ | ||
| 1104 | NETIF_F_ALL_FCOE) | ||
| 1105 | |||
| 1106 | /* | 1100 | /* |
| 1107 | * If one device supports one of these features, then enable them | 1101 | * If one device supports one of these features, then enable them |
| 1108 | * for all in netdev_increment_features. | 1102 | * for all in netdev_increment_features. |
| @@ -2555,7 +2549,7 @@ extern void netdev_class_remove_file(struct class_attribute *class_attr); | |||
| 2555 | 2549 | ||
| 2556 | extern struct kobj_ns_type_operations net_ns_type_operations; | 2550 | extern struct kobj_ns_type_operations net_ns_type_operations; |
| 2557 | 2551 | ||
| 2558 | extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len); | 2552 | extern const char *netdev_drivername(const struct net_device *dev); |
| 2559 | 2553 | ||
| 2560 | extern void linkwatch_run_queue(void); | 2554 | extern void linkwatch_run_queue(void); |
| 2561 | 2555 | ||
diff --git a/include/linux/netfilter/nf_conntrack_common.h b/include/linux/netfilter/nf_conntrack_common.h index 50cdc2559a5a..0d3dd66322ec 100644 --- a/include/linux/netfilter/nf_conntrack_common.h +++ b/include/linux/netfilter/nf_conntrack_common.h | |||
| @@ -18,6 +18,9 @@ enum ip_conntrack_info { | |||
| 18 | /* >= this indicates reply direction */ | 18 | /* >= this indicates reply direction */ |
| 19 | IP_CT_IS_REPLY, | 19 | IP_CT_IS_REPLY, |
| 20 | 20 | ||
| 21 | IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY, | ||
| 22 | IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY, | ||
| 23 | IP_CT_NEW_REPLY = IP_CT_NEW + IP_CT_IS_REPLY, | ||
| 21 | /* Number of distinct IP_CT types (no NEW in reply dirn). */ | 24 | /* Number of distinct IP_CT types (no NEW in reply dirn). */ |
| 22 | IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1 | 25 | IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1 |
| 23 | }; | 26 | }; |
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index 3a34e80ae92f..25311b3bedf8 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
| @@ -92,6 +92,9 @@ extern int nfs_pageio_add_request(struct nfs_pageio_descriptor *, | |||
| 92 | struct nfs_page *); | 92 | struct nfs_page *); |
| 93 | extern void nfs_pageio_complete(struct nfs_pageio_descriptor *desc); | 93 | extern void nfs_pageio_complete(struct nfs_pageio_descriptor *desc); |
| 94 | extern void nfs_pageio_cond_complete(struct nfs_pageio_descriptor *, pgoff_t); | 94 | extern void nfs_pageio_cond_complete(struct nfs_pageio_descriptor *, pgoff_t); |
| 95 | extern bool nfs_generic_pg_test(struct nfs_pageio_descriptor *desc, | ||
| 96 | struct nfs_page *prev, | ||
| 97 | struct nfs_page *req); | ||
| 95 | extern int nfs_wait_on_request(struct nfs_page *); | 98 | extern int nfs_wait_on_request(struct nfs_page *); |
| 96 | extern void nfs_unlock_request(struct nfs_page *req); | 99 | extern void nfs_unlock_request(struct nfs_page *req); |
| 97 | extern int nfs_set_page_tag_locked(struct nfs_page *req); | 100 | extern int nfs_set_page_tag_locked(struct nfs_page *req); |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 5e8444a11adf..00848d86ffb2 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -158,7 +158,6 @@ struct nfs_seqid; | |||
| 158 | 158 | ||
| 159 | /* nfs41 sessions channel attributes */ | 159 | /* nfs41 sessions channel attributes */ |
| 160 | struct nfs4_channel_attrs { | 160 | struct nfs4_channel_attrs { |
| 161 | u32 headerpadsz; | ||
| 162 | u32 max_rqst_sz; | 161 | u32 max_rqst_sz; |
| 163 | u32 max_resp_sz; | 162 | u32 max_resp_sz; |
| 164 | u32 max_resp_sz_cached; | 163 | u32 max_resp_sz_cached; |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index a311008af5e1..f8910e155566 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -1537,6 +1537,7 @@ | |||
| 1537 | #define PCI_DEVICE_ID_RICOH_RL5C476 0x0476 | 1537 | #define PCI_DEVICE_ID_RICOH_RL5C476 0x0476 |
| 1538 | #define PCI_DEVICE_ID_RICOH_RL5C478 0x0478 | 1538 | #define PCI_DEVICE_ID_RICOH_RL5C478 0x0478 |
| 1539 | #define PCI_DEVICE_ID_RICOH_R5C822 0x0822 | 1539 | #define PCI_DEVICE_ID_RICOH_R5C822 0x0822 |
| 1540 | #define PCI_DEVICE_ID_RICOH_R5CE823 0xe823 | ||
| 1540 | #define PCI_DEVICE_ID_RICOH_R5C832 0x0832 | 1541 | #define PCI_DEVICE_ID_RICOH_R5C832 0x0832 |
| 1541 | #define PCI_DEVICE_ID_RICOH_R5C843 0x0843 | 1542 | #define PCI_DEVICE_ID_RICOH_R5C843 0x0843 |
| 1542 | 1543 | ||
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 8b97308e65df..9ca008f0c542 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h | |||
| @@ -259,6 +259,9 @@ extern void __bad_size_call_parameter(void); | |||
| 259 | * Special handling for cmpxchg_double. cmpxchg_double is passed two | 259 | * Special handling for cmpxchg_double. cmpxchg_double is passed two |
| 260 | * percpu variables. The first has to be aligned to a double word | 260 | * percpu variables. The first has to be aligned to a double word |
| 261 | * boundary and the second has to follow directly thereafter. | 261 | * boundary and the second has to follow directly thereafter. |
| 262 | * We enforce this on all architectures even if they don't support | ||
| 263 | * a double cmpxchg instruction, since it's a cheap requirement, and it | ||
| 264 | * avoids breaking the requirement for architectures with the instruction. | ||
| 262 | */ | 265 | */ |
| 263 | #define __pcpu_double_call_return_bool(stem, pcp1, pcp2, ...) \ | 266 | #define __pcpu_double_call_return_bool(stem, pcp1, pcp2, ...) \ |
| 264 | ({ \ | 267 | ({ \ |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 3412684ce5d5..e0786e35f247 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
| @@ -137,14 +137,14 @@ enum perf_event_sample_format { | |||
| 137 | * | 137 | * |
| 138 | * struct read_format { | 138 | * struct read_format { |
| 139 | * { u64 value; | 139 | * { u64 value; |
| 140 | * { u64 time_enabled; } && PERF_FORMAT_ENABLED | 140 | * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED |
| 141 | * { u64 time_running; } && PERF_FORMAT_RUNNING | 141 | * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING |
| 142 | * { u64 id; } && PERF_FORMAT_ID | 142 | * { u64 id; } && PERF_FORMAT_ID |
| 143 | * } && !PERF_FORMAT_GROUP | 143 | * } && !PERF_FORMAT_GROUP |
| 144 | * | 144 | * |
| 145 | * { u64 nr; | 145 | * { u64 nr; |
| 146 | * { u64 time_enabled; } && PERF_FORMAT_ENABLED | 146 | * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED |
| 147 | * { u64 time_running; } && PERF_FORMAT_RUNNING | 147 | * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING |
| 148 | * { u64 value; | 148 | * { u64 value; |
| 149 | * { u64 id; } && PERF_FORMAT_ID | 149 | * { u64 id; } && PERF_FORMAT_ID |
| 150 | * } cntr[nr]; | 150 | * } cntr[nr]; |
diff --git a/include/linux/pm.h b/include/linux/pm.h index 3160648ccdda..411e4f4be52b 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
| @@ -425,7 +425,8 @@ struct dev_pm_info { | |||
| 425 | pm_message_t power_state; | 425 | pm_message_t power_state; |
| 426 | unsigned int can_wakeup:1; | 426 | unsigned int can_wakeup:1; |
| 427 | unsigned int async_suspend:1; | 427 | unsigned int async_suspend:1; |
| 428 | unsigned int in_suspend:1; /* Owned by the PM core */ | 428 | bool is_prepared:1; /* Owned by the PM core */ |
| 429 | bool is_suspended:1; /* Ditto */ | ||
| 429 | spinlock_t lock; | 430 | spinlock_t lock; |
| 430 | #ifdef CONFIG_PM_SLEEP | 431 | #ifdef CONFIG_PM_SLEEP |
| 431 | struct list_head entry; | 432 | struct list_head entry; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 2a8621c4be1e..14a6c7b545de 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -808,7 +808,7 @@ enum cpu_idle_type { | |||
| 808 | * when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the | 808 | * when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the |
| 809 | * increased costs. | 809 | * increased costs. |
| 810 | */ | 810 | */ |
| 811 | #if BITS_PER_LONG > 32 | 811 | #if 0 /* BITS_PER_LONG > 32 -- currently broken: it increases power usage under light load */ |
| 812 | # define SCHED_LOAD_RESOLUTION 10 | 812 | # define SCHED_LOAD_RESOLUTION 10 |
| 813 | # define scale_load(w) ((w) << SCHED_LOAD_RESOLUTION) | 813 | # define scale_load(w) ((w) << SCHED_LOAD_RESOLUTION) |
| 814 | # define scale_load_down(w) ((w) >> SCHED_LOAD_RESOLUTION) | 814 | # define scale_load_down(w) ((w) >> SCHED_LOAD_RESOLUTION) |
| @@ -844,6 +844,7 @@ enum cpu_idle_type { | |||
| 844 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ | 844 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ |
| 845 | #define SD_ASYM_PACKING 0x0800 /* Place busy groups earlier in the domain */ | 845 | #define SD_ASYM_PACKING 0x0800 /* Place busy groups earlier in the domain */ |
| 846 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ | 846 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ |
| 847 | #define SD_OVERLAP 0x2000 /* sched_domains of this level overlap */ | ||
| 847 | 848 | ||
| 848 | enum powersavings_balance_level { | 849 | enum powersavings_balance_level { |
| 849 | POWERSAVINGS_BALANCE_NONE = 0, /* No power saving load balance */ | 850 | POWERSAVINGS_BALANCE_NONE = 0, /* No power saving load balance */ |
| @@ -893,16 +894,21 @@ static inline int sd_power_saving_flags(void) | |||
| 893 | return 0; | 894 | return 0; |
| 894 | } | 895 | } |
| 895 | 896 | ||
| 896 | struct sched_group { | 897 | struct sched_group_power { |
| 897 | struct sched_group *next; /* Must be a circular list */ | ||
| 898 | atomic_t ref; | 898 | atomic_t ref; |
| 899 | |||
| 900 | /* | 899 | /* |
| 901 | * CPU power of this group, SCHED_LOAD_SCALE being max power for a | 900 | * CPU power of this group, SCHED_LOAD_SCALE being max power for a |
| 902 | * single CPU. | 901 | * single CPU. |
| 903 | */ | 902 | */ |
| 904 | unsigned int cpu_power, cpu_power_orig; | 903 | unsigned int power, power_orig; |
| 904 | }; | ||
| 905 | |||
| 906 | struct sched_group { | ||
| 907 | struct sched_group *next; /* Must be a circular list */ | ||
| 908 | atomic_t ref; | ||
| 909 | |||
| 905 | unsigned int group_weight; | 910 | unsigned int group_weight; |
| 911 | struct sched_group_power *sgp; | ||
| 906 | 912 | ||
| 907 | /* | 913 | /* |
| 908 | * The CPUs this group covers. | 914 | * The CPUs this group covers. |
| @@ -1063,6 +1069,7 @@ struct sched_domain; | |||
| 1063 | */ | 1069 | */ |
| 1064 | #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ | 1070 | #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ |
| 1065 | #define WF_FORK 0x02 /* child wakeup after fork */ | 1071 | #define WF_FORK 0x02 /* child wakeup after fork */ |
| 1072 | #define WF_MIGRATED 0x04 /* internal use, task got migrated */ | ||
| 1066 | 1073 | ||
| 1067 | #define ENQUEUE_WAKEUP 1 | 1074 | #define ENQUEUE_WAKEUP 1 |
| 1068 | #define ENQUEUE_HEAD 2 | 1075 | #define ENQUEUE_HEAD 2 |
| @@ -1253,6 +1260,9 @@ struct task_struct { | |||
| 1253 | #ifdef CONFIG_PREEMPT_RCU | 1260 | #ifdef CONFIG_PREEMPT_RCU |
| 1254 | int rcu_read_lock_nesting; | 1261 | int rcu_read_lock_nesting; |
| 1255 | char rcu_read_unlock_special; | 1262 | char rcu_read_unlock_special; |
| 1263 | #if defined(CONFIG_RCU_BOOST) && defined(CONFIG_TREE_PREEMPT_RCU) | ||
| 1264 | int rcu_boosted; | ||
| 1265 | #endif /* #if defined(CONFIG_RCU_BOOST) && defined(CONFIG_TREE_PREEMPT_RCU) */ | ||
| 1256 | struct list_head rcu_node_entry; | 1266 | struct list_head rcu_node_entry; |
| 1257 | #endif /* #ifdef CONFIG_PREEMPT_RCU */ | 1267 | #endif /* #ifdef CONFIG_PREEMPT_RCU */ |
| 1258 | #ifdef CONFIG_TREE_PREEMPT_RCU | 1268 | #ifdef CONFIG_TREE_PREEMPT_RCU |
diff --git a/include/linux/sdla.h b/include/linux/sdla.h index 564acd3a71c1..9995c7fc3f60 100644 --- a/include/linux/sdla.h +++ b/include/linux/sdla.h | |||
| @@ -112,11 +112,7 @@ struct sdla_dlci_conf { | |||
| 112 | short Tb_max; | 112 | short Tb_max; |
| 113 | }; | 113 | }; |
| 114 | 114 | ||
| 115 | #ifndef __KERNEL__ | 115 | #ifdef __KERNEL__ |
| 116 | |||
| 117 | void sdla(void *cfg_info, char *dev, struct frad_conf *conf, int quiet); | ||
| 118 | |||
| 119 | #else | ||
| 120 | 116 | ||
| 121 | /* important Z80 window addresses */ | 117 | /* important Z80 window addresses */ |
| 122 | #define SDLA_CONTROL_WND 0xE000 | 118 | #define SDLA_CONTROL_WND 0xE000 |
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h index e9811892844f..c6db9fb33c44 100644 --- a/include/linux/seqlock.h +++ b/include/linux/seqlock.h | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
| 30 | #include <linux/preempt.h> | 30 | #include <linux/preempt.h> |
| 31 | #include <asm/processor.h> | ||
| 31 | 32 | ||
| 32 | typedef struct { | 33 | typedef struct { |
| 33 | unsigned sequence; | 34 | unsigned sequence; |
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 2b7fec840517..aa08fa8fd79b 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/swap.h> | 4 | #include <linux/swap.h> |
| 5 | #include <linux/mempolicy.h> | 5 | #include <linux/mempolicy.h> |
| 6 | #include <linux/pagemap.h> | ||
| 6 | #include <linux/percpu_counter.h> | 7 | #include <linux/percpu_counter.h> |
| 7 | 8 | ||
| 8 | /* inode in-kernel data */ | 9 | /* inode in-kernel data */ |
| @@ -45,7 +46,27 @@ static inline struct shmem_inode_info *SHMEM_I(struct inode *inode) | |||
| 45 | return container_of(inode, struct shmem_inode_info, vfs_inode); | 46 | return container_of(inode, struct shmem_inode_info, vfs_inode); |
| 46 | } | 47 | } |
| 47 | 48 | ||
| 49 | /* | ||
| 50 | * Functions in mm/shmem.c called directly from elsewhere: | ||
| 51 | */ | ||
| 48 | extern int init_tmpfs(void); | 52 | extern int init_tmpfs(void); |
| 49 | extern int shmem_fill_super(struct super_block *sb, void *data, int silent); | 53 | extern int shmem_fill_super(struct super_block *sb, void *data, int silent); |
| 54 | extern struct file *shmem_file_setup(const char *name, | ||
| 55 | loff_t size, unsigned long flags); | ||
| 56 | extern int shmem_zero_setup(struct vm_area_struct *); | ||
| 57 | extern int shmem_lock(struct file *file, int lock, struct user_struct *user); | ||
| 58 | extern struct page *shmem_read_mapping_page_gfp(struct address_space *mapping, | ||
| 59 | pgoff_t index, gfp_t gfp_mask); | ||
| 60 | extern void shmem_truncate_range(struct inode *inode, loff_t start, loff_t end); | ||
| 61 | extern int shmem_unuse(swp_entry_t entry, struct page *page); | ||
| 62 | extern void mem_cgroup_get_shmem_target(struct inode *inode, pgoff_t pgoff, | ||
| 63 | struct page **pagep, swp_entry_t *ent); | ||
| 64 | |||
| 65 | static inline struct page *shmem_read_mapping_page( | ||
| 66 | struct address_space *mapping, pgoff_t index) | ||
| 67 | { | ||
| 68 | return shmem_read_mapping_page_gfp(mapping, index, | ||
| 69 | mapping_gfp_mask(mapping)); | ||
| 70 | } | ||
| 50 | 71 | ||
| 51 | #endif | 72 | #endif |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index e8b78ce14474..c0a4f3ab0cc0 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -1256,6 +1256,11 @@ static inline void skb_reserve(struct sk_buff *skb, int len) | |||
| 1256 | skb->tail += len; | 1256 | skb->tail += len; |
| 1257 | } | 1257 | } |
| 1258 | 1258 | ||
| 1259 | static inline void skb_reset_mac_len(struct sk_buff *skb) | ||
| 1260 | { | ||
| 1261 | skb->mac_len = skb->network_header - skb->mac_header; | ||
| 1262 | } | ||
| 1263 | |||
| 1259 | #ifdef NET_SKBUFF_DATA_USES_OFFSET | 1264 | #ifdef NET_SKBUFF_DATA_USES_OFFSET |
| 1260 | static inline unsigned char *skb_transport_header(const struct sk_buff *skb) | 1265 | static inline unsigned char *skb_transport_header(const struct sk_buff *skb) |
| 1261 | { | 1266 | { |
diff --git a/include/linux/smp.h b/include/linux/smp.h index 7ad824d510a2..8cc38d3bab0c 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
| @@ -85,12 +85,15 @@ int smp_call_function_any(const struct cpumask *mask, | |||
| 85 | * Generic and arch helpers | 85 | * Generic and arch helpers |
| 86 | */ | 86 | */ |
| 87 | #ifdef CONFIG_USE_GENERIC_SMP_HELPERS | 87 | #ifdef CONFIG_USE_GENERIC_SMP_HELPERS |
| 88 | void __init call_function_init(void); | ||
| 88 | void generic_smp_call_function_single_interrupt(void); | 89 | void generic_smp_call_function_single_interrupt(void); |
| 89 | void generic_smp_call_function_interrupt(void); | 90 | void generic_smp_call_function_interrupt(void); |
| 90 | void ipi_call_lock(void); | 91 | void ipi_call_lock(void); |
| 91 | void ipi_call_unlock(void); | 92 | void ipi_call_unlock(void); |
| 92 | void ipi_call_lock_irq(void); | 93 | void ipi_call_lock_irq(void); |
| 93 | void ipi_call_unlock_irq(void); | 94 | void ipi_call_unlock_irq(void); |
| 95 | #else | ||
| 96 | static inline void call_function_init(void) { } | ||
| 94 | #endif | 97 | #endif |
| 95 | 98 | ||
| 96 | /* | 99 | /* |
| @@ -134,7 +137,7 @@ static inline void smp_send_reschedule(int cpu) { } | |||
| 134 | #define smp_prepare_boot_cpu() do {} while (0) | 137 | #define smp_prepare_boot_cpu() do {} while (0) |
| 135 | #define smp_call_function_many(mask, func, info, wait) \ | 138 | #define smp_call_function_many(mask, func, info, wait) \ |
| 136 | (up_smp_call_function(func, info)) | 139 | (up_smp_call_function(func, info)) |
| 137 | static inline void init_call_single_data(void) { } | 140 | static inline void call_function_init(void) { } |
| 138 | 141 | ||
| 139 | static inline int | 142 | static inline int |
| 140 | smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, | 143 | smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, |
diff --git a/include/linux/sunrpc/gss_krb5_enctypes.h b/include/linux/sunrpc/gss_krb5_enctypes.h new file mode 100644 index 000000000000..ec6234eee89c --- /dev/null +++ b/include/linux/sunrpc/gss_krb5_enctypes.h | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | /* | ||
| 2 | * Dumb way to share this static piece of information with nfsd | ||
| 3 | */ | ||
| 4 | #define KRB5_SUPPORTED_ENCTYPES "18,17,16,23,3,1,2" | ||
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index f73c482ec9c6..fe2d8e6b923b 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h | |||
| @@ -84,7 +84,8 @@ struct rpc_task { | |||
| 84 | #endif | 84 | #endif |
| 85 | unsigned char tk_priority : 2,/* Task priority */ | 85 | unsigned char tk_priority : 2,/* Task priority */ |
| 86 | tk_garb_retry : 2, | 86 | tk_garb_retry : 2, |
| 87 | tk_cred_retry : 2; | 87 | tk_cred_retry : 2, |
| 88 | tk_rebind_retry : 2; | ||
| 88 | }; | 89 | }; |
| 89 | #define tk_xprt tk_client->cl_xprt | 90 | #define tk_xprt tk_client->cl_xprt |
| 90 | 91 | ||
diff --git a/include/linux/swap.h b/include/linux/swap.h index 384eb5fe530b..a273468f8285 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
| @@ -300,16 +300,6 @@ static inline void scan_unevictable_unregister_node(struct node *node) | |||
| 300 | extern int kswapd_run(int nid); | 300 | extern int kswapd_run(int nid); |
| 301 | extern void kswapd_stop(int nid); | 301 | extern void kswapd_stop(int nid); |
| 302 | 302 | ||
| 303 | #ifdef CONFIG_MMU | ||
| 304 | /* linux/mm/shmem.c */ | ||
| 305 | extern int shmem_unuse(swp_entry_t entry, struct page *page); | ||
| 306 | #endif /* CONFIG_MMU */ | ||
| 307 | |||
| 308 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR | ||
| 309 | extern void mem_cgroup_get_shmem_target(struct inode *inode, pgoff_t pgoff, | ||
| 310 | struct page **pagep, swp_entry_t *ent); | ||
| 311 | #endif | ||
| 312 | |||
| 313 | #ifdef CONFIG_SWAP | 303 | #ifdef CONFIG_SWAP |
| 314 | /* linux/mm/page_io.c */ | 304 | /* linux/mm/page_io.c */ |
| 315 | extern int swap_readpage(struct page *); | 305 | extern int swap_readpage(struct page *); |
| @@ -358,6 +348,7 @@ struct backing_dev_info; | |||
| 358 | extern struct mm_struct *swap_token_mm; | 348 | extern struct mm_struct *swap_token_mm; |
| 359 | extern void grab_swap_token(struct mm_struct *); | 349 | extern void grab_swap_token(struct mm_struct *); |
| 360 | extern void __put_swap_token(struct mm_struct *); | 350 | extern void __put_swap_token(struct mm_struct *); |
| 351 | extern void disable_swap_token(struct mem_cgroup *memcg); | ||
| 361 | 352 | ||
| 362 | static inline int has_swap_token(struct mm_struct *mm) | 353 | static inline int has_swap_token(struct mm_struct *mm) |
| 363 | { | 354 | { |
| @@ -370,11 +361,6 @@ static inline void put_swap_token(struct mm_struct *mm) | |||
| 370 | __put_swap_token(mm); | 361 | __put_swap_token(mm); |
| 371 | } | 362 | } |
| 372 | 363 | ||
| 373 | static inline void disable_swap_token(void) | ||
| 374 | { | ||
| 375 | put_swap_token(swap_token_mm); | ||
| 376 | } | ||
| 377 | |||
| 378 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR | 364 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR |
| 379 | extern void | 365 | extern void |
| 380 | mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout); | 366 | mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout); |
| @@ -500,7 +486,7 @@ static inline int has_swap_token(struct mm_struct *mm) | |||
| 500 | return 0; | 486 | return 0; |
| 501 | } | 487 | } |
| 502 | 488 | ||
| 503 | static inline void disable_swap_token(void) | 489 | static inline void disable_swap_token(struct mem_cgroup *memcg) |
| 504 | { | 490 | { |
| 505 | } | 491 | } |
| 506 | 492 | ||
diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h index 8c0e349f4a6c..445702c60d04 100644 --- a/include/linux/swiotlb.h +++ b/include/linux/swiotlb.h | |||
| @@ -24,6 +24,7 @@ extern int swiotlb_force; | |||
| 24 | 24 | ||
| 25 | extern void swiotlb_init(int verbose); | 25 | extern void swiotlb_init(int verbose); |
| 26 | extern void swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose); | 26 | extern void swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose); |
| 27 | extern unsigned long swioltb_nr_tbl(void); | ||
| 27 | 28 | ||
| 28 | /* | 29 | /* |
| 29 | * Enumeration for sync targets | 30 | * Enumeration for sync targets |
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h index c3acda60eee0..e2696d76a599 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h | |||
| @@ -177,9 +177,6 @@ struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, | |||
| 177 | struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd); | 177 | struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd); |
| 178 | void sysfs_put(struct sysfs_dirent *sd); | 178 | void sysfs_put(struct sysfs_dirent *sd); |
| 179 | 179 | ||
| 180 | /* Called to clear a ns tag when it is no longer valid */ | ||
| 181 | void sysfs_exit_ns(enum kobj_ns_type type, const void *tag); | ||
| 182 | |||
| 183 | int __must_check sysfs_init(void); | 180 | int __must_check sysfs_init(void); |
| 184 | 181 | ||
| 185 | #else /* CONFIG_SYSFS */ | 182 | #else /* CONFIG_SYSFS */ |
| @@ -338,10 +335,6 @@ static inline void sysfs_put(struct sysfs_dirent *sd) | |||
| 338 | { | 335 | { |
| 339 | } | 336 | } |
| 340 | 337 | ||
| 341 | static inline void sysfs_exit_ns(int type, const void *tag) | ||
| 342 | { | ||
| 343 | } | ||
| 344 | |||
| 345 | static inline int __must_check sysfs_init(void) | 338 | static inline int __must_check sysfs_init(void) |
| 346 | { | 339 | { |
| 347 | return 0; | 340 | return 0; |
diff --git a/include/linux/topology.h b/include/linux/topology.h index b91a40e847d2..fc839bfa7935 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
| @@ -60,7 +60,7 @@ int arch_update_cpu_topology(void); | |||
| 60 | * (in whatever arch specific measurement units returned by node_distance()) | 60 | * (in whatever arch specific measurement units returned by node_distance()) |
| 61 | * then switch on zone reclaim on boot. | 61 | * then switch on zone reclaim on boot. |
| 62 | */ | 62 | */ |
| 63 | #define RECLAIM_DISTANCE 20 | 63 | #define RECLAIM_DISTANCE 30 |
| 64 | #endif | 64 | #endif |
| 65 | #ifndef PENALTY_FOR_NODE_WITH_CPUS | 65 | #ifndef PENALTY_FOR_NODE_WITH_CPUS |
| 66 | #define PENALTY_FOR_NODE_WITH_CPUS (1) | 66 | #define PENALTY_FOR_NODE_WITH_CPUS (1) |
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h index 71693d4a4fe1..17df3600bcef 100644 --- a/include/linux/usb_usual.h +++ b/include/linux/usb_usual.h | |||
| @@ -62,7 +62,9 @@ | |||
| 62 | US_FLAG(NO_READ_DISC_INFO, 0x00040000) \ | 62 | US_FLAG(NO_READ_DISC_INFO, 0x00040000) \ |
| 63 | /* cannot handle READ_DISC_INFO */ \ | 63 | /* cannot handle READ_DISC_INFO */ \ |
| 64 | US_FLAG(NO_READ_CAPACITY_16, 0x00080000) \ | 64 | US_FLAG(NO_READ_CAPACITY_16, 0x00080000) \ |
| 65 | /* cannot handle READ_CAPACITY_16 */ | 65 | /* cannot handle READ_CAPACITY_16 */ \ |
| 66 | US_FLAG(INITIAL_READ10, 0x00100000) \ | ||
| 67 | /* Initial READ(10) (and others) must be retried */ | ||
| 66 | 68 | ||
| 67 | #define US_FLAG(name, value) US_FL_##name = value , | 69 | #define US_FLAG(name, value) US_FL_##name = value , |
| 68 | enum { US_DO_ALL_FLAGS }; | 70 | enum { US_DO_ALL_FLAGS }; |
diff --git a/include/linux/uts.h b/include/linux/uts.h index 73eb1ed36ec4..6ddbd86377de 100644 --- a/include/linux/uts.h +++ b/include/linux/uts.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #endif | 9 | #endif |
| 10 | 10 | ||
| 11 | #ifndef UTS_NODENAME | 11 | #ifndef UTS_NODENAME |
| 12 | #define UTS_NODENAME "(none)" /* set by sethostname() */ | 12 | #define UTS_NODENAME CONFIG_DEFAULT_HOSTNAME /* set by sethostname() */ |
| 13 | #endif | 13 | #endif |
| 14 | 14 | ||
| 15 | #ifndef UTS_DOMAINNAME | 15 | #ifndef UTS_DOMAINNAME |
