Skip to content

Commit 9aeaf5b

Browse files
Andi KleenIngo Molnar
authored andcommitted
locking/spinlocks: Mark spinlocks noinline when inline spinlocks are disabled
Otherwise LTO will inline them anyways and cause a large kernel text increase. Since the explicit intention here is to not inline them marking them noinline is good documentation even for the non-LTO case. Signed-off-by: Andi Kleen <[email protected]> Signed-off-by: Martin Liska <[email protected]> Signed-off-by: Jiri Slaby <[email protected]> Signed-off-by: Ingo Molnar <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent d171011 commit 9aeaf5b

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

kernel/locking/spinlock.c

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -133,79 +133,79 @@ BUILD_LOCK_OPS(write, rwlock);
133133
#endif
134134

135135
#ifndef CONFIG_INLINE_SPIN_TRYLOCK
136-
int __lockfunc _raw_spin_trylock(raw_spinlock_t *lock)
136+
noinline int __lockfunc _raw_spin_trylock(raw_spinlock_t *lock)
137137
{
138138
return __raw_spin_trylock(lock);
139139
}
140140
EXPORT_SYMBOL(_raw_spin_trylock);
141141
#endif
142142

143143
#ifndef CONFIG_INLINE_SPIN_TRYLOCK_BH
144-
int __lockfunc _raw_spin_trylock_bh(raw_spinlock_t *lock)
144+
noinline int __lockfunc _raw_spin_trylock_bh(raw_spinlock_t *lock)
145145
{
146146
return __raw_spin_trylock_bh(lock);
147147
}
148148
EXPORT_SYMBOL(_raw_spin_trylock_bh);
149149
#endif
150150

151151
#ifndef CONFIG_INLINE_SPIN_LOCK
152-
void __lockfunc _raw_spin_lock(raw_spinlock_t *lock)
152+
noinline void __lockfunc _raw_spin_lock(raw_spinlock_t *lock)
153153
{
154154
__raw_spin_lock(lock);
155155
}
156156
EXPORT_SYMBOL(_raw_spin_lock);
157157
#endif
158158

159159
#ifndef CONFIG_INLINE_SPIN_LOCK_IRQSAVE
160-
unsigned long __lockfunc _raw_spin_lock_irqsave(raw_spinlock_t *lock)
160+
noinline unsigned long __lockfunc _raw_spin_lock_irqsave(raw_spinlock_t *lock)
161161
{
162162
return __raw_spin_lock_irqsave(lock);
163163
}
164164
EXPORT_SYMBOL(_raw_spin_lock_irqsave);
165165
#endif
166166

167167
#ifndef CONFIG_INLINE_SPIN_LOCK_IRQ
168-
void __lockfunc _raw_spin_lock_irq(raw_spinlock_t *lock)
168+
noinline void __lockfunc _raw_spin_lock_irq(raw_spinlock_t *lock)
169169
{
170170
__raw_spin_lock_irq(lock);
171171
}
172172
EXPORT_SYMBOL(_raw_spin_lock_irq);
173173
#endif
174174

175175
#ifndef CONFIG_INLINE_SPIN_LOCK_BH
176-
void __lockfunc _raw_spin_lock_bh(raw_spinlock_t *lock)
176+
noinline void __lockfunc _raw_spin_lock_bh(raw_spinlock_t *lock)
177177
{
178178
__raw_spin_lock_bh(lock);
179179
}
180180
EXPORT_SYMBOL(_raw_spin_lock_bh);
181181
#endif
182182

183183
#ifdef CONFIG_UNINLINE_SPIN_UNLOCK
184-
void __lockfunc _raw_spin_unlock(raw_spinlock_t *lock)
184+
noinline void __lockfunc _raw_spin_unlock(raw_spinlock_t *lock)
185185
{
186186
__raw_spin_unlock(lock);
187187
}
188188
EXPORT_SYMBOL(_raw_spin_unlock);
189189
#endif
190190

191191
#ifndef CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE
192-
void __lockfunc _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags)
192+
noinline void __lockfunc _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags)
193193
{
194194
__raw_spin_unlock_irqrestore(lock, flags);
195195
}
196196
EXPORT_SYMBOL(_raw_spin_unlock_irqrestore);
197197
#endif
198198

