Skip to content

Commit 9806790

Browse files
committed
Merge tag 's390-7.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Heiko Carstens: - Make KEXEC_SIG available again for CONFIG_MODULES=n - The s390 topology code used to call rebuild_sched_domains() before common code scheduling domains were setup. This was silently ignored by common code, but now results in a warning. Address by avoiding the early call - Convert debug area lock from spinlock to raw spinlock to address lockdep warnings - The recent 3490 tape device driver rework resulted in a different device driver name, which is visible via sysfs for user space. This breaks at least one user space application. Change the device driver name back to its old name to fix this * tag 's390-7.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/tape: Fix device driver name s390/debug: Convert debug area lock from a spinlock to a raw spinlock s390/smp: Avoid calling rebuild_sched_domains() early s390/kexec: Make KEXEC_SIG available when CONFIG_MODULES=n
2 parents 9abf795 + 123d2e7 commit 9806790

5 files changed

Lines changed: 36 additions & 35 deletions

File tree

arch/s390/Kconfig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ config S390
279279
select SPARSE_IRQ
280280
select SWIOTLB
281281
select SYSCTL_EXCEPTION_TRACE
282+
select SYSTEM_DATA_VERIFICATION if KEXEC_SIG
282283
select THREAD_INFO_IN_TASK
283284
select TRACE_IRQFLAGS_SUPPORT
284285
select TTY
@@ -313,7 +314,7 @@ config ARCH_SUPPORTS_KEXEC_FILE
313314
def_bool y
314315

315316
config ARCH_SUPPORTS_KEXEC_SIG
316-
def_bool MODULE_SIG_FORMAT
317+
def_bool y
317318

318319
config ARCH_SUPPORTS_KEXEC_PURGATORY
319320
def_bool y

arch/s390/include/asm/debug.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ typedef struct debug_info {
4545
struct debug_info *next;
4646
struct debug_info *prev;
4747
refcount_t ref_count;
48-
spinlock_t lock;
48+
raw_spinlock_t lock;
4949
int level;
5050
int nr_areas;
5151
int pages_per_area;
@@ -440,7 +440,7 @@ static int VNAME(var, active_entries)[EARLY_AREAS] __initdata
440440
.next = NULL, \
441441
.prev = NULL, \
442442
.ref_count = REFCOUNT_INIT(1), \
443-
.lock = __SPIN_LOCK_UNLOCKED(var.lock), \
443+
.lock = __RAW_SPIN_LOCK_UNLOCKED(var.lock), \
444444
.level = DEBUG_DEFAULT_LEVEL, \
445445
.nr_areas = EARLY_AREAS, \
446446
.pages_per_area = EARLY_PAGES, \

arch/s390/kernel/debug.c

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ static debug_info_t *debug_info_alloc(const char *name, int pages_per_area,
243243
}
244244

245245
/* initialize members */
246-
spin_lock_init(&rc->lock);
246+
raw_spin_lock_init(&rc->lock);
247247
rc->pages_per_area = pages_per_area;
248248
rc->nr_areas = nr_areas;
249249
rc->active_area = 0;
@@ -333,15 +333,15 @@ static debug_info_t *debug_info_copy(debug_info_t *in, int mode)
333333
do {
334334
rc = debug_info_alloc(in->name, in->pages_per_area,
335335
in->nr_areas, in->buf_size, in->level, mode);
336-
spin_lock_irqsave(&in->lock, flags);
336+
raw_spin_lock_irqsave(&in->lock, flags);
337337
if (!rc)
338338
goto out;
339339
/* has something changed in the meantime ? */
340340
if ((rc->pages_per_area == in->pages_per_area) &&
341341
(rc->nr_areas == in->nr_areas)) {
342342
break;
343343
}
344-
spin_unlock_irqrestore(&in->lock, flags);
344+
raw_spin_unlock_irqrestore(&in->lock, flags);
345345
debug_info_free(rc);
346346
} while (1);
347347

@@ -356,7 +356,7 @@ static debug_info_t *debug_info_copy(debug_info_t *in, int mode)
356356
}
357357
rc->active_area = in->active_area;
358358
out:
359-
spin_unlock_irqrestore(&in->lock, flags);
359+
raw_spin_unlock_irqrestore(&in->lock, flags);
360360
return rc;
361361
}
362362

@@ -879,20 +879,20 @@ void debug_register_static(debug_info_t *id, int pages_per_area, int nr_areas)
879879
pr_err("Registering debug feature %s failed\n", id->name);
880880

881881
/* Clear pointers to prevent tracing into released initdata. */
882-
spin_lock_irqsave(&id->lock, flags);
882+
raw_spin_lock_irqsave(&id->lock, flags);
883883
id->areas = NULL;
884884
id->active_pages = NULL;
885885
id->active_entries = NULL;
886-
spin_unlock_irqrestore(&id->lock, flags);
886+
raw_spin_unlock_irqrestore(&id->lock, flags);
887887

888888
return;
889889
}
890890

