aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/Kconfig5
-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
8 files changed, 36 insertions, 17 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index b21444b681b6..1831833c430e 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -61,6 +61,7 @@ config S390
61 def_bool y 61 def_bool y
62 select HAVE_OPROFILE 62 select HAVE_OPROFILE
63 select HAVE_KPROBES 63 select HAVE_KPROBES
64 select HAVE_KRETPROBES
64 65
65source "init/Kconfig" 66source "init/Kconfig"
66 67
@@ -350,6 +351,10 @@ endchoice
350 351
351source "fs/Kconfig.binfmt" 352source "fs/Kconfig.binfmt"
352 353
354config FORCE_MAX_ZONEORDER
355 int
356 default "9"
357
353config PROCESS_DEBUG 358config PROCESS_DEBUG
354 bool "Show crashed user process info" 359 bool "Show crashed user process info"
355 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());