1. 08 Mar, 2005 40 commits
    • Linus Torvalds's avatar
      Merge bk://bk.arm.linux.org.uk/linux-2.6-serial · 7516ebee
      Linus Torvalds authored
      into ppc970.osdl.org:/home/torvalds/v2.6/linux
      7516ebee
    • Russell King's avatar
      [SERIAL] Add PCI state save/restore and PCI power state management · 9eb205b1
      Russell King authored
      Resolve a problem where a Sony Ericsson GC79 Cardbus device was not
      being correctly resumed across a S3 suspend, as reported by Hendrik
      Hoeth.
      Signed-off-by: default avatarRussell King <rmk@arm.linux.org.uk>
      9eb205b1
    • vandrove@cz.rmk.(none)'s avatar
      [SERIAL] Fix 16550A misdetection · c08ef542
      vandrove@cz.rmk.(none) authored
      Patch from Petr Vandrovec
      
      XScale detection needs access to Interrupt Enable Register on UART.
      But this register shares position with high byte clock divisor, and
      previous detection steps were leaving clock divisor and not IER
      selected, causing misdetection of all 16550A chips as XScale.
       
      Fix this by disabling access to clock divisor at the end of previous
      detection step, so chip is in same mode after each detection step.
       
      Signed-off-by: Petr Vandrovec
      c08ef542
    • Linus Torvalds's avatar
      Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk · 45d5a240
      Linus Torvalds authored
      into ppc970.osdl.org:/home/torvalds/v2.6/linux
      45d5a240
    • Tony Lindgren's avatar
      [ARM PATCH] 2451/1: OMAP 32KHz timer and 64-bit sched_clock, take 3 · ea3cfbd3
      Tony Lindgren authored
      Patch from Tony Lindgren
      
      This patch adds support for 32k timer on OMAP 16xx, and 64-bit
      sched clock to the MPU timer.
      This is an update version of ARM patch 2337/1. The 32k timer
      modulo code has been left out, and the dynamic tick (VST) timer
      will be submitted in a separate patch.
      
      Signed-off-by: Tony Lindgren
      Signed-off-by: Russell King
      ea3cfbd3
    • Russell King's avatar
      [ARM] Fix build error in rtctime.c · 482514b4
      Russell King authored
      Oops, it broke.  Glue the bits back together, replacing yrs with
      tm->tm_year + 1900.
      
      I will not merge untested changes into Linus' tree.
      I will not merge untested changes into Linus' tree.
      I will not merge untested changes into Linus' tree.
      I will not ...
      Signed-off-by: default avatarRussell King <rmk@arm.linux.org.uk>
      482514b4
    • Richard Purdie's avatar
      [ARM PATCH] 2522/1: Sharp SCOOP - Add mutliple device support · deecd433
      Richard Purdie authored
      Patch from Richard Purdie
      
      Sharp SCOOP: Devices with multiple scoop interfaces are now
      available so:
      * add support for mutliple device support to the driver
      * Update corgi, collie and poodle to share the scoop
        device structure so a device can be selected in drivers
      * Update drivers to use the device structures
      
      Signed-off-by: Richard Purdie
      Signed-off-by: Russell King
      deecd433
    • Lennert Buytenhek's avatar
      [ARM PATCH] 2517/1: more ixp2000 typo fixes · d364e189
      Lennert Buytenhek authored
      Patch from Lennert Buytenhek
      
      Another round of ixp2000 typo fixes.
      
      Signed-off-by: Lennert Buytenhek
      Signed-off-by: Russell King
      d364e189
    • Ben Dooks's avatar
      [ARM PATCH] 2516/1: S3C2410 - add Acer n30 · 56b5054f
      Ben Dooks authored
      Patch from Ben Dooks
      
      Add the Acer N30 machine, from Christer Weinigel
      
      Signed-off-by: Christer Weinigel
      
      Signed-off-by: Ben Dooks
      Signed-off-by: Russell King
      56b5054f
    • Linus Torvalds's avatar
      Merge bk://gkernel.bkbits.net/net-drivers-2.6 · ec18d379
      Linus Torvalds authored
      into ppc970.osdl.org:/home/torvalds/v2.6/linux
      ec18d379
    • Jeff Garzik's avatar
      Merge pobox.com:/garz/repo/linux-2.6 · def7102a
      Jeff Garzik authored
      into pobox.com:/garz/repo/net-drivers-2.6
      def7102a
    • Paul Mackerras's avatar
      [PATCH] ppc64: fix eeh.h compile warnings · 7e093c30
      Paul Mackerras authored
      This patch is from Nathan Lynch <ntl@pobox.com>.
      
      Use static inlines instead of #defines for stub functions when
      CONFIG_EEH=n, to eliminate "statement with no effect" warnings with
      some toolchains.
      Signed-off-by: default avatarNathan Lynch <ntl@pobox.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7e093c30
    • Paul Mackerras's avatar
      [PATCH] ppc64: update irq affinity mask when migrating irqs · 2cf0110a
      Paul Mackerras authored
      This patch is from Nathan Lynch <ntl@pobox.com>.
      
      When offlining a cpu, any device interrupts which are bound to the cpu
      have their affinity forcibly reset to all cpus (the default).
      However, the value in /proc/irq/XXX/smp_affinity remains unchanged.
      Since we're doing this while all the other cpus are stopped, it should
      be safe to just call desc->handler->set_affinity and manually update
      the irq_affinity array.
      Signed-off-by: default avatarNathan Lynch <ntl@pobox.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      2cf0110a
    • Paul Mackerras's avatar
      [PATCH] ppc64: call idle_task_exit with irqs disabled · d98d0dd6
      Paul Mackerras authored
      This patch is from Nathan Lynch <ntl@pobox.com>.
      
      Seeing this very occasionally during cpu hotplug testing:
      
       Badness in slb_flush_and_rebolt at arch/ppc64/mm/slb.c:52
       Call Trace:
       [c0000000ef0efbe0] [c0000000000127a0] .__switch_to+0xa4/0xf0 (unreliable)
       [c0000000ef0efc80] [c000000000050178] .idle_task_exit+0xbc/0x15c
       [c0000000ef0efd10] [c00000000000d108] .cpu_die+0x18/0x68
       [c0000000ef0efd90] [c00000000001023c] .dedicated_idle+0x1fc/0x254
       [c0000000ef0efe80] [c00000000000fc80] .cpu_idle+0x3c/0x54
       [c0000000ef0eff00] [c00000000003aa90] .start_secondary+0x108/0x148
       [c0000000ef0eff90] [c00000000000bd28] .enable_64b_mode+0x0/0x28
      
      idle_task_exit can result in a call to slb_flush_and_rebolt, which
      must not be called with interrupts enabled.  Make the call with
      interrupts disabled.
      Signed-off-by: default avatarNathan Lynch <ntl@pobox.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d98d0dd6
    • Paul Mackerras's avatar
      [PATCH] ppc64: error code cleanups rpa(php,dlpar) · 68417bcd
      Paul Mackerras authored
      This patch is from John Rose <johnrose@austin.ibm.com>
      
      This patch changes the RPA PCI Hotplug and DLPAR modules to use more
      conventional error values for return codes.  The goal is to make failure
      conditions obvious in the wrapper functions and in the caller code.
      Signed-off-by: default avatarJohn Rose <johnrose@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      68417bcd
    • Paul Mackerras's avatar
      [PATCH] ppc64: error code cleanups for rtas wrappers · 76cc4499
      Paul Mackerras authored
      This patch is from John Rose <johnrose@austin.ibm.com>
      
      This patch changes the rtas wrapper functions in rtas.c to map RTAS
      failure codes to conventional error values.  The goal is to make
      failure conditions obvious in the wrapper functions and in the caller
      code.
      Signed-off-by: default avatarJohn Rose <johnrose@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      76cc4499
    • Stephen Rothwell's avatar
      [PATCH] ppc64: "invert" dma mapping routines · 861cf520
      Stephen Rothwell authored
      This patch "inverts" the PPC64 dma mapping routines so that the pci_ and
      vio_ ... routines are implemented in terms of the dma_ ... routines (the
      vio_ routines disappear anyway as noone uses them directly any more).
      
      The most noticable change after this patch is applied will be that the
      flags passed to dma_alloc_coherent will now be honoured (whereas they were
      previously silently ignored since we used to just call
      pci_alloc_consistent).
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      861cf520
    • Andrea Arcangeli's avatar
      [PATCH] remove vmalloc guard page knowledge from arch code · 09aa3367
      Andrea Arcangeli authored
      Now that we cleaned up the guard page handling in vmalloc, we have to
      remove the p-PAGE_SIZE hack that was put in there for the original guard
      page handling.  This also removes some spurious tab.
      Signed-off-by: default avatarAndrea Arcangeli <andrea@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      09aa3367
    • Roland McGrath's avatar
      [PATCH] set RLIMIT_SIGPENDING limit based on RLIMIT_NPROC · bb5b2991
      Roland McGrath authored
      While looking into the issues Jeremy had with the RLIMIT_SIGPENDING limit,
      it occurred to me that the normal setting of this limit is bizarrely low.
      The initial hard limit setting (MAX_SIGPENDING) was taken from the old
      max_queued_signals parameter, which was for the entire system in aggregate.
      
      But even as a per-user limit, the 1024 value is incongruously low for this.
       On my machine, RLIMIT_NPROC allows me 8192 processes, but only 1024 queued
      signals, i.e.  fewer even than one pending signal in each process.  (To me,
      this really puts in doubt the sensibility of using a per-user limit for
      this rather than a per-process one, i.e.  counted in sighand_struct or
      signal_struct, which could have a much smaller reasonable value.  I don't
      recall the rationale for making this new limit per-user in the first
      place.)
      
      This patch sets the default RLIMIT_SIGPENDING limit at boot time, using the
      calculation that decides the default RLIMIT_NPROC limit.  This uses the
      same value for those two limits, which I think is still pretty conservative
      on the RLIMIT_SIGPENDING value.
      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>
      bb5b2991
    • Roland McGrath's avatar
      [PATCH] show RLIMIT_SIGPENDING usage in /proc/PID/status · a36e7143
      Roland McGrath authored
      Jeremy mentioned the aggravation of not being able to tell when your
      processes are using up signal queue entries and hitting the
      RLIMIT_SIGPENDING limit.  This patch adds a line to /proc/PID/status
      showing how many queue items are in use, and allowed, for your uid.
      
      I can certainly see the appeal of having a display of the number of queued
      items specific to each process, and even the items within the process
      broken down per signal number.  However, those are not things that are
      directly counted, and ascertaining them requires iterating through the
      queue.  This patch instead gives what can be readily determined in constant
      time using the accounting already done.  I'm not sure something more
      complex is warranted just to facilitate one particular debugging need.
      With this, you can see quickly that this particular problem has come up.
      Then examination of each process's SigPnd/ShdPnd lines ought to give you an
      indication of which processes have any queued RT signals sitting around for
      a long time, and you can then attack those programs directly, though there
      is no way after the fact to determine how many queued signals with the same
      number a given process has (short of killing it and seeing the usage drop).
      
      Note you may still have a mystery if the leaking programs are not leaving
      pending RT signals queued, but rather preallocating queue items via
      timer_create.  That usage is not readily apparent in any /proc information.
      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>
      a36e7143
    • Roland McGrath's avatar
      [PATCH] override RLIMIT_SIGPENDING for non-RT signals · 98e4b451
      Roland McGrath authored
      I can read POSIX to say that the siginfo_t data must be available when
      `kill' was used, as well.  This patch makes it allocate the siginfo_t, even
      when that exceeds {RLIMIT_SIGPENDING}, for any non-RT signal (< SIGRTMIN)
      not sent by sigqueue (actually, any signal that couldn't have been faked by
      a sigqueue call).  Of course, in an extreme memory shortage situation, you
      are SOL and violate POSIX a little before you die horribly from being out
      of memory anyway.
      
      The LEGACY_QUEUE logic already ensures that, for non-RT signals, at most
      one is ever on the queue.  So there really is no risk at all of unbounded
      resource consumption; the usage can reach {RLIMIT_SIGPENDING} + 31, is all.
      
      It's already the case that the limit can be exceeded by (in theory) up to
      {RLIMIT_NPROC}-1 in race conditions because the bump and the limit check
      are not atomic.  (Obviously you can only get anywhere near that many with
      assloads of preemption, but exceeding it by a few is not too unlikely.)
      This patch also fixes that accounting so that it should not be possible to
      exceed {RLIMIT_SIGPENDING} + SIGRTMIN-1 queue items per user in races.
      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>
      98e4b451
    • Roland McGrath's avatar
      [PATCH] make RLIMIT_CPU/SIGXCPU per-process · 9046dd43
      Roland McGrath authored
      POSIX requires that the RLIMIT_CPU resource limit that generates SIGXCPU be
      counted on a per-process basis.  Currently, Linux implements this for
      individual threads.  This patch fixes the semantics to conform with POSIX.
      
      The essential machinery for the process CPU limit is is tied into the new
      posix-timers code for process CPU clocks and timers.
      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>
      9046dd43
    • Roland McGrath's avatar
      [PATCH] make ITIMER_PROF, ITIMER_VIRTUAL per-process · d80d30ff
      Roland McGrath authored
      POSIX requires that setitimer, getitimer, and alarm work on a per-process
      basis.  Currently, Linux implements these for individual threads.  This patch
      fixes these semantics for the ITIMER_PROF timer (which generates SIGPROF) and
      the ITIMER_VIRTUAL timer (which generates SIGVTALRM), making them shared by
      all threads in a process (thread group).  This patch should be applied after
      the one that fixes ITIMER_REAL.
      
      The essential machinery for these timers is tied into the new posix-timers
      code for process CPU clocks and timers.  This patch requires the cputimers
      patch and its dependencies.
      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>
      d80d30ff
    • Roland McGrath's avatar
      [PATCH] make ITIMER_REAL per-process · c1dcd6c2
      Roland McGrath authored
      POSIX requires that setitimer, getitimer, and alarm work on a per-process
      basis.  Currently, Linux implements these for individual threads.  This patch
      fixes these semantics for the ITIMER_REAL timer (which generates SIGALRM),
      making it shared by all threads in a process (thread group).
      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>
      c1dcd6c2
    • Roland McGrath's avatar
      [PATCH] PANIC in check_process_timers() · 857b64a5
      Roland McGrath authored
      It was intended that such things would not be possible because getting into
      that code in the first place should be ruled out while exiting.  That
      removes the requirement for any special case check in the common path.
      But, it was done too late since it hadn't occurred to me that ->live going
      zero itself created a problem.
      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>
      857b64a5
    • Roland McGrath's avatar
      [PATCH] posix-timers: CPU clock support for POSIX timers · 2c3871a8
      Roland McGrath authored
      POSIX requires that when you claim _POSIX_CPUTIME and _POSIX_THREAD_CPUTIME,
      not only the clock_* calls but also timer_* calls must support the thread and
      process CPU time clocks.  This patch provides that support, building on my
      recent additions to support these clocks in the POSIX clock_* interfaces.
      This patch will not work without those changes, as well as the patch fixing
      the timer lock-siglock deadlock problem.
      
      The apparent pervasive changes to posix-timers.c are simply that some fields
      of struct k_itimer have changed name and moved into a union.  This was
      appropriate since the data structures required for the existing real-time
      timer support and for the new thread/process CPU-time timers are quite
      different.
      
      The glibc patches to support CPU time clocks using the new kernel support is
      in http://people.redhat.com/roland/glibc/kernel-cpuclocks.patch, and that
      includes tests for the timer support (if you build glibc with NPTL).
      From: Christoph Lameter <clameter@sgi.com>
      
        Your patch breaks the mmtimer driver because it used k_itimer values for
        its own purposes.  Here is a fix by defining an additional structure in
        k_itimer (same approach for mmtimer as the cpu timers):
      From: Roland McGrath <roland@redhat.com>
      
      Fix bug identified by Alexander Nyberg <alexn@dsv.su.se>
      
      > The problem arises from code touching the union in alloc_posix_timer()
      > which makes firing go non-zero. When firing is checked in
      > posix_cpu_timer_set() it will be positive causing an infinite loop.
      >
      > So either the below fix or preferably move the INIT_LIST_HEAD(x) from
      > alloc_posix_timer() to somewhere later where it doesn't disturb the other
      > union members.
      
      Thanks for finding this problem.  The latter is what I think is the right
      solution.  This patch does that, and also removes some superfluous rezeroing.
      Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
      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>
      2c3871a8
    • Roland McGrath's avatar
      [PATCH] posix-timers: fix posix-timers signals lock order · 68f35a6b
      Roland McGrath authored
      The posix-timers code establishes the locking order that k_itimer locks are
      outside siglocks.  However, when the signal code calls back into the
      posix-timers code to reload a timer after its signal is dequeued, it holds a
      siglock while calling do_schedule_next_timer, which gets a timer lock.
      
      I'm not sure there is any deadlock scenario possible using the real-time POSIX
      timers, because of the intricate arrangement of timer firing and resetting
      synchronization.  But with the new CPU timers code, this deadlock pops up
      right away.  Dropping the siglock here certainly doesn't hurt in the real-time
      timer cases, and it really seems like the right thing here to keep the locking
      details in the interface between signals and posix-timers code comprehensible.
      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>
      68f35a6b
    • Roland McGrath's avatar
      [PATCH] posix-timers: tidy up clock interfaces and consolidate dispatch logic cleanup · 615594c5
      Roland McGrath authored
      > We do need to do one or the other.  I assume the current indecision is
      > pending some benchmarking work?
      
      That was more or less the idea.  But I kind of figured someone would just
      tell me which one to do without actually doing any timings.  This patch
      (applies after the cpuclocks patch) makes the one decision, to use
      conditional branches rather than indirect calls in the common case.
      That is consistent with what the old code did.  
      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>
      615594c5
    • Roland McGrath's avatar
      [PATCH] posix-timers: high-resolution CPU clocks for POSIX clock_* syscalls · a78331f2
      Roland McGrath authored
      This patch provides support for thread and process CPU time clocks in the
      POSIX clock interface.  Both the existing utime and utime+stime information
      (already available via getrusage et al) can be used, as well as a new
      (potentially) more precise and accurate clock (which cannot distinguish user
      from system time).  The clock used is that provided by the `sched_clock'
      function already used internally by the scheduler.  This gives a way for
      platforms to provide the highest-resolution CPU time tracking that is
      available cheaply, and some already do so (such as x86 using TSC).  Because
      this clock is already sampled internally by the scheduler, this new tracking
      adds only the tiniest new overhead to accomplish the bookkeeping.
      
      Some notes:
      
      This allows per-thread clocks to be accessed only by other threads in the same
      process.  The only POSIX calls that access these are defined only for
      in-process use, and having this check is necessary for the userland
      implementations of the POSIX clock functions to robustly refuse stale
      clockid_t's in the face of potential PID reuse.
      
      This makes no constraint on who can see whose per-process clocks.  This
      information is already available for the VIRT and PROF (i.e.  utime and stime)
      information via /proc.  I am open to suggestions on if/how security
      constraints on who can see whose clocks should be imposed.
      
      The SCHED clock information is now available only via clock_* syscalls.  This
      means that per-thread information is not available outside the process. 
      Perhaps /proc should show sched_time as well?  This would let ps et al show
      this more-accurate information.
      
      When this code is merged, it will be supported in glibc.  I have written the
      support and added some test programs for glibc, which are what I mainly used
      to test the new kernel code.  You can get those here:
      
      	http://people.redhat.com/roland/glibc/kernel-cpuclocks.patchSigned-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>
      a78331f2
    • Roland McGrath's avatar
      [PATCH] posix-timers: tidy up clock interfaces and consolidate dispatch logic · 8b9cfca6
      Roland McGrath authored
      This patch cleans up the posix-timers interfaces for defining clocks, and the
      calls to them.  It fixes some sloppy types, adds a clockid_t parameter to the
      calls that lacked it, and adds a function pointer that can be used for
      clock_getres.  It further cleans up the posix-timers.c code using the k_clock
      function pointers or default functions when no hooks are supplied,
      consolidating repeated code into shared inline functions or macros.  This
      paves the way for adding the CPU clock hooks.
      
      The mmtimer.c changes are untested, but obviously can't be wrong.  There
      aren't any other struct k_clock definitions in the tree, but any others would
      need to be updated for the function signature changes.
      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>
      8b9cfca6
    • Prasanna Meda's avatar
      [PATCH] Speed up /proc/pid/maps · d6b7a781
      Prasanna Meda authored
      This patch uses find_vma() to improve the read response of /proc/pid/maps. 
      It attempts to make the liner scan instead of quadratic walk and utilise rb
      tree.  Reading the file was doing sequential scan from the begining to file
      position all the time, and taking a quite long time.
      
      The improvements came from f_version/m_version and resulting in mmap_cache
      match.  Even if mmap_cache does not match, rb tree walk should be faster
      than sequential walk.  First attempt was to put the state across read
      system calls into private data.  Later got inspiration from wli's pid patch
      using f_version in readdir of /proc.  Other advantage is, f_version will be
      cleared automatically by lseek.
      
      The test program creates 32K maps and splits them into two(limited by
      max_map_count sysctl) using mprotect(0).  After the patch, the read time
      improves from many seconds to milliseconds, and does not grow superlinearly
      with number of read calls.
      
      Help taken from Peter Swain in idea and testing.
      
      After the patch:
      Reading /proc/self/maps:65528 time: 0 secs and   780728 usecs buf:4096 bytes:3811362
      Reading /proc/self/maps:65528 time: 1 secs and   117573 usecs buf:1024 bytes:3866627
      Reading /proc/self/maps:65528 time: 0 secs and   473459 usecs buf: 256 bytes:3866627
      Reading /proc/self/maps:65528 time: 0 secs and   901288 usecs buf:  64 bytes:3866627
      Reading /proc/self/maps:65528 time: 1 secs and   480185 usecs buf:  16 bytes:3866627
      Reading /proc/self/maps:65528 time: 1 secs and   636268 usecs buf:   4 bytes:3866627
      Reading /proc/self/maps:65528 time: 4 secs and   118327 usecs buf:   1 bytes:3866627
      
      Before the patch:
      Reading /proc/self/maps:65528 time: 4 secs and   359556 usecs buf:4096 bytes:3866647
      Reading /proc/self/maps:65528 time:16 secs and   218584 usecs buf:1024 bytes:3866688
      Reading /proc/self/maps:65528 time:67 secs and   870200 usecs buf: 256 bytes:3866688
      Reading /proc/self/maps:65528 time:255 secs and   186934 usecs buf:  64 bytes:3866688
      Small reads never completed.
      Signed-off-by: default avatarPrasanna Meda <pmeda@akamai.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d6b7a781
    • Andrew Morton's avatar
      [PATCH] lib/parser.o linkage fix · 27f04a42
      Andrew Morton authored
      It's possible to define .configs in which there are no references in vmlinux
      to lib/parser.o.  So you cannot load any filesystem modules.
      
      Arrange for parser.o to be statically linked.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      27f04a42
    • Matt Mackall's avatar
      [PATCH] random: Move syncookies to net/ · 8331dc5b
      Matt Mackall authored
      Move syncookie code off to networking land.
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8331dc5b
    • Matt Mackall's avatar
      [PATCH] random: Simplify and shrink syncookie code · 3cd1c67c
      Matt Mackall authored
      Simplify syncookie initialization
      Refactor syncookie code with separate hash function
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3cd1c67c
    • Matt Mackall's avatar
      [PATCH] random: Kill duplicate halfmd4 in ext3 htree · 567200b8
      Matt Mackall authored
      Replace duplicate halfMD4 code with call to lib/
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      567200b8
    • Matt Mackall's avatar
      [PATCH] random: Move halfmd4 to lib · 3ced79bd
      Matt Mackall authored
      Move half-MD4 hash to /lib where we can share it with htree.
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3ced79bd
    • Matt Mackall's avatar
      [PATCH] random: Update cryptolib to use SHA fro lib · 4c1763b3
      Matt Mackall authored
      Drop the cryptolib SHA implementation and use the faster and much smaller SHA
      implementation from lib/.  Saves about 5K.  This also saves time by doing one
      memset per update call rather than one per SHA block.
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      4c1763b3
    • Matt Mackall's avatar
      [PATCH] random: Replace SHA with faster version · 221774f3
      Matt Mackall authored
      A replacement SHA routine that's slightly larger, but over twice as
      fast. It's also faster and much smaller than the cryptolib version.
      
                   size      speed    buffer size
      original:    350B      2.3us     320B
      cryptolib:  5776B      1.2us      80B
      this code:   466B      1.0us     320B
      alternate:  2112B      1.0us      80B
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      221774f3
    • Matt Mackall's avatar
      [PATCH] random: Move SHA code to lib/ · 1b14bcee
      Matt Mackall authored
      Move random SHA code to lib/.
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      1b14bcee
    • Matt Mackall's avatar
      [PATCH] random: Cleanup SHA interface · da2b0056
      Matt Mackall authored
      Clean up SHA hash function for moving to lib/
      Do proper endian conversion
      Provide sha_init function
      Add kerneldoc
      Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      da2b0056