1. 09 Feb, 2021 31 commits
  2. 27 Jan, 2021 4 commits
  3. 19 Jan, 2021 5 commits
    • Sven Schnelle's avatar
      s390: pass struct pt_regs instead of registers to syscalls · 3a790cc1
      Sven Schnelle authored
      Instead of fetching all registers from struct pt_regs and passing
      them to the syscall wrappers, let the system call wrappers only
      fetch the values really required.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      3a790cc1
    • Sven Schnelle's avatar
      s390: remove asmlinkage · 39589ada
      Sven Schnelle authored
      On s390 asmlinkage is a nop, so remove it.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      39589ada
    • Sven Schnelle's avatar
      s390: convert to generic entry · 56e62a73
      Sven Schnelle authored
      This patch converts s390 to use the generic entry infrastructure from
      kernel/entry/*.
      
      There are a few special things on s390:
      
      - PIF_PER_TRAP is moved to TIF_PER_TRAP as the generic code doesn't
        know about our PIF flags in exit_to_user_mode_loop().
      
      - The old code had several ways to restart syscalls:
      
        a) PIF_SYSCALL_RESTART, which was only set during execve to force a
           restart after upgrading a process (usually qemu-kvm) to pgste page
           table extensions.
      
        b) PIF_SYSCALL, which is set by do_signal() to indicate that the
           current syscall should be restarted. This is changed so that
           do_signal() now also uses PIF_SYSCALL_RESTART. Continuing to use
           PIF_SYSCALL doesn't work with the generic code, and changing it
           to PIF_SYSCALL_RESTART makes PIF_SYSCALL and PIF_SYSCALL_RESTART
           more unique.
      
      - On s390 calling sys_sigreturn or sys_rt_sigreturn is implemented by
      executing a svc instruction on the process stack which causes a fault.
      While handling that fault the fault code sets PIF_SYSCALL to hand over
      processing to the syscall code on exit to usermode.
      
      The patch introduces PIF_SYSCALL_RET_SET, which is set if ptrace sets
      a return value for a syscall. The s390x ptrace ABI uses r2 both for the
      syscall number and return value, so ptrace cannot set the syscall number +
      return value at the same time. The flag makes handling that a bit easier.
      do_syscall() will just skip executing the syscall if PIF_SYSCALL_RET_SET
      is set.
      
      CONFIG_DEBUG_ASCE was removd in favour of the generic CONFIG_DEBUG_ENTRY.
      CR1/7/13 will be checked both on kernel entry and exit to contain the
      correct asces.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      56e62a73
    • Heiko Carstens's avatar
      s390: update defconfigs · ac94a291
      Heiko Carstens authored
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      ac94a291
    • Heiko Carstens's avatar
      s390/bitops: remove small optimization to fix clang build · efe5e0fe
      Heiko Carstens authored
      clang does not know about the 'b1' construct used in bitops inline
      assembly. Since the plan is to use compiler atomic builtins anyway
      there is no point in requesting clang support for this. Especially if
      one considers that the kernel seems to be the only user of this.
      
      With removing this small optimization it is possible to compile the
      kernel also with -march=zEC12 and higher using clang.
      
      Build error:
      
      In file included from ./include/linux/bitops.h:32:
      ./arch/s390/include/asm/bitops.h:69:4: error: invalid operand in inline asm: 'oi        $0,${1:b}'
                              "oi     %0,%b1\n"
                              ^
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      efe5e0fe