aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/fc4/soc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/fc4/soc.c')
-rw-r--r--drivers/fc4/soc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/fc4/soc.c b/drivers/fc4/soc.c
index cf8768b8d1f1..3b07e0ca81cd 100644
--- a/drivers/fc4/soc.c
+++ b/drivers/fc4/soc.c
@@ -637,7 +637,7 @@ static inline void soc_init(struct sbus_dev *sdev, int no)
637 637
638 irq = sdev->irqs[0]; 638 irq = sdev->irqs[0];
639 639
640 if (request_irq (irq, soc_intr, SA_SHIRQ, "SOC", (void *)s)) { 640 if (request_irq (irq, soc_intr, IRQF_SHARED, "SOC", (void *)s)) {
641 soc_printk ("Cannot order irq %d to go\n", irq); 641 soc_printk ("Cannot order irq %d to go\n", irq);
642 socs = s->next; 642 socs = s->next;
643 return; 643 return;
2d0d1a8746e7be5210e3d6b904455000443c'>a5be2d0d1a87
7dfb71030f76
8a32c441c160
7dfb71030f76
2aede851ddf0
a9b6f562f14d
181e9bdef37b
7dfb71030f76
a0acae0e886d
7dfb71030f76
6aa9707099c4

a0acae0e886d


8a32c441c160
7dfb71030f76
ff39593ad0ff
839e3407d90a
34b087e48367
8174f1503f4b
dc52ddc0e6f4
22b4e111fa01
dc52ddc0e6f4
22b4e111fa01
5a7aadfe2fcb
22b4e111fa01
5a7aadfe2fcb
dc52ddc0e6f4

ba96a0c88098






467de1fc67d1



ba96a0c88098

467de1fc67d1
dd67d32dbc5d










ba96a0c88098

467de1fc67d1
ba96a0c88098

dd67d32dbc5d





ba96a0c88098


467de1fc67d1
dd67d32dbc5d





467de1fc67d1
ba96a0c88098

dd67d32dbc5d








ba96a0c88098
dd67d32dbc5d
ba96a0c88098
dd67d32dbc5d








ba96a0c88098
ff39593ad0ff
831441862956
5d8f72b55c27


d310310cbff1












b3b73ec0d7fe
d310310cbff1
b3b73ec0d7fe
d310310cbff1
b3b73ec0d7fe
d310310cbff1


f06ac72e9291


e42837bcd35b

f06ac72e9291


6f35c4abd7f0


f06ac72e9291


e42837bcd35b


24b7ead3fb0b
e42837bcd35b

24b7ead3fb0b
e42837bcd35b
24b7ead3fb0b

e42837bcd35b


e42837bcd35b


24b7ead3fb0b
e42837bcd35b


24b7ead3fb0b



e42837bcd35b

24b7ead3fb0b
8174f1503f4b
948246f70a81
a3201227f803
62c9ea6b1206
7dfb71030f76
8a32c441c160
2aede851ddf0

7dfb71030f76
181e9bdef37b
7dfb71030f76
e5f5762177be
a0acae0e886d
7dfb71030f76
ba96a0c88098


831441862956
e42837bcd35b
d310310cbff1




e42837bcd35b





e0c8ea1a6941


8174f1503f4b
831441862956

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245

                          


                          
                              
                        
                       
                         
 
                     



                                                                            
  




                                         

                                     
                                                



                                    
                                                      

  
                                                  
   
                                                  
 


                                                       

 
                                                          
                                               
 
                                                 
                                  
                                       
                                 
                                      
 
                                      
 

                                            


                                       
                                     
 
 
                                               
                                
 
                            
                                                      
                                  
                                                            
 
                     
 

                                   






                                                                               



                                                                                

   
 










                                                                          

                                             
                                          

 





                                                                           


                                      
                                           





                                                                         
                        

 








                                                                           
   
                                                             
 








                                                                          
 
 
  


                                                                          












                                                                         
                                                                         
                                                                         
                                                                         
                                                                         
                                                                         


  


                                                                           

   


                                                                         


                                                                         


                                                                         


                                                                         
                                                                         

                                                                         
                                                                         
                                                                         

                                                                         


                                                                         


                                                                         
                                                                         


                                                                         



                                                                         

                                                                         
 
                           
                                                                  
                                                                    
                                                        
 
                                                                         

                                                                 
                                          
                                               
 
                                                               
                                                        
 


                                                                          
                                         
 




                                                                         





                                                                         


                                                                 
                            

                                
/* Freezer declarations */

#ifndef FREEZER_H_INCLUDED
#define FREEZER_H_INCLUDED

#include <linux/debug_locks.h>
#include <linux/sched.h>
#include <linux/wait.h>
#include <linux/atomic.h>

#ifdef CONFIG_FREEZER
extern atomic_t system_freezing_cnt;	/* nr of freezing conds in effect */
extern bool pm_freezing;		/* PM freezing in effect */
extern bool pm_nosig_freezing;		/* PM nosig freezing in effect */

/*
 * Timeout for stopping processes
 */
extern unsigned int freeze_timeout_msecs;

/*
 * Check if a process has been frozen
 */
static inline bool frozen(struct task_struct *p)
{
	return p->flags & PF_FROZEN;
}

extern bool freezing_slow_path(struct task_struct *p);

/*
 * Check if there is a request to freeze a process
 */
static inline bool freezing(struct task_struct *p)
{
	if (likely(!atomic_read(&system_freezing_cnt)))
		return false;
	return freezing_slow_path(p);
}

/* Takes and releases task alloc lock using task_lock() */
extern void __thaw_task(struct task_struct *t);

extern bool __refrigerator(bool check_kthr_stop);
extern int freeze_processes(void);
extern int freeze_kernel_threads(void);
extern void thaw_processes(void);
extern void thaw_kernel_threads(void);

static inline bool try_to_freeze(void)
{
	if (!(current->flags & PF_NOFREEZE))
		debug_check_no_locks_held();
	might_sleep();
	if (likely(!freezing(current)))
		return false;
	return __refrigerator(false);
}

extern bool freeze_task(struct task_struct *p);
extern bool set_freezable(void);

#ifdef CONFIG_CGROUP_FREEZER
extern bool cgroup_freezing(struct task_struct *task);
#else /* !CONFIG_CGROUP_FREEZER */
static inline bool cgroup_freezing(struct task_struct *task)
{
	return false;
}
#endif /* !CONFIG_CGROUP_FREEZER */

/*
 * The PF_FREEZER_SKIP flag should be set by a vfork parent right before it
 * calls wait_for_completion(&vfork) and reset right after it returns from this
 * function.  Next, the parent should call try_to_freeze() to freeze itself
 * appropriately in case the child has exited before the freezing of tasks is
 * complete.  However, we don't want kernel threads to be frozen in unexpected
 * places, so we allow them to block freeze_processes() instead or to set
 * PF_NOFREEZE if needed. Fortunately, in the ____call_usermodehelper() case the
 * parent won't really block freeze_processes(), since ____call_usermodehelper()
 * (the child) does a little before exec/exit and it can't be frozen before
 * waking up the parent.
 */


/**
 * freezer_do_not_count - tell freezer to ignore %current
 *
 * Tell freezers to ignore the current task when determining whether the
 * target frozen state is reached.  IOW, the current task will be
 * considered frozen enough by freezers.
 *
 * The caller shouldn't do anything which isn't allowed for a frozen task
 * until freezer_cont() is called.  Usually, freezer[_do_not]_count() pair
 * wrap a scheduling operation and nothing much else.
 */
static inline void freezer_do_not_count(void)
{
	current->flags |= PF_FREEZER_SKIP;
}

/**
 * freezer_count - tell freezer to stop ignoring %current
 *
 * Undo freezer_do_not_count().  It tells freezers that %current should be
 * considered again and tries to freeze if freezing condition is already in
 * effect.
 */
static inline void freezer_count(void)
{
	current->flags &= ~PF_FREEZER_SKIP;
	/*
	 * If freezing is in progress, the following paired with smp_mb()
	 * in freezer_should_skip() ensures that either we see %true
	 * freezing() or freezer_should_skip() sees !PF_FREEZER_SKIP.
	 */
	smp_mb();
	try_to_freeze();
}

/**
 * freezer_should_skip - whether to skip a task when determining frozen
 *			 state is reached
 * @p: task in quesion
 *
 * This function is used by freezers after establishing %true freezing() to
 * test whether a task should be skipped when determining the target frozen
 * state is reached.  IOW, if this function returns %true, @p is considered
 * frozen enough.
 */
static inline bool freezer_should_skip(struct task_struct *p)
{
	/*
	 * The following smp_mb() paired with the one in freezer_count()
	 * ensures that either freezer_count() sees %true freezing() or we
	 * see cleared %PF_FREEZER_SKIP and return %false.  This makes it
	 * impossible for a task to slip frozen state testing after
	 * clearing %PF_FREEZER_SKIP.
	 */
	smp_mb();
	return p->flags & PF_FREEZER_SKIP;
}

/*
 * These macros are intended to be used whenever you want allow a sleeping
 * task to be frozen. Note that neither return any clear indication of
 * whether a freeze event happened while in this function.
 */

/* Like schedule(), but should not block the freezer. */
#define freezable_schedule()						\
({									\
	freezer_do_not_count();						\
	schedule();							\
	freezer_count();						\
})

/* Like schedule_timeout_killable(), but should not block the freezer. */
#define freezable_schedule_timeout_killable(timeout)			\
({									\
	long __retval;							\
	freezer_do_not_count();						\
	__retval = schedule_timeout_killable(timeout);			\
	freezer_count();						\
	__retval;							\
})

/*
 * Freezer-friendly wrappers around wait_event_interruptible(),
 * wait_event_killable() and wait_event_interruptible_timeout(), originally
 * defined in <linux/wait.h>
 */

#define wait_event_freezekillable(wq, condition)			\
({									\
	int __retval;							\
	freezer_do_not_count();						\
	__retval = wait_event_killable(wq, (condition));		\
	freezer_count();						\
	__retval;							\
})

#define wait_event_freezable(wq, condition)				\
({									\
	int __retval;							\
	for (;;) {							\
		__retval = wait_event_interruptible(wq, 		\
				(condition) || freezing(current));	\
		if (__retval || (condition))				\
			break;						\
		try_to_freeze();					\
	}								\
	__retval;							\
})

#define wait_event_freezable_timeout(wq, condition, timeout)		\
({									\
	long __retval = timeout;					\
	for (;;) {							\
		__retval = wait_event_interruptible_timeout(wq,		\
				(condition) || freezing(current),	\
				__retval); 				\
		if (__retval <= 0 || (condition))			\
			break;						\
		try_to_freeze();					\
	}								\
	__retval;							\
})

#else /* !CONFIG_FREEZER */
static inline bool frozen(struct task_struct *p) { return false; }
static inline bool freezing(struct task_struct *p) { return false; }
static inline void __thaw_task(struct task_struct *t) {}

static inline bool __refrigerator(bool check_kthr_stop) { return false; }
static inline int freeze_processes(void) { return -ENOSYS; }
static inline int freeze_kernel_threads(void) { return -ENOSYS; }
static inline void thaw_processes(void) {}
static inline void thaw_kernel_threads(void) {}