diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-03-05 20:47:41 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-03-05 20:47:41 -0500 |
commit | 8cce3e7cbe6f09553bfd94250f0a358ba669c8ac (patch) | |
tree | b842b4f9f176c54356fcbff04483a59aabe76a9d | |
parent | a878539ef994787c447a98c2e3ba0fe3dad984ec (diff) | |
parent | 583b33bc83d24791f11e862290ee0b79d804d2d8 (diff) |
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.
-rw-r--r-- | arch/s390/Kconfig | 4 | ||||
-rw-r--r-- | arch/s390/defconfig | 18 | ||||
-rw-r--r-- | arch/s390/kernel/Makefile | 5 | ||||
-rw-r--r-- | arch/s390/kernel/early.c | 8 | ||||
-rw-r--r-- | arch/s390/kernel/ipl.c | 1 | ||||
-rw-r--r-- | arch/s390/kernel/process.c | 4 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 10 | ||||
-rw-r--r-- | arch/s390/kernel/time.c | 2 | ||||
-rw-r--r-- | drivers/s390/block/dasd_3990_erp.c | 6 | ||||
-rw-r--r-- | drivers/s390/block/dasd_proc.c | 4 | ||||
-rw-r--r-- | drivers/s390/char/sclp_vt220.c | 2 | ||||
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 12 |
12 files changed, 48 insertions, 28 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 9892827b6176..1831833c430e 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -351,6 +351,10 @@ endchoice | |||
351 | 351 | ||
352 | source "fs/Kconfig.binfmt" | 352 | source "fs/Kconfig.binfmt" |
353 | 353 | ||
354 | config FORCE_MAX_ZONEORDER | ||
355 | int | ||
356 | default "9" | ||
357 | |||
354 | config PROCESS_DEBUG | 358 | config PROCESS_DEBUG |
355 | bool "Show crashed user process info" | 359 | bool "Show crashed user process info" |
356 | help | 360 | help |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index 39921f3a9685..62f6b5a606dd 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24 | 3 | # Linux kernel version: 2.6.25-rc4 |
4 | # Sat Feb 9 12:13:01 2008 | 4 | # Wed Mar 5 11:22:59 2008 |
5 | # | 5 | # |
6 | CONFIG_MMU=y | 6 | CONFIG_MMU=y |
7 | CONFIG_ZONE_DMA=y | 7 | CONFIG_ZONE_DMA=y |
@@ -43,12 +43,15 @@ CONFIG_CGROUPS=y | |||
43 | # CONFIG_CGROUP_DEBUG is not set | 43 | # CONFIG_CGROUP_DEBUG is not set |
44 | CONFIG_CGROUP_NS=y | 44 | CONFIG_CGROUP_NS=y |
45 | # CONFIG_CPUSETS is not set | 45 | # CONFIG_CPUSETS is not set |
46 | CONFIG_GROUP_SCHED=y | ||
46 | CONFIG_FAIR_GROUP_SCHED=y | 47 | CONFIG_FAIR_GROUP_SCHED=y |
47 | CONFIG_FAIR_USER_SCHED=y | 48 | # CONFIG_RT_GROUP_SCHED is not set |
48 | # CONFIG_FAIR_CGROUP_SCHED is not set | 49 | CONFIG_USER_SCHED=y |
50 | # CONFIG_CGROUP_SCHED is not set | ||
49 | # CONFIG_CGROUP_CPUACCT is not set | 51 | # CONFIG_CGROUP_CPUACCT is not set |
50 | # CONFIG_RESOURCE_COUNTERS is not set | 52 | # CONFIG_RESOURCE_COUNTERS is not set |
51 | CONFIG_SYSFS_DEPRECATED=y | 53 | CONFIG_SYSFS_DEPRECATED=y |
54 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
52 | # CONFIG_RELAY is not set | 55 | # CONFIG_RELAY is not set |
53 | CONFIG_NAMESPACES=y | 56 | CONFIG_NAMESPACES=y |
54 | CONFIG_UTS_NS=y | 57 | CONFIG_UTS_NS=y |
@@ -85,7 +88,9 @@ CONFIG_SLAB=y | |||
85 | # CONFIG_MARKERS is not set | 88 | # CONFIG_MARKERS is not set |
86 | CONFIG_HAVE_OPROFILE=y | 89 | CONFIG_HAVE_OPROFILE=y |
87 | CONFIG_KPROBES=y | 90 | CONFIG_KPROBES=y |
91 | CONFIG_KRETPROBES=y | ||
88 | CONFIG_HAVE_KPROBES=y | 92 | CONFIG_HAVE_KPROBES=y |
93 | CONFIG_HAVE_KRETPROBES=y | ||
89 | CONFIG_PROC_PAGE_MONITOR=y | 94 | CONFIG_PROC_PAGE_MONITOR=y |
90 | CONFIG_SLABINFO=y | 95 | CONFIG_SLABINFO=y |
91 | CONFIG_RT_MUTEXES=y | 96 | CONFIG_RT_MUTEXES=y |
@@ -185,6 +190,7 @@ CONFIG_IPL=y | |||
185 | CONFIG_IPL_VM=y | 190 | CONFIG_IPL_VM=y |
186 | CONFIG_BINFMT_ELF=y | 191 | CONFIG_BINFMT_ELF=y |
187 | CONFIG_BINFMT_MISC=m | 192 | CONFIG_BINFMT_MISC=m |
193 | CONFIG_FORCE_MAX_ZONEORDER=9 | ||
188 | # CONFIG_PROCESS_DEBUG is not set | 194 | # CONFIG_PROCESS_DEBUG is not set |
189 | CONFIG_PFAULT=y | 195 | CONFIG_PFAULT=y |
190 | # CONFIG_SHARED_KERNEL is not set | 196 | # CONFIG_SHARED_KERNEL is not set |
@@ -435,6 +441,7 @@ CONFIG_DASD_EER=y | |||
435 | CONFIG_MISC_DEVICES=y | 441 | CONFIG_MISC_DEVICES=y |
436 | # CONFIG_EEPROM_93CX6 is not set | 442 | # CONFIG_EEPROM_93CX6 is not set |
437 | # CONFIG_ENCLOSURE_SERVICES is not set | 443 | # CONFIG_ENCLOSURE_SERVICES is not set |
444 | # CONFIG_HAVE_IDE is not set | ||
438 | 445 | ||
439 | # | 446 | # |
440 | # SCSI device support | 447 | # SCSI device support |
@@ -593,6 +600,7 @@ CONFIG_S390_VMUR=m | |||
593 | # | 600 | # |
594 | # Sonics Silicon Backplane | 601 | # Sonics Silicon Backplane |
595 | # | 602 | # |
603 | # CONFIG_MEMSTICK is not set | ||
596 | 604 | ||
597 | # | 605 | # |
598 | # File systems | 606 | # File systems |
@@ -750,7 +758,6 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
750 | # CONFIG_DEBUG_LIST is not set | 758 | # CONFIG_DEBUG_LIST is not set |
751 | # CONFIG_DEBUG_SG is not set | 759 | # CONFIG_DEBUG_SG is not set |
752 | # CONFIG_FRAME_POINTER is not set | 760 | # CONFIG_FRAME_POINTER is not set |
753 | CONFIG_FORCED_INLINING=y | ||
754 | # CONFIG_RCU_TORTURE_TEST is not set | 761 | # CONFIG_RCU_TORTURE_TEST is not set |
755 | # CONFIG_KPROBES_SANITY_TEST is not set | 762 | # CONFIG_KPROBES_SANITY_TEST is not set |
756 | # CONFIG_BACKTRACE_SELF_TEST is not set | 763 | # CONFIG_BACKTRACE_SELF_TEST is not set |
@@ -759,6 +766,7 @@ CONFIG_FORCED_INLINING=y | |||
759 | # CONFIG_LATENCYTOP is not set | 766 | # CONFIG_LATENCYTOP is not set |
760 | CONFIG_SAMPLES=y | 767 | CONFIG_SAMPLES=y |
761 | # CONFIG_SAMPLE_KOBJECT is not set | 768 | # CONFIG_SAMPLE_KOBJECT is not set |
769 | # CONFIG_SAMPLE_KPROBES is not set | ||
762 | # CONFIG_DEBUG_PAGEALLOC is not set | 770 | # CONFIG_DEBUG_PAGEALLOC is not set |
763 | 771 | ||
764 | # | 772 | # |
diff --git a/arch/s390/kernel/Makefile b/arch/s390/kernel/Makefile index b3b650a93c7c..4d3e38392cb1 100644 --- a/arch/s390/kernel/Makefile +++ b/arch/s390/kernel/Makefile | |||
@@ -4,6 +4,11 @@ | |||
4 | 4 | ||
5 | EXTRA_AFLAGS := -traditional | 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 | obj-y := bitmap.o traps.o time.o process.o base.o early.o \ | 12 | 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 \ | 13 | 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 | 14 | semaphore.o s390_ext.o debug.o irq.o ipl.o dis.o diag.o |
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index 9f7b73b180f0..01832c440636 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c | |||
@@ -88,13 +88,17 @@ static noinline __init void create_kernel_nss(void) | |||
88 | 88 | ||
89 | __cpcmd(defsys_cmd, NULL, 0, &response); | 89 | __cpcmd(defsys_cmd, NULL, 0, &response); |
90 | 90 | ||
91 | if (response != 0) | 91 | if (response != 0) { |
92 | kernel_nss_name[0] = '\0'; | ||
92 | return; | 93 | return; |
94 | } | ||
93 | 95 | ||
94 | __cpcmd(savesys_cmd, NULL, 0, &response); | 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 | return; | 100 | return; |
101 | } | ||
98 | 102 | ||
99 | ipl_flags = IPL_NSS_VALID; | 103 | ipl_flags = IPL_NSS_VALID; |
100 | } | 104 | } |
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 60acdc266db1..375232c46c7a 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -704,6 +704,7 @@ void reipl_run(struct shutdown_trigger *trigger) | |||
704 | default: | 704 | default: |
705 | break; | 705 | break; |
706 | } | 706 | } |
707 | disabled_wait((unsigned long) __builtin_return_address(0)); | ||
707 | } | 708 | } |
708 | 709 | ||
709 | static void __init reipl_probe(void) | 710 | static void __init reipl_probe(void) |
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 1c59ec161cf8..ce203154d8ce 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -152,6 +152,10 @@ static void default_idle(void) | |||
152 | local_mcck_disable(); | 152 | local_mcck_disable(); |
153 | if (test_thread_flag(TIF_MCCK_PENDING)) { | 153 | if (test_thread_flag(TIF_MCCK_PENDING)) { |
154 | local_mcck_enable(); | 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 | local_irq_enable(); | 159 | local_irq_enable(); |
156 | s390_handle_mcck(); | 160 | s390_handle_mcck(); |
157 | return; | 161 | return; |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 818bd09c0260..8f894d380a62 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -629,14 +629,8 @@ static int __cpuinit smp_alloc_lowcore(int cpu) | |||
629 | panic_stack = __get_free_page(GFP_KERNEL); | 629 | panic_stack = __get_free_page(GFP_KERNEL); |
630 | if (!panic_stack || !async_stack) | 630 | if (!panic_stack || !async_stack) |
631 | goto out; | 631 | goto out; |
632 | /* | 632 | memcpy(lowcore, &S390_lowcore, 512); |
633 | * Only need to copy the first 512 bytes from address 0. But since | 633 | memset((char *)lowcore + 512, 0, sizeof(*lowcore) - 512); |
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; | 634 | lowcore->async_stack = async_stack + ASYNC_SIZE; |
641 | lowcore->panic_stack = panic_stack + PAGE_SIZE; | 635 | lowcore->panic_stack = panic_stack + PAGE_SIZE; |
642 | 636 | ||
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index 76a5dd1b4ce9..cb232c155360 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c | |||
@@ -209,8 +209,6 @@ static void stop_hz_timer(void) | |||
209 | */ | 209 | */ |
210 | static void start_hz_timer(void) | 210 | static void start_hz_timer(void) |
211 | { | 211 | { |
212 | BUG_ON(!in_interrupt()); | ||
213 | |||
214 | if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) | 212 | if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) |
215 | return; | 213 | return; |
216 | account_ticks(get_clock()); | 214 | account_ticks(get_clock()); |
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c index f69714a0e9e7..b19db20a0bef 100644 --- a/drivers/s390/block/dasd_3990_erp.c +++ b/drivers/s390/block/dasd_3990_erp.c | |||
@@ -2310,10 +2310,8 @@ static int | |||
2310 | dasd_3990_erp_error_match(struct dasd_ccw_req *cqr1, struct dasd_ccw_req *cqr2) | 2310 | dasd_3990_erp_error_match(struct dasd_ccw_req *cqr1, struct dasd_ccw_req *cqr2) |
2311 | { | 2311 | { |
2312 | 2312 | ||
2313 | /* check failed CCW */ | 2313 | if (cqr1->startdev != cqr2->startdev) |
2314 | if (cqr1->irb.scsw.cpa != cqr2->irb.scsw.cpa) { | 2314 | return 0; |
2315 | // return 0; /* CCW doesn't match */ | ||
2316 | } | ||
2317 | 2315 | ||
2318 | if (cqr1->irb.esw.esw0.erw.cons != cqr2->irb.esw.esw0.erw.cons) | 2316 | if (cqr1->irb.esw.esw0.erw.cons != cqr2->irb.esw.esw0.erw.cons) |
2319 | return 0; | 2317 | return 0; |
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c index 28a86f070048..556063e8f7a9 100644 --- a/drivers/s390/block/dasd_proc.c +++ b/drivers/s390/block/dasd_proc.c | |||
@@ -62,8 +62,10 @@ dasd_devices_show(struct seq_file *m, void *v) | |||
62 | return 0; | 62 | return 0; |
63 | if (device->block) | 63 | if (device->block) |
64 | block = device->block; | 64 | block = device->block; |
65 | else | 65 | else { |
66 | dasd_put_device(device); | ||
66 | return 0; | 67 | return 0; |
68 | } | ||
67 | /* Print device number. */ | 69 | /* Print device number. */ |
68 | seq_printf(m, "%s", device->cdev->dev.bus_id); | 70 | seq_printf(m, "%s", device->cdev->dev.bus_id); |
69 | /* Print discipline string. */ | 71 | /* Print discipline string. */ |
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c index 92f527201792..f7b258dfd52c 100644 --- a/drivers/s390/char/sclp_vt220.c +++ b/drivers/s390/char/sclp_vt220.c | |||
@@ -367,7 +367,7 @@ sclp_vt220_timeout(unsigned long data) | |||
367 | sclp_vt220_emit_current(); | 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 | * Internal implementation of the write function. Write COUNT bytes of data | 373 | * Internal implementation of the write function. Write COUNT bytes of data |
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index d0c6fd3b1c19..7b0b81901297 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
@@ -490,10 +490,12 @@ static int ap_device_probe(struct device *dev) | |||
490 | int rc; | 490 | int rc; |
491 | 491 | ||
492 | ap_dev->drv = ap_drv; | 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; | 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 | return rc; | 499 | return rc; |
498 | } | 500 | } |
499 | 501 | ||
@@ -532,11 +534,11 @@ static int ap_device_remove(struct device *dev) | |||
532 | 534 | ||
533 | ap_flush_queue(ap_dev); | 535 | ap_flush_queue(ap_dev); |
534 | del_timer_sync(&ap_dev->timeout); | 536 | del_timer_sync(&ap_dev->timeout); |
535 | if (ap_drv->remove) | ||
536 | ap_drv->remove(ap_dev); | ||
537 | spin_lock_bh(&ap_device_lock); | 537 | spin_lock_bh(&ap_device_lock); |
538 | list_del_init(&ap_dev->list); | 538 | list_del_init(&ap_dev->list); |
539 | spin_unlock_bh(&ap_device_lock); | 539 | spin_unlock_bh(&ap_device_lock); |
540 | if (ap_drv->remove) | ||
541 | ap_drv->remove(ap_dev); | ||
540 | spin_lock_bh(&ap_dev->lock); | 542 | spin_lock_bh(&ap_dev->lock); |
541 | atomic_sub(ap_dev->queue_count, &ap_poll_requests); | 543 | atomic_sub(ap_dev->queue_count, &ap_poll_requests); |
542 | spin_unlock_bh(&ap_dev->lock); | 544 | spin_unlock_bh(&ap_dev->lock); |