891891
/* Replace static trace area with dynamic copy. */
892-
spin_lock_irqsave(&id->lock, flags);
892+
raw_spin_lock_irqsave(&id->lock, flags);
893893
debug_events_append(copy, id);
894894
debug_areas_swap(id, copy);
895-
spin_unlock_irqrestore(&id->lock, flags);
895+
raw_spin_unlock_irqrestore(&id->lock, flags);
896896

897897
/* Clear pointers to initdata and discard copy. */
898898
copy->areas = NULL;
@@ -966,11 +966,11 @@ static int debug_set_size(debug_info_t *id, int nr_areas, int pages_per_area)
966966
return -ENOMEM;
967967
}
968968

969-
spin_lock_irqsave(&id->lock, flags);
969+
raw_spin_lock_irqsave(&id->lock, flags);
970970
debug_events_append(new_id, id);
971971
debug_areas_swap(new_id, id);
972+
raw_spin_unlock_irqrestore(&id->lock, flags);
972973
debug_info_free(new_id);
973-
spin_unlock_irqrestore(&id->lock, flags);
974974
pr_info("%s: set new size (%i pages)\n", id->name, pages_per_area);
975975

976976
return 0;
@@ -1000,9 +1000,9 @@ void debug_set_level(debug_info_t *id, int new_level)
10001000
return;
10011001
}
10021002

1003-
spin_lock_irqsave(&id->lock, flags);
1003+
raw_spin_lock_irqsave(&id->lock, flags);
10041004
id->level = new_level;
1005-
spin_unlock_irqrestore(&id->lock, flags);
1005+
raw_spin_unlock_irqrestore(&id->lock, flags);
10061006
}
10071007
EXPORT_SYMBOL(debug_set_level);
10081008

@@ -1184,10 +1184,10 @@ debug_entry_t *debug_event_common(debug_info_t *id, int level, const void *buf,
11841184
if (!debug_active || !id->areas)
11851185
return NULL;
11861186
if (debug_critical) {
1187-
if (!spin_trylock_irqsave(&id->lock, flags))
1187+
if (!raw_spin_trylock_irqsave(&id->lock, flags))
11881188
return NULL;
11891189
} else {
1190-
spin_lock_irqsave(&id->lock, flags);
1190+
raw_spin_lock_irqsave(&id->lock, flags);
11911191
}
11921192
do {
11931193
active = get_active_entry(id);
@@ -1199,7 +1199,7 @@ debug_entry_t *debug_event_common(debug_info_t *id, int level, const void *buf,
11991199
buf += id->buf_size;
12001200
} while (len > 0);
12011201

1202-
spin_unlock_irqrestore(&id->lock, flags);
1202+
raw_spin_unlock_irqrestore(&id->lock, flags);
12031203
return active;
12041204
}
12051205
EXPORT_SYMBOL(debug_event_common);
@@ -1217,10 +1217,10 @@ debug_entry_t *debug_exception_common(debug_info_t *id, int level,
12171217
if (!debug_active || !id->areas)
12181218
return NULL;
12191219
if (debug_critical) {
1220-
if (!spin_trylock_irqsave(&id->lock, flags))
1220+
if (!raw_spin_trylock_irqsave(&id->lock, flags))
12211221
return NULL;
12221222
} else {
1223-
spin_lock_irqsave(&id->lock, flags);
1223+
raw_spin_lock_irqsave(&id->lock, flags);
12241224
}
12251225
do {
12261226
active = get_active_entry(id);
@@ -1232,7 +1232,7 @@ debug_entry_t *debug_exception_common(debug_info_t *id, int level,
12321232
buf += id->buf_size;
12331233
} while (len > 0);
12341234

1235-
spin_unlock_irqrestore(&id->lock, flags);
1235+
raw_spin_unlock_irqrestore(&id->lock, flags);
12361236
return active;
12371237
}
12381238
EXPORT_SYMBOL(debug_exception_common);
@@ -1267,10 +1267,10 @@ debug_entry_t *__debug_sprintf_event(debug_info_t *id, int level, char *string,
12671267
numargs = debug_count_numargs(string);
12681268

12691269
if (debug_critical) {
1270-
if (!spin_trylock_irqsave(&id->lock, flags))
1270+
if (!raw_spin_trylock_irqsave(&id->lock, flags))
12711271
return NULL;
12721272
} else {
1273-
spin_lock_irqsave(&id->lock, flags);
1273+
raw_spin_lock_irqsave(&id->lock, flags);
12741274
}
12751275
active = get_active_entry(id);
12761276
curr_event = (debug_sprintf_entry_t *) DEBUG_DATA(active);
@@ -1280,7 +1280,7 @@ debug_entry_t *__debug_sprintf_event(debug_info_t *id, int level, char *string,
12801280
curr_event->args[idx] = va_arg(ap, long);
12811281
va_end(ap);
12821282
debug_finish_entry(id, active, level, 0);
1283-
spin_unlock_irqrestore(&id->lock, flags);
1283+
raw_spin_unlock_irqrestore(&id->lock, flags);
12841284

12851285
return active;
12861286
}
@@ -1303,10 +1303,10 @@ debug_entry_t *__debug_sprintf_exception(debug_info_t *id, int level, char *stri
13031303
numargs = debug_count_numargs(string);
13041304

13051305
if (debug_critical) {
1306-
if (!spin_trylock_irqsave(&id->lock, flags))
1306+
if (!raw_spin_trylock_irqsave(&id->lock, flags))
13071307
return NULL;
13081308
} else {
1309-
spin_lock_irqsave(&id->lock, flags);
1309+
raw_spin_lock_irqsave(&id->lock, flags);
13101310
}
13111311
active = get_active_entry(id);
13121312
curr_event = (debug_sprintf_entry_t *)DEBUG_DATA(active);
@@ -1316,7 +1316,7 @@ debug_entry_t *__debug_sprintf_exception(debug_info_t *id, int level, char *stri
13161316
curr_event->args[idx] = va_arg(ap, long);
13171317
va_end(ap);
13181318
debug_finish_entry(id, active, level, 1);
1319-
spin_unlock_irqrestore(&id->lock, flags);
1319+
raw_spin_unlock_irqrestore(&id->lock, flags);
13201320

13211321
return active;
13221322
}
@@ -1350,7 +1350,7 @@ int debug_register_view(debug_info_t *id, struct debug_view *view)
13501350
mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
13511351
pde = debugfs_create_file(view->name, mode, id->debugfs_root_entry,
13521352
id, &debug_file_ops);
1353-
spin_lock_irqsave(&id->lock, flags);
1353+
raw_spin_lock_irqsave(&id->lock, flags);
13541354
for (i = 0; i < DEBUG_MAX_VIEWS; i++) {
13551355
if (!id->views[i])
13561356
break;
@@ -1361,7 +1361,7 @@ int debug_register_view(debug_info_t *id, struct debug_view *view)
13611361
id->views[i] = view;
13621362
id->debugfs_entries[i] = pde;
13631363
}
1364-
spin_unlock_irqrestore(&id->lock, flags);
1364+
raw_spin_unlock_irqrestore(&id->lock, flags);
13651365
if (rc) {
13661366
pr_err("Registering view %s/%s would exceed the maximum "
13671367
"number of views %i\n", id->name, view->name, i);
@@ -1391,7 +1391,7 @@ int debug_unregister_view(debug_info_t *id, struct debug_view *view)
13911391

13921392
if (!id)
13931393
goto out;
1394-
spin_lock_irqsave(&id->lock, flags);
1394+
raw_spin_lock_irqsave(&id->lock, flags);
13951395
for (i = 0; i < DEBUG_MAX_VIEWS; i++) {
13961396
if (id->views[i] == view)
13971397
break;
@@ -1403,7 +1403,7 @@ int debug_unregister_view(debug_info_t *id, struct debug_view *view)
14031403
id->views[i] = NULL;
14041404
id->debugfs_entries[i] = NULL;
14051405
}
1406-
spin_unlock_irqrestore(&id->lock, flags);
1406+
raw_spin_unlock_irqrestore(&id->lock, flags);
14071407
debugfs_remove(dentry);
14081408
out:
14091409
return rc;
@@ -1557,7 +1557,7 @@ static void debug_flush(debug_info_t *id, int area)
15571557

15581558
if (!id || !id->areas)
15591559
return;
1560-
spin_lock_irqsave(&id->lock, flags);
1560+
raw_spin_lock_irqsave(&id->lock, flags);
15611561
if (area == DEBUG_FLUSH_ALL) {
15621562
id->active_area = 0;
15631563
memset(id->active_entries, 0, id->nr_areas * sizeof(int));
@@ -1572,7 +1572,7 @@ static void debug_flush(debug_info_t *id, int area)
15721572
for (i = 0; i < id->pages_per_area; i++)
15731573
memset(id->areas[area][i], 0, PAGE_SIZE);
15741574
}
1575-
spin_unlock_irqrestore(&id->lock, flags);
1575+
raw_spin_unlock_irqrestore(&id->lock, flags);
15761576
}
15771577

15781578
/*

arch/s390/kernel/smp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ int __ref smp_rescan_cpus(bool early)
11511151
smp_get_core_info(info, 0);
11521152
nr = __smp_rescan_cpus(info, early);
11531153
kfree(info);
1154-
if (nr)
1154+
if (nr && !early)
11551155
topology_schedule_update();
11561156
return 0;
11571157
}

drivers/s390/char/tape_3490.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ tape_3490_online(struct ccw_device *cdev)
784784

785785
static struct ccw_driver tape_3490_driver = {
786786
.driver = {
787-
.name = "tape_3490",
787+
.name = "tape_34xx",
788788
.owner = THIS_MODULE,
789789
},
790790
.ids = tape_3490_ids,

0 commit comments

Comments
 (0)