1. 14 Apr, 2009 1 commit
  2. 26 Mar, 2009 5 commits
  3. 11 Feb, 2009 1 commit
  4. 31 Dec, 2008 2 commits
    • Martin Schwidefsky's avatar
      [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID · c742b31c
      Martin Schwidefsky authored
      
      
      The extract cpu time instruction (ectg) instruction allows the user
      process to get the current thread cputime without calling into the
      kernel. The code that uses the instruction needs to switch to the
      access registers mode to get access to the per-cpu info page that
      contains the two base values that are needed to calculate the current
      cputime from the CPU timer with the ectg instruction.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      c742b31c
    • Martin Schwidefsky's avatar
      [PATCH] improve precision of process accounting. · aa5e97ce
      Martin Schwidefsky authored
      
      
      The unit of the cputime accouting values that are stored per process is
      currently a microsecond. The CPU timer has a maximum granularity of
      2**-12 microseconds. There is no benefit in storing the per process values
      in the lesser precision and there is the disadvantage that the backend
      has to do the rounding to microseconds. The better solution is to use
      the maximum granularity of the CPU timer as cputime unit.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      aa5e97ce
  5. 01 Aug, 2008 1 commit
  6. 27 Apr, 2008 1 commit
  7. 17 Apr, 2008 3 commits
    • Christian Borntraeger's avatar
      [S390] kernel: show last breaking-event-address on oops · 9e74a6b8
      Christian Borntraeger authored
      
      
      Newer s390 models have a breaking-event-address-recording register.
      Each time an instruction causes a break in the sequential instruction
      execution, the address is saved in that hardware register. On a program
      interrupt the address is copied to the lowcore address 272-279, which
      makes it software accessible.
      
      This patch changes the program check handler and the stack overflow
      checker to copy the value into the pt_regs argument.
      The oops output is enhanced to show the last known breaking address.
      It might give additional information if the stack trace is corrupted.
      
      The feature is only available on 64 bit.
      
      The new oops output looks like:
      
      [---------snip----------]
      Modules linked in: vmcp sunrpc qeth_l2 dm_mod qeth ccwgroup
      CPU: 2 Not tainted 2.6.24zlive-host #8
      Process modprobe (pid: 4788, task: 00000000bf3d8718, ksp: 00000000b2b0b8e0)
      Krnl PSW : 0704200180000000 000003e000020028 (vmcp_init+0x28/0xe4 [vmcp])
                 R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3
      Krnl GPRS: 0000000004000002 000003e000020000 0000000000000000 0000000000000001
                 000000000015734c ffffffffffffffff 000003e0000b3b00 0000000000000000
                 000003e00007ca30 00000000b5bb5d40 00000000b5bb5800 000003e0000b3b00
                 000003e0000a2000 00000000003ecf50 00000000b2b0bd50 00000000b2b0bcb0
      Krnl Code: 000003e000020018: c0c000040ff4       larl    %r12,3e0000a2000
                 000003e00002001e: e3e0f0000024       stg     %r14,0(%r15)
                 000003e000020024: a7f40001           brc     15,3e000020026
                >000003e000020028: e310c0100004       lg      %r1,16(%r12)
                 000003e00002002e: c020000413dc       larl    %r2,3e0000a27e6
                 000003e000020034: c0a00004aee6       larl    %r10,3e0000b5e00
                 000003e00002003a: a7490001           lghi    %r4,1
                 000003e00002003e: a75900f0           lghi    %r5,240
      Call Trace:
      ([<000000000014b300>] blocking_notifier_call_chain+0x2c/0x40)
       [<000000000015735c>] sys_init_module+0x19d8/0x1b08
       [<0000000000110afc>] sysc_noemu+0x10/0x16
       [<000002000011cda2>] 0x2000011cda2
      Last Breaking-Event-Address:
       [<000003e000020024>] vmcp_init+0x24/0xe4 [vmcp]
      [---------snip----------]
      Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      9e74a6b8
    • Heiko Carstens's avatar
      [S390] lowcore: Change type of lowcores softirq_pending to __u32. · 1a5debaa
      Heiko Carstens authored
      
      
      As noted by akpm:
      
      > kernel/time/tick-sched.c: In function 'tick_nohz_stop_sched_tick':
      > kernel/time/tick-sched.c:229: warning: format '%02x' expects type 'unsigned int', but argument 2 has type '__u64'
      >
      > I don't think the architecture's local_softirq_pending() should return u64.
      > This is the sort of thing which should be consistent across architectures.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      1a5debaa
    • Heiko Carstens's avatar
      [S390] Convert s390 to GENERIC_CLOCKEVENTS. · 5a62b192
      Heiko Carstens authored
      
      
      This way we get rid of s390's NO_IDLE_HZ and use the generic dynticks
      variant instead. In addition we get high resolution timers for free.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      5a62b192
  8. 04 May, 2007 1 commit
  9. 27 Apr, 2007 1 commit
  10. 05 Feb, 2007 1 commit
    • Gerald Schaefer's avatar
      [S390] noexec protection · c1821c2e
      Gerald Schaefer authored
      
      
      This provides a noexec protection on s390 hardware. Our hardware does
      not have any bits left in the pte for a hw noexec bit, so this is a
      different approach using shadow page tables and a special addressing
      mode that allows separate address spaces for code and data.
      
      As a special feature of our "secondary-space" addressing mode, separate
      page tables can be specified for the translation of data addresses
      (storage operands) and instruction addresses. The shadow page table is
      used for the instruction addresses and the standard page table for the
      data addresses.
      The shadow page table is linked to the standard page table by a pointer
      in page->lru.next of the struct page corresponding to the page that
      contains the standard page table (since page->private is not really
      private with the pte_lock and the page table pages are not in the LRU
      list).
      Depending on the software bits of a pte, it is either inserted into
      both page tables or just into the standard (data) page table. Pages of
      a vma that does not have the VM_EXEC bit set get mapped only in the
      data address space. Any try to execute code on such a page will cause a
      page translation exception. The standard reaction to this is a SIGSEGV
      with two exceptions: the two system call opcodes 0x0a77 (sys_sigreturn)
      and 0x0aad (sys_rt_sigreturn) are allowed. They are stored by the
      kernel to the signal stack frame. Unfortunately, the signal return
      mechanism cannot be modified to use an SA_RESTORER because the
      exception unwinding code depends on the system call opcode stored
      behind the signal stack frame.
      
      This feature requires that user space is executed in secondary-space
      mode and the kernel in home-space mode, which means that the addressing
      modes need to be switched and that the noexec protection only works
      for user space.
      After switching the addressing modes, we cannot use the mvcp/mvcs
      instructions anymore to copy between kernel and user space. A new
      mvcos instruction has been added to the z9 EC/BC hardware which allows
      to copy between arbitrary address spaces, but on older hardware the
      page tables need to be walked manually.
      Signed-off-by: default avatarGerald Schaefer <geraldsc@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      c1821c2e
  11. 04 Dec, 2006 1 commit
    • Heiko Carstens's avatar
      [S390] Reset infrastructure for re-IPL. · 15e9b586
      Heiko Carstens authored
      
      
      In case of re-IPL and diag308 doesn't work we have to reset all devices
      manually and wait synchronously that each reset finished.
      This patch adds the necessary infrastucture and the first exploiter of it.
      
      Subsystems that need to add a function that needs to be called at re-IPL
      may register/unregister this function via
      
      struct reset_call {
      	struct reset_call *next;
      	void (*fn)(void);
      };
      
      void register_reset_call(struct reset_call *reset);
      void unregister_reset_call(struct reset_call *reset);
      
      When the registered function get called the context is:
      
      - all cpus beside the current one are stopped
      - all machine checks and interrupts are disabled
      - prefixing is disabled
      - a default machine check handler is available for use
      
      The registered functions may not take any locks are sleep.
      
      For the common I/O layer part of this patch:
      
      Introduce a reset_call css_reset that does the following:
      - clear all subchannels
      - perform a rchp on all channel paths and wait for the resulting
        machine checks
      This replaces the calls to clear_all_subchannels() and
      cio_reset_channel_paths() for kexec and ccw reipl. reipl_ccw_dev() now
      uses reipl_find_schid() to determine the subchannel id for a given
      device id.
      Also remove cio_reset_channel_paths() and friends since they are not
      needed anymore.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      15e9b586
  12. 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
  13. 20 Sep, 2006 2 commits
  14. 05 Jun, 2006 1 commit
  15. 26 Apr, 2006 1 commit
  16. 09 Nov, 2005 1 commit
  17. 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
  18. 27 Jul, 2005 1 commit
    • Martin Schwidefsky's avatar
      [PATCH] s390: spin lock retry · 951f22d5
      Martin Schwidefsky authored
      
      
      Split spin lock and r/w lock implementation into a single try which is done
      inline and an out of line function that repeatedly tries to get the lock
      before doing the cpu_relax().  Add a system control to set the number of
      retries before a cpu is yielded.
      
      The reason for the spin lock retry is that the diagnose 0x44 that is used to
      give up the virtual cpu is quite expensive.  For spin locks that are held only
      for a short period of time the costs of the diagnoses outweights the savings
      for spin locks that are held for a longer timer.  The default retry count is
      1000.
      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>
      951f22d5
  19. 25 Jun, 2005 1 commit
  20. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4