diff options
| -rw-r--r-- | arch/s390/include/asm/elf.h | 16 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 38 | ||||
| -rw-r--r-- | arch/s390/kernel/syscalls.S | 12 | ||||
| -rw-r--r-- | arch/s390/kernel/time.c | 6 | ||||
| -rw-r--r-- | arch/s390/kernel/vtime.c | 4 | 
5 files changed, 60 insertions, 16 deletions
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h index d480f39d65e6..74d0bbb7d955 100644 --- a/arch/s390/include/asm/elf.h +++ b/arch/s390/include/asm/elf.h  | |||
| @@ -172,14 +172,14 @@ extern char elf_platform[]; | |||
| 172 | #ifndef __s390x__ | 172 | #ifndef __s390x__ | 
| 173 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) | 173 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) | 
| 174 | #else /* __s390x__ */ | 174 | #else /* __s390x__ */ | 
| 175 | #define SET_PERSONALITY(ex) \ | 175 | #define SET_PERSONALITY(ex) \ | 
| 176 | do { \ | 176 | do { \ | 
| 177 | if (current->personality != PER_LINUX32) \ | 177 | if (personality(current->personality) != PER_LINUX32) \ | 
| 178 | set_personality(PER_LINUX); \ | 178 | set_personality(PER_LINUX); \ | 
| 179 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ | 179 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ | 
| 180 | set_thread_flag(TIF_31BIT); \ | 180 | set_thread_flag(TIF_31BIT); \ | 
| 181 | else \ | 181 | else \ | 
| 182 | clear_thread_flag(TIF_31BIT); \ | 182 | clear_thread_flag(TIF_31BIT); \ | 
| 183 | } while (0) | 183 | } while (0) | 
| 184 | #endif /* __s390x__ */ | 184 | #endif /* __s390x__ */ | 
| 185 | 185 | ||
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 6035cd20c7a7..62c706eb0de6 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S  | |||
| @@ -1767,3 +1767,41 @@ sys_dup3_wrapper: | |||
| 1767 | sys_epoll_create1_wrapper: | 1767 | sys_epoll_create1_wrapper: | 
| 1768 | lgfr %r2,%r2 # int | 1768 | lgfr %r2,%r2 # int | 
| 1769 | jg sys_epoll_create1 # branch to system call | 1769 | jg sys_epoll_create1 # branch to system call | 
| 1770 | |||
| 1771 | .globl sys32_readahead_wrapper | ||
| 1772 | sys32_readahead_wrapper: | ||
| 1773 | lgfr %r2,%r2 # int | ||
| 1774 | llgfr %r3,%r3 # u32 | ||
| 1775 | llgfr %r4,%r4 # u32 | ||
| 1776 | lgfr %r5,%r5 # s32 | ||
| 1777 | jg sys32_readahead # branch to system call | ||
| 1778 | |||
| 1779 | .globl sys32_sendfile64_wrapper | ||
| 1780 | sys32_sendfile64_wrapper: | ||
| 1781 | lgfr %r2,%r2 # int | ||
| 1782 | lgfr %r3,%r3 # int | ||
| 1783 | llgtr %r4,%r4 # compat_loff_t * | ||
| 1784 | lgfr %r5,%r5 # s32 | ||
| 1785 | jg sys32_sendfile64 # branch to system call | ||
| 1786 | |||
| 1787 | .globl sys_tkill_wrapper | ||
| 1788 | sys_tkill_wrapper: | ||
| 1789 | lgfr %r2,%r2 # pid_t | ||
| 1790 | lgfr %r3,%r3 # int | ||
| 1791 | jg sys_tkill # branch to system call | ||
| 1792 | |||
| 1793 | .globl sys_tgkill_wrapper | ||
| 1794 | sys_tgkill_wrapper: | ||
| 1795 | lgfr %r2,%r2 # pid_t | ||
| 1796 | lgfr %r3,%r3 # pid_t | ||
| 1797 | lgfr %r4,%r4 # int | ||
| 1798 | jg sys_tgkill # branch to system call | ||
| 1799 | |||
| 1800 | .globl compat_sys_keyctl_wrapper | ||
| 1801 | compat_sys_keyctl_wrapper: | ||
| 1802 | llgfr %r2,%r2 # u32 | ||
| 1803 | llgfr %r3,%r3 # u32 | ||
| 1804 | llgfr %r4,%r4 # u32 | ||
| 1805 | llgfr %r5,%r5 # u32 | ||
| 1806 | llgfr %r6,%r6 # u32 | ||
| 1807 | jg compat_sys_keyctl # branch to system call | ||
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 76d16e0140bb..fe5b25a988ab 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S  | |||
| @@ -194,7 +194,7 @@ SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall | |||
| 194 | SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) | 194 | SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) | 
| 195 | SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) | 195 | SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) | 
| 196 | SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ | 196 | SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ | 
| 197 | SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack) | 197 | SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper) | 
| 198 | SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) | 198 | SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) | 
| 199 | NI_SYSCALL /* streams1 */ | 199 | NI_SYSCALL /* streams1 */ | 
| 200 | NI_SYSCALL /* streams2 */ | 200 | NI_SYSCALL /* streams2 */ | 
| @@ -230,8 +230,8 @@ SYSCALL(sys_mincore,sys_mincore,sys32_mincore_wrapper) | |||
| 230 | SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) | 230 | SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) | 
| 231 | SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ | 231 | SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ | 
| 232 | SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) | 232 | SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) | 
| 233 | SYSCALL(sys_readahead,sys_readahead,sys32_readahead) | 233 | SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper) | 
| 234 | SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64) | 234 | SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64_wrapper) | 
| 235 | SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) | 235 | SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) | 
| 236 | SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ | 236 | SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ | 
| 237 | SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) | 237 | SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) | 
| @@ -245,11 +245,11 @@ SYSCALL(sys_removexattr,sys_removexattr,sys32_removexattr_wrapper) | |||
| 245 | SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) | 245 | SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) | 
| 246 | SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ | 246 | SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ | 
| 247 | SYSCALL(sys_gettid,sys_gettid,sys_gettid) | 247 | SYSCALL(sys_gettid,sys_gettid,sys_gettid) | 
| 248 | SYSCALL(sys_tkill,sys_tkill,sys_tkill) | 248 | SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) | 
| 249 | SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) | 249 | SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) | 
| 250 | SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) | 250 | SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) | 
| 251 | SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ | 251 | SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ | 
| 252 | SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill) | 252 | SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) | 
| 253 | NI_SYSCALL /* reserved for TUX */ | 253 | NI_SYSCALL /* reserved for TUX */ | 
| 254 | SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) | 254 | SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) | 
| 255 | SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) | 255 | SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) | 
| @@ -288,7 +288,7 @@ SYSCALL(sys_mq_getsetattr,sys_mq_getsetattr,compat_sys_mq_getsetattr_wrapper) | |||
| 288 | SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) | 288 | SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) | 
| 289 | SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) | 289 | SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) | 
| 290 | SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) | 290 | SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) | 
| 291 | SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl) /* 280 */ | 291 | SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ | 
| 292 | SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) | 292 | SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) | 
| 293 | SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) | 293 | SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) | 
| 294 | SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) | 294 | SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) | 
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index d649600df5b9..fc468cae4460 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c  | |||
| @@ -399,8 +399,10 @@ static struct workqueue_struct *time_sync_wq; | |||
| 399 | 399 | ||
| 400 | static void __init time_init_wq(void) | 400 | static void __init time_init_wq(void) | 
| 401 | { | 401 | { | 
| 402 | if (!time_sync_wq) | 402 | if (time_sync_wq) | 
| 403 | time_sync_wq = create_singlethread_workqueue("timesync"); | 403 | return; | 
| 404 | time_sync_wq = create_singlethread_workqueue("timesync"); | ||
| 405 | stop_machine_create(); | ||
| 404 | } | 406 | } | 
| 405 | 407 | ||
| 406 | /* | 408 | /* | 
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index 2fb36e462194..ecf0304e61c1 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c  | |||
| @@ -516,8 +516,12 @@ EXPORT_SYMBOL(del_virt_timer); | |||
| 516 | */ | 516 | */ | 
| 517 | void init_cpu_vtimer(void) | 517 | void init_cpu_vtimer(void) | 
| 518 | { | 518 | { | 
| 519 | struct thread_info *ti = current_thread_info(); | ||
| 519 | struct vtimer_queue *vq; | 520 | struct vtimer_queue *vq; | 
| 520 | 521 | ||
| 522 | S390_lowcore.user_timer = ti->user_timer; | ||
| 523 | S390_lowcore.system_timer = ti->system_timer; | ||
| 524 | |||
| 521 | /* kick the virtual timer */ | 525 | /* kick the virtual timer */ | 
| 522 | asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock)); | 526 | asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock)); | 
| 523 | asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer)); | 527 | asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer)); | 
