- 24 Jun, 2004 40 commits
-
-
Andrew Morton authored
From: Paul Mundt <lethal@Linux-SH.ORG> This updates the sh dma-mapping code, as well as doing some cleanup in the consistent API. We also add a consistent_{alloc,free} to the machvec for platforms that need special handling. Signed-off-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Paul Mundt <lethal@Linux-SH.ORG> This adds support for the SH-3's on-chip ADC (which is needed by things like the touchscreen, etc.). Signed-off-by: Andriy Skulysh <askulysh@image.kiev.ua> Signed-off-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: William Lee Irwin III <wli@holomorphy.com> During stress testing at Oracle to determine the maximum number of clients 2.6 can service, it was discovered that the failure mode of excessive numbers of clients was kernel deadlock. The following patch removes the check if (nr_swap_pages > 0) from out_of_memory() as this heuristic fails to detect memory exhaustion due to pinned allocations, directly causing the aforementioned deadlock. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Chen, Kenneth W" <kenneth.w.chen@intel.com> Turn on CONFIG_HIGHMEM and CONFIG_HUGETLBFS. Try to config the hugetlb pool: [root@quokka]# echo 100 > /proc/sys/vm/nr_hugepages [root@quokka]# grep HugePage /proc/meminfo HugePages_Total: 100 HugePages_Free: 100 [root@quokka]# echo 20 > /proc/sys/vm/nr_hugepages [root@quokka]# grep HugePage /proc/meminfo HugePages_Total: 0 HugePages_Free: 0 [root@quokka]# echo 100 > /proc/sys/vm/nr_hugepages [root@quokka]# grep HugePage /proc/meminfo HugePages_Total: 100 HugePages_Free: 100 [root@quokka]# echo 0 > /proc/sys/vm/nr_hugepages [root@quokka]# grep HugePage /proc/meminfo HugePages_Total: 31 HugePages_Free: 31 The argument "count" passed to try_to_free_low() is the config parameter for desired hugetlb page pool size. But the implementation took that input argument as number of pages to free. It also decrement the config parameter as well. All give random behavior depend on how many hugetlb pages are in normal/highmem zone. A two line fix in try_to_free_low() would be: - if (!--count) - return 0; + if (count >= nr_huge_pages) + return count; But more appropriately, that function shouldn't return anything. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Mika Kukkonen <mika@osdl.org> Fix various sparse "assignment expression in conditional" warnings in fs/ Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Andy Whitcroft <apw@shadowen.org> Being able to recover the configuration from a kernel is very useful and it would be nice to default this option to Yes. Currently, to have the config available both from the image (using extract-ikconfig) and via /proc we keep two copies of the original .config in the kernel. One in plain text and one gzip compressed. This is not optimal. This patch removes the plain text version of the configuration and updates the extraction tools to locate and use the gzip'd version of the file. This has the added bonus of providing us with the exact same results in both cases, the original .config; including the comments. Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Pavel Machek <pavel@ucw.cz> This moves fix_processor_context() so that additional prototype is not needed, and adds context * to processor state saving functions, so that they can be used on SMP. It should be done this way from the beggining. Signed-off-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Pavel Machek <pavel@ucw.cz> Its very bad idea to freeze migration threads, as it crashes machine upon next call to "schedule()". In refrigerator, I had one "wake_up_process()" too many. This fixes it. Signed-off-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Pavel Machek <pavel@ucw.cz> I shot myself in the foot with swsusp, so I guess documenting that particular trap is right thing to do (tm). Somehow two copies of "radeon hint" crept in; fix that, too. Signed-off-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Chen, Kenneth W" <kenneth.w.chen@intel.com> With list poisoning on by default from linux-2.6.7, it's easier than ever to trigger the bug in try_to_free_low(). It ought to use the safe version of list iterater. Signed-off-by: Ken Chen <kenneth.w.chen@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Randy.Dunlap" <rddunlap@osdl.org> http://bugme.osdl.org/show_bug.cgi?id=2701 Current script has problems with some shells and utilities. Remove use of 'echo' in the script. From: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Randy Dunlap <rddunlap@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Randy.Dunlap" <rddunlap@osdl.org> Some elements of ikconfig have been removed, but the help text wasn't updated to reflect those changes. Signed-off-by: Randy Dunlap <rddunlap@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: David Eger <eger@havoc.gtf.org> This patch brings the cirrusfb driver up to date with 2.6. cirrusfb has suffered bit rot like you wouldn't believe (last updated... 2.3.x era?). The driver will now compile again, and you can change to a high resolution text mode with stty. Known defects: doesn't play nice with X, nor fbset. C = Cosmetic change L = Logical change A = API change W = register Writing change (1-CA) fb_info and cirrusfb_info: - mostly cosmetic, but a lot less confusing, and no more nasty casting. It used to be stylish to embed struct fb_info_gen (now struct fb_info) as the first member of struct clgenfb_info (now struct cirrusfb_info), and then you'd cast to the deisred struct. Now we pass the size of our data structure to framebuffer_alloc(), and we make fb_info and cirrusfb_info reference each other with pointers (as in radeonfb). In the old code, there two declarations were common: clgenfb_info *fb_info; clgenfb_info *info; since there's also a 'struct fb_info' now, I found this really confusing, and unified usage as: cirrusfb_info *cinfo; fb_info *info; This accounts for a lot of the search and replace cosmetic upgrade. (2-A) All of the FB knowledge of FB internals is gone in 2.6 (3-LW) revised maxclock numbers (cirrusfb_board_info_rec.maxclock[5]) In my quest to get fbset to work, I borrowed some maxclock data from the X.Org tree for various chipsets. It didn't really seem to help. oh well. (3-LA) upgraded PCI registration Instead of doing PCI walking from the driver, we hand off a pci_device_id table to the PCI subsystem and just get called when it finds a relevant board. (4-L) striking lots of __init and __initdata specifiers I was running into some things not working when I moved the call to init_vgachip() from the driver registration to set_par(). I thought perhaps this was due to some things being marked __init accidentally so I axed said annotations. Turns out it was something else. See 5. (5-LA) delayed chip initialization, nasty double-set_par() pseudo-bug Tony says that the fb drivers shouldn't do any chipset initialization until they get a set_par() call. This way, fb modules can be safely unloaded if no one gets around to using them, and the vga_con -> fbcon hand off is smoother, as fbcon can still grab the back-scroll data from vga_con... In any case, moving the calls to init_vgachip() and fbgen_do_set_var() from driver initialization to set_par() revealed that the cirrus register-writing function needs to be called twice for a mode change to work. I don't understand why. (6-LA) split clgen_decode_var() into the bits that check the var and the bits that actually generate register information (par/regs) to write Adding modedb hooks here might actually fix fbset, i think... (7-LW) No longer write the palette in init_vgachip() nor in set_par(). Someone else (fbcon?) seems to be making its own calls to setcolreg() for us. (8-LW) setcolreg() -- while removing all of the console cruft, I had to try to reconstitute the palette code. I think I got this right, but I could be off -- the penguin boots in the correct colors at least ;-) (9-L) pan_display() - we don't do wrap, silly. that's only on the amiga. (10-L) pan+BLT - to make pan play nicely with copyarea()/fillrect() I had to add a couple of calls to cirrusfb_WaitBLT() to make sure the engine is idle. (11-LW) cirrusfb_blank() - I upgraded the switch here to use the new VESA_* blanking mode constants. I think I translated the right logic for the right blanking levels. Signed-off-by: David Eger <eger@havoc.gtf.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Yoshinori Sato <ysato@users.sourceforge.jp> - delete obsolute(unused) header file Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Hugh Dickins <hugh@veritas.com> zap_pte_range is wasting time marking anon pages accessed: its original !PageSwapCache test should have been reinstated when page_mapping was changed to return swapper_space; or more simply, just check !PageAnon. Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Michael Hunold <m.hunold@gmx.de> i2c_add_driver() may actually fail, but my driver returns 0 regardless. Thanks to Arthur Othieno <a.othieno@bluewin.ch> for this obviously correct patch. Signed-off-by: Michael Hunold <hunold@linuxtv.org> Signed-off-by: Arthur Othieno <a.othieno@bluewin.ch> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Martin J. Bligh" <mbligh@aracnet.com> From: Andy Whitcroft <apw@shadowen.org> The comments for i386 allocate_pgdat indicate that the routine should be modified to place the pgdat into node local memory. However, this has already been done as the pgdat is placed at node_remap_start_vaddr. This patch updates the comments to reflect this reality. Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Martin J. Bligh <mbligh@aracnet.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Stephen Smalley <sds@epoch.ncsc.mil> This patch extends the set of calls to the secondary security module by SELinux as well as revising a few existing calls to support other security modules and to more cleanly stack with the capability module. Please apply. Signed-off-by: Stephen Smalley <sds@epoch.ncsc.mil> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: bert hubert <ahu@ds9a.nl> Signed-off-by: bert hubert <ahu@ds9a.nl> Signed-off-by: John Levon <levon@movementarian.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Kumar Gala <kumar.gala@freescale.com> Added myself to the MAINTAINERS file for 85xx. Added an entry into the CREDITS file for me. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Anton Blanchard <anton@samba.org> We were passing in the hole size as kB not pages to free_area_init which made the VM misbehave. This only hit on POWER3 because POWER4 and newer places IO above all memory and so doesnt have a hole. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Antonino A. Daplas" <adaplas@hotpop.com> This patch allows fbset to change the video mode and the console window size via the notifier call chain. It will only notify fbcon of mode changes from user space. Changes coming from upstream will be ignored. The code will only update the current console. Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Antonino A. Daplas" <adaplas@hotpop.com> This patch fixes the following bugs/regressions for fbcon: 1. Initialize and update global arrays used by fbcon during initialization and and by set_con2fbmap code. 2. Fixed screen corruption (white rectangle) at initial mode setting plaguing cards with VGA cores and with VGA console enabled. (vga16fb, however, still shows remnants of previous text if boot logo is enabled) 3. Improved fbcon_startup/fbcon_init code. 4. Fixed set_con2fbmap code -- should support multiple devices mapped to Signed-off-by: Antonino A. Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Jesper Juhl <juhl-lkml@dif.dk> Here's a small patch that lists X.Org as well as XFree86 in Documentation/SubmittingDrivers in the section talking about video drivers. Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: John Levon <levon@movementarian.org> In 2.4, OProfile allowed normal users to trigger sample dumps (useful under low sample load). The patch below, by Will Cohen, allows this for 2.6 too. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Andi Kleen <ak@suse.de> Early CPU detect can only work after the various sub CPU drivers have registered their devices. Currently the vendor would be always 0, which is Intel. This prevents Athlons from being recognized as buggy PPros and fixes some other workarounds for non Intel CPUs too. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Adrian Bunk <bunk@fs.tum.de> > This version causes linker trouble with > CONFIG_I2C=m > CONFIG_I2C_ALGOBIT=m > CONFIG_FB_RIVA_I2C=y > > CC init/version.o > LD init/built-in.o > LD .tmp_vmlinux1 > drivers/built-in.o(.text+0xda101): In function `riva_setup_i2c_bus': > : undefined reference to `i2c_bit_add_bus' > drivers/built-in.o(.text+0xda218): In function `riva_delete_i2c_busses': > : undefined reference to `i2c_bit_del_bus' > drivers/built-in.o(.text+0xda237): In function `riva_delete_i2c_busses': > : undefined reference to `i2c_bit_del_bus' > drivers/built-in.o(.text+0xda2c9): In function `riva_do_probe_i2c_edid': > : undefined reference to `i2c_transfer' > make: *** [.tmp_vmlinux1] Error 1 >... The problem is: FB_RIVA=y FB_RIVA_I2C=y I2C=m I2C_ALGOBIT=m The patch below fixes this. Besides this, it contains: - help text by Antonino A. Daplas - converted spaces to tabs - it was forgotten that FB_RIVA_I2C requires I2C_ALGOBIT Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Ralf Baechle <ralf@linux-mips.org> Forward port of the 2.4 driver with changes required for 2.6. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Ralf Baechle <ralf@linux-mips.org> MIPS update: - Further conversion of MIPS kernel configuration to reverse dependencies. - Support for the PMC-Sierra Yosemite evaluation board. - Merge arch/mips/mm-32 and arch/mips/mm-32 into arch/mips/mm. - Partial support for the R8000 now that I finally have clearance for the documentation previously covered by NDA. - Make distclean fixes. - Regenerate default configuration files against latest Kconfig files. - Fix handling of data bus errors in modules. - Make R4000 bug probing more bullet proof. - Rewrite semaphore code folloing the PPC implementation to no longer manipulate 2 32-bit quantities atomically using 64-bit instructions. Occasionally this did cause problems due to struct semaphore not having sufficient alignment. - Make sys_pipe() code bullet proof against gcc 3.5 over-optimization. - Fix possibly exploitable bug in IRIX compatibility statvfs(2). - Make sched_clock() an outline function. - Support for the MIPS 24K and 25K processors. - Make functions static that aren't needed anywhere else. - Factor out some more generic MIPS SMP code. - Factor out common part of the GT-64240 code. - Ocelot C now uses the generic MV-64340 interrupt handler code. - Factor out common board support code - More cleanup and bug fixes for the NEC VR41xx code. - Start cleanup of hazard handling as required for MIPS32/64 V2 processors. - Enforce minimal kmalloc alignment of 8 byte so 64-bit registers can be stored into fields without exceptions. - Speeling and warning fixes. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Alan Cox <alan@redhat.com> OSS avoids the Dell lockup by not hitting the problem register (which apparently breaks resume on a Sony laptop). ALSA keeps a flag and uses pci subvendor info to clear it for problem Dell laptops. Unfortunately there is at least one other Dell laptop which is affected. This adds its sub id's [Patch from Dan Williams @ Red Hat slightly reformatted by me] Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Ralf Baechle <ralf@linux-mips.org> Fix HAL2 audio driver for the SGI A2 audio subsystem and rewrite large parts of it to finally work. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Anton Blanchard <anton@samba.org> ../include/linux/swap.h:extern int nr_swap_pages; /* XXX: shouldn't this be ulong? --hch */ Sounds like it should be too me. Some of the code checks for nr_swap_pages < 0 so I made it a long instead. I had to fix up the ppc64 show_mem() (Im guessing there will be other trivial changes required in other 64bit archs, I can find and fix those if you want). I also noticed that the ppc64 show_mem() used ints to store page counts. We can overflow that, so make them unsigned long. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
We use per-cpu counters for the system-wide pagecache accounting. The counters spill into the global nr_pagecache atomic_t when they underflow or overflow. Hence it is possible, under weird circumstances, for nr_pagecache to go negative. Anton says he has hit this. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: "Antonino A. Daplas" <adaplas@hotpop.com> Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Christoph Lameter <christoph@graphe.net> Attached a patch to support a variety of PCI based serial and parallel port I/O ports (typically labeled 222N-2 or 9835). I think this should go into 2.6.0 since it has been out there for a long time and is just some additional driver support that somehow fell through the cracks in 2.4.X. Tim Waugh submitted it in the 2.4.X series. See also http://winterwolf.co.uk/pciioSigned-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
OK, the pending abs() disaster has hit: drivers/usb/class/audio.c:404: warning: static declaration of 'abs' follows non-static declaration This is due to the declaration in kernel.h. AFAIK there's not even a matching definition for that. The patch implements abs() as a macro in kernel.h and kills off various private implementations. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Manfred Spraul <manfred@colorfullife.com> slab.c contains too many inline functions: - some functions that are not performance critical were inlined. Waste of text size. - The debug code relies on __builtin_return_address(0) to keep track of the callers. According to rmk, gcc didn't inline some functions as expected and that resulted in useless debug output. This was probably caused by the large debug-only inline functions. The attached patche removes most inline functions: - the empty on release/huge on debug inline functions were replaced with empty macros on release/normal functions on debug. - spurious inline statements were removed. The code is down to 6 inline functions: three one-liners for struct abstractions, one for a might_sleep_if test and two for the performance critical __cache_alloc / __cache_free functions. Note: If an embedded arch wants to save a few bytes by uninlining __cache_{free,alloc}: The right way to do that is to fold the functions into kmem_cache_xy and then replace kmalloc with kmem_cache_alloc(kmem_find_general_cachep(),). Signed-Off: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: Manfred Spraul <manfred@colorfullife.com> Reversing the patches that made all caches hw cacheline aligned had an unintended side effect on the kmalloc caches: Before they had the SLAB_HWCACHE_ALIGN flag set, now it's clear. This breaks one sgi driver - it expects aligned caches. Additionally I think it's the right thing to do: It costs virtually nothing (the caches are power-of-two sized) and could reduce false sharing. Additionally, the patch adds back the documentation for the SLAB_HWCACHE_ALIGN flag. Signed-Off: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
From: William Lee Irwin III <wli@holomorphy.com> Based on Arjan van de Ven's idea, with guidance and testing from James Bottomley. The physical ordering of pages delivered to the IO subsystem is strongly related to the order in which fragments are subdivided from larger blocks of memory tracked by the page allocator. Consider a single MAX_ORDER block of memory in isolation acted on by a sequence of order 0 allocations in an otherwise empty buddy system. Subdividing the block beginning at the highest addresses will yield all the pages of the block in reverse, and subdividing the block begining at the lowest addresses will yield all the pages of the block in physical address order. Empirical tests demonstrate this ordering is preserved, and that changing the order of subdivision so that the lowest page is split off first resolves the sglist merging difficulties encountered by driver authors at Adaptec and others in James Bottomley's testing. James found that before this patch, there were 40 merges out of about 32K segments. Afterward, there were 24007 merges out of 19513 segments, for a merge rate of about 55%. Merges of 128 segments, the maximum allowed, were observed afterward, where beforehand they never occurred. It also improves dbench on my workstation and works fine there. Signed-off-by: William Lee Irwin III <wli@holomorphy.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-