1. 08 Sep, 2004 22 commits
    • Roland McGrath's avatar
      [PATCH] ptrace userspace API preservation · fad0738b
      Roland McGrath authored
      This makes any ptrace operation that finds the target in TASK_STOPPED state
      morph it into TASK_TRACED state before doing anything.  This necessitates
      reverting the last_siginfo accesses to check instead of assume last_siginfo
      is set, since it's no longer impossible to be in TASK_TRACED without being
      stopped in ptrace_stop (though there are no associated races to worry
      about).
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      fad0738b
    • Roland McGrath's avatar
      [PATCH] cleanup ptrace stops and remove notify_parent · cece79ae
      Roland McGrath authored
      This adds a new state TASK_TRACED that is used in place of TASK_STOPPED
      when a thread stops because it is ptraced.  Now ptrace operations are only
      permitted when the target is in TASK_TRACED state, not in TASK_STOPPED. 
      This means that if a process is stopped normally by a job control signal
      and then you PTRACE_ATTACH to it, you will have to send it a SIGCONT before
      you can do any ptrace operations on it.  (The SIGCONT will be reported to
      ptrace and then you can discard it instead of passing it through when you
      call PTRACE_CONT et al.)
      
      If a traced child gets orphaned while in TASK_TRACED state, it morphs into
      TASK_STOPPED state.  This makes it again possible to resume or destroy the
      process with SIGCONT or SIGKILL.
      
      All non-signal tracing stops should now be done via ptrace_notify.  I've
      updated the syscall tracing code in several architectures to do this
      instead of replicating the work by hand.  I also fixed several that were
      unnecessarily repeating some of the checks in ptrace_check_attach.  Calling
      ptrace_check_attach alone is sufficient, and the old checks repeated before
      are now incorrect, not just superfluous.
      
      I've closed a race in ptrace_check_attach.  With this, we should have a
      robust guarantee that when ptrace starts operating, the task will be in
      TASK_TRACED state and won't come out of it.  This is because the only way
      to resume from TASK_TRACED is via ptrace operations, and only the one
      parent thread attached as the tracer can do those.
      
      This patch also cleans up the do_notify_parent and do_notify_parent_cldstop
      code so that the dead and stopped cases are completely disjoint.  The
      notify_parent function is gone.
      Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cece79ae
    • Christoph Hellwig's avatar
      [PATCH] factor out common <asm/hardirq.h> code · cfec5c01
      Christoph Hellwig authored
      Since the irq handling rework in 2.5 lots of code in the individual
      <asm/hardirq.h> files is the same.  This patch moves that common code
      to <linux/hardirq.h>.  The following differences existed:
      
       - alpha, m68k, m68knommu and v850 were missing the ~PREEMPT_ACTIVE
         masking in the CONFIG_PREEMPT case of in_atomic().  These
         architectures don't support CONFIG_PREEMPT else this would have been
         an easily-spottbale bug
       - S390 didn't provide synchronize_irq as it doesn't fit into their
         I/O model.  They now get a spurious prototype/macro
       - ppc added a new preemptible() macro that is provided for all
         architectures now.
      
      Most drivers were using <linux/interrupt.h> as they should, but a few
      drivers and lots of architecture code has been updated to use
      <linux/hardirq.h> instead of <asm/hardirq.h>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cfec5c01
    • Andi Kleen's avatar
      [PATCH] Cleanup & fix lost ticks handling on x86-64 · 36ea58a5
      Andi Kleen authored
      This cleans up the x86-64 lost tick handling and fixes some issues:
      
      First it moves that code into an own function.
      
      The newer could would become very noisy when the machine loses timer ticks
      regularly.  This happens often on some laptops etc.  during the acpi ec
      access (nothing much can be really done about it) This patch prints the
      warnings only once.
      
      It also fixes the logic on when to ask cpufreq for a new estimate.
      
      And it implements timer fallback to HPET when there are really lots of lost
      ticks.  This is following i386.  PIT fallback isn't implemented right now
      though, but I hope we don't need this.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      36ea58a5
    • David Gibson's avatar
      [PATCH] ppc64: handle SLB misses in realmode · 24ad7bda
      David Gibson authored
      Tested on pSeries and iSeries.  Some future plans for VSID allocation may
      mean we have to take this out again, but that's a while off yet, and in the
      meantime it's a significant speedup.
      
      This patch makes the PPC64 SLB miss handler run in real mode (i.e.  MMU
      off) for it's whole duration, on pSeries machines.  Avoiding the rfid used
      to turn relocation on saves some 70-80 cycles on Power4 and Power5.  Not
      having to save and restore SRR0 and SRR1 saves a few more, and means we
      don't need an extra save slot for r3.  Overall there's around a 27% speedup
      on Power4.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      24ad7bda
    • David Gibson's avatar
      [PATCH] ppc64: fix declaration order in asm-ppc64/tlb.h · dc85e798
      David Gibson authored
      In asm-ppc64/tlb.h, tlb_flush() is defined as inline after the #include of
      asm-generic/tlb.h which uses it, defeating the inline directive.  gcc-3.4
      exposes this problem, causing a compile failure.  This patch reorders the
      file to fix the problem.
      Signed-off-by: default avatarDavid Gibson <dwg@au1.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      dc85e798
    • Anton Blanchard's avatar
      [PATCH] ppc64: fix compat NUMA API on big endian 64bit · 7896d77b
      Anton Blanchard authored
      Switch the NUMA API to use compat_get_bitmap/compat_put_bitmap.  In order
      to use compat_alloc_userspace instead of set_fs tricks, we have to do a few
      copies.
      
      This is what we are currently using on ppc64 but are willing to entertain
      the idea of going to a 32bit bitmap, especially considering how much hoops
      we have to go through to get it right in this patch.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7896d77b
    • Anton Blanchard's avatar
      5511cbde
    • Anton Blanchard's avatar
      [PATCH] ppc64: fix compat cpu affinity on big endian 64bit · 7292f3aa
      Anton Blanchard authored
      Add compat sched affinity code.  We can argue about how
      USE_COMPAT_ULONG_CPUMASK works now that the non compat interface has
      changed.
      
      The old non compat behaviour was to require a bitmap long enough in both
      setaffinity and getaffinity, now its only required in getaffinity.  I could
      do the same for the 32bit interfaces.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7292f3aa
    • Anton Blanchard's avatar
      [PATCH] ppc64: fix boot memory reporting · 43c8585c
      Anton Blanchard authored
      The memory reporting line was completely broken on NUMA:
      
      Memory: 481600k available (0k kernel code, 0k data, 0k init) [c000000000000000,c000000020000000]
      
      Replace it with something that works with NUMA both enabled and
      disabled:
      
      Memory: 485888k/524288k available (4068k kernel code, 38104k reserved, 2348k data, 712k bss, 320k init)
      
      Also just use the section symbols like x86 does.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      43c8585c
    • Anton Blanchard's avatar
      [PATCH] ppc64: cut down paca footprint · f50dda06
      Anton Blanchard authored
      The paca currently contains an iseries only structure which is quite large
      (~1kB).  The following patch removes this overhead on pseries and g5
      kernels.
      
      Since the paca is no longer required to be page aligned, remove it from the
      page aligned section.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      f50dda06
    • Anton Blanchard's avatar
      [PATCH] ppc64: be resilient against sysfs PCI config accesses · 957ec2fa
      Anton Blanchard authored
      Check the EEH return code and dont warn or panic if we get a non fatal
      error.  Also up the printk on EEH error.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      957ec2fa
    • Anton Blanchard's avatar
      [PATCH] ppc64: fix __rw_yield prototype · ba5d8937
      Anton Blanchard authored
      From: Nathan Lynch <nathanl@austin.ibm.com>
      
      Hit this in latest bk:
      
      include/asm/spinlock.h: In function `_raw_read_lock':
      include/asm/spinlock.h:198: warning: passing arg 1 of `__rw_yield' from incompatible pointer type
      include/asm/spinlock.h: In function `_raw_write_lock':
      include/asm/spinlock.h:255: warning: passing arg 1 of `__rw_yield' from incompatible pointer type
      
      This seems to have been broken by the out-of-line spinlocks patch.
      You won't hit it unless you've enabled CONFIG_PPC_SPLPAR.  Use the
      rwlock_t for the argument type, and move the definition of rwlock_t up
      next to that of spinlock_t.
      Signed-off-by: default avatarNathan Lynch <nathanl@austin.ibm.com>
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ba5d8937
    • Anton Blanchard's avatar
      [PATCH] ppc64: fix hang on oprofile shutdown · 34201b6e
      Anton Blanchard authored
      We had a problem in our dummy perfmon handler where we wouldnt reset the
      PMAO bit.  If the bit ended up set and oprofile shutdown and removed its
      handler then we would end up in a hard loop taking perfmon exceptions.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      34201b6e
    • Anton Blanchard's avatar
      [PATCH] ppc64: allow SD_NODES_PER_DOMAIN to be overridden · d5e38721
      Anton Blanchard authored
      Allow SD_NODES_PER_DOMAIN to be overridden.  On ppc64 set this at 16 so our
      top level scheduling domains will include all nodes.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d5e38721
    • Joseph Fannin's avatar
      [PATCH] ppc build fix · e94456cc
      Joseph Fannin authored
      The #include <asm/io.h> comes from bk-ia64.patch time interpolation logic
      patch from Cristoph Lameter.
      Signed-off-by: default avatarJoseph Fannin <jhf@rivenstone.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      e94456cc
    • Christoph Lameter's avatar
      [PATCH] Time interpolator: Scalability enhancements and high resolution time for IA64 · bd46a4f1
      Christoph Lameter authored
      This has been in the ia64 (and hence -mm) trees for a couple of months.
      
      Changelog:
       * Affects only architectures which define CONFIG_TIME_INTERPOLATION
         (currently only IA64)
       * Genericize time interpolation, make time interpolators easily usable
         and provide instructions on how to use the interpolator for other
         architectures.
       * Provide nanosecond resolution for clock_gettime and an accuracy
         up to the time interpolator time base.
       * clock_getres() reports resolution of underlying time basis which
         is typically <50ns and may be 1ns on some systems.
       * Make time interpolator self-tuning to limit time jumps
         and to make the interpolators work correctly on systems with
         broken time base specifications.
       * SMP scalability: Make clock_gettime and gettimeofday scale O(1)
         by removing the cmpxchg for most clocks (tested for up to 512 CPUs)
       * IA64: provide asm fastcall that doubles the performance
         of gettimeofday and clock_gettime on SGI and other IA64 systems
         (asm fastcalls scale O(1) together with the scalability fixes).
       * IA64: provide nojitter kernel option so that IA64 systems with
         correctly synchronized ITC counters may also enjoy the
         scalability enhancements.
      
      Performance measurements for single calls (ITC cycles):
      
      A. 4 way Intel IA64 SMP system (kmart)
      
      ITC offsets:
      kmart:/usr/src/noship-tests # dmesg|grep synchr
      CPU 1: synchronized ITC with CPU 0 (last diff 1 cycles, maxerr 417 cycles)
      CPU 2: synchronized ITC with CPU 0 (last diff 2 cycles, maxerr 417 cycles)
      CPU 3: synchronized ITC with CPU 0 (last diff 1 cycles, maxerr 417 cycles)
      
      A.1. Current kernel code
      
      kmart:/usr/src/noship-tests # ./dmt
      gettimeofday cycles: 3737 220 215 215 215 215 215 215 215 215
      clock_gettime(REAL) cycles: 4058 575 564 576 565 566 558 558 558 558
      clock_gettime(MONO) cycles: 1583 621 609 609 609 609 609 609 609 609
      clock_gettime(PROCESS) cycles: 71428 298 259 259 259 259 259 259 259 259
      clock_gettime(THREAD) cycles: 3982 336 290 298 298 298 298 286 286 286
      
      A.2 New code using cmpxchg
      
      kmart:/usr/src/noship-tests # ./dmt
      gettimeofday cycles: 3145 213 216 213 213 213 213 213 213 213
      clock_gettime(REAL) cycles: 3185 230 210 210 210 210 210 210 210 210
      clock_gettime(MONO) cycles: 284 217 217 216 216 216 216 216 216 216
      clock_gettime(PROCESS) cycles: 68857 289 270 259 259 259 259 259 259 259
      clock_gettime(THREAD) cycles: 3862 339 298 298 298 298 290 286 286 286
      
      A.3 New code with cmpxchg switched off (nojitter kernel option)
      
      kmart:/usr/src/noship-tests # ./dmt
      gettimeofday cycles: 3195 219 219 212 212 212 212 212 212 212
      clock_gettime(REAL) cycles: 3003 228 205 205 205 205 205 205 205 205
      clock_gettime(MONO) cycles: 279 209 209 209 208 208 208 208 208 208
      clock_gettime(PROCESS) cycles: 65849 292 259 259 268 270 270 259 259 259
      
      B. SGI SN2 system running 512 IA64 CPUs.
      
      B.1. Current kernel code
      
      [root@ascender noship-tests]# ./dmt
      gettimeofday cycles: 17221 1028 1007 1004 1004 1004 1010 25928 1002 1003
      clock_gettime(REAL) cycles: 10388 1099 1055 1044 1064 1063 1051 1056 1061 1056
      clock_gettime(MONO) cycles: 2363 96 96 96 96 96 96 96 96 96
      clock_gettime(PROCESS) cycles: 46537 804 660 666 666 666 666 666 666 666
      clock_gettime(THREAD) cycles: 10945 727 710 684 685 686 685 686 685 686
      
      B.2 New code
      
      ascender:~/noship-tests # ./dmt
      gettimeofday cycles: 3874 610 588 588 588 588 588 588 588 588
      clock_gettime(REAL) cycles: 3893 612 588 582 588 588 588 588 588 588
      clock_gettime(MONO) cycles: 686 595 595 588 588 588 588 588 588 588
      clock_gettime(PROCESS) cycles: 290759 322 269 269 259 265 265 265 259 259
      clock_gettime(THREAD) cycles: 5153 358 306 298 296 304 290 298 298 298
      
      Scalability of time functions (in time it takes to do a million calls):
      =======================================================================
      
      A. 4 way Intel IA SMP system (kmart)
      A.1 Current code
      
      kmart:/usr/src/noship-tests # ./todscale -n1000000
       CPUS       WALL  WALL/CPUS
          1      0.192      0.192
          2      1.125      0.563
          4      9.229      2.307
      
      A.2 New code using cmpxchg
      
      kmart:/usr/src/noship-tests # ./todscale
       CPUS       WALL  WALL/CPUS
          1      0.188      0.188
          2      0.457      0.229
          4      0.413      0.103
      
      (the measurement with 4 cpus may fluctuate up to 15.x somehow)
      
      A.3 New code without cmpxchg (nojitter kernel option)
      
      kmart:/usr/src/noship-tests # ./todscale -n10000000
       CPUS       WALL  WALL/CPUS
          1      0.180      0.180
          2      0.180      0.090
          4      0.252      0.063
      
      B. SGI SN2 system running 512 IA64 CPUs.
      
      The system has a global monotonic clock and therefore has
      no need for compensation. Current code uses a cmpxchg. New
      code has no cmpxchg.
      
      B.1 current code
      
      ascender:~/noship-tests # ./todscale
       CPUS       WALL  WALL/CPUS
          1      0.850      0.850
          2      1.767      0.884
          4      6.124      1.531
          8     20.777      2.597
         16     57.693      3.606
         32    164.688      5.146
         64    456.647      7.135
        128   1093.371      8.542
        256   2778.257     10.853
      (System crash at 512 CPUs)
      
      B.2 New code
      
      ascender:~/noship-tests # ./todscale -n1000000
       CPUS       WALL  WALL/CPUS
          1      0.426      0.426
          2      0.429      0.215
          4      0.436      0.109
          8      0.452      0.057
         16      0.454      0.028
         32      0.457      0.014
         64      0.459      0.007
        128      0.466      0.004
        256      0.474      0.002
        512      0.518      0.001
      
      Clock Accuracy
      ==============
      A. 4 CPU SMP system
      
      A.1 Old code
      
      kmart:/usr/src/noship-tests # ./cdisp
                Gettimeofday() = 1092124757.270305000
                 CLOCK_REALTIME= 1092124757.270382000 resolution= 0.000976563
                CLOCK_MONOTONIC=         89.696726590 resolution= 0.000976563
       CLOCK_PROCESS_CPUTIME_ID=          0.001242507 resolution= 0.000000001
        CLOCK_THREAD_CPUTIME_ID=          0.001255310 resolution= 0.000000001
      
      A.2 New code
      
      kmart:/usr/src/noship-tests # ./cdisp
                Gettimeofday() = 1092124478.194530000
                 CLOCK_REALTIME= 1092124478.194603399 resolution= 0.000000001
                CLOCK_MONOTONIC=         88.198315204 resolution= 0.000000001
       CLOCK_PROCESS_CPUTIME_ID=          0.001241235 resolution= 0.000000001
        CLOCK_THREAD_CPUTIME_ID=          0.001254747 resolution= 0.000000001
      Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      bd46a4f1
    • Adam Kropelin's avatar
      [PATCH] input: Eliminate hiddev.h dependency on hid.h · c9daeae6
      Adam Kropelin authored
      hiddev.h needs hid.h but doesn't include it.  Since hid.h is private anyway
      just eliminate the need for it it in the first place.
      Signed-off-by: default avatarAdam Kropelin <akropel1@rochester.rr.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c9daeae6
    • Adam Kropelin's avatar
      [PATCH] input: Fix hiddev disconnect-while-in-use oops · 38a3d44d
      Adam Kropelin authored
      hid-core calls hiddev_disconnect() when the underlying device goes away
      (hot unplug or system shutdown).  Normally, hiddev_disconnect() will clean
      up nicely and return to hid-core who then frees the hid structure.
      However, if the corresponding hiddev node is open at disconnect time,
      hiddev delays the majority of disconnect work until the device is closed
      via hiddev_release().  hiddev_release() calls hiddev_cleanup() which
      proceeds to dereference the hid struct which hid-core freed back when the
      hardware was disconnected.  Oops.
      
      To solve this, we change hiddev_disconnect() to deregister the hiddev minor
      and invalidate its table entry immediately and delay only the freeing of
      the hiddev structure itself.  We're protected against future operations on
      the fd since the major fops check hiddev->exists.
      Signed-off-by: default avatarAdam Kropelin <akropel1@rochester.rr.com>
      Signed-off-by: default avatarVojtech Pavlik <vojtech@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      38a3d44d
    • Geert Uytterhoeven's avatar
      [PATCH] Convert in-kernel users of EXPORT_SYMBOL_NOVERS() to EXPORT_SYMBOL() · 0ed7d2e4
      Geert Uytterhoeven authored
      Convert all in-kernel users of the deprecated EXPORT_SYMBOL_NOVERS() to
      EXPORT_SYMBOL().
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      0ed7d2e4
    • Jan Harkes's avatar
      [PATCH] Coda - fix sparse warnings · 4b5e78cf
      Jan Harkes authored
      I reused the coda_file_read wrapper for sendfile and accidentally left
      the __user tag on the buffer. This patch should fix the sparse warnings.
      Signed-off-by: default avatarJan Harkes <jaharkes@cs.cmu.edu>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      4b5e78cf
    • Linus Torvalds's avatar
      Merge bk://drm.bkbits.net/drm-fntbl · 3d1331e4
      Linus Torvalds authored
      into ppc970.osdl.org:/home/torvalds/v2.6/linux
      3d1331e4
  2. 09 Sep, 2004 5 commits
  3. 07 Sep, 2004 13 commits