- 18 Feb, 2004 31 commits
-
-
Andrew Morton authored
From: Tim Hockin <thockin@sun.com>, Neil Brown <neilb@cse.unsw.edu.au>, me New groups infrastructure. task->groups and task->ngroups are replaced by task->group_info. Group)info is a refcounted, dynamic struct with an array of pages. This allows for large numbers of groups. The current limit of 32 groups has been raised to 64k groups. It can be raised more by changing the NGROUPS_MAX constant in limits.h
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> Jeff Garzik disliked the bonding driver knowing it was called "bond0". Remove that alias, and revert documentation.
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> New MODULE_ALIASes in: 1) arch/i386/kernel/microcode.c 2) drivers/char/genrtc.c 3) drivers/ide/ide-tape.c 4) drivers/net/bonding/bond_main.c 5) drivers/net/bsd_comp.c 6) drivers/net/ppp_deflate.c 7) drivers/net/ppp_generic.c
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> Someone complained about the number of references to /etc/modules.conf in the documentation. While fixing them up (and examples where changed), removed those which are redundant due to MODULE_ALIAS.
-
Andrew Morton authored
From: Adrian Bunk <bunk@fs.tum.de> - AMD Elan is a different subarch, you can't configure a kernel that runs on both the AMD Elan and other i386 CPUs - added optimizing CFLAGS for the AMD Elan
-
Andrew Morton authored
From: Adrian Bunk <bunk@fs.tum.de> gcc 2.95 supports -march=k6 (no need for check_gcc)
-
Andrew Morton authored
From: Adrian Bunk <bunk@fs.tum.de> add Pentium M and Pentium-4 M options: - add MPENTIUMM (equivalent to PENTIUMIII except for a bigger X86_L1_CACHE_SHIFT) - document that MPENTIUM4 is the right choice for a Pentium-4 M
-
Andrew Morton authored
From: "Chen, Kenneth W" <kenneth.w.chen@intel.com> The issue of exceedingly large hash tables has been discussed on the mailing list a while back, but seems to slip through the cracks. What we found is it's not a problem for x86 (and most other architectures) because __get_free_pages won't be able to get anything beyond order MAX_ORDER-1 (10) which means at most those hash tables are 4MB each (assume 4K page size). However, on ia64, in order to support larger hugeTLB page size, the MAX_ORDER is bumped up to 18, which now means a 2GB upper limits enforced by the page allocator (assume 16K page size). PPC64 is another example that bumps up MAX_ORDER. Last time I checked, the tcp ehash table is taking a whooping (insane!) 2GB on one of our large machine. dentry and inode hash tables also take considerable amount of memory. Setting the size of these tables is difficult: they need to be constrained on many-zone ia64 machines, but this could cause significant performance problems when there are (for example) 100 million dentries in cache. Large-memory machines which do not slice that memory up into huge numbers of zones do not need to run the risk of this slowdown. So the sizing algorithms remain essentially unchanged, and boot-time options are provided which permit the tables to be scaled down.
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> The cpu hotplug code actually provides two notifiers: CPU_UP_PREPARE which preceeds the online and can fail, and CPU_ONLINE which can't. Current usage is only done at boot, so this distinction doesn't matter, but it's a bad example to set. This also means that the migration threads do not have to be higher priority than the others, since they are ready to go before any CPU_ONLINE callbacks are done. This patch is experimental but fairly straight foward: I haven't been able to test it since extracting it from the hotplug cpu code, so it's possible I screwed something up.
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> Three more removed CPU notifiers extracted from the hotplug CPU patch. kernel/softirq.c: the tasklet cpu prepration callback is useless: the vectors are already initialized to NULL. Even with the hotplug CPU patches, they're of little or no use. fs/buffer.c: once again, they are already initialized to zero. mm/page_alloc.c: once again, already initialized to zero.
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> Move duplicated code to __queue_work(), and don't set the CPU for queue_delayed_work() until the timer goes off. The second one only has an effect on CONFIG_HOTPLUG_CPU where the CPU goes down and the timer goes off on a different CPU than it was scheduled on.
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> Some well-meaning person put a notifier in for CPUs to update the kstat structures in sched.c. However, it does nothing, and even with the full hotplug CPU patch, it still does nothing. Simple counters very rarely need anything done when CPUs come up or go down. If you have per-cpu caches, or per-cpu threads, you need to do something. But very rarely for stats.
-
Andrew Morton authored
From: Rusty Russell <rusty@rustcorp.com.au> These two patches provide the framework for stopping kernel threads to allow hotplug CPU. This one just adds kthread.c and kthread.h, next one uses it. Most importantly, adds a Monty Python quote to the kernel. Details: The hotplug CPU code introduces two major problems: 1) Threads which previously never stopped (migration thread, ksoftirqd, keventd) have to be stopped cleanly as CPUs go offline. 2) Threads which previously never had to be created now have to be created when a CPU goes online. Unfortunately, stopping a thread is fairly baroque, involving memory barriers, a completion and spinning until the task is actually dead (for example, complete_and_exit() must be used if inside a module). There are also three problems in starting a thread: 1) Doing it from a random process context risks environment contamination: better to do it from keventd to guarantee a clean environment, a-la call_usermodehelper. 2) Getting the task struct without races is a hard: see kernel/sched.c migration_call(), kernel/workqueue.c create_workqueue_thread(). 3) There are races in starting a thread for a CPU which is not yet online: migration thread does a complex dance at the moment for a similar reason (there may be no migration thread to migrate us). Place all this logic in some primitives to make life easier: kthread_create() and kthread_stop(). These primitives require no extra data-structures in the caller: they operate on normal "struct task_struct"s. Other changes: - Expose keventd_up(), as keventd and migration threads will use kthread to launch, and kthread normally uses workqueues and must recognize this case. - Kthreads created at boot before "keventd" are spawned directly. However, this means that they don't have all signals blocked, and hence can be killed. The simplest solution is to always explicitly block all signals in the kthread. - Change over the migration threads, the workqueue threads and the ksoftirqd threads to use kthread. - module.c currently spawns threads directly to stop the machine, so a module can be atomically tested for removal. - Unfortunately, this means that the current task is manipulated (which races with set_cpus_allowed, for example), and it can't set its priority artificially high. Using a kernel thread can solve this cleanly, and with kthread_run, it's simple. - kthreads use keventd, so they inherit its cpus_allowed mask. Unset it. All current users set it explicity anyway, but it's nice to fix. - call_usermode_helper uses keventd, so the process created inherits its cpus_allowed mask. Unset it. - Prevent errors in boot when cpus_possible() contains a cpu which is not online (ie. a cpu didn't come up). This doesn't happen on x86, since a boot failure makes that CPU no longer possible (hacky, but it works). - When the cpu fails to come up, some callbacks do kthread_stop(), which doesn't work without keventd (which hasn't started yet). Call it directly, and take care that it restores signal state (note: do_sigaction does a flush on blocked signals, so we don't need to repeat it).
-
Andrew Morton authored
From: Dominik Brodowski <linux@dominikbrodowski.de>, John Stultz <johnstul@us.ibm.com>, Dmitry Torokhov Add the ACPI Powermanagement Timer as x86 kernel timing source. Unlike the Time Stamp Counter, it is a reliable timing source which does not get affected by aggressive powermanagement features like CPU frequency scaling. Some ideas and some code are based on Arjan van de Ven's implementation for 2.4, and on R. Byron Moore's drivers/acpi/hardware/hwtimer.c. We also replace the loop based delay_pmtmr with a TSC based delay_pmtmr, which resolves a number of issues caused by the loop based delay. Unsynced TSCs as well frequency changing TSCs will effect the length of __delay(), but it seems this method works best.
-
Andrew Morton authored
From: "Yury V. Umanets" <umka@namesys.com> This removes a redundant assignment in loop.
-
Andrew Morton authored
From: BlaisorBlade <blaisorblade_spam@yahoo.it> loop_init doesn't fail gracefully for two reasons: 1) If initialization of loop driver fails, we have an call to devfs_add("loop") without any devfs_remove; I add that. 2) On lwn.net 2.6 kernel docs, Jonathan Corbet says: "If you are calling add_disk() in your driver initialization routine, you should not fail the initialization process after the first call." So I make loop.c conform to this request by moving add_disk after all memory allocations.
-
Andrew Morton authored
From: Ben Slusky <sluskyb@paranoiacs.org> One more patch --- this fixes a minor bio handling bug in the filebacked code path. I'd fixed it incidentally in the loop-recycle patch. I don't think you could actually see damage from this bug unless you run device mapper on top of loop devices, but still this is the correct behavior.
-
Andrew Morton authored
From: Ben Slusky <sluskyb@paranoiacs.org> The attached patch changes the loop device transfer functions (including cryptoloop transfers) to accept page/offset pairs instead of virtual addresses, and removes the redundant kmaps in do_lo_send, do_lo_receive, and loop_transfer_bio. Per Andrew Morton's request a while back.
-
Andrew Morton authored
This patch removes the loop feature wherein we remap BIOs for block-backed loop. So file-backed and block-backed loop are handled identically. It cleans up the code a lot and fixes the low-on-memory lockups which block-backed loop currently suffers. What we lose is the journalling ordering guarantees which exts-on-loop-on-blockdev had. But dm-crypt provides that.
-
Andrew Morton authored
From: Stephen Rothwell <sfr@canb.auug.org.au> This patch lets 2.6.3-rc4 build and boot on an PPC64 iSeries box (at least for my configuration). The veth.o bit in the networking Makefile got there by accident and should be removed anyway ... There is more to make it work properly (note the "Temporary hack"), but this gets us closer.
-
Andrew Morton authored
From: Anton Blanchard <anton@samba.org> Fix compile warnings and add some type safety to debugger macros.
-
Andrew Morton authored
From: Anton Blanchard <anton@samba.org> cmd_line was twice the size of saved_command_line but we did a strcpy from the larger into the smaller. Create COMMAND_LINE_SIZE and use it.
-
Andrew Morton authored
arch/ppc64/kernel/prom.c:200: warning: missing braces around initializer arch/ppc64/kernel/prom.c:200: warning: (near initialization for `hmt_thread_data[0]') arch/ppc64/kernel/prom.c: In function `prom_hold_cpus': arch/ppc64/kernel/prom.c:1090: warning: implicit declaration of function `_get_PIR'
-
Andrew Morton authored
msg.h uses list_head. (I'm not sure what config actually required this, but it is legit).
-
Andrew Morton authored
These no longer do anything. This patch changes modules API. It was acked by Arjan@RH and Hubert@Suse.
-
Andrew Morton authored
- Use __pa() around the VGA base address: more friendly for the 4g/4g split. - Use cpu_relax() rather than open-coding rep_nop(). - Default to 9600 baud - Move documentation to Documentation/kernel-parameters.txt - Make CONFIG_EARLY_PRINTK disableable if CONFIG_EMBEDDED
-
Andrew Morton authored
From: Andi Kleen <ak@muc.de> Implement VGA and serial early printk on x86. We just include the x86_64 version.
-
Andrew Morton authored
From: Karsten Keil <kkeil@suse.de> I found a bug in the PPPIOCSPASS PPPIOCSACTIVE IOCTL implementation in kernel 2.5/2.6. The current pppd code use a empty filter (uprog.len=0) to detach the filter in the kernel, but this code was removed in 2.5.71 while fixing a compiler warning. Here the new patch, also with better limit checking. The second patch check for flen == 0 in the filter check too, since later in this code a filter[flen - 1] access is done, which is not so funny with flen 0. Maybe it's not really needed anymore, since with the first patch it would not longer called with flen=0. paulus says: It looks correct. Previously we had (and in 2.4 we still have) if (uprog.len > 0 && uprog.len < 65536) { ... which gave warnings since uprog.len is unsigned short. So someone decided that both parts of the condition were redundant.
-
Andrew Morton authored
From: Karsten Keil <kkeil@suse.de> This patch fix a deadlock in HiSax (reported from David Woodhouse <dwmw2@infradead.org>). upper layer was called back while holding the card lock fix is to move the wakeup call into BH handler to avoid direct callbacks.
-
Andrew Morton authored
From: Karsten Keil <kkeil@suse.de> - new port of 2.4 I4L core to 2.6 - new port of 2.4 I4L HiSax to 2.6 - fixes for I4L CAPI subsystem to make it stable in 2.6 - fix parameter handling of AVM ISA cards (calle) - cleanup ISDN config variables - SMP in act2000 and pcbit driver - remove check_region in act2000 - mark hysdn, isdnloop and divert as BROKEN_ON_SMP
-
bk://linux-dj.bkbits.net/cpufreqLinus Torvalds authored
into ppc970.osdl.org:/home/torvalds/v2.5/linux
-
- 19 Feb, 2004 2 commits
-
-
Dave Jones authored
Caught by Randy Dunlap. longrun_cpu_init() only gets called during startup, and calls other __init routines.
-
Dave Jones authored
Caught by Randy Dunlap. longhaul_cpu_init only gets called during startup, and calls other __init routines.
-
- 18 Feb, 2004 7 commits
-
-
bk://kernel.bkbits.net/davem/net-2.6Linus Torvalds authored
into ppc970.osdl.org:/home/torvalds/v2.5/linux
-
bk://gkernel.bkbits.net/net-drivers-2.5Linus Torvalds authored
into ppc970.osdl.org:/home/torvalds/v2.5/linux
-
Andrew Morton authored
Don't assume the size of a dma_addr_t
-
François Romieu authored
Tx descriptor overflow - take II. Assume tp->dirty_tx = NUM_TX_DESC/2, tp->cur_tx = NUM_TX_DESC - 1, watch "entry" go beyond NUM_TX_DESC. Actually this is where the same bug in r8169 driver comes from.
-
Randy Dunlap authored
From: Pablo Menichini <pablo@menichini.com.ar> and maximilian attems <janitor@sternwelten.at> while looking at kj mails from 200212 and 200301 this patch slept through originally from: Pablo Menichini <pablo@menichini.com.ar> rediffed and compile tested patch applies on plain 2.6.0 maximilian attems <janitor@sternwelten.at> handle kmalloc failures during init diff -puN drivers/net/tokenring/3c359.c~tr3c_kmalloc drivers/net/tokenring/3c359.c linux-261-bk4-kj1-rddunlap/drivers/net/tokenring/3c359.c | 13 +++++++++++++ 1 files changed, 13 insertions(+)
-
Don Fry authored
The transmit routine will stop interrupting and hang, causing the tx_timeout routine to attempt to restart the device when the 32-bit cur_tx counter wraps below dirty_tx. If the device had called netif_stop_queue it will never call netif_wake_queue in the interrupt routine (at least on an IA32 system) due to 32-bit wrap around arithmetic. On my IA32 system 'dirty_tx > lp->cur_tx - TX_RING_SIZE + 2' would always evaluate to false when dirty and cur_tx were less than 15, preventing netif_wake_queue to be called. By starting dirty_tx and cur_tx at 0xfffffff0 (to reduce test time) I found that once cur_tx wrapped to zero, that transmitted buffers would never be unmapped or freed because 'while (dirty_tx < lp->cur_tx) {' was not true. cur_tx would keep incrementing (in start_xmit) but dirty_tx would not (in pcnet32_interrupt), thus leaking skb's and pci map entries. On PPC machines, the system would quickly run out of pci maps. Fix tested on PPC and IA32.
-
Randy Dunlap authored
description: remove double semi-colon typo;
-