Summary of changes from v2.5.42 to v2.5.43 ============================================ o pppoe: use seq_file for proc stuff Also make it conditional on CONFIG_PROC_FS JFS: change name of get_index() to read_index() get_index conflicts with a symbol in a mips include file. [TCP]: Add F-RTO support. Motivation for this modification is that especially on some wireless network technologies there are delay spikes that trigger RTO even though no packets are lost. F-RTO sender continues by sending new data after RTO retransmission in order to avoid unnecessary retransmissions in that case. If the sender sees any duplicate acks after the RTO retransmission, it reverts to traditional slow start retransmissions. If new acks arrive after forward transmissions, they very likely indicate that the RTO was indeed spurious and the sender can continue sending new data (because only one segment was retransmitted). arch/sparc64/defconfig: Update. [TCP]: Only non-zero inits are necessary in tcp_vX_init_sock. [TCP]: Turn F-RTO off by default. net-kiocb.diff clean up whitespace and patch import errors from net-kiocb patch eliminate a compiler warning for aio_write in net/socket.c correct sock_aio_write prototype remove an inaccurate comment from sock.h arch/sparc64/kernel/ebus.c: Cure __FUNCTION__ usage. [PATCH] USB Whiteheat driver patches A couple patches on 2.5.41; issues discovered during QA. 1: The hack to get around the unlinking bug. You said this was also in 2.5.x, so I've included this. 2: filp is NULL when called from usb_serial_disconnect. Fixes an oops. 3: In the case where the module is reloaded; the endpoints in the usbsubsystem don't go away. So when the module comes back, the endpoints still have the unlink thing, and also need to be cleared. Otherwise the firmware appears not respond to the version nubmer query and the driver doesn't attach, and you have no device. [PATCH] "nousb" for in-kernel USB Here's the updated "nousb" patch for vanilla 2.5.41. It applies with 2 small offsets to 2.5.41-bk3. [PATCH] fix usbfs mount count Hi, this patch fixes usbfs. You can't use a single mount_count for 2 different mounts. [PATCH] remove unused variable in wacom driver wacom.c generates the following warning: drivers/usb/input/wacom.c: In function `wacom_probe': drivers/usb/input/wacom.c:405: warning: unused variable `rep_data' [SPARC]: Fix build of timer routines. [PATCH] linux-2.5.41/drivers/usb/core/hub.c called down() from interrupt context On second thought after reading Oliver Neukum's question about "shaving off a cycle or two", here is version of my fix for down() being called from interrupt context that uses unlikely() to get the speed advantage that would be available from BUG_ON(), while still ensuring that the condition is executed even if assertions are compiled out. [IPV4]: Use generic struct flowi as routing key. net/ipv6/netfilter/ip6table_mangle.c: Fix wrong cast. [ipv4] move proc init to newly created net/ipv4/ip_proc.c This is the start of the seq_file work, so that I can see if anybody will cough too much on the choosen path... Also convert some unneeded __constat_htons to plain htons, that results in the same code being generated. net/ipv4/af_inet.c: Include linux/igmp.h [ia64/ppc64/s390x/sparc64/x86_64]: Update for sock->ops->recvmsg AIO changes. drivers/net/pppoe.c: Update for new sendmsg/recvmsg AIO args. include/linux/net.h: Update SOCKOPS_WRAPPED to new AIO recvmsg/sendmsg args. net/appletalk/ddp.c: Update SOCKOPS_WRAPPED to new AIO recvmsg/sendmsg args. net/socket.c: Do not reference dev_ioctl unless CONFIG_NET. include/net/bluetooth/bluetooth.h: Fixup recmsg args. net/bluetooth/hci_sock.c: Fix recvmsg/sendmsg args. net/bluetooth/bnep/core.c: Update for new sendmsg args. net/bluetooth/rfcomm/core.c: Update for new sendmsg args. net/ipv6/udp.c: Update for new sendmsg/recvmsg args. net/ipv6/raw.c: Update for new recvmsg/sendmsg args. net/sctp/socket.c: Update for new sendmsg/recvmsg args. net/bluetooth/l2cap.c: Update for new sendmsg args. net/bluetooth/sco.c: Update for new sendmsg args. net/bluetooth/rfcomm/sock.c: Update for new sendmsg/recvmsg args. include/net/tcp.h: Declare tcp_enter_frto. net/irda/af_irda.c: Update for new sendmsg/recvmsg args. fs/smbfs/sock.c: Update for new sendmsg/recvmsg args. net/irda/af_irda.c: Fix sendmsg/recvmsg args in comments too. Correct compiler warnings for 64 bit platforms and minor formatting cleanup and remove debug function that was causing a conflict with a function of the same name in SCSI change name of debug function to not conflict with optional jfs debug function fs/aio.c: Export wait_on_sync_kiocb. drivers/scsi/esp.c: Fix the build. [PATCH] convert tty_drivers to list_heads Convert the tty_drivers list to use list_heads instead of open coded doubly-linked lists. [PATCH] Fix cpufreq compile The timer-handling split patch moved cpufreq stuff from time.c to timers/timer_tsc.c but not the corresponding #include causing the build to fail. The fix is simple. kbuild: Fix UML build Not perfectly clean yet, but uses the standard way to descend into subdirs and gives me working vmlinux and linux targets without spurious rebuilds. [PATCH] InterMezzo for 2.5 This is the initial port of InterMezzo for 2.5. It now compiles, mounts, and completes I/Os successfully, but we are aware that more needs to be done and we will do it as quickly as possible. Merge with DRI CVS tree [PATCH] ATM build fix Fix buggy #if removal in iphase.c that crept in with the initcalls fixup. When opening a CD-ROM device with O_NONBLOCK (for setup and ioctl), we should allow read-write accesses - it's used for control, not data. [PATCH] oneliner race fix for ldt updates Problem: if another CPU is using lazy-TLB, the LDT flushing won't flush the other CPU's LDT entry. Fix: use active_mm instead of mm for the flush IPI. Fix warnings of the form warning: long int format, different type arg (arg 5) by casting ino_t arguments to unsigned long for printf formats. In some instances, change %ld to %lu. Fix warnings of the form warning: right shift count >= width of type by casting to long before shifting by HIGH_BITS_OFFSET. Fix illegal use of short keyword. Fix three alpha gcc 3.3 warnings. Fix two defined but not used warnings by wrapping the variables in #if RTC_IRQ. Fix hordes of printf format warnings by changing loff_t to long long. Fix defined but not used warnings by marking variables with attribute unused. From Art Haas: C99 initializers for arch/alpha. [SERIAL] Fix Sparc32/64 handling of CONFIG_SERIAL_CORE{,_CONSOLE} SPARC was unconditionally setting CONFIG_SERIAL_CORE_CONSOLE to y and conditionally setting CONFIG_SERIAL_CORE depending on the Sparc sub-drivers. In addition, the core serial driver for SPARC is always built, so we end up with link errors. We instead make CONFIG_SERIAL_CORE{,_CONSOLE} dependent on building the SPARC core driver (CONFIG_SERIAL_SUNCORE). [PATCH] x86-64 ACPI ACPI updates for x86-64/2.5.42 ACPI finally works now. [PATCH] x86-64 Bootloader updates Update the early 32bit bootloader for x86-64. This stuff is near completely identical to i386, except for a few Makefile changes to tell the x86-64 toolkit to compile in 32bit mode. [PATCH] x86-64 - new memory map handling New e820 memory map handling for x86-64. Move it all to a new file and clean it up a lot. Add some simple allocator functions to deal with holey e820 mappings cleanly A lot of this is preparation for NUMA (which works in 2.4, but is not ported to 2.5 yet) [PATCH] x86-64 IA32 emulation updates Some bugfixes for the 32bit emulation for x86-64 and make it all compile again. Has rewritten ioctl registration code and some other updates. New system calls are supported. It unfortunately broke some time ago by binfmt_elf changes for all shared linked libraries. Will fix that later. [PATCH] x86-64 IOMMU & PCI updates Update for the x86-64 PCI subsystem in 2.5.42. Main new feature is PCI IOMMU support through the K8 aperture. This allows to use more than 4GB of memory with 32bit PCI devices. Also some other PCI changes, mostly merges from i386. [PATCH] Remove global cli stuff for x86-64 Straightforward merge from i386: remove support for global cli for x86-64 [PATCH] reboot.c for x86-64 Merge from i386 for x86-64: move reboot functions to an own file. [PATCH] library functions updates for x86-64 Update various lib/ functions for x86-64: - new memcpy/memset/csum-copy/copy_page/user - add bitstr support function for IOMMU - Other minor fixes and updates. [PATCH] hotplug cpu changes for x86-64 Port of the hotplug CPU changes from i386 for x86-64. I don't expect x86-64 hardware to support CPU hotplugging any time soon, but this makes it all compile & work again and keeps some consistency. [PATCH] Time changes for x86-64 Some timer updates from Vojtech Pavlik for x86-64. In theory support HPET timing now, but the support is disabled. Would actually need vxtime_lock() macros in the generic timer code to protect xtime updates, but I'm leaving that out now because it's only needed for vsyscalls and they're currently disabled. [PATCH] Misc core changes for x86-64/2.5.42 And here all the other x86-64 changes that have accumulated in my tree. It's various bugfixes and cleanups. Changes: - fix nmi watchdog - remove local timer spreading over CPUs - it's useless here and caused many problems - New offset.h computation from Kai - Lots of changes for the C99 initializer syntax - New MTRR driver from Dave & Mats - Bugfix: kernel threads don't start with interrupts disabled anymore, which fixes various boottime hangs (this was fixed a long time ago, but the bug crept in again by the backdoor) - Do %gs reload in context switch lockless - Fix device_not_available entry point race - New per CPU GDT layout following i386: the layot is not completely compatible with i386, which may problems with Wine in theory. Haven't seen any yet. - Support disableapic option - driverfs support removed for now because it caused crashes - Updates for new signal setup - Support for kallsyms - Port TLS clone flags/syscalls: unfortunately made the context switch even uglier than it already is. - Security fixes for ptrace - New in_interrupt()/atomic setup ported from i386 - New makefiles mostly from Kai - Various updates ported from i386 Fix type - it used to be "__u8 short", which previous versions of gcc incorrectly accepted as "short". It got fixed to __u8, but it really should be __u16. [PATCH] update dmi support [PATCH] two trivial doc fixeds The _ isnt allowed in a docbook id [PATCH] synclink updates [PATCH] remove unused crap from ide [PATCH] make eicon build [PATCH] update cpia to match 2.4 [PATCH] some mtdblock_ro fixes [PATCH] i2o-scsi next installment [PATCH] mpt fusion update from vendor [PATCH] fix up syncppp locking [PATCH] ricoh performance fix [PATCH] aacraid makefile fix [PATCH] cpqfc vendor update (someone really needs to indent the cpqfc driver!) [PATCH] correct NCR5380 locking bug [PATCH] sym53c416 updates [PATCH] fix zs sysrq [PATCH] last jffs/jffs2 signal fix was wrong [PATCH] make devfs cdrom appear in the right place [PATCH] fix qnx4 inits to C99 [PATCH] __ret is deprecated [PATCH] remove unused work queue [PATCH] hack fix for an obvious dmabuf bogon [PATCH] configurable corename To my suprise a lot of big site/beowulf type people all really want this diff, which I'd otherwise filed as 'interesting but not important' [PATCH] forward port of the various scsi fixes from 2.4 [PATCH] Linux IEEE-1394 Updates - Cleanup (purge) some of our old compat code (never thouched) - Fix dv1394 compilation warnings without devfs - Added new config-rom handling features. Allows for on-the-fly config-rom generation for dynamic functionality of the host nodes. - Convert to workqueue from taskqueue interfaces. This is actually abstracted compatibility code between tqueue/workqueue. [PATCH] fix error code which fat_fill_super() returns (1/5) This fixes the error code which fat_fill_super() returns. [PATCH] merges parse_options() of fat and parse_options() of vfat (2/5) This merges parse_options() of fat and parse_options() of vfat. And this doesn't recognize the unknown options. [PATCH] removes posix option of fat (3/5) This removes the posix option of vfat. The current posix options works only as an alias of name_check=s. [PATCH] add show_options to fat (4/5) This adds fat_show_options() to fat. And instead, this doesn't output the charset name in fat_fill_super(). [PATCH] adds dmask option to fat (5/5) This adds the dmask option. Yes, the dmask option is the permission bitmask for directory. [PATCH] Dv1394 fix This patch fixes a typo introduced by my last patch to dv1394. Fix typo in HCI_FILTER get/setsockopt o ipv4: convert /proc/net/arp to seq_file [ARM] Move TEXTADDR and DATAADDR out of vmlinux.lds.S These two variables are used by more than just the linker; they're also used by head.S to know where it can safely place the page tables. We therefore need to export it from the Makefile. These are also highly machine dependent; we don't want to duplicate the same set of conditionals for cpp and for the makefiles. arch/arm/Makefile also contained a stray close-paren. I'm submitting this one to the lost property office. We also always pass -mno-fpu to the assember; this guarantees that any floating point will be caught. [ARM] Allow CONFIG_ZBOOT_ROM=y image to be relocated to RAM Since the decompressor supports PIC, even for CONFIG_ZBOOT_ROM, we can easily allow an image which has been linked to run at a particular address in ROM to be moved to RAM. We just need to make sure that we don't relocate the GOT entries for the BSS segment. This cset also implements sa1100-based debugging for the decompressor. [ARM] Ensure deselected config variables are defined to 'n' To keep the Config.in files relatively clean, we use the following construct: if [ "$CONFIG_ARM" = "y" ]; then dep_tristate 'Foo' CONFIG_FOO $CONFIG_BAR fi where CONFIG_BAR is some machine implementation or high-level chip support configuration option. If CONFIG_BAR is left empty, then the tristate is offered to the user, which isn't what we want. Defining CONFIG_BAR to 'n' prevents the option being offered. This is a rule I generally try to implement within arch/arm/config.in. This cset makes CONFIG_SA1111 and CONFIG_ARM_THUMB behave that way. [ARM] Update timekeeping functions to use tick_nsec/1000 This updates the ARM time keeping functions to use tick_nsec/1000 instead of tick. [ARM] Update pcibios_enable_device, supply pci_mmap_page_range() Update pcibios_enable_device to only enable requested resources, mainly for IDE. Supply a pci_mmap_page_range() function to allow user space to mmap PCI regions. [ARM] Update for signal handling changes. [ARM] Update RiscPC decompressor for PIC changes This cset fixes the RiscPC decompressor code for the PIC changes. We use a pointer to a structure rather than a structure to access params. With a PIC decompressor, the address of the structure gets PIC-ified which is not what we want. [ARM] Optimise ARM TLB handling Sanitise includes of asm/tlbflush.h, asm/cacheflush.h, asm/proc-fns.h Implement ARM-specific TLB "shootdown" code. It turns out that it is overall more efficient to unconditionally invalidate the whole TLB rather than entry by entry when removing areas. [ARM] Update neponset/sa1111 for Linux device model updates. This updates these neponset and sa1111 support to use the new system device infrastructure in the Linux device model. [ARM] Other updates for changes in 2.5.42 This adds ARM support for in_atomic() and asm/numnodes.h [ARM] IDE updates - ide_register_hw takes two arguments, not one. - ide_fix_driveid is no longer used. [ARM] Fix iop310-pci compilation errors. [ARM] Remove second serial port address. The second serial port is never present in these machines, so its pointless listing it in the first place. [ARM] cpufreq updates for ARM This updates the Integrator cpufreq code to use the new interfaces, and makes the sa1100 cpufreq round up the requested frequency. Convert acorn expansion card probing code to the Linux device model. Provide LDM-based driver registration/removal interface for drivers to use. We make the old device discovery code ignore devices claimed via the LDM framework. However, the LDM framework ignores devices that may be in use by the old device discovery code. This is fine since the only devices that will still use the old discovery code will be SCSI drivers. Currently, we don't provide a useful dev.name entry. [ARM] Update Acorn ethernet expansion cards This cset implements validity checks on the ethernet MAC address when the device is opened, and refuses to open the device if this check fails. We also provide the set_mac_address method to allow ifconfig to change the mac address to something valid. In addition, the driver is converted from the old expansion card discovery methods to the new device model driver framework. [ARM] Acorn serial port driver update This cset combines the Atomwide and The Serial Port 16550 driver modules into one "8250_acorn.c" driver. This new module takes full advantage of the LDM-based expansion card facilities. [ARM] Remove old Acorn iomd-based keyboard and mouse drivers. Vojtech has patches that bring their counterparts in the input subsystem up to date (and into a working state) so these drivers are no longer required. This cset also fixes the Acorn i2c RTC code. [ARM] Fix up NCR5380-based Acorn SCSI drivers This cset updates (as much as is possible) the NCR5380-based Acorn SCSI drivers, mainly converting them to the new error handling code. However, they still don't build due to errors in NCR5380. [ARM] Rudimentary support for Thumb ptracing. Add rudimentary support for Thumb ptracing; we aren't able to single step through thumb branches yet, but this change provides enough infrastructure to make this possible. [ARM] dump_stack and show_trace_task dump_stack() got used by the generic code. Call our version __dump_stack since we're running out of other descriptive names. Allow show_trace_task to show the backtrace for the current thread. [ARM] Remove non-existent USB gadget code from mach-sa1100/Makefile The USB gadget code now lives in arch/arm/mach-sa1100/usb, and isn't in a mergable state. We remove the old makefile entries which are never going to be satisfied, and leave a placeholder for the usb directory. ALSA update - reduced stack usage (>1024 bytes) in ioctl32 routines and PCM routines - PCM midlevel - fixed drop in release() - OPL3SA2 - removed wrong inclusion of - EMU8000 - fixed compilation when sequencer is not selected - Wavefront - fixed compilation for GCC3 - fixed gameport dependency in pci/Config.in - EMU10K1 - fixed icode peek ioctl in emufx() - YMFPCI - added FM legacy volume control [ARM] Convert boot-time memory permission selection to table. This removes a compilation warning and makes the code smaller. It is also more obvious what's going on. [ARM] Update fd1772.c Remove unnecessary use of __inline__, and remove a few unnecessary prototypes. copy_buffer is moved before use. [ARM] Fix fas216 use of __FUNCTION__ macro. ALSA update - fixes for compilation without CONFIG_PROC_FS [ARM] Update acorn scsi code wrt global irq and bitops This cset removes the global irq handling in the AcornSCSI driver, and makes the target type for bitops an unsigned long array rather than an unsigned char array. [ARM] Fix entry-armv.S Prevent the assembler putting constant pools in the middle of code. Clean up shark ISA PIC handling. ALSA update - added SNDRV_PCM_IOCTL_HWSYNC ioctl - changed behaviour of read/write/poll functions - prefer waiting than return an error code - removed snd_seq_sleep_timeout_in_lock and snd_seq_sleep_in_lock helpers [ARM] Update ARM cache type decoding. [ARM ADFS] C99 designated initialisers (Patch from Art Haas) Here's a small set of patches that switch the code to use C99 desiginated initializers. Patches are against 2.5.42. [ARM] Convert sa1100 PCMCIA drivers to C99 initializers (Art Haas) The patches convert drivers/pcmcia to use C99 named initializers, and all the patches are against 2.5.42. There are 25 patches in total, and the "cat"ing them together they're more that 20K, so I'm sending the patches as a compressed attachment. The patches were CC'd to Linus in the first mail that bounced. [ARM] Make the assabet machine always use the same uart mapping. Traditionally, the Assabet reverses its mapping of UART1 and UART3 when the Neponset board is connected. This can be (a) confusing and (b) annoying when the boot loader uses UART1. We therefore have a fixed mapping between the ttySA names and the physical UARTs on this platform. [ARM] Add Xscale ADIFCC and IOP310 documentation. [ARM] Update sa1100 PCMCIA support We removed asm/mach-types.h from asm/hardware.h. This means we must now include asm/mach-types.h where its used. We also fix h3600 pcmcia initialisation/cleanup. Increase BNEP thread priority. [PATCH] Fix SCSI mode sense size I'm suprised that this didn't cause errors for more people -- a MODE_SENSE request for 128 bytes with a stated buffer length of 24 bytes. Fix: Make the buffer length match the size of the request. [ARM] Update acornfb driver to 2.5.42 fbcon. "tv_sec" is unsigned long. [PATCH] scsi compile fix I'm getting a compile failure in scsi_syms.c because it doesn't know about the new scsi_set_medium_removal(). [PATCH] n_r3964.c fix - drivers/char/n_r3964.c does not compile. r3964_open() is doing an INIT_LIST_HEAD() on a timer->list. But timer's don't have a `list' any more. Do an init_timer() instead. [PATCH] /proc/meminfo alterations for hugetlbpages The patch from Rohit and David M-T changes the hugetlb page info in /proc/meminfo slightly. It makes the identifiers a little clearer while ensuring that we don't add any identifiers which have whitespace. glibc is/shall be parsing this information to determine the size and alignment requirements of the hugetlb pages. This basically means that procfs is a requirement for successful hugetlb page usage. Not very nice, but I suspect real-world userspace fails without procfs anyway. [PATCH] direct-io bio_add_page fix Patch from Badari Pulavarty There was a corner case in the conversion of direct-io to use bio_add_page() where we would start a new page out at the wrong sector number. Fix that by explicitly passing in the current page's starting sector, and use that in the new BIO if we have to open a new one. Fix an error-path page->count leak in dio_bio_add_page(). [PATCH] page freeing function for swsusp Software suspend needs a way of forcing page reclaim, up to the point where 50% of memory is free. This patch implements a function to do that: int shrink_all_memory(int nr_pages); Will attempt to reclaim `nr_pages' pages and return them to the free pages pool. It returns the number of pages which it actually freed. If called with a "large" number of pages it will only free up to a few hundred, so the caller needs to loop on it. If it returns zero then there is no point in calling it again. [PATCH] small-machine writer throttling fix The current writer throttling in balance_dirty_pages() assumes that the writer will be effectively throttled on request queues. That works fine when the amount of data which can be placed into a queue is "much less than" total memory. But if the machine has a small amount of memory, or many disks, or has large request queues, or large requests, it can go wrong. For example, with mem=96m and dirty_async_ratio=15, we want to be able to clamp dirty+writeback memory at 15 megabytes. But it doesn't work, because a single SCSI request queue can hold 40 megs or more. The heavy writer keeps on dirtying memory until that queue fills up. So add a test for that - if we did some writeback, and we're *still* over the dirty+writeback threshold then make the caller take an explicit nap on some writes terminating. And keep on doing that until the dirty+writeback memory subsides. [PATCH] propagate pte reference into page reference during zap_pte_range() is currently just dropping the pte. Change it to mark the page referenced if the pte says it was. This has the effect of delaying the eviction of recently-mapped pagecache. This means that we're currently marking the page accessed when it is first faulted in as well as when we drop it from pagetables. Which matches up with the (strange) behaviour of the VM: it reclaims PageReferenced pagecache pages off the inactive list. Probably, it makes sense to remove the mark_page_accessed() from filemap_nopage() and just use the pte bits everywhere. Reviewing all the PageReferenced()/mark_page_accessed() usage is on my todo list. [PATCH] reduced and tunable swappiness /proc/sys/vm/swappiness controls the VM's tendency to unmap pages and to swap things out. 100 -> basically current 2.5 behaviour 0 -> not very swappy at all The mechanism which is used to control swappiness is: to be reluctant to bring mapped pages onto the inactive list. Prefer to reclaim pagecache instead. The control for that mechanism is as follows: - If there is a large amount of mapped memory in the machine, we prefer to bring mapped pages onto the inactive list. - If page reclaim is under distress (more scanning is happening) then prefer to bring mapped pages onto the inactive list. This is basically the 2.4 algorithm, really. - If the /proc/sys/vm/swappiness control is high then prefer to bring mapped pages onto the inactive list. The implementation is simple: calculate the above three things as percentages and add them up. If that's over 100% then start reclaiming mapped pages. The `proportion of mapped memory' is downgraded so that we don't swap just because a lot of memory is mapped into pagetables - we still need some VM distress before starting to swap that memory out. For a while I was adding a little bias so that we prefer to unmap file-backed memory before swapping out anon memory. Because usually file backed memory can be evicted and reestablished with one I/O, not two. It was unmapping executable text too easily, so here I just treat them equally. [PATCH] start anon pages on the active list We're currently adding anon pages to the inactive list. But they're all referenced, so when they reach the tail of the inactive list the kernel will always then bump them up to the active list. Not only does this waste CPU, but it leads to inactive/active imbalance. We end up with enormous sequences of unreclaimable, to-be-activated pages hitting the tail of the LRU and large amounts of scanning need to be done. Which upsets the VM, making it think that it is "under distress". So just start them out on the active list. [PATCH] rename /proc/sys/vm/dirty_async_ratio to dirty_ratio Since /proc/sys/vm/dirty_sync_ratio went away, the name "dirty_async_ratio" makes no sense. So rename it to just /proc/sys/vm/dirty_ratio. [PATCH] reduce the dirty threshold when there's a lot of mapped Dirty memory thresholds are currently set by /proc/sys/vm/dirty_ratio. Background writeout levels are controlled by /proc/sys/vm/dirty_background_ratio. Problem is that these levels are hard to get right - they are too static. If there is a lot of mapped memory around then the 40% clamping level causes too much dirty data. We do lots of scanning in page reclaim, and the VM generally starts getting into distress. Extra swapping, extra page unmapping. It would be much better to simply tell the caller of write(2) to slow down - to write out their dirty data sooner, to make those written pages trivially reclaimable. Penalise the offender, not the innocent page allocators. This patch changes the writer throttling code so that we clamp down much harder on writers if there is a lot of mapped memory in the machine. We only permit memory dirtiers to dirty up to 50% of unmapped memory before forcing them to clean their own pagecache. [ARM] Update clps711x fbcon driver. [ARM] Update cyber2000fb for 2.5 fbcon. [ARM] Update AFS mtd partition parsing. This updates AFS mtd partition parsing to the current CVS version: - Don't recognise the AFS SIB as a partition - Ensure initialisation of afs mtdpart structures. [ARM] Update integrator-flash.c from MTD CVS Keep the partition information around for the lifetime of the module. ALSA update - USB driver update - better extdigi support (mixer) - cleanups in the audio code [PATCH] Update changes to point to make 3.78 The Documentation/Changes in the summary has been updated to require make 3.78 but the other references were not updated. And 3.78 really is required. This patch updates the other locations. ALSA update - compilation fixes without CONFIG_PROC_FS Make ide-cd handle a REQ_BLOCK_PC packet command completion properly (which is to say the same as REQ_PC). [PATCH] USB: Vicam driver update/rewrite Updates the vicam driver to the latest version from the sourceforge.net project. Binary files linux-2.5.41/drivers/usb/media/.usbvideo.c.swp and linux-2.5.41-vicam/drivers/usb/media/.usbvideo.c.swp differ diff -urN linux-2.5.41/drivers/usb/media/Makefile linux-2.5.41-vicam/drivers/usb/media/Makefile deleted drivers/usb/media/vicamurbs.h as it's no longer needed. [PATCH] USB: 2.5.42 partial fix for older pl2303 On Sat, Oct 12, 2002 at 06:16:44PM -0700, Greg KH wrote: > Now, would you mind taking a look at 2.5, and fixing this there too? :) Here's a half-successful attempt. With this patch, the device no longer appears twice, and it always works on the first open (at least, so I've observed up to this point). The open following a successful open usually fails (roughly speaking, it appears to play dead), and the open following a failed open usually (always?) succeeds. So, on my PL-2303, it's not perfect but it's certainly livable. This patch is based on the one I did for 2.4, and in fact, this code functions when it's plugged into 2.4.20-pre10 instead of 2.5.42. In that scenario, the opens work 100% of the time. I'd be interested in suggestions or comments regarding this patch. Anyone who has a PL-2303 working under 2.5 might want to try this patch just to make sure it doesn't kill their working setup. -Barry K. Nathan [PATCH] USB: fix up previous pl2303 fix. This returns the proper value, and fixes a memory leak. [PATCH] usb-storage: cache pipe values This patch to usb-storage makes all pipe values used by the driver an unsigned int (like they should be), and caches them in the device data structure. [PATCH] usb-storage: generalize transfer functions This patch generalizes the transfer functions. This is in preparation for consolidating all sub-drivers to use a common set of functions. Oh, and this patch makes the residue field be initialized. Making this the correct value is still on the TODO list. [PATCH] usb-storage: convert to common transfer functions This patch makes all sub-drivers use the same data-moving functions. It also eliminates the duplicate functions from raw_bulk.c [PATCH] usb-storage: convert to common transfer functions This patch fixes the bulk transport data stage to use the correct pipe for data exchange, based on the transfer direction. [PATCH] C99 designated initializers for drivers/usb Hi. Here's a set of three patches for switching ... drivers/usb/serial/io_ti.c drivers/usb/net/usbnet.c drivers/usb/core/hub.c ... to use C99 named initializers. The patches are all against 2.5.42. [PATCH] char driver: added tipar driver Here is patch which adds parallel link cable support for Texas Instruments graphing calculators. USB: visor.c: changed USB_DT_DEVICE to USB_RECIP_INTERFACE, as that's the proper #define to use. Thanks to David Brownell for pointing this out to me. o ipv4: convert /proc/net/route to seq_file [PATCH] usbcore doc + minor fixes Cleaning out my queue of most minor patches: - Provides some kerneldoc for 'struct usb_interface' now that the API is highlighting it. - Fixes usb_set_interface() so it doesn't affect other interfaces. This provides the right place for an eventual HCD call to clean out now-invalid records of endpoint state, and also gets rid of a potential SMP issue where drivers on different interfaces calling concurrently could clobber each other. (Per-interface data doesn't need locking except against config changes.) - It's OK to pass URB_NO_INTERRUPT hints if you're queueing a bunch of interrupt transfers. The set_interface call should eventually take the interface as a parameter, it's one of the few left using the "device plus magic number" identifier. I have a partial patch for that, but it doesn't handle the (newish) ALSA usb audio driver or a few other callers. [PATCH] batched slab shrink and registration API From Ed Tomlinson, then mauled by yours truly. The current shrinking of the dentry, inode and dquot caches seems to work OK, but it is slightly CPU-inefficient: we call the shrinking functions many times, for tiny numbers of objects. So here, we just batch that up - shrinking happens at the same rate but we perform it in larger units of work. To do this, we need a way of knowing how many objects are currently in use by individual caches. slab does not actually track this information, but the existing shrinkable caches do have this on hand. So rather than adding the counters to slab, we require that the shrinker callback functions keep their own count - we query that via the callback. We add a simple registration API which is exported to modules. A subsystem may register its own callback function via set_shrinker(). set_shrinker() simply takes a function pointer. The function is called with int (*shrinker)(int nr_to_shrink, unsigned int gfp_mask); The shrinker callback must scan `nr_to_scan' objects and free all freeable scanned objects. Note: it doesn't have to *free* `nr_to_scan' objects. It need only scan that many. Which is a fairly pedantic detail, really. The shrinker callback must return the number of objects which are in its cache at the end of the scanning attempt. It will be called with nr_to_scan == 0 when we're just querying the cache size. The set_shrinker() registration API is passed a hint as to how many disk seeks a single cache object is worth. Everything uses "2" at present. I saw no need to add the traditional `here is my void *data' to the registration/callback. Because there is a one-to-one relationship between caches and their shrinkers. Various cleanups became possible: - shrink_icache_memory() is no longer exported to modules. - shrink_icache_memory() is now static to fs/inode.c - prune_icache() is now static to fs/inode.c, and made inline (single caller) - shrink_dcache_memory() is made static to fs/dcache.c - prune_dcache() is no longer exported to modules - prune_dcache() is made static to fs/dcache.c - shrink_dqcache_memory() is made static to fs/dquot.c - All the quota init code has been moved from fs/dcache.c into fs/dquot.c - All modifications to inodes_stat.nr_inodes are now inside inode_lock - the dispose_list one was racy. [PATCH] fix disk IO stats for 512-byte IOs If you're peforming 512-byte sized IOs. With, say, dd of=/dev/raw/raw1 bs=512 then the `pgpgin' and `pgpgout' accounting just sits on zero. This is because it counts in kbytes, and 512/1024 is zero. So change it to count sectors, and divide that by two when we report it to userspace. [PATCH] discontigmem: zero out the per-node zone structures at boot From Bill Irwin: ensure that the data structures which hold the node's zone structures is all zeroed before we start using it. [PATCH] enable 64-bit sector_t config option CONFIG_LBD was initially hardwired to "on" for testing. That seems to have gone OK, so now make it configurable. [PATCH] msync correctness fixes From Anton Blanchard. This fixes a couple of Linux Test Project failures. - Returns EBUSY if the caller is trying to invalidate memory which is covered by a locked vma. The open group say: [EBUSY] Some or all of the addresses in the range starting at addr and continuing for len bytes are locked, and MS_INVALIDATE is specified. - Returns EINVAL if the caller specified both MS_SYNC and MS_ASYNC [EINVAL] The value of flags is invalid. and: "Either MS_ASYNC or MS_SYNC is specified, but not both." [PATCH] remove kiobufs 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(). o ipv4: convert /proc/net/udp to seq_file Also make some functions and structs static, as they're only used in ip_proc.c Cleaned up a bunch of things noticed while merging the SMP support. The tempfile code is in its own file. A bunch of unused stuff is now gone. A bunch of code that could be called from the tracing thread was made safe for that to happen. fs/smbfs/sock.c: Fix the build. net/ipv4/af_inet.c: Kill inaccurate comment. Now that the module name bluetooth.o is not used by USB subsystem anymore we can rename bluez.o to what it should have been from the begging bluetoth.o net/ipv6/netfilter/ip6t_LOG.c: Display ipv4 encapsulation properly. net/ipv4/netfilter/ip_conntrack_core.c: Fix ip_conntrack_change_expect locking. [NETFILTER]: Avoid nesting readlocks in conntrack code. [SPARC64]: Kill some port-specific bloat. - Uninline down/up/down_trylock/down_interruptible - Uninline PCI controller cfg space helpers - Uninline ip_fast_csum - Uninline some routines in signal32/sys_sparc32/unaligned - Uninline arch/sparc64/mm/fault.c:get_fault_init - NUM_IVECS need only be IMAP_NR + 1 net/llc/llc_proc.c: Do not mark llc_proc_exist with __exit. Consistent naming for Bluetooth function and constants. Some of them were named like BT_XXX and bt_xxx others BLUEZ_XXX and bluez_xxx. From now on use BT_XXX and bt_xxx throughout Bluetooth code, including CONFIG_ defines. Clean up small typos and misspelling along the way. This is the merge of the initial 2.4 SMP support. Locking was added where necessary. All processors take timer interrupts, but only CPU 0 calls the timer IRQ. The others just call update_process_times to keep the accounting straight. The timer interrupt is blocked along with the other signals. net/ipv4/netfilter/ipt_unclean.c: Source port is allowed to be zero. Get rid of the MIN() thing in Bluetooth code and use min_t() instead. config.in now defines CONFIG_NR_CPUS. Added some code to arch/um/kernel/tempfile.c. Support for suspend/resume interface for the HCI devices. Made a small fix to arch/um/kernel/Makefile. ALSA update - reduced stack usage for functions using >1024+ bytes - fixed behaviour when OSS emulation is selected - fix in kmod support for sequencer ALSA update - ES18xx - fixed detection and initialization of opl3 and mpu401 - ENS1370 - make inclusion of *_codec.h selective for each chipset - usb audio - unified get_min_max() function to retrieve the min and max values - added the debug condition to ignore the error at get/put callbacks - quirks - use USB_DEVICE without class interface net/llc/llc_proc.c: Kill other __exit tag too. XFS: More mount cleanups Modid: 2.5.x-xfs:slinx:128571a XFS: I/O path cleanups Modid: 2.5.x-xfs:slinx:128581a XFS: Don't reset blocksize on umount Modid: 2.5.x-xfs:slinx:128659a XFS: Set inode operations later in xfs_iget_core Modid: 2.5.x-xfs:slinx:128691a XFS: Handle NULL pagebufs gracefully in pagebuf_geterror Modid: 2.5.x-xfs:slinx:128787a XFS: Allow quota inode creation on a read-only filesystem. Modid: 2.5.x-xfs:slinx:128905a XFS: Remove a dead variable. Modid: 2.5.x-xfs:slinx:128913a [MTD] Update 2.5 MTD code from MTD CVS and ARM tree This cset updates the 2.5 MTD code from the MTD CVS. David Woodhouse is happy with me sending this. Summary of changes: - Add MTD device concatenation support module. - Bootldr MTD partition parsing is obsolete, replaced by command-line based partition information. - Add support for ARM map drivers: AUTCPU12, Ceiva, Camelot, Fortunet, edb7312, Impa7, PCI - Add support for PCMCIA memory cards - Update help texts for: Ocelot, ITE QED-4N-S01B, Flaga Please note that this does not completely synchronise the 2.5 kernel tree with MTD CVS. XFS: Rework dev_t and linux inode handling This is a two fold change, first it moves the translation between linux dev_t and kdev_t up the call stack in xfs and makes the bulk of xfs work in terms of its on disk dev_t format. It also cleans up a few related chunks of code. The other part of the change reworks how we keep the linux inode contents and the xfs inode fields in sync. A number of places where we resynced the two have been removed, these were basically replicating work elsewhere in the filesystem. We now also ensure that the inode fields are filled in before calling unlock_new_inode - there used to be a window. Finally all the code which hooks together the linux inode and the xfs inode is brought together as a more coherent whole rather than being cattered around the inode create path. Most calls to revalidate the linux inode from the xfs inode are removed. Modid: 2.5.x-xfs:slinx:128899a 10/02/02 XFS: fix xmount command in xfsidbg. Modid: 2.5.x-xfs:slinx:128998a XFS: Get xfs debug module back in sync with current pagebuf flags. Modid: 2.5.x-xfs:slinx:129049a XFS: fix parsing of extents by debug code Modid: 2.5.x-xfs:slinx:129079a XFS: fix 2.5 specific code for small block size filesystems, there was a Modid: 2.5.x-xfs:slinx:129109a XFS: Add missing newlines to cmn_err messages. Modid: 2.5.x-xfs:slinx:129117a XFS: add some tracing calls in the read/write path Modid: 2.5.x-xfs:slinx:129126a XFS: simplify the xfs flush and flushinvalidate calls down the what Modid: 2.5.x-xfs:slinx:129128a XFS: Rearrange how xfs deals with read-only mounts vs. read-only devices. Modid: 2.5.x-xfs:slinx:129120a XFS: Fix sysctl values, add PB_CLEAR_OWNER debugging line Modid: 2.5.x-xfs:slinx:129132a XFS: Check rtdev as well when testing for read-only devices Modid: 2.5.x-xfs:slinx:129155a XFS: Export xfs_bmbt_get_all for the last fix in xfsidbg.c Modid: 2.5.x-xfs:slinx:129160a XFS: Remove unused pagebuf flags Modid: 2.5.x-xfs:slinx:129235a XFS: Sysctl updates Symlinks are created by default with mode 777 now, old behavior is still accessible through sysctl through. Irixsgid mount option eprecated and it too is still accessible through sysctl. Modid: 2.5.x-xfs:slinx:129282a XFS: Remove leftovers of long-dead iocore methods Modid: 2.5.x-xfs:slinx:129234a XFS: Remove struct pm entirely - it was never defined in the Linux port. Modid: 2.5.x-xfs:slinx:129236a XFS: Don't update i_rdev and i_generation in vn_revalidate. Modid: 2.5.x-xfs:slinx:129315a XFS: ensure inode size is correct after making a symlink. Modid: 2.5.x-xfs:slinx:129340a XFS: Global search and replace of the b* memory routines to their mem* equivalents. Modid: 2.5.x-xfs:slinx:129466a XFS: remove a no-longer-used conditional macro. Modid: 2.5.x-xfs:slinx:129574a XFS: Re-sync pagebuf flags in xfsidbg (missed last time...) Modid: 2.5.x-xfs:slinx:129660a XFS: bring the 32 bit inode flag back into line with the Irix version. Modid: 2.5.x-xfs:slinx:128653a XFS: remove some bit shifting constants we do not use Modid: 2.5.x-xfs:slinx:128887a XFS: remove some 'temporary debugging code' (has been there a couple of years at least) Modid: 2.5.x-xfs:slinx:128918a XFS: Switch to native endian internal representation for extents Switch xfs from using a big endian internal representation for the in memory copy of extents to a host byte order representation. The internal extents are read in once, then modified seperately from the on disk ones. Since we search and manipulate the extents multiple times, it is cheaper to convert them to host byte order once and then keep them in that format. Worth about 5 to 10% reduction in cpu time for some loads. Complicated by the fact that the in memory extents are written out to the log sometimes, and when expanding extents are used to write out the initial block of extents. Modid: 2.5.x-xfs:slinx:129646a XFS: remove debug print statements Modid: 2.5.x-xfs:slinx:129722a XFS: merge strategy and bmap calls, they are two aspects of the same operation Modid: 2.5.x-xfs:slinx:129728a XFS: fix some off by one errors in the busy list search code The errors were benevolent, we flushed the log more than we needed to. Modid: 2.5.x-xfs:slinx:129745a XFS: Clean up xfs' log message printing Modid: 2.5.x-xfs:slinx:129771a XFS: More XFS debug-related fixes Modid: 2.5.x-xfs:slinx:129773a XFS: Fix a couple of nasty log problems When a transaction crosses multiple iclogs, the async transaction code needs to force the log up until the last iclog. We need to record this lsn in the transaction so we can do a log flush on it. Secondly, there was a sleep/wakeup pair between flushing the log and log write completions which was a) incorrect, and b) no longer needed. This could result in early wakeups of threads waiting for log flushes. Modid: 2.5.x-xfs:slinx:129778a XFS: Revert VMAP() to the old IRIX prototype Modid: 2.5.x-xfs:slinx:129878a XFS: Switch from iget_locked to ilookup in vn_get We only want to get the inode if it actually is present in core. The new ilookup function allows us to do this easily instead of having to tear down the wrongly allocated inode again if it wasn't in memory. Modid: 2.5.x-xfs:slinx:129883a ALSA update - ioctl32 - added missing backslashes Fixed the non-SMP build. Fixed a bug caused by moving the location of the include of the arch and os Makefiles. Fixed some locking bugs spotted by Oleg Drokin. JFS: return code from sb_bread was incorrectly checked [PATCH] alpha fixes Whee! __stxncpy works now. The patch also fixes OSF1-compatibe readv/writev. Ivan. Block layer ioctl cleanups. Rename old "block_ioctl()" function: it's "scsi_cmd_ioctl()", as that is what the function does. Rename the whole file "scsi_ioctl.c" ALSA update - fixed compilation of ioctl32 from David S. Miller Remove unused variable warning Remove ide-cd reliance on "struct packet_struct", make it use the native "struct request" fields instead. Simplify and clean up sense data handling. This makes IDE CD-RW burning possible without ide-scsi.c Oops, fix over-eager search-and-replace. ALSA update - fixed returned structure in ctl_read/write [PATCH] early allocation of ->part allocation of ->part[] moved to alloc_disk(); alloc_disk() got an argument (number of minors expected). Freeing is in put_disk(). [PATCH] disk->minor_shift cleanup new field - disk->minors (1 << disk->minor_shift). Almost all uses of ->minor_shift had that form and thus had been replaced. [PATCH] device_register() splitup new driverfs helpers - device_initialize/device_add and device_del. The latter is device_unregister() sans the final put_device(). The former is splitup of device_register() into initialization and insertion into tree. [PATCH] block ioctl cleanup guts of blkpg.c and blkdev_ioctl() sanitized up and moved into a new file - drivers/block/ioctl.c. blkpg.c is gone. [PATCH] preparation to use of driverfs refcounts, part 1 - partitions * update_partition() split into add_partition() and delete_partition(). * all updating of ->part[] is switched to these two (including initial filling/final cleaning). * per-partition devices are allocated on-demand and never reused. We allocate struct device in add_partition() and put reference to it into hd_struct. ->release() for that struct device frees it. delete_partition() removes reference from hd_struct and does put_device() on it. Basically, we get rid of problems with reused struct device by never reusing them... At that point devices for partitions are nice and sane. [PATCH] preparation to use of driverfs refcounts, part 2 - disk * disk->disk_dev is initialized in alloc_disk(), device_add()'d in add_disk(), device_del()'d in unregister_disk() and device_put() in put_disk(). * devices of partitions are made its children. * attributes of disk one: dev (dev_t of the thing), range (number of minors) and size (in sectors). * attributes of partition ones: dev (ditto), start (in sectors) and size (in sectors). * disk devices are put on a new bus - "block" * if caller of add_disk() had set disk->driverfs_dev, we set symlinks: "device" from disk to underlying device and "block" from underlying device to disk. * ->release() of disk_dev frees disk and disk->part. At that point we have sane driverfs subtree for each gendisk and refcount of its root (disk->disk_dev) can act as gendisk refcount. [PATCH] refcounts for gendisks Finally. We use disk->dev.refcount as a gendisk refcount. New helper - get_disk(): atomic_inc on refcount. get_gendisk() does it on return, callers of get_gendisk() do put_disk() when they are done. [PATCH] bdev->bd_disk introduced There we go - now we can put a reference to gendisk into block_device. Which we do in do_open(). Most of the callers of get_gendisk() are simply using bdev->bd_disk now (and most of the put_disk() calls introduced on previous step disappear). We also put that pointer into struct request - ->rq_disk. That allows to get rid of disk_index() kludges in md.c (we simply count relevant IO in the struct gendisk fields) and kill the export of get_gendisk(). Notice that by now we can move _all_ IO counters into gendisk. That will kill a bunch of per-major arrays and more importantly, allow to merge sard in clean way. FWIW, we probably could show them as disk/partitions attributes in driverfs... [PATCH] bunch of ->open() killed. Quite a few drivers don't need ->open() anymore - all it did was checking that minor is good (== gendisk exists). That is handled by generic code now... [PATCH] oprofile - hooks This implements the simple hooks we need to catch unmappings, and to make sure no stale task_struct*'s are ever used by the main oprofile core mechanism. If disabled, it compiles to nothing. [PATCH] oprofile - dcookies This implements the persistent path-to-dcookies mapping, and adds a system call for the user-space profiler to look up the profile data, so it can tag profiles to specific binaries. [PATCH] oprofile - timer hook 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 [PATCH] oprofile - NMI hook This provides a simple api to let oprofile hook into the NMI interrupt for the perfctr profiler. [PATCH] oprofile - MSR defines Add the MSR defines oprofile uses [PATCH] oprofile - core Add the oprofile core. The core design is very similar to that we discussed in private mail. The nasty details should be documented in the patch below. [PATCH] oprofile - i386 driver Finally, add the i386 timer-interrupt and perfctr drivers for i386 [PATCH] oprofile - dcookies need to use u32 Make dcookies use a stable size regardless of whether we're on a 32-bit or 64-bit platform. [PATCH] futex-2.5.42-A2 This is my current futex patchset against BK-curr. It mostly includes must-have crash/correctness fixes from Martin Wirth, tested and reworked somewhat by myself: - crash fix: futex_close did not detach from the vcache. Detach cleanups. (Martin Wirth) - memory leak fix: forgotten put_page() in a rare path in __pin_page(). (Martin Wirth) - crash fix: do not do any quickcheck in unqueue_me(). (Martin, me) - correctness fix: the fastpath in __pin_page() now handles reserved pages the same way get_user_pages() does. (Martin Wirth) - queueing improvement: __attach_vcache() now uses list_add_tail() to avoid the reversal of the futex queue if a COW happens. (Martin Wirth) - simplified alignment check in sys_futex. (Martin Wirth) - comment fix: make it clear how the vcache hash quickcheck works. (me) [PATCH] SCSI tape door lock and reset fixes - switch to using scsi_ioctl() for drive door locking and unlocking instead of private code - use a driver internal flag to save the reset status until tape is positioned into known location - set driver state properly for all partitions after reset - change put_device() to driver_unregister() in st_detach() - C99 initializer changes (from Art Haas) [PATCH] another TCQ update More scsi TCQ updates, tweak to ServeRAID, tweak scsi_scan, make BusLogic use new method [PATCH] ips TCQ update ips.h: Since we now have proper tagged depth setting, make the cmd_per_lun value reasonable for untagged devices like it is suppossed to be. [PATCH] SCSI update drivers/scsi/esp.c: Fix the build. scsi.h: Add struct list_head items for future (but soon) use hosts.h: Remove select_queue_depths from host struct, add struct list stuff for proper list linking of host structs hosts.c: Don't touch select_queue_depths any longer [PATCH] Advansys TCQ update advansys.h: Update host template to include slave_attach advansys.c: Update to use slave_attach instead of select_queue_depths [PATCH] qla1280 TCQ update qla1280.h: Update device template qla1280.c: Update to use slave_attach for setting queue depth [PATCH] eata TCQ update eata.h: Update template eata.c: Add slave_attach and new TCQ method [PATCH] more driver updates (aacraid) linit.c: Update to use slave_attach [PATCH] more driver updates (aic7xxx) aic7xxx_linux_host.h: Update host template aic7xxx_linux.c: Update to new TCQ scheme [PATCH] dpt_i2o TCQ update This patch for dpt_i2o fixes TCQ stuff, but doesn't solve DMA mapping issues (so it still doesn't work, but it's not because of TCQ). Getting around to fixing DMA mapping API issues is much more work per driver than the TCQ stuff, so I'm putting it off until later. dpti.h: Update template dpt_i2o.c: Update to new TCQ scheme [PATCH] two driver updates, one core update Rename queue_depth to current_queue_depth so that: A) we represent the true purpose of the variable B) we catch anyone using it wrongly [PATCH] Forward port of 2.4 fsync_buffers_list() fix. there was a bug in fysnc_buffers_list() in 2.4 (fixed in 2.4.19) that could cause the function to return without having written the current contents of all the buffers. Obviously, this could be bad for anybody relying on ordering using O_SYNC or fsync(). If an I/O was already in flight for a particular bh at the time of the call to fsync_buffers_list(), ll_rw_block() will not initiate a new I/O even though the contents may have changed. It is therefore necessary to wait before the call. Here's a patch against 2.5.42 that applies the same fix. [PATCH] Compile failure (gcc 2.96 bug?). 2.5.42 raid0.c Yes it's a GCC optimiser bug. I'm surprised I didn't see it: I tried a whole heap of different compilers on that code, and had problems only on the earlier similar code in raid0_run(). I didn't try redhat's compilers (I run debian) but didn't expect the behaviour to be that different. Anyway, please apply this patch (which also fixes the chunk overlap problems). [PATCH] 2.5.42 Doc/kernel-parameters Updates/corrects Documentation/kernel-parameters.txt file. [PATCH] bttv driver compile fix It is just a missing include, fixed thus.. [PATCH] C99 designated initializers for arch/sh [PATCH] A basic NFSv4 client for 2.5.x Clean up nfs_fill_super(). Separate the parsing of the nfs_mount_data struct and the initialization + sanity checking of the resulting super_block. The latter is now performed in the new function nfs_sb_init(). [PATCH] A basic NFSv4 client for 2.5.x Further cleanups Separate the static and dynamic filesystem data retrieval calls as per the NFSv3 spec. This also simplifies things for NFSv4, since many of the attributes in the fsinfo+fstat combined call are not mandatory to implement. [PATCH] A basic NFSv4 client for 2.5.x Define the new NFSv4 data structure for passing user information from the 'mount' program in nfs4_mount.h. If CONFIG_NFS_V4 is defined Add code to parse the mount structure into the superblock. Declare the NFSv4 filesystem to the VFS. [PATCH] A basic NFSv4 client for 2.5.x Now that all the hooks are in place, this large patch imports all of the new code for the NFSv4 client. nfs4proc.c - procedure vectors nfs4xdr.c - XDR nfs4state.c - state bookkeeping (very minimal for now) nfs4renewd.c - a daemon (implemented as an rpc_task) to keep state from expiring on the server Note: The RPCSEC_GSS authentication code is not yet included here. For the moment we make do with AUTH_UNIX aka. AUTH_SYS. Neither is the code to do upcalls to userland in order to do uid/gid <-> name mappings. Instead, stubs have been added to translate everything to 'nobody:nobody' == '-2:-2' [PATCH] A basic NFSv4 client for 2.5.x This patch defines a new switch in fs/Config.in - CONFIG_NFS_V4: enables nfsv4 client [PATCH] Summit: config options and hooks This just adds the config option for summit, and it's Config.help entry, puts the hooks for the new mach_apic.h subarch file into the right places, and creates empty shells of the header files. [PATCH] Summit: infrastructure This puts the DFR (desination format register) value into a #define, and calculates the LDR (logical desitination register) correctly dependant on platform. Similarly for TARGET_CPUS. [PATCH] Summit: APIC limits This one sets up the apic broadcast id (the maximum allowable apic address) properly for whichever platform. It also abstracts out check_apicid_used, because that check doesn't work on Summit. Oh, and I bumped up MAX_IO_APICS, but only for NUMA x86 platforms. [PATCH] Summit: MPS table detection Adds detection for summit machines from the MPS tables. Prints a handy-dandy debug message telling you what kind of twisted machine the kernel thinks you have. [PATCH] Summit: APIC ID mapping Adds a raw_phys_apicid array that maps from the mps cpu number to the apicid - this is needed because the apicids for Summit can be larger than 32, and thus won't fit into the bitmap. Also adds little wrappers to map neatly between the two. Bumps up MAX_APICS for Summit. [PATCH] Read-Copy Update infrastructure 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. [PATCH] Small PCMCIA patch Someone adding tests for failed kmalloc's (which is fine in itself) did so in a way that would leave some PCMCIA data structures in inconsistent states... and also introduced a fatal bug affecting PCMCIA memory cards even when there are no kmalloc failures. [PATCH] AFS filesystem (1/2) This adds RxRPC support to Linux for use by the AFS filesystem [PATCH] AFS filesystem 2/2 Here's a patch to add an Andrew File System (AFS) driver to the kernel. Currently it only provides read-only, uncached, non-automounted and unsecured support. Linux v2.5.43