199199
#ifndef CONFIG_INLINE_SPIN_UNLOCK_IRQ
200-
void __lockfunc _raw_spin_unlock_irq(raw_spinlock_t *lock)
200+
noinline void __lockfunc _raw_spin_unlock_irq(raw_spinlock_t *lock)
201201
{
202202
__raw_spin_unlock_irq(lock);
203203
}
204204
EXPORT_SYMBOL(_raw_spin_unlock_irq);
205205
#endif
206206

207207
#ifndef CONFIG_INLINE_SPIN_UNLOCK_BH
208-
void __lockfunc _raw_spin_unlock_bh(raw_spinlock_t *lock)
208+
noinline void __lockfunc _raw_spin_unlock_bh(raw_spinlock_t *lock)
209209
{
210210
__raw_spin_unlock_bh(lock);
211211
}
@@ -215,87 +215,87 @@ EXPORT_SYMBOL(_raw_spin_unlock_bh);
215215
#ifndef CONFIG_PREEMPT_RT
216216

217217
#ifndef CONFIG_INLINE_READ_TRYLOCK
218-
int __lockfunc _raw_read_trylock(rwlock_t *lock)
218+
noinline int __lockfunc _raw_read_trylock(rwlock_t *lock)
219219
{
220220
return __raw_read_trylock(lock);
221221
}
222222
EXPORT_SYMBOL(_raw_read_trylock);
223223
#endif
224224

225225
#ifndef CONFIG_INLINE_READ_LOCK
226-
void __lockfunc _raw_read_lock(rwlock_t *lock)
226+
noinline void __lockfunc _raw_read_lock(rwlock_t *lock)
227227
{
228228
__raw_read_lock(lock);
229229
}
230230
EXPORT_SYMBOL(_raw_read_lock);
231231
#endif
232232

233233
#ifndef CONFIG_INLINE_READ_LOCK_IRQSAVE
234-
unsigned long __lockfunc _raw_read_lock_irqsave(rwlock_t *lock)
234+
noinline unsigned long __lockfunc _raw_read_lock_irqsave(rwlock_t *lock)
235235
{
236236
return __raw_read_lock_irqsave(lock);
237237
}
238238
EXPORT_SYMBOL(_raw_read_lock_irqsave);
239239
#endif
240240

241241
#ifndef CONFIG_INLINE_READ_LOCK_IRQ
242-
void __lockfunc _raw_read_lock_irq(rwlock_t *lock)
242+
noinline void __lockfunc _raw_read_lock_irq(rwlock_t *lock)
243243
{
244244
__raw_read_lock_irq(lock);
245245
}
246246
EXPORT_SYMBOL(_raw_read_lock_irq);
247247
#endif
248248

249249
#ifndef CONFIG_INLINE_READ_LOCK_BH
250-
void __lockfunc _raw_read_lock_bh(rwlock_t *lock)
250+
noinline void __lockfunc _raw_read_lock_bh(rwlock_t *lock)
251251
{
252252
__raw_read_lock_bh(lock);
253253
}
254254
EXPORT_SYMBOL(_raw_read_lock_bh);
255255
#endif
256256

257257
#ifndef CONFIG_INLINE_READ_UNLOCK
258-
void __lockfunc _raw_read_unlock(rwlock_t *lock)
258+
noinline void __lockfunc _raw_read_unlock(rwlock_t *lock)
259259
{
260260
__raw_read_unlock(lock);
261261
}
262262
EXPORT_SYMBOL(_raw_read_unlock);
263263
#endif
264264

265265
#ifndef CONFIG_INLINE_READ_UNLOCK_IRQRESTORE
266-
void __lockfunc _raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
266+
noinline void __lockfunc _raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
267267
{
268268
__raw_read_unlock_irqrestore(lock, flags);
269269
}
270270
EXPORT_SYMBOL(_raw_read_unlock_irqrestore);
271271
#endif
272272

273273
#ifndef CONFIG_INLINE_READ_UNLOCK_IRQ
274-
void __lockfunc _raw_read_unlock_irq(rwlock_t *lock)
274+
noinline void __lockfunc _raw_read_unlock_irq(rwlock_t *lock)
275275
{
276276
__raw_read_unlock_irq(lock);
277277
}
278278
EXPORT_SYMBOL(_raw_read_unlock_irq);
279279
#endif
280280

