1. 09 Oct, 2014 1 commit
    • Martin Schwidefsky's avatar
      s390: add support for vector extension · 80703617
      Martin Schwidefsky authored
      The vector extension introduces 32 128-bit vector registers and a set of
      instruction to operate on the vector registers.
      
      The kernel can control the use of vector registers for the problem state
      program with a bit in control register 0. Once enabled for a process the
      kernel needs to retain the content of the vector registers on context
      switch. The signal frame is extended to include the vector registers.
      Two new register sets NT_S390_VXRS_LOW and NT_S390_VXRS_HIGH are added
      to the regset interface for the debugger and core dumps.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      80703617
  2. 20 May, 2014 1 commit
  3. 22 Aug, 2013 1 commit
  4. 14 Feb, 2013 1 commit
  5. 08 Jan, 2013 1 commit
    • Heiko Carstens's avatar
      s390/irq: remove split irq fields from /proc/stat · 420f42ec
      Heiko Carstens authored
      Now that irq sum accounting for /proc/stat's "intr" line works again we
      have the oddity that the sum field (first field) contains only the sum
      of the second (external irqs) and third field (I/O interrupts).
      The reason for that is that these two fields are already sums of all other
      fields. So if we would sum up everything we would count every interrupt
      twice.
      This is broken since the split interrupt accounting was merged two years
      ago: 052ff461 "[S390] irq: have detailed
      statistics for interrupt types".
      To fix this remove the split interrupt fields from /proc/stat's "intr"
      line again and only have them in /proc/interrupts.
      
      This restores the old behaviour, seems to be the only sane fix and mimics
      a behaviour from other architectures where /proc/interrupts also contains
      more than /proc/stat's "intr" line does.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      420f42ec
  6. 20 Jul, 2012 1 commit
    • Heiko Carstens's avatar
      s390/comments: unify copyright messages and remove file names · a53c8fab
      Heiko Carstens authored
      Remove the file name from the comment at top of many files. In most
      cases the file name was wrong anyway, so it's rather pointless.
      
      Also unify the IBM copyright statement. We did have a lot of sightly
      different statements and wanted to change them one after another
      whenever a file gets touched. However that never happened. Instead
      people start to take the old/"wrong" statements to use as a template
      for new files.
      So unify all of them in one go.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      a53c8fab
  7. 11 Mar, 2012 1 commit
    • Martin Schwidefsky's avatar
      [S390] rework idle code · 4c1051e3
      Martin Schwidefsky authored
      Whenever the cpu loads an enabled wait PSW it will appear as idle to the
      underlying host system. The code in default_idle calls vtime_stop_cpu
      which does the necessary voodoo to get the cpu time accounting right.
      The udelay code just loads an enabled wait PSW. To correct this rework
      the vtime_stop_cpu/vtime_start_cpu logic and move the difficult parts
      to entry[64].S, vtime_stop_cpu can now be called from anywhere and
      vtime_start_cpu is gone. The correction of the cpu time during wakeup
      from an enabled wait PSW is done with a critical section in entry[64].S.
      As vtime_start_cpu is gone, s390_idle_check can be removed as well.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      4c1051e3
  8. 13 Jan, 2012 1 commit
  9. 05 Jan, 2011 1 commit
    • Heiko Carstens's avatar
      [S390] irq: have detailed statistics for interrupt types · 052ff461
      Heiko Carstens authored
      Up to now /proc/interrupts only has statistics for external and i/o
      interrupts but doesn't split up them any further.
      This patch adds a line for every single interrupt source so that it
      is possible to easier tell what the machine is/was doing.
      Part of the output now looks like this;
      
                 CPU0       CPU2       CPU4
      EXT:       3898       4232       2305
      I/O:        782        315        245
      CLK:       1029       1964        727   [EXT] Clock Comparator
      IPI:       2868       2267       1577   [EXT] Signal Processor
      TMR:          0          0          0   [EXT] CPU Timer
      TAL:          0          0          0   [EXT] Timing Alert
      PFL:          0          0          0   [EXT] Pseudo Page Fault
      [...]
      NMI:          0          1          1   [NMI] Machine Checks
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      052ff461
  10. 25 Nov, 2010 1 commit
    • Heiko Carstens's avatar
      [S390] nmi: fix clock comparator revalidation · e8129c64
      Heiko Carstens authored
      On each machine check all registers are revalidated. The save area for
      the clock comparator however only contains the upper most seven bytes
      of the former contents, if valid.
      Therefore the machine check handler uses a store clock instruction to
      get the current time and writes that to the clock comparator register
      which in turn will generate an immediate timer interrupt.
      However within the lowcore the expected time of the next timer
      interrupt is stored. If the interrupt happens before that time the
      handler won't be called. In turn the clock comparator won't be
      reprogrammed and therefore the interrupt condition stays pending which
      causes an interrupt loop until the expected time is reached.
      
      On NOHZ machines this can result in unresponsive machines since the
      time of the next expected interrupted can be a couple of days in the
      future.
      
      To fix this just revalidate the clock comparator register with the
      expected value.
      In addition the special handling for udelay must be changed as well.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      e8129c64
  11. 17 May, 2010 1 commit
    • Martin Schwidefsky's avatar
      [S390] idle time accounting vs. machine checks · 6377981f
      Martin Schwidefsky authored
      A machine check can interrupt the i/o and external interrupt handler
      anytime. If the machine check occurs while the interrupt handler is
      waking up from idle vtime_start_cpu can get executed a second time
      and the int_clock / async_enter_timer values in the lowcore get
      clobbered. This can confuse the cpu time accounting.
      To fix this problem two changes are needed. First the machine check
      handler has to use its own copies of int_clock and async_enter_timer,
      named mcck_clock and mcck_enter_timer. Second the nested execution
      of vtime_start_cpu has to be prevented. This is done in s390_idle_check
      by checking the wait bit in the program status word.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      6377981f
  12. 12 Jun, 2009 1 commit
  13. 14 Apr, 2009 1 commit
  14. 26 Mar, 2009 3 commits
  15. 31 Dec, 2008 1 commit
  16. 14 Jul, 2008 2 commits
  17. 06 Jun, 2008 1 commit
  18. 07 May, 2008 1 commit
  19. 17 Apr, 2008 1 commit
  20. 27 Apr, 2007 2 commits
  21. 05 Feb, 2007 3 commits
  22. 02 Oct, 2006 1 commit
    • Cedric Le Goater's avatar
      [PATCH] replace cad_pid by a struct pid · 9ec52099
      Cedric Le Goater authored
      There are a few places in the kernel where the init task is signaled.  The
      ctrl+alt+del sequence is one them.  It kills a task, usually init, using a
      cached pid (cad_pid).
      
      This patch replaces the pid_t by a struct pid to avoid pid wrap around
      problem.  The struct pid is initialized at boot time in init() and can be
      modified through systctl with
      
      	/proc/sys/kernel/cad_pid
      
      [ I haven't found any distro using it ? ]
      
      It also introduces a small helper routine kill_cad_pid() which is used
      where it seemed ok to use cad_pid instead of pid 1.
      
      [akpm@osdl.org: cleanups, build fix]
      Signed-off-by: default avatarCedric Le Goater <clg@fr.ibm.com>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9ec52099
  23. 28 Sep, 2006 1 commit
    • Martin Schwidefsky's avatar
      [S390] Inline assembly cleanup. · 94c12cc7
      Martin Schwidefsky authored
      Major cleanup of all s390 inline assemblies. They now have a common
      coding style. Quite a few have been shortened, mainly by using register
      asm variables. Use of the EX_TABLE macro helps  as well. The atomic ops,
      bit ops and locking inlines new use the Q-constraint if a newer gcc
      is used.  That results in slightly better code.
      
      Thanks to Christian Borntraeger for proof reading the changes.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      94c12cc7
  24. 20 Sep, 2006 1 commit
  25. 12 Jul, 2006 1 commit
    • Cornelia Huck's avatar
      [S390] path grouping and path verifications fixes. · 7e560814
      Cornelia Huck authored
      1. Multipath devices for which SetPGID is not supported are not handled well.
         Use NOP ccws for path verification (sans path grouping) when SetPGID is not
         supported.
      2. Check for PGIDs already set with SensePGID on _all_ paths (not just the
         first one) and try to find a common one. Moan if no common PGID can be
         found (and use NOP verification). If no PGIDs have been set, use the css
         global PGID (as before). (Rationale: SetPGID will get a command reject if
         the PGID it tries to set does not match the already set PGID.)
      3. Immediately before reboot, issue RESET CHANNEL PATH (rcp) on all chpids. This
         will remove the old PGIDs. rcp will generate solicited CRWs which can be
         savely ignored by the machine check handler (all other actions create
         unsolicited CRWs).
      Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      7e560814
  26. 03 Jul, 2006 1 commit
  27. 30 Jun, 2006 1 commit
  28. 29 Jun, 2006 1 commit
  29. 02 May, 2006 1 commit
  30. 28 Apr, 2006 1 commit
  31. 06 Jan, 2006 2 commits
  32. 05 Sep, 2005 1 commit
    • Martin Schwidefsky's avatar
      [PATCH] s390: machine check handler bugs · ae6aa2ea
      Martin Schwidefsky authored
      The new machine check handler still has a few bugs.
      
      1) The system entry time has to be stored in the machine check handler,
      
      2) the machine check return psw may not be stored at the usual place
         because it might overwrite the return psw of the interrupted context,
      
      3) the return address for the call to s390_handle_mcck in the i/o interrupt
         handler is not correct,
      
      4) the system call cleanup has to take the different save area of the
         machine check handler into account,
      
      5) the machine check handler may not call UPDATE_VTIME before
         CREATE_STACK_FRAME, and
      
      6) the io leave path needs a critical section cleanup to make sure that the
         TIF_MCCK_PENDING bit is really checked before switching back to user space.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ae6aa2ea
  33. 25 Jun, 2005 1 commit