diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/appldata/appldata_base.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/compat_signal.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 42 | ||||
-rw-r--r-- | arch/s390/kernel/syscalls.S | 5 | ||||
-rw-r--r-- | arch/s390/kernel/vmlinux.lds.S | 4 | ||||
-rw-r--r-- | arch/s390/mm/extmem.c | 19 |
6 files changed, 68 insertions, 6 deletions
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index 54d35c130907..9a22434a580c 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -652,7 +652,7 @@ appldata_cpu_notify(struct notifier_block *self, | |||
652 | return NOTIFY_OK; | 652 | return NOTIFY_OK; |
653 | } | 653 | } |
654 | 654 | ||
655 | static struct notifier_block __devinitdata appldata_nb = { | 655 | static struct notifier_block appldata_nb = { |
656 | .notifier_call = appldata_cpu_notify, | 656 | .notifier_call = appldata_cpu_notify, |
657 | }; | 657 | }; |
658 | 658 | ||
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index 5291b5f8788d..b4c815d8ef75 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
@@ -430,7 +430,7 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) | |||
430 | 430 | ||
431 | /* This is the X/Open sanctioned signal stack switching. */ | 431 | /* This is the X/Open sanctioned signal stack switching. */ |
432 | if (ka->sa.sa_flags & SA_ONSTACK) { | 432 | if (ka->sa.sa_flags & SA_ONSTACK) { |
433 | if (! on_sig_stack(sp)) | 433 | if (! sas_ss_flags(sp)) |
434 | sp = current->sas_ss_sp + current->sas_ss_size; | 434 | sp = current->sas_ss_sp + current->sas_ss_size; |
435 | } | 435 | } |
436 | 436 | ||
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 199da68bd7be..ef5b9c44b86b 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -1608,3 +1608,45 @@ compat_sys_ppoll_wrapper: | |||
1608 | sys_unshare_wrapper: | 1608 | sys_unshare_wrapper: |
1609 | llgfr %r2,%r2 # unsigned long | 1609 | llgfr %r2,%r2 # unsigned long |
1610 | jg sys_unshare | 1610 | jg sys_unshare |
1611 | |||
1612 | .globl compat_sys_set_robust_list_wrapper | ||
1613 | compat_sys_set_robust_list_wrapper: | ||
1614 | llgtr %r2,%r2 # struct compat_robust_list_head * | ||
1615 | llgfr %r3,%r3 # size_t | ||
1616 | jg compat_sys_set_robust_list | ||
1617 | |||
1618 | .globl compat_sys_get_robust_list_wrapper | ||
1619 | compat_sys_get_robust_list_wrapper: | ||
1620 | lgfr %r2,%r2 # int | ||
1621 | llgtr %r3,%r3 # compat_uptr_t_t * | ||
1622 | llgtr %r4,%r4 # compat_size_t * | ||
1623 | jg compat_sys_get_robust_list | ||
1624 | |||
1625 | .globl sys_splice_wrapper | ||
1626 | sys_splice_wrapper: | ||
1627 | lgfr %r2,%r2 # int | ||
1628 | llgtr %r3,%r3 # loff_t * | ||
1629 | lgfr %r4,%r4 # int | ||
1630 | llgtr %r5,%r5 # loff_t * | ||
1631 | llgfr %r6,%r6 # size_t | ||
1632 | llgf %r0,164(%r15) # unsigned int | ||
1633 | stg %r0,160(%r15) | ||
1634 | jg sys_splice | ||
1635 | |||
1636 | .globl sys_sync_file_range_wrapper | ||
1637 | sys_sync_file_range_wrapper: | ||
1638 | lgfr %r2,%r2 # int | ||
1639 | sllg %r3,%r3,32 # get high word of 64bit loff_t | ||
1640 | or %r3,%r4 # get low word of 64bit loff_t | ||
1641 | sllg %r4,%r5,32 # get high word of 64bit loff_t | ||
1642 | or %r4,%r6 # get low word of 64bit loff_t | ||
1643 | llgf %r5,164(%r15) # unsigned int | ||
1644 | jg sys_sync_file_range | ||
1645 | |||
1646 | .globl sys_tee_wrapper | ||
1647 | sys_tee_wrapper: | ||
1648 | lgfr %r2,%r2 # int | ||
1649 | lgfr %r3,%r3 # int | ||
1650 | llgfr %r4,%r4 # size_t | ||
1651 | llgfr %r5,%r5 # unsigned int | ||
1652 | jg sys_tee | ||
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 2f56654da821..fc2c0767202b 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
@@ -312,3 +312,8 @@ SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */ | |||
312 | SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) | 312 | SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) |
313 | SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) | 313 | SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) |
314 | SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) | 314 | SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) |
315 | SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list_wrapper) | ||
316 | SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list_wrapper) | ||
317 | SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) | ||
318 | SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) | ||
319 | SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) | ||
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index 9289face3027..9f34bb54c051 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S | |||
@@ -58,9 +58,11 @@ SECTIONS | |||
58 | . = ALIGN(4096); | 58 | . = ALIGN(4096); |
59 | .data.page_aligned : { *(.data.idt) } | 59 | .data.page_aligned : { *(.data.idt) } |
60 | 60 | ||
61 | . = ALIGN(32); | 61 | . = ALIGN(256); |
62 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | 62 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } |
63 | 63 | ||
64 | . = ALIGN(256); | ||
65 | .data.read_mostly : { *(.data.read_mostly) } | ||
64 | _edata = .; /* End of data section */ | 66 | _edata = .; /* End of data section */ |
65 | 67 | ||
66 | . = ALIGN(8192); /* init_task */ | 68 | . = ALIGN(8192); /* init_task */ |
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c index a9566bcab682..9b11e3e20903 100644 --- a/arch/s390/mm/extmem.c +++ b/arch/s390/mm/extmem.c | |||
@@ -192,6 +192,7 @@ query_segment_type (struct dcss_segment *seg) | |||
192 | diag_cc = dcss_diag (DCSS_SEGEXT, qin, &dummy, &vmrc); | 192 | diag_cc = dcss_diag (DCSS_SEGEXT, qin, &dummy, &vmrc); |
193 | 193 | ||
194 | if (diag_cc > 1) { | 194 | if (diag_cc > 1) { |
195 | PRINT_WARN ("segment_type: diag returned error %ld\n", vmrc); | ||
195 | rc = dcss_diag_translate_rc (vmrc); | 196 | rc = dcss_diag_translate_rc (vmrc); |
196 | goto out_free; | 197 | goto out_free; |
197 | } | 198 | } |
@@ -553,7 +554,7 @@ segment_save(char *name) | |||
553 | int endpfn = 0; | 554 | int endpfn = 0; |
554 | char cmd1[160]; | 555 | char cmd1[160]; |
555 | char cmd2[80]; | 556 | char cmd2[80]; |
556 | int i; | 557 | int i, response; |
557 | 558 | ||
558 | if (!MACHINE_IS_VM) | 559 | if (!MACHINE_IS_VM) |
559 | return; | 560 | return; |
@@ -576,8 +577,20 @@ segment_save(char *name) | |||
576 | segtype_string[seg->range[i].start & 0xff]); | 577 | segtype_string[seg->range[i].start & 0xff]); |
577 | } | 578 | } |
578 | sprintf(cmd2, "SAVESEG %s", name); | 579 | sprintf(cmd2, "SAVESEG %s", name); |
579 | cpcmd(cmd1, NULL, 0, NULL); | 580 | response = 0; |
580 | cpcmd(cmd2, NULL, 0, NULL); | 581 | cpcmd(cmd1, NULL, 0, &response); |
582 | if (response) { | ||
583 | PRINT_ERR("segment_save: DEFSEG failed with response code %i\n", | ||
584 | response); | ||
585 | goto out; | ||
586 | } | ||
587 | cpcmd(cmd2, NULL, 0, &response); | ||
588 | if (response) { | ||
589 | PRINT_ERR("segment_save: SAVESEG failed with response code %i\n", | ||
590 | response); | ||
591 | goto out; | ||
592 | } | ||
593 | out: | ||
581 | spin_unlock(&dcss_lock); | 594 | spin_unlock(&dcss_lock); |
582 | } | 595 | } |
583 | 596 | ||