diff options
| author | Ingo Molnar <mingo@kernel.org> | 2014-04-02 03:48:56 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2014-04-02 03:48:56 -0400 |
| commit | b8764fe6d0ba654c8705ebbb8c2c8ddd776d8928 (patch) | |
| tree | 3e28a08a044547d5429f011bcce24a3c82c89fec /include | |
| parent | b8c89c6a0d56d47ae7f22755a133540b32fa81cf (diff) | |
| parent | 683b6c6f82a60fabf47012581c2cfbf1b037ab95 (diff) | |
Merge branch 'linus' into x86/urgent
Pick up Linus's latest, to fix a bug.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/cputime_jiffies.h | 4 | ||||
| -rw-r--r-- | include/asm-generic/cputime_nsecs.h | 5 | ||||
| -rw-r--r-- | include/asm-generic/pgtable.h | 13 | ||||
| -rw-r--r-- | include/asm-generic/rwsem.h | 10 | ||||
| -rw-r--r-- | include/linux/ahci_platform.h | 28 | ||||
| -rw-r--r-- | include/linux/clockchips.h | 16 | ||||
| -rw-r--r-- | include/linux/compat.h | 63 | ||||
| -rw-r--r-- | include/linux/cputime.h | 16 | ||||
| -rw-r--r-- | include/linux/hardirq.h | 1 | ||||
| -rw-r--r-- | include/linux/hrtimer.h | 4 | ||||
| -rw-r--r-- | include/linux/interrupt.h | 1 | ||||
| -rw-r--r-- | include/linux/irq.h | 9 | ||||
| -rw-r--r-- | include/linux/kernel_stat.h | 10 | ||||
| -rw-r--r-- | include/linux/kexec.h | 6 | ||||
| -rw-r--r-- | include/linux/libata.h | 11 | ||||
| -rw-r--r-- | include/linux/mm.h | 10 | ||||
| -rw-r--r-- | include/linux/nvme.h | 1 | ||||
| -rw-r--r-- | include/linux/sched.h | 8 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 2 | ||||
| -rw-r--r-- | include/linux/workqueue.h | 40 | ||||
| -rw-r--r-- | include/scsi/libsas.h | 1 | ||||
| -rw-r--r-- | include/uapi/asm-generic/unistd.h | 1 |
22 files changed, 163 insertions, 97 deletions
diff --git a/include/asm-generic/cputime_jiffies.h b/include/asm-generic/cputime_jiffies.h index 272ecba9f588..d5cb78f53986 100644 --- a/include/asm-generic/cputime_jiffies.h +++ b/include/asm-generic/cputime_jiffies.h | |||
| @@ -15,8 +15,10 @@ typedef u64 __nocast cputime64_t; | |||
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | /* | 17 | /* |
| 18 | * Convert nanoseconds to cputime | 18 | * Convert nanoseconds <-> cputime |
| 19 | */ | 19 | */ |
| 20 | #define cputime_to_nsecs(__ct) \ | ||
| 21 | jiffies_to_nsecs(cputime_to_jiffies(__ct)) | ||
| 20 | #define nsecs_to_cputime64(__nsec) \ | 22 | #define nsecs_to_cputime64(__nsec) \ |
| 21 | jiffies64_to_cputime64(nsecs_to_jiffies64(__nsec)) | 23 | jiffies64_to_cputime64(nsecs_to_jiffies64(__nsec)) |
| 22 | #define nsecs_to_cputime(__nsec) \ | 24 | #define nsecs_to_cputime(__nsec) \ |
diff --git a/include/asm-generic/cputime_nsecs.h b/include/asm-generic/cputime_nsecs.h index 2c9e62c2bfd0..4e817606c549 100644 --- a/include/asm-generic/cputime_nsecs.h +++ b/include/asm-generic/cputime_nsecs.h | |||
| @@ -44,7 +44,10 @@ typedef u64 __nocast cputime64_t; | |||
| 44 | /* | 44 | /* |
| 45 | * Convert cputime <-> nanoseconds | 45 | * Convert cputime <-> nanoseconds |
| 46 | */ | 46 | */ |
| 47 | #define nsecs_to_cputime(__nsecs) ((__force u64)(__nsecs)) | 47 | #define cputime_to_nsecs(__ct) \ |
| 48 | (__force u64)(__ct) | ||
| 49 | #define nsecs_to_cputime(__nsecs) \ | ||
| 50 | (__force cputime_t)(__nsecs) | ||
| 48 | 51 | ||
| 49 | 52 | ||
| 50 | /* | 53 | /* |
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 34c7bdc06014..1ec08c198b66 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -193,6 +193,19 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b) | |||
| 193 | } | 193 | } |
| 194 | #endif | 194 | #endif |
| 195 | 195 | ||
| 196 | #ifndef __HAVE_ARCH_PTE_UNUSED | ||
| 197 | /* | ||
| 198 | * Some architectures provide facilities to virtualization guests | ||
| 199 | * so that they can flag allocated pages as unused. This allows the | ||
| 200 | * host to transparently reclaim unused pages. This function returns | ||
| 201 | * whether the pte's page is unused. | ||
| 202 | */ | ||
| 203 | static inline int pte_unused(pte_t pte) | ||
| 204 | { | ||
| 205 | return 0; | ||
| 206 | } | ||
| 207 | #endif | ||
| 208 | |||
| 196 | #ifndef __HAVE_ARCH_PMD_SAME | 209 | #ifndef __HAVE_ARCH_PMD_SAME |
| 197 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 210 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
| 198 | static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b) | 211 | static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b) |
diff --git a/include/asm-generic/rwsem.h b/include/asm-generic/rwsem.h index bb1e2cdeb9bf..d48bf5a95cc1 100644 --- a/include/asm-generic/rwsem.h +++ b/include/asm-generic/rwsem.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | #ifndef _ASM_POWERPC_RWSEM_H | 1 | #ifndef _ASM_GENERIC_RWSEM_H |
| 2 | #define _ASM_POWERPC_RWSEM_H | 2 | #define _ASM_GENERIC_RWSEM_H |
| 3 | 3 | ||
| 4 | #ifndef _LINUX_RWSEM_H | 4 | #ifndef _LINUX_RWSEM_H |
| 5 | #error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead." | 5 | #error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead." |
| @@ -8,7 +8,7 @@ | |||
| 8 | #ifdef __KERNEL__ | 8 | #ifdef __KERNEL__ |
| 9 | 9 | ||
| 10 | /* | 10 | /* |
| 11 | * R/W semaphores for PPC using the stuff in lib/rwsem.c. | 11 | * R/W semaphores originally for PPC using the stuff in lib/rwsem.c. |
| 12 | * Adapted largely from include/asm-i386/rwsem.h | 12 | * Adapted largely from include/asm-i386/rwsem.h |
| 13 | * by Paul Mackerras <paulus@samba.org>. | 13 | * by Paul Mackerras <paulus@samba.org>. |
| 14 | */ | 14 | */ |
| @@ -16,7 +16,7 @@ | |||
| 16 | /* | 16 | /* |
| 17 | * the semaphore definition | 17 | * the semaphore definition |
| 18 | */ | 18 | */ |
| 19 | #ifdef CONFIG_PPC64 | 19 | #ifdef CONFIG_64BIT |
| 20 | # define RWSEM_ACTIVE_MASK 0xffffffffL | 20 | # define RWSEM_ACTIVE_MASK 0xffffffffL |
| 21 | #else | 21 | #else |
| 22 | # define RWSEM_ACTIVE_MASK 0x0000ffffL | 22 | # define RWSEM_ACTIVE_MASK 0x0000ffffL |
| @@ -129,4 +129,4 @@ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) | |||
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | #endif /* __KERNEL__ */ | 131 | #endif /* __KERNEL__ */ |
| 132 | #endif /* _ASM_POWERPC_RWSEM_H */ | 132 | #endif /* _ASM_GENERIC_RWSEM_H */ |
diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h index 73a25005d88a..1f16d502600c 100644 --- a/include/linux/ahci_platform.h +++ b/include/linux/ahci_platform.h | |||
| @@ -19,15 +19,37 @@ | |||
| 19 | 19 | ||
| 20 | struct device; | 20 | struct device; |
| 21 | struct ata_port_info; | 21 | struct ata_port_info; |
| 22 | struct ahci_host_priv; | ||
| 23 | struct platform_device; | ||
| 22 | 24 | ||
| 25 | /* | ||
| 26 | * Note ahci_platform_data is deprecated, it is only kept around for use | ||
| 27 | * by the old da850 and spear13xx ahci code. | ||
| 28 | * New drivers should instead declare their own platform_driver struct, and | ||
| 29 | * use ahci_platform* functions in their own probe, suspend and resume methods. | ||
| 30 | */ | ||
| 23 | struct ahci_platform_data { | 31 | struct ahci_platform_data { |
| 24 | int (*init)(struct device *dev, void __iomem *addr); | 32 | int (*init)(struct device *dev, void __iomem *addr); |
| 25 | void (*exit)(struct device *dev); | 33 | void (*exit)(struct device *dev); |
| 26 | int (*suspend)(struct device *dev); | 34 | int (*suspend)(struct device *dev); |
| 27 | int (*resume)(struct device *dev); | 35 | int (*resume)(struct device *dev); |
| 28 | const struct ata_port_info *ata_port_info; | ||
| 29 | unsigned int force_port_map; | ||
| 30 | unsigned int mask_port_map; | ||
| 31 | }; | 36 | }; |
| 32 | 37 | ||
| 38 | int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); | ||
| 39 | void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); | ||
| 40 | int ahci_platform_enable_resources(struct ahci_host_priv *hpriv); | ||
| 41 | void ahci_platform_disable_resources(struct ahci_host_priv *hpriv); | ||
| 42 | struct ahci_host_priv *ahci_platform_get_resources( | ||
| 43 | struct platform_device *pdev); | ||
| 44 | int ahci_platform_init_host(struct platform_device *pdev, | ||
| 45 | struct ahci_host_priv *hpriv, | ||
| 46 | const struct ata_port_info *pi_template, | ||
| 47 | unsigned int force_port_map, | ||
| 48 | unsigned int mask_port_map); | ||
| 49 | |||
| 50 | int ahci_platform_suspend_host(struct device *dev); | ||
| 51 | int ahci_platform_resume_host(struct device *dev); | ||
| 52 | int ahci_platform_suspend(struct device *dev); | ||
| 53 | int ahci_platform_resume(struct device *dev); | ||
| 54 | |||
| 33 | #endif /* _AHCI_PLATFORM_H */ | 55 | #endif /* _AHCI_PLATFORM_H */ |
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 493aa021c7a9..2e4cb67f6e56 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
| @@ -62,6 +62,11 @@ enum clock_event_mode { | |||
| 62 | #define CLOCK_EVT_FEAT_DYNIRQ 0x000020 | 62 | #define CLOCK_EVT_FEAT_DYNIRQ 0x000020 |
| 63 | #define CLOCK_EVT_FEAT_PERCPU 0x000040 | 63 | #define CLOCK_EVT_FEAT_PERCPU 0x000040 |
| 64 | 64 | ||
| 65 | /* | ||
| 66 | * Clockevent device is based on a hrtimer for broadcast | ||
| 67 | */ | ||
| 68 | #define CLOCK_EVT_FEAT_HRTIMER 0x000080 | ||
| 69 | |||
| 65 | /** | 70 | /** |
| 66 | * struct clock_event_device - clock event device descriptor | 71 | * struct clock_event_device - clock event device descriptor |
| 67 | * @event_handler: Assigned by the framework to be called by the low | 72 | * @event_handler: Assigned by the framework to be called by the low |
| @@ -83,6 +88,7 @@ enum clock_event_mode { | |||
| 83 | * @name: ptr to clock event name | 88 | * @name: ptr to clock event name |
| 84 | * @rating: variable to rate clock event devices | 89 | * @rating: variable to rate clock event devices |
| 85 | * @irq: IRQ number (only for non CPU local devices) | 90 | * @irq: IRQ number (only for non CPU local devices) |
| 91 | * @bound_on: Bound on CPU | ||
| 86 | * @cpumask: cpumask to indicate for which CPUs this device works | 92 | * @cpumask: cpumask to indicate for which CPUs this device works |
| 87 | * @list: list head for the management code | 93 | * @list: list head for the management code |
| 88 | * @owner: module reference | 94 | * @owner: module reference |
| @@ -113,6 +119,7 @@ struct clock_event_device { | |||
| 113 | const char *name; | 119 | const char *name; |
| 114 | int rating; | 120 | int rating; |
| 115 | int irq; | 121 | int irq; |
| 122 | int bound_on; | ||
| 116 | const struct cpumask *cpumask; | 123 | const struct cpumask *cpumask; |
| 117 | struct list_head list; | 124 | struct list_head list; |
| 118 | struct module *owner; | 125 | struct module *owner; |
| @@ -180,15 +187,17 @@ extern int tick_receive_broadcast(void); | |||
| 180 | #endif | 187 | #endif |
| 181 | 188 | ||
| 182 | #if defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) && defined(CONFIG_TICK_ONESHOT) | 189 | #if defined(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) && defined(CONFIG_TICK_ONESHOT) |
| 190 | extern void tick_setup_hrtimer_broadcast(void); | ||
| 183 | extern int tick_check_broadcast_expired(void); | 191 | extern int tick_check_broadcast_expired(void); |
| 184 | #else | 192 | #else |
| 185 | static inline int tick_check_broadcast_expired(void) { return 0; } | 193 | static inline int tick_check_broadcast_expired(void) { return 0; } |
| 194 | static inline void tick_setup_hrtimer_broadcast(void) {}; | ||
| 186 | #endif | 195 | #endif |
| 187 | 196 | ||
| 188 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | 197 | #ifdef CONFIG_GENERIC_CLOCKEVENTS |
| 189 | extern void clockevents_notify(unsigned long reason, void *arg); | 198 | extern int clockevents_notify(unsigned long reason, void *arg); |
| 190 | #else | 199 | #else |
| 191 | static inline void clockevents_notify(unsigned long reason, void *arg) {} | 200 | static inline int clockevents_notify(unsigned long reason, void *arg) { return 0; } |
| 192 | #endif | 201 | #endif |
| 193 | 202 | ||
| 194 | #else /* CONFIG_GENERIC_CLOCKEVENTS_BUILD */ | 203 | #else /* CONFIG_GENERIC_CLOCKEVENTS_BUILD */ |
| @@ -196,8 +205,9 @@ static inline void clockevents_notify(unsigned long reason, void *arg) {} | |||
| 196 | static inline void clockevents_suspend(void) {} | 205 | static inline void clockevents_suspend(void) {} |
| 197 | static inline void clockevents_resume(void) {} | 206 | static inline void clockevents_resume(void) {} |
| 198 | 207 | ||
| 199 | static inline void clockevents_notify(unsigned long reason, void *arg) {} | 208 | static inline int clockevents_notify(unsigned long reason, void *arg) { return 0; } |
| 200 | static inline int tick_check_broadcast_expired(void) { return 0; } | 209 | static inline int tick_check_broadcast_expired(void) { return 0; } |
| 210 | static inline void tick_setup_hrtimer_broadcast(void) {}; | ||
| 201 | 211 | ||
| 202 | #endif | 212 | #endif |
| 203 | 213 | ||
diff --git a/include/linux/compat.h b/include/linux/compat.h index 3f448c65511b..01c0aa57ccec 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/if.h> | 14 | #include <linux/if.h> |
| 15 | #include <linux/fs.h> | 15 | #include <linux/fs.h> |
| 16 | #include <linux/aio_abi.h> /* for aio_context_t */ | 16 | #include <linux/aio_abi.h> /* for aio_context_t */ |
| 17 | #include <linux/unistd.h> | ||
| 17 | 18 | ||
| 18 | #include <asm/compat.h> | 19 | #include <asm/compat.h> |
| 19 | #include <asm/siginfo.h> | 20 | #include <asm/siginfo.h> |
| @@ -27,6 +28,9 @@ | |||
| 27 | #define __SC_DELOUSE(t,v) ((t)(unsigned long)(v)) | 28 | #define __SC_DELOUSE(t,v) ((t)(unsigned long)(v)) |
| 28 | #endif | 29 | #endif |
| 29 | 30 | ||
| 31 | #define COMPAT_SYSCALL_DEFINE0(name) \ | ||
| 32 | asmlinkage long compat_sys_##name(void) | ||
| 33 | |||
| 30 | #define COMPAT_SYSCALL_DEFINE1(name, ...) \ | 34 | #define COMPAT_SYSCALL_DEFINE1(name, ...) \ |
| 31 | COMPAT_SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) | 35 | COMPAT_SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) |
| 32 | #define COMPAT_SYSCALL_DEFINE2(name, ...) \ | 36 | #define COMPAT_SYSCALL_DEFINE2(name, ...) \ |
| @@ -68,6 +72,8 @@ typedef struct compat_sigaltstack { | |||
| 68 | typedef __compat_uid32_t compat_uid_t; | 72 | typedef __compat_uid32_t compat_uid_t; |
| 69 | typedef __compat_gid32_t compat_gid_t; | 73 | typedef __compat_gid32_t compat_gid_t; |
| 70 | 74 | ||
| 75 | typedef compat_ulong_t compat_aio_context_t; | ||
| 76 | |||
| 71 | struct compat_sel_arg_struct; | 77 | struct compat_sel_arg_struct; |
| 72 | struct rusage; | 78 | struct rusage; |
| 73 | 79 | ||
| @@ -318,7 +324,7 @@ asmlinkage long compat_sys_semctl(int semid, int semnum, int cmd, int arg); | |||
| 318 | asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp, | 324 | asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp, |
| 319 | compat_ssize_t msgsz, int msgflg); | 325 | compat_ssize_t msgsz, int msgflg); |
| 320 | asmlinkage long compat_sys_msgrcv(int msqid, compat_uptr_t msgp, | 326 | asmlinkage long compat_sys_msgrcv(int msqid, compat_uptr_t msgp, |
| 321 | compat_ssize_t msgsz, long msgtyp, int msgflg); | 327 | compat_ssize_t msgsz, compat_long_t msgtyp, int msgflg); |
| 322 | long compat_sys_msgctl(int first, int second, void __user *uptr); | 328 | long compat_sys_msgctl(int first, int second, void __user *uptr); |
| 323 | long compat_sys_shmctl(int first, int second, void __user *uptr); | 329 | long compat_sys_shmctl(int first, int second, void __user *uptr); |
| 324 | long compat_sys_semtimedop(int semid, struct sembuf __user *tsems, | 330 | long compat_sys_semtimedop(int semid, struct sembuf __user *tsems, |
| @@ -337,6 +343,19 @@ asmlinkage ssize_t compat_sys_preadv(compat_ulong_t fd, | |||
| 337 | asmlinkage ssize_t compat_sys_pwritev(compat_ulong_t fd, | 343 | asmlinkage ssize_t compat_sys_pwritev(compat_ulong_t fd, |
| 338 | const struct compat_iovec __user *vec, | 344 | const struct compat_iovec __user *vec, |
| 339 | compat_ulong_t vlen, u32 pos_low, u32 pos_high); | 345 | compat_ulong_t vlen, u32 pos_low, u32 pos_high); |
| 346 | |||
| 347 | #ifdef __ARCH_WANT_COMPAT_SYS_PREADV64 | ||
| 348 | asmlinkage long compat_sys_preadv64(unsigned long fd, | ||
| 349 | const struct compat_iovec __user *vec, | ||
| 350 | unsigned long vlen, loff_t pos); | ||
| 351 | #endif | ||
| 352 | |||
| 353 | #ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64 | ||
| 354 | asmlinkage long compat_sys_pwritev64(unsigned long fd, | ||
| 355 | const struct compat_iovec __user *vec, | ||
| 356 | unsigned long vlen, loff_t pos); | ||
| 357 | #endif | ||
| 358 | |||
| 340 | asmlinkage long compat_sys_lseek(unsigned int, compat_off_t, unsigned int); | 359 | asmlinkage long compat_sys_lseek(unsigned int, compat_off_t, unsigned int); |
| 341 | 360 | ||
| 342 | asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv, | 361 | asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv, |
| @@ -451,7 +470,7 @@ asmlinkage long compat_sys_timerfd_settime(int ufd, int flags, | |||
| 451 | asmlinkage long compat_sys_timerfd_gettime(int ufd, | 470 | asmlinkage long compat_sys_timerfd_gettime(int ufd, |
| 452 | struct compat_itimerspec __user *otmr); | 471 | struct compat_itimerspec __user *otmr); |
| 453 | 472 | ||
| 454 | asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page, | 473 | asmlinkage long compat_sys_move_pages(pid_t pid, compat_ulong_t nr_pages, |
| 455 | __u32 __user *pages, | 474 | __u32 __user *pages, |
| 456 | const int __user *nodes, | 475 | const int __user *nodes, |
| 457 | int __user *status, | 476 | int __user *status, |
| @@ -481,20 +500,20 @@ asmlinkage long compat_sys_statfs64(const char __user *pathname, | |||
| 481 | asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, | 500 | asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, |
| 482 | struct compat_statfs64 __user *buf); | 501 | struct compat_statfs64 __user *buf); |
| 483 | asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd, | 502 | asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd, |
| 484 | unsigned long arg); | 503 | compat_ulong_t arg); |
| 485 | asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd, | 504 | asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd, |
| 486 | unsigned long arg); | 505 | compat_ulong_t arg); |
| 487 | asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p); | 506 | asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p); |
| 488 | asmlinkage long compat_sys_io_getevents(aio_context_t ctx_id, | 507 | asmlinkage long compat_sys_io_getevents(compat_aio_context_t ctx_id, |
| 489 | unsigned long min_nr, | 508 | compat_long_t min_nr, |
| 490 | unsigned long nr, | 509 | compat_long_t nr, |
| 491 | struct io_event __user *events, | 510 | struct io_event __user *events, |
| 492 | struct compat_timespec __user *timeout); | 511 | struct compat_timespec __user *timeout); |
| 493 | asmlinkage long compat_sys_io_submit(aio_context_t ctx_id, int nr, | 512 | asmlinkage long compat_sys_io_submit(compat_aio_context_t ctx_id, int nr, |
| 494 | u32 __user *iocb); | 513 | u32 __user *iocb); |
| 495 | asmlinkage long compat_sys_mount(const char __user *dev_name, | 514 | asmlinkage long compat_sys_mount(const char __user *dev_name, |
| 496 | const char __user *dir_name, | 515 | const char __user *dir_name, |
| 497 | const char __user *type, unsigned long flags, | 516 | const char __user *type, compat_ulong_t flags, |
| 498 | const void __user *data); | 517 | const void __user *data); |
| 499 | asmlinkage long compat_sys_old_readdir(unsigned int fd, | 518 | asmlinkage long compat_sys_old_readdir(unsigned int fd, |
| 500 | struct compat_old_linux_dirent __user *, | 519 | struct compat_old_linux_dirent __user *, |
| @@ -502,9 +521,11 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd, | |||
| 502 | asmlinkage long compat_sys_getdents(unsigned int fd, | 521 | asmlinkage long compat_sys_getdents(unsigned int fd, |
| 503 | struct compat_linux_dirent __user *dirent, | 522 | struct compat_linux_dirent __user *dirent, |
| 504 | unsigned int count); | 523 | unsigned int count); |
| 524 | #ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64 | ||
| 505 | asmlinkage long compat_sys_getdents64(unsigned int fd, | 525 | asmlinkage long compat_sys_getdents64(unsigned int fd, |
| 506 | struct linux_dirent64 __user *dirent, | 526 | struct linux_dirent64 __user *dirent, |
| 507 | unsigned int count); | 527 | unsigned int count); |
| 528 | #endif | ||
| 508 | asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *, | 529 | asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *, |
| 509 | unsigned int nr_segs, unsigned int flags); | 530 | unsigned int nr_segs, unsigned int flags); |
| 510 | asmlinkage long compat_sys_open(const char __user *filename, int flags, | 531 | asmlinkage long compat_sys_open(const char __user *filename, int flags, |
| @@ -549,9 +570,9 @@ asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg, | |||
| 549 | unsigned vlen, unsigned int flags); | 570 | unsigned vlen, unsigned int flags); |
| 550 | asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, | 571 | asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, |
| 551 | unsigned int flags); | 572 | unsigned int flags); |
| 552 | asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, | 573 | asmlinkage long compat_sys_recv(int fd, void __user *buf, compat_size_t len, |
| 553 | unsigned flags); | 574 | unsigned flags); |
| 554 | asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, size_t len, | 575 | asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, compat_size_t len, |
| 555 | unsigned flags, struct sockaddr __user *addr, | 576 | unsigned flags, struct sockaddr __user *addr, |
| 556 | int __user *addrlen); | 577 | int __user *addrlen); |
| 557 | asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, | 578 | asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, |
| @@ -615,16 +636,16 @@ asmlinkage long compat_sys_rt_sigqueueinfo(compat_pid_t pid, int sig, | |||
| 615 | struct compat_siginfo __user *uinfo); | 636 | struct compat_siginfo __user *uinfo); |
| 616 | asmlinkage long compat_sys_sysinfo(struct compat_sysinfo __user *info); | 637 | asmlinkage long compat_sys_sysinfo(struct compat_sysinfo __user *info); |
| 617 | asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, | 638 | asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, |
| 618 | unsigned long arg); | 639 | compat_ulong_t arg); |
| 619 | asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, | 640 | asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, |
| 620 | struct compat_timespec __user *utime, u32 __user *uaddr2, | 641 | struct compat_timespec __user *utime, u32 __user *uaddr2, |
| 621 | u32 val3); | 642 | u32 val3); |
| 622 | asmlinkage long compat_sys_getsockopt(int fd, int level, int optname, | 643 | asmlinkage long compat_sys_getsockopt(int fd, int level, int optname, |
| 623 | char __user *optval, int __user *optlen); | 644 | char __user *optval, int __user *optlen); |
| 624 | asmlinkage long compat_sys_kexec_load(unsigned long entry, | 645 | asmlinkage long compat_sys_kexec_load(compat_ulong_t entry, |
| 625 | unsigned long nr_segments, | 646 | compat_ulong_t nr_segments, |
| 626 | struct compat_kexec_segment __user *, | 647 | struct compat_kexec_segment __user *, |
| 627 | unsigned long flags); | 648 | compat_ulong_t flags); |
| 628 | asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, | 649 | asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, |
| 629 | const struct compat_mq_attr __user *u_mqstat, | 650 | const struct compat_mq_attr __user *u_mqstat, |
| 630 | struct compat_mq_attr __user *u_omqstat); | 651 | struct compat_mq_attr __user *u_omqstat); |
| @@ -635,11 +656,11 @@ asmlinkage long compat_sys_mq_open(const char __user *u_name, | |||
| 635 | struct compat_mq_attr __user *u_attr); | 656 | struct compat_mq_attr __user *u_attr); |
| 636 | asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, | 657 | asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, |
| 637 | const char __user *u_msg_ptr, | 658 | const char __user *u_msg_ptr, |
| 638 | size_t msg_len, unsigned int msg_prio, | 659 | compat_size_t msg_len, unsigned int msg_prio, |
| 639 | const struct compat_timespec __user *u_abs_timeout); | 660 | const struct compat_timespec __user *u_abs_timeout); |
| 640 | asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, | 661 | asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, |
| 641 | char __user *u_msg_ptr, | 662 | char __user *u_msg_ptr, |
| 642 | size_t msg_len, unsigned int __user *u_msg_prio, | 663 | compat_size_t msg_len, unsigned int __user *u_msg_prio, |
| 643 | const struct compat_timespec __user *u_abs_timeout); | 664 | const struct compat_timespec __user *u_abs_timeout); |
| 644 | asmlinkage long compat_sys_socketcall(int call, u32 __user *args); | 665 | asmlinkage long compat_sys_socketcall(int call, u32 __user *args); |
| 645 | asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args); | 666 | asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args); |
| @@ -654,12 +675,12 @@ extern void __user *compat_alloc_user_space(unsigned long len); | |||
| 654 | 675 | ||
| 655 | asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid, | 676 | asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid, |
| 656 | const struct compat_iovec __user *lvec, | 677 | const struct compat_iovec __user *lvec, |
| 657 | unsigned long liovcnt, const struct compat_iovec __user *rvec, | 678 | compat_ulong_t liovcnt, const struct compat_iovec __user *rvec, |
| 658 | unsigned long riovcnt, unsigned long flags); | 679 | compat_ulong_t riovcnt, compat_ulong_t flags); |
| 659 | asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid, | 680 | asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid, |
| 660 | const struct compat_iovec __user *lvec, | 681 | const struct compat_iovec __user *lvec, |
| 661 | unsigned long liovcnt, const struct compat_iovec __user *rvec, | 682 | compat_ulong_t liovcnt, const struct compat_iovec __user *rvec, |
| 662 | unsigned long riovcnt, unsigned long flags); | 683 | compat_ulong_t riovcnt, compat_ulong_t flags); |
| 663 | 684 | ||
| 664 | asmlinkage long compat_sys_sendfile(int out_fd, int in_fd, | 685 | asmlinkage long compat_sys_sendfile(int out_fd, int in_fd, |
| 665 | compat_off_t __user *offset, compat_size_t count); | 686 | compat_off_t __user *offset, compat_size_t count); |
diff --git a/include/linux/cputime.h b/include/linux/cputime.h new file mode 100644 index 000000000000..f2eb2ee535ca --- /dev/null +++ b/include/linux/cputime.h | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | #ifndef __LINUX_CPUTIME_H | ||
| 2 | #define __LINUX_CPUTIME_H | ||
| 3 | |||
| 4 | #include <asm/cputime.h> | ||
| 5 | |||
| 6 | #ifndef cputime_to_nsecs | ||
| 7 | # define cputime_to_nsecs(__ct) \ | ||
| 8 | (cputime_to_usecs(__ct) * NSEC_PER_USEC) | ||
| 9 | #endif | ||
| 10 | |||
| 11 | #ifndef nsecs_to_cputime | ||
| 12 | # define nsecs_to_cputime(__nsecs) \ | ||
| 13 | usecs_to_cputime((__nsecs) / NSEC_PER_USEC) | ||
| 14 | #endif | ||
| 15 | |||
| 16 | #endif /* __LINUX_CPUTIME_H */ | ||
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 12d5f972f23f..cba442ec3c66 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | extern void synchronize_irq(unsigned int irq); | 11 | extern void synchronize_irq(unsigned int irq); |
| 12 | extern void synchronize_hardirq(unsigned int irq); | ||
| 12 | 13 | ||
| 13 | #if defined(CONFIG_TINY_RCU) | 14 | #if defined(CONFIG_TINY_RCU) |
| 14 | 15 | ||
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index d19a5c2d2270..e7a8d3fa91d5 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
| @@ -96,12 +96,12 @@ enum hrtimer_restart { | |||
| 96 | * @function: timer expiry callback function | 96 | * @function: timer expiry callback function |
| 97 | * @base: pointer to the timer base (per cpu and per clock) | 97 | * @base: pointer to the timer base (per cpu and per clock) |
| 98 | * @state: state information (See bit values above) | 98 | * @state: state information (See bit values above) |
| 99 | * @start_pid: timer statistics field to store the pid of the task which | ||
| 100 | * started the timer | ||
| 99 | * @start_site: timer statistics field to store the site where the timer | 101 | * @start_site: timer statistics field to store the site where the timer |
| 100 | * was started | 102 | * was started |
| 101 | * @start_comm: timer statistics field to store the name of the process which | 103 | * @start_comm: timer statistics field to store the name of the process which |
| 102 | * started the timer | 104 | * started the timer |
| 103 | * @start_pid: timer statistics field to store the pid of the task which | ||
| 104 | * started the timer | ||
| 105 | * | 105 | * |
| 106 | * The hrtimer structure must be initialized by hrtimer_init() | 106 | * The hrtimer structure must be initialized by hrtimer_init() |
| 107 | */ | 107 | */ |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index a2678d35b5a2..c7bfac1c4a7b 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -188,6 +188,7 @@ extern void disable_irq(unsigned int irq); | |||
| 188 | extern void disable_percpu_irq(unsigned int irq); | 188 | extern void disable_percpu_irq(unsigned int irq); |
| 189 | extern void enable_irq(unsigned int irq); | 189 | extern void enable_irq(unsigned int irq); |
| 190 | extern void enable_percpu_irq(unsigned int irq, unsigned int type); | 190 | extern void enable_percpu_irq(unsigned int irq, unsigned int type); |
| 191 | extern void irq_wake_thread(unsigned int irq, void *dev_id); | ||
| 191 | 192 | ||
| 192 | /* The following three functions are for the core kernel use only. */ | 193 | /* The following three functions are for the core kernel use only. */ |
| 193 | extern void suspend_device_irqs(void); | 194 | extern void suspend_device_irqs(void); |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 7dc10036eff5..d278838908cb 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -303,6 +303,10 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d) | |||
| 303 | * @irq_pm_shutdown: function called from core code on shutdown once per chip | 303 | * @irq_pm_shutdown: function called from core code on shutdown once per chip |
| 304 | * @irq_calc_mask: Optional function to set irq_data.mask for special cases | 304 | * @irq_calc_mask: Optional function to set irq_data.mask for special cases |
| 305 | * @irq_print_chip: optional to print special chip info in show_interrupts | 305 | * @irq_print_chip: optional to print special chip info in show_interrupts |
| 306 | * @irq_request_resources: optional to request resources before calling | ||
| 307 | * any other callback related to this irq | ||
| 308 | * @irq_release_resources: optional to release resources acquired with | ||
| 309 | * irq_request_resources | ||
| 306 | * @flags: chip specific flags | 310 | * @flags: chip specific flags |
| 307 | */ | 311 | */ |
| 308 | struct irq_chip { | 312 | struct irq_chip { |
| @@ -336,6 +340,8 @@ struct irq_chip { | |||
| 336 | void (*irq_calc_mask)(struct irq_data *data); | 340 | void (*irq_calc_mask)(struct irq_data *data); |
| 337 | 341 | ||
| 338 | void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); | 342 | void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); |
| 343 | int (*irq_request_resources)(struct irq_data *data); | ||
| 344 | void (*irq_release_resources)(struct irq_data *data); | ||
| 339 | 345 | ||
| 340 | unsigned long flags; | 346 | unsigned long flags; |
| 341 | }; | 347 | }; |
| @@ -349,6 +355,8 @@ struct irq_chip { | |||
| 349 | * IRQCHIP_ONOFFLINE_ENABLED: Only call irq_on/off_line callbacks | 355 | * IRQCHIP_ONOFFLINE_ENABLED: Only call irq_on/off_line callbacks |
| 350 | * when irq enabled | 356 | * when irq enabled |
| 351 | * IRQCHIP_SKIP_SET_WAKE: Skip chip.irq_set_wake(), for this irq chip | 357 | * IRQCHIP_SKIP_SET_WAKE: Skip chip.irq_set_wake(), for this irq chip |
| 358 | * IRQCHIP_ONESHOT_SAFE: One shot does not require mask/unmask | ||
| 359 | * IRQCHIP_EOI_THREADED: Chip requires eoi() on unmask in threaded mode | ||
| 352 | */ | 360 | */ |
| 353 | enum { | 361 | enum { |
| 354 | IRQCHIP_SET_TYPE_MASKED = (1 << 0), | 362 | IRQCHIP_SET_TYPE_MASKED = (1 << 0), |
| @@ -357,6 +365,7 @@ enum { | |||
| 357 | IRQCHIP_ONOFFLINE_ENABLED = (1 << 3), | 365 | IRQCHIP_ONOFFLINE_ENABLED = (1 << 3), |
| 358 | IRQCHIP_SKIP_SET_WAKE = (1 << 4), | 366 | IRQCHIP_SKIP_SET_WAKE = (1 << 4), |
| 359 | IRQCHIP_ONESHOT_SAFE = (1 << 5), | 367 | IRQCHIP_ONESHOT_SAFE = (1 << 5), |
| 368 | IRQCHIP_EOI_THREADED = (1 << 6), | ||
| 360 | }; | 369 | }; |
| 361 | 370 | ||
| 362 | /* This include will go away once we isolated irq_desc usage to core code */ | 371 | /* This include will go away once we isolated irq_desc usage to core code */ |
diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h index 51c72be4a7c3..ecbc52f9ff77 100644 --- a/include/linux/kernel_stat.h +++ b/include/linux/kernel_stat.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include <linux/sched.h> | 9 | #include <linux/sched.h> |
| 10 | #include <linux/vtime.h> | 10 | #include <linux/vtime.h> |
| 11 | #include <asm/irq.h> | 11 | #include <asm/irq.h> |
| 12 | #include <asm/cputime.h> | 12 | #include <linux/cputime.h> |
| 13 | 13 | ||
| 14 | /* | 14 | /* |
| 15 | * 'kernel_stat.h' contains the definitions needed for doing | 15 | * 'kernel_stat.h' contains the definitions needed for doing |
| @@ -51,14 +51,8 @@ DECLARE_PER_CPU(struct kernel_cpustat, kernel_cpustat); | |||
| 51 | 51 | ||
| 52 | extern unsigned long long nr_context_switches(void); | 52 | extern unsigned long long nr_context_switches(void); |
| 53 | 53 | ||
| 54 | #include <linux/irq.h> | ||
| 55 | extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu); | 54 | extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu); |
| 56 | 55 | extern void kstat_incr_irq_this_cpu(unsigned int irq); | |
| 57 | #define kstat_incr_irqs_this_cpu(irqno, DESC) \ | ||
| 58 | do { \ | ||
| 59 | __this_cpu_inc(*(DESC)->kstat_irqs); \ | ||
| 60 | __this_cpu_inc(kstat.irqs_sum); \ | ||
| 61 | } while (0) | ||
| 62 | 56 | ||
| 63 | static inline void kstat_incr_softirqs_this_cpu(unsigned int irq) | 57 | static inline void kstat_incr_softirqs_this_cpu(unsigned int irq) |
| 64 | { | 58 | { |
diff --git a/include/linux/kexec.h b/include/linux/kexec.h index 6d4066cdb5b5..a75641930049 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h | |||
| @@ -127,12 +127,6 @@ extern asmlinkage long sys_kexec_load(unsigned long entry, | |||
| 127 | struct kexec_segment __user *segments, | 127 | struct kexec_segment __user *segments, |
| 128 | unsigned long flags); | 128 | unsigned long flags); |
| 129 | extern int kernel_kexec(void); | 129 | extern int kernel_kexec(void); |
| 130 | #ifdef CONFIG_COMPAT | ||
| 131 | extern asmlinkage long compat_sys_kexec_load(unsigned long entry, | ||
| 132 | unsigned long nr_segments, | ||
| 133 | struct compat_kexec_segment __user *segments, | ||
| 134 | unsigned long flags); | ||
| 135 | #endif | ||
| 136 | extern struct page *kimage_alloc_control_pages(struct kimage *image, | 130 | extern struct page *kimage_alloc_control_pages(struct kimage *image, |
| 137 | unsigned int order); | 131 | unsigned int order); |
| 138 | extern void crash_kexec(struct pt_regs *); | 132 | extern void crash_kexec(struct pt_regs *); |
diff --git a/include/linux/libata.h b/include/linux/libata.h index bec6dbe939a0..1de36be64df4 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -848,7 +848,6 @@ struct ata_port { | |||
| 848 | struct completion park_req_pending; | 848 | struct completion park_req_pending; |
| 849 | 849 | ||
| 850 | pm_message_t pm_mesg; | 850 | pm_message_t pm_mesg; |
| 851 | int *pm_result; | ||
| 852 | enum ata_lpm_policy target_lpm_policy; | 851 | enum ata_lpm_policy target_lpm_policy; |
| 853 | 852 | ||
| 854 | struct timer_list fastdrain_timer; | 853 | struct timer_list fastdrain_timer; |
| @@ -1140,16 +1139,14 @@ extern bool ata_link_offline(struct ata_link *link); | |||
| 1140 | #ifdef CONFIG_PM | 1139 | #ifdef CONFIG_PM |
| 1141 | extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg); | 1140 | extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg); |
| 1142 | extern void ata_host_resume(struct ata_host *host); | 1141 | extern void ata_host_resume(struct ata_host *host); |
| 1143 | extern int ata_sas_port_async_suspend(struct ata_port *ap, int *async); | 1142 | extern void ata_sas_port_suspend(struct ata_port *ap); |
| 1144 | extern int ata_sas_port_async_resume(struct ata_port *ap, int *async); | 1143 | extern void ata_sas_port_resume(struct ata_port *ap); |
| 1145 | #else | 1144 | #else |
| 1146 | static inline int ata_sas_port_async_suspend(struct ata_port *ap, int *async) | 1145 | static inline void ata_sas_port_suspend(struct ata_port *ap) |
| 1147 | { | 1146 | { |
| 1148 | return 0; | ||
| 1149 | } | 1147 | } |
| 1150 | static inline int ata_sas_port_async_resume(struct ata_port *ap, int *async) | 1148 | static inline void ata_sas_port_resume(struct ata_port *ap) |
| 1151 | { | 1149 | { |
| 1152 | return 0; | ||
| 1153 | } | 1150 | } |
| 1154 | #endif | 1151 | #endif |
| 1155 | extern int ata_ratelimit(void); | 1152 | extern int ata_ratelimit(void); |
diff --git a/include/linux/mm.h b/include/linux/mm.h index c1b7414c7bef..a0df4295e171 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -1487,9 +1487,15 @@ static inline void pgtable_page_dtor(struct page *page) | |||
| 1487 | 1487 | ||
| 1488 | #if USE_SPLIT_PMD_PTLOCKS | 1488 | #if USE_SPLIT_PMD_PTLOCKS |
| 1489 | 1489 | ||
| 1490 | static struct page *pmd_to_page(pmd_t *pmd) | ||
| 1491 | { | ||
| 1492 | unsigned long mask = ~(PTRS_PER_PMD * sizeof(pmd_t) - 1); | ||
| 1493 | return virt_to_page((void *)((unsigned long) pmd & mask)); | ||
| 1494 | } | ||
| 1495 | |||
| 1490 | static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd) | 1496 | static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd) |
| 1491 | { | 1497 | { |
| 1492 | return ptlock_ptr(virt_to_page(pmd)); | 1498 | return ptlock_ptr(pmd_to_page(pmd)); |
| 1493 | } | 1499 | } |
| 1494 | 1500 | ||
| 1495 | static inline bool pgtable_pmd_page_ctor(struct page *page) | 1501 | static inline bool pgtable_pmd_page_ctor(struct page *page) |
| @@ -1508,7 +1514,7 @@ static inline void pgtable_pmd_page_dtor(struct page *page) | |||
| 1508 | ptlock_free(page); | 1514 | ptlock_free(page); |
| 1509 | } | 1515 | } |
| 1510 | 1516 | ||
| 1511 | #define pmd_huge_pte(mm, pmd) (virt_to_page(pmd)->pmd_huge_pte) | 1517 | #define pmd_huge_pte(mm, pmd) (pmd_to_page(pmd)->pmd_huge_pte) |
| 1512 | 1518 | ||
| 1513 | #else | 1519 | #else |
| 1514 | 1520 | ||
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 69ae03f6eb15..6b9aafed225f 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h | |||
| @@ -87,6 +87,7 @@ struct nvme_dev { | |||
| 87 | struct list_head namespaces; | 87 | struct list_head namespaces; |
| 88 | struct kref kref; | 88 | struct kref kref; |
| 89 | struct miscdevice miscdev; | 89 | struct miscdevice miscdev; |
| 90 | work_func_t reset_workfn; | ||
| 90 | struct work_struct reset_work; | 91 | struct work_struct reset_work; |
| 91 | char name[12]; | 92 | char name[12]; |
| 92 | char serial[20]; | 93 | char serial[20]; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 825ed838d4b9..7cb07fd26680 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -29,7 +29,7 @@ struct sched_param { | |||
| 29 | 29 | ||
| 30 | #include <asm/page.h> | 30 | #include <asm/page.h> |
| 31 | #include <asm/ptrace.h> | 31 | #include <asm/ptrace.h> |
| 32 | #include <asm/cputime.h> | 32 | #include <linux/cputime.h> |
| 33 | 33 | ||
| 34 | #include <linux/smp.h> | 34 | #include <linux/smp.h> |
| 35 | #include <linux/sem.h> | 35 | #include <linux/sem.h> |
| @@ -294,10 +294,14 @@ extern int runqueue_is_locked(int cpu); | |||
| 294 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) | 294 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) |
| 295 | extern void nohz_balance_enter_idle(int cpu); | 295 | extern void nohz_balance_enter_idle(int cpu); |
| 296 | extern void set_cpu_sd_state_idle(void); | 296 | extern void set_cpu_sd_state_idle(void); |
| 297 | extern int get_nohz_timer_target(void); | 297 | extern int get_nohz_timer_target(int pinned); |
| 298 | #else | 298 | #else |
| 299 | static inline void nohz_balance_enter_idle(int cpu) { } | 299 | static inline void nohz_balance_enter_idle(int cpu) { } |
| 300 | static inline void set_cpu_sd_state_idle(void) { } | 300 | static inline void set_cpu_sd_state_idle(void) { } |
| 301 | static inline int get_nohz_timer_target(int pinned) | ||
| 302 | { | ||
| 303 | return smp_processor_id(); | ||
| 304 | } | ||
| 301 | #endif | 305 | #endif |
| 302 | 306 | ||
| 303 | /* | 307 | /* |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index a747a77ea584..1e67b7a5968c 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -98,6 +98,8 @@ struct sigaltstack; | |||
| 98 | #define __MAP(n,...) __MAP##n(__VA_ARGS__) | 98 | #define __MAP(n,...) __MAP##n(__VA_ARGS__) |
| 99 | 99 | ||
| 100 | #define __SC_DECL(t, a) t a | 100 | #define __SC_DECL(t, a) t a |
| 101 | #define __TYPE_IS_L(t) (__same_type((t)0, 0L)) | ||
| 102 | #define __TYPE_IS_UL(t) (__same_type((t)0, 0UL)) | ||
| 101 | #define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL)) | 103 | #define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL)) |
| 102 | #define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a | 104 | #define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a |
| 103 | #define __SC_CAST(t, a) (t) a | 105 | #define __SC_CAST(t, a) (t) a |
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 704f4f652d0a..1b22c42e9c2d 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
| @@ -177,20 +177,10 @@ struct execute_work { | |||
| 177 | #define DECLARE_DEFERRABLE_WORK(n, f) \ | 177 | #define DECLARE_DEFERRABLE_WORK(n, f) \ |
| 178 | struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, TIMER_DEFERRABLE) | 178 | struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, TIMER_DEFERRABLE) |
| 179 | 179 | ||
| 180 | /* | ||
| 181 | * initialize a work item's function pointer | ||
| 182 | */ | ||
| 183 | #define PREPARE_WORK(_work, _func) \ | ||
| 184 | do { \ | ||
| 185 | (_work)->func = (_func); \ | ||
| 186 | } while (0) | ||
| 187 | |||
| 188 | #define PREPARE_DELAYED_WORK(_work, _func) \ | ||
| 189 | PREPARE_WORK(&(_work)->work, (_func)) | ||
| 190 | |||
| 191 | #ifdef CONFIG_DEBUG_OBJECTS_WORK | 180 | #ifdef CONFIG_DEBUG_OBJECTS_WORK |
| 192 | extern void __init_work(struct work_struct *work, int onstack); | 181 | extern void __init_work(struct work_struct *work, int onstack); |
| 193 | extern void destroy_work_on_stack(struct work_struct *work); | 182 | extern void destroy_work_on_stack(struct work_struct *work); |
| 183 | extern void destroy_delayed_work_on_stack(struct delayed_work *work); | ||
| 194 | static inline unsigned int work_static(struct work_struct *work) | 184 | static inline unsigned int work_static(struct work_struct *work) |
| 195 | { | 185 | { |
| 196 | return *work_data_bits(work) & WORK_STRUCT_STATIC; | 186 | return *work_data_bits(work) & WORK_STRUCT_STATIC; |
| @@ -198,6 +188,7 @@ static inline unsigned int work_static(struct work_struct *work) | |||
| 198 | #else | 188 | #else |
| 199 | static inline void __init_work(struct work_struct *work, int onstack) { } | 189 | static inline void __init_work(struct work_struct *work, int onstack) { } |
| 200 | static inline void destroy_work_on_stack(struct work_struct *work) { } | 190 | static inline void destroy_work_on_stack(struct work_struct *work) { } |
| 191 | static inline void destroy_delayed_work_on_stack(struct delayed_work *work) { } | ||
| 201 | static inline unsigned int work_static(struct work_struct *work) { return 0; } | 192 | static inline unsigned int work_static(struct work_struct *work) { return 0; } |
| 202 | #endif | 193 | #endif |
| 203 | 194 | ||
| @@ -217,7 +208,7 @@ static inline unsigned int work_static(struct work_struct *work) { return 0; } | |||
| 217 | (_work)->data = (atomic_long_t) WORK_DATA_INIT(); \ | 208 | (_work)->data = (atomic_long_t) WORK_DATA_INIT(); \ |
| 218 | lockdep_init_map(&(_work)->lockdep_map, #_work, &__key, 0); \ | 209 | lockdep_init_map(&(_work)->lockdep_map, #_work, &__key, 0); \ |
| 219 | INIT_LIST_HEAD(&(_work)->entry); \ | 210 | INIT_LIST_HEAD(&(_work)->entry); \ |
| 220 | PREPARE_WORK((_work), (_func)); \ | 211 | (_work)->func = (_func); \ |
| 221 | } while (0) | 212 | } while (0) |
| 222 | #else | 213 | #else |
| 223 | #define __INIT_WORK(_work, _func, _onstack) \ | 214 | #define __INIT_WORK(_work, _func, _onstack) \ |
| @@ -225,7 +216,7 @@ static inline unsigned int work_static(struct work_struct *work) { return 0; } | |||
| 225 | __init_work((_work), _onstack); \ | 216 | __init_work((_work), _onstack); \ |
| 226 | (_work)->data = (atomic_long_t) WORK_DATA_INIT(); \ | 217 | (_work)->data = (atomic_long_t) WORK_DATA_INIT(); \ |
| 227 | INIT_LIST_HEAD(&(_work)->entry); \ | 218 | INIT_LIST_HEAD(&(_work)->entry); \ |
| 228 | PREPARE_WORK((_work), (_func)); \ | 219 | (_work)->func = (_func); \ |
| 229 | } while (0) | 220 | } while (0) |
| 230 | #endif | 221 | #endif |
| 231 | 222 | ||
| @@ -295,17 +286,11 @@ static inline unsigned int work_static(struct work_struct *work) { return 0; } | |||
| 295 | * Documentation/workqueue.txt. | 286 | * Documentation/workqueue.txt. |
| 296 | */ | 287 | */ |
| 297 | enum { | 288 | enum { |
| 298 | /* | ||
| 299 | * All wqs are now non-reentrant making the following flag | ||
| 300 | * meaningless. Will be removed. | ||
| 301 | */ | ||
| 302 | WQ_NON_REENTRANT = 1 << 0, /* DEPRECATED */ | ||
| 303 | |||
| 304 | WQ_UNBOUND = 1 << 1, /* not bound to any cpu */ | 289 | WQ_UNBOUND = 1 << 1, /* not bound to any cpu */ |
| 305 | WQ_FREEZABLE = 1 << 2, /* freeze during suspend */ | 290 | WQ_FREEZABLE = 1 << 2, /* freeze during suspend */ |
| 306 | WQ_MEM_RECLAIM = 1 << 3, /* may be used for memory reclaim */ | 291 | WQ_MEM_RECLAIM = 1 << 3, /* may be used for memory reclaim */ |
| 307 | WQ_HIGHPRI = 1 << 4, /* high priority */ | 292 | WQ_HIGHPRI = 1 << 4, /* high priority */ |
| 308 | WQ_CPU_INTENSIVE = 1 << 5, /* cpu instensive workqueue */ | 293 | WQ_CPU_INTENSIVE = 1 << 5, /* cpu intensive workqueue */ |
| 309 | WQ_SYSFS = 1 << 6, /* visible in sysfs, see wq_sysfs_register() */ | 294 | WQ_SYSFS = 1 << 6, /* visible in sysfs, see wq_sysfs_register() */ |
| 310 | 295 | ||
| 311 | /* | 296 | /* |
| @@ -602,21 +587,6 @@ static inline bool keventd_up(void) | |||
| 602 | return system_wq != NULL; | 587 | return system_wq != NULL; |
| 603 | } | 588 | } |
| 604 | 589 | ||
| 605 | /* | ||
| 606 | * Like above, but uses del_timer() instead of del_timer_sync(). This means, | ||
| 607 | * if it returns 0 the timer function may be running and the queueing is in | ||
| 608 | * progress. | ||
| 609 | */ | ||
| 610 | static inline bool __deprecated __cancel_delayed_work(struct delayed_work *work) | ||
| 611 | { | ||
| 612 | bool ret; | ||
| 613 | |||
| 614 | ret = del_timer(&work->timer); | ||
| 615 | if (ret) | ||
| 616 | work_clear_pending(&work->work); | ||
| 617 | return ret; | ||
| 618 | } | ||
| 619 | |||
| 620 | /* used to be different but now identical to flush_work(), deprecated */ | 590 | /* used to be different but now identical to flush_work(), deprecated */ |
| 621 | static inline bool __deprecated flush_work_sync(struct work_struct *work) | 591 | static inline bool __deprecated flush_work_sync(struct work_struct *work) |
| 622 | { | 592 | { |
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h index f843dd8722a9..ef7872c20da9 100644 --- a/include/scsi/libsas.h +++ b/include/scsi/libsas.h | |||
| @@ -172,7 +172,6 @@ struct sata_device { | |||
| 172 | enum ata_command_set command_set; | 172 | enum ata_command_set command_set; |
| 173 | struct smp_resp rps_resp; /* report_phy_sata_resp */ | 173 | struct smp_resp rps_resp; /* report_phy_sata_resp */ |
| 174 | u8 port_no; /* port number, if this is a PM (Port) */ | 174 | u8 port_no; /* port number, if this is a PM (Port) */ |
| 175 | int pm_result; | ||
| 176 | 175 | ||
| 177 | struct ata_port *ap; | 176 | struct ata_port *ap; |
| 178 | struct ata_host ata_host; | 177 | struct ata_host ata_host; |
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h index dde8041f40d2..6db66783d268 100644 --- a/include/uapi/asm-generic/unistd.h +++ b/include/uapi/asm-generic/unistd.h | |||
| @@ -191,6 +191,7 @@ __SYSCALL(__NR_quotactl, sys_quotactl) | |||
| 191 | 191 | ||
| 192 | /* fs/readdir.c */ | 192 | /* fs/readdir.c */ |
| 193 | #define __NR_getdents64 61 | 193 | #define __NR_getdents64 61 |
| 194 | #define __ARCH_WANT_COMPAT_SYS_GETDENTS64 | ||
| 194 | __SC_COMP(__NR_getdents64, sys_getdents64, compat_sys_getdents64) | 195 | __SC_COMP(__NR_getdents64, sys_getdents64, compat_sys_getdents64) |
| 195 | 196 | ||
| 196 | /* fs/read_write.c */ | 197 | /* fs/read_write.c */ |
