diff options
author | David S. Miller <davem@davemloft.net> | 2009-02-24 06:49:55 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-24 06:49:55 -0500 |
commit | 467388f29fc9cebfb70e7a187107b6b5d772cb44 (patch) | |
tree | 4e6fffa65f38addffc149a5fe88be3d2161eaf6e /include/linux | |
parent | 028e1415a78733fcd2cba4b4c001826cc37a373e (diff) | |
parent | f7e603ad8f78cd3b59e33fa72707da0cbabdf699 (diff) |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'include/linux')
35 files changed, 229 insertions, 155 deletions
diff --git a/include/linux/async.h b/include/linux/async.h index c4ecacd0b327..68a9530196f2 100644 --- a/include/linux/async.h +++ b/include/linux/async.h | |||
@@ -17,9 +17,11 @@ typedef u64 async_cookie_t; | |||
17 | typedef void (async_func_ptr) (void *data, async_cookie_t cookie); | 17 | typedef void (async_func_ptr) (void *data, async_cookie_t cookie); |
18 | 18 | ||
19 | extern async_cookie_t async_schedule(async_func_ptr *ptr, void *data); | 19 | extern async_cookie_t async_schedule(async_func_ptr *ptr, void *data); |
20 | extern async_cookie_t async_schedule_special(async_func_ptr *ptr, void *data, struct list_head *list); | 20 | extern async_cookie_t async_schedule_domain(async_func_ptr *ptr, void *data, |
21 | struct list_head *list); | ||
21 | extern void async_synchronize_full(void); | 22 | extern void async_synchronize_full(void); |
22 | extern void async_synchronize_full_special(struct list_head *list); | 23 | extern void async_synchronize_full_domain(struct list_head *list); |
23 | extern void async_synchronize_cookie(async_cookie_t cookie); | 24 | extern void async_synchronize_cookie(async_cookie_t cookie); |
24 | extern void async_synchronize_cookie_special(async_cookie_t cookie, struct list_head *list); | 25 | extern void async_synchronize_cookie_domain(async_cookie_t cookie, |
26 | struct list_head *list); | ||
25 | 27 | ||
diff --git a/include/linux/ata.h b/include/linux/ata.h index a53318b8cbd0..08a86d5cdf1b 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -731,12 +731,17 @@ static inline int ata_id_current_chs_valid(const u16 *id) | |||
731 | 731 | ||
732 | static inline int ata_id_is_cfa(const u16 *id) | 732 | static inline int ata_id_is_cfa(const u16 *id) |
733 | { | 733 | { |
734 | if (id[ATA_ID_CONFIG] == 0x848A) /* Standard CF */ | 734 | if (id[ATA_ID_CONFIG] == 0x848A) /* Traditional CF */ |
735 | return 1; | 735 | return 1; |
736 | /* Could be CF hiding as standard ATA */ | 736 | /* |
737 | if (ata_id_major_version(id) >= 3 && | 737 | * CF specs don't require specific value in the word 0 anymore and yet |
738 | id[ATA_ID_COMMAND_SET_1] != 0xFFFF && | 738 | * they forbid to report the ATA version in the word 80 and require the |
739 | (id[ATA_ID_COMMAND_SET_1] & (1 << 2))) | 739 | * CFA feature set support to be indicated in the word 83 in this case. |
740 | * Unfortunately, some cards only follow either of this requirements, | ||
741 | * and while those that don't indicate CFA feature support need some | ||
742 | * sort of quirk list, it seems impractical for the ones that do... | ||
743 | */ | ||
744 | if ((id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004) | ||
740 | return 1; | 745 | return 1; |
741 | return 0; | 746 | return 0; |
742 | } | 747 | } |
diff --git a/include/linux/bio.h b/include/linux/bio.h index 2aa283ab062b..1b16108a5417 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -171,8 +171,6 @@ struct bio { | |||
171 | #define BIO_RW_FAILFAST_TRANSPORT 8 | 171 | #define BIO_RW_FAILFAST_TRANSPORT 8 |
172 | #define BIO_RW_FAILFAST_DRIVER 9 | 172 | #define BIO_RW_FAILFAST_DRIVER 9 |
173 | 173 | ||
174 | #define BIO_RW_SYNC (BIO_RW_SYNCIO | BIO_RW_UNPLUG) | ||
175 | |||
176 | #define bio_rw_flagged(bio, flag) ((bio)->bi_rw & (1 << (flag))) | 174 | #define bio_rw_flagged(bio, flag) ((bio)->bi_rw & (1 << (flag))) |
177 | 175 | ||
178 | /* | 176 | /* |
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 25379cba2370..6e915878e88c 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
@@ -15,6 +15,7 @@ enum blktrace_cat { | |||
15 | BLK_TC_WRITE = 1 << 1, /* writes */ | 15 | BLK_TC_WRITE = 1 << 1, /* writes */ |
16 | BLK_TC_BARRIER = 1 << 2, /* barrier */ | 16 | BLK_TC_BARRIER = 1 << 2, /* barrier */ |
17 | BLK_TC_SYNC = 1 << 3, /* sync IO */ | 17 | BLK_TC_SYNC = 1 << 3, /* sync IO */ |
18 | BLK_TC_SYNCIO = BLK_TC_SYNC, | ||
18 | BLK_TC_QUEUE = 1 << 4, /* queueing/merging */ | 19 | BLK_TC_QUEUE = 1 << 4, /* queueing/merging */ |
19 | BLK_TC_REQUEUE = 1 << 5, /* requeueing */ | 20 | BLK_TC_REQUEUE = 1 << 5, /* requeueing */ |
20 | BLK_TC_ISSUE = 1 << 6, /* issue */ | 21 | BLK_TC_ISSUE = 1 << 6, /* issue */ |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index e4e8e117d27d..499900d0cee7 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -378,6 +378,7 @@ struct cgroup_subsys { | |||
378 | * - initiating hotplug events | 378 | * - initiating hotplug events |
379 | */ | 379 | */ |
380 | struct mutex hierarchy_mutex; | 380 | struct mutex hierarchy_mutex; |
381 | struct lock_class_key subsys_key; | ||
381 | 382 | ||
382 | /* | 383 | /* |
383 | * Link to parent, and list entry in parent's children. | 384 | * Link to parent, and list entry in parent's children. |
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 3bacd71509fb..1f2e9020acc6 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
@@ -552,7 +552,12 @@ struct crypto_tfm *crypto_alloc_tfm(const char *alg_name, | |||
552 | const struct crypto_type *frontend, | 552 | const struct crypto_type *frontend, |
553 | u32 type, u32 mask); | 553 | u32 type, u32 mask); |
554 | struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask); | 554 | struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask); |
555 | void crypto_free_tfm(struct crypto_tfm *tfm); | 555 | void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm); |
556 | |||
557 | static inline void crypto_free_tfm(struct crypto_tfm *tfm) | ||
558 | { | ||
559 | return crypto_destroy_tfm(tfm, tfm); | ||
560 | } | ||
556 | 561 | ||
557 | int alg_test(const char *driver, const char *alg, u32 type, u32 mask); | 562 | int alg_test(const char *driver, const char *alg, u32 type, u32 mask); |
558 | 563 | ||
diff --git a/include/linux/device.h b/include/linux/device.h index 45e5b1921fbb..47f343c7bdda 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -147,6 +147,8 @@ extern void put_driver(struct device_driver *drv); | |||
147 | extern struct device_driver *driver_find(const char *name, | 147 | extern struct device_driver *driver_find(const char *name, |
148 | struct bus_type *bus); | 148 | struct bus_type *bus); |
149 | extern int driver_probe_done(void); | 149 | extern int driver_probe_done(void); |
150 | extern int wait_for_device_probe(void); | ||
151 | |||
150 | 152 | ||
151 | /* sysfs interface for exporting driver attributes */ | 153 | /* sysfs interface for exporting driver attributes */ |
152 | 154 | ||
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 3e68469c1885..f0413845f20e 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -121,6 +121,7 @@ struct dma_chan_percpu { | |||
121 | * @local: per-cpu pointer to a struct dma_chan_percpu | 121 | * @local: per-cpu pointer to a struct dma_chan_percpu |
122 | * @client-count: how many clients are using this channel | 122 | * @client-count: how many clients are using this channel |
123 | * @table_count: number of appearances in the mem-to-mem allocation table | 123 | * @table_count: number of appearances in the mem-to-mem allocation table |
124 | * @private: private data for certain client-channel associations | ||
124 | */ | 125 | */ |
125 | struct dma_chan { | 126 | struct dma_chan { |
126 | struct dma_device *device; | 127 | struct dma_device *device; |
@@ -134,6 +135,7 @@ struct dma_chan { | |||
134 | struct dma_chan_percpu *local; | 135 | struct dma_chan_percpu *local; |
135 | int client_count; | 136 | int client_count; |
136 | int table_count; | 137 | int table_count; |
138 | void *private; | ||
137 | }; | 139 | }; |
138 | 140 | ||
139 | /** | 141 | /** |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 818fe21257e8..31527e17076b 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -960,6 +960,21 @@ extern struct fb_info *registered_fb[FB_MAX]; | |||
960 | extern int num_registered_fb; | 960 | extern int num_registered_fb; |
961 | extern struct class *fb_class; | 961 | extern struct class *fb_class; |
962 | 962 | ||
963 | static inline int lock_fb_info(struct fb_info *info) | ||
964 | { | ||
965 | mutex_lock(&info->lock); | ||
966 | if (!info->fbops) { | ||
967 | mutex_unlock(&info->lock); | ||
968 | return 0; | ||
969 | } | ||
970 | return 1; | ||
971 | } | ||
972 | |||
973 | static inline void unlock_fb_info(struct fb_info *info) | ||
974 | { | ||
975 | mutex_unlock(&info->lock); | ||
976 | } | ||
977 | |||
963 | static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, | 978 | static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, |
964 | u8 *src, u32 s_pitch, u32 height) | 979 | u8 *src, u32 s_pitch, u32 height) |
965 | { | 980 | { |
diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h index 6e199c8dfacc..cca686b39123 100644 --- a/include/linux/firmware-map.h +++ b/include/linux/firmware-map.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * include/linux/firmware-map.h: | 2 | * include/linux/firmware-map.h: |
3 | * Copyright (C) 2008 SUSE LINUX Products GmbH | 3 | * Copyright (C) 2008 SUSE LINUX Products GmbH |
4 | * by Bernhard Walle <bwalle@suse.de> | 4 | * by Bernhard Walle <bernhard.walle@gmx.de> |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify | 6 | * This program is free software; you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License v2.0 as published by | 7 | * it under the terms of the GNU General Public License v2.0 as published by |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 6022f44043f2..92734c0012e6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -54,24 +54,30 @@ struct inodes_stat_t { | |||
54 | #define MAY_ACCESS 16 | 54 | #define MAY_ACCESS 16 |
55 | #define MAY_OPEN 32 | 55 | #define MAY_OPEN 32 |
56 | 56 | ||
57 | /* | ||
58 | * flags in file.f_mode. Note that FMODE_READ and FMODE_WRITE must correspond | ||
59 | * to O_WRONLY and O_RDWR via the strange trick in __dentry_open() | ||
60 | */ | ||
61 | |||
57 | /* file is open for reading */ | 62 | /* file is open for reading */ |
58 | #define FMODE_READ ((__force fmode_t)1) | 63 | #define FMODE_READ ((__force fmode_t)1) |
59 | /* file is open for writing */ | 64 | /* file is open for writing */ |
60 | #define FMODE_WRITE ((__force fmode_t)2) | 65 | #define FMODE_WRITE ((__force fmode_t)2) |
61 | /* file is seekable */ | 66 | /* file is seekable */ |
62 | #define FMODE_LSEEK ((__force fmode_t)4) | 67 | #define FMODE_LSEEK ((__force fmode_t)4) |
63 | /* file can be accessed using pread/pwrite */ | 68 | /* file can be accessed using pread */ |
64 | #define FMODE_PREAD ((__force fmode_t)8) | 69 | #define FMODE_PREAD ((__force fmode_t)8) |
65 | #define FMODE_PWRITE FMODE_PREAD /* These go hand in hand */ | 70 | /* file can be accessed using pwrite */ |
71 | #define FMODE_PWRITE ((__force fmode_t)16) | ||
66 | /* File is opened for execution with sys_execve / sys_uselib */ | 72 | /* File is opened for execution with sys_execve / sys_uselib */ |
67 | #define FMODE_EXEC ((__force fmode_t)16) | 73 | #define FMODE_EXEC ((__force fmode_t)32) |
68 | /* File is opened with O_NDELAY (only set for block devices) */ | 74 | /* File is opened with O_NDELAY (only set for block devices) */ |
69 | #define FMODE_NDELAY ((__force fmode_t)32) | 75 | #define FMODE_NDELAY ((__force fmode_t)64) |
70 | /* File is opened with O_EXCL (only set for block devices) */ | 76 | /* File is opened with O_EXCL (only set for block devices) */ |
71 | #define FMODE_EXCL ((__force fmode_t)64) | 77 | #define FMODE_EXCL ((__force fmode_t)128) |
72 | /* File is opened using open(.., 3, ..) and is writeable only for ioctls | 78 | /* File is opened using open(.., 3, ..) and is writeable only for ioctls |
73 | (specialy hack for floppy.c) */ | 79 | (specialy hack for floppy.c) */ |
74 | #define FMODE_WRITE_IOCTL ((__force fmode_t)128) | 80 | #define FMODE_WRITE_IOCTL ((__force fmode_t)256) |
75 | 81 | ||
76 | /* | 82 | /* |
77 | * Don't update ctime and mtime. | 83 | * Don't update ctime and mtime. |
@@ -87,10 +93,10 @@ struct inodes_stat_t { | |||
87 | #define WRITE 1 | 93 | #define WRITE 1 |
88 | #define READA 2 /* read-ahead - don't block if no resources */ | 94 | #define READA 2 /* read-ahead - don't block if no resources */ |
89 | #define SWRITE 3 /* for ll_rw_block() - wait for buffer lock */ | 95 | #define SWRITE 3 /* for ll_rw_block() - wait for buffer lock */ |
90 | #define READ_SYNC (READ | (1 << BIO_RW_SYNC)) | 96 | #define READ_SYNC (READ | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG)) |
91 | #define READ_META (READ | (1 << BIO_RW_META)) | 97 | #define READ_META (READ | (1 << BIO_RW_META)) |
92 | #define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC)) | 98 | #define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG)) |
93 | #define SWRITE_SYNC (SWRITE | (1 << BIO_RW_SYNC)) | 99 | #define SWRITE_SYNC (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG)) |
94 | #define WRITE_BARRIER (WRITE | (1 << BIO_RW_BARRIER)) | 100 | #define WRITE_BARRIER (WRITE | (1 << BIO_RW_BARRIER)) |
95 | #define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD) | 101 | #define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD) |
96 | #define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER)) | 102 | #define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER)) |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index f1d2fba19ea0..03be7f29ca01 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
@@ -33,7 +33,8 @@ unsigned long hugetlb_total_pages(void); | |||
33 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 33 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
34 | unsigned long address, int write_access); | 34 | unsigned long address, int write_access); |
35 | int hugetlb_reserve_pages(struct inode *inode, long from, long to, | 35 | int hugetlb_reserve_pages(struct inode *inode, long from, long to, |
36 | struct vm_area_struct *vma); | 36 | struct vm_area_struct *vma, |
37 | int acctflags); | ||
37 | void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed); | 38 | void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed); |
38 | 39 | ||
39 | extern unsigned long hugepages_treat_as_movable; | 40 | extern unsigned long hugepages_treat_as_movable; |
@@ -138,7 +139,7 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb) | |||
138 | 139 | ||
139 | extern const struct file_operations hugetlbfs_file_operations; | 140 | extern const struct file_operations hugetlbfs_file_operations; |
140 | extern struct vm_operations_struct hugetlb_vm_ops; | 141 | extern struct vm_operations_struct hugetlb_vm_ops; |
141 | struct file *hugetlb_file_setup(const char *name, size_t); | 142 | struct file *hugetlb_file_setup(const char *name, size_t, int); |
142 | int hugetlb_get_quota(struct address_space *mapping, long delta); | 143 | int hugetlb_get_quota(struct address_space *mapping, long delta); |
143 | void hugetlb_put_quota(struct address_space *mapping, long delta); | 144 | void hugetlb_put_quota(struct address_space *mapping, long delta); |
144 | 145 | ||
@@ -158,9 +159,9 @@ static inline void set_file_hugepages(struct file *file) | |||
158 | } | 159 | } |
159 | #else /* !CONFIG_HUGETLBFS */ | 160 | #else /* !CONFIG_HUGETLBFS */ |
160 | 161 | ||
161 | #define is_file_hugepages(file) 0 | 162 | #define is_file_hugepages(file) 0 |
162 | #define set_file_hugepages(file) BUG() | 163 | #define set_file_hugepages(file) BUG() |
163 | #define hugetlb_file_setup(name,size) ERR_PTR(-ENOSYS) | 164 | #define hugetlb_file_setup(name,size,acctflag) ERR_PTR(-ENOSYS) |
164 | 165 | ||
165 | #endif /* !CONFIG_HUGETLBFS */ | 166 | #endif /* !CONFIG_HUGETLBFS */ |
166 | 167 | ||
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index ea0ea1a4c36f..e752d973fa21 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -48,12 +48,11 @@ extern struct fs_struct init_fs; | |||
48 | .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ | 48 | .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ |
49 | .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ | 49 | .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ |
50 | .rlim = INIT_RLIMITS, \ | 50 | .rlim = INIT_RLIMITS, \ |
51 | .cputime = { .totals = { \ | 51 | .cputimer = { \ |
52 | .utime = cputime_zero, \ | 52 | .cputime = INIT_CPUTIME, \ |
53 | .stime = cputime_zero, \ | 53 | .running = 0, \ |
54 | .sum_exec_runtime = 0, \ | 54 | .lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \ |
55 | .lock = __SPIN_LOCK_UNLOCKED(sig.cputime.totals.lock), \ | 55 | }, \ |
56 | }, }, \ | ||
57 | } | 56 | } |
58 | 57 | ||
59 | extern struct nsproxy init_nsproxy; | 58 | extern struct nsproxy init_nsproxy; |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index b28b37eb11c6..4d248b3f1323 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -1150,7 +1150,8 @@ extern int jbd2_journal_clear_err (journal_t *); | |||
1150 | extern int jbd2_journal_bmap(journal_t *, unsigned long, unsigned long long *); | 1150 | extern int jbd2_journal_bmap(journal_t *, unsigned long, unsigned long long *); |
1151 | extern int jbd2_journal_force_commit(journal_t *); | 1151 | extern int jbd2_journal_force_commit(journal_t *); |
1152 | extern int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *inode); | 1152 | extern int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *inode); |
1153 | extern int jbd2_journal_begin_ordered_truncate(struct jbd2_inode *inode, loff_t new_size); | 1153 | extern int jbd2_journal_begin_ordered_truncate(journal_t *journal, |
1154 | struct jbd2_inode *inode, loff_t new_size); | ||
1154 | extern void jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, struct inode *inode); | 1155 | extern void jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, struct inode *inode); |
1155 | extern void jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_inode *jinode); | 1156 | extern void jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_inode *jinode); |
1156 | 1157 | ||
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 343df9ef2412..7fa371898e3e 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -480,7 +480,8 @@ static inline char *pack_hex_byte(char *buf, u8 byte) | |||
480 | /* | 480 | /* |
481 | * swap - swap value of @a and @b | 481 | * swap - swap value of @a and @b |
482 | */ | 482 | */ |
483 | #define swap(a, b) ({ typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; }) | 483 | #define swap(a, b) \ |
484 | do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) | ||
484 | 485 | ||
485 | /** | 486 | /** |
486 | * container_of - cast a member of a structure out to the containing structure | 487 | * container_of - cast a member of a structure out to the containing structure |
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 5715f1907601..0424326f1679 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
@@ -58,10 +58,10 @@ struct kvm_irqchip { | |||
58 | __u32 pad; | 58 | __u32 pad; |
59 | union { | 59 | union { |
60 | char dummy[512]; /* reserving space */ | 60 | char dummy[512]; /* reserving space */ |
61 | #ifdef CONFIG_X86 | 61 | #ifdef __KVM_HAVE_PIT |
62 | struct kvm_pic_state pic; | 62 | struct kvm_pic_state pic; |
63 | #endif | 63 | #endif |
64 | #if defined(CONFIG_X86) || defined(CONFIG_IA64) | 64 | #ifdef __KVM_HAVE_IOAPIC |
65 | struct kvm_ioapic_state ioapic; | 65 | struct kvm_ioapic_state ioapic; |
66 | #endif | 66 | #endif |
67 | } chip; | 67 | } chip; |
@@ -384,16 +384,16 @@ struct kvm_trace_rec { | |||
384 | #define KVM_CAP_MP_STATE 14 | 384 | #define KVM_CAP_MP_STATE 14 |
385 | #define KVM_CAP_COALESCED_MMIO 15 | 385 | #define KVM_CAP_COALESCED_MMIO 15 |
386 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ | 386 | #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */ |
387 | #if defined(CONFIG_X86)||defined(CONFIG_IA64) | 387 | #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT |
388 | #define KVM_CAP_DEVICE_ASSIGNMENT 17 | 388 | #define KVM_CAP_DEVICE_ASSIGNMENT 17 |
389 | #endif | 389 | #endif |
390 | #define KVM_CAP_IOMMU 18 | 390 | #define KVM_CAP_IOMMU 18 |
391 | #if defined(CONFIG_X86) | 391 | #ifdef __KVM_HAVE_MSI |
392 | #define KVM_CAP_DEVICE_MSI 20 | 392 | #define KVM_CAP_DEVICE_MSI 20 |
393 | #endif | 393 | #endif |
394 | /* Bug in KVM_SET_USER_MEMORY_REGION fixed: */ | 394 | /* Bug in KVM_SET_USER_MEMORY_REGION fixed: */ |
395 | #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21 | 395 | #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21 |
396 | #if defined(CONFIG_X86) | 396 | #ifdef __KVM_HAVE_USER_NMI |
397 | #define KVM_CAP_USER_NMI 22 | 397 | #define KVM_CAP_USER_NMI 22 |
398 | #endif | 398 | #endif |
399 | 399 | ||
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index ec49d0be7f52..bf6f703642fc 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -285,6 +285,7 @@ void kvm_free_physmem(struct kvm *kvm); | |||
285 | struct kvm *kvm_arch_create_vm(void); | 285 | struct kvm *kvm_arch_create_vm(void); |
286 | void kvm_arch_destroy_vm(struct kvm *kvm); | 286 | void kvm_arch_destroy_vm(struct kvm *kvm); |
287 | void kvm_free_all_assigned_devices(struct kvm *kvm); | 287 | void kvm_free_all_assigned_devices(struct kvm *kvm); |
288 | void kvm_arch_sync_events(struct kvm *kvm); | ||
288 | 289 | ||
289 | int kvm_cpu_get_interrupt(struct kvm_vcpu *v); | 290 | int kvm_cpu_get_interrupt(struct kvm_vcpu *v); |
290 | int kvm_cpu_has_interrupt(struct kvm_vcpu *v); | 291 | int kvm_cpu_has_interrupt(struct kvm_vcpu *v); |
diff --git a/include/linux/libata.h b/include/linux/libata.h index bca3ba25f52a..5d87bc09a1f5 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -380,6 +380,7 @@ enum { | |||
380 | ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands | 380 | ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands |
381 | not multiple of 16 bytes */ | 381 | not multiple of 16 bytes */ |
382 | ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firwmare update warning */ | 382 | ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firwmare update warning */ |
383 | ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ | ||
383 | 384 | ||
384 | /* DMA mask for user DMA control: User visible values; DO NOT | 385 | /* DMA mask for user DMA control: User visible values; DO NOT |
385 | renumber */ | 386 | renumber */ |
@@ -580,7 +581,7 @@ struct ata_device { | |||
580 | acpi_handle acpi_handle; | 581 | acpi_handle acpi_handle; |
581 | union acpi_object *gtf_cache; | 582 | union acpi_object *gtf_cache; |
582 | #endif | 583 | #endif |
583 | /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */ | 584 | /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ |
584 | u64 n_sectors; /* size of device, if ATA */ | 585 | u64 n_sectors; /* size of device, if ATA */ |
585 | unsigned int class; /* ATA_DEV_xxx */ | 586 | unsigned int class; /* ATA_DEV_xxx */ |
586 | unsigned long unpark_deadline; | 587 | unsigned long unpark_deadline; |
@@ -605,20 +606,22 @@ struct ata_device { | |||
605 | u16 heads; /* Number of heads */ | 606 | u16 heads; /* Number of heads */ |
606 | u16 sectors; /* Number of sectors per track */ | 607 | u16 sectors; /* Number of sectors per track */ |
607 | 608 | ||
608 | /* error history */ | ||
609 | int spdn_cnt; | ||
610 | struct ata_ering ering; | ||
611 | |||
612 | union { | 609 | union { |
613 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ | 610 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ |
614 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ | 611 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ |
615 | }; | 612 | }; |
613 | |||
614 | /* error history */ | ||
615 | int spdn_cnt; | ||
616 | /* ering is CLEAR_END, read comment above CLEAR_END */ | ||
617 | struct ata_ering ering; | ||
616 | }; | 618 | }; |
617 | 619 | ||
618 | /* Offset into struct ata_device. Fields above it are maintained | 620 | /* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are |
619 | * acress device init. Fields below are zeroed. | 621 | * cleared to zero on ata_dev_init(). |
620 | */ | 622 | */ |
621 | #define ATA_DEVICE_CLEAR_OFFSET offsetof(struct ata_device, n_sectors) | 623 | #define ATA_DEVICE_CLEAR_BEGIN offsetof(struct ata_device, n_sectors) |
624 | #define ATA_DEVICE_CLEAR_END offsetof(struct ata_device, ering) | ||
622 | 625 | ||
623 | struct ata_eh_info { | 626 | struct ata_eh_info { |
624 | struct ata_device *dev; /* offending device */ | 627 | struct ata_device *dev; /* offending device */ |
diff --git a/include/linux/mm.h b/include/linux/mm.h index e8ddc98b8405..065cdf8c09fb 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -1041,10 +1041,23 @@ extern void free_bootmem_with_active_regions(int nid, | |||
1041 | typedef int (*work_fn_t)(unsigned long, unsigned long, void *); | 1041 | typedef int (*work_fn_t)(unsigned long, unsigned long, void *); |
1042 | extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data); | 1042 | extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data); |
1043 | extern void sparse_memory_present_with_active_regions(int nid); | 1043 | extern void sparse_memory_present_with_active_regions(int nid); |
1044 | #ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID | ||
1045 | extern int early_pfn_to_nid(unsigned long pfn); | ||
1046 | #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ | ||
1047 | #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ | 1044 | #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ |
1045 | |||
1046 | #if !defined(CONFIG_ARCH_POPULATES_NODE_MAP) && \ | ||
1047 | !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID) | ||
1048 | static inline int __early_pfn_to_nid(unsigned long pfn) | ||
1049 | { | ||
1050 | return 0; | ||
1051 | } | ||
1052 | #else | ||
1053 | /* please see mm/page_alloc.c */ | ||
1054 | extern int __meminit early_pfn_to_nid(unsigned long pfn); | ||
1055 | #ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID | ||
1056 | /* there is a per-arch backend function. */ | ||
1057 | extern int __meminit __early_pfn_to_nid(unsigned long pfn); | ||
1058 | #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ | ||
1059 | #endif | ||
1060 | |||
1048 | extern void set_dma_reserve(unsigned long new_dma_reserve); | 1061 | extern void set_dma_reserve(unsigned long new_dma_reserve); |
1049 | extern void memmap_init_zone(unsigned long, int, unsigned long, | 1062 | extern void memmap_init_zone(unsigned long, int, unsigned long, |
1050 | unsigned long, enum memmap_context); | 1063 | unsigned long, enum memmap_context); |
@@ -1129,8 +1142,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | |||
1129 | unsigned long flag, unsigned long pgoff); | 1142 | unsigned long flag, unsigned long pgoff); |
1130 | extern unsigned long mmap_region(struct file *file, unsigned long addr, | 1143 | extern unsigned long mmap_region(struct file *file, unsigned long addr, |
1131 | unsigned long len, unsigned long flags, | 1144 | unsigned long len, unsigned long flags, |
1132 | unsigned int vm_flags, unsigned long pgoff, | 1145 | unsigned int vm_flags, unsigned long pgoff); |
1133 | int accountable); | ||
1134 | 1146 | ||
1135 | static inline unsigned long do_mmap(struct file *file, unsigned long addr, | 1147 | static inline unsigned long do_mmap(struct file *file, unsigned long addr, |
1136 | unsigned long len, unsigned long prot, | 1148 | unsigned long len, unsigned long prot, |
@@ -1160,6 +1172,7 @@ extern int filemap_fault(struct vm_area_struct *, struct vm_fault *); | |||
1160 | 1172 | ||
1161 | /* mm/page-writeback.c */ | 1173 | /* mm/page-writeback.c */ |
1162 | int write_one_page(struct page *page, int wait); | 1174 | int write_one_page(struct page *page, int wait); |
1175 | void task_dirty_inc(struct task_struct *tsk); | ||
1163 | 1176 | ||
1164 | /* readahead.c */ | 1177 | /* readahead.c */ |
1165 | #define VM_MAX_READAHEAD 128 /* kbytes */ | 1178 | #define VM_MAX_READAHEAD 128 /* kbytes */ |
@@ -1305,5 +1318,6 @@ void vmemmap_populate_print_last(void); | |||
1305 | 1318 | ||
1306 | extern void *alloc_locked_buffer(size_t size); | 1319 | extern void *alloc_locked_buffer(size_t size); |
1307 | extern void free_locked_buffer(void *buffer, size_t size); | 1320 | extern void free_locked_buffer(void *buffer, size_t size); |
1321 | extern void release_locked_buffer(void *buffer, size_t size); | ||
1308 | #endif /* __KERNEL__ */ | 1322 | #endif /* __KERNEL__ */ |
1309 | #endif /* _LINUX_MM_H */ | 1323 | #endif /* _LINUX_MM_H */ |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 09c14e213b63..1aca6cebbb78 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -1071,7 +1071,7 @@ void sparse_init(void); | |||
1071 | #endif /* CONFIG_SPARSEMEM */ | 1071 | #endif /* CONFIG_SPARSEMEM */ |
1072 | 1072 | ||
1073 | #ifdef CONFIG_NODES_SPAN_OTHER_NODES | 1073 | #ifdef CONFIG_NODES_SPAN_OTHER_NODES |
1074 | #define early_pfn_in_nid(pfn, nid) (early_pfn_to_nid(pfn) == (nid)) | 1074 | bool early_pfn_in_nid(unsigned long pfn, int nid); |
1075 | #else | 1075 | #else |
1076 | #define early_pfn_in_nid(pfn, nid) (1) | 1076 | #define early_pfn_in_nid(pfn, nid) (1) |
1077 | #endif | 1077 | #endif |
diff --git a/include/linux/module.h b/include/linux/module.h index f3b8329eb5b8..145a75528cc1 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -407,7 +407,6 @@ static inline local_t *__module_ref_addr(struct module *mod, int cpu) | |||
407 | static inline void __module_get(struct module *module) | 407 | static inline void __module_get(struct module *module) |
408 | { | 408 | { |
409 | if (module) { | 409 | if (module) { |
410 | BUG_ON(module_refcount(module) == 0); | ||
411 | local_inc(__module_ref_addr(module, get_cpu())); | 410 | local_inc(__module_ref_addr(module, get_cpu())); |
412 | put_cpu(); | 411 | put_cpu(); |
413 | } | 412 | } |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 48890cf3f96e..7bd624bfdcfd 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -684,7 +684,7 @@ int pci_enable_rom(struct pci_dev *pdev); | |||
684 | void pci_disable_rom(struct pci_dev *pdev); | 684 | void pci_disable_rom(struct pci_dev *pdev); |
685 | void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size); | 685 | void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size); |
686 | void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); | 686 | void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); |
687 | size_t pci_get_rom_size(void __iomem *rom, size_t size); | 687 | size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size); |
688 | 688 | ||
689 | /* Power management related routines */ | 689 | /* Power management related routines */ |
690 | int pci_save_state(struct pci_dev *dev); | 690 | int pci_save_state(struct pci_dev *dev); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 52a9fe08451c..aca8c458aa8a 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1312,6 +1312,7 @@ | |||
1312 | #define PCI_DEVICE_ID_VIA_VT3351 0x0351 | 1312 | #define PCI_DEVICE_ID_VIA_VT3351 0x0351 |
1313 | #define PCI_DEVICE_ID_VIA_VT3364 0x0364 | 1313 | #define PCI_DEVICE_ID_VIA_VT3364 0x0364 |
1314 | #define PCI_DEVICE_ID_VIA_8371_0 0x0391 | 1314 | #define PCI_DEVICE_ID_VIA_8371_0 0x0391 |
1315 | #define PCI_DEVICE_ID_VIA_6415 0x0415 | ||
1315 | #define PCI_DEVICE_ID_VIA_8501_0 0x0501 | 1316 | #define PCI_DEVICE_ID_VIA_8501_0 0x0501 |
1316 | #define PCI_DEVICE_ID_VIA_82C561 0x0561 | 1317 | #define PCI_DEVICE_ID_VIA_82C561 0x0561 |
1317 | #define PCI_DEVICE_ID_VIA_82C586_1 0x0571 | 1318 | #define PCI_DEVICE_ID_VIA_82C586_1 0x0571 |
@@ -1444,6 +1445,7 @@ | |||
1444 | #define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071 | 1445 | #define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071 |
1445 | #define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072 | 1446 | #define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072 |
1446 | #define PCI_DEVICE_ID_DIGI_DF_M_A 0x0073 | 1447 | #define PCI_DEVICE_ID_DIGI_DF_M_A 0x0073 |
1448 | #define PCI_DEVICE_ID_DIGI_NEO_8 0x00B1 | ||
1447 | #define PCI_DEVICE_ID_NEO_2DB9 0x00C8 | 1449 | #define PCI_DEVICE_ID_NEO_2DB9 0x00C8 |
1448 | #define PCI_DEVICE_ID_NEO_2DB9PRI 0x00C9 | 1450 | #define PCI_DEVICE_ID_NEO_2DB9PRI 0x00C9 |
1449 | #define PCI_DEVICE_ID_NEO_2RJ45 0x00CA | 1451 | #define PCI_DEVICE_ID_NEO_2RJ45 0x00CA |
@@ -2321,6 +2323,9 @@ | |||
2321 | #define PCI_DEVICE_ID_INTEL_82378 0x0484 | 2323 | #define PCI_DEVICE_ID_INTEL_82378 0x0484 |
2322 | #define PCI_DEVICE_ID_INTEL_I960 0x0960 | 2324 | #define PCI_DEVICE_ID_INTEL_I960 0x0960 |
2323 | #define PCI_DEVICE_ID_INTEL_I960RM 0x0962 | 2325 | #define PCI_DEVICE_ID_INTEL_I960RM 0x0962 |
2326 | #define PCI_DEVICE_ID_INTEL_8257X_SOL 0x1062 | ||
2327 | #define PCI_DEVICE_ID_INTEL_82573E_SOL 0x1085 | ||
2328 | #define PCI_DEVICE_ID_INTEL_82573L_SOL 0x108F | ||
2324 | #define PCI_DEVICE_ID_INTEL_82815_MC 0x1130 | 2329 | #define PCI_DEVICE_ID_INTEL_82815_MC 0x1130 |
2325 | #define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132 | 2330 | #define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132 |
2326 | #define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221 | 2331 | #define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221 |
diff --git a/include/linux/pm.h b/include/linux/pm.h index de2e0a8f6728..24ba5f67b3a3 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
@@ -381,10 +381,12 @@ struct dev_pm_info { | |||
381 | 381 | ||
382 | #ifdef CONFIG_PM_SLEEP | 382 | #ifdef CONFIG_PM_SLEEP |
383 | extern void device_pm_lock(void); | 383 | extern void device_pm_lock(void); |
384 | extern int sysdev_resume(void); | ||
384 | extern void device_power_up(pm_message_t state); | 385 | extern void device_power_up(pm_message_t state); |
385 | extern void device_resume(pm_message_t state); | 386 | extern void device_resume(pm_message_t state); |
386 | 387 | ||
387 | extern void device_pm_unlock(void); | 388 | extern void device_pm_unlock(void); |
389 | extern int sysdev_suspend(pm_message_t state); | ||
388 | extern int device_power_down(pm_message_t state); | 390 | extern int device_power_down(pm_message_t state); |
389 | extern int device_suspend(pm_message_t state); | 391 | extern int device_suspend(pm_message_t state); |
390 | extern int device_prepare_suspend(pm_message_t state); | 392 | extern int device_prepare_suspend(pm_message_t state); |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 5a7c76388731..8981e52c714f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -453,23 +453,33 @@ struct task_cputime { | |||
453 | cputime_t utime; | 453 | cputime_t utime; |
454 | cputime_t stime; | 454 | cputime_t stime; |
455 | unsigned long long sum_exec_runtime; | 455 | unsigned long long sum_exec_runtime; |
456 | spinlock_t lock; | ||
457 | }; | 456 | }; |
458 | /* Alternate field names when used to cache expirations. */ | 457 | /* Alternate field names when used to cache expirations. */ |
459 | #define prof_exp stime | 458 | #define prof_exp stime |
460 | #define virt_exp utime | 459 | #define virt_exp utime |
461 | #define sched_exp sum_exec_runtime | 460 | #define sched_exp sum_exec_runtime |
462 | 461 | ||
462 | #define INIT_CPUTIME \ | ||
463 | (struct task_cputime) { \ | ||
464 | .utime = cputime_zero, \ | ||
465 | .stime = cputime_zero, \ | ||
466 | .sum_exec_runtime = 0, \ | ||
467 | } | ||
468 | |||
463 | /** | 469 | /** |
464 | * struct thread_group_cputime - thread group interval timer counts | 470 | * struct thread_group_cputimer - thread group interval timer counts |
465 | * @totals: thread group interval timers; substructure for | 471 | * @cputime: thread group interval timers. |
466 | * uniprocessor kernel, per-cpu for SMP kernel. | 472 | * @running: non-zero when there are timers running and |
473 | * @cputime receives updates. | ||
474 | * @lock: lock for fields in this struct. | ||
467 | * | 475 | * |
468 | * This structure contains the version of task_cputime, above, that is | 476 | * This structure contains the version of task_cputime, above, that is |
469 | * used for thread group CPU clock calculations. | 477 | * used for thread group CPU timer calculations. |
470 | */ | 478 | */ |
471 | struct thread_group_cputime { | 479 | struct thread_group_cputimer { |
472 | struct task_cputime totals; | 480 | struct task_cputime cputime; |
481 | int running; | ||
482 | spinlock_t lock; | ||
473 | }; | 483 | }; |
474 | 484 | ||
475 | /* | 485 | /* |
@@ -518,10 +528,10 @@ struct signal_struct { | |||
518 | cputime_t it_prof_incr, it_virt_incr; | 528 | cputime_t it_prof_incr, it_virt_incr; |
519 | 529 | ||
520 | /* | 530 | /* |
521 | * Thread group totals for process CPU clocks. | 531 | * Thread group totals for process CPU timers. |
522 | * See thread_group_cputime(), et al, for details. | 532 | * See thread_group_cputimer(), et al, for details. |
523 | */ | 533 | */ |
524 | struct thread_group_cputime cputime; | 534 | struct thread_group_cputimer cputimer; |
525 | 535 | ||
526 | /* Earliest-expiration cache. */ | 536 | /* Earliest-expiration cache. */ |
527 | struct task_cputime cputime_expires; | 537 | struct task_cputime cputime_expires; |
@@ -558,7 +568,7 @@ struct signal_struct { | |||
558 | * Live threads maintain their own counters and add to these | 568 | * Live threads maintain their own counters and add to these |
559 | * in __exit_signal, except for the group leader. | 569 | * in __exit_signal, except for the group leader. |
560 | */ | 570 | */ |
561 | cputime_t cutime, cstime; | 571 | cputime_t utime, stime, cutime, cstime; |
562 | cputime_t gtime; | 572 | cputime_t gtime; |
563 | cputime_t cgtime; | 573 | cputime_t cgtime; |
564 | unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; | 574 | unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; |
@@ -567,6 +577,14 @@ struct signal_struct { | |||
567 | struct task_io_accounting ioac; | 577 | struct task_io_accounting ioac; |
568 | 578 | ||
569 | /* | 579 | /* |
580 | * Cumulative ns of schedule CPU time fo dead threads in the | ||
581 | * group, not including a zombie group leader, (This only differs | ||
582 | * from jiffies_to_ns(utime + stime) if sched_clock uses something | ||
583 | * other than jiffies.) | ||
584 | */ | ||
585 | unsigned long long sum_sched_runtime; | ||
586 | |||
587 | /* | ||
570 | * We don't bother to synchronize most readers of this at all, | 588 | * We don't bother to synchronize most readers of this at all, |
571 | * because there is no reader checking a limit that actually needs | 589 | * because there is no reader checking a limit that actually needs |
572 | * to get both rlim_cur and rlim_max atomically, and either one | 590 | * to get both rlim_cur and rlim_max atomically, and either one |
@@ -2182,27 +2200,14 @@ static inline int spin_needbreak(spinlock_t *lock) | |||
2182 | /* | 2200 | /* |
2183 | * Thread group CPU time accounting. | 2201 | * Thread group CPU time accounting. |
2184 | */ | 2202 | */ |
2185 | 2203 | void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times); | |
2186 | static inline | 2204 | void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times); |
2187 | void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times) | ||
2188 | { | ||
2189 | struct task_cputime *totals = &tsk->signal->cputime.totals; | ||
2190 | unsigned long flags; | ||
2191 | |||
2192 | spin_lock_irqsave(&totals->lock, flags); | ||
2193 | *times = *totals; | ||
2194 | spin_unlock_irqrestore(&totals->lock, flags); | ||
2195 | } | ||
2196 | 2205 | ||
2197 | static inline void thread_group_cputime_init(struct signal_struct *sig) | 2206 | static inline void thread_group_cputime_init(struct signal_struct *sig) |
2198 | { | 2207 | { |
2199 | sig->cputime.totals = (struct task_cputime){ | 2208 | sig->cputimer.cputime = INIT_CPUTIME; |
2200 | .utime = cputime_zero, | 2209 | spin_lock_init(&sig->cputimer.lock); |
2201 | .stime = cputime_zero, | 2210 | sig->cputimer.running = 0; |
2202 | .sum_exec_runtime = 0, | ||
2203 | }; | ||
2204 | |||
2205 | spin_lock_init(&sig->cputime.totals.lock); | ||
2206 | } | 2211 | } |
2207 | 2212 | ||
2208 | static inline void thread_group_cputime_free(struct signal_struct *sig) | 2213 | static inline void thread_group_cputime_free(struct signal_struct *sig) |
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h index 40ea5058c2ec..f616f31576d7 100644 --- a/include/linux/seq_file.h +++ b/include/linux/seq_file.h | |||
@@ -19,6 +19,7 @@ struct seq_file { | |||
19 | size_t from; | 19 | size_t from; |
20 | size_t count; | 20 | size_t count; |
21 | loff_t index; | 21 | loff_t index; |
22 | loff_t read_pos; | ||
22 | u64 version; | 23 | u64 version; |
23 | struct mutex lock; | 24 | struct mutex lock; |
24 | const struct seq_operations *op; | 25 | const struct seq_operations *op; |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 90bbbf0b1161..df9245c7bd3b 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -296,6 +296,7 @@ struct uart_port { | |||
296 | #define UPF_HARDPPS_CD ((__force upf_t) (1 << 11)) | 296 | #define UPF_HARDPPS_CD ((__force upf_t) (1 << 11)) |
297 | #define UPF_LOW_LATENCY ((__force upf_t) (1 << 13)) | 297 | #define UPF_LOW_LATENCY ((__force upf_t) (1 << 13)) |
298 | #define UPF_BUGGY_UART ((__force upf_t) (1 << 14)) | 298 | #define UPF_BUGGY_UART ((__force upf_t) (1 << 14)) |
299 | #define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15)) | ||
299 | #define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16)) | 300 | #define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16)) |
300 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) | 301 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) |
301 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) | 302 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) |
diff --git a/include/linux/slab.h b/include/linux/slab.h index f96d13c281e8..24c5602bee99 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -127,6 +127,7 @@ int kmem_ptr_validate(struct kmem_cache *cachep, const void *ptr); | |||
127 | void * __must_check __krealloc(const void *, size_t, gfp_t); | 127 | void * __must_check __krealloc(const void *, size_t, gfp_t); |
128 | void * __must_check krealloc(const void *, size_t, gfp_t); | 128 | void * __must_check krealloc(const void *, size_t, gfp_t); |
129 | void kfree(const void *); | 129 | void kfree(const void *); |
130 | void kzfree(const void *); | ||
130 | size_t ksize(const void *); | 131 | size_t ksize(const void *); |
131 | 132 | ||
132 | /* | 133 | /* |
diff --git a/include/linux/soundcard.h b/include/linux/soundcard.h index 523d069c862c..1904afedb82f 100644 --- a/include/linux/soundcard.h +++ b/include/linux/soundcard.h | |||
@@ -1045,50 +1045,36 @@ typedef struct mixer_vol_table { | |||
1045 | */ | 1045 | */ |
1046 | #define LOCL_STARTAUDIO 1 | 1046 | #define LOCL_STARTAUDIO 1 |
1047 | 1047 | ||
1048 | #if (!defined(__KERNEL__) && !defined(KERNEL) && !defined(INKERNEL) && !defined(_KERNEL)) || defined(USE_SEQ_MACROS) | 1048 | #if !defined(__KERNEL__) || defined(USE_SEQ_MACROS) |
1049 | /* | 1049 | /* |
1050 | * Some convenience macros to simplify programming of the | 1050 | * Some convenience macros to simplify programming of the |
1051 | * /dev/sequencer interface | 1051 | * /dev/sequencer interface |
1052 | * | 1052 | * |
1053 | * These macros define the API which should be used when possible. | 1053 | * This is a legacy interface for applications written against |
1054 | * the OSSlib-3.8 style interface. It is no longer possible | ||
1055 | * to actually link against OSSlib with this header, but we | ||
1056 | * still provide these macros for programs using them. | ||
1057 | * | ||
1058 | * If you want to use OSSlib, it is recommended that you get | ||
1059 | * the GPL version of OSS-4.x and build against that version | ||
1060 | * of the header. | ||
1061 | * | ||
1062 | * We redefine the extern keyword so that make headers_check | ||
1063 | * does not complain about SEQ_USE_EXTBUF. | ||
1054 | */ | 1064 | */ |
1055 | #define SEQ_DECLAREBUF() SEQ_USE_EXTBUF() | 1065 | #define SEQ_DECLAREBUF() SEQ_USE_EXTBUF() |
1056 | 1066 | ||
1057 | void seqbuf_dump(void); /* This function must be provided by programs */ | 1067 | void seqbuf_dump(void); /* This function must be provided by programs */ |
1058 | 1068 | ||
1059 | extern int OSS_init(int seqfd, int buflen); | ||
1060 | extern void OSS_seqbuf_dump(int fd, unsigned char *buf, int buflen); | ||
1061 | extern void OSS_seq_advbuf(int len, int fd, unsigned char *buf, int buflen); | ||
1062 | extern void OSS_seq_needbuf(int len, int fd, unsigned char *buf, int buflen); | ||
1063 | extern void OSS_patch_caching(int dev, int chn, int patch, | ||
1064 | int fd, unsigned char *buf, int buflen); | ||
1065 | extern void OSS_drum_caching(int dev, int chn, int patch, | ||
1066 | int fd, unsigned char *buf, int buflen); | ||
1067 | extern void OSS_write_patch(int fd, unsigned char *buf, int len); | ||
1068 | extern int OSS_write_patch2(int fd, unsigned char *buf, int len); | ||
1069 | |||
1070 | #define SEQ_PM_DEFINES int __foo_bar___ | 1069 | #define SEQ_PM_DEFINES int __foo_bar___ |
1071 | #ifdef OSSLIB | 1070 | |
1072 | # define SEQ_USE_EXTBUF() \ | 1071 | #define SEQ_LOAD_GMINSTR(dev, instr) |
1073 | extern unsigned char *_seqbuf; \ | 1072 | #define SEQ_LOAD_GMDRUM(dev, drum) |
1074 | extern int _seqbuflen;extern int _seqbufptr | 1073 | |
1075 | # define SEQ_DEFINEBUF(len) SEQ_USE_EXTBUF();static int _requested_seqbuflen=len | 1074 | #define _SEQ_EXTERN extern |
1076 | # define _SEQ_ADVBUF(len) OSS_seq_advbuf(len, seqfd, _seqbuf, _seqbuflen) | 1075 | #define SEQ_USE_EXTBUF() \ |
1077 | # define _SEQ_NEEDBUF(len) OSS_seq_needbuf(len, seqfd, _seqbuf, _seqbuflen) | 1076 | _SEQ_EXTERN unsigned char _seqbuf[]; \ |
1078 | # define SEQ_DUMPBUF() OSS_seqbuf_dump(seqfd, _seqbuf, _seqbuflen) | 1077 | _SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr |
1079 | |||
1080 | # define SEQ_LOAD_GMINSTR(dev, instr) \ | ||
1081 | OSS_patch_caching(dev, -1, instr, seqfd, _seqbuf, _seqbuflen) | ||
1082 | # define SEQ_LOAD_GMDRUM(dev, drum) \ | ||
1083 | OSS_drum_caching(dev, -1, drum, seqfd, _seqbuf, _seqbuflen) | ||
1084 | #else /* !OSSLIB */ | ||
1085 | |||
1086 | # define SEQ_LOAD_GMINSTR(dev, instr) | ||
1087 | # define SEQ_LOAD_GMDRUM(dev, drum) | ||
1088 | |||
1089 | # define SEQ_USE_EXTBUF() \ | ||
1090 | extern unsigned char _seqbuf[]; \ | ||
1091 | extern int _seqbuflen;extern int _seqbufptr | ||
1092 | 1078 | ||
1093 | #ifndef USE_SIMPLE_MACROS | 1079 | #ifndef USE_SIMPLE_MACROS |
1094 | /* Sample seqbuf_dump() implementation: | 1080 | /* Sample seqbuf_dump() implementation: |
@@ -1131,7 +1117,6 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len); | |||
1131 | */ | 1117 | */ |
1132 | #define _SEQ_NEEDBUF(len) /* empty */ | 1118 | #define _SEQ_NEEDBUF(len) /* empty */ |
1133 | #endif | 1119 | #endif |
1134 | #endif /* !OSSLIB */ | ||
1135 | 1120 | ||
1136 | #define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);\ | 1121 | #define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);\ |
1137 | _seqbuf[_seqbufptr] = SEQ_EXTENDED;\ | 1122 | _seqbuf[_seqbufptr] = SEQ_EXTENDED;\ |
@@ -1215,14 +1200,8 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len); | |||
1215 | _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0) | 1200 | _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0) |
1216 | 1201 | ||
1217 | #define SEQ_SET_PATCH SEQ_PGM_CHANGE | 1202 | #define SEQ_SET_PATCH SEQ_PGM_CHANGE |
1218 | #ifdef OSSLIB | 1203 | #define SEQ_PGM_CHANGE(dev, chn, patch) \ |
1219 | # define SEQ_PGM_CHANGE(dev, chn, patch) \ | ||
1220 | {OSS_patch_caching(dev, chn, patch, seqfd, _seqbuf, _seqbuflen); \ | ||
1221 | _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0);} | ||
1222 | #else | ||
1223 | # define SEQ_PGM_CHANGE(dev, chn, patch) \ | ||
1224 | _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0) | 1204 | _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0) |
1225 | #endif | ||
1226 | 1205 | ||
1227 | #define SEQ_CONTROL(dev, chn, controller, value) \ | 1206 | #define SEQ_CONTROL(dev, chn, controller, value) \ |
1228 | _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value) | 1207 | _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value) |
@@ -1300,19 +1279,12 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len); | |||
1300 | /* | 1279 | /* |
1301 | * Patch loading. | 1280 | * Patch loading. |
1302 | */ | 1281 | */ |
1303 | #ifdef OSSLIB | 1282 | #define SEQ_WRPATCH(patchx, len) \ |
1304 | # define SEQ_WRPATCH(patchx, len) \ | ||
1305 | OSS_write_patch(seqfd, (char*)(patchx), len) | ||
1306 | # define SEQ_WRPATCH2(patchx, len) \ | ||
1307 | OSS_write_patch2(seqfd, (char*)(patchx), len) | ||
1308 | #else | ||
1309 | # define SEQ_WRPATCH(patchx, len) \ | ||
1310 | {if (_seqbufptr) SEQ_DUMPBUF();\ | 1283 | {if (_seqbufptr) SEQ_DUMPBUF();\ |
1311 | if (write(seqfd, (char*)(patchx), len)==-1) \ | 1284 | if (write(seqfd, (char*)(patchx), len)==-1) \ |
1312 | perror("Write patch: /dev/sequencer");} | 1285 | perror("Write patch: /dev/sequencer");} |
1313 | # define SEQ_WRPATCH2(patchx, len) \ | 1286 | #define SEQ_WRPATCH2(patchx, len) \ |
1314 | (SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len)) | 1287 | (SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len)) |
1315 | #endif | ||
1316 | 1288 | ||
1317 | #endif | 1289 | #endif |
1318 | #endif | 1290 | #endif |
diff --git a/include/linux/spi/spi_bitbang.h b/include/linux/spi/spi_bitbang.h index bf8de281b4ed..eed4254bd503 100644 --- a/include/linux/spi/spi_bitbang.h +++ b/include/linux/spi/spi_bitbang.h | |||
@@ -83,6 +83,13 @@ extern int spi_bitbang_stop(struct spi_bitbang *spi); | |||
83 | * int getmiso(struct spi_device *); | 83 | * int getmiso(struct spi_device *); |
84 | * void spidelay(unsigned); | 84 | * void spidelay(unsigned); |
85 | * | 85 | * |
86 | * setsck()'s is_on parameter is a zero/nonzero boolean. | ||
87 | * | ||
88 | * setmosi()'s is_on parameter is a zero/nonzero boolean. | ||
89 | * | ||
90 | * getmiso() is required to return 0 or 1 only. Any other value is invalid | ||
91 | * and will result in improper operation. | ||
92 | * | ||
86 | * A non-inlined routine would call bitbang_txrx_*() routines. The | 93 | * A non-inlined routine would call bitbang_txrx_*() routines. The |
87 | * main loop could easily compile down to a handful of instructions, | 94 | * main loop could easily compile down to a handful of instructions, |
88 | * especially if the delay is a NOP (to run at peak speed). | 95 | * especially if the delay is a NOP (to run at peak speed). |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index e0c0fccced46..a0c66a2e00ad 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
@@ -124,7 +124,12 @@ do { \ | |||
124 | #ifdef CONFIG_GENERIC_LOCKBREAK | 124 | #ifdef CONFIG_GENERIC_LOCKBREAK |
125 | #define spin_is_contended(lock) ((lock)->break_lock) | 125 | #define spin_is_contended(lock) ((lock)->break_lock) |
126 | #else | 126 | #else |
127 | |||
128 | #ifdef __raw_spin_is_contended | ||
127 | #define spin_is_contended(lock) __raw_spin_is_contended(&(lock)->raw_lock) | 129 | #define spin_is_contended(lock) __raw_spin_is_contended(&(lock)->raw_lock) |
130 | #else | ||
131 | #define spin_is_contended(lock) (((void)(lock), 0)) | ||
132 | #endif /*__raw_spin_is_contended*/ | ||
128 | #endif | 133 | #endif |
129 | 134 | ||
130 | /** | 135 | /** |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 0eda02ff2414..f9f900cfd066 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -95,13 +95,13 @@ struct old_linux_dirent; | |||
95 | #define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__) | 95 | #define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__) |
96 | #define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__) | 96 | #define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__) |
97 | 97 | ||
98 | #define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void) | 98 | #define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void) |
99 | #define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__) | 99 | #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) |
100 | #define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__) | 100 | #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) |
101 | #define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__) | 101 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) |
102 | #define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__) | 102 | #define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) |
103 | #define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__) | 103 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) |
104 | #define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__) | 104 | #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) |
105 | 105 | ||
106 | #ifdef CONFIG_PPC64 | 106 | #ifdef CONFIG_PPC64 |
107 | #define SYSCALL_ALIAS(alias, name) \ | 107 | #define SYSCALL_ALIAS(alias, name) \ |
@@ -121,21 +121,21 @@ struct old_linux_dirent; | |||
121 | 121 | ||
122 | #define SYSCALL_DEFINE(name) static inline long SYSC_##name | 122 | #define SYSCALL_DEFINE(name) static inline long SYSC_##name |
123 | #define SYSCALL_DEFINEx(x, name, ...) \ | 123 | #define SYSCALL_DEFINEx(x, name, ...) \ |
124 | asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \ | 124 | asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)); \ |
125 | static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \ | 125 | static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__)); \ |
126 | asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \ | 126 | asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__)) \ |
127 | { \ | 127 | { \ |
128 | __SC_TEST##x(__VA_ARGS__); \ | 128 | __SC_TEST##x(__VA_ARGS__); \ |
129 | return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \ | 129 | return (long) SYSC##name(__SC_CAST##x(__VA_ARGS__)); \ |
130 | } \ | 130 | } \ |
131 | SYSCALL_ALIAS(sys_##name, SyS_##name); \ | 131 | SYSCALL_ALIAS(sys##name, SyS##name); \ |
132 | static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)) | 132 | static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__)) |
133 | 133 | ||
134 | #else /* CONFIG_HAVE_SYSCALL_WRAPPERS */ | 134 | #else /* CONFIG_HAVE_SYSCALL_WRAPPERS */ |
135 | 135 | ||
136 | #define SYSCALL_DEFINE(name) asmlinkage long sys_##name | 136 | #define SYSCALL_DEFINE(name) asmlinkage long sys_##name |
137 | #define SYSCALL_DEFINEx(x, name, ...) \ | 137 | #define SYSCALL_DEFINEx(x, name, ...) \ |
138 | asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)) | 138 | asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)) |
139 | 139 | ||
140 | #endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */ | 140 | #endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */ |
141 | 141 | ||
diff --git a/include/linux/timerfd.h b/include/linux/timerfd.h index 86cb0501d3e2..2d0792983f8c 100644 --- a/include/linux/timerfd.h +++ b/include/linux/timerfd.h | |||
@@ -11,13 +11,21 @@ | |||
11 | /* For O_CLOEXEC and O_NONBLOCK */ | 11 | /* For O_CLOEXEC and O_NONBLOCK */ |
12 | #include <linux/fcntl.h> | 12 | #include <linux/fcntl.h> |
13 | 13 | ||
14 | /* Flags for timerfd_settime. */ | 14 | /* |
15 | * CAREFUL: Check include/asm-generic/fcntl.h when defining | ||
16 | * new flags, since they might collide with O_* ones. We want | ||
17 | * to re-use O_* flags that couldn't possibly have a meaning | ||
18 | * from eventfd, in order to leave a free define-space for | ||
19 | * shared O_* flags. | ||
20 | */ | ||
15 | #define TFD_TIMER_ABSTIME (1 << 0) | 21 | #define TFD_TIMER_ABSTIME (1 << 0) |
16 | |||
17 | /* Flags for timerfd_create. */ | ||
18 | #define TFD_CLOEXEC O_CLOEXEC | 22 | #define TFD_CLOEXEC O_CLOEXEC |
19 | #define TFD_NONBLOCK O_NONBLOCK | 23 | #define TFD_NONBLOCK O_NONBLOCK |
20 | 24 | ||
25 | #define TFD_SHARED_FCNTL_FLAGS (TFD_CLOEXEC | TFD_NONBLOCK) | ||
26 | /* Flags for timerfd_create. */ | ||
27 | #define TFD_CREATE_FLAGS TFD_SHARED_FCNTL_FLAGS | ||
28 | /* Flags for timerfd_settime. */ | ||
29 | #define TFD_SETTIME_FLAGS TFD_TIMER_ABSTIME | ||
21 | 30 | ||
22 | #endif /* _LINUX_TIMERFD_H */ | 31 | #endif /* _LINUX_TIMERFD_H */ |
23 | |||
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 506e7620a986..9c0890c7a06a 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
@@ -84,6 +84,10 @@ extern struct vm_struct *get_vm_area_caller(unsigned long size, | |||
84 | unsigned long flags, void *caller); | 84 | unsigned long flags, void *caller); |
85 | extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, | 85 | extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, |
86 | unsigned long start, unsigned long end); | 86 | unsigned long start, unsigned long end); |
87 | extern struct vm_struct *__get_vm_area_caller(unsigned long size, | ||
88 | unsigned long flags, | ||
89 | unsigned long start, unsigned long end, | ||
90 | void *caller); | ||
87 | extern struct vm_struct *get_vm_area_node(unsigned long size, | 91 | extern struct vm_struct *get_vm_area_node(unsigned long size, |
88 | unsigned long flags, int node, | 92 | unsigned long flags, int node, |
89 | gfp_t gfp_mask); | 93 | gfp_t gfp_mask); |
diff --git a/include/linux/wait.h b/include/linux/wait.h index ef609f842fac..a210ede73b56 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
@@ -132,6 +132,8 @@ static inline void __remove_wait_queue(wait_queue_head_t *head, | |||
132 | list_del(&old->task_list); | 132 | list_del(&old->task_list); |
133 | } | 133 | } |
134 | 134 | ||
135 | void __wake_up_common(wait_queue_head_t *q, unsigned int mode, | ||
136 | int nr_exclusive, int sync, void *key); | ||
135 | void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); | 137 | void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); |
136 | extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode); | 138 | extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode); |
137 | extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); | 139 | extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); |
@@ -333,16 +335,19 @@ do { \ | |||
333 | for (;;) { \ | 335 | for (;;) { \ |
334 | prepare_to_wait_exclusive(&wq, &__wait, \ | 336 | prepare_to_wait_exclusive(&wq, &__wait, \ |
335 | TASK_INTERRUPTIBLE); \ | 337 | TASK_INTERRUPTIBLE); \ |
336 | if (condition) \ | 338 | if (condition) { \ |
339 | finish_wait(&wq, &__wait); \ | ||
337 | break; \ | 340 | break; \ |
341 | } \ | ||
338 | if (!signal_pending(current)) { \ | 342 | if (!signal_pending(current)) { \ |
339 | schedule(); \ | 343 | schedule(); \ |
340 | continue; \ | 344 | continue; \ |
341 | } \ | 345 | } \ |
342 | ret = -ERESTARTSYS; \ | 346 | ret = -ERESTARTSYS; \ |
347 | abort_exclusive_wait(&wq, &__wait, \ | ||
348 | TASK_INTERRUPTIBLE, NULL); \ | ||
343 | break; \ | 349 | break; \ |
344 | } \ | 350 | } \ |
345 | finish_wait(&wq, &__wait); \ | ||
346 | } while (0) | 351 | } while (0) |
347 | 352 | ||
348 | #define wait_event_interruptible_exclusive(wq, condition) \ | 353 | #define wait_event_interruptible_exclusive(wq, condition) \ |
@@ -431,6 +436,8 @@ extern long interruptible_sleep_on_timeout(wait_queue_head_t *q, | |||
431 | void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state); | 436 | void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state); |
432 | void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state); | 437 | void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state); |
433 | void finish_wait(wait_queue_head_t *q, wait_queue_t *wait); | 438 | void finish_wait(wait_queue_head_t *q, wait_queue_t *wait); |
439 | void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait, | ||
440 | unsigned int mode, void *key); | ||
434 | int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); | 441 | int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); |
435 | int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); | 442 | int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); |
436 | 443 | ||