aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-05 20:47:41 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-05 20:47:41 -0500
commit8cce3e7cbe6f09553bfd94250f0a358ba669c8ac (patch)
treeb842b4f9f176c54356fcbff04483a59aabe76a9d
parenta878539ef994787c447a98c2e3ba0fe3dad984ec (diff)
parent583b33bc83d24791f11e862290ee0b79d804d2d8 (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/Kconfig4
-rw-r--r--arch/s390/defconfig18
-rw-r--r--arch/s390/kernel/Makefile5
-rw-r--r--arch/s390/kernel/early.c8
-rw-r--r--arch/s390/kernel/ipl.c1
-rw-r--r--arch/s390/kernel/process.c4
-rw-r--r--arch/s390/kernel/smp.c10
-rw-r--r--arch/s390/kernel/time.c2
-rw-r--r--drivers/s390/block/dasd_3990_erp.c6
-rw-r--r--drivers/s390/block/dasd_proc.c4
-rw-r--r--drivers/s390/char/sclp_vt220.c2
-rw-r--r--drivers/s390/crypto/ap_bus.c12
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
352source "fs/Kconfig.binfmt" 352source "fs/Kconfig.binfmt"
353 353
354config FORCE_MAX_ZONEORDER
355 int
356 default "9"
357
354config PROCESS_DEBUG 358config 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#
6CONFIG_MMU=y 6CONFIG_MMU=y
7CONFIG_ZONE_DMA=y 7CONFIG_ZONE_DMA=y
@@ -43,12 +43,15 @@ CONFIG_CGROUPS=y
43# CONFIG_CGROUP_DEBUG is not set 43# CONFIG_CGROUP_DEBUG is not set
44CONFIG_CGROUP_NS=y 44CONFIG_CGROUP_NS=y
45# CONFIG_CPUSETS is not set 45# CONFIG_CPUSETS is not set
46CONFIG_GROUP_SCHED=y
46CONFIG_FAIR_GROUP_SCHED=y 47CONFIG_FAIR_GROUP_SCHED=y
47CONFIG_FAIR_USER_SCHED=y 48# CONFIG_RT_GROUP_SCHED is not set
48# CONFIG_FAIR_CGROUP_SCHED is not set 49CONFIG_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
51CONFIG_SYSFS_DEPRECATED=y 53CONFIG_SYSFS_DEPRECATED=y
54CONFIG_SYSFS_DEPRECATED_V2=y
52# CONFIG_RELAY is not set 55# CONFIG_RELAY is not set
53CONFIG_NAMESPACES=y 56CONFIG_NAMESPACES=y
54CONFIG_UTS_NS=y 57CONFIG_UTS_NS=y
@@ -85,7 +88,9 @@ CONFIG_SLAB=y
85# CONFIG_MARKERS is not set 88# CONFIG_MARKERS is not set
86CONFIG_HAVE_OPROFILE=y 89CONFIG_HAVE_OPROFILE=y
87CONFIG_KPROBES=y 90CONFIG_KPROBES=y
91CONFIG_KRETPROBES=y
88CONFIG_HAVE_KPROBES=y 92CONFIG_HAVE_KPROBES=y
93CONFIG_HAVE_KRETPROBES=y
89CONFIG_PROC_PAGE_MONITOR=y 94CONFIG_PROC_PAGE_MONITOR=y
90CONFIG_SLABINFO=y 95CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 96CONFIG_RT_MUTEXES=y
@@ -185,6 +190,7 @@ CONFIG_IPL=y
185CONFIG_IPL_VM=y 190CONFIG_IPL_VM=y
186CONFIG_BINFMT_ELF=y 191CONFIG_BINFMT_ELF=y
187CONFIG_BINFMT_MISC=m 192CONFIG_BINFMT_MISC=m
193CONFIG_FORCE_MAX_ZONEORDER=9
188# CONFIG_PROCESS_DEBUG is not set 194# CONFIG_PROCESS_DEBUG is not set
189CONFIG_PFAULT=y 195CONFIG_PFAULT=y
190# CONFIG_SHARED_KERNEL is not set 196# CONFIG_SHARED_KERNEL is not set
@@ -435,6 +441,7 @@ CONFIG_DASD_EER=y
435CONFIG_MISC_DEVICES=y 441CONFIG_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
753CONFIG_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
760CONFIG_SAMPLES=y 767CONFIG_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
5EXTRA_AFLAGS := -traditional 5EXTRA_AFLAGS := -traditional
6 6
7#
8# Passing null pointers is ok for smp code, since we access the lowcore here.
9#
10CFLAGS_smp.o := -Wno-nonnull
11
7obj-y := bitmap.o traps.o time.o process.o base.o early.o \ 12obj-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
709static void __init reipl_probe(void) 710static 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 */
210static void start_hz_timer(void) 210static 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
2310dasd_3990_erp_error_match(struct dasd_ccw_req *cqr1, struct dasd_ccw_req *cqr2) 2310dasd_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);