An error occurred fetching the project authors.
- 04 Mar, 2003 1 commit
-
-
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.
-
- 16 Jan, 2003 1 commit
-
-
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.
-
- 05 Jan, 2003 3 commits
-
-
Geert Uytterhoeven authored
Remove unused prototype for init_modules()
-
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.
-
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().
-
- 30 Dec, 2002 1 commit
-
-
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.
-
- 22 Dec, 2002 1 commit
-
-
Rusty Russell authored
Restore the accidentally dropped code to handle "init=xxx"
-
- 15 Dec, 2002 2 commits
-
-
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.
-
Randy Dunlap authored
Moves console_loglevel & friends to an array, as sysctl expects.
-
- 06 Dec, 2002 1 commit
-
-
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>
-
- 18 Nov, 2002 2 commits
-
-
Richard Henderson authored
-
Richard Henderson authored
-
- 17 Nov, 2002 1 commit
-
-
Linus Torvalds authored
since they are needed for early arch initialization. Thanks to Manfred for pointing this out.
-
- 11 Nov, 2002 1 commit
-
-
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
-
- 01 Nov, 2002 2 commits
-
-
Jeff Garzik authored
-
Dave Jones authored
Without the below patch, my HT 2-way prints out "CPUS Done 4294967295" on boot, which whilst amusing is somewhat exaggerated.
-
- 30 Oct, 2002 1 commit
-
-
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?)
-
- 15 Oct, 2002 2 commits
-
-
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.
-
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
-
- 13 Oct, 2002 1 commit
-
-
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().
-
- 05 Oct, 2002 1 commit
-
-
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.
-
- 04 Oct, 2002 1 commit
-
-
Martin Schwidefsky authored
Remove call to s390_init_machine_check in init/main.c, the new boot code on s390 calls it via arch_initcall.
-
- 03 Oct, 2002 1 commit
-
-
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.
-
- 01 Oct, 2002 1 commit
-
-
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.
-
- 19 Sep, 2002 2 commits
-
-
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."
-
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.
-
- 15 Sep, 2002 1 commit
-
-
Linus Torvalds authored
-
- 09 Sep, 2002 2 commits
-
-
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.
-
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?
-
- 03 Sep, 2002 1 commit
-
-
Rusty Russell authored
This sets child_reaper to the idle thread upon creation, so that ksoftirqd's reparent_to_init call doesn't get the swapper as parent.
-
- 28 Aug, 2002 1 commit
-
-
Manik Raina authored
-
- 15 Aug, 2002 1 commit
-
-
Linus Torvalds authored
isn't ready for it (either during early boot, or at shutdown)
-
- 02 Aug, 2002 1 commit
-
-
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.
-
- 01 Aug, 2002 1 commit
-
-
Ed Tomlinson authored
Fix so UP does not ask for migration_init
-
- 28 Jul, 2002 2 commits
-
-
Linus Torvalds authored
-
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."
-
- 27 Jul, 2002 2 commits
-
-
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.]
-
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.
-
- 26 Jul, 2002 2 commits
-
-
Linus Torvalds authored
-
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
-