Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] incorrect reipl nss name.
[S390] Load disabled wait psw if reipl fails.
[S390] Fix IPL from NSS.
[S390] zcrypt: fix ap_device_list handling
[S390] sclp_vt220: speed up console output for interactive work
[S390] dasd: fix reference counting in display method for proc/dasd/devices
[S390] dasd: let dasd erp matching recognize alias recovery
[S390] Get rid of memcpy gcc warning workaround.
[S390] idle: Fix machine check handling in idle loop.
[S390] Update default configuration.

+48 -28
+4
arch/s390/Kconfig
··· 351 351 352 352 source "fs/Kconfig.binfmt" 353 353 354 + config FORCE_MAX_ZONEORDER 355 + int 356 + default "9" 357 + 354 358 config PROCESS_DEBUG 355 359 bool "Show crashed user process info" 356 360 help
+13 -5
arch/s390/defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.24 4 - # Sat Feb 9 12:13:01 2008 3 + # Linux kernel version: 2.6.25-rc4 4 + # Wed Mar 5 11:22:59 2008 5 5 # 6 6 CONFIG_MMU=y 7 7 CONFIG_ZONE_DMA=y ··· 43 43 # CONFIG_CGROUP_DEBUG is not set 44 44 CONFIG_CGROUP_NS=y 45 45 # CONFIG_CPUSETS is not set 46 + CONFIG_GROUP_SCHED=y 46 47 CONFIG_FAIR_GROUP_SCHED=y 47 - CONFIG_FAIR_USER_SCHED=y 48 - # CONFIG_FAIR_CGROUP_SCHED is not set 48 + # CONFIG_RT_GROUP_SCHED is not set 49 + CONFIG_USER_SCHED=y 50 + # CONFIG_CGROUP_SCHED is not set 49 51 # CONFIG_CGROUP_CPUACCT is not set 50 52 # CONFIG_RESOURCE_COUNTERS is not set 51 53 CONFIG_SYSFS_DEPRECATED=y 54 + CONFIG_SYSFS_DEPRECATED_V2=y 52 55 # CONFIG_RELAY is not set 53 56 CONFIG_NAMESPACES=y 54 57 CONFIG_UTS_NS=y ··· 88 85 # CONFIG_MARKERS is not set 89 86 CONFIG_HAVE_OPROFILE=y 90 87 CONFIG_KPROBES=y 88 + CONFIG_KRETPROBES=y 91 89 CONFIG_HAVE_KPROBES=y 90 + CONFIG_HAVE_KRETPROBES=y 92 91 CONFIG_PROC_PAGE_MONITOR=y 93 92 CONFIG_SLABINFO=y 94 93 CONFIG_RT_MUTEXES=y ··· 190 185 CONFIG_IPL_VM=y 191 186 CONFIG_BINFMT_ELF=y 192 187 CONFIG_BINFMT_MISC=m 188 + CONFIG_FORCE_MAX_ZONEORDER=9 193 189 # CONFIG_PROCESS_DEBUG is not set 194 190 CONFIG_PFAULT=y 195 191 # CONFIG_SHARED_KERNEL is not set ··· 441 435 CONFIG_MISC_DEVICES=y 442 436 # CONFIG_EEPROM_93CX6 is not set 443 437 # CONFIG_ENCLOSURE_SERVICES is not set 438 + # CONFIG_HAVE_IDE is not set 444 439 445 440 # 446 441 # SCSI device support ··· 600 593 # 601 594 # Sonics Silicon Backplane 602 595 # 596 + # CONFIG_MEMSTICK is not set 603 597 604 598 # 605 599 # File systems ··· 758 750 # CONFIG_DEBUG_LIST is not set 759 751 # CONFIG_DEBUG_SG is not set 760 752 # CONFIG_FRAME_POINTER is not set 761 - CONFIG_FORCED_INLINING=y 762 753 # CONFIG_RCU_TORTURE_TEST is not set 763 754 # CONFIG_KPROBES_SANITY_TEST is not set 764 755 # CONFIG_BACKTRACE_SELF_TEST is not set ··· 766 759 # CONFIG_LATENCYTOP is not set 767 760 CONFIG_SAMPLES=y 768 761 # CONFIG_SAMPLE_KOBJECT is not set 762 + # CONFIG_SAMPLE_KPROBES is not set 769 763 # CONFIG_DEBUG_PAGEALLOC is not set 770 764 771 765 #
+5
arch/s390/kernel/Makefile
··· 4 4 5 5 EXTRA_AFLAGS := -traditional 6 6 7 + # 8 + # Passing null pointers is ok for smp code, since we access the lowcore here. 9 + # 10 + CFLAGS_smp.o := -Wno-nonnull 11 + 7 12 obj-y := bitmap.o traps.o time.o process.o base.o early.o \ 8 13 setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \ 9 14 semaphore.o s390_ext.o debug.o irq.o ipl.o dis.o diag.o
+6 -2
arch/s390/kernel/early.c
··· 88 88 89 89 __cpcmd(defsys_cmd, NULL, 0, &response); 90 90 91 - if (response != 0) 91 + if (response != 0) { 92 + kernel_nss_name[0] = '\0'; 92 93 return; 94 + } 93 95 94 96 __cpcmd(savesys_cmd, NULL, 0, &response); 95 97 96 - if (response != strlen(savesys_cmd)) 98 + if (response != strlen(savesys_cmd)) { 99 + kernel_nss_name[0] = '\0'; 97 100 return; 101 + } 98 102 99 103 ipl_flags = IPL_NSS_VALID; 100 104 }
+1
arch/s390/kernel/ipl.c
··· 704 704 default: 705 705 break; 706 706 } 707 + disabled_wait((unsigned long) __builtin_return_address(0)); 707 708 } 708 709 709 710 static void __init reipl_probe(void)
+4
arch/s390/kernel/process.c
··· 152 152 local_mcck_disable(); 153 153 if (test_thread_flag(TIF_MCCK_PENDING)) { 154 154 local_mcck_enable(); 155 + /* disable monitor call class 0 */ 156 + __ctl_clear_bit(8, 15); 157 + atomic_notifier_call_chain(&idle_chain, S390_CPU_NOT_IDLE, 158 + hcpu); 155 159 local_irq_enable(); 156 160 s390_handle_mcck(); 157 161 return;
+2 -8
arch/s390/kernel/smp.c
··· 629 629 panic_stack = __get_free_page(GFP_KERNEL); 630 630 if (!panic_stack || !async_stack) 631 631 goto out; 632 - /* 633 - * Only need to copy the first 512 bytes from address 0. But since 634 - * the compiler emits a warning if src == NULL for memcpy use copy_page 635 - * instead. Copies more than needed but this code is not performance 636 - * critical. 637 - */ 638 - copy_page(lowcore, &S390_lowcore); 639 - memset((void *)lowcore + 512, 0, sizeof(*lowcore) - 512); 632 + memcpy(lowcore, &S390_lowcore, 512); 633 + memset((char *)lowcore + 512, 0, sizeof(*lowcore) - 512); 640 634 lowcore->async_stack = async_stack + ASYNC_SIZE; 641 635 lowcore->panic_stack = panic_stack + PAGE_SIZE; 642 636
-2
arch/s390/kernel/time.c
··· 209 209 */ 210 210 static void start_hz_timer(void) 211 211 { 212 - BUG_ON(!in_interrupt()); 213 - 214 212 if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) 215 213 return; 216 214 account_ticks(get_clock());
+2 -4
drivers/s390/block/dasd_3990_erp.c
··· 2310 2310 dasd_3990_erp_error_match(struct dasd_ccw_req *cqr1, struct dasd_ccw_req *cqr2) 2311 2311 { 2312 2312 2313 - /* check failed CCW */ 2314 - if (cqr1->irb.scsw.cpa != cqr2->irb.scsw.cpa) { 2315 - // return 0; /* CCW doesn't match */ 2316 - } 2313 + if (cqr1->startdev != cqr2->startdev) 2314 + return 0; 2317 2315 2318 2316 if (cqr1->irb.esw.esw0.erw.cons != cqr2->irb.esw.esw0.erw.cons) 2319 2317 return 0;
+3 -1
drivers/s390/block/dasd_proc.c
··· 62 62 return 0; 63 63 if (device->block) 64 64 block = device->block; 65 - else 65 + else { 66 + dasd_put_device(device); 66 67 return 0; 68 + } 67 69 /* Print device number. */ 68 70 seq_printf(m, "%s", device->cdev->dev.bus_id); 69 71 /* Print discipline string. */
+1 -1
drivers/s390/char/sclp_vt220.c
··· 367 367 sclp_vt220_emit_current(); 368 368 } 369 369 370 - #define BUFFER_MAX_DELAY HZ/2 370 + #define BUFFER_MAX_DELAY HZ/20 371 371 372 372 /* 373 373 * Internal implementation of the write function. Write COUNT bytes of data
+7 -5
drivers/s390/crypto/ap_bus.c
··· 490 490 int rc; 491 491 492 492 ap_dev->drv = ap_drv; 493 - spin_lock_bh(&ap_device_lock); 494 - list_add(&ap_dev->list, &ap_device_list); 495 - spin_unlock_bh(&ap_device_lock); 496 493 rc = ap_drv->probe ? ap_drv->probe(ap_dev) : -ENODEV; 494 + if (!rc) { 495 + spin_lock_bh(&ap_device_lock); 496 + list_add(&ap_dev->list, &ap_device_list); 497 + spin_unlock_bh(&ap_device_lock); 498 + } 497 499 return rc; 498 500 } 499 501 ··· 534 532 535 533 ap_flush_queue(ap_dev); 536 534 del_timer_sync(&ap_dev->timeout); 537 - if (ap_drv->remove) 538 - ap_drv->remove(ap_dev); 539 535 spin_lock_bh(&ap_device_lock); 540 536 list_del_init(&ap_dev->list); 541 537 spin_unlock_bh(&ap_device_lock); 538 + if (ap_drv->remove) 539 + ap_drv->remove(ap_dev); 542 540 spin_lock_bh(&ap_dev->lock); 543 541 atomic_sub(ap_dev->queue_count, &ap_poll_requests); 544 542 spin_unlock_bh(&ap_dev->lock);