281281
#ifndef CONFIG_INLINE_READ_UNLOCK_BH
282-
void __lockfunc _raw_read_unlock_bh(rwlock_t *lock)
282+
noinline void __lockfunc _raw_read_unlock_bh(rwlock_t *lock)
283283
{
284284
__raw_read_unlock_bh(lock);
285285
}
286286
EXPORT_SYMBOL(_raw_read_unlock_bh);
287287
#endif
288288

289289
#ifndef CONFIG_INLINE_WRITE_TRYLOCK
290-
int __lockfunc _raw_write_trylock(rwlock_t *lock)
290+
noinline int __lockfunc _raw_write_trylock(rwlock_t *lock)
291291
{
292292
return __raw_write_trylock(lock);
293293
}
294294
EXPORT_SYMBOL(_raw_write_trylock);
295295
#endif
296296

297297
#ifndef CONFIG_INLINE_WRITE_LOCK
298-
void __lockfunc _raw_write_lock(rwlock_t *lock)
298+
noinline void __lockfunc _raw_write_lock(rwlock_t *lock)
299299
{
300300
__raw_write_lock(lock);
301301
}
@@ -313,55 +313,55 @@ EXPORT_SYMBOL(_raw_write_lock_nested);
313313
#endif
314314

315315
#ifndef CONFIG_INLINE_WRITE_LOCK_IRQSAVE
316-
unsigned long __lockfunc _raw_write_lock_irqsave(rwlock_t *lock)
316+
noinline unsigned long __lockfunc _raw_write_lock_irqsave(rwlock_t *lock)
317317
{
318318
return __raw_write_lock_irqsave(lock);
319319
}
320320
EXPORT_SYMBOL(_raw_write_lock_irqsave);
321321
#endif
322322

323323
#ifndef CONFIG_INLINE_WRITE_LOCK_IRQ
324-
void __lockfunc _raw_write_lock_irq(rwlock_t *lock)
324+
noinline void __lockfunc _raw_write_lock_irq(rwlock_t *lock)
325325
{
326326
__raw_write_lock_irq(lock);
327327
}
328328
EXPORT_SYMBOL(_raw_write_lock_irq);
329329
#endif
330330

331331
#ifndef CONFIG_INLINE_WRITE_LOCK_BH
332-
void __lockfunc _raw_write_lock_bh(rwlock_t *lock)
332+
noinline void __lockfunc _raw_write_lock_bh(rwlock_t *lock)
333333
{
334334
__raw_write_lock_bh(lock);
335335
}
336336
EXPORT_SYMBOL(_raw_write_lock_bh);
337337
#endif
338338

339339
#ifndef CONFIG_INLINE_WRITE_UNLOCK
340-
void __lockfunc _raw_write_unlock(rwlock_t *lock)
340+
noinline void __lockfunc _raw_write_unlock(rwlock_t *lock)
341341
{
342342
__raw_write_unlock(lock);
343343
}
344344
EXPORT_SYMBOL(_raw_write_unlock);
345345
#endif
346346

347347
#ifndef CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE
348-
void __lockfunc _raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
348+
noinline void __lockfunc _raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
349349
{
350350
__raw_write_unlock_irqrestore(lock, flags);
351351
}
352352
EXPORT_SYMBOL(_raw_write_unlock_irqrestore);
353353
#endif
354354

355355
#ifndef CONFIG_INLINE_WRITE_UNLOCK_IRQ
356-
void __lockfunc _raw_write_unlock_irq(rwlock_t *lock)
356+
noinline void __lockfunc _raw_write_unlock_irq(rwlock_t *lock)
357357
{
358358
__raw_write_unlock_irq(lock);
359359
}
360360
EXPORT_SYMBOL(_raw_write_unlock_irq);
361361
#endif
362362

363363
#ifndef CONFIG_INLINE_WRITE_UNLOCK_BH
364-
void __lockfunc _raw_write_unlock_bh(rwlock_t *lock)
364+
noinline void __lockfunc _raw_write_unlock_bh(rwlock_t *lock)
365365
{
366366
__raw_write_unlock_bh(lock);
367367
}

0 commit comments

Comments
 (0)