diff options
| author | Dave Airlie <airlied@redhat.com> | 2013-06-27 06:40:44 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2013-06-27 06:40:44 -0400 |
| commit | 4300a0f8bdcce5a03b88bfa16fc9827e15c52dc4 (patch) | |
| tree | dea0276d7d0a12147f04ddbef9121e32e903c5ca /include/linux | |
| parent | 160954b7bca43da7cd3cfbce310e6df919a8216e (diff) | |
| parent | 9e895ace5d82df8929b16f58e9f515f6d54ab82d (diff) | |
Merge tag 'v3.10-rc7' into drm-next
Linux 3.10-rc7
The sdvo lvds fix in this -fixes pull
commit c3456fb3e4712d0448592af3c5d644c9472cd3c1
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Mon Jun 10 09:47:58 2013 +0200
drm/i915: prefer VBT modes for SVDO-LVDS over EDID
has a silent functional conflict with
commit 990256aec2f10800595dddf4d1c3441fcd6b2616
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date: Fri May 31 12:17:07 2013 +0000
drm: Add probed modes in probe order
in drm-next. W simply need to add the vbt modes before edid modes, i.e. the
other way round than now.
Conflicts:
drivers/gpu/drm/drm_prime.c
drivers/gpu/drm/i915/intel_sdvo.c
Diffstat (limited to 'include/linux')
35 files changed, 235 insertions, 73 deletions
diff --git a/include/linux/acpi_dma.h b/include/linux/acpi_dma.h index d09deabc7bf6..fb0298082916 100644 --- a/include/linux/acpi_dma.h +++ b/include/linux/acpi_dma.h | |||
| @@ -37,6 +37,8 @@ struct acpi_dma_spec { | |||
| 37 | * @dev: struct device of this controller | 37 | * @dev: struct device of this controller |
| 38 | * @acpi_dma_xlate: callback function to find a suitable channel | 38 | * @acpi_dma_xlate: callback function to find a suitable channel |
| 39 | * @data: private data used by a callback function | 39 | * @data: private data used by a callback function |
| 40 | * @base_request_line: first supported request line (CSRT) | ||
| 41 | * @end_request_line: last supported request line (CSRT) | ||
| 40 | */ | 42 | */ |
| 41 | struct acpi_dma { | 43 | struct acpi_dma { |
| 42 | struct list_head dma_controllers; | 44 | struct list_head dma_controllers; |
| @@ -44,6 +46,8 @@ struct acpi_dma { | |||
| 44 | struct dma_chan *(*acpi_dma_xlate) | 46 | struct dma_chan *(*acpi_dma_xlate) |
| 45 | (struct acpi_dma_spec *, struct acpi_dma *); | 47 | (struct acpi_dma_spec *, struct acpi_dma *); |
| 46 | void *data; | 48 | void *data; |
| 49 | unsigned short base_request_line; | ||
| 50 | unsigned short end_request_line; | ||
| 47 | }; | 51 | }; |
| 48 | 52 | ||
| 49 | /* Used with acpi_dma_simple_xlate() */ | 53 | /* Used with acpi_dma_simple_xlate() */ |
diff --git a/include/linux/aer.h b/include/linux/aer.h index ec10e1b24c1c..737f90ab4b62 100644 --- a/include/linux/aer.h +++ b/include/linux/aer.h | |||
| @@ -49,10 +49,11 @@ static inline int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev) | |||
| 49 | } | 49 | } |
| 50 | #endif | 50 | #endif |
| 51 | 51 | ||
| 52 | extern void cper_print_aer(const char *prefix, struct pci_dev *dev, | 52 | extern void cper_print_aer(struct pci_dev *dev, |
| 53 | int cper_severity, struct aer_capability_regs *aer); | 53 | int cper_severity, struct aer_capability_regs *aer); |
| 54 | extern int cper_severity_to_aer(int cper_severity); | 54 | extern int cper_severity_to_aer(int cper_severity); |
| 55 | extern void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn, | 55 | extern void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn, |
| 56 | int severity); | 56 | int severity, |
| 57 | struct aer_capability_regs *aer_regs); | ||
| 57 | #endif //_AER_H_ | 58 | #endif //_AER_H_ |
| 58 | 59 | ||
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h index f14a98a79c9d..2e34db82a643 100644 --- a/include/linux/bcma/bcma.h +++ b/include/linux/bcma/bcma.h | |||
| @@ -134,7 +134,10 @@ struct bcma_host_ops { | |||
| 134 | #define BCMA_CORE_I2S 0x834 | 134 | #define BCMA_CORE_I2S 0x834 |
| 135 | #define BCMA_CORE_SDR_DDR1_MEM_CTL 0x835 /* SDR/DDR1 memory controller core */ | 135 | #define BCMA_CORE_SDR_DDR1_MEM_CTL 0x835 /* SDR/DDR1 memory controller core */ |
| 136 | #define BCMA_CORE_SHIM 0x837 /* SHIM component in ubus/6362 */ | 136 | #define BCMA_CORE_SHIM 0x837 /* SHIM component in ubus/6362 */ |
| 137 | #define BCMA_CORE_ARM_CR4 0x83e | 137 | #define BCMA_CORE_PHY_AC 0x83B |
| 138 | #define BCMA_CORE_PCIE2 0x83C /* PCI Express Gen2 */ | ||
| 139 | #define BCMA_CORE_USB30_DEV 0x83D | ||
| 140 | #define BCMA_CORE_ARM_CR4 0x83E | ||
| 138 | #define BCMA_CORE_DEFAULT 0xFFF | 141 | #define BCMA_CORE_DEFAULT 0xFFF |
| 139 | 142 | ||
| 140 | #define BCMA_MAX_NR_CORES 16 | 143 | #define BCMA_MAX_NR_CORES 16 |
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h index b840a4960282..677b4f01b2d0 100644 --- a/include/linux/brcmphy.h +++ b/include/linux/brcmphy.h | |||
| @@ -1,3 +1,6 @@ | |||
| 1 | #ifndef _LINUX_BRCMPHY_H | ||
| 2 | #define _LINUX_BRCMPHY_H | ||
| 3 | |||
| 1 | #define PHY_ID_BCM50610 0x0143bd60 | 4 | #define PHY_ID_BCM50610 0x0143bd60 |
| 2 | #define PHY_ID_BCM50610M 0x0143bd70 | 5 | #define PHY_ID_BCM50610M 0x0143bd70 |
| 3 | #define PHY_ID_BCM5241 0x0143bc30 | 6 | #define PHY_ID_BCM5241 0x0143bc30 |
| @@ -29,3 +32,5 @@ | |||
| 29 | #define PHY_BRCM_CLEAR_RGMII_MODE 0x00004000 | 32 | #define PHY_BRCM_CLEAR_RGMII_MODE 0x00004000 |
| 30 | #define PHY_BRCM_DIS_TXCRXC_NOENRGY 0x00008000 | 33 | #define PHY_BRCM_DIS_TXCRXC_NOENRGY 0x00008000 |
| 31 | #define PHY_BCM_FLAGS_VALID 0x80000000 | 34 | #define PHY_BCM_FLAGS_VALID 0x80000000 |
| 35 | |||
| 36 | #endif /* _LINUX_BRCMPHY_H */ | ||
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 5047355b9a0f..8bda1294c035 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
| @@ -707,7 +707,7 @@ struct cgroup *cgroup_rightmost_descendant(struct cgroup *pos); | |||
| 707 | * | 707 | * |
| 708 | * If a subsystem synchronizes against the parent in its ->css_online() and | 708 | * If a subsystem synchronizes against the parent in its ->css_online() and |
| 709 | * before starting iterating, and synchronizes against @pos on each | 709 | * before starting iterating, and synchronizes against @pos on each |
| 710 | * iteration, any descendant cgroup which finished ->css_offline() is | 710 | * iteration, any descendant cgroup which finished ->css_online() is |
| 711 | * guaranteed to be visible in the future iterations. | 711 | * guaranteed to be visible in the future iterations. |
| 712 | * | 712 | * |
| 713 | * In other words, the following guarantees that a descendant can't escape | 713 | * In other words, the following guarantees that a descendant can't escape |
diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h index 365f4a61bf04..fc09d7b0dacf 100644 --- a/include/linux/context_tracking.h +++ b/include/linux/context_tracking.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
| 5 | #include <linux/percpu.h> | 5 | #include <linux/percpu.h> |
| 6 | #include <linux/vtime.h> | ||
| 6 | #include <asm/ptrace.h> | 7 | #include <asm/ptrace.h> |
| 7 | 8 | ||
| 8 | struct context_tracking { | 9 | struct context_tracking { |
| @@ -19,6 +20,26 @@ struct context_tracking { | |||
| 19 | } state; | 20 | } state; |
| 20 | }; | 21 | }; |
| 21 | 22 | ||
| 23 | static inline void __guest_enter(void) | ||
| 24 | { | ||
| 25 | /* | ||
| 26 | * This is running in ioctl context so we can avoid | ||
| 27 | * the call to vtime_account() with its unnecessary idle check. | ||
| 28 | */ | ||
| 29 | vtime_account_system(current); | ||
| 30 | current->flags |= PF_VCPU; | ||
| 31 | } | ||
| 32 | |||
| 33 | static inline void __guest_exit(void) | ||
| 34 | { | ||
| 35 | /* | ||
| 36 | * This is running in ioctl context so we can avoid | ||
| 37 | * the call to vtime_account() with its unnecessary idle check. | ||
| 38 | */ | ||
| 39 | vtime_account_system(current); | ||
| 40 | current->flags &= ~PF_VCPU; | ||
| 41 | } | ||
| 42 | |||
| 22 | #ifdef CONFIG_CONTEXT_TRACKING | 43 | #ifdef CONFIG_CONTEXT_TRACKING |
| 23 | DECLARE_PER_CPU(struct context_tracking, context_tracking); | 44 | DECLARE_PER_CPU(struct context_tracking, context_tracking); |
| 24 | 45 | ||
| @@ -35,6 +56,9 @@ static inline bool context_tracking_active(void) | |||
| 35 | extern void user_enter(void); | 56 | extern void user_enter(void); |
| 36 | extern void user_exit(void); | 57 | extern void user_exit(void); |
| 37 | 58 | ||
| 59 | extern void guest_enter(void); | ||
| 60 | extern void guest_exit(void); | ||
| 61 | |||
| 38 | static inline enum ctx_state exception_enter(void) | 62 | static inline enum ctx_state exception_enter(void) |
| 39 | { | 63 | { |
| 40 | enum ctx_state prev_ctx; | 64 | enum ctx_state prev_ctx; |
| @@ -57,6 +81,17 @@ extern void context_tracking_task_switch(struct task_struct *prev, | |||
| 57 | static inline bool context_tracking_in_user(void) { return false; } | 81 | static inline bool context_tracking_in_user(void) { return false; } |
| 58 | static inline void user_enter(void) { } | 82 | static inline void user_enter(void) { } |
| 59 | static inline void user_exit(void) { } | 83 | static inline void user_exit(void) { } |
| 84 | |||
| 85 | static inline void guest_enter(void) | ||
| 86 | { | ||
| 87 | __guest_enter(); | ||
| 88 | } | ||
| 89 | |||
| 90 | static inline void guest_exit(void) | ||
| 91 | { | ||
| 92 | __guest_exit(); | ||
| 93 | } | ||
| 94 | |||
| 60 | static inline enum ctx_state exception_enter(void) { return 0; } | 95 | static inline enum ctx_state exception_enter(void) { return 0; } |
| 61 | static inline void exception_exit(enum ctx_state prev_ctx) { } | 96 | static inline void exception_exit(enum ctx_state prev_ctx) { } |
| 62 | static inline void context_tracking_task_switch(struct task_struct *prev, | 97 | static inline void context_tracking_task_switch(struct task_struct *prev, |
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index c6f6e0839b61..9f3c7e81270a 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
| @@ -175,6 +175,8 @@ extern struct bus_type cpu_subsys; | |||
| 175 | 175 | ||
| 176 | extern void get_online_cpus(void); | 176 | extern void get_online_cpus(void); |
| 177 | extern void put_online_cpus(void); | 177 | extern void put_online_cpus(void); |
| 178 | extern void cpu_hotplug_disable(void); | ||
| 179 | extern void cpu_hotplug_enable(void); | ||
| 178 | #define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri) | 180 | #define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri) |
| 179 | #define register_hotcpu_notifier(nb) register_cpu_notifier(nb) | 181 | #define register_hotcpu_notifier(nb) register_cpu_notifier(nb) |
| 180 | #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) | 182 | #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) |
| @@ -198,6 +200,8 @@ static inline void cpu_hotplug_driver_unlock(void) | |||
| 198 | 200 | ||
| 199 | #define get_online_cpus() do { } while (0) | 201 | #define get_online_cpus() do { } while (0) |
| 200 | #define put_online_cpus() do { } while (0) | 202 | #define put_online_cpus() do { } while (0) |
| 203 | #define cpu_hotplug_disable() do { } while (0) | ||
| 204 | #define cpu_hotplug_enable() do { } while (0) | ||
| 201 | #define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) | 205 | #define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) |
| 202 | /* These aren't inline functions due to a GCC bug. */ | 206 | /* These aren't inline functions due to a GCC bug. */ |
| 203 | #define register_hotcpu_notifier(nb) ({ (void)(nb); 0; }) | 207 | #define register_hotcpu_notifier(nb) ({ (void)(nb); 0; }) |
diff --git a/include/linux/filter.h b/include/linux/filter.h index c050dcc322a4..f65f5a69db8f 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h | |||
| @@ -46,6 +46,7 @@ extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk); | |||
| 46 | extern int sk_detach_filter(struct sock *sk); | 46 | extern int sk_detach_filter(struct sock *sk); |
| 47 | extern int sk_chk_filter(struct sock_filter *filter, unsigned int flen); | 47 | extern int sk_chk_filter(struct sock_filter *filter, unsigned int flen); |
| 48 | extern int sk_get_filter(struct sock *sk, struct sock_filter __user *filter, unsigned len); | 48 | extern int sk_get_filter(struct sock *sk, struct sock_filter __user *filter, unsigned len); |
| 49 | extern void sk_decode_filter(struct sock_filter *filt, struct sock_filter *to); | ||
| 49 | 50 | ||
| 50 | #ifdef CONFIG_BPF_JIT | 51 | #ifdef CONFIG_BPF_JIT |
| 51 | #include <stdarg.h> | 52 | #include <stdarg.h> |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 43db02e9c9fa..65c2be22b601 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -2414,8 +2414,6 @@ extern ssize_t generic_file_splice_write(struct pipe_inode_info *, | |||
| 2414 | struct file *, loff_t *, size_t, unsigned int); | 2414 | struct file *, loff_t *, size_t, unsigned int); |
| 2415 | extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, | 2415 | extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, |
| 2416 | struct file *out, loff_t *, size_t len, unsigned int flags); | 2416 | struct file *out, loff_t *, size_t len, unsigned int flags); |
| 2417 | extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, | ||
| 2418 | size_t len, unsigned int flags); | ||
| 2419 | 2417 | ||
| 2420 | extern void | 2418 | extern void |
| 2421 | file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); | 2419 | file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); |
diff --git a/include/linux/if_team.h b/include/linux/if_team.h index 4474557904f6..16fae6436d0e 100644 --- a/include/linux/if_team.h +++ b/include/linux/if_team.h | |||
| @@ -249,12 +249,12 @@ team_get_first_port_txable_rcu(struct team *team, struct team_port *port) | |||
| 249 | return port; | 249 | return port; |
| 250 | cur = port; | 250 | cur = port; |
| 251 | list_for_each_entry_continue_rcu(cur, &team->port_list, list) | 251 | list_for_each_entry_continue_rcu(cur, &team->port_list, list) |
| 252 | if (team_port_txable(port)) | 252 | if (team_port_txable(cur)) |
| 253 | return cur; | 253 | return cur; |
| 254 | list_for_each_entry_rcu(cur, &team->port_list, list) { | 254 | list_for_each_entry_rcu(cur, &team->port_list, list) { |
| 255 | if (cur == port) | 255 | if (cur == port) |
| 256 | break; | 256 | break; |
| 257 | if (team_port_txable(port)) | 257 | if (team_port_txable(cur)) |
| 258 | return cur; | 258 | return cur; |
| 259 | } | 259 | } |
| 260 | return NULL; | 260 | return NULL; |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index e96329ceb28c..e9ef6d6b51d5 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -562,6 +562,9 @@ int __trace_bprintk(unsigned long ip, const char *fmt, ...); | |||
| 562 | extern __printf(2, 3) | 562 | extern __printf(2, 3) |
| 563 | int __trace_printk(unsigned long ip, const char *fmt, ...); | 563 | int __trace_printk(unsigned long ip, const char *fmt, ...); |
| 564 | 564 | ||
| 565 | extern int __trace_bputs(unsigned long ip, const char *str); | ||
| 566 | extern int __trace_puts(unsigned long ip, const char *str, int size); | ||
| 567 | |||
| 565 | /** | 568 | /** |
| 566 | * trace_puts - write a string into the ftrace buffer | 569 | * trace_puts - write a string into the ftrace buffer |
| 567 | * @str: the string to record | 570 | * @str: the string to record |
| @@ -587,8 +590,6 @@ int __trace_printk(unsigned long ip, const char *fmt, ...); | |||
| 587 | * (1 when __trace_bputs is used, strlen(str) when __trace_puts is used) | 590 | * (1 when __trace_bputs is used, strlen(str) when __trace_puts is used) |
| 588 | */ | 591 | */ |
| 589 | 592 | ||
| 590 | extern int __trace_bputs(unsigned long ip, const char *str); | ||
| 591 | extern int __trace_puts(unsigned long ip, const char *str, int size); | ||
| 592 | #define trace_puts(str) ({ \ | 593 | #define trace_puts(str) ({ \ |
| 593 | static const char *trace_printk_fmt \ | 594 | static const char *trace_printk_fmt \ |
| 594 | __attribute__((section("__trace_printk_fmt"))) = \ | 595 | __attribute__((section("__trace_printk_fmt"))) = \ |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index f0eea07d2c2b..8db53cfaccdb 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/ratelimit.h> | 23 | #include <linux/ratelimit.h> |
| 24 | #include <linux/err.h> | 24 | #include <linux/err.h> |
| 25 | #include <linux/irqflags.h> | 25 | #include <linux/irqflags.h> |
| 26 | #include <linux/context_tracking.h> | ||
| 26 | #include <asm/signal.h> | 27 | #include <asm/signal.h> |
| 27 | 28 | ||
| 28 | #include <linux/kvm.h> | 29 | #include <linux/kvm.h> |
| @@ -760,42 +761,6 @@ static inline int kvm_iommu_unmap_guest(struct kvm *kvm) | |||
| 760 | } | 761 | } |
| 761 | #endif | 762 | #endif |
| 762 | 763 | ||
| 763 | static inline void __guest_enter(void) | ||
| 764 | { | ||
| 765 | /* | ||
| 766 | * This is running in ioctl context so we can avoid | ||
| 767 | * the call to vtime_account() with its unnecessary idle check. | ||
| 768 | */ | ||
| 769 | vtime_account_system(current); | ||
| 770 | current->flags |= PF_VCPU; | ||
| 771 | } | ||
| 772 | |||
| 773 | static inline void __guest_exit(void) | ||
| 774 | { | ||
| 775 | /* | ||
| 776 | * This is running in ioctl context so we can avoid | ||
| 777 | * the call to vtime_account() with its unnecessary idle check. | ||
| 778 | */ | ||
| 779 | vtime_account_system(current); | ||
| 780 | current->flags &= ~PF_VCPU; | ||
| 781 | } | ||
| 782 | |||
| 783 | #ifdef CONFIG_CONTEXT_TRACKING | ||
| 784 | extern void guest_enter(void); | ||
| 785 | extern void guest_exit(void); | ||
| 786 | |||
| 787 | #else /* !CONFIG_CONTEXT_TRACKING */ | ||
| 788 | static inline void guest_enter(void) | ||
| 789 | { | ||
| 790 | __guest_enter(); | ||
| 791 | } | ||
| 792 | |||
| 793 | static inline void guest_exit(void) | ||
| 794 | { | ||
| 795 | __guest_exit(); | ||
| 796 | } | ||
| 797 | #endif /* !CONFIG_CONTEXT_TRACKING */ | ||
| 798 | |||
| 799 | static inline void kvm_guest_enter(void) | 764 | static inline void kvm_guest_enter(void) |
| 800 | { | 765 | { |
| 801 | unsigned long flags; | 766 | unsigned long flags; |
diff --git a/include/linux/list.h b/include/linux/list.h index 6a1f8df9144b..b83e5657365a 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
| @@ -362,6 +362,17 @@ static inline void list_splice_tail_init(struct list_head *list, | |||
| 362 | list_entry((ptr)->next, type, member) | 362 | list_entry((ptr)->next, type, member) |
| 363 | 363 | ||
| 364 | /** | 364 | /** |
| 365 | * list_first_entry_or_null - get the first element from a list | ||
| 366 | * @ptr: the list head to take the element from. | ||
| 367 | * @type: the type of the struct this is embedded in. | ||
| 368 | * @member: the name of the list_struct within the struct. | ||
| 369 | * | ||
| 370 | * Note that if the list is empty, it returns NULL. | ||
| 371 | */ | ||
| 372 | #define list_first_entry_or_null(ptr, type, member) \ | ||
| 373 | (!list_empty(ptr) ? list_first_entry(ptr, type, member) : NULL) | ||
| 374 | |||
| 375 | /** | ||
| 365 | * list_for_each - iterate over a list | 376 | * list_for_each - iterate over a list |
| 366 | * @pos: the &struct list_head to use as a loop cursor. | 377 | * @pos: the &struct list_head to use as a loop cursor. |
| 367 | * @head: the head for your list. | 378 | * @head: the head for your list. |
diff --git a/include/linux/math64.h b/include/linux/math64.h index b8ba85544721..2913b86eb12a 100644 --- a/include/linux/math64.h +++ b/include/linux/math64.h | |||
| @@ -6,7 +6,8 @@ | |||
| 6 | 6 | ||
| 7 | #if BITS_PER_LONG == 64 | 7 | #if BITS_PER_LONG == 64 |
| 8 | 8 | ||
| 9 | #define div64_long(x,y) div64_s64((x),(y)) | 9 | #define div64_long(x, y) div64_s64((x), (y)) |
| 10 | #define div64_ul(x, y) div64_u64((x), (y)) | ||
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | * div_u64_rem - unsigned 64bit divide with 32bit divisor with remainder | 13 | * div_u64_rem - unsigned 64bit divide with 32bit divisor with remainder |
| @@ -47,7 +48,8 @@ static inline s64 div64_s64(s64 dividend, s64 divisor) | |||
| 47 | 48 | ||
| 48 | #elif BITS_PER_LONG == 32 | 49 | #elif BITS_PER_LONG == 32 |
| 49 | 50 | ||
| 50 | #define div64_long(x,y) div_s64((x),(y)) | 51 | #define div64_long(x, y) div_s64((x), (y)) |
| 52 | #define div64_ul(x, y) div_u64((x), (y)) | ||
| 51 | 53 | ||
| 52 | #ifndef div_u64_rem | 54 | #ifndef div_u64_rem |
| 53 | static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) | 55 | static inline u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a94a5a0ab122..60584b185a0c 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -2733,6 +2733,17 @@ static inline netdev_features_t netdev_get_wanted_features( | |||
| 2733 | } | 2733 | } |
| 2734 | netdev_features_t netdev_increment_features(netdev_features_t all, | 2734 | netdev_features_t netdev_increment_features(netdev_features_t all, |
| 2735 | netdev_features_t one, netdev_features_t mask); | 2735 | netdev_features_t one, netdev_features_t mask); |
| 2736 | |||
| 2737 | /* Allow TSO being used on stacked device : | ||
| 2738 | * Performing the GSO segmentation before last device | ||
| 2739 | * is a performance improvement. | ||
| 2740 | */ | ||
| 2741 | static inline netdev_features_t netdev_add_tso_features(netdev_features_t features, | ||
| 2742 | netdev_features_t mask) | ||
| 2743 | { | ||
| 2744 | return netdev_increment_features(features, NETIF_F_ALL_TSO, mask); | ||
| 2745 | } | ||
| 2746 | |||
| 2736 | int __netdev_update_features(struct net_device *dev); | 2747 | int __netdev_update_features(struct net_device *dev); |
| 2737 | void netdev_update_features(struct net_device *dev); | 2748 | void netdev_update_features(struct net_device *dev); |
| 2738 | void netdev_change_features(struct net_device *dev); | 2749 | void netdev_change_features(struct net_device *dev); |
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h index 98ffb54988b6..2d4df6ce043e 100644 --- a/include/linux/netfilter_ipv6.h +++ b/include/linux/netfilter_ipv6.h | |||
| @@ -17,6 +17,22 @@ extern __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook, | |||
| 17 | 17 | ||
| 18 | extern int ipv6_netfilter_init(void); | 18 | extern int ipv6_netfilter_init(void); |
| 19 | extern void ipv6_netfilter_fini(void); | 19 | extern void ipv6_netfilter_fini(void); |
| 20 | |||
| 21 | /* | ||
| 22 | * Hook functions for ipv6 to allow xt_* modules to be built-in even | ||
| 23 | * if IPv6 is a module. | ||
| 24 | */ | ||
| 25 | struct nf_ipv6_ops { | ||
| 26 | int (*chk_addr)(struct net *net, const struct in6_addr *addr, | ||
| 27 | const struct net_device *dev, int strict); | ||
| 28 | }; | ||
| 29 | |||
| 30 | extern const struct nf_ipv6_ops __rcu *nf_ipv6_ops; | ||
| 31 | static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) | ||
| 32 | { | ||
| 33 | return rcu_dereference(nf_ipv6_ops); | ||
| 34 | } | ||
| 35 | |||
| 20 | #else /* CONFIG_NETFILTER */ | 36 | #else /* CONFIG_NETFILTER */ |
| 21 | static inline int ipv6_netfilter_init(void) { return 0; } | 37 | static inline int ipv6_netfilter_init(void) { return 0; } |
| 22 | static inline void ipv6_netfilter_fini(void) { return; } | 38 | static inline void ipv6_netfilter_fini(void) { return; } |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index f463a46424e2..c5b6dbf9c2fc 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
| @@ -389,8 +389,7 @@ struct perf_event { | |||
| 389 | /* mmap bits */ | 389 | /* mmap bits */ |
| 390 | struct mutex mmap_mutex; | 390 | struct mutex mmap_mutex; |
| 391 | atomic_t mmap_count; | 391 | atomic_t mmap_count; |
| 392 | int mmap_locked; | 392 | |
| 393 | struct user_struct *mmap_user; | ||
| 394 | struct ring_buffer *rb; | 393 | struct ring_buffer *rb; |
| 395 | struct list_head rb_entry; | 394 | struct list_head rb_entry; |
| 396 | 395 | ||
diff --git a/include/linux/platform_data/clk-lpss.h b/include/linux/platform_data/clk-lpss.h index 528e73ce46d2..23901992b9dd 100644 --- a/include/linux/platform_data/clk-lpss.h +++ b/include/linux/platform_data/clk-lpss.h | |||
| @@ -13,6 +13,11 @@ | |||
| 13 | #ifndef __CLK_LPSS_H | 13 | #ifndef __CLK_LPSS_H |
| 14 | #define __CLK_LPSS_H | 14 | #define __CLK_LPSS_H |
| 15 | 15 | ||
| 16 | struct lpss_clk_data { | ||
| 17 | const char *name; | ||
| 18 | struct clk *clk; | ||
| 19 | }; | ||
| 20 | |||
| 16 | extern int lpt_clk_init(void); | 21 | extern int lpt_clk_init(void); |
| 17 | 22 | ||
| 18 | #endif /* __CLK_LPSS_H */ | 23 | #endif /* __CLK_LPSS_H */ |
diff --git a/include/linux/platform_data/serial-omap.h b/include/linux/platform_data/serial-omap.h index ff9b0aab5281..c860c1b314c0 100644 --- a/include/linux/platform_data/serial-omap.h +++ b/include/linux/platform_data/serial-omap.h | |||
| @@ -43,8 +43,6 @@ struct omap_uart_port_info { | |||
| 43 | int DTR_present; | 43 | int DTR_present; |
| 44 | 44 | ||
| 45 | int (*get_context_loss_count)(struct device *); | 45 | int (*get_context_loss_count)(struct device *); |
| 46 | void (*set_forceidle)(struct device *); | ||
| 47 | void (*set_noidle)(struct device *); | ||
| 48 | void (*enable_wakeup)(struct device *, bool); | 46 | void (*enable_wakeup)(struct device *, bool); |
| 49 | }; | 47 | }; |
| 50 | 48 | ||
diff --git a/include/linux/preempt.h b/include/linux/preempt.h index 87a03c746f17..f5d4723cdb3d 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h | |||
| @@ -33,9 +33,25 @@ do { \ | |||
| 33 | preempt_schedule(); \ | 33 | preempt_schedule(); \ |
| 34 | } while (0) | 34 | } while (0) |
| 35 | 35 | ||
| 36 | #ifdef CONFIG_CONTEXT_TRACKING | ||
| 37 | |||
| 38 | void preempt_schedule_context(void); | ||
| 39 | |||
| 40 | #define preempt_check_resched_context() \ | ||
| 41 | do { \ | ||
| 42 | if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \ | ||
| 43 | preempt_schedule_context(); \ | ||
| 44 | } while (0) | ||
| 45 | #else | ||
| 46 | |||
| 47 | #define preempt_check_resched_context() preempt_check_resched() | ||
| 48 | |||
| 49 | #endif /* CONFIG_CONTEXT_TRACKING */ | ||
| 50 | |||
| 36 | #else /* !CONFIG_PREEMPT */ | 51 | #else /* !CONFIG_PREEMPT */ |
| 37 | 52 | ||
| 38 | #define preempt_check_resched() do { } while (0) | 53 | #define preempt_check_resched() do { } while (0) |
| 54 | #define preempt_check_resched_context() do { } while (0) | ||
| 39 | 55 | ||
| 40 | #endif /* CONFIG_PREEMPT */ | 56 | #endif /* CONFIG_PREEMPT */ |
| 41 | 57 | ||
| @@ -88,7 +104,7 @@ do { \ | |||
| 88 | do { \ | 104 | do { \ |
| 89 | preempt_enable_no_resched_notrace(); \ | 105 | preempt_enable_no_resched_notrace(); \ |
| 90 | barrier(); \ | 106 | barrier(); \ |
| 91 | preempt_check_resched(); \ | 107 | preempt_check_resched_context(); \ |
| 92 | } while (0) | 108 | } while (0) |
| 93 | 109 | ||
| 94 | #else /* !CONFIG_PREEMPT_COUNT */ | 110 | #else /* !CONFIG_PREEMPT_COUNT */ |
diff --git a/include/linux/rculist.h b/include/linux/rculist.h index 8089e35d47ac..f4b1001a4676 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h | |||
| @@ -461,6 +461,26 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev, | |||
| 461 | &(pos)->member)), typeof(*(pos)), member)) | 461 | &(pos)->member)), typeof(*(pos)), member)) |
| 462 | 462 | ||
| 463 | /** | 463 | /** |
| 464 | * hlist_for_each_entry_rcu_notrace - iterate over rcu list of given type (for tracing) | ||
| 465 | * @pos: the type * to use as a loop cursor. | ||
| 466 | * @head: the head for your list. | ||
| 467 | * @member: the name of the hlist_node within the struct. | ||
| 468 | * | ||
| 469 | * This list-traversal primitive may safely run concurrently with | ||
| 470 | * the _rcu list-mutation primitives such as hlist_add_head_rcu() | ||
| 471 | * as long as the traversal is guarded by rcu_read_lock(). | ||
| 472 | * | ||
| 473 | * This is the same as hlist_for_each_entry_rcu() except that it does | ||
| 474 | * not do any RCU debugging or tracing. | ||
| 475 | */ | ||
| 476 | #define hlist_for_each_entry_rcu_notrace(pos, head, member) \ | ||
| 477 | for (pos = hlist_entry_safe (rcu_dereference_raw_notrace(hlist_first_rcu(head)),\ | ||
| 478 | typeof(*(pos)), member); \ | ||
| 479 | pos; \ | ||
| 480 | pos = hlist_entry_safe(rcu_dereference_raw_notrace(hlist_next_rcu(\ | ||
| 481 | &(pos)->member)), typeof(*(pos)), member)) | ||
| 482 | |||
| 483 | /** | ||
| 464 | * hlist_for_each_entry_rcu_bh - iterate over rcu list of given type | 484 | * hlist_for_each_entry_rcu_bh - iterate over rcu list of given type |
| 465 | * @pos: the type * to use as a loop cursor. | 485 | * @pos: the type * to use as a loop cursor. |
| 466 | * @head: the head for your list. | 486 | * @head: the head for your list. |
diff --git a/include/linux/rculist_nulls.h b/include/linux/rculist_nulls.h index 2ae13714828b..1c33dd7da4a7 100644 --- a/include/linux/rculist_nulls.h +++ b/include/linux/rculist_nulls.h | |||
| @@ -105,9 +105,14 @@ static inline void hlist_nulls_add_head_rcu(struct hlist_nulls_node *n, | |||
| 105 | * @head: the head for your list. | 105 | * @head: the head for your list. |
| 106 | * @member: the name of the hlist_nulls_node within the struct. | 106 | * @member: the name of the hlist_nulls_node within the struct. |
| 107 | * | 107 | * |
| 108 | * The barrier() is needed to make sure compiler doesn't cache first element [1], | ||
| 109 | * as this loop can be restarted [2] | ||
| 110 | * [1] Documentation/atomic_ops.txt around line 114 | ||
| 111 | * [2] Documentation/RCU/rculist_nulls.txt around line 146 | ||
| 108 | */ | 112 | */ |
| 109 | #define hlist_nulls_for_each_entry_rcu(tpos, pos, head, member) \ | 113 | #define hlist_nulls_for_each_entry_rcu(tpos, pos, head, member) \ |
| 110 | for (pos = rcu_dereference_raw(hlist_nulls_first_rcu(head)); \ | 114 | for (({barrier();}), \ |
| 115 | pos = rcu_dereference_raw(hlist_nulls_first_rcu(head)); \ | ||
| 111 | (!is_a_nulls(pos)) && \ | 116 | (!is_a_nulls(pos)) && \ |
| 112 | ({ tpos = hlist_nulls_entry(pos, typeof(*tpos), member); 1; }); \ | 117 | ({ tpos = hlist_nulls_entry(pos, typeof(*tpos), member); 1; }); \ |
| 113 | pos = rcu_dereference_raw(hlist_nulls_next_rcu(pos))) | 118 | pos = rcu_dereference_raw(hlist_nulls_next_rcu(pos))) |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 4ccd68e49b00..ddcc7826d907 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
| @@ -640,6 +640,15 @@ static inline void rcu_preempt_sleep_check(void) | |||
| 640 | 640 | ||
| 641 | #define rcu_dereference_raw(p) rcu_dereference_check(p, 1) /*@@@ needed? @@@*/ | 641 | #define rcu_dereference_raw(p) rcu_dereference_check(p, 1) /*@@@ needed? @@@*/ |
| 642 | 642 | ||
| 643 | /* | ||
| 644 | * The tracing infrastructure traces RCU (we want that), but unfortunately | ||
| 645 | * some of the RCU checks causes tracing to lock up the system. | ||
| 646 | * | ||
| 647 | * The tracing version of rcu_dereference_raw() must not call | ||
| 648 | * rcu_read_lock_held(). | ||
| 649 | */ | ||
| 650 | #define rcu_dereference_raw_notrace(p) __rcu_dereference_check((p), 1, __rcu) | ||
| 651 | |||
| 643 | /** | 652 | /** |
| 644 | * rcu_access_index() - fetch RCU index with no dereferencing | 653 | * rcu_access_index() - fetch RCU index with no dereferencing |
| 645 | * @p: The index to read | 654 | * @p: The index to read |
diff --git a/include/linux/rio.h b/include/linux/rio.h index a3e784278667..18e099342e6f 100644 --- a/include/linux/rio.h +++ b/include/linux/rio.h | |||
| @@ -83,7 +83,6 @@ | |||
| 83 | 83 | ||
| 84 | extern struct bus_type rio_bus_type; | 84 | extern struct bus_type rio_bus_type; |
| 85 | extern struct device rio_bus; | 85 | extern struct device rio_bus; |
| 86 | extern struct list_head rio_devices; /* list of all devices */ | ||
| 87 | 86 | ||
| 88 | struct rio_mport; | 87 | struct rio_mport; |
| 89 | struct rio_dev; | 88 | struct rio_dev; |
| @@ -237,6 +236,7 @@ enum rio_phy_type { | |||
| 237 | * @name: Port name string | 236 | * @name: Port name string |
| 238 | * @priv: Master port private data | 237 | * @priv: Master port private data |
| 239 | * @dma: DMA device associated with mport | 238 | * @dma: DMA device associated with mport |
| 239 | * @nscan: RapidIO network enumeration/discovery operations | ||
| 240 | */ | 240 | */ |
| 241 | struct rio_mport { | 241 | struct rio_mport { |
| 242 | struct list_head dbells; /* list of doorbell events */ | 242 | struct list_head dbells; /* list of doorbell events */ |
| @@ -262,8 +262,14 @@ struct rio_mport { | |||
| 262 | #ifdef CONFIG_RAPIDIO_DMA_ENGINE | 262 | #ifdef CONFIG_RAPIDIO_DMA_ENGINE |
| 263 | struct dma_device dma; | 263 | struct dma_device dma; |
| 264 | #endif | 264 | #endif |
| 265 | struct rio_scan *nscan; | ||
| 265 | }; | 266 | }; |
| 266 | 267 | ||
| 268 | /* | ||
| 269 | * Enumeration/discovery control flags | ||
| 270 | */ | ||
| 271 | #define RIO_SCAN_ENUM_NO_WAIT 0x00000001 /* Do not wait for enum completed */ | ||
| 272 | |||
| 267 | struct rio_id_table { | 273 | struct rio_id_table { |
| 268 | u16 start; /* logical minimal id */ | 274 | u16 start; /* logical minimal id */ |
| 269 | u32 max; /* max number of IDs in table */ | 275 | u32 max; /* max number of IDs in table */ |
| @@ -460,6 +466,16 @@ static inline struct rio_mport *dma_to_mport(struct dma_device *ddev) | |||
| 460 | } | 466 | } |
| 461 | #endif /* CONFIG_RAPIDIO_DMA_ENGINE */ | 467 | #endif /* CONFIG_RAPIDIO_DMA_ENGINE */ |
| 462 | 468 | ||
| 469 | /** | ||
| 470 | * struct rio_scan - RIO enumeration and discovery operations | ||
| 471 | * @enumerate: Callback to perform RapidIO fabric enumeration. | ||
| 472 | * @discover: Callback to perform RapidIO fabric discovery. | ||
| 473 | */ | ||
| 474 | struct rio_scan { | ||
| 475 | int (*enumerate)(struct rio_mport *mport, u32 flags); | ||
| 476 | int (*discover)(struct rio_mport *mport, u32 flags); | ||
| 477 | }; | ||
| 478 | |||
| 463 | /* Architecture and hardware-specific functions */ | 479 | /* Architecture and hardware-specific functions */ |
| 464 | extern int rio_register_mport(struct rio_mport *); | 480 | extern int rio_register_mport(struct rio_mport *); |
| 465 | extern int rio_open_inb_mbox(struct rio_mport *, void *, int, int); | 481 | extern int rio_open_inb_mbox(struct rio_mport *, void *, int, int); |
diff --git a/include/linux/rio_drv.h b/include/linux/rio_drv.h index b75c05920ab5..5059994fe297 100644 --- a/include/linux/rio_drv.h +++ b/include/linux/rio_drv.h | |||
| @@ -433,5 +433,6 @@ extern u16 rio_local_get_device_id(struct rio_mport *port); | |||
| 433 | extern struct rio_dev *rio_get_device(u16 vid, u16 did, struct rio_dev *from); | 433 | extern struct rio_dev *rio_get_device(u16 vid, u16 did, struct rio_dev *from); |
| 434 | extern struct rio_dev *rio_get_asm(u16 vid, u16 did, u16 asm_vid, u16 asm_did, | 434 | extern struct rio_dev *rio_get_asm(u16 vid, u16 did, u16 asm_vid, u16 asm_did, |
| 435 | struct rio_dev *from); | 435 | struct rio_dev *from); |
| 436 | extern int rio_init_mports(void); | ||
| 436 | 437 | ||
| 437 | #endif /* LINUX_RIO_DRV_H */ | 438 | #endif /* LINUX_RIO_DRV_H */ |
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 5951e3f38878..26806775b11b 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h | |||
| @@ -111,6 +111,9 @@ static inline struct page *sg_page(struct scatterlist *sg) | |||
| 111 | static inline void sg_set_buf(struct scatterlist *sg, const void *buf, | 111 | static inline void sg_set_buf(struct scatterlist *sg, const void *buf, |
| 112 | unsigned int buflen) | 112 | unsigned int buflen) |
| 113 | { | 113 | { |
| 114 | #ifdef CONFIG_DEBUG_SG | ||
| 115 | BUG_ON(!virt_addr_valid(buf)); | ||
| 116 | #endif | ||
| 114 | sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf)); | 117 | sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf)); |
| 115 | } | 118 | } |
| 116 | 119 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 2e0ced1af3b1..9c676eae3968 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -2852,6 +2852,21 @@ static inline int skb_tnl_header_len(const struct sk_buff *inner_skb) | |||
| 2852 | SKB_GSO_CB(inner_skb)->mac_offset; | 2852 | SKB_GSO_CB(inner_skb)->mac_offset; |
| 2853 | } | 2853 | } |
| 2854 | 2854 | ||
| 2855 | static inline int gso_pskb_expand_head(struct sk_buff *skb, int extra) | ||
| 2856 | { | ||
| 2857 | int new_headroom, headroom; | ||
| 2858 | int ret; | ||
| 2859 | |||
| 2860 | headroom = skb_headroom(skb); | ||
| 2861 | ret = pskb_expand_head(skb, extra, 0, GFP_ATOMIC); | ||
| 2862 | if (ret) | ||
| 2863 | return ret; | ||
| 2864 | |||
| 2865 | new_headroom = skb_headroom(skb); | ||
| 2866 | SKB_GSO_CB(skb)->mac_offset += (new_headroom - headroom); | ||
| 2867 | return 0; | ||
| 2868 | } | ||
| 2869 | |||
| 2855 | static inline bool skb_is_gso(const struct sk_buff *skb) | 2870 | static inline bool skb_is_gso(const struct sk_buff *skb) |
| 2856 | { | 2871 | { |
| 2857 | return skb_shinfo(skb)->gso_size; | 2872 | return skb_shinfo(skb)->gso_size; |
diff --git a/include/linux/smp.h b/include/linux/smp.h index e6564c1dc552..c8488763277f 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/list.h> | 11 | #include <linux/list.h> |
| 12 | #include <linux/cpumask.h> | 12 | #include <linux/cpumask.h> |
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/irqflags.h> | ||
| 14 | 15 | ||
| 15 | extern void cpu_idle(void); | 16 | extern void cpu_idle(void); |
| 16 | 17 | ||
| @@ -139,13 +140,17 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info) | |||
| 139 | } | 140 | } |
| 140 | #define smp_call_function(func, info, wait) \ | 141 | #define smp_call_function(func, info, wait) \ |
| 141 | (up_smp_call_function(func, info)) | 142 | (up_smp_call_function(func, info)) |
| 142 | #define on_each_cpu(func,info,wait) \ | 143 | |
| 143 | ({ \ | 144 | static inline int on_each_cpu(smp_call_func_t func, void *info, int wait) |
| 144 | local_irq_disable(); \ | 145 | { |
| 145 | func(info); \ | 146 | unsigned long flags; |
| 146 | local_irq_enable(); \ | 147 | |
| 147 | 0; \ | 148 | local_irq_save(flags); |
| 148 | }) | 149 | func(info); |
| 150 | local_irq_restore(flags); | ||
| 151 | return 0; | ||
| 152 | } | ||
| 153 | |||
| 149 | /* | 154 | /* |
| 150 | * Note we still need to test the mask even for UP | 155 | * Note we still need to test the mask even for UP |
| 151 | * because we actually can get an empty mask from | 156 | * because we actually can get an empty mask from |
diff --git a/include/linux/socket.h b/include/linux/socket.h index 33bf2dfab19d..b10ce4b341ea 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
| @@ -320,6 +320,9 @@ extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); | |||
| 320 | 320 | ||
| 321 | struct timespec; | 321 | struct timespec; |
| 322 | 322 | ||
| 323 | /* The __sys_...msg variants allow MSG_CMSG_COMPAT */ | ||
| 324 | extern long __sys_recvmsg(int fd, struct msghdr __user *msg, unsigned flags); | ||
| 325 | extern long __sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags); | ||
| 323 | extern int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen, | 326 | extern int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen, |
| 324 | unsigned int flags, struct timespec *timeout); | 327 | unsigned int flags, struct timespec *timeout); |
| 325 | extern int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg, | 328 | extern int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg, |
diff --git a/include/linux/splice.h b/include/linux/splice.h index 09a545a7dfa3..74575cbf2d6f 100644 --- a/include/linux/splice.h +++ b/include/linux/splice.h | |||
| @@ -35,6 +35,7 @@ struct splice_desc { | |||
| 35 | void *data; /* cookie */ | 35 | void *data; /* cookie */ |
| 36 | } u; | 36 | } u; |
| 37 | loff_t pos; /* file position */ | 37 | loff_t pos; /* file position */ |
| 38 | loff_t *opos; /* sendfile: output position */ | ||
| 38 | size_t num_spliced; /* number of bytes already spliced */ | 39 | size_t num_spliced; /* number of bytes already spliced */ |
| 39 | bool need_wakeup; /* need to wake up writer */ | 40 | bool need_wakeup; /* need to wake up writer */ |
| 40 | }; | 41 | }; |
diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 47ead515c811..c5fd30d2a415 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h | |||
| @@ -137,6 +137,7 @@ static inline void make_migration_entry_read(swp_entry_t *entry) | |||
| 137 | 137 | ||
| 138 | extern void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, | 138 | extern void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, |
| 139 | unsigned long address); | 139 | unsigned long address); |
| 140 | extern void migration_entry_wait_huge(struct mm_struct *mm, pte_t *pte); | ||
| 140 | #else | 141 | #else |
| 141 | 142 | ||
| 142 | #define make_migration_entry(page, write) swp_entry(0, 0) | 143 | #define make_migration_entry(page, write) swp_entry(0, 0) |
| @@ -148,6 +149,8 @@ static inline int is_migration_entry(swp_entry_t swp) | |||
| 148 | static inline void make_migration_entry_read(swp_entry_t *entryp) { } | 149 | static inline void make_migration_entry_read(swp_entry_t *entryp) { } |
| 149 | static inline void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, | 150 | static inline void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, |
| 150 | unsigned long address) { } | 151 | unsigned long address) { } |
| 152 | static inline void migration_entry_wait_huge(struct mm_struct *mm, | ||
| 153 | pte_t *pte) { } | ||
| 151 | static inline int is_write_migration_entry(swp_entry_t entry) | 154 | static inline int is_write_migration_entry(swp_entry_t entry) |
| 152 | { | 155 | { |
| 153 | return 0; | 156 | return 0; |
diff --git a/include/linux/syslog.h b/include/linux/syslog.h index 38911391a139..98a3153c0f96 100644 --- a/include/linux/syslog.h +++ b/include/linux/syslog.h | |||
| @@ -44,8 +44,8 @@ | |||
| 44 | /* Return size of the log buffer */ | 44 | /* Return size of the log buffer */ |
| 45 | #define SYSLOG_ACTION_SIZE_BUFFER 10 | 45 | #define SYSLOG_ACTION_SIZE_BUFFER 10 |
| 46 | 46 | ||
| 47 | #define SYSLOG_FROM_CALL 0 | 47 | #define SYSLOG_FROM_READER 0 |
| 48 | #define SYSLOG_FROM_FILE 1 | 48 | #define SYSLOG_FROM_PROC 1 |
| 49 | 49 | ||
| 50 | int do_syslog(int type, char __user *buf, int count, bool from_file); | 50 | int do_syslog(int type, char __user *buf, int count, bool from_file); |
| 51 | 51 | ||
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 2f322c38bd4d..f8e084d0fc77 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h | |||
| @@ -145,8 +145,8 @@ static inline void tracepoint_synchronize_unregister(void) | |||
| 145 | TP_PROTO(data_proto), \ | 145 | TP_PROTO(data_proto), \ |
| 146 | TP_ARGS(data_args), \ | 146 | TP_ARGS(data_args), \ |
| 147 | TP_CONDITION(cond), \ | 147 | TP_CONDITION(cond), \ |
| 148 | rcu_idle_exit(), \ | 148 | rcu_irq_enter(), \ |
| 149 | rcu_idle_enter()); \ | 149 | rcu_irq_exit()); \ |
| 150 | } | 150 | } |
| 151 | #else | 151 | #else |
| 152 | #define __DECLARE_TRACE_RCU(name, proto, args, cond, data_proto, data_args) | 152 | #define __DECLARE_TRACE_RCU(name, proto, args, cond, data_proto, data_args) |
diff --git a/include/linux/vtime.h b/include/linux/vtime.h index 71a5782d8c59..b1dd2db80076 100644 --- a/include/linux/vtime.h +++ b/include/linux/vtime.h | |||
| @@ -34,7 +34,7 @@ static inline void vtime_user_exit(struct task_struct *tsk) | |||
| 34 | } | 34 | } |
| 35 | extern void vtime_guest_enter(struct task_struct *tsk); | 35 | extern void vtime_guest_enter(struct task_struct *tsk); |
| 36 | extern void vtime_guest_exit(struct task_struct *tsk); | 36 | extern void vtime_guest_exit(struct task_struct *tsk); |
| 37 | extern void vtime_init_idle(struct task_struct *tsk); | 37 | extern void vtime_init_idle(struct task_struct *tsk, int cpu); |
| 38 | #else | 38 | #else |
| 39 | static inline void vtime_account_irq_exit(struct task_struct *tsk) | 39 | static inline void vtime_account_irq_exit(struct task_struct *tsk) |
| 40 | { | 40 | { |
| @@ -45,7 +45,7 @@ static inline void vtime_user_enter(struct task_struct *tsk) { } | |||
| 45 | static inline void vtime_user_exit(struct task_struct *tsk) { } | 45 | static inline void vtime_user_exit(struct task_struct *tsk) { } |
| 46 | static inline void vtime_guest_enter(struct task_struct *tsk) { } | 46 | static inline void vtime_guest_enter(struct task_struct *tsk) { } |
| 47 | static inline void vtime_guest_exit(struct task_struct *tsk) { } | 47 | static inline void vtime_guest_exit(struct task_struct *tsk) { } |
| 48 | static inline void vtime_init_idle(struct task_struct *tsk) { } | 48 | static inline void vtime_init_idle(struct task_struct *tsk, int cpu) { } |
| 49 | #endif | 49 | #endif |
| 50 | 50 | ||
| 51 | #ifdef CONFIG_IRQ_TIME_ACCOUNTING | 51 | #ifdef CONFIG_IRQ_TIME_ACCOUNTING |
diff --git a/include/linux/wait.h b/include/linux/wait.h index ac38be2692d8..1133695eb067 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -217,6 +217,8 @@ do { \ | |||
| 217 | if (!ret) \ | 217 | if (!ret) \ |
| 218 | break; \ | 218 | break; \ |
| 219 | } \ | 219 | } \ |
| 220 | if (!ret && (condition)) \ | ||
| 221 | ret = 1; \ | ||
| 220 | finish_wait(&wq, &__wait); \ | 222 | finish_wait(&wq, &__wait); \ |
| 221 | } while (0) | 223 | } while (0) |
| 222 | 224 | ||
| @@ -233,8 +235,9 @@ do { \ | |||
| 233 | * wake_up() has to be called after changing any variable that could | 235 | * wake_up() has to be called after changing any variable that could |
| 234 | * change the result of the wait condition. | 236 | * change the result of the wait condition. |
| 235 | * | 237 | * |
| 236 | * The function returns 0 if the @timeout elapsed, and the remaining | 238 | * The function returns 0 if the @timeout elapsed, or the remaining |
| 237 | * jiffies if the condition evaluated to true before the timeout elapsed. | 239 | * jiffies (at least 1) if the @condition evaluated to %true before |
| 240 | * the @timeout elapsed. | ||
| 238 | */ | 241 | */ |
| 239 | #define wait_event_timeout(wq, condition, timeout) \ | 242 | #define wait_event_timeout(wq, condition, timeout) \ |
| 240 | ({ \ | 243 | ({ \ |
| @@ -302,6 +305,8 @@ do { \ | |||
| 302 | ret = -ERESTARTSYS; \ | 305 | ret = -ERESTARTSYS; \ |
| 303 | break; \ | 306 | break; \ |
| 304 | } \ | 307 | } \ |
| 308 | if (!ret && (condition)) \ | ||
| 309 | ret = 1; \ | ||
| 305 | finish_wait(&wq, &__wait); \ | 310 | finish_wait(&wq, &__wait); \ |
| 306 | } while (0) | 311 | } while (0) |
| 307 | 312 | ||
| @@ -318,9 +323,10 @@ do { \ | |||
| 318 | * wake_up() has to be called after changing any variable that could | 323 | * wake_up() has to be called after changing any variable that could |
| 319 | * change the result of the wait condition. | 324 | * change the result of the wait condition. |
| 320 | * | 325 | * |
| 321 | * The function returns 0 if the @timeout elapsed, -ERESTARTSYS if it | 326 | * Returns: |
| 322 | * was interrupted by a signal, and the remaining jiffies otherwise | 327 | * 0 if the @timeout elapsed, -%ERESTARTSYS if it was interrupted by |
| 323 | * if the condition evaluated to true before the timeout elapsed. | 328 | * a signal, or the remaining jiffies (at least 1) if the @condition |
| 329 | * evaluated to %true before the @timeout elapsed. | ||
| 324 | */ | 330 | */ |
| 325 | #define wait_event_interruptible_timeout(wq, condition, timeout) \ | 331 | #define wait_event_interruptible_timeout(wq, condition, timeout) \ |
| 326 | ({ \ | 332 | ({ \ |
