1. 09 Feb, 2023 7 commits
    • Heiko Carstens's avatar
      s390/vx: add 64 and 128 bit members to __vector128 struct · b0b7b43f
      Heiko Carstens authored
      Add 64 and 128 bit members to __vector128 struct in order to allow reading
      of the complete value, or the higher or lower part of vector register
      contents instead of having to use casts.
      
      Add an explicit __aligned(4) statement to avoid that the alignment of the
      structure changes from 4 to 8. This should make sure that no breakage
      happens because of this change.
      Reviewed-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      b0b7b43f
    • Heiko Carstens's avatar
      MAINTAINERS: add diag288_wdt driver to s390 maintained files · 1306711a
      Heiko Carstens authored
      The diag288_wdt watchdog driver is s390 specific.
      Document who is responsible for this driver.
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      1306711a
    • Vineeth Vijayan's avatar
      MAINTAINERS: add entry for s390 SCM driver · be20b9d3
      Vineeth Vijayan authored
      Storage Class Memory driver support for s390 architecture has been there
      for a while. The original author of this work, Sebastian Ott has left IBM
      and I am taking over this module. Adding myself as the upstream maintainer
      for SCM on s390 architecture.
      Signed-off-by: default avatarVineeth Vijayan <vneethv@linux.ibm.com>
      Acked-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      be20b9d3
    • Heiko Carstens's avatar
      s390/processor: always inline cpu flag helper functions · 87f79d88
      Heiko Carstens authored
      arch_cpu_idle() is marked noinstr and therefore must only call functions
      which are also not instrumented.
      
      Make sure that cpu flag helper functions are always inlined to avoid that
      the compiler generates an out-of-line function for e.g. the call within
      arch_cpu_idle().
      Reviewed-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      87f79d88
    • Heiko Carstens's avatar
      s390/idle: mark arch_cpu_idle() noinstr · a9cbc1b4
      Heiko Carstens authored
      linux-next commit ("cpuidle: tracing: Warn about !rcu_is_watching()")
      adds a new warning which hits on s390's arch_cpu_idle() function:
      
      RCU not on for: arch_cpu_idle+0x0/0x28
      WARNING: CPU: 2 PID: 0 at include/linux/trace_recursion.h:162 arch_ftrace_ops_list_func+0x24c/0x258
      Modules linked in:
      CPU: 2 PID: 0 Comm: swapper/2 Not tainted 6.2.0-rc6-next-20230202 #4
      Hardware name: IBM 8561 T01 703 (z/VM 7.3.0)
      Krnl PSW : 0404d00180000000 00000000002b55c0 (arch_ftrace_ops_list_func+0x250/0x258)
                 R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3
      Krnl GPRS: c0000000ffffbfff 0000000080000002 0000000000000026 0000000000000000
                 0000037ffffe3a28 0000037ffffe3a20 0000000000000000 0000000000000000
                 0000000000000000 0000000000f4acf6 00000000001044f0 0000037ffffe3cb0
                 0000000000000000 0000000000000000 00000000002b55bc 0000037ffffe3bb8
      Krnl Code: 00000000002b55b0: c02000840051        larl    %r2,0000000001335652
                 00000000002b55b6: c0e5fff512d1        brasl   %r14,0000000000157b58
                #00000000002b55bc: af000000            mc      0,0
                >00000000002b55c0: a7f4ffe7            brc     15,00000000002b558e
                 00000000002b55c4: 0707                bcr     0,%r7
                 00000000002b55c6: 0707                bcr     0,%r7
                 00000000002b55c8: eb6ff0480024        stmg    %r6,%r15,72(%r15)
                 00000000002b55ce: b90400ef            lgr     %r14,%r15
      Call Trace:
       [<00000000002b55c0>] arch_ftrace_ops_list_func+0x250/0x258
      ([<00000000002b55bc>] arch_ftrace_ops_list_func+0x24c/0x258)
       [<0000000000f5f0fc>] ftrace_common+0x1c/0x20
       [<00000000001044f6>] arch_cpu_idle+0x6/0x28
       [<0000000000f4acf6>] default_idle_call+0x76/0x128
       [<00000000001cc374>] do_idle+0xf4/0x1b0
       [<00000000001cc6ce>] cpu_startup_entry+0x36/0x40
       [<0000000000119d00>] smp_start_secondary+0x140/0x150
       [<0000000000f5d2ae>] restart_int_handler+0x6e/0x90
      
      Mark arch_cpu_idle() noinstr like all other architectures with
      CONFIG_ARCH_WANTS_NO_INSTR (should) have it to fix this.
      Reviewed-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      a9cbc1b4
    • Heiko Carstens's avatar
      s390/idle: move idle time accounting to account_idle_time_irq() · c0101629
      Heiko Carstens authored
      There is no reason to do idle time accounting in arch_cpu_idle().
      Do idle time accounting in account_idle_time_irq(), where it belongs
      to. The accounted values don't change between account_idle_time_irq() and
      arch_cpu_idle(); so the result is the same.
      Reviewed-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      c0101629
    • Heiko Carstens's avatar
      740d63b5
  2. 06 Feb, 2023 23 commits
  3. 31 Jan, 2023 6 commits
  4. 30 Jan, 2023 2 commits
  5. 25 Jan, 2023 2 commits
    • Heiko Carstens's avatar
      s390/syscalls: get rid of system call alias functions · 2213d44e
      Heiko Carstens authored
      bpftrace and friends only consider functions present in
      /sys/kernel/tracing/available_filter_functions.
      
      For system calls there is the s390 specific problem that the system call
      function itself is present via __se_sys##name() while the system call
      itself is wired up via an __s390x_sys##name() alias. The required DWARF
      debug information however is only available for the original function, not
      the alias, but within available_filter_functions only the functions with
      __s390x_ prefix are available. Which means the required DWARF debug
      information cannot be found.
      While this could be solved via tooling, it is easier to change the s390
      specific system call wrapper handling.
      
      Therefore get rid of this alias handling and implement system call wrappers
      like most other architectures are doing. In result the implementation
      generates the following functions:
      
      long __s390x_sys##name(struct pt_regs *regs)
      static inline long __se_sys##name(...)
      static inline long __do_sys##name(...)
      
      __s390x_sys##name() is the visible system call function which is also wired
      up in the system call table. Its only parameter is a pt_regs variable.
      
      This function calls the corresponding __se_sys##name() function, which has
      as many parameters like the system call definition. This function in turn
      performs all zero and sign extensions of all system call parameters, taken
      from the pt_regs structure, and finally calls __do_sys##name().
      
      __do_sys##name() is the actual inlined system call function implementation.
      
      For all 64 bit system calls there is a 31/32 bit system call function
      __s390_sys##name() generated, which handles all system call parameters
      correctly as required by compat handling. This function may be wired
      up within the compat system call table, unless there exists an
      explicit compat system call function, which is then used instead.
      Reported-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
      Tested-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
      Reviewed-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      2213d44e
    • Heiko Carstens's avatar
      0efc5d58