An error occurred fetching the project authors.
  1. 04 Mar, 2003 1 commit
    • Patrick Mochel's avatar
      driver model: Make initialization explicit. · fa0aa7cc
      Patrick Mochel authored
      - Call driver_init() from init/main.c::do_basic_setup(). 
      
      This ensures that all the driver model subsystems are initialized before
      any drivers or devices can be registered. 
      
      It nearly frees up the core and postcore initcall levels, making them 
      available for other kernel code to use freely. 
      fa0aa7cc
  2. 16 Jan, 2003 1 commit
    • Martin J. Bligh's avatar
      [PATCH] (2/3) Initial load balancing · f01419fd
      Martin J. Bligh authored
      Patch from Michael Hohnbaum
      
      This adds a hook, sched_balance_exec(), to the exec code, to make it
      place the exec'ed task on the least loaded queue. We have less state
      to move at exec time than fork time, so this is the cheapest point
      to cross-node migrate. Experience in Dynix/PTX and testing on Linux
      has confirmed that this is the cheapest time to move tasks between nodes.
      
      It also macro-wraps changes to nr_running, to allow us to keep track of
      per-node nr_running as well. Again, no impact on non-NUMA machines.
      f01419fd
  3. 05 Jan, 2003 3 commits
    • Geert Uytterhoeven's avatar
      [PATCH] Remove unused prototype for init_modules() · fead9145
      Geert Uytterhoeven authored
        Remove unused prototype for init_modules()
      fead9145
    • Rusty Russell's avatar
      [PATCH] Exception table cleanup · af285fc8
      Rusty Russell authored
      This patch combines the common exception table searching functionality
      for various architectures, to avoid unneccessary (and currently buggy)
      duplication, and so that the exception table list and lock can be kept
      private to module.c.
      
      The archs provide "struct exception_table" and "search_extable": the
      generic infrastructure drives the rest.
      af285fc8
    • Andrew Morton's avatar
      [PATCH] Dynamically size the pidhash hash table. · 9a7dad1c
      Andrew Morton authored
      Patch from Bill Irwin.   Prodding from me.
      
      The hashtables in kernel/pid.c are 128 kbytes, which is far too large for
      very small machines.
      
      So we dynamically size them and allocate them from bootmem.  From 16 buckets
      on the very smallest machine up to 4096 buckets (effectively half the current
      size) with one gigabyte of memory or more.
      
      The patch also switches the hashing from a custom hash over to the more
      powerful hash_long().
      9a7dad1c
  4. 30 Dec, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] don't call console drivers on non-online CPUs · a93e679a
      Andrew Morton authored
      George Anzinger identified the following problem: when a secondary CPU is
      coming up, it calls printk() before it is "online".  It calls the console
      drivers before its per-cpu storage has been prepared.  And the vga console
      driver does a mod_timer().  This CPU's timers have not yet been initialised;
      it is not clear why this doesn't oops - George thinks it is because virtual
      address zero is still accessible at that time.
      
      I believe the right way to fix this is to change printk so that a not-online
      CPU will not call the console drivers.  Because printk should always be
      callable.  If the CPU is not online the message is buffered, so the next
      caller to printk who is online will actually display it.
      
      ia64 has been doing exactly this for ages, so we can remove the
      arch_consoles_callable() hook and just open-code the cpu_online() test in
      printk.
      
      
      
      That fixes things up for the secondary CPUs.  But this change causes a
      problem for the boot CPU: it is being marked online very late in boot, so the
      printk buffer is being displayed much later than we would like.
      
      I believe that the solution to this is to mark the boot CPU online much
      earlier.  So in this patch we call the new arch-provided function
      smp_prepare_boot_cpu() immediately after the boot CPU's per-cpu areas are set
      up.  Its mandate is to (at least) mark the boot CPU "online".
      
      The change has been reviewed by davem and rth.  No comments were received
      from the other arch maintainers.
      a93e679a
  5. 22 Dec, 2002 1 commit
  6. 15 Dec, 2002 2 commits
    • Rusty Russell's avatar
      [PATCH] Module Parameter Core Patch · 326e7842
      Rusty Russell authored
      This patch is a rewrite of the insmod and boot parameter handling,
      to unify them.
      
      The new format is fairly simple: built on top of __module_param_call there
      are several helpers, eg "module_param(foo, int, 000)".  The final argument
      is the permissions bits, for exposing parameters in sysfs (if
      non-zero) at a later stage.
      326e7842
    • Randy Dunlap's avatar
      [PATCH] move console_loglevel scalars to array (resend) · f3ce0064
      Randy Dunlap authored
      Moves console_loglevel & friends to an array, as sysctl expects.
      f3ce0064
  7. 06 Dec, 2002 1 commit
    • Martin Schwidefsky's avatar
      [PATCH] s390: cio rework. · fe11051b
      Martin Schwidefsky authored
      Rewrite of the s390 channel subsystem driver for the new driver model
      
      The channel subsystem driver a.k.a s390 common I/O layer is the low level
      driver for most device drivers on s390 systems. The old code is largely
      unchanged from the initial linux-2.2 port and there is a lot of bitrot
      on it.
      
      In particular, concepts from the 2.5 driver model are implemented in a
      completely different and more complicated way here.
      This rewrite tries to get the driver ready for 2.6. The new interface is
      not compatible to the old one but should be rather stable now unless
      someone finds major flaws.
      
      The 's390dyn' and 'chandev' interfaces have been removed entirely (yippii!)
      and are replaced by hotplug and sysfs interfaces.
      
      Authors: Arnd Bergmann <arndb@de.ibm.com>,
               Cornelia Huck <cohuck@de.ibm.com>,
               Martin Schwidefsky <schwidefsky@de.ibm.com>
      fe11051b
  8. 18 Nov, 2002 2 commits
  9. 17 Nov, 2002 1 commit
  10. 11 Nov, 2002 1 commit
    • Rusty Russell's avatar
      [PATCH] In-kernel Module Loader · aa65be3f
      Rusty Russell authored
      This is an implementation of the in-kernel module loader extending
      the try_inc_mod_count() primitive and making its use compulsory.
      This has the benifit of simplicity, and similarity to the existing
      scheme.  To reduce the cost of the constant increments and
      decrements, reference counters are lockless and per-cpu.
      
      Eliminated (coming in following patches):
       o Modversions
       o Module parameters
       o kallsyms
       o EXPORT_SYMBOL_GPL and MODULE_LICENCE checks
       o DEVICE_TABLE support.
      
      New features:
       o Typesafe symbol_get/symbol_put
       o Single "insert this module" syscall interface allows trivial userspace.
       o Raceless loading and unloading
      
      You will need the trivial replacement module utilities from:
      	http://ozlabs.org/~rusty/module-init-tools-0.6.tar.gz
      aa65be3f
  11. 01 Nov, 2002 2 commits
  12. 30 Oct, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] percpu: convert global page accounting · afce7191
      Andrew Morton authored
      Convert global page state accounting to use per-cpu storage
      
      (I think this code remains a little buggy, btw.  Note how I do
      
      	per_cpu(page_states, cpu).member += (delta);
      
      This gets done at interrupt time and hence is assuming that
      the "+=" operation on a ulong is atomic wrt interrupts on
      all architectures. How do we feel about that assumption?)
      afce7191
  13. 15 Oct, 2002 2 commits
    • Dipankar Sarma's avatar
      [PATCH] Read-Copy Update infrastructure · 1477a825
      Dipankar Sarma authored
      This is the RCU core patch from akpm's tree. It has been in his
      tree since about 2.5.37-mm1 along with dcache_rcu and so far it has
      worked fine. For 2.5, I am hoping that we might get the following
      RCU patches included -
      
      1. rt_rcu - ipv4 routecache lookup. Davem agreed to include this patch
         if and when you include RCU core in your tree.
      
      2. dcache_rcu (by Maneesh Soni) - dcache lookup avoiding dcache_lock as
         much as possible. This has been akpm's tree - stable and gives us
         good yield. I have been submitting this to Viro and I will publish
         some more benchmark numbers later to help decide on this.
      
      This RCU core implements RCU APIs, call_rcu() and synchronize_kernel(),
      by monitoring a per-CPU quiescent state (idle/user etc.) counter.
      call_rcu() queues a callback to be invoked after all the CPUs have
      gone through a quiescent state. Queuing is per-CPU and each per-CPU
      batch gets a batch number. As batches get their turn, a global
      cpu mask is used to keep track of CPUs pending quiescent state.
      Checking for quiescent cycle is done by saving the per-CPU
      counter at the beginning of the batch and then monitoring it for change
      through the local timer interrupt handler.
      1477a825
    • John Levon's avatar
      [PATCH] oprofile - timer hook · 120790b8
      John Levon authored
      This implements a simple hook into the profiling timer for x86 so that
      non-perfctr machines can still use oprofile.  This has proven useful for
      laptops and the like.
      
      It also reduces header dependencies a bit by centralising readprofile
      code
      120790b8
  14. 13 Oct, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] remove kiobufs · 2dcb8ff9
      Andrew Morton authored
      This patch from Christoph Hellwig removes the kiobuf/kiovec
      infrastructure.
      
      This affects three subsystems:
      
      video-buf.c:
      
         This patch includes an earlier diff from Gerd which converts
          video-buf.c to use get_user_pages() directly.
      
         Gerd has acked this patch.
      
      LVM1:
      
         Is now even more broken.
      
      drivers/mtd/devices/blkmtd.c:
      
         blkmtd is broken by this change.  I contacted Simon Evans, who
         said "I had done a rewrite of blkmtd anyway and just need to convert
         it to BIO.  Feel free to break it in the 2.5 tree, it will force me
         to finish my code."
      
      Neither EVMS nor LVM2 use kiobufs.  The only remaining breakage
      of which I am aware is a proprietary MPEG2 streaming module.  It
      could use get_user_pages().
      2dcb8ff9
  15. 05 Oct, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] remove page->virtual · a27efcaf
      Andrew Morton authored
      The patch removes page->virtual for all architectures which do not
      define WANT_PAGE_VIRTUAL.  Hash for it instead.
      
      Possibly we could define WANT_PAGE_VIRTUAL for CONFIG_HIGHMEM4G, but it
      seems unlikely.
      
      A lot of the pressure went off kmap() and page_address() as a result of
      the move to kmap_atomic().  That should be the preferred way to address
      CPU load in the set_page_address() and page_address() hashing and
      locking.
      
      If kmap_atomic is not usable then the next best approach is for users
      to cache the result of kmap() in a local rather than calling
      page_address() repeatedly.
      
      One heavy user of kmap() and page_address() is the ext2 directory code.
      
      On a 7G Quad PIII, running four concurrent instances of
      
      	while true
      	do
      		find /usr/src/linux > /dev/null
      	done
      
      on ext2 with everything cached, profiling shows that the new hashed
      set_page_address() and page_address() implementations consume 0.4% and
      1.3% of CPU time respectively.   I think that's OK.
      a27efcaf
  16. 04 Oct, 2002 1 commit
  17. 03 Oct, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] add /proc/vmstat (start of /proc/stat cleanup) · 15e19695
      Andrew Morton authored
      Moves the VM accounting out of /proc/stat and into /proc/vmstat.
      
      The VM accounting is now per-cpu.
      
      It also moves kstat.pgpgin and kstat.pgpgout into /proc/vmstat.
      Which is a bit of a duplication of /proc/diskstats (SARD), but it's
      easy, super-cheap and makes life a lot easier for all the system
      monitoring applications which we just broke.
      
      We now require procps 2.0.9.
      
      Updated versions of top and vmstat are available at http://surriel.com
      and the Cygnus CVS is uptodate for these changes.  (Rik has the CVS
      info at the above site).
      
      This tidies up kernel_stat quite a lot - it now only contains CPU
      things (interrupts and CPU loads) and disk things.  So we now have:
      
      /proc/stat:	CPU things and disk things
      /proc/vmstat:	VM things	(plus pgpgin, pgpgout)
      
      The SARD patch removes the disk things from /proc/stat as well.
      15e19695
  18. 01 Oct, 2002 1 commit
    • Ingo Molnar's avatar
      [PATCH] Workqueue Abstraction · 6ed12ff8
      Ingo Molnar authored
      This is the next iteration of the workqueue abstraction.
      
      The framework includes:
      
       - per-CPU queueing support.
      
      on SMP there is a per-CPU worker thread (bound to its CPU) and per-CPU
      work queues - this feature is completely transparent to workqueue-users.
      keventd automatically uses this feature. XFS can now update to work-queues
      and have the same per-CPU performance as it had with its per-CPU worker
      threads.
      
       - delayed work submission
      
      there's a new queue_delayed_work(wq, work, delay) function and a new
      schedule_delayed_work(work, delay) function. The later one is used to
      correctly fix former tq_timer users. I've reverted those changes in 2.5.40
      that changed tq_timer uses to schedule_work() - eg. in the case of
      random.c or the tty flip queue it was definitely the wrong thing to do.
      
      delayed work means a timer embedded in struct work_struct.  I considered
      using split struct work_struct and delayed_work_struct types, but lots
      of code actively uses task-queues in both delayed and non-delayed mode,
      so i went for the more generic approach that allows both methods of work
      submission.  Delayed timers do not cause any other overhead in the
      normal submission path otherwise.
      
       - multithreaded run_workqueue() implementation
      
      the run_workqueue() function can now be called from multiple contexts, and
      a worker thread will only use up a single entryy - this property is used
      by the flushing code, and can potentially be used in the future to extend
      the number of per-CPU worker threads.
      
       - more reliable flushing
      
      there's now a 'pending work' counter, which is used to accurately detect
      when the last work-function has finished execution. It's also used to
      correctly flush against timed requests. I'm not convinced whether the old
      keventd implementation got this detail right.
      
       - i switched the arguments of the queueing function(s) per Jeff's
         suggestion, it's more straightforward this way.
      
      
      Driver fixes:
      
      i have converted almost every affected driver to the new framework. This
      cleaned up tons of code. I also fixed a number of drivers that were still
      using BHs (these drivers did not compile in 2.5.40).
      
      while this means lots of changes, it might ease the QA decision whether to
      put this patch into 2.5.
      
      The pach converts roughly 80% of all tqueue-using code to workqueues - and
      all the places that are not converted to workqueues yet are places that do
      not compile in vanilla 2.5.40 anyway, due to unrelated changes. I've
      converted a fair number of drivers that do not compile in 2.5.40, and i
      think i've managed to convert every driver that compiles under 2.5.40.
      6ed12ff8
  19. 19 Sep, 2002 2 commits
    • Andrew Morton's avatar
      [PATCH] _alloc_pages cleanup · ccc98a67
      Andrew Morton authored
      Patch from Martin Bligh.  It should only affect machines using
      discontigmem.
      
      "This patch is was originally from Andrea's tree (from SGI??), and has
      been tweaked since by both Christoph (who cleaned up all the code),
      and myself (who just hit it until it worked).
      
      It removes _alloc_pages, and adds all nodes to the zonelists
      directly, which also changes the fallback zone order to something more
      sensible ...  instead of: "foreach (node) { foreach (zone) }" we now
      do something more like "foreach (zone_type) { foreach (node) }"
      
      Christoph has a more recent version that's fancier and does a couple
      more cleanups, but it seems to have a bug in it that I can't track
      down easily, so I propose we do the simple thing for now, and take the
      rest of the cleanups when it works ...  it seems to build nicely on
      top of this seperately to me.
      
      Tested on 16-way NUMA-Q with discontigmem + NUMA support."
      ccc98a67
    • Ingo Molnar's avatar
      [PATCH] generic-pidhash-2.5.36-J2, BK-curr · 64cf8edb
      Ingo Molnar authored
      This is the latest version of the generic pidhash patch.  The biggest
      change is the removal of separately allocated pid structures: they are
      now part of the task structure and the first task that uses a PID will
      provide the pid structure.  Task refcounting is used to avoid the
      freeing of the task structure before every member of a process group or
      session has exited.
      
      This approach has a number of advantages besides the performance gains.
      Besides simplifying the whole hashing code significantly, attach_pid()
      is now fundamentally atomic and can be called during create_process()
      without worrying about task-list side-effects.  It does not have to
      re-search the pidhash to find out about raced PID-adding either, and
      attach_pid() cannot fail due to OOM.  detach_pid() can do a simple
      put_task_struct() instead of the kmem_cache_free().
      
      The only minimal downside is the potential pending task structures after
      session leaders or group leaders have exited - but the number of orphan
      sessions and process groups is usually very low - and even if it's
      higher, this can be regarded as a slow execution of the final
      deallocation of the session leader, not some additional burden.
      64cf8edb
  20. 15 Sep, 2002 1 commit
  21. 09 Sep, 2002 2 commits
    • Patrick Mochel's avatar
      Reorganize the mtrr init sequence a bit. All mtrr init now happens · b6a3d01f
      Patrick Mochel authored
      during the initcall sequence, after all CPUs have been brought up. 
      mtrr_init() calls a static init_other_cpus(), which fires off a function 
      on all other cpus to replicate the state across all of them. 
      
      arch/i386/kernel/smpboot.c::smp_callin() had the following: 
      
      #ifdef CONFIG_MTRR
             /*
              * Must be done before calibration delay is computed
              */
             mtrr_init_secondary_cpu ();
      #endif
      
      
      I couldn't figure this one out. The P4 manual says nothing about this, nor
      find any other documentation about it. The P4 manual says only that state
      must be synchronized across all CPUs, which it is. And, it happens before
      anything else is executed on the other CPUs, and before any devices or
      drivers have been brought up.
      
      The cyrix mtrr code was also updated to handle this style of SMP initialization.
      b6a3d01f
    • Patrick Mochel's avatar
      [PATCH] Re: Performance issue in 2.5.32+ · ac7349b6
      Patrick Mochel authored
      - The early startup code was changed so smp_prepare_cpus() is now called
        before do_basic_setup().  do_basic_setup() is where mtrr_init() is
        called, which mtrr_init_secondary_cpu() is dependent on being called.
      
      - mtrr_init_boot_cpu() was removed from the AP startup code. This was a
        SMP-only hack that made sure mtrr_init() happened when SMP was
        enabled.  That's right - two different code paths to do the same
        thing, obscured by compile-time defines.
      
      The appended patch makes sure mtrr_init() is called before
      smp_prepare_cpus(). It's ugly, and I'll work on a cleaner solution, but
      James: could you try it and see if it fixes your performance issues?
      ac7349b6
  22. 03 Sep, 2002 1 commit
  23. 28 Aug, 2002 1 commit
  24. 15 Aug, 2002 1 commit
  25. 02 Aug, 2002 1 commit
    • Kai Germaschewski's avatar
      ISDN: More I4L linklayer cleanup · 93796c1f
      Kai Germaschewski authored
      Add a helper function to prepare for and start dialing, removing duplicated
      code from isdn_tty.c/isdn_net.c.
      
      Move some parts of the big switch statement in isdn_net.c into their own 
      functions.
      93796c1f
  26. 01 Aug, 2002 1 commit
  27. 28 Jul, 2002 2 commits
    • Linus Torvalds's avatar
    • Andrew Morton's avatar
      [PATCH] use a slab cache for pte_chains · cbb6e8ec
      Andrew Morton authored
      Patch from Bill Irwin.
      
      It removes the custom pte_chain allocator in mm/rmap.c and replaces it
      with a slab cache.
      
      "This patch
       (1) eliminates the pte_chain_freelist_lock and all contention on it
       (2) gives the VM the ability to recover unused pte_chain pages
      
       Anton Blanchard has reported (1) from prior incarnations of this patch.
       Craig Kulesa has reported (2) in combination with slab-on-LRU patches.
      
       I've left OOM detection out of this patch entirely as upcoming patches
       will do real OOM handling for pte_chains and all the code changed anyway."
      cbb6e8ec
  28. 27 Jul, 2002 2 commits
    • Ingo Molnar's avatar
      [PATCH] scheduler, migration startup fixes, 2.5.29 · cd4cb274
      Ingo Molnar authored
      the attached patch fixes the scheduler's migration thread startup bug that
      got unearthed by Rusty's recent CPU-startup enhancements.
      
      the fix is to let a startup-helper thread migrate the migration thread,
      instead of the migration thread calling set_cpus_allowed() itself.
      Migrating a not running thread is a simple and robust thing, and needs no
      cooperation from migration threads - thus the catch-22 problem of how to
      migrate the migration threads is solved finally.
      
      the patch is against Rusty's initcall fix/hack which calls
      migration_init() before other CPUs are brought up - this ordering is
      clearly the clean way of doing migration init. [the patch also fixes a UP
      compiliation bug in Rusty's hack.]
      cd4cb274
    • Rusty Russell's avatar
      [PATCH] Fix ksoftirqd and migration threads initcalls · 9ef49e90
      Rusty Russell authored
      This patch fixes the calls to initialize ksoftirqd and the
      migration threads.  This really should be done by the initcall
      depends patch.
      9ef49e90
  29. 26 Jul, 2002 2 commits
    • Linus Torvalds's avatar
      7eec50e3
    • Rusty Russell's avatar
      [PATCH] Hot-plug CPU Boot Changes · c5e06207
      Rusty Russell authored
      This patch alters the boot sequence to "plug in" each CPU, one at a
      time.  You need the patch for each architecture, as well.  The
      interface used to be "smp_boot_cpus()", "smp_commence()", and each
      arch implemented the "maxcpus" boot arg itself.  With this patch,
      it is:
        smp_prepare_cpus(maxcpus): probe for cpus and set up cpu_possible(cpu).
        __cpu_up(cpu): called *after* initcalls, for each cpu where
           cpu_possible(cpu) is true.
        smp_cpus_done(maxcpus): called after every cpu has been brought up
      c5e06207