Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+36 -35
+2 -1
arch/s390/Kconfig
··· 279 279 select SPARSE_IRQ 280 280 select SWIOTLB 281 281 select SYSCTL_EXCEPTION_TRACE 282 + select SYSTEM_DATA_VERIFICATION if KEXEC_SIG 282 283 select THREAD_INFO_IN_TASK 283 284 select TRACE_IRQFLAGS_SUPPORT 284 285 select TTY ··· 314 313 def_bool y 315 314 316 315 config ARCH_SUPPORTS_KEXEC_SIG 317 - def_bool MODULE_SIG_FORMAT 316 + def_bool y 318 317 319 318 config ARCH_SUPPORTS_KEXEC_PURGATORY 320 319 def_bool y
+2 -2
arch/s390/include/asm/debug.h
··· 45 45 struct debug_info *next; 46 46 struct debug_info *prev; 47 47 refcount_t ref_count; 48 - spinlock_t lock; 48 + raw_spinlock_t lock; 49 49 int level; 50 50 int nr_areas; 51 51 int pages_per_area; ··· 440 440 .next = NULL, \ 441 441 .prev = NULL, \ 442 442 .ref_count = REFCOUNT_INIT(1), \ 443 - .lock = __SPIN_LOCK_UNLOCKED(var.lock), \ 443 + .lock = __RAW_SPIN_LOCK_UNLOCKED(var.lock), \ 444 444 .level = DEBUG_DEFAULT_LEVEL, \ 445 445 .nr_areas = EARLY_AREAS, \ 446 446 .pages_per_area = EARLY_PAGES, \
+30 -30
arch/s390/kernel/debug.c
··· 243 243 } 244 244 245 245 /* initialize members */ 246 - spin_lock_init(&rc->lock); 246 + raw_spin_lock_init(&rc->lock); 247 247 rc->pages_per_area = pages_per_area; 248 248 rc->nr_areas = nr_areas; 249 249 rc->active_area = 0; ··· 333 333 do { 334 334 rc = debug_info_alloc(in->name, in->pages_per_area, 335 335 in->nr_areas, in->buf_size, in->level, mode); 336 - spin_lock_irqsave(&in->lock, flags); 336 + raw_spin_lock_irqsave(&in->lock, flags); 337 337 if (!rc) 338 338 goto out; 339 339 /* has something changed in the meantime ? */ ··· 341 341 (rc->nr_areas == in->nr_areas)) { 342 342 break; 343 343 } 344 - spin_unlock_irqrestore(&in->lock, flags); 344 + raw_spin_unlock_irqrestore(&in->lock, flags); 345 345 debug_info_free(rc); 346 346 } while (1); 347 347 ··· 356 356 } 357 357 rc->active_area = in->active_area; 358 358 out: 359 - spin_unlock_irqrestore(&in->lock, flags); 359 + raw_spin_unlock_irqrestore(&in->lock, flags); 360 360 return rc; 361 361 } 362 362 ··· 879 879 pr_err("Registering debug feature %s failed\n", id->name); 880 880 881 881 /* Clear pointers to prevent tracing into released initdata. */ 882 - spin_lock_irqsave(&id->lock, flags); 882 + raw_spin_lock_irqsave(&id->lock, flags); 883 883 id->areas = NULL; 884 884 id->active_pages = NULL; 885 885 id->active_entries = NULL; 886 - spin_unlock_irqrestore(&id->lock, flags); 886 + raw_spin_unlock_irqrestore(&id->lock, flags); 887 887 888 888 return; 889 889 } 890 890 891 891 /* Replace static trace area with dynamic copy. */ 892 - spin_lock_irqsave(&id->lock, flags); 892 + raw_spin_lock_irqsave(&id->lock, flags); 893 893 debug_events_append(copy, id); 894 894 debug_areas_swap(id, copy); 895 - spin_unlock_irqrestore(&id->lock, flags); 895 + raw_spin_unlock_irqrestore(&id->lock, flags); 896 896 897 897 /* Clear pointers to initdata and discard copy. */ 898 898 copy->areas = NULL; ··· 966 966 return -ENOMEM; 967 967 } 968 968 969 - spin_lock_irqsave(&id->lock, flags); 969 + raw_spin_lock_irqsave(&id->lock, flags); 970 970 debug_events_append(new_id, id); 971 971 debug_areas_swap(new_id, id); 972 + raw_spin_unlock_irqrestore(&id->lock, flags); 972 973 debug_info_free(new_id); 973 - spin_unlock_irqrestore(&id->lock, flags); 974 974 pr_info("%s: set new size (%i pages)\n", id->name, pages_per_area); 975 975 976 976 return 0; ··· 1000 1000 return; 1001 1001 } 1002 1002 1003 - spin_lock_irqsave(&id->lock, flags); 1003 + raw_spin_lock_irqsave(&id->lock, flags); 1004 1004 id->level = new_level; 1005 - spin_unlock_irqrestore(&id->lock, flags); 1005 + raw_spin_unlock_irqrestore(&id->lock, flags); 1006 1006 } 1007 1007 EXPORT_SYMBOL(debug_set_level); 1008 1008 ··· 1184 1184 if (!debug_active || !id->areas) 1185 1185 return NULL; 1186 1186 if (debug_critical) { 1187 - if (!spin_trylock_irqsave(&id->lock, flags)) 1187 + if (!raw_spin_trylock_irqsave(&id->lock, flags)) 1188 1188 return NULL; 1189 1189 } else { 1190 - spin_lock_irqsave(&id->lock, flags); 1190 + raw_spin_lock_irqsave(&id->lock, flags); 1191 1191 } 1192 1192 do { 1193 1193 active = get_active_entry(id); ··· 1199 1199 buf += id->buf_size; 1200 1200 } while (len > 0); 1201 1201 1202 - spin_unlock_irqrestore(&id->lock, flags); 1202 + raw_spin_unlock_irqrestore(&id->lock, flags); 1203 1203 return active; 1204 1204 } 1205 1205 EXPORT_SYMBOL(debug_event_common); ··· 1217 1217 if (!debug_active || !id->areas) 1218 1218 return NULL; 1219 1219 if (debug_critical) { 1220 - if (!spin_trylock_irqsave(&id->lock, flags)) 1220 + if (!raw_spin_trylock_irqsave(&id->lock, flags)) 1221 1221 return NULL; 1222 1222 } else { 1223 - spin_lock_irqsave(&id->lock, flags); 1223 + raw_spin_lock_irqsave(&id->lock, flags); 1224 1224 } 1225 1225 do { 1226 1226 active = get_active_entry(id); ··· 1232 1232 buf += id->buf_size; 1233 1233 } while (len > 0); 1234 1234 1235 - spin_unlock_irqrestore(&id->lock, flags); 1235 + raw_spin_unlock_irqrestore(&id->lock, flags); 1236 1236 return active; 1237 1237 } 1238 1238 EXPORT_SYMBOL(debug_exception_common); ··· 1267 1267 numargs = debug_count_numargs(string); 1268 1268 1269 1269 if (debug_critical) { 1270 - if (!spin_trylock_irqsave(&id->lock, flags)) 1270 + if (!raw_spin_trylock_irqsave(&id->lock, flags)) 1271 1271 return NULL; 1272 1272 } else { 1273 - spin_lock_irqsave(&id->lock, flags); 1273 + raw_spin_lock_irqsave(&id->lock, flags); 1274 1274 } 1275 1275 active = get_active_entry(id); 1276 1276 curr_event = (debug_sprintf_entry_t *) DEBUG_DATA(active); ··· 1280 1280 curr_event->args[idx] = va_arg(ap, long); 1281 1281 va_end(ap); 1282 1282 debug_finish_entry(id, active, level, 0); 1283 - spin_unlock_irqrestore(&id->lock, flags); 1283 + raw_spin_unlock_irqrestore(&id->lock, flags); 1284 1284 1285 1285 return active; 1286 1286 } ··· 1303 1303 numargs = debug_count_numargs(string); 1304 1304 1305 1305 if (debug_critical) { 1306 - if (!spin_trylock_irqsave(&id->lock, flags)) 1306 + if (!raw_spin_trylock_irqsave(&id->lock, flags)) 1307 1307 return NULL; 1308 1308 } else { 1309 - spin_lock_irqsave(&id->lock, flags); 1309 + raw_spin_lock_irqsave(&id->lock, flags); 1310 1310 } 1311 1311 active = get_active_entry(id); 1312 1312 curr_event = (debug_sprintf_entry_t *)DEBUG_DATA(active); ··· 1316 1316 curr_event->args[idx] = va_arg(ap, long); 1317 1317 va_end(ap); 1318 1318 debug_finish_entry(id, active, level, 1); 1319 - spin_unlock_irqrestore(&id->lock, flags); 1319 + raw_spin_unlock_irqrestore(&id->lock, flags); 1320 1320 1321 1321 return active; 1322 1322 } ··· 1350 1350 mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); 1351 1351 pde = debugfs_create_file(view->name, mode, id->debugfs_root_entry, 1352 1352 id, &debug_file_ops); 1353 - spin_lock_irqsave(&id->lock, flags); 1353 + raw_spin_lock_irqsave(&id->lock, flags); 1354 1354 for (i = 0; i < DEBUG_MAX_VIEWS; i++) { 1355 1355 if (!id->views[i]) 1356 1356 break; ··· 1361 1361 id->views[i] = view; 1362 1362 id->debugfs_entries[i] = pde; 1363 1363 } 1364 - spin_unlock_irqrestore(&id->lock, flags); 1364 + raw_spin_unlock_irqrestore(&id->lock, flags); 1365 1365 if (rc) { 1366 1366 pr_err("Registering view %s/%s would exceed the maximum " 1367 1367 "number of views %i\n", id->name, view->name, i); ··· 1391 1391 1392 1392 if (!id) 1393 1393 goto out; 1394 - spin_lock_irqsave(&id->lock, flags); 1394 + raw_spin_lock_irqsave(&id->lock, flags); 1395 1395 for (i = 0; i < DEBUG_MAX_VIEWS; i++) { 1396 1396 if (id->views[i] == view) 1397 1397 break; ··· 1403 1403 id->views[i] = NULL; 1404 1404 id->debugfs_entries[i] = NULL; 1405 1405 } 1406 - spin_unlock_irqrestore(&id->lock, flags); 1406 + raw_spin_unlock_irqrestore(&id->lock, flags); 1407 1407 debugfs_remove(dentry); 1408 1408 out: 1409 1409 return rc; ··· 1557 1557 1558 1558 if (!id || !id->areas) 1559 1559 return; 1560 - spin_lock_irqsave(&id->lock, flags); 1560 + raw_spin_lock_irqsave(&id->lock, flags); 1561 1561 if (area == DEBUG_FLUSH_ALL) { 1562 1562 id->active_area = 0; 1563 1563 memset(id->active_entries, 0, id->nr_areas * sizeof(int)); ··· 1572 1572 for (i = 0; i < id->pages_per_area; i++) 1573 1573 memset(id->areas[area][i], 0, PAGE_SIZE); 1574 1574 } 1575 - spin_unlock_irqrestore(&id->lock, flags); 1575 + raw_spin_unlock_irqrestore(&id->lock, flags); 1576 1576 } 1577 1577 1578 1578 /*
+1 -1
arch/s390/kernel/smp.c
··· 1151 1151 smp_get_core_info(info, 0); 1152 1152 nr = __smp_rescan_cpus(info, early); 1153 1153 kfree(info); 1154 - if (nr) 1154 + if (nr && !early) 1155 1155 topology_schedule_update(); 1156 1156 return 0; 1157 1157 }
+1 -1
drivers/s390/char/tape_3490.c
··· 784 784 785 785 static struct ccw_driver tape_3490_driver = { 786 786 .driver = { 787 - .name = "tape_3490", 787 + .name = "tape_34xx", 788 788 .owner = THIS_MODULE, 789 789 }, 790 790 .ids = tape_3490_ids,