1. 08 Sep, 2004 9 commits
    • 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 26 commits