aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2011-04-18 08:53:18 -0400
committerIngo Molnar <mingo@elte.hu>2011-04-18 08:53:33 -0400
commit6ddafdaab3f809b110ada253d2f2d4910ebd3ac5 (patch)
tree366bb7513511a05b6e11ab89bfe3b2dbd1d62a03 /include/linux
parent3905c54f2bd2c6f937f87307987ca072eabc3e7b (diff)
parentbd8e7dded88a3e1c085c333f19ff31387616f71a (diff)
Merge branch 'sched/locking' into sched/core
Merge reason: the rq locking changes are stable, propagate them into the .40 queue. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/can/platform/mcp251x.h2
-rw-r--r--include/linux/mfd/core.h13
-rw-r--r--include/linux/mutex.h2
-rw-r--r--include/linux/netfilter.h3
-rw-r--r--include/linux/netfilter/ipset/ip_set.h2
-rw-r--r--include/linux/netfilter/ipset/ip_set_ahash.h3
-rw-r--r--include/linux/platform_device.h5
-rw-r--r--include/linux/sched.h24
-rw-r--r--include/linux/suspend.h11
9 files changed, 41 insertions, 24 deletions
diff --git a/include/linux/can/platform/mcp251x.h b/include/linux/can/platform/mcp251x.h
index 8e20540043f5..089fe43211a4 100644
--- a/include/linux/can/platform/mcp251x.h
+++ b/include/linux/can/platform/mcp251x.h
@@ -12,6 +12,7 @@
12/** 12/**
13 * struct mcp251x_platform_data - MCP251X SPI CAN controller platform data 13 * struct mcp251x_platform_data - MCP251X SPI CAN controller platform data
14 * @oscillator_frequency: - oscillator frequency in Hz 14 * @oscillator_frequency: - oscillator frequency in Hz
15 * @irq_flags: - IRQF configuration flags
15 * @board_specific_setup: - called before probing the chip (power,reset) 16 * @board_specific_setup: - called before probing the chip (power,reset)
16 * @transceiver_enable: - called to power on/off the transceiver 17 * @transceiver_enable: - called to power on/off the transceiver
17 * @power_enable: - called to power on/off the mcp *and* the 18 * @power_enable: - called to power on/off the mcp *and* the
@@ -24,6 +25,7 @@
24 25
25struct mcp251x_platform_data { 26struct mcp251x_platform_data {
26 unsigned long oscillator_frequency; 27 unsigned long oscillator_frequency;
28 unsigned long irq_flags;
27 int (*board_specific_setup)(struct spi_device *spi); 29 int (*board_specific_setup)(struct spi_device *spi);
28 int (*transceiver_enable)(int enable); 30 int (*transceiver_enable)(int enable);
29 int (*power_enable) (int enable); 31 int (*power_enable) (int enable);
diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h
index ad1b19aa6508..aef23309a742 100644
--- a/include/linux/mfd/core.h
+++ b/include/linux/mfd/core.h
@@ -86,16 +86,25 @@ extern int mfd_clone_cell(const char *cell, const char **clones,
86 */ 86 */
87static inline const struct mfd_cell *mfd_get_cell(struct platform_device *pdev) 87static inline const struct mfd_cell *mfd_get_cell(struct platform_device *pdev)
88{ 88{
89 return pdev->dev.platform_data; 89 return pdev->mfd_cell;
90} 90}
91 91
92/* 92/*
93 * Given a platform device that's been created by mfd_add_devices(), fetch 93 * Given a platform device that's been created by mfd_add_devices(), fetch
94 * the .mfd_data entry from the mfd_cell that created it. 94 * the .mfd_data entry from the mfd_cell that created it.
95 * Otherwise just return the platform_data pointer.
96 * This maintains compatibility with platform drivers whose devices aren't
97 * created by the mfd layer, and expect platform_data to contain what would've
98 * otherwise been in mfd_data.
95 */ 99 */
96static inline void *mfd_get_data(struct platform_device *pdev) 100static inline void *mfd_get_data(struct platform_device *pdev)
97{ 101{
98 return mfd_get_cell(pdev)->mfd_data; 102 const struct mfd_cell *cell = mfd_get_cell(pdev);
103
104 if (cell)
105 return cell->mfd_data;
106 else
107 return pdev->dev.platform_data;
99} 108}
100 109
101extern int mfd_add_devices(struct device *parent, int id, 110extern int mfd_add_devices(struct device *parent, int id,
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index 94b48bd40dd7..c75471db576e 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -51,7 +51,7 @@ struct mutex {
51 spinlock_t wait_lock; 51 spinlock_t wait_lock;
52 struct list_head wait_list; 52 struct list_head wait_list;
53#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP) 53#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP)
54 struct thread_info *owner; 54 struct task_struct *owner;
55#endif 55#endif
56#ifdef CONFIG_DEBUG_MUTEXES 56#ifdef CONFIG_DEBUG_MUTEXES
57 const char *name; 57 const char *name;
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index eeec00abb664..7fa95df60146 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -270,7 +270,8 @@ struct nf_afinfo {
270 unsigned int dataoff, 270 unsigned int dataoff,
271 unsigned int len, 271 unsigned int len,
272 u_int8_t protocol); 272 u_int8_t protocol);
273 int (*route)(struct dst_entry **dst, struct flowi *fl); 273 int (*route)(struct net *net, struct dst_entry **dst,
274 struct flowi *fl, bool strict);
274 void (*saveroute)(const struct sk_buff *skb, 275 void (*saveroute)(const struct sk_buff *skb,
275 struct nf_queue_entry *entry); 276 struct nf_queue_entry *entry);
276 int (*reroute)(struct sk_buff *skb, 277 int (*reroute)(struct sk_buff *skb,
diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h
index ec333d83f3b4..5a262e3ae715 100644
--- a/include/linux/netfilter/ipset/ip_set.h
+++ b/include/linux/netfilter/ipset/ip_set.h
@@ -293,7 +293,7 @@ struct ip_set {
293 /* Lock protecting the set data */ 293 /* Lock protecting the set data */
294 rwlock_t lock; 294 rwlock_t lock;
295 /* References to the set */ 295 /* References to the set */
296 atomic_t ref; 296 u32 ref;
297 /* The core set type */ 297 /* The core set type */
298 struct ip_set_type *type; 298 struct ip_set_type *type;
299 /* The type variant doing the real job */ 299 /* The type variant doing the real job */
diff --git a/include/linux/netfilter/ipset/ip_set_ahash.h b/include/linux/netfilter/ipset/ip_set_ahash.h
index ec9d9bea1e37..a0196ac79051 100644
--- a/include/linux/netfilter/ipset/ip_set_ahash.h
+++ b/include/linux/netfilter/ipset/ip_set_ahash.h
@@ -515,8 +515,7 @@ type_pf_head(struct ip_set *set, struct sk_buff *skb)
515 if (h->netmask != HOST_MASK) 515 if (h->netmask != HOST_MASK)
516 NLA_PUT_U8(skb, IPSET_ATTR_NETMASK, h->netmask); 516 NLA_PUT_U8(skb, IPSET_ATTR_NETMASK, h->netmask);
517#endif 517#endif
518 NLA_PUT_NET32(skb, IPSET_ATTR_REFERENCES, 518 NLA_PUT_NET32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref - 1));
519 htonl(atomic_read(&set->ref) - 1));
520 NLA_PUT_NET32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)); 519 NLA_PUT_NET32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize));
521 if (with_timeout(h->timeout)) 520 if (with_timeout(h->timeout))
522 NLA_PUT_NET32(skb, IPSET_ATTR_TIMEOUT, htonl(h->timeout)); 521 NLA_PUT_NET32(skb, IPSET_ATTR_TIMEOUT, htonl(h->timeout));
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index d96db9825708..744942c95fec 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -14,6 +14,8 @@
14#include <linux/device.h> 14#include <linux/device.h>
15#include <linux/mod_devicetable.h> 15#include <linux/mod_devicetable.h>
16 16
17struct mfd_cell;
18
17struct platform_device { 19struct platform_device {
18 const char * name; 20 const char * name;
19 int id; 21 int id;
@@ -23,6 +25,9 @@ struct platform_device {
23 25
24 const struct platform_device_id *id_entry; 26 const struct platform_device_id *id_entry;
25 27
28 /* MFD cell pointer */
29 struct mfd_cell *mfd_cell;
30
26 /* arch specific additions */ 31 /* arch specific additions */
27 struct pdev_archdata archdata; 32 struct pdev_archdata archdata;
28}; 33};
diff --git a/include/linux/sched.h b/include/linux/sched.h
index e43e5b0ab0b5..d9ca3aa511ff 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -360,7 +360,7 @@ extern signed long schedule_timeout_interruptible(signed long timeout);
360extern signed long schedule_timeout_killable(signed long timeout); 360extern signed long schedule_timeout_killable(signed long timeout);
361extern signed long schedule_timeout_uninterruptible(signed long timeout); 361extern signed long schedule_timeout_uninterruptible(signed long timeout);
362asmlinkage void schedule(void); 362asmlinkage void schedule(void);
363extern int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner); 363extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner);
364 364
365struct nsproxy; 365struct nsproxy;
366struct user_namespace; 366struct user_namespace;
@@ -1038,8 +1038,12 @@ struct sched_domain;
1038#define WF_FORK 0x02 /* child wakeup after fork */ 1038#define WF_FORK 0x02 /* child wakeup after fork */
1039 1039
1040#define ENQUEUE_WAKEUP 1 1040#define ENQUEUE_WAKEUP 1
1041#define ENQUEUE_WAKING 2 1041#define ENQUEUE_HEAD 2
1042#define ENQUEUE_HEAD 4 1042#ifdef CONFIG_SMP
1043#define ENQUEUE_WAKING 4 /* sched_class::task_waking was called */
1044#else
1045#define ENQUEUE_WAKING 0
1046#endif
1043 1047
1044#define DEQUEUE_SLEEP 1 1048#define DEQUEUE_SLEEP 1
1045 1049
@@ -1057,12 +1061,11 @@ struct sched_class {
1057 void (*put_prev_task) (struct rq *rq, struct task_struct *p); 1061 void (*put_prev_task) (struct rq *rq, struct task_struct *p);
1058 1062
1059#ifdef CONFIG_SMP 1063#ifdef CONFIG_SMP
1060 int (*select_task_rq)(struct rq *rq, struct task_struct *p, 1064 int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags);
1061 int sd_flag, int flags);
1062 1065
1063 void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); 1066 void (*pre_schedule) (struct rq *this_rq, struct task_struct *task);
1064 void (*post_schedule) (struct rq *this_rq); 1067 void (*post_schedule) (struct rq *this_rq);
1065 void (*task_waking) (struct rq *this_rq, struct task_struct *task); 1068 void (*task_waking) (struct task_struct *task);
1066 void (*task_woken) (struct rq *this_rq, struct task_struct *task); 1069 void (*task_woken) (struct rq *this_rq, struct task_struct *task);
1067 1070
1068 void (*set_cpus_allowed)(struct task_struct *p, 1071 void (*set_cpus_allowed)(struct task_struct *p,
@@ -1190,10 +1193,10 @@ struct task_struct {
1190 int lock_depth; /* BKL lock depth */ 1193 int lock_depth; /* BKL lock depth */
1191 1194
1192#ifdef CONFIG_SMP 1195#ifdef CONFIG_SMP
1193#ifdef __ARCH_WANT_UNLOCKED_CTXSW 1196 struct task_struct *wake_entry;
1194 int oncpu; 1197 int on_cpu;
1195#endif
1196#endif 1198#endif
1199 int on_rq;
1197 1200
1198 int prio, static_prio, normal_prio; 1201 int prio, static_prio, normal_prio;
1199 unsigned int rt_priority; 1202 unsigned int rt_priority;
@@ -1261,6 +1264,7 @@ struct task_struct {
1261 1264
1262 /* Revert to default priority/policy when forking */ 1265 /* Revert to default priority/policy when forking */
1263 unsigned sched_reset_on_fork:1; 1266 unsigned sched_reset_on_fork:1;
1267 unsigned sched_contributes_to_load:1;
1264 1268
1265 pid_t pid; 1269 pid_t pid;
1266 pid_t tgid; 1270 pid_t tgid;
@@ -2179,8 +2183,10 @@ extern void set_task_comm(struct task_struct *tsk, char *from);
2179extern char *get_task_comm(char *to, struct task_struct *tsk); 2183extern char *get_task_comm(char *to, struct task_struct *tsk);
2180 2184
2181#ifdef CONFIG_SMP 2185#ifdef CONFIG_SMP
2186void scheduler_ipi(void);
2182extern unsigned long wait_task_inactive(struct task_struct *, long match_state); 2187extern unsigned long wait_task_inactive(struct task_struct *, long match_state);
2183#else 2188#else
2189static inline void scheduler_ipi(void) { }
2184static inline unsigned long wait_task_inactive(struct task_struct *p, 2190static inline unsigned long wait_task_inactive(struct task_struct *p,
2185 long match_state) 2191 long match_state)
2186{ 2192{
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index 5a89e3612875..083ffea7ba18 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -249,6 +249,8 @@ extern void hibernation_set_ops(const struct platform_hibernation_ops *ops);
249extern int hibernate(void); 249extern int hibernate(void);
250extern bool system_entering_hibernation(void); 250extern bool system_entering_hibernation(void);
251#else /* CONFIG_HIBERNATION */ 251#else /* CONFIG_HIBERNATION */
252static inline void register_nosave_region(unsigned long b, unsigned long e) {}
253static inline void register_nosave_region_late(unsigned long b, unsigned long e) {}
252static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } 254static inline int swsusp_page_is_forbidden(struct page *p) { return 0; }
253static inline void swsusp_set_page_free(struct page *p) {} 255static inline void swsusp_set_page_free(struct page *p) {}
254static inline void swsusp_unset_page_free(struct page *p) {} 256static inline void swsusp_unset_page_free(struct page *p) {}
@@ -297,14 +299,7 @@ static inline bool pm_wakeup_pending(void) { return false; }
297 299
298extern struct mutex pm_mutex; 300extern struct mutex pm_mutex;
299 301
300#ifndef CONFIG_HIBERNATION 302#ifndef CONFIG_HIBERNATE_CALLBACKS
301static inline void register_nosave_region(unsigned long b, unsigned long e)
302{
303}
304static inline void register_nosave_region_late(unsigned long b, unsigned long e)
305{
306}
307
308static inline void lock_system_sleep(void) {} 303static inline void lock_system_sleep(void) {}
309static inline void unlock_system_sleep(void) {} 304static inline void unlock_system_sleep(void) {}
310 305