1. 25 9月, 2014 1 次提交
  2. 09 9月, 2014 1 次提交
  3. 07 3月, 2014 1 次提交
  4. 06 3月, 2014 1 次提交
  5. 04 3月, 2014 1 次提交
    • H
      s390/compat: convert system call wrappers to C part 01 · b07edab2
      Heiko Carstens 提交于
      Introduce a new compat_wrap.c file which contains the s390 specific compat
      system call wrappers.
      The s390 specific system call wrappers only perform sign, zero and pointer
      conversion of system call arguments before actually calling the non-compat
      system call.
      
      Therefore introduce COMPAT_SYSCALL_WRAPx macros which generate C code that
      is nearly identical to the assembly code. This has the advantage that the
      compile will generate correct code, and we avoid the frequent copy-paste
      errors seen in the compat_wrapper.S file.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      b07edab2
  6. 16 12月, 2013 2 次提交
  7. 24 10月, 2013 1 次提交
    • H
      s390/bitops: use generic find bit functions / reimplement _left variant · 746479cd
      Heiko Carstens 提交于
      Just like all other architectures we should use out-of-line find bit
      operations, since the inline variant bloat the size of the kernel image.
      And also like all other architecures we should only supply optimized
      variants of the __ffs, ffs, etc. primitives.
      
      Therefore this patch removes the inlined s390 find bit functions and uses
      the generic out-of-line variants instead.
      
      The optimization of the primitives follows with the next patch.
      
      With this patch also the functions find_first_bit_left() and
      find_next_bit_left() have been reimplemented, since logically, they are
      nothing else but a find_first_bit()/find_next_bit() implementation that
      use an inverted __fls() instead of __ffs().
      Also the restriction that these functions only work on machines which
      support the "flogr" instruction is gone now.
      
      This reduces the size of the kernel image (defconfig, -march=z9-109)
      by 144,482 bytes.
      Alone the size of the function build_sched_domains() gets reduced from
      7 KB to 3,5 KB.
      
      We also git rid of unused functions like find_first_bit_le()...
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      746479cd
  8. 02 5月, 2013 1 次提交
  9. 17 4月, 2013 1 次提交
    • H
      s390/dumpstack: fix call chain walking · 1bca09f7
      Heiko Carstens 提交于
      dumpstack() did not always print a sane callchain when being called.
      The reason is that show_trace() accessed register 15 directly to get
      the current stack pointer and passed that pointer to __show_trace()
      which expects a valid stack frame pointer as argument.
      However due to tail call optimization the stack frame may not exist
      anymore when __show_trace() gets called and therefore an invalid
      stack frame pointer gets passed.
      To prevent that disable tail call optimization for call chain walking
      functions.
      So move all the show_* functions to a dumpstack.c file like other
      architectures have it already and add a -fno-optimize-sibling-calls
      compile flag to both dumpstack.c and stacktrace.c to prevent tail
      call optimization.
      
      Fixes callchains that looked e.g. like this:
      
      [   12.868258] Call Trace:
      [   12.868262] ([<0000000000008000>] 0x8000)
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      1bca09f7
  10. 23 11月, 2012 1 次提交
  11. 26 9月, 2012 5 次提交
    • H
      s390/kexec: remove CONFIG_KEXEC · 0ed23b3e
      Heiko Carstens 提交于
      Since "Kconfig: split the s390 base menu" CONFIG_KEXEC gets always selected.
      Therefore there is no point in keeping CONFIG_KEXEC anywhere.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      0ed23b3e
    • H
      s390/perf_events: compile only for CONFIG_64BIT · 305e4f10
      Heiko Carstens 提交于
      The whole hardware support is only available in zArch mode.
      Fixes also this compile warning:
      
      arch/s390/kernel/perf_cpum_cf.c: In function ‘cpumf_pmu_init’:
      arch/s390/kernel/perf_cpum_cf.c:670:2: warning: left shift count >= width of type [enabled by default]
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      305e4f10
    • J
      s390: add support for runtime instrumentation · e4b8b3f3
      Jan Glauber 提交于
      Allow user-space threads to use runtime instrumentation (RI). To enable RI
      for a thread there is a new s390 specific system call, sys_s390_runtime_instr,
      that takes as parameter a realtime signal number. If the RI facility is
      available the system call sets up a control block for the calling thread with
      the appropriate permissions for the thread to modify the control block.
      
      The user-space thread can then use the store and modify RI instructions to
      alter the control block and start/stop the instrumentation via RION/RIOFF.
      
      If the user specified program buffer runs full RI triggers an external
      interrupt. The external interrupt is translated to a real-time signal that
      is delivered to the thread that enabled RI on that CPU. The number of
      the real-time signal is the number specified in the RI system call. So,
      user-space can select any available real-time signal number in case the
      application itself uses real-time signals for other purposes.
      
      The kernel saves the RI control blocks on task switch only if the running
      thread was enabled for RI. Therefore, the performance impact on task switch
      should be negligible if RI is not used.
      
      RI is only enabled for user-space mode and is disabled for the supervisor
      state.
      Reviewed-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NJan Glauber <jang@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      e4b8b3f3
    • H
      s390/kexec: move machine_crash_shutdown() to machine_kexec.c · 48a8ca03
      Heiko Carstens 提交于
      machine_crash_shutdown() was the only function in crash.c.
      So move the function and delete one file.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      48a8ca03
    • H
      s390/cache: expose cpu cache topology via sysfs · 881730ad
      Heiko Carstens 提交于
      Expose cpu cache topology via sysfs.
      The created sysfs directory structure is compatible to what x86, ia64
      and powerpc have.
      On s390 we expose only information about cpu caches which are private
      to a cpu via sysfs . Caches which are shared between cpus do not have
      a sysfs representation.
      The reason for that is that the file "shared_cpu_map" is mandatory
      and only if running under LPAR it is possible to tell which cpus
      share which cache. Second level hypervisors however do not and cannot
      expose that information to guests.
      In order to have a consistent view we made the choice to always only
      expose information about private cpu caches via sysfs.
      
      Example for a z196 cpu (cpu1 in /sys/devices/cpu):
      
      cpu1/cache/index0/size -- 64K
      cpu1/cache/index0/type -- Data
      cpu1/cache/index0/level -- 1
      cpu1/cache/index0/number_of_sets -- 64
      cpu1/cache/index0/shared_cpu_map -- 00000000,00000002
      cpu1/cache/index0/shared_cpu_list -- 1
      cpu1/cache/index0/coherency_line_size -- 256
      cpu1/cache/index0/ways_of_associativity -- 4
      cpu1/cache/index1/size -- 128K
      cpu1/cache/index1/type -- Instruction
      cpu1/cache/index1/level -- 1
      cpu1/cache/index1/number_of_sets -- 64
      cpu1/cache/index1/shared_cpu_map -- 00000000,00000002
      cpu1/cache/index1/shared_cpu_list -- 1
      cpu1/cache/index1/coherency_line_size -- 256
      cpu1/cache/index1/ways_of_associativity -- 8
      cpu1/cache/index2/size -- 1536K
      cpu1/cache/index2/type -- Unified
      cpu1/cache/index2/level -- 2
      cpu1/cache/index2/number_of_sets -- 512
      cpu1/cache/index2/shared_cpu_map -- 00000000,00000002
      cpu1/cache/index2/shared_cpu_list -- 1
      cpu1/cache/index2/coherency_line_size -- 256
      cpu1/cache/index2/ways_of_associativity -- 12
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      881730ad
  12. 05 5月, 2012 1 次提交
  13. 23 3月, 2012 1 次提交
  14. 11 3月, 2012 3 次提交
    • M
      [S390] kernel: Add OS info memory interface · 4857d4bb
      Michael Holzheu 提交于
      In order to allow kdump based stand-alone dump, some information
      has to be passed from the old kernel to the new dump kernel. This
      is done via a the struct "os_info" that contains the following fields:
       * crashkernel base and size
       * reipl block
       * vmcoreinfo
       * init function
      A pointer to os_info is stored at a well known storage location
      and the whole structure as well as all fields are secured with
      checksums.
      Signed-off-by: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      4857d4bb
    • M
      [S390] kernel: Add z/VM LGR detection · 3ab121ab
      Michael Holzheu 提交于
      Currently the following mechanisms are available to move active
      Linux on System z instances between machines:
      * z/VM 6.2 SSI (Single System Image)
      * Suspend/resume
      For moving Linux instances in this patch the term LGR (Linux Guest
      Relocation) is used. Because such an operation is critical, it
      should be detectable from Linux. With this patch for both, a live
      system and a kernel dump, the information about LGRs is accessible.
      To identify a guest, stsi and stfle data is used. A new function
      lgr_info_log() compares the current data (lgr_info_cur) with the
      last recorded one (lgr_info_last). In case the two data sets differ,
      lgr_info_cur is logged to the "lgr" s390dbf.
      
      The following trigger points call lgr_info_log():
      * panic
      * die
      * kdump
      * LGR timer
      * PSW restart
      * QDIO recovery
      * resume
      
      This patch also changes the s390dbf hex_ascii view. Now only printable ASCII
      characters are shown.
      Reviewed-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      3ab121ab
    • M
      [S390] rework smp code · 8b646bd7
      Martin Schwidefsky 提交于
      Define struct pcpu and merge some of the NR_CPUS arrays into it, including
      __cpu_logical_map, current_set and smp_cpu_state. Split smp related
      functions to those operating on physical cpus and the functions operating
      on a logical cpu number. Make the functions for physical cpus use a
      pointer to a struct pcpu. This hides the knowledge about cpu addresses in
      smp.c, entry[64].S and swsusp_asm64.S, thus remove the sigp.h header.
      
      The PSW restart mechanism is used to start secondary cpus, calling a
      function on an online cpu, calling a function on the ipl cpu, and for
      the nmi signal. Replace the different assembler functions with a
      single function restart_int_handler. The new entry point calls a function
      whose pointer is stored in the lowcore of the target cpu and it can wait
      for the source cpu to stop. This covers all existing use cases.
      
      Overall the code is now simpler and there are ~380 lines less code.
      Reviewed-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      8b646bd7
  15. 27 12月, 2011 1 次提交
    • H
      [S390] topology: get rid of ifdefs · 83a24e32
      Heiko Carstens 提交于
      Remove all ifdefs from topology code and also only compile it for the
      CONFIG_SCHED_BOOK case. The new code selects SCHED_MC if SCHED_BOOK is
      selected. SCHED_MC without SCHED_BOOK is not possible anymore.
      Furthermore various sysfs attributes are not available anymore for the
      !SCHED_BOOK case. In particular all attributes that correspond to
      CPU polarization.
      But since all real world kernels have SCHED_BOOK selected anyway this
      doesn't matter too much.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      83a24e32
  16. 30 10月, 2011 1 次提交
  17. 26 5月, 2011 1 次提交
  18. 05 4月, 2011 1 次提交
  19. 27 2月, 2010 2 次提交
  20. 07 12月, 2009 1 次提交
  21. 11 9月, 2009 2 次提交
  22. 12 6月, 2009 3 次提交
  23. 26 3月, 2009 2 次提交
  24. 25 12月, 2008 4 次提交
  25. 14 7月, 2008 1 次提交