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