diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/configs/default_defconfig | 5 | ||||
-rw-r--r-- | arch/s390/configs/gcov_defconfig | 5 | ||||
-rw-r--r-- | arch/s390/configs/performance_defconfig | 5 | ||||
-rw-r--r-- | arch/s390/configs/zfcpdump_defconfig | 3 | ||||
-rw-r--r-- | arch/s390/defconfig | 8 | ||||
-rw-r--r-- | arch/s390/include/asm/mmu_context.h | 33 | ||||
-rw-r--r-- | arch/s390/include/asm/switch_to.h | 4 | ||||
-rw-r--r-- | arch/s390/include/uapi/asm/ucontext.h | 8 | ||||
-rw-r--r-- | arch/s390/kernel/compat_linux.h | 4 |
9 files changed, 43 insertions, 32 deletions
diff --git a/arch/s390/configs/default_defconfig b/arch/s390/configs/default_defconfig index 8df022c43af7..fd09a10a2b53 100644 --- a/arch/s390/configs/default_defconfig +++ b/arch/s390/configs/default_defconfig | |||
@@ -45,7 +45,8 @@ CONFIG_SOLARIS_X86_PARTITION=y | |||
45 | CONFIG_UNIXWARE_DISKLABEL=y | 45 | CONFIG_UNIXWARE_DISKLABEL=y |
46 | CONFIG_CFQ_GROUP_IOSCHED=y | 46 | CONFIG_CFQ_GROUP_IOSCHED=y |
47 | CONFIG_DEFAULT_DEADLINE=y | 47 | CONFIG_DEFAULT_DEADLINE=y |
48 | CONFIG_MARCH_Z9_109=y | 48 | CONFIG_MARCH_Z196=y |
49 | CONFIG_TUNE_ZEC12=y | ||
49 | CONFIG_NR_CPUS=256 | 50 | CONFIG_NR_CPUS=256 |
50 | CONFIG_PREEMPT=y | 51 | CONFIG_PREEMPT=y |
51 | CONFIG_HZ_100=y | 52 | CONFIG_HZ_100=y |
@@ -240,7 +241,6 @@ CONFIG_IP_VS_PE_SIP=m | |||
240 | CONFIG_NF_CONNTRACK_IPV4=m | 241 | CONFIG_NF_CONNTRACK_IPV4=m |
241 | # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set | 242 | # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set |
242 | CONFIG_NF_TABLES_IPV4=m | 243 | CONFIG_NF_TABLES_IPV4=m |
243 | CONFIG_NFT_REJECT_IPV4=m | ||
244 | CONFIG_NFT_CHAIN_ROUTE_IPV4=m | 244 | CONFIG_NFT_CHAIN_ROUTE_IPV4=m |
245 | CONFIG_NFT_CHAIN_NAT_IPV4=m | 245 | CONFIG_NFT_CHAIN_NAT_IPV4=m |
246 | CONFIG_NF_TABLES_ARP=m | 246 | CONFIG_NF_TABLES_ARP=m |
@@ -456,6 +456,7 @@ CONFIG_TN3270_FS=y | |||
456 | CONFIG_WATCHDOG=y | 456 | CONFIG_WATCHDOG=y |
457 | CONFIG_WATCHDOG_NOWAYOUT=y | 457 | CONFIG_WATCHDOG_NOWAYOUT=y |
458 | CONFIG_SOFT_WATCHDOG=m | 458 | CONFIG_SOFT_WATCHDOG=m |
459 | CONFIG_DIAG288_WATCHDOG=m | ||
459 | # CONFIG_HID is not set | 460 | # CONFIG_HID is not set |
460 | # CONFIG_USB_SUPPORT is not set | 461 | # CONFIG_USB_SUPPORT is not set |
461 | CONFIG_INFINIBAND=m | 462 | CONFIG_INFINIBAND=m |
diff --git a/arch/s390/configs/gcov_defconfig b/arch/s390/configs/gcov_defconfig index c81a74e3e25a..b061180d3544 100644 --- a/arch/s390/configs/gcov_defconfig +++ b/arch/s390/configs/gcov_defconfig | |||
@@ -45,7 +45,8 @@ CONFIG_SOLARIS_X86_PARTITION=y | |||
45 | CONFIG_UNIXWARE_DISKLABEL=y | 45 | CONFIG_UNIXWARE_DISKLABEL=y |
46 | CONFIG_CFQ_GROUP_IOSCHED=y | 46 | CONFIG_CFQ_GROUP_IOSCHED=y |
47 | CONFIG_DEFAULT_DEADLINE=y | 47 | CONFIG_DEFAULT_DEADLINE=y |
48 | CONFIG_MARCH_Z9_109=y | 48 | CONFIG_MARCH_Z196=y |
49 | CONFIG_TUNE_ZEC12=y | ||
49 | CONFIG_NR_CPUS=256 | 50 | CONFIG_NR_CPUS=256 |
50 | CONFIG_HZ_100=y | 51 | CONFIG_HZ_100=y |
51 | CONFIG_MEMORY_HOTPLUG=y | 52 | CONFIG_MEMORY_HOTPLUG=y |
@@ -238,7 +239,6 @@ CONFIG_IP_VS_PE_SIP=m | |||
238 | CONFIG_NF_CONNTRACK_IPV4=m | 239 | CONFIG_NF_CONNTRACK_IPV4=m |
239 | # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set | 240 | # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set |
240 | CONFIG_NF_TABLES_IPV4=m | 241 | CONFIG_NF_TABLES_IPV4=m |
241 | CONFIG_NFT_REJECT_IPV4=m | ||
242 | CONFIG_NFT_CHAIN_ROUTE_IPV4=m | 242 | CONFIG_NFT_CHAIN_ROUTE_IPV4=m |
243 | CONFIG_NFT_CHAIN_NAT_IPV4=m | 243 | CONFIG_NFT_CHAIN_NAT_IPV4=m |
244 | CONFIG_NF_TABLES_ARP=m | 244 | CONFIG_NF_TABLES_ARP=m |
@@ -453,6 +453,7 @@ CONFIG_TN3270_FS=y | |||
453 | CONFIG_WATCHDOG=y | 453 | CONFIG_WATCHDOG=y |
454 | CONFIG_WATCHDOG_NOWAYOUT=y | 454 | CONFIG_WATCHDOG_NOWAYOUT=y |
455 | CONFIG_SOFT_WATCHDOG=m | 455 | CONFIG_SOFT_WATCHDOG=m |
456 | CONFIG_DIAG288_WATCHDOG=m | ||
456 | # CONFIG_HID is not set | 457 | # CONFIG_HID is not set |
457 | # CONFIG_USB_SUPPORT is not set | 458 | # CONFIG_USB_SUPPORT is not set |
458 | CONFIG_INFINIBAND=m | 459 | CONFIG_INFINIBAND=m |
diff --git a/arch/s390/configs/performance_defconfig b/arch/s390/configs/performance_defconfig index b5ba8fe1cc64..d279baa08014 100644 --- a/arch/s390/configs/performance_defconfig +++ b/arch/s390/configs/performance_defconfig | |||
@@ -43,7 +43,8 @@ CONFIG_SOLARIS_X86_PARTITION=y | |||
43 | CONFIG_UNIXWARE_DISKLABEL=y | 43 | CONFIG_UNIXWARE_DISKLABEL=y |
44 | CONFIG_CFQ_GROUP_IOSCHED=y | 44 | CONFIG_CFQ_GROUP_IOSCHED=y |
45 | CONFIG_DEFAULT_DEADLINE=y | 45 | CONFIG_DEFAULT_DEADLINE=y |
46 | CONFIG_MARCH_Z9_109=y | 46 | CONFIG_MARCH_Z196=y |
47 | CONFIG_TUNE_ZEC12=y | ||
47 | CONFIG_NR_CPUS=256 | 48 | CONFIG_NR_CPUS=256 |
48 | CONFIG_HZ_100=y | 49 | CONFIG_HZ_100=y |
49 | CONFIG_MEMORY_HOTPLUG=y | 50 | CONFIG_MEMORY_HOTPLUG=y |
@@ -236,7 +237,6 @@ CONFIG_IP_VS_PE_SIP=m | |||
236 | CONFIG_NF_CONNTRACK_IPV4=m | 237 | CONFIG_NF_CONNTRACK_IPV4=m |
237 | # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set | 238 | # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set |
238 | CONFIG_NF_TABLES_IPV4=m | 239 | CONFIG_NF_TABLES_IPV4=m |
239 | CONFIG_NFT_REJECT_IPV4=m | ||
240 | CONFIG_NFT_CHAIN_ROUTE_IPV4=m | 240 | CONFIG_NFT_CHAIN_ROUTE_IPV4=m |
241 | CONFIG_NFT_CHAIN_NAT_IPV4=m | 241 | CONFIG_NFT_CHAIN_NAT_IPV4=m |
242 | CONFIG_NF_TABLES_ARP=m | 242 | CONFIG_NF_TABLES_ARP=m |
@@ -451,6 +451,7 @@ CONFIG_TN3270_FS=y | |||
451 | CONFIG_WATCHDOG=y | 451 | CONFIG_WATCHDOG=y |
452 | CONFIG_WATCHDOG_NOWAYOUT=y | 452 | CONFIG_WATCHDOG_NOWAYOUT=y |
453 | CONFIG_SOFT_WATCHDOG=m | 453 | CONFIG_SOFT_WATCHDOG=m |
454 | CONFIG_DIAG288_WATCHDOG=m | ||
454 | # CONFIG_HID is not set | 455 | # CONFIG_HID is not set |
455 | # CONFIG_USB_SUPPORT is not set | 456 | # CONFIG_USB_SUPPORT is not set |
456 | CONFIG_INFINIBAND=m | 457 | CONFIG_INFINIBAND=m |
diff --git a/arch/s390/configs/zfcpdump_defconfig b/arch/s390/configs/zfcpdump_defconfig index cef073ca1f07..948e0e057a23 100644 --- a/arch/s390/configs/zfcpdump_defconfig +++ b/arch/s390/configs/zfcpdump_defconfig | |||
@@ -8,7 +8,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
8 | CONFIG_PARTITION_ADVANCED=y | 8 | CONFIG_PARTITION_ADVANCED=y |
9 | CONFIG_IBM_PARTITION=y | 9 | CONFIG_IBM_PARTITION=y |
10 | CONFIG_DEFAULT_DEADLINE=y | 10 | CONFIG_DEFAULT_DEADLINE=y |
11 | CONFIG_MARCH_Z9_109=y | 11 | CONFIG_MARCH_Z196=y |
12 | CONFIG_TUNE_ZEC12=y | ||
12 | # CONFIG_COMPAT is not set | 13 | # CONFIG_COMPAT is not set |
13 | CONFIG_NR_CPUS=2 | 14 | CONFIG_NR_CPUS=2 |
14 | # CONFIG_HOTPLUG_CPU is not set | 15 | # CONFIG_HOTPLUG_CPU is not set |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index 4557cb7ffddf..2e56498a40df 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -135,8 +135,8 @@ CONFIG_PROVE_LOCKING=y | |||
135 | CONFIG_LOCK_STAT=y | 135 | CONFIG_LOCK_STAT=y |
136 | CONFIG_DEBUG_LOCKDEP=y | 136 | CONFIG_DEBUG_LOCKDEP=y |
137 | CONFIG_DEBUG_ATOMIC_SLEEP=y | 137 | CONFIG_DEBUG_ATOMIC_SLEEP=y |
138 | CONFIG_DEBUG_WRITECOUNT=y | ||
139 | CONFIG_DEBUG_LIST=y | 138 | CONFIG_DEBUG_LIST=y |
139 | CONFIG_DEBUG_PI_LIST=y | ||
140 | CONFIG_DEBUG_SG=y | 140 | CONFIG_DEBUG_SG=y |
141 | CONFIG_DEBUG_NOTIFIERS=y | 141 | CONFIG_DEBUG_NOTIFIERS=y |
142 | CONFIG_PROVE_RCU=y | 142 | CONFIG_PROVE_RCU=y |
@@ -199,4 +199,10 @@ CONFIG_CRYPTO_SHA512_S390=m | |||
199 | CONFIG_CRYPTO_DES_S390=m | 199 | CONFIG_CRYPTO_DES_S390=m |
200 | CONFIG_CRYPTO_AES_S390=m | 200 | CONFIG_CRYPTO_AES_S390=m |
201 | CONFIG_CRC7=m | 201 | CONFIG_CRC7=m |
202 | # CONFIG_XZ_DEC_X86 is not set | ||
203 | # CONFIG_XZ_DEC_POWERPC is not set | ||
204 | # CONFIG_XZ_DEC_IA64 is not set | ||
205 | # CONFIG_XZ_DEC_ARM is not set | ||
206 | # CONFIG_XZ_DEC_ARMTHUMB is not set | ||
207 | # CONFIG_XZ_DEC_SPARC is not set | ||
202 | CONFIG_CMM=m | 208 | CONFIG_CMM=m |
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h index c28f32a45af5..3815bfea1b2d 100644 --- a/arch/s390/include/asm/mmu_context.h +++ b/arch/s390/include/asm/mmu_context.h | |||
@@ -33,10 +33,9 @@ static inline int init_new_context(struct task_struct *tsk, | |||
33 | 33 | ||
34 | static inline void set_user_asce(struct mm_struct *mm) | 34 | static inline void set_user_asce(struct mm_struct *mm) |
35 | { | 35 | { |
36 | pgd_t *pgd = mm->pgd; | 36 | S390_lowcore.user_asce = mm->context.asce_bits | __pa(mm->pgd); |
37 | 37 | if (current->thread.mm_segment.ar4) | |
38 | S390_lowcore.user_asce = mm->context.asce_bits | __pa(pgd); | 38 | __ctl_load(S390_lowcore.user_asce, 7, 7); |
39 | set_fs(current->thread.mm_segment); | ||
40 | set_cpu_flag(CIF_ASCE); | 39 | set_cpu_flag(CIF_ASCE); |
41 | } | 40 | } |
42 | 41 | ||
@@ -70,12 +69,11 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, | |||
70 | /* Clear old ASCE by loading the kernel ASCE. */ | 69 | /* Clear old ASCE by loading the kernel ASCE. */ |
71 | __ctl_load(S390_lowcore.kernel_asce, 1, 1); | 70 | __ctl_load(S390_lowcore.kernel_asce, 1, 1); |
72 | __ctl_load(S390_lowcore.kernel_asce, 7, 7); | 71 | __ctl_load(S390_lowcore.kernel_asce, 7, 7); |
73 | /* Delay loading of the new ASCE to control registers CR1 & CR7 */ | ||
74 | set_cpu_flag(CIF_ASCE); | ||
75 | atomic_inc(&next->context.attach_count); | 72 | atomic_inc(&next->context.attach_count); |
76 | atomic_dec(&prev->context.attach_count); | 73 | atomic_dec(&prev->context.attach_count); |
77 | if (MACHINE_HAS_TLB_LC) | 74 | if (MACHINE_HAS_TLB_LC) |
78 | cpumask_clear_cpu(cpu, &prev->context.cpu_attach_mask); | 75 | cpumask_clear_cpu(cpu, &prev->context.cpu_attach_mask); |
76 | S390_lowcore.user_asce = next->context.asce_bits | __pa(next->pgd); | ||
79 | } | 77 | } |
80 | 78 | ||
81 | #define finish_arch_post_lock_switch finish_arch_post_lock_switch | 79 | #define finish_arch_post_lock_switch finish_arch_post_lock_switch |
@@ -84,17 +82,18 @@ static inline void finish_arch_post_lock_switch(void) | |||
84 | struct task_struct *tsk = current; | 82 | struct task_struct *tsk = current; |
85 | struct mm_struct *mm = tsk->mm; | 83 | struct mm_struct *mm = tsk->mm; |
86 | 84 | ||
87 | if (!mm) | 85 | load_kernel_asce(); |
88 | return; | 86 | if (mm) { |
89 | preempt_disable(); | 87 | preempt_disable(); |
90 | while (atomic_read(&mm->context.attach_count) >> 16) | 88 | while (atomic_read(&mm->context.attach_count) >> 16) |
91 | cpu_relax(); | 89 | cpu_relax(); |
92 | 90 | ||
93 | cpumask_set_cpu(smp_processor_id(), mm_cpumask(mm)); | 91 | cpumask_set_cpu(smp_processor_id(), mm_cpumask(mm)); |
94 | set_user_asce(mm); | 92 | if (mm->context.flush_mm) |
95 | if (mm->context.flush_mm) | 93 | __tlb_flush_mm(mm); |
96 | __tlb_flush_mm(mm); | 94 | preempt_enable(); |
97 | preempt_enable(); | 95 | } |
96 | set_fs(current->thread.mm_segment); | ||
98 | } | 97 | } |
99 | 98 | ||
100 | #define enter_lazy_tlb(mm,tsk) do { } while (0) | 99 | #define enter_lazy_tlb(mm,tsk) do { } while (0) |
diff --git a/arch/s390/include/asm/switch_to.h b/arch/s390/include/asm/switch_to.h index 29c81f82705e..df38c70cd59e 100644 --- a/arch/s390/include/asm/switch_to.h +++ b/arch/s390/include/asm/switch_to.h | |||
@@ -134,8 +134,4 @@ static inline void restore_access_regs(unsigned int *acrs) | |||
134 | prev = __switch_to(prev,next); \ | 134 | prev = __switch_to(prev,next); \ |
135 | } while (0) | 135 | } while (0) |
136 | 136 | ||
137 | #define finish_arch_switch(prev) do { \ | ||
138 | set_fs(current->thread.mm_segment); \ | ||
139 | } while (0) | ||
140 | |||
141 | #endif /* __ASM_SWITCH_TO_H */ | 137 | #endif /* __ASM_SWITCH_TO_H */ |
diff --git a/arch/s390/include/uapi/asm/ucontext.h b/arch/s390/include/uapi/asm/ucontext.h index 200e06325c6a..3e077b2a4705 100644 --- a/arch/s390/include/uapi/asm/ucontext.h +++ b/arch/s390/include/uapi/asm/ucontext.h | |||
@@ -16,7 +16,9 @@ struct ucontext_extended { | |||
16 | struct ucontext *uc_link; | 16 | struct ucontext *uc_link; |
17 | stack_t uc_stack; | 17 | stack_t uc_stack; |
18 | _sigregs uc_mcontext; | 18 | _sigregs uc_mcontext; |
19 | unsigned long uc_sigmask[2]; | 19 | sigset_t uc_sigmask; |
20 | /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ | ||
21 | unsigned char __unused[128 - sizeof(sigset_t)]; | ||
20 | unsigned long uc_gprs_high[16]; | 22 | unsigned long uc_gprs_high[16]; |
21 | }; | 23 | }; |
22 | 24 | ||
@@ -27,7 +29,9 @@ struct ucontext { | |||
27 | struct ucontext *uc_link; | 29 | struct ucontext *uc_link; |
28 | stack_t uc_stack; | 30 | stack_t uc_stack; |
29 | _sigregs uc_mcontext; | 31 | _sigregs uc_mcontext; |
30 | sigset_t uc_sigmask; /* mask last for extensibility */ | 32 | sigset_t uc_sigmask; |
33 | /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ | ||
34 | unsigned char __unused[128 - sizeof(sigset_t)]; | ||
31 | }; | 35 | }; |
32 | 36 | ||
33 | #endif /* !_ASM_S390_UCONTEXT_H */ | 37 | #endif /* !_ASM_S390_UCONTEXT_H */ |
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h index 39ddfdb40ae8..70d4b7c4beaa 100644 --- a/arch/s390/kernel/compat_linux.h +++ b/arch/s390/kernel/compat_linux.h | |||
@@ -69,7 +69,9 @@ struct ucontext32 { | |||
69 | __u32 uc_link; /* pointer */ | 69 | __u32 uc_link; /* pointer */ |
70 | compat_stack_t uc_stack; | 70 | compat_stack_t uc_stack; |
71 | _sigregs32 uc_mcontext; | 71 | _sigregs32 uc_mcontext; |
72 | compat_sigset_t uc_sigmask; /* mask last for extensibility */ | 72 | compat_sigset_t uc_sigmask; |
73 | /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ | ||
74 | unsigned char __unused[128 - sizeof(compat_sigset_t)]; | ||
73 | }; | 75 | }; |
74 | 76 | ||
75 | struct stat64_emu31; | 77 | struct stat64_emu31; |