1. 08 Sep, 2004 32 commits
    • Roland Dreier's avatar
      [PATCH] fs/compat.c: rwsem instead of BKL around ioctl32_hash_table · 6043dddc
      Roland Dreier authored
      Currently the BKL is used to synchronize access to ioctl32_hash_table in
      fs/compat.c.  It seems that an rwsem would be more appropriate, since this
      would allow multiple lookups to occur in parallel (and also serve the
      general good of minimizing use of the BKL).
      
      I added lock_kernel()/unlock_kernel() around the call to t->handler when a
      compatibility handler is found in compat_sys_ioctl() to preserve the
      expectation that the BKL will be held during driver ioctl operations.  It
      should be safe to do lock_kernel() while holding ioctl32_sem because of the
      magic BKL sleep semantics.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      6043dddc
    • Christoph Hellwig's avatar
      [PATCH] remove unused sysctls from kernel/personality.c · fa77470d
      Christoph Hellwig authored
      These are only used by the out of tree linux-abi project, so it makes sense
      to define them in those modules.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      fa77470d
    • Christoph Hellwig's avatar
      [PATCH] centralize some nls helpers · 5be94d3e
      Christoph Hellwig authored
      This patch adds common nls_tolower, nls_toupper and nls_strnicmp helpers to
      nls.h and uses them in various filesystems instead of local duplicates.
      
      The situation for ncpfs isn't as nice as it allows to compile without nls
      support even if the kernel has CONFIG_NLS set, so we need wrappers there.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5be94d3e
    • Manfred Spraul's avatar
      [PATCH] fix f_version optimization for get_tgid_list · 94486dbd
      Manfred Spraul authored
      The kernel contains an optimization that skips the linked list walk in
      get_tgid_list for the common case of sequential accesses.  Unfortunately
      the optimization is buggy (missing NULL pointer check for the result of
      find_task_by_pid) and broken (actually - broken twice: the tgid value that
      is stored in f_version is always 0 because tgid is overwritten when the
      string is created and additionally the common case is not filldir < 0, it's
      running out of nr_tgids).
      
      The attached patch fixes these bugs.
      
      Roger Luethi <rl@hellgate.ch> ran a benchmark:
      
      	test: top -d 0 -b -n 10 > /dev/null
      
      	==> 2.6.8 <==
      	real    0m19.092s
      	user    0m5.013s
      	sys     0m12.622s
      
      	==> 2.6.8 + patch-tgid-bugfixes <==
      	real    0m10.062s
      	user    0m5.042s
      	sys     0m4.111s
      Signed-Off-By: default avatarManfred Spraul <manfred@colorfullife.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      94486dbd
    • Ram Pai's avatar
      [PATCH] filemap read() fix · 5c689659
      Ram Pai authored
      Fix the do_generic_file_read()-reads-one-page-too-many-bug for the fifth
      time.
      
      This patch combines the best features from Nick's patch and also makes
      index and end_index consistent.  (i.e index 'n' covers n*PAGE_SIZE to
      ((n+1)PAGE_SIZE)-1.  I did not feel comfortable with the way index and
      end_index represented different ranges.  It was like comparing apples with
      oranges.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5c689659
    • Ken Preslan's avatar
      [PATCH] Allow cluster-wide flock · 22141f05
      Ken Preslan authored
      Below is a patch that lets a cluster filesystem (such as GFS) implement
      flock across the cluster.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      22141f05
    • Andy Polyakov's avatar
      [PATCH] cdrom signedness range fixes · c1b76a2b
      Andy Polyakov authored
      Fix a few range checks which aren't working right because
      
      	if (int < sizeof(...))
      
      does the wrong thing if `int' is negative, due to `sizeof' returning unsigned.
      
      In addition to comparisons, the patch makes CDROMVOL* ioctl more robust.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c1b76a2b
    • Roland McGrath's avatar
      [PATCH] make single-step into signal delivery stop in handler · 0cc0515b
      Roland McGrath authored
      On x86 and x86-64, setting up to run a signal handler clears the
      single-step bit (TF) in the processor flags before starting the handler.
      This makes sense when a process is handling its own SIGTRAPs.
      
      But when TF is set because PTRACE_SINGLESTEP was used, and that call
      specified a handled signal so the handler setup is happening, it doesn't
      make so much sense.  When the debugger stops to show you a signal about to
      be delivered, and that signal should be handled, and then you do step or
      stepi, you expect to see the signal handler code.  In fact, the signal
      handler runs to completion and then you see the single-step trap at the
      resumed code instead of seeing the handler.  
      
      This patch changes signal handler setup so that when TF is set and the
      thread is under ptrace control, it synthesizes a single-step trap after
      setting up the PC and registers to start the handler.  This makes that
      PTRACE_SINGLESTEP not strictly a "step", since it actually runs no user
      instructions at all.  But it is definitely what a debugger user wants, so
      that single-stepping always stops and shows each and every instruction
      before it gets executed.
      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>
      0cc0515b
    • Roland McGrath's avatar
      [PATCH] i386 syscall tracing of bogus system calls · f5b01e38
      Roland McGrath authored
      In 2.4, strace will show you all bogus system calls a process tries.  In
      2.6, it only shows you stubs < __NR_syscalls, and there is no tracing stop
      for large bogus system call numbers.  I can't see why this was changed, so
      I am assuming it was accidental.
      
      This patch restores the expected behavior that syscall tracing shows every
      bogus syscall attempt.
      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>
      f5b01e38
    • Roland McGrath's avatar
      [PATCH] Remove RUSAGE_GROUP · d8888069
      Roland McGrath authored
      After my cleanup of the rusage semantics was so quickly taken in by Andrew
      and Linus without comment, I wonder if I should not have tried to be so
      accommodating of potential objections as I was.  :-)
      
      In my original posting, I solicited comment on whether introducing
      RUSAGE_GROUP as distinct from RUSAGE_SELF was warranted.  Note that we've
      now changed the behavior of the times system call when using CLONE_THREAD,
      so changing getrusage RUSAGE_SELF to match would be consistent.  I think
      that changing the meaning of the old RUSAGE_SELF value is preferable to
      introducing the new value for the proper POSIX getrusage behavior.  This
      patch against Linus's current tree dumps RUSAGE_GROUP and makes RUSAGE_SELF
      have the fixed behavior.
      
      If there is interest in having a new explicit interface to sample a single
      thread's stats alone, then I think that would be better done by introducing
      a new value for RUSAGE_THREAD.  This is trivial to implement, but I won't
      offer patches bloating the interface if noone is actually interested in
      using it.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d8888069
    • 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 3 commits