Summary of changes from v2.5.69 to v2.5.70 ============================================ [PATCH] PCI Hotplug: cpqphp 66/100/133MHz PCI-X support After being put on hold for a while (needed fixes to CCISS driver, etc) I attached a patch that adds pci-x support to the cpqphp driver in 2.5.65. Changes: Adds 66/100/133MHz PCI-X support. Adds support for dynamically chaning frequency and mode. Changes code to also blink the power LED when powering down. Uses the IRQ from PCI config space if the ROM resource table doesn't provide one (would previously use the same interrupt as the hotplug controller which would lead to bad things when trying to update routing tables). Dan Zink should have the credit for this fix. Changes find_slot() to cpqhp_find_slot(). Uses sysfs to display speed/freq. Some documentation updates. [PATCH] patch: remove unnecessary proc stuff from controller struct [PATCH] PCI Hotplug: kernel-api docbook fix for now non-existant PCI hotplug Here is a trivial documentation fix for some of recent PCI hotplug changes that enables 'make htmldocs' to complete. Forward port of 2.4 ppc64 signal changes. Forward port of 2.4 ppc64 /proc/ppc64/systemcfg changes Catch illegal FP use within the kernel since it can cause data integrity errors in userland code. fix cpuid to physical id needed in 2.5 Need to turn on RI immediately after we get control from firmware as well as when secondary cpus are started. ppc64: add autofs ioctl and clean up a prototype ppc64: xics cleanup add #ifdef CONFIG_XMON around a XMON variable reference ppc64: clean up some cpu feature checks ppc64: add spinlock to chrp_progress ppc64: fix NR_syscalls slip up ppc64: fix for recent module changes [SCTP] Optimize SACK generation. Wanted to try out profiling, so brought up oprofile. Very suprising result of sctp_tsnmap_find_gap_ack() being one of the hot functions. This should not be! Short-circuit by not even calling if !has_gap. ppc64: return ENOSYS for unknown IPC call ppc64: restore hex progress code ppc64: Fix for outside of range sensor states, from John Rose [SCTP] Use Crypto API Rip out our own HMAC-SHA1 and replace with crypto API. Can now choose hmac-sha1, hmac-md5, or none with regards to what HMAC to use for cookie echo verification. [SCTP] Add wrappers for sctp with no crypto support. Change the callback argument for aic brace option parsing to u_long to avoid casting problems with different architectures. Aic79xx Driver Update (version 1.3.6) o Correct bus hang on SE->LVD/LVD->SE tranceiver changes o Close a race condition in handling bad scsi status that could allow the driver to modify the waiting for selection queue while selections were enabled. o Perform an audit on use of del_timer() and switch to del_timer_sync() where appropriate. o Remove the reboot notifier hook which is unused in 2.5.X. o Correct some driver unload bugs. Aic7xxx Driver Update (version 6.2.32) o Perform an audit on use of del_timer() and switch to del_timer_sync() where appropriate. o Remove the reboot notifier hook which is unused in 2.5.X. o Correct some driver unload bugs. [SCTP] Various code cleanup. More typedef removals and naming consistency. Remove sctp_association_t, sctp_endpoint_t, & sctp_endpoint_common_t. ppc64: segment misses from userspace must pass through do_page_fault ia64: Fix typos/whitespace related to serial code. [SCTP] Enable SctpChecksumErrors stat Aic79xx Driver Update o Correct failed-wait recovery code so that the controller's registers will not be accessed without pausing the controller first. [SCTP] Add a generic csum_copy for sctp. Do the sctp checksum while copying. [SCTP] short-circuit reassembly & ordering for best case. Short circuit normal case. First check if the chunk belongs at the end of the queue. If so, don't bother walking the entire list, just just put at end. ia64: Patch by Alex Williamson: forward port of the 2.4 sba_iommu. ia64: Merge Alex Williamson's sba_iommu patch. Various small 2.5.67 fixes. ia64: Make sba_iommu get detected early enough again. ppc64: use panic_on_oops sysctl ppc64: use dma-window from deepest device tree node, from Dave Engebretsen [SCTP] getsockname()/getpeername() support for TCP-style sockets. [SCTP] Allow private to global association. The sctp scoping rules try to prevent accidentally sending non-routable addresses to a peer as alternate addresses. However, the current implementation is way too strict in that one can't even try to send from a private address to a global address (a pretty common real world setup with host behind NAT) even when that's the _only_ address available. If we find no addresses available, try looking for a private address to send with, as a fallback. Additionally, if we are sending with only a single address, don't bother embedding this address in the INIT/INIT-ACK chunk. [SCTP] Use GFP_ATOMIC, while we holding the local_addr_lock. [PATCH] ia64: fix GENERIC build This fixes a couple problems with the generic target in the latest 2.5.67 kernel. First is simply a fix for the addition of readX in the machvec. The second gets things to link in roughly the same order when using a generic vs zx1 flavor. With the current code, sba_init() is called in the right place when using a zx1 flavor kernel, but happens way too early on a generic kernel. [PATCH] ia64: small ACPI fix This fix is needed to boot on Intel-based machines. [SCTP] Fix ipv6 addressing bug. We are incorrectly using the rt6->rt6i_dst as our destination address, resulting in bogus dst address when requiring a gateway. ia64: Update platform INIT handler to print a backtrace. [PATCH] ia64: don't waste irq vectors This patch fixes waste of interrupt vector pool by not allocating an interrupt vector to a GSI which has no corresponding IO SAPIC. ia64: Export hp_acpi_csr_space() for modules. ia64: Consolidate backtrace printing in a single routine (ia64_do_show_stack()). ia64: Fix _raw_read_lock() to not switch text sections. Tidy it up with the help of ia64_fetchadd() macro. Ditto for _raw_read_unlock(). Driver model: doc updates. From Geert Uytterhoeven kobject: Add better debugging for failed registrations. From Steve Hemminger (shemminger@osdl.org) Device Driver Dynamic PCI Device IDs Provides a mechanism to pass new PCI device IDs to device drivers at runtime, rather than relying only on a static compiled-in list of supported IDs. For each driver which has a pci_driver->probe routine, two things are added: a probe_it file, and a dynamic_id directory. In the dynamic_id directory is a new file, new_id. /sys/bus/pci/drivers/e100 |-- dynamic_id | `-- new_id `-- probe_it One may read the new_id file, which by default returns: $ cat new_id echo vendor device subvendor subdevice class classmask where each field is a 32-bit value in ABCD (hex) format (no leading 0x). Pass only as many fields as you need to override the defaults below. Default vendor, device, subvendor, and subdevice fields are set to FFFFFFFF (PCI_ANY_ID). Default class and classmask fields are set to 0. One may write new PCI device IDs into the new_id file: echo "8086 1229" > new_id which will cause a new device ID (sysfs name 0) to be added to the driver. /sys/bus/pci/drivers/e100 |-- dynamic_id | |-- 0 | `-- new_id `-- probe_it $ cat 0 00008086 00001229 ffffffff ffffffff 00000000 00000000 One can then cause the driver to probe for devices again. echo 1 > probe_it Individual device drivers may override the behavior of the new_id file, for instance, if they need to also pass driver-specific information. Likewise, reading the individual dynamic ID files can be overridden by the driver. This also adds an existance test field to struct driver_attribute, necessary because we only want the probe_it file to appear iff struct pci_driver->probe is non-NULL. The device probing routines in pci-driver.c are enhanced to scan first the static list of IDs, then the dynamic list (if any). sysfs: Rewrite binary file handling. From Matthew Wilcox. - Remove sysfs_bin_buffer. It's a security hole. - Remove checks for permissions; the VFS does that. - Validate offset & count at the top level. - Allow lower levels to return less data than was asked for. - Allocate buffer at open & free it at close, not on each read/write. [SCTP] shutdown() support for TCP-style sockets. ia64: Patch by Arun Sharma: In brl_emu.c, a 64 bit value was being assigned to an int. [PATCH] ia64: make x86 shared programs work again > It looks like dynamic x86 binaries have a problem once again (or > still). If I try to run any shared x86 binaries, I get: > > $ ls.x86 > ls.x86: error while loading shared libraries: librt.so.1: cannot map zero-fill pages: Error 14 > > Would someone take a look? We saw this behavior with 2.5.59 also. The attached work around should take care of the problem temporarily. Last time this happened, IA-32 programs were doing mmaps, whose size was one page bigger than the size of the underlying file (even after rounding up the file size). I never got a chance to figure out why glibc was doing mmaps with the wrong size. Also, I failed to reproduce the problem with a more recent (RH 8.0) glibc. Which version of IA-32 glibc were you using ? [SCTP] More typedef removals. Continue typedef removal. Also, change sctp_chunk.num_times_sent counter to a resent flag. There was a rather obscure, unlikely, and in the end fairly benign bug sitting there if num_times_sent wrapped. However, there's no need to keep this counter, as its use was really just to know if we'd ever resent this chunk. [PATCH] ia64: sba_iommu workaround removal This removes a workaround for some broken firmware that was never released. [PATCH] ia64: sba_iommu vendor/function for unknown IOCs Include id when encountering unknown IOC. [PATCH] ia64: sba_iommu trivial cleanup This is mostly trivial whitespace and printk text tweaks. I did add the segment number to a printk that previously just had the bus. ppc64: chrp_progress() updates from Olof Johansson ppc64: ethtool -e support, from Olof Johansson [SCTP] Handle accept() of a CLOSED association. [SCTP] Track partially acked message for SEND_FAILED. For SEND_FAILED support, we need to keep around data chunk fragments that have been acked, where other fragments of the same message have not. With this, Ardelle should be able to finish up the SEND_FAILED support. [SCTP] Fix sctp_sendmsg error path when associate fails. [SCTP] Return a readable event when polling on a TCP-style listening socket with a non-empty accept queue. [SCTP] Add some macros to clean up code. sctp_state(asoc, STATE) // Is asoc in this state? sctp_style(sk, STYLE) // Is sock this style? sctp_sstate(sk, SS_STATE) // Is sock in this state? [SCTP] Add SCTP_MAXSEG sockopt. We'll fragment (if fragmentation not disabled) to the min of maxseg or PMTU allowance. [SCTP] Add SFR-CACC support. (Ardelle.Fan) Submitted by Ardelle Fan. Implementation of Split Fast Retransmit - Changeover Aware Congestion Control. Certain conditions involving multihoming changover can result in TCP-unfriendliness. This implements the IETF proposed method of dealing with this corner case. ppc64: update ppc64 to new IRQ API from Andrew Morton ppc64: fix some compile warnings, from Andrew Morton ppc64: Fix some things that got backed out in the systemcfg merge ppc64: Add loop_get_status64/loop_set_status64 [CPUFREQ] Fix powernow-k7 hang. Some laptops don't like jumping from (for eg) 800MHz->1200MHz, but will happily go from 800->1000->1200. The problem is caused by us changing the FID and the VID at the same time. The spec says we have to change them seperately. This actually buys us something extra anyway, as we can now set the FID lazily as well as the VID. [SCTP] Fix regression in mark_missing. (Ardelle.Fan) Followup patch by Ardelle. ppc64: Andrew Morton is picking on me Aic7xxx and Aic79xx driver Update o Avoid pre-2.5.X mid-layer deadlock due to SCSI malloc fragmentation For pre-2.5.X kernels, attempt to calculate a safe value for our S/G list length. In these kernels, the midlayer allocates an S/G array dynamically when a command is issued using SCSI malloc. This list, which is in an OS dependent format that must later be copied to our private S/G list, is sized to house just the number of segments needed for the current transfer. Since the code that sizes the SCSI malloc pool does not take into consideration fragmentation of the pool, executing transactions numbering just a fraction of our concurrent transaction limit with list lengths aproaching AH?_NSEG in length will quickly depleat the SCSI malloc pool of usable space. Unfortunately, the mid-layer does not properly handle this scsi malloc failure. In kernels prior to 2.4.20, should the device that experienced the malloc failure be idle and never have any new I/O initiated (block queue is not "kicked"), the process will hang indefinitely. In 2.4.20 and beyond, the disk experiencing the failure is marked as a "starved device", but this only helps if I/O is initiated to or completes on that HBA. If the failure was induced by another HBA, and no other I/O is pending on the HBA and no new transactions are queued, we are still succeptible to the hang. (Also note that many 2.4.X kernels do not properly lock the "some_device_starved" and "device_starved" fields calling into question their overall effectiveness). By sizing our S/G list to avoid SCSI malloc pool fragmentation, we will hopefully avoid this deadlock at least for configurations where our own HBAs are the only ones using the SCSI subsystem. Aic7xxx and Aic79xx Driver Update o Correct channel information in our /proc output. Aic7xxx and Aic79xx driver updates o Work around peculiarities in the scan_scsis routines that could, due to having duplicate devices on our host's device list, cause tagged queing to be disabled for devices added via /proc. Aic7xxx and Aic79xx driver updates o Remove extra complexity and code duplication in processing the completeq now that the completeq can be run while holding both the ah?_lock and the done_lock. Aic7xxx and Aic79xx driver Update o Fix style nits. Aic7xxx and Aic79xx Driver Updates o Correct type safty of option parsing logic o Make option toggling work correctly o Add "probe_eisa_vlb" as an alias for the "no_probe" option so that there is a clearly defined name associated with the command line feature that allows eisa_vlb probes to be enabled/disabled in the aic7xxx driver. o PCI parity error checking defaults to being enabled. Aic7xxx Driver Update o Auto disable PCI parity error reporting after 10 parity errors are observed. The user is given a loud warning message telling them that eiter a device plugged into their motherboard or their motherboard is not very healthy. Aic79xx Driver Update o Perform a few firmware optimizations o Correct the packetized status handler so that it can handle CRC errors during status data packets. ACPI: Update to 20030424 - Remove an unused parameter from lowlevel read/write functions - FADT initialization cleanups Aic79xx Driver Update o Correct "Unexpected PKT Busfree" error observed under high tag loads. Aic79xx Driver Update o Revert ahd_pause_and_flushwork() behavior so that ENSELO can be cleared. This makes ahd_pause_and_flushwork() more effective when the bus is hung. Aic79xx Driver Upate o Switch to handling bad SCSI status as a sequencer interrupt instead of having the kernel proccess these failures via the completion queue. This is done because: - The old scheme required us to pause the sequencer and clear critical sections for each SCB. It seems that these pause actions, if coincident with a sequencer FIFO interrupt, would result in a FIFO interrupt getting lost or directing to the wrong FIFO. This caused hangs when the driver was stressed under high "queue full" loads. - The completion code assumed that it was always called with the sequencer running. This may not be the case in timeout processing where completions occur manually via ahd_pause_and_flushwork(). - With this scheme, the extra expense of clearing critical sections is avoided since the sequencer will only self pause once all pending selections have cleared and it is not in a critical section. ppc64: remove numa_node_exists, from Martin Bligh aic7xxx_osm.h, aic7xxx_osm.c, aic79xx_osm.h, aic79xx_osm.c: Remove pre-2.2.X kernel support. ppc64: clear up the cpu<-> node mappings, and cache them, from Matt Dobson Aic79xx and Aic7xxx driver Update o Fix build on 2.5.X Aic7xxx and Aic79xx Driver Updates o Adapt to new IRQ handler declaration/behavior for 2.5.X [SCTP] Control chunk bundling. Control chunks should be bundled (implementor's guide advises specifically of case were ERROR should be bundled with CE to avoid race condition. Patch introduces a outq_cork/outq_uncork to immediate transferral of control chunks and then release to the packet bundling code. [AGPGART] Hammer GART can use generic enable routines now. [AGPGART] intel agp init cleanups. From Christoph Hellwig. (1) Kill the _setup functions - most of it can be nice, static structs - the few remainders are handled better elsewhere (2) _one_ big switch in ->probe assigning these tables. Almost 200 lOC gone and it's even readable :) [AGPGART] Remove unneeded enums from intel gart driver. [AGPGART] Remove unused ALi enums. [AGPGART] Remove stale comment [AGPGART] Fix typo in via-agp. s/PM400/P4M400/ [AGPGART] Remove useless enums from serverworks gart driver [AGPGART] Remove unneeded enums from AMD k7 gart driver [AGPGART] More setup routine -> static struct conversions. Again from Christoph Hellwig. [AGPGART] Replace enum users with own methods. By introducing a few extra functions, we can kill off a few extra members of the enum. More work from Christoph Hellwig. [AGPGART] Merge NVIDIA nForce / nForce2 AGP driver. Based upon code written by NVIDIA for agpgart 2.4, forward ported and cleaned up slightly by me. This still needs work, and is untested. [AGPGART] Makefile cleanups. - the makefile is not the right place to describe the driver - remove some junk [AGPGART] Remove unneeded settings of bridge->type. It's now done in the static structs. [AGPGART] Add symbolic constants for AGP mode setting. bye bye icky hardcoded values. [AGPGART] Add more defines to kill off hardcoded values [AGPGART] Don't configure agp bridges more than once if there is >1 of them. [AGPGART] use symbols instead of hardcoded values in generic-3.0 Lots more work to do here. [AGPGART] Convert several functions to return void. They only ever returned a single value. [AGPGART] Fall back to non-isochronous xfers if setting up isochronous xfers fails. [AGPGART] Fix typo that stopped nvidia GART driver being built [AGPGART] EXPORT_SYMBOL cleanups. Also move the global_cache_flush routine to generic.c [AGPGART] Move function description comments from headers to the code they document. [AGPGART] kdoc'ify some of the function header comments. [AGPGART] Move function prototypes to headers. [AGPGART] Misc backend source tidy up. [AGPGART] Remove semaphore abstraction. [AGPGART] i855PM support from Bill Nottingham. Mainly adding a PCI id, unfortunately, requires renaming the i855GM PCI ids to avoid name conflict. Also renames some of the i855GM constants from i855PM to i855GM. [AGPGART] Fix kconfig dependancies. - Don't show x86 GARTs on alpha [PATCH] i2c: fix oops on startup of it87 driver. [SCTP] sctp_sendmsg() updates for TCP-style sockets. [AGPGART] fix macros that expect agp_bridge in global scope From Christoph Hellwig [AGPGART] cleanup agp backend.c a bit More from Christoph. Most style nitpicks and a bit more explicitly passing struct agp_bridge_data around. [AGPGART] Nvidia GART cleanups. Christoph cleaned up a lot of the mess here. We're back to nearly killing off the chipset_type enum, moved the register definitions to the code that uses it, and given it a proper pci .remove function. [AGPGART] Add back dummy module exit to keep things happy. [AGPGART] don't dereference agp_bridge in generic-3.0.c Yet more from Christoph.. >If agp_3_0_node_enable gets a struct agp_bridge_data * all of the >generic-3.0.c can be cleaned up easily to never look at agp_bridge >directly. Now only backend.c, generic.c and the actual drivers >are left looking at it:) [AGPGART] give all agpgart drivers a ->remove pci method. You guessed it, yup. from Christoph again. [AGPGART] proper agp_bridge_driver. Christoph with the goods once more... >Okay, this does the converion for all drivers, it's ontop of my >previous patches. enum chipset_type has shrunk to NOT_SUPPORTED >and SUPPORTED, but I'd like to postpone killing it entirely >or replacing it by a bool - drm pokes into this and we need to >redo the agpgart <-> drm interface for support of multiple garts >anyway. [AGPGART] Fix Kconfig typo [AGPGART] Shrink chipset_type enum (compile fix) Missing part of hch's last cset. ppc64: remove iomem_resource.end hack Fix cifs_show_options to display mount options in a way that is more consistent with other filesystems [AGPGART] Fix linking error. [SCTP] Make fragmented messages know how to SEND_FAIL themselves. If a message were fragmented, it was getting SEND_FAILed in all sorts of random order or not at all. Now each "message" tracks its own fragments and can SEND_FAIL itself and all its fragments. [CPUFREQ] Acer Aspire's have broken PST tables in one BIOS rev. DMI blacklist it. [ARM] Miscellaneous minor fixes. - comment fixes - remove unnecessary asm/proc-fns.h include - fix buggy compiler version traps [SCTP] Free up data chunks that don't get accepted by primitive_SEND. Fix memory leak. [PATCH] Re: Make sym2 driver use pci_enable_device > The sym2 driver should use the generic pci_enable_device() and > pci_set_master() functions. Sorry, wrong patch. We need to read COMMAND after doing pci_enable_device/pci_set_master. We should also check the return valie of pci_enable_device. Anton ===== drivers/scsi/sym53c8xx_2/sym_glue.c 1.16 vs edited ===== [PATCH] split private and public scsi headers Two new headers: scsi_priv.h - for macros/declarations private to the scsi midlayer (= not EXPORT_SYMBOL()ed) scsi_logging.h - for SCSI_LOG_* and friends, semi-private to the midlayer and the upper drivers. One abuse of this in dpt_i2o killed. [PATCH] kill scsi_dump_status Is someone still using the echo dump > /proc/scsi/scsi feature? I think we should kill it as we're getting much nicer output from sysfs these days.. [PATCH] kill pcmcia driver bind_info horror Currenty pcmcia drivers do a loop on their devices for issuing a SCSI_IOCTL_GET_IDLUN ioctl from kernelspace and passing dev->type to userspace so cardmgr can guess the the dev_t and find the device node of it. But it doesn't actually use it but only pass it as optional arguments to it's poor-man's hotplug scripts. So kill this horror of, we have proper hotplug scripts in 2.5. And here we go, the first big host->my_devices abuser is gone. [PATCH] use scsi_report_bus_reset() in scsi_erroc.c Currently scsi_error.c has two opencoded copies for scsi_report_bus_reset. Get rid of them. [PATCH] fix scsi_debug compile warning spin_lock_irqsave takes an unsigned long. [PATCH] remove dead struct scsi_device members ->scpnt_wait is initialized and cpqfc calls wake_up on it but no one ever waits for it, ->allow_revalidate is completly unused. [PATCH] remove dead scsi_cmnd members ->reset_chain is initialized by the midlayer only used in BusLogic's old EH code (which is never called and thus can be #if 0'ed out until someone with the hardware updates it to new EH), ->done_late is never used. [PATCH] scsi_requeuest_fn Okay, when doing some other stuff I looked over this one, and it's a bit confusing to read: - using a goto completed where a simple break would be sufficient - using for (;;) for a perfectly fine while loop - ... but what's more interesting is that the spinlock handling in here, when we switch from sdev_lock/queue_lock to host_lock we do a spin_unlock_irq followed by a spin_lock_irqsave - but we we just enabled interrupts so the save isn't nessecary at all, even more we can just do spin_unlock/spin_lock when keeping them disabled. Also we drop host_lock in the middle of this function, just to reacquire it a tad later in scsi_dispatch_cmd, but fixing that need a bit more thinking as there's another caller for scsi_dispatch_cmd. [PATCH] move max_sectors intitalization fully to scsi_register Addresses the fixme in scsi_alloc_queue. [PATCH] set data direction in sd_synchronize_cache in sd.c Hi, the following patch sets the data direction in sd_synchronize_cache to SCSI_DATA_NONE. Otherwise the data direction would be SCSI_DATA_UNKNOWN, which is at least a problem for the zfcp lldd, since it expects a value differently from unknown. Please apply, thanks. Heiko [PATCH] Re: unchecked_isa_dma on sparcv9 On Tue, Apr 29, 2003 at 12:15:11AM -0700, David S. Miller wrote: > The only thing host->unchecked_isa_dma = 1 does is to add a __GFP_DMA > flag to certain memory allocations, but IIRC __GFP_DMA is a noop on > sparcv9. So what is this supposed to do? > > It's bogus, delete it. James, could you please apply the following patch? [PATCH] blk SCSI_IOCTL_SEND_COMMAND While playing with RH9.0 and 2.5.68 I found that scsi_unique_id (called from devlabel) oopsed on a regular basis during bootup. This patch addresses flakiness in sense buffer handling (in the failure case a disk didn't support VPD page 0x83). Compile fix for scsi_syms.c I had to add an include of scsi_logging.h to compile with logging configured: [PATCH] i2c: i2c-keywest.c irq handler type This patch changes the interrupt handler routine in i2c-keywest.c to return an irqreturn_t. i2c: fix up the MAINTAINERS i2c entry Removed the dead web page and email address, and merged with the sensors entry and added myself. [PATCH] nuke some superflous externs No idea why those were ever added to scsi.c and scsi_syms.c, they're properly declared in the headers. [SCTP] Initialize missing ipv4 fields of a AF_INET6 accept socket. [SCTP] SO_LINGER socket option for TCP-style sockets. [Bluetooth] Compile fix for URB_ZERO_PACKET This patch fixes the compile problem with URB_ZERO_PACKET. [AGPGART] Add some debugging printk's. Based on Linus' earlier patch. [CPUFREQ] Remove not needed ;'s from macro definitions. [AGPGART] Bulletproofing. NULL ptrs after freeing them. ppc64: ioctl32 updates [AGPGART] Remove duplicate code in i810/i830 alloc_by_type functions. [AGPGART] Fix incorrect type warning. [AGPGART] Move debugging macros to header so they can be used in other parts of agpgart. [AGPGART] more kconfig cleanups - Alphabetical order of items. - Fixup the IOMMU dependancy problem (Roman Zippel) - Word all options similarly (Add 'chipset' to some descriptions) - Remove unused CONFIG_AGP_GART - Fix up incomplete alpha tristate [SCTP] Add sinfo_timetolive support. sinfo_timetolive lets the application specify 'timed reliability' for a message. That is, the message really only has a use to the peer up to this timeout. Without PR-SCTP, we can throw away such timed out messages if we haven't yet assigned TSN/SSNs to them. If we have, there is nothing we can do until we support PR-SCTP extension. [PATCH] update NCR_D700 for new-style probing Pretty big patch and untested due to lack of hardware, so handle it with care :) Fix NCR_D700 driver This should complete the hch conversion to the new style probing. Tested and works fine. Aic79xx Driver Update (version 1.3.8) o Correct a few BE processor bugs o Print an additional diagnostic during recovery processing Update Aic79xx and Aic7xxx Documenation Aic7xxx Driver Update (6.2.33) o Correct MODULE_INFO string. o Bump version number. [PATCH] USB: replace kdev_t with int in usb_interface structure, as only drivers with the USB major use it. [AGPGART] Kill off some typedefs. Note, I'm leaving behind the ones not in #ifdef __KERNEL__ for now, as I'm not sure just what userspace stuff that might break. [AGPGART] missing %p in debug printk [AGPGART] Turn on debugging printks for a while. Lets see if we can't track down some of the stranger reports. Also fix up the macro not to printk some ': ' it doesnt need to. ppc64: rework fast SLB miss handler castout code ppc64: firmware flash fix from Olof Johansson Cset exclude: linux-usb@gemeinhardt.info|ChangeSet|20030429230539|30870 [PATCH] USB: vicam: fix bugs in writing to proc files that were found by the CHECKER project [PATCH] USB: more unusual_devs.h changes I've modified James Courtier-Dutton description from Optio 430 => Optio 2/3/400 since it applies to Optio 330 and possible 230 too. Attached are the patch that was tried with Pentax Optio S and Optio 330 RS. I've talked to Pete Zaitcev and he said I should be using CB instead since more devices liked that better... so I leave that to you! [PATCH] USB: ehci i/o watchdog This patch adds a new "I/O watchdog" role to the existing timer code, and cleans it up a bit. If you want to run EHCI without IRQs, it's now simple: disable them, and tweak the timer appropriately. The patch should help with these reported problems. (a) Bulk I/O sometimes seems to stop progressing. Not trouble in itself, but usb-storage and scsi could wedge deeply because of bugs in their fault recovery; and then the problems could break khubd and rmmod... (b) Some periodic transfers need to be "jumpstarted". Usually seen with a high speed hub. [PATCH] Update mesh.c and mac53c94.c drivers This patch updates the mesh and mac53c94 SCSI host bus adaptor drivers so that their interrupt routines return an irqreturn_t. Please apply. Thanks, Paul. [PATCH] fix aci7xxx locking problem > On Thu, May 01, 2003 at 04:28:12PM -0600, Justin T. Gibbs wrote: >> Folks, >> >> I've just uploaded version 1.3.8 of the aic79xx driver and version >> 6.2.33 of the aic7xxx driver. Both are available for 2.4.X and >> 2.5.X kernels in either bk send format or as a tarball from here: >> >> http://people.FreeBSD.org/~gibbs/linux/SRC/ > > Hi Justin, > > I've just tested it and I still have the deadlock on SMP. I also tried with > noapic, but it didn't change. I have reduced the TCQ from 253 to 32, and I > had the impression that it was more difficult to trigger, although I cannot > be certain. With 32, I could boot and go to about half the 'make -j 8 dep', > while it hanged during init script with 253. I may retest by the week-end, but > now I'm going to sleep. Now I'm back to 6.2.28 and everything's OK. Can you try with this patch? It seems I forgot to pull part of a change from the aic79xx driver into the aic7xxx driver. This could easily cause a lock order reversal. [PATCH] remove scsi_device proc printing from drivers A bunch of drivers contain loops over host->my_devices in their proc_info method just to printout info we already get from sysfs. Kill those, the ones that actually add additional information from their private data need to get sysfs attributes for the fist. BTW, does someone have opintions on reading of /proc/scsi/scsi? It's just a duplication of the sysfs tree so it should probably go away also. OTOH there's a slightly higher chance on userland actually using this than for the LLDDs.. Aic7xxx Driver Update o Fix Aic7xxx driver locking in the AHC_SCSI_HAS_HOST_LOCK == 0 case. Aic7xxx and Aic79xx Driver Updates o Misc compiler error and code cleanups. Aic7xxx and Aic79xx Driver Update o Build with -Werror [SCTP] Use prepare_to_wait()/finish_wait() interfaces. [AGPGART] Intel I875P support. From Matt Tolentino. o ipx headers: Coding Style code reformatting [NET]: Use dump_stack in neigh_destroy. [NET]: Fix typo in previous neighbour.c change. [DECNET]: Add netfilter subdir for decnet and add the routing grabulator. [PPP]: Rest of compression module changes, oops. [ATM]: mpc.c warning fixes. [NETFILTER IPV6]: Fix warnings. [AGPGART] Disable debugging printk's again. With the 'AGP bug' solved, we don't need this noise for a while... o list.h: implement list_for_each_entry_safe o ipx: convert ipx_interface handling to use list_head [SCTP] Use put_user() in get_peer_addr_params (reported by yjf@standford.edu) Standford Checker reported direct touch of user space. [AGPGART] Skip devices with no AGP headers sooner. Shrink dynids feature set Per recommendation from GregKH: Remove directory 'dynamic_id' Remove exporting dynamic_id/0 files Remove probe_it driver attribute Move new_id into driver directory as a driver attribute. Make it probe when new IDs are added. Move attribute existance test into pci-driver.c completely. [AGPGART] Store agp revision in agp_bridge struct. There are a few places we do spec revision compliance checks, this cset generalises that function, and removes some duplicated functionality. [AGPGART] Work around AMD 8151 errata. Some revisions incorrectly report they support v3.5 of the AGP spec, when they are actually only 3.0 compliant. [PATCH] USB: kill the last occurances of usb_serial_get_by_minor I got an error at the final linking of 2.5.68-bk11. It seems the patch below is needed. [PATCH] USB: Big endian RTL8150 The RTL8150 USB Ethernet driver doesn't work on big endian machines. Here are patches (for both 2.4.x and 2.5.x) to fix that. The fix was tested on the 2.4.20 and 2.4.21-rc1 version of the driver on big endian MIPS. Changes: - Fix endianness of rx_creg (from Dimitri Torfs ) - Kill unused last parameter of async_set_registers() [PATCH] USB speedtouch fix Missing header file. Please apply. [PATCH] USB: unusual_devs.h patch PCI dynids - documentation fixes, id_table NULL check [PATCH] move all host templates into .c files Oookay - I really got upset by that tmeplates in headers crap when grepping for certain methods. The patch below moves all templates from the headers into the actual implementation files and removes the ifdef mess for unmaintained drivers - for maintained support gazillion kernel releases drivers like gdth I've kept them. This means a driver works fine without any problems for all modular builds and builtin kernel >= 2.4.0. If you want certain drivers to work with 2.0/2.2 statyic builds too I can hack something up for you, but I'd prefer not supporting stuff like that anymore. Tested by compiling all drivers with make -k and not getting more warnings than before :) [PATCH] USB: UNUSUAL_DEV for aiptek pocketcam Here is the unusual_dev entry i'm using to get my digital camera. diff -cr linux/drivers/usb/storage/unusual_devs.h linux_vaxvms/drivers/usb/storage/unusual_devs.h *** linux/drivers/usb/storage/unusual_devs.h 2003-03-14 21:32:46.000000000 +0100 [PATCH] scsi host sysfs support again [1/4] -andmike -- Michael Anderson andmike@us.ibm.com DESC This patch removes the shost_devclass device class support that was previously added, but incomplete. EDESC drivers/acorn/scsi/acornscsi.c | 1 - drivers/acorn/scsi/arxescsi.c | 1 - drivers/acorn/scsi/cumana_1.c | 1 - drivers/acorn/scsi/cumana_2.c | 1 - drivers/acorn/scsi/eesox.c | 1 - drivers/acorn/scsi/oak.c | 1 - drivers/acorn/scsi/powertec.c | 1 - drivers/scsi/scsi_sysfs.c | 23 ----------------------- 8 files changed, 30 deletions(-) [PATCH] scsi host sysfs support again [2/4] -andmike -- Michael Anderson andmike@us.ibm.com DESC This patch changes the structure of sdebug_host_info and changes the method / order of driver model cleanup. EDESC drivers/scsi/scsi_debug.c | 215 ++++++++++++++++++++++++---------------------- drivers/scsi/scsi_debug.h | 2 2 files changed, 115 insertions(+), 102 deletions(-) [PATCH] scsi host sysfs support again [3/4] -andmike -- Michael Anderson andmike@us.ibm.com DESC Change scsi host to class device model. Change scsi host and scsi device to release when ref count goes to zero. EDESC drivers/scsi/hosts.c | 23 +++++------------------ drivers/scsi/hosts.h | 20 ++++++++++++++------ drivers/scsi/scsi_scan.c | 4 +--- 3 files changed, 20 insertions(+), 27 deletions(-) [PATCH] scsi host sysfs support again [4/4] -andmike -- Michael Anderson andmike@us.ibm.com DESC Change scsi sysfs to support scsi host class device and call release functions when ref count goes to zero. EDESC drivers/scsi/scsi_sysfs.c | 111 +++++++++++++++++++++++++++++++++++++++------- 1 files changed, 96 insertions(+), 15 deletions(-) pci.h whitespace cleanups [SCTP] Support SCTP ECN on ipv6. o ipx: convert ipx_route to use list_head [IPSEC]: Fix SADB_EALG_{3,}DESCBC values. [ATM]: Fix some CPP pasting in ambassador driver. [ATM]: Fix excessive stack usage in iphase driver. [ATM]: svcs possible race with sigd. [FS]: Add seq_release_private and proc_net_fops_create helpers. [DECNET]: seq file conversions and fixes. o Removed blksize from decnet device parameters - use the device mtu like we ought to. o Removed /proc/net/decnet_route file - I don't think anybody ever used it and it was lacking a full enough description of the routes to be useful. ip -D route list is much better :-) o Added rt_local_src entry to decnet routes so that we get the local source address right when forwarding. o Added correct proto argument to struct flowi for routing o MSG_MORE in sendmsg (ignored, but accepted whereas before we'd error) o /proc/net/decnet converted to seq_file o /proc/net/decnet_dev converted to seq_file o /proc/net/decnet_cache converted to seq_file o Use pskb_may_pull() and add code to linearize skbs on the input path except for those containing data. o Fixed returned packet code (mostly - some left to do) o update_pmtu() method for decnet dst entries (ip_gre device assumes this method exists - well I think it does :-) o Fixed bug in forwarding to get IE bit set correctly o Fixed compile bugs with CONFIG_DECNET_ROUTE_FWMARK pointed out by Adrian Bunk o Fixed zero dest code to grab an address from loopback o Fixed local routes in dn_route_output_slow() o Fixed error case in dn_route_input/output_slow() pointed out by Rusty [NETFILTER]: Fix Module Usage in ipchains and ipfwadm. Gets rid of some warnings. Manipulating our own module count inside the sockopt is safe, because unregistering that sockopt will block. [NETFILTER]: Make NAT code handle non-linear skbs. Makes the NAT code and all NAT helpers handle non-linear skbs. Main trick is to introduce skb_ip_make_writable which handles all the decloning, linearizing, etc. [NETFILTER]: ip_nat_proto_{icmp,udp}.c need ip_nat_core.h [IPV6]: Kill spurious module_{get,put}(). [BLUETOOTH]: Fix hci_usb build. [IPV6]: Fix offset in ICMPV6_HDR_FIELD messages. [IPV^]: Use correct icmp6 type in ip6_pkt_discard. [SPARC64]: Only use power interrupt when button property exists. [ATM]: Fix foul up in lec driver. dynids: call driver_attach() when new IDs are added This causes the driver to create proper device symlinks in sysfs when new IDs are added and thus new devices found by the driver. drivers/base/bus.c make driver_attach non-static drivers/pci/pci-driver.c delete probe_each_pci_dev, call driver_attach instead. Whitespace cleanups. include/linux/device.h add declaration of driver_attach. ia64: Improve spinlock code to handle contention in shared routine called with a special convention. Various minor fixes for gcc-pre3.4. Add .release template method to scsi_debug.c Lost in the hch/andmike merge [IPV6]: Remove illogical bug check in fib6_del. [AGPGART] Only enable isochronous transfers on AGP3.5 chipsets. The standard says that 3.0 chipsets don't support these extensions. Move the isoch stuff out into isoch.c leaving behind a shell for basic AGP3.0 enabling (to be written). [AGPGART] Remove unneeded exports. These functions should only be called indirectly from agp_generic_enable() [PATCH] ia64: fix ia32 emulation of rlimit et al [PATCH] ia64: perfmon update Please apply the following patch on top of 2.5.6x. This patch does the following: - repair broken system-wide overflow notification - repair broken per-process notification - fix a problem in the resrved bitmask for opcode matcher8,9 for McKinley as reported by UIUC. - forcing of bit2 for pmc8/pmc9 now part of reserved bitmask - add the unsecure option to perfmon - update to perfmon 1.4 (similar to 2.4) [PATCH] ia64: spelling fixes ia64: Manual merge of Steve's spelling fixes. [PATCH] ia64: fix timer interrupts getting lost This patch fixes the issue of some CPUs not showing timer interrupts going off. Seems during the process of sync'ing the itc, we jumped over the next timer value. This patch is against 2.5.67 + ia64. I haven't seen the problem on 2.4, but a quick looks seems like it's potentially an issue there too. [PATCH] ia64: interrupt fixes/cleanup Here's some cleanups/fixes/changes for interrupts on 2.5.67 + ia64. Specifically: - Cleanup some ugliness with polarity/trigger setup. - Add iosapic_enable_intr() to set_rte on an interupt when the device is enabled. IMHO, we really only want to unmask RTEs for PRTs we might actually use. This moves the interrupt distribution here too. - When changing a vector from edge to level, call register_intr() to do it so all the data structures get set correctly. If we have to guess how to setup an interupt and get it wrong, this should close some holes in changing it back to the correct type. - Register the HCDP interrupt in 8250_hcdp - this is where we have to guess the polarity/trigger. The real handler will get fixed up via PCI setup or ACPI namespace serial support, this gets it associated w/ the port at setup. This should allow interrupts to work when using builtin UARTs as console on HP Itanium2 boxes. [PATCH] ia64: multi-ioport space support This has been in my 2.4 BK tree for a while, but I should have posted it in case there's feedback from other people working on large machines. So here it is, in four parts: 1 enhance __ia64_mk_io_addr(port) 2 enhance pcibios_scan_root to get multiple mem & io windows from ACPI _CRS, and fixup all the resources 3 add support for /proc/iomem and /proc/ioports 4 trivial (whitespace, copyright, and move pcibios_fixup_device_resources closer to related code) The current scheme is that IO ports are 64 bits, with the low 24 bits being the port number within an IO port space, and the upper bits identifying the space. There is currently a limit of 16 spaces. [PATCH] ia64: multi-ioport space support (part 2 of 4) enhance pcibios_scan_root to get multiple mem & io windows from ACPI _CRS, and fixup all the resources [PATCH] ia64: multi-ioport space support (part 3 of 4) add support for /proc/iomem and /proc/ioports [PATCH] ia64: multi-ioport space support (part 3 of 4) trivial (whitespace, copyright, and move pcibios_fixup_device_resources closer to related code) [PATCH] ia64: new IOC recognition This is a trivial patch that makes sba_iommu recognize a new IOC. Only change is that it will print IOC: sx1000 0.1 HPA 0xf8120002000 IOVA space 1024Mb at 0x80000000 instead of IOC: Unknown (103c:127c) 0.1 HPA 0xf8120002000 IOVA space 1024Mb at 0x80000000 [PATCH] ia64: vendor-specific ACPI resource cleanup This is to - handle _CRS with multiple vendor-specific resources - use acpi_walk_resources() instead of doing it by hand - make lookup of vendor resource by GUID generic - cleanup now-unused helper functions (This depends on the previous IO port space patches, because they removed the last of acpi_get_addr_space()). My hope is that acpi_vendor_resource_match() and acpi_find_vendor_resource() can someday move into ACPI, but that probably depends on getting the idea of labelling vendor resources with a GUID into the spec. HP does this and I think is working on putting it in the spec. [PATCH] ia64: fixes for semtimedop() ia32-compat handling Here are two fixes for the ia32-compatibility mode handling for the new semtimedop() system call for the ia64 architecture. The first problem was that treatment of user-mode calls to semtimedop() with a NULL 4th (struct timespec *) parameter was inconsistent with the behavior of the same executable on i386 and also with a natively compiled ia64 binary. A NULL 4th arg to semtimedop() should result in no timeout being used (like a straight semop() call) rather than in an EFAULT error. The second problem was that a legitimate semtimedop() with a timeout was also resulting in an EFAULT because the fetch of the internal timespec strucure by sys_semtimedop() from semtimedop32()'s kernel stack was treated as an invalid user-data reference. This requires temporarily switching the addressing limit with set_fs(), further requiring that appropriate parameter checking by performed prior to the switch. The const qualifier was removed from the (struct compat_timespec *) arg to semtimedop32() so that the call to get_compat_timespec() wouldn't generate a compilation warning. ia64: Manual merge of Bjorn Helgaas' sba_iommu patch to make it use seq_file. fix syntax error in ncr53c8xx from hch conversion fix missed conversion of to_scsi_host -> dev_to_shost in sim710 add missing asm/io.h to scsi/dc395x.c [PATCH] core dump psinfo.pr_sname letter fix This patch makes the state letter in the pr_sname field in core dumps correct for stopped and zombie threads. The order needed to be changed when the TASK_* values changed. This matches the letters used in sched.c:show_task. [PATCH] PCI Hotplug: fix up the compaq driver to work properly again. [PATCH] PCI Hotplug: fix up the ibm driver to work properly again. [PATCH] PCI Hotplug: fix compiler warning in ibm driver. [PATCH] PCI Hotplug: fix up the acpi driver to work properly again. [PATCH] PCI Hotplug: fix dependancies for CONFIG_HOTPLUG_PCI_ACPI Thanks to Adrian Bunk for pointing this out. PCI Hotplug: export the acpi_resource_to_address64 function, as the acpi pci hotplug driver needs it. mca.c: (show_min_state): Fix typo r11 -> r12. [PATCH] i2c #1/3: listify i2c core This is the first of tree patches for i2c. Trying to get the i2c cleanups finshed before 2.6.x, so we (hopefully) don't have a ever-changing i2c subsystem in 2.7.x again (which is very annonying for driver maintainance). Changes: * listify i2c-core, i.e. make it use instead of statically-sized arrays, removed lots of ugly code :) * added i2c_(get|put)_adapter, changed i2c-dev.c to use these functions instead maintaining is own adapter list. * killed the I2C_DF_DUMMY flag which had the strange semantics to make the i2c subsystem call driver->attach_adapter on detaches. Added a detach_adapter() callback instead. * some other minor cleanups along the way ... [PATCH] i2c #2/3: add i2c_clients_command Changes: * adds a i2c_clients_command() function to i2c-core which calls the ->command() callback of all clients attached to a adapter. * make bttv + saa7134 drivers use that function instead of mucking with the i2c_adapter struct themself. [PATCH] i2c #3/3: add class field to i2c_adapter This is the last of three patches for i2c. It introduces a new field to i2c_adapter which classifies the kind of hardware a i2c adapter belongs to (analog tv card / dvb card / smbus / gfx card ...). i2c chip drivers can use this infomation to decide whenever they want to look for hardware on that adapter or not. It doesn't make sense to probe for a tv tuner on a smbus for example ... [PATCH] i2c: fix compile error due to previous patches. [PATCH] i2c: it87 patch. More or less straight forward patch. Fix a typo in the comments at the top. Show all 9 voltage inputs. Show all 3 fan inputs. Allow you to select the temp sensor type from the sysfs interface, instead of just with the temp_type module option. (1 = diode, 2 = thermistor, 0 = disabled). I'm still trying to figure out the registers for PWM fan controller support. o net/socket: fix bug in sys_accept module_put() gets called twice on error. Once via the explicit module_put and the second via sock_release(). Also i think we should do a __module_get() with newsock's owner(although same as the original listening sock). [PATCH] synclink update - Add support for hardware version 2 (universal PCI) of synclink adapter - Use mod_timer() function [PATCH] n_hdlc update - Use C99 initializers [PATCH] ia64: fix sys32_select() [IPV4/IPV6]: Set owner field in family ops. [PATCH] USB: add usb class support for usb drivers that use the USB major This also consolodates the devfs calls for the USB drivers. [PATCH] USB: converted usblp over to new usb_register_dev() changes. [PATCH] USB: converted mdc800 over to new usb_register_dev() changes. [PATCH] USB: converted scanner over to new usb_register_dev() changes. [PATCH] USB: converted dabusb over to new usb_register_dev() changes. [PATCH] USB: converted auerswald over to new usb_register_dev() changes. [PATCH] USB: converted brlvger over to new usb_register_dev() changes. [PATCH] USB: converted rio500 over to new usb_register_dev() changes. [PATCH] USB: converted usblcd over to new usb_register_dev() changes. [PATCH] USB: converted usb-skeleton over to new usb_register_dev() changes. [PATCH] USB: remove #include from some drivers that do not need it. USB: converted hiddev over to new usb_register_dev() changes. [NET]: Spelling/typo fixes in rtnetlink.h [IPV6]: Convert /proc/net/rt6_stats to seq_file. [BRIDGE]: Change pkt_type to PACKET_HOST earlier. [IPV4]: Replace explicit dev->refcount bumps with dev_hold. [NET]: Remove duplicated alloc_skb debug check. [ATM]: Add Forerunner HE support. [ATM]: Forward port br2864 to 2.5.x [ATM]: Clip locking and more atmvcc cleanup. [IPV6]: Fix typos in ip6_fib.c [IPV6]: Use time_after() etc. for comparing jiffies. [TCP]: tcp_twkill leaves death row list in inconsistent state over tcp_timewait_kill. [ATM]: Fix build of HE driver. Decrement the nr_unstable page state after the COMMIT RPC call completes instead of before. This ensures that writeback WB_SYNC_ALL does wait on completion. Don't overreport the number of pages we wrote out. It is safer to underreport. Fix missing NFSv3 unstable write accounting in fs/fs-writeback.c and mm/page-writeback.c Fix typos in close-to-open cache consistency checking. Fix a TCP race: check whether or not the socket has been disconnected before we allow an RPC request to wait on a reply. Don't use an RPC child process when reconnecting to a TCP server. This is more efficient, and also fixes an existing deadlock situation in which the child could be waiting for an xprt_write_lock that was being held by the parent. Ensure that if we need to reconnect the socket, we also resend the entire RPC message Assorted TCP reconnection fixes. Temporarily raise the necessary CAP_NET_BIND_SERVICE capability if we need to bind the socket to a reserved port during a TCP reconnection. Check for CAP_NET_BIND_SERVICE at mount time. Add the sk->callback_lock spinlocks to the RPC socket callbacks in order to protect the socket from being released by one CPU while the other is in a soft interrupt. the recently-applied patch to fix the rpc_show_tasks() Oops is incomplete. this applies over 2.5.68 and should address all of the issues in rpc_show_tasks(). Ensure that Lockd and the NSM (statd) clients always use privileged ports. Remove the existing code to temporarily raise privileges in fs/lockd/host.c, and use the new code in net/sunrpc/xprt.c There should no longer be a need to temporarily change the fsuid. Remove this feature. UDP and TCP zero copy code for the NFS client. The main interest of this patch is to eliminate the use of xdr_kmap() and xdr_unmap() by replacing them with MSG_MORE. xdr_kmap() is deadlock-prone due to the fact that it has to kmap() several pages at the same time. o ipx: ipx_interfaces outlives struct sock/socket And thus have to do module refcounting... Whee. Fix ancient mailing address. [PATCH] USB: update my copyrights in a few locations. [ATM]: assorted atm patches [ATM] remove iovcnt from atm_skb skbs has (and has had for a while) scatter/gather support making the scatter gather in atm redundant. the current iovcnt schme really isnt being used anyway typically. the atm layer will need a little more work in the future to take advantage of the skb scatter/gather support. this patch removes the iovcnt dependencies and gets the check for non linear skbs right. [IPV4]: Use time_{before,after}() and proper jiffies types in route.c [IPV4]: Two minor errors in jiffies changes. [NET]: Kill more direct references to netdev->refcnt. [ACENIC]: Comment out netif_wake_queue from acenic watchdog. [PATCH] ips 2.5 driver update [1/4] irq return update This is the proper way to report if the interrupt was from a serveraid or not. David Jeffery ips.c | 29 ++++++++++++++++------------- ips.h | 6 +++++- 2 files changed, 21 insertions(+), 14 deletions(-) [PATCH] ips 2.5 driver update [2/4] missing kfree and static init s This patch adds a missing kfree on an error path and removes some cases where static variables were being explicitly initiated to 0. ips.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) [PATCH] ips 2.5 driver update [3/4]: misc cleanups This patch checks the return code of pci_set_dma_mask for a 32bit mask, adds a break to quiet some compilers, and adds some 2.4 compat. code. ips.c | 8 ++++++-- ips.h | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) [PATCH] ips 2.5 driver update [4/4]: use dev_printk Use the new dev_printk. Thanks go to Mike Christie who originally created this patch. ips.c | 135 +++++++++++++++++++++++++++--------------------------------------- ips.h | 5 ++ 2 files changed, 62 insertions(+), 78 deletions(-) [PATCH] remove scsi_slave_attach/scsi_slave_detach I added those two to factor out common code from the upper drivers a long time ago, but after Doug & Lubens nice work there's nothing left but incrementing/decrementing a counter in struct scsi_device that's never used except in the case were we not it must be NULL because we just walked the chain of drivers to detach every single one.. [PATCH] first batch of shost sysfs fixes (a) scsi_check_device_busy() is unused now, kill it. Btw, although I love to see this this really means we need to imply a scsi_set_device_offline (or even better scsi_set_host_offline) in scsi_remove_host now.. (b) make shost_class static to scsi_sysfs.c, with the new device model changes no LLDD needs this anymore (c) move private prototypes where they belong. BTW, Mike, did I miss something or will your changes make every driver converted to scsi_add_host & co OOPS on removal now? [PATCH] tc_zs tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] specialix tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] stallion tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] serial_tx3912 tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] sh-sci tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] ser_a2232 tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] serial167 tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] rocket tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] sgi/char/sgiserial tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] rio tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] riscom8 tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] pcxx tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] mxser tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] istallion tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] moxa tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] ip2main tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] isicom tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] esp tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] hvc_console tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] dz tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] cyclades tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] amiserial tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] macintosh/macserial tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] isdn/capi tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PATCH] vme_scc tty_driver add .owner field remove MOD_INC/DEC_USE_COUNT [PKT_SCHED]: Kill iovcnt reference from sch_atm.c TTY: add tty class support for all tty devices. TTY: changes based on tty_register_device() paramater change. TTY: remove usb-serial sysfs dev file as it is now redundant. Make lib/inflate.c look remotely like ANSI C, so that it can be properly checked with the rest of the kernel. Avoid using undefined preprocessor symbols: check CONFIG_MK7 with "defined()" rather than using it as a value. Update aacraid to last drop on 2.4 from Alan Cox Update aacraid from 2.4->2.5 semantics - stanford checker fixes (randy.dunlap) - updated io_request_lock to correct 2.5 lock - spelling fixes - torvalds daemonize changes - updated templates etc - update scsicmd-> to scsicmd->device-> for new command alloc code - update biosparam and add slave_configure - gendisk name changes - fix compile warnings [PATCH] New aacraid driver fixed. I have the new aacraid driver working on my system now. The patch is against the 2.5.66 updates that you gave me. I made the following changes: aachba.c aac_scsi_cmd() There was a race accessing the scsicmd pointer accessing the host_lock. I made a local pointer to the Scsi_Host so the spin_lock_irq after aac_read wouldn't panic. I think that sometimes the I/O would be done and the memory freed before returning invalidating the scsicmd pointer. I made the same change in aac_io_done in case scsi_done had freed the scsicmd memory before returning. comminit.c aac_alloc_comm() AdapterFibsVirtualAddress was set to the virtual address of base. I changed it to set it to the phys address. I compared this to code pointed to by matt domsch on the aacraid devel list on the 5th. Its aac_alloc_comm sets this variable to the phys address. This fixed the probelem where the entry->addr was bad. Another was to fix it I guess would be to leave this change alone and not try to convert the address in aac_command_normal. dpcsup.c aac_response_normal() Changed the bus_to_virt to the calculation we talked about last month. dpcsup.c aac_command_normal() Changed the bus_to_virt to the calculation. Use "__attribute__" consistently. Allow external checkers to overrid the "cond_syscall()" macro. Support a "checking" mode for kernel builds, that runs a user-supplied source checker on all C files before compiling them. I'll release the actual checker once I've cleaned it up a bit more (yay, all the copyright paperwork completed!) [PATCH] generic subarchitecture for ia32 From: Andi Kleen This patch adds an generic x86 subarchitecture. It is intended to provide an dynamic interface for APIC drivers. There are already three subarchitectures (bigsmp, summit, default) that only differ in how they drive the local APIC. A fourth - Unisys ES7000 - is scheduled to be merged soon. The subarchitecture concept separated this nicely, but it has the big drawback that they are compile time options. A Linux vendor cannot ship own binary kernel rpms for all of these machines. Runtime probing is needed instead. This patch adds a new "generic" subarchitecture that just acts as a dynamic switching layer for APIC drivers. It only tries to virtualize the APICs, no attempt is made to cover further incompatiblities. This means machines like the Visual Workstation, pc9800 or Voyager are not covered; but these are unlikely to be supported by binary distributions anyways. The generic arch reuses the existing interface in mach_ipi / mach_mpparse.h / mach_apic.h and just pulls it using some macros into an "struct genapic" object. The main APIC code does not recognize it, it is all hidden in the mach-generic include files. Auto detection of APIC types is supported in the usual way used by existing ports like Summit - checking ACPI or mptables for specific signatures - or it can be specified by the user using a new "apic=" boot option. I also moved the DMI scan to before the generic subarchitecture probe, so DMI could be used in future too to probe specific machines. Some minor hacks were needed to avoid circular declaration of a few symbols, but overall it's fairly clean. The patch has been tested on a Summit machine, an generic 4 virtual CPUs Xeon and on an ES7000. [PATCH] Fix .altinstructions linking failures From: Andi Kleen Some configs didn't link anymore because they got references from .altinstructions to __exit functions. Fixing it at the linker level is not easily possible. This patch just discards .text.exit at runtime instead of link time to avoid this. It will also fix a related problem with .eh_frame in modern gcc (so far only observed on x86-64, but could happen on i386 too) [PATCH] cpia driver __exit fix From: Andi Kleen This driver was bogusly relying on the dropping of the __exit section at link time. cpia_exit() is calling proc_cpia_destroy(), which doesn't even exist if !CONFIG_MODULE. [PATCH] fix OSS opl3sa2 compilation From: Zwane Mwaikambo There was a 2.4 merge from Alan Cox, but a few #ifdef's got shuffled around in the process, resulting in a broken build for !CONFIG_PM [PATCH] misc fixes - ifdef fix in kmap_types.h (Oleg Drokin) - remove redundant ext3 inclusions (Burton Windle) - Fix misidentified warning printk in vmalloc.c - radeon_cp printk warning fix (Randy Dunlap) - Update minimum binutils version for the ".incbin" thing in vsyscall.S - update raw driver to recent module API. - update my email address [PATCH] mwave build fix From: Michael Buesch and Paul Schroeder. mwavedd.h needs and smapi.h [PATCH] drm timer initialisation fix The timer is being initialised too late (in ->open()). If modprobe fails we get an uninitialised timer warning. [PATCH] slab: initialisation cleanup and oops fix From: Manfred Spraul attached is the promised cleanup/bugfix patch for the slab bootstrap: - kmem_cache_init & kmem_cache_sizes_init merged into one function, called after mem_init(). It's impossible to bring slab to an operational state without working gfp, thus the early partial initialization is not necessary. - g_cpucache_up set to FULL at the end of kmem_cache_init instead of the module init call. This is a bugfix: slab was completely initialized, just the update of the state was missing. - some documentation for the bootstrap added. The minimal fix for the bug is a two-liner: move g_cpucache_up=FULL from cpucache_init to kmem_cache_sizes_init, but I want to get rid of kmem_cache_sizes_init, too. [PATCH] sysrq-S, sysrq-U cleanups From: Christoph Hellwig Change sysrq sync/remount from a magic bdflush hook to proper pdflush operations. The sync operation reuses most of the regular sys_sync path now instead of implementing it's own superblock walking and (broken) local disk detection, the remount implementation has been moved to super.c, cleaned up and updated for the last two years locking changes. It also shares some code with the regular remount path now. [PATCH] s/UPDATE_ATIME/update_atime/ cleanup From: Stewart Smith Remove the UPDATE_ATIME() macro, use update_atime() directly. [PATCH] irqreturn_t for drivers/net/pcmcia From: Zwane Mwaikambo update pcmcia drivers for new IRQ API [PATCH] keyboard.c Fix CONFIG_MAGIC_SYSRQ+PrintScreen From: Chris Heath This patch fixes the PrintScreen key when CONFIG_MAGIC_SYSRQ is enabled. It allows you to use that key normally when Alt is not being pressed. Patch is against kernel 2.5.68. [PATCH] Don't use devfs names in disk_name() From: Christoph Hellwig disk_name() (and hence bdevname()) are now returning devfs-style device names when devfs is enabled. This is nice, but these names are very long, and they overflow the 32-char buffers which these functions use. The choices are: a) Use a bigger buffer (increase BDEVNAME_SIZE). This might be practical. But how big? b) return the name in kmalloced memory, make caller free it up. Yuk. c) Add a print_bdevname() thing and intersperse that amongst the printk's. This would work. d) Just print the non-devfs device name. That's what this patch does. [PATCH] devfs: API changes From: Christoph Hellwig Some people may already have noticed that I've been revamping the devfs API recently. The worst offender still left is devfs_register, it's prototype is: devfs_handle_t devfs_register(devfs_handle_t dir, const char *name, unsigned int flags, unsigned int major, unsigned int minor, umode_t mode, void *ops, void *info) Of these: - dir and flags are always zero - the return value is never used - info is only used in one driver which doesn't even need it for operation - umode_t always describes a character device - name very often comes from a stack buffer we sprintf'ed into so obviously we really want a much simpler API instead. My first draft for this was: int devfs_mk_cdev(dev_t dev, umode_t mode, struct file_operations *fops, void *info, const char *fmt, ...) this removes the unused argumens, switches to a proper dev_t for the device number and allows to directly use a printf-like expression as name, getting rid of the temporary buffers. Now Al has reappeared and put the first steps of his CIDR for charater device on public ftp and we'll soon have a similar lookup object + fops mechanism in generic code as we already habe for blockdevices, i.e. the devfs code to assign fops from an entry will become superflous as generic code already does it. That means the fops and info arguments are obsolete before they were introduced, so I'd like to propose the following API instead: int devfs_mk_cdev(dev_t dev, umode_t mode, const char *fmt, ...) which is much nicer anyway. The educated reader will notice that this is exactly the same prototype devfs_mk_bdev has so I'll probably get suggestions to merge those two into some kind of devfs_mk_node soon. Personally I don't like that as character and blockdevices are two really separate entinities and I'll like to keep them as separate as possible. Example patch that introduces the API and converts drivers/input attached. Every driver which calls devfs_mk_cdev (about 50) needs conversion. Note that the transition can happen in pieces - devfs_register continues to work after this patch, it's just the plan to get rid of it in the end. [PATCH] remove partition_name() From: Christoph Hellwig partition_name() is a variant of __bdevname() that caches results and returns a pointrer to kmalloc()ed data instead of printing into a buffer. Due to it's caching it gets utterly confused when the name for a dev_t changes (can happen easily now with device mapper and probably in the future with dynamic dev_t users). It's only used by the raid code and most calls are through a wrapper, bdev_partition_name() which takes a struct block_device * that maybe be NULL. The patch below changes the bdev_partition_name() to call bdevname() if possible and the other calls where we really have nothing more than a dev_t to __bdevname. Btw, it would be nice if someone who knows the md code a bit better than me could remove bdev_partition_name() in favour of direct calls to bdevname() where possible - that would also get rid of the returns pointer to string on stack issue that this patch can't fix yet. [PATCH] switch most remaining drivers over to devfs_mk_bdev From: Christoph Hellwig This is a pretty huge patch, but splitting it doesn't make a lot of sense.. (USB may still need work) [PATCH] dvbdev fixes From: Monchi Abbad I found a mistake in the dvbdev.c file when creating the dvb /devfs files, it created /dev/dvb/adapter0device0 instead of /dev/dvb/adapter0/device0. But here is a simple fix. [PATCH] access_ok() race fix for 80386. From: Manfred Spraul Real 80386 cpus ignore the write protected bit in the page tables when running in supervisory mode. Thus the write protected bit must be checked by software. The current implementation does that check during access_ok(). This can result in data corruptions, if kswapd starts a swap-out between the access_ok and the actual write operation. To fix this, the patch moves the check from access_ok() into __copy_to_user_ll(), and redirects all user space writes into __copy_to_user_ll(). The patch only affects kernels build for 80386 cpus. Additionally, the patch removes the dead prototypes for __put_user_{1,2,4,8}. Due to the uninlining of access_ok, the .text segment is now ~ 8 kB shorter. [PATCH] hold i_sem on swapfiles If a swapfile is ftruncated while in use, subsequent swapout will scribble on the filesystem. This is a case of root-shoot-foot, but wrecking the fs is a fairly rude response. And it's easy to fix: hold i_sem across the life of the swapon. [PATCH] remove unnecessary PAE pgd set From: Dave Hansen , Bill Irwin With PAE on, there are only 4 PGD entries. The kernel ones never change, so there is no need to copy them when a vmalloc fault occurs. This was this was causing problems with the split pmd patches, but it is still correct for mainline. Tested with and without PAE. I ran it in a loop turning on and off 10 swap partitions, which is what excited the original bug. http://bugme.osdl.org/show_bug.cgi?id=640 [PATCH] account for slab reclaim in try_to_free_pages() try_to_free_pages() currently fails to notice that it successfully freed slab pages via shrink_slab(). So it can keep looping and eventually call out_of_memory(), even though there's a lot of memory now free. And even if it doesn't do that, it can free too much memory. The patch changes try_to_free_pages() so that it will notice freed slab pages and will return when enough memory has been freed via shrink_slab(). Many options were considered, but must of them were unacceptably inaccurate, intrusive or sleazy. I ended up putting the accounting into a stack-local structure which is pointed to by current->reclaim_state. One reason for this is that we can cleanly resurrect the current->local_pages pool by putting it into struct reclaim_state. (current->local_pages was removed because the per-cpu page pools in the page allocator largely duplicate its function. But it is still possible for interrupt-time allocations to steal just-freed pages, so we might want to put it back some time.) [PATCH] slab: additional debug checks From: Manfred Spraul below is the promised patch for better slab debugging, against 2.5.68-mm4: Changes: - enable redzoning and last user accounting even for large objects, if that doesn't waste too much memory - document why FORCED_DEBUG doesn't enable redzoning&last user accounting for some caches. - check the validity of the bufctl chains in a slab in __free_blocks. This detects double-free error for the caches without redzoning. [PATCH] reduced overheads in fget/fput From: Dipankar Sarma fget() shows up on profiles, especially on SMP. Dipankar's patch special-cases the situation wherein there are no sharers of current->files. In this situation we know that no other process can close this file, so it is not necessary to increment the file's refcount. It's ugly as sin, but makes a substantial difference. The test is dd if=/dev/zero of=foo bs=1 count=1M On 4CPU P3 xeon with 1MB L2 cache and 512MB ram: kernel sys time std-dev ------------ -------- ------- UP - vanilla 2.104 0.028 UP - file 1.867 0.019 SMP - vanilla 2.976 0.023 SMP - file 2.719 0.026 [PATCH] allow i8042 interrupt sharing Ed Tomlinson has a machine on which some other device grabs IRQ12 first, and the 8042 doesn't work. Enabling shared iRQs in the 8042 driver fixes it up. Alan has confirmed that this is OK. [PATCH] select() speedup From: Christoph Hellwig Originally by David Mosberger, testing by Roger Luethi. From the ia64 tree. Basically, it avoids going to memory all the time. What this does is make life a lot easier for gcc, so it can actually do a decent amount of optimization. The restructuring clearly is less important for out-of-order CPUs, but even there it gives some benefits. More specifically, the loop is now structured to operate one "unsigned long" at a time, rather than one bit at a time. Of course, you still need to process all the bits, but most of the relevant state in the inner loop can be kept in registers. Roger Luethi measured the routine on a bunch of different machines (mostly x86, IIRC: P5, P6, Crusoe, Athlons) and performance improved there, too (and it should definitely improve performance on any RISC-like architecture). Roger's benchmarking results (vs number of fd's): File TCP Numbfer of fd's: 10 250 500 10 250 500 UP, Pentium MMX 233MHz original 8.2 108.5 212.8 11.0 180.0 356.5 UP, Pentium MMX 233MHz w/patch 7.4 87.6 171.1 10.4 163.6 323.4 MP, Pentium MMX 233MHz original 15.7 283.8 562.8 18.9 354.4 705.5 MP, Pentium MMX 233MHz w/patch 14.6 255.6 506.5 17.8 332.8 664.1 UP, Athlon 1394 MHz original 1.3 13.4 26.1 1.9 24.7 48.6 UP, Athlon 1394 MHz w/patch 1.2 11.0 21.5 1.6 22.3 43.8 MP, Athlon 1394 MHz original 1.6 22.4 44.6 1.9 30.9 60.5 MP, Athlon 1394 MHz w/patch 1.5 21.2 41.7 1.9 30.2 59.6 [PATCH] Move security_d_instantiate hook calls From: Stephen Smalley This patch moves the security_d_instantiate hook calls in d_instantiate and d_splice_alias after the inode has been attached to the dentry. This change is necessary so that security modules can internally call the getxattr inode operation (which takes a dentry parameter) from this hook to obtain the inode security label. [PATCH] ext3 xattr handler for security modules From: Stephen Smalley This patch against 2.5.68 implements an xattr handler for ext3 to support the use of extended attributes by security modules for storing file security labels. As per the earlier discussion of extended attributes for security modules, this handler uses a "security." prefix and allows for per-module attribute names. Security checking for userspace access to these attributes can be performed by the security module using the LSM hooks in fs/xattr.c, and the security module is free to internally use the inode operations without restriction for managing its security labels. Unlike the trusted namespace, these labels are used internally for access control purposes by the security modules, and controls over userspace access to them require finer granularity than capable() supports. [PATCH] ext2 xattr handler for security modules From: Stephen Smalley This patch against 2.5.68 implements an xattr handler for ext2 to support the use of extended attributes by security modules for storing file security labels. As per the earlier discussion of extended attributes for security modules, this handler uses a "security." prefix and allows for per-module attribute names. Security checking on userspace access to these attributes can be performed by the security module using the LSM hooks in fs/xattr.c, and the security module is free to internally use the inode operations without restriction for managing its security labels. Unlike the trusted namespace, these labels are used internally for access control purposes by the security module, and controls over userspace access to them require finer granularity than capable() supports. [PATCH] Change LSM hooks in setxattr From: Stephen Smalley This patch against 2.5.69 adds a security_inode_post_setxattr hook so that security modules can update the inode security structure after a successful setxattr, and it moves the existing security_inode_setxattr hook call after the taking the inode semaphore so that atomicity is provided for the security check and the update to the inode security structure. [PATCH] Work around include/linux/sunrpc/svc.h compilation From: Grzegorz Jaskiewicz gcc-2.94 fails to compile this code, alleging an invalid lvalue. An equivalent transformation fixes it up. TTY: fix up lost devfs_mk_cdev change. USB: change core to use devfs_mk_cdev() instead of devfs_register() USB: fix up compile error in tiglusb driver due to devfs_mk_cdev() changes. TTY: add lock to tty_dev_list, and handle tty names with more than one '/' Thanks to Al Viro for pointing out these problems. [ATM]: Kill stray ATM_PDU_OVHD reference in lec.c [IPSEC]: Fix ipcomp header handling in ipv4 IPCOMP. [PATCH] rationalize scsi_queue_next & friends (1) second arg to scsi_queue_next_request() is only ever non-NULL inside scsi_lib.c and only used in the first conditional inside that function - ripped out of scsi_queue_next_request() and put into a new helper scsi_requeue_command(). (2) Most remaining callers of are in the form scsi_put_command(cmd); scsi_queue_next_request(q, NULL); add a new helper, scsi_next_command() for them. (2b) many callers of that still contain a repeated codepath, namely everything from scsi_release_request except the final kfree. New helper __scsi_release_request() for those. (3) All remaining callers loop over the devices of a host and call scsi_queue_next_request() on them - new helper scsi_run_host_queues(). (4) scsi_queue_next_request() renamed to scsi_run_queue(), second arg is gone and it's static to scsi_lib.c now. [IPV6]: Remove incorrect comment in ip6_fib.c [SYSKONNECT]: /proc module handling fixup. [PKTGEN]: Module and dev cleanup. [DECNET]: Decnet not obeying netdev locking (from shemminger@osdl.org). [SLIP]: Move over to initcalls. [IPV4]: Fix expiration test in rt_check_expire. [NETFILTER]: Fix skb_checksum args in ip_nat_core.c [PATCH] USB Gadget API (1/6) This patch createss , the gadget API and inlined implementation. There's additional kerneldoc, which I won't submit at this time, available. [PATCH] Net2280 driver (2/6) This patch creates drivers/usb/gadget/net2280.[hc], providing a driver for NetChip's "Net2280 PCI USB 2.0 High Speed Peripheral Controller". It implements the API included in the first patch. The driver has behaved well with chiprev 0100 under stress tests with Gadget Zero and the ethernet model driver, and has passed sanity tests for chiprev 0110. [PATCH] USB "Gadget Zero" driver (3/6) This patch adds "Gadget Zero" (drivers/usb/gadget/zero.c). Gadget Zero is a simple gadget driver that's useful for testing controller drivers, and as an example to be used for clone/modify style development. This driver implements two configurations, and needs only two bulk endpoints (in addition to ep0) ... so pretty much any USB device controller should be usable with it in one configuration or another. It (optionally) supports high speed devices, and has passed the USB-IF "chapter 9" device model conformance tests. It's worth noticing the kinds of hardware differences that gadget drivers need to cope with. Endpoints differ, in ways that must be reflected various ways in descriptors. And sometimes chip errata cause interoperability problems; for example, an sa1100 can't change configurations after enumerating. [PATCH] USB Ethernet Gadget (4/6) This patch adds an "Ethernet Gadget" driver, implementing the CDC Ethernet model (drivers/usb/gadget/ether.c). It interops with the current CDC Ether drivers on Linux, both 2.4 (CDCEther, using Marcelo's latest) and 2.5 (cdc-ether with recent patches, or on 2.5.68 "usbnet") On a net2280, this has successfully streamed dozens of megabytes per second using "ttcp" (high speed, and using "usbnet" on the host side), for days at a time. And no problems using SSH/NFS/etc in lighter duty testing. It's possible this will need tweaking to cope with UDC bugs on Intel's pxa25x controllers, presenting itself as a non-CDC device. (I'm told altsettings are even more broken than originally specified to be.) [PATCH] USB Gadget string utility (5/6) This adds utility code that gadget drivers can use to manage string descriptors (drivers/usb/gadget/usbstring.c) in the common case that the ISO-8859/1 character set is in use. Both "Gadget Zero" and the Ethernet gadget code use this. [PATCH] kbuild/kbuild for USB Gadgets (6/6) This patch adds kconfig/kbuild support for the preceding code, so that an EXPERIMENTAL option appears in the USB part of the config menus. Once a USB device controller driver is configured (which just now means net2280, but sa11x0 and pxa25x options are just waiting for updates!), gadget driver options are also available. [PATCH] USB: gadget cleanup of #ifdefs > can you get rid of all of the #ifdef HAVE_DRIVER_MODEL stuff? Done. Now this code "knows" it's running in a 2.5 environment, and needs modifications to run on 2.4. I also changed the file modes in the module_parm() calls so the parameters will be writable when they eventually show up in sysfs; and fixed a typo. Compile-tested with and without DEBUG enabled. [PATCH] USB: gadget zero, loopback config fix If the host writes OUT packets using URB_ZERO_PACKET (or its analogue on other USB host systems), then the loopback configuration should set req->zero, to use that same transfer termination policy when it writes the response back IN to the host. [PATCH] USB gadget: net2280: dmachain off, zlp pio ok This patch has two small fixes for issues that people reported to me yesterday: - One of the out-of-tree drivers sees odd things happening when dma chaining is enabled. (The in-tree drivers seem fine with it.) So disable for now; it's easily enabled if needed. - Zero Length Packets (ZLPs): * Should now read/write ok with PIO. * On DMA endpoints, explicit ZLPs need PIO. Until they do, don't allow queuing zero length buffers onto DMA endpoints. Use the right CFLAGS for source checking. Fix grammar. [MPLS]: Add ethernet protocol numbers. [NETFILTER]: Fix icmp_reply_translation args. [MPLS]: Add MPLS support to PPP. [Bluetooth] Add required infrastructure for socket module refcounting. Initialize ->owner fields in Bluetooth protocols and drivers. [SKFDDI]: Use SET_MODULE_OWNER. [IPV6]: Pass route attributes all the way down. ia64: Patch from Asit K. Mallick: fix a few places where last_fph_cpu wasn't updated and one place in the sigreturn path where the fph-owner wasn't set. [IPSEC]: Use xfrm_state_put in pfkey_msg2xfrm_state. [ATM]: Make he driver code more palatable. [NETFILTER]: Fix ip_nat_core.c:manip_pkt return value checks. [DLCI]: Use module_init and fix ioctl handling. [NET]: Clean up socket filter compat handling. [AGPGART] Remove duplicate copying of ->chipset in agp_copy_info() [MAINTAINERS/CREDITS]: Add entries for USAGI hackers. [XFRM]: Make use of xfrm_state_hold(). [XFRM]: Use xfrm_pol_hold(). [NET]: Switch x25_asy over to initcalls. [XFRM]: Fix typos in xfrm_state_put() changes. [Bluetooth] Send the correct values in RPN response This patch fixes a bug in rfcomm_recv_rpn(), which do not set the correct values for xon_char, xoff_char and flow_ctrl. [Bluetooth] Handle priority bits in parameter negotiation The PN response have to return the same value for the priority bits as in the request. The priority value is now also stored in the rfcomm_dlc structure and the default value is 7. Make aic7xxx driver use ANSI prototypes. My checker tool refuses to touch K&R C. [Bluetooth] L2CAP config req/rsp fixes. We have to set continuation flag in config rsp if it was set in req. [PATCH] i2c: add i2c_adapter class support [PATCH] I2C: add more classes Add I2C classes for analog and digital cameras, and fix a typo. Annotate LDT system calls with user pointer annotations. Annotate x86 system calls with user pointer annotations. Fix mismatch between i387 user copy function declaration and definition. Annotate IPC system calls with user pointer annotations Annotate vm86_info as a pointer to user space. [PATCH] I2C: Another it87 patch. This is against my last. While the old code most definitely did /something/ to the register for setting the fan div, the 'what' is a more interesting question. To be honest I could not figure out what it was trying to do, because the way it was inserting values disagreed with not only the data sheet, but how it parsed the very same register. This corrects the issue, and allows one to properly control the divisor on all 3 fans, including the (much more limited) 3rd fan. [PATCH] I2C: Yet another it87 patch. Ok, after writing up something in the way of a perl script to make some sense of the data for voltages, and finding that there is no sense to make, I took a longer look at things. The it87 driver in 2.5.x is doing some, down right /odd/ math on the numbers for the in_input* readings, and the 2.4.x driver is doing something quite different. And while it might be possible to get sane numbers out of the 2.5.x driver, people /expect/ to get the numbers that they were getting from 2.4.x. So this patch puts things back to the simpler calculations done by the 2.4.x lm-sensors drivers, and my script confirms that the numbers come out right. [PATCH] I2C: And another it87 patch. Don't provide min/max for in8, which allowed one to scribble on registers one should not be messing with. (My fault, oops.) The setting of the temp high/low registers was off by one, not mine this time. While I was at it, I reordered a few other register accesses to be base 0 instead of base 1. The temp interface was slightly incorrect, degrees * 100 instead of degrees * 1000, also fixed. And lastly, when changing the fan count divisor, fix up the min setting to still be roughly the same. (Previously the meaning of the value in the register changed, but not the value itself, resulting in, undesired surprises.) [PATCH] i2c: register the i2c_adapter_driver so things link up properly in sysfs [PATCH] ia64: enable 1G hugepage size for Mckinley [PATCH] cpufreq class fix [PATCH] driver core: Add driver symlink to class devices in sysfs. Thanks to Mike Anderson for the idea for this. [PATCH] driver core: remove unneeded line in class code. Thanks to Jonathan Corbet for pointing this out. [Bluetooth] Detect and log error condition when first L2CAP fragment is too long. [PATCH] Fix potential runqueue deadlock send_sig_info() has been broken since 2.5.60. The function can be invoked from a the time interrupt (timer_interrpt -> do_timer -> update_process_times -> -> update_one_process -> ( do_process_times, do_it_prof, do_it_virt ) -> -> send_sig -> send_sig_info) but it uses spin_unlock_irq instead of the correct spin_unlock_irqrestore. This enables interrupts, and later scheduler_tick() locks runqueue (without disabling interrupts). And if we are unlucky, a new interrupt comes at this point. And if this interrupt tries to do wake_up() (like RTC interrupt does), we will deadlock on runqueue lock :-( The bug was introduced by signal-fixes-2.5.59-A4, which split the original send_sig_info into two functions, and in one branch it started using these unsafe spinlock variants (while the "group" variant uses irqsave/restore correctly). [Bluetooth] RFCOMM must wait for MSC exchange to complete before sending data. [AGPGART] death of generic-3.0.c = folded into generic.c [AGPGART] Add proper AGP3 initialisation routine. [AGPGART] Make sure we don't poke reserved bits when enabling agp v3 [AGPGART] Add missing #defines from last checkin. [AGPGART] Use symbolic defines for isoch registers in isoch code. [AGPGART] CodingStyle nitpicks for isoch.c ia64: Prepare for GCC v3.4. Sync with 2.5.69. ia64: Patch by John Marvin: Add virtual mem-map support. [TCP]: NULL out newsk->owner in tcp_create_openreq_child(). [SCTP]: Fix missing Kconfig dependency. [IPV4/IPV6]: inetsw using RCU. [IPV6]: Convert /proc/net/raw6 to seq_file. [AGPGART] Make the agp 3.5 use the agp3 code for enabling, leaving just the isoch stuff in isoch.c [PATCH] sd.c spinup code can go into a wild loop This problem was reported against 2.4 by Eddie.Williams@SteelEye.com There's a problem in the sd spinup code in that if the unit returns NOT READY, we begin to spin it up, but thereafter if it returns anything other than NOT READY or success, the while loop in the spinup code will be executed *without* the 1s delay that's in the NOT READY case. The problem was seen with a real device: Compaq multi-path storage arrays return NOT READY to probes down inactive paths, but when the start unit is sent to activate the path, they can then respond back with error conditions. The fix is to terminate the while loop for any unexpected return. [PATCH] some warning fixes [PATCH] fix the aacraid merge a bit more [PATCH] scsi_report_device_reset aic7xxx/79xx wants a variant of scsi_report_bus_reset that operates only on a single device. Implement it to get rid of shost->my_devices traversals in drivers. (and move both to scsi_error.c) [PATCH] scsi_host sysfs updates scsi-misc-2.5 [1/2] -andmike -- Michael Anderson andmike@us.ibm.com DESC scsi_debug cleanups for scsi-misc-2.5 - Remove release function. - Remove scsi_debug wrapper driver register / unregister functions. - Douglas's target == this_id fix. - Remove some old cleanups that where incorrect. - Move code back into sdebug_driver_remove. EDESC drivers/scsi/scsi_debug.c | 78 ++++++++++++++-------------------------------- drivers/scsi/scsi_debug.h | 1 2 files changed, 25 insertions(+), 54 deletions(-) [PATCH] scsi_host sysfs updates scsi-misc-2.5 [2/2] Here is an update of the patch with the externs in scsi_priv.h -andmike -- Michael Anderson andmike@us.ibm.com DESC scsi shost sysfs cleanups for scsi-misc-2.5 - Add LLDD short name to scsi_host struct device. - scsi_host_release now calls scsi_free_shost. - Switched from device_register / device_unregister and class_register / class_register to initialize, add, del, put pairs. - Moved some function from scsi_register and scsi_unregister. - Filled in scsi_host_put and scsi_host_get. Rev 2 move externs to scsi_priv.h EDESC drivers/scsi/hosts.c | 33 ++++++++++++++++++++++++++++----- drivers/scsi/scsi_priv.h | 2 ++ drivers/scsi/scsi_sysfs.c | 19 +++++++++++-------- 3 files changed, 41 insertions(+), 13 deletions(-) [PATCH] consolidate devlist handling in a single file Currently it's spread all over the scsi midlayer but having this nicely separate out to a file of it's own without exposing the data structures sounds like a good idea. [ATM]: HE and IPHASE driver fixes. [NET]: Set file_operations->owner as appropriate. [VLAN]: vlanproc.c needs module.h [PATCH] bio_endio() increments bio->bi_sector increment bi_sector in bio_endio() so make_request_fn drivers don't have to do this accounting themselves. [PATCH] make MO drive work with ide-floppy/ide-cd Resend of the ide-cd buggy debug check removal. From der.eremit@email.de. [PATCH] shrink deadline hash size Limit deadline hash to 32 entries instead of 1024. This has been benched and profiled extensively and shows no increased system time. Also, move "hot" entries to the front of the list. [PATCH] dynamic request allocation This patch adds dynamic allocation of request structures. Right now we are reserving 256 requests per initialized queue, which adds up to quite a lot of memory for even a modest number of queues. For the quoted 4000 disk systems, it's a disaster. Instead, we mempool 4 requests per queue and put an upper limit on the number of requests that we will put in-flight as well. I've kept the 128 read/write max in-flight limit for now. It is trivial to experiement with larger queue sizes now, but I want to change one thing at the time (the truncate scenario doesn't look all that good with a huge number of requests, for instance). Patch has been in -mm for a while, I'm running it here against stock 2.5 as well. Additionally, it actually kills quite a bit of code as well [PATCH] Correct typo in linux/scsi/scsi.h and introduce new I notice we seem to have a typo in the SAM_ status codes (they say IMMEDIATE where they mean INTERMEDIATE). I've also introduced a new macro who's job is to return true if any of the possible good return codes is found. This means SAM_STAT_GOOD SAM_STAT_INTERMEDIATE SAM_STAT_INTERMEDIATE_CONDITION_MET and for now SAM_STAT_COMMAND_TERMINATED By and large, this is currently irrelevant to us, since we don't use linked commands and I've never met a device using COMMAND TERMINATED, but it may help us in the future. [PATCH] switch sb1000 to new style net init & pnp This cleans up the driver big time and gets rid of a big ugly wart in setup.c. Note that I don't have the hardware so this is only compile-tested. [PATCH] irq fixes for wavelan_cs/netwave_cs This patch for 2.5.68-bk11 will fix the irq handler of some obsolete wireless drivers (wavelan, wavelan_cs and netwave_cs) plus assorted fixes. All those drivers have been tested on a SMP box. [PATCH] Wireless Extension 16 This patch for 2.5.68-bk11 will update Wireless Extension to version 16 : o increase bitrate and frequency number for 802.11g/802.11a o enhanced iwspy support o minor tweaks and cleanups This patch is only for the core of WE. The patches for the individual drivers have been sent to their respective maintainers. Compared to the previous version I sent you a few weeks ago, I've just updated to the latest kernel. [PATCH] WE-16 for Wavelan ISA driver This update the Wavelan ISA driver for Wireless Extension 16 (going with my previous patch). [PATCH] WE-16 for Wavelan Pcmcia driver This patch update the Wavelan Pcmcia driver for Wireless Extensions 16, and also remove all the backward compatibility cruft that is broken anyway. [PATCH] Update mac ethernet drivers This patch updates the bmac and mace ethernet drivers so that their interrupt routines return an irqreturn_t, and updates the bmac driver to use a spinlock rather than global cli/sti. [PATCH] better ali1563 integrated ethernet support it turns out the tulip driver is a much better driver for the integrated ali1563 ethernet than the dmfe driver... the dmfe driver gets tx timeouts every ~15s and can't receive over 5MB/s. but with the small tulip patch below i'm seeing 11MB/s+ in both directions without problems. [PATCH] depca update (was Re: [Patch] DMA mapping API for Alpha) this patch has been sleeping in Alan tree for quite some time. It updates the depca driver to the EISA/sysfs API, gets rid of check_region, and properly reserve memory region. Patch is against latest BK. [bk] add useful tip to bk kernel howto Kudos to Wayne Scott @ BitMover for this. [PATCH] restore sysenter MSRs at APM resume This changes apm.c to invoke suspend.c's save and restore processor state procedures around suspends, which fixes the SYSENTER MSR problem. The patch also decouples sysenter.c from SOFTWARE_SUSPEND: the variables used (only!) in suspend_asm.S are moved there, and the include file now declares the procedures called from apm.c (previously they were only called from suspend_asm.S). [PATCH] fix lost IDE interrupt problem Alan and I were investigating this, but we don't know why the problem occurs. This reverts the previous handling of masked_irq, and fixes the problem. Fix thinko introduced into include/scsi/scsi.h SAM_STAT_* are return codes, not bitmaps [ALPHA] Fix titan_intr_nop for 2.5 irq api changes. [IPV4/IPV6]; Missing schedule_net() in inet{,6}_del_protocol. [NETFILTER]: Fix stale skb data pointer usage in ipv4 NAT. [AGPGART] add checks to agp_copy_info() before dereferencing. Spotted by Andi Kleen with AGPless IOMMU setup. [IPV6]: Missing sk->family check in UDPv6 multicast handling. Bartlomiej says: 'Please revert this patch, it is unfinished.' We'll do it *after* IDE taskfile IO is done Cset exclude: axboe@suse.de|ChangeSet|20030511184946|49736 [PATCH] more kbuild tweaks] This fixes a typo reported by Geert, and more significantly fixes static linking so that it works even when only the device side of USB is enabled, and the host side (CONFIG_USB) isn't. [PATCH] Fix big-endian USB gadget build Initializers must be constant expressions, and thus we can't use the complex expression "cpu_to_le*()" - the end result of which may have a constant _value_ but the expression itself isn't a constant expression. So use the explicitly constant "__constant_cpu_to_*()" expression instead. [netdrvr] remaining irqreturn_t changes [NETFILTER]: Move ip_fw declarations into header file. [SPARC]: Fix shadowing of global max_pfn, kill BOOTMEM_DEBUG. [SPARC]: Allow esp to use highmem_io on sparc32. [SPARC]: New compact show_regs format. [PATCH] two more templates in headers I missed aic7xxx_old and cciss_scsi. For the first it's the trivial move, for the second it's the patch to move to scsi_add_host & friend as already ACKed by Steve when he still was cciss maintainer. [PATCH] Fix ioperm bitmap This makes sure that the ioperm bitmap in the TSS is correctly set up during the first ioperm() call. Without this the TSS bitmap contains random garbage until the next context switch. ACPI: kobject fix (Greg KH) Here's a small patch that fixes the logic of the kobject creation and registration in the acpi code (since we use kobject_init(), we need to use kobject_add(), not kobject_register() to add the kobject to the kernel systems). ACPI: Allow ":" in OS override string (Ducrot Bruno) ACPI: Interpreter update to 20030509 Changed the subsystem initialization sequence to hold off installation of address space handlers until the hardware has been initialized and the system has entered ACPI mode. This is because the installation of space handlers can cause _REG methods to be run. Previously, the _REG methods could potentially be run before ACPI mode was enabled. Fixed some memory leak issues related to address space handler and notify handler installation. There were some problems with the reference count mechanism caused by the fact that the handler objects are shared across several namespace objects. Fixed a reported problem where reference counts within the namespace were not properly updated when named objects created by method execution were deleted. Fixed a reported problem where multiple SSDTs caused a deletion issue during subsystem termination. Restructured the table data structures to simplify the linked lists and the related code. Fixed a problem where the table ID associated with secondary tables (SSDTs) was not being propagated into the namespace objects created by those tables. This would only present a problem for tables that are unloaded at run-time, however. Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE type as the length parameter (instead of UINT32). Solved a long-standing problem where an ALREADY_EXISTS error appears on various systems. This problem could happen when there are multiple PCI_Config operation regions under a single PCI root bus. This doesnt happen very frequently, but there are some systems that do this in the ASL. Fixed a reported problem where the internal DeleteNode function was incorrectly handling the case where a namespace node was the first in the parents child list, and had additional peers (not the only child, but first in the list of children.) [DRM] Intel i8xx DRM modules are dependant on their AGP counterparts. Closes bugzilla #646 Use '#ifdef' to test for CONFIG_xxx variables, instead of depending on undefined preprocessor symbols evaluating to zero. Make smpboot.c look like ANSI C with proper function declarations. Add user pointer annotations. Use '#ifdef' to test for CONFIG_xxx variables, instead of depending on undefined preprocessor symbols evaluating to zero. Make panic.c use proper function prototypes. Add user pointer annotations to core sysctl files. [BRIDGE]: Bridge timer performance enhancement. [NET]: Network packet type using RCU. * packet type converted from linked list to list_macro * writer lock replaced with spin lock, readers use RCU * add __dev_remove_pack for callers that cant sleep. * af_packet changes to handle and sleeping requirements, and possible races that could cause. [BRLOCK]: Kill big reader locks, no longer used. [IPV4/IPV6]: synchronize_kernel --> synchronize_net. [BRLOCK]: Kill stray brlock.h references in sparc/sparc64 headers. [IPSEC]: Implement proper IPIP tunnel handling for IPcomp. [CRYPTO]: Fix config dependencies. [IPV4]: Introduce ip6_append_data. Add user pointer annotations to socket, file IO and signal handling. This pointed out a bug in x86 sys_rt_sigreturn(), btw. [PATCH] Add ia64 relocation types to elf.h and clean up There is a _lot_ of stuff in linux/elf.h that shouldn't be there. This moves the arch-specific stuff in linux/elf.h into the corresponding asm header files. [IPV6]: Fix two bugs in ip6_append_data changes. - Export ip_generic_getfrag - In udp6 increment v6 udp statistics not v4 one kobject: Update Documentation From Geert Uytterhoeven. [NET]: wireless.c needs module.h [NETFILTER]: ip_ct_gather_frags no longer needs to linearize. [PKT_SCHED]: sch_ingress.c does not need to linearize SKBs. [PCMCIA] Add per-socket thread to process socket events. Add a per-socket kernel thread, which is responsible for processing insertion, removal, battery status and ready status changes. We also add a semaphore to prevent multiple threads trying to change the socket suspend/present state. This will allows us to eliminate the per-socket work queues, and will allow us to handle the card insertion without resources cleanly. [PATCH] scsi_host sysfs updates fix release behaviour Fix scsi sysfs init so that a scsi_unregister can be called anytime after a scsi_register. - Create scsi_sysfs_init_host function and call from scsi_register. drivers/scsi/hosts.c | 4 ++-- drivers/scsi/scsi_priv.h | 1 + drivers/scsi/scsi_sysfs.c | 25 ++++++++++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) Fix use after free in scsi_host_put put_device will call release and free the host structure (which contains both the generic device and the host class). We must do the class_device_put() *before* the put_device(). driver model: Set device's kset before calling kobject_add(). Suggested by James Bottomley, and technically correct. We want the kset of the kobjects to be set before we call kobject_add() so we can access the kset's release method when the object is deleted. [ARM] Update a variety of ARM drivers to use irqreturn_t. Add user pointer annotations to mtrr driver. Fix do_utimes() user pointer annotations. Make sys_open() declaration match definition. Don't use undefined preprocessor symbols in expressions. o wanrouter: add missing include module.h [PATCH] Use '#ifdef' to test for CONFIG_xxx variables Don't depend on undefined preprocessor symbols evaluating to zero. [RXRPC]: Put file_operations THIS_OWNER in correct place. [NET]: nonet.c needs module.h [IPV4/IPV6]: Consolidate saddr resetting into inet_reset_saddr(). [XFRM]: Fix typo in __xfrm4_find_acq. [PATCH] more potentially undefined preprocessor symbols Here are three more fixes which I missed in the previous patch. Remove extraneous NO_MATCH Fix broken aic7xxx preprocessor conditional (that's not how C preprocessor expressions work, guys!) [PATCH] enable slab debugging for larger objects Some of the fancier slab debugging options are disabled for caches whose objects are larger than PAGE_SIZE/8, for speed/fragmentation reasons. But this patch turns up bugs in the size-2048 slab, so it was a bad idea. Enable the debugging for slabs up to 4096 bytes. [PATCH] Remove __verify_write leftovers From: Taral Looks like the recent access_ok fixes broke building of i386. __verify_write is still referenced in a couple places. [PATCH] hrtimers: fix timer_create(2) && SIGEV_NONE From: george anzinger - Fix the sig_notify filtering code for the timer_create system call to properly check for the signal number being small enought, but only if SIG_NONE is not specified. - Eliminate useless test of sig_notify. [PATCH] implement module_arch_cleanup() in all architectures From: Rusty Russell , David Mosberger The patch below updates the other platforms with module_arch_cleanup(). Also, I added more debug output to kernel/module.c since I found it useful to be able to see the final section layout. [PATCH] remove devfs_register From: Christoph Hellwig Whee! devfs_register isn't used anymore in the whole tree and with it some other devfs crap. Kill it for good. [PATCH] fix pnp_test_handler return It looks like I guessed wrong on this one. [PATCH] fat cluster search speedup From: Bjorn Stenberg OGAWA Hirofumi This simple patch makes the linux fat filesystem driver use the next_cluster field in the fat_boot_fsinfo structure. This field is a hint where to start looking for free clusters. Using this field makes a big difference for disks connected over slow links such as USB 1.1. Finding the first free cluster on a 40gig fat-formatted usb disk can today take several minutes. This patch cuts it down to a fraction of a second. Also, commit the next_cluster search hint toand from the superblock in write_super/fill_super. [PATCH] Fix for vma merging refcounting bug From: "Stephen C. Tweedie" When a new vma can be merged simultaneously with its two immediate neighbours in both directions, vma_merge() extends the predecessor vma and deletes the successor. However, if the vma maps a file, it fails to fput() when doing the delete, leaving the file's refcount inconsistent. [PATCH] Commented out printk causes change in program flow in From: Zwane Mwaikambo Commented out printk causes change in program flow in cpufreq/p4-clockmod.c [PATCH] small cleanup for __rmqueue From: Zwane Mwaikambo Removes an extra initialisation and general nitpicking. [PATCH] export cpufreq_driver to fix oops in proc interface From: Zwane Mwaikambo The proc interface has no way of telling wether there is an active cpufreq driver or not. This means that if you don't have a cpufreq supported processor, this will oops in various possible places. [PATCH] Quota write transaction size fix From: Jan Kara I'm sending a patch which changes numbers of blocks reserved for quota writes to more appropriate values (with current values ext3 asserts can be triggered). [PATCH] dquot_transfer() fix From: Jan Kara I'm sending a fix which fixes potential problems (dropping references which were not acquired) when dquot_transfer() fails. [PATCH] Bump module ref during init. From: Rusty Russell __module_get is theoretically allowed on module inside init, since we already hold an implicit reference. Currently this BUG()s: make the reference count explicit, which also simplifies delete path. Also cleans up unload path, such that it only drops semaphore when it's actually sleeping for rmmod --wait. [PATCH] exit_mmap() TASK_SIZE fix exit_mmap() currently assumes that the exitting task used virtual address span TASK_SIZE. But on some platforms, TASK_SIZE is variable, based on current->mm. But exit_mmap() can be called from (say) procfs's call to mmput. In which case current->mm has nothing to do with the mm which is being put in mmput(). So rather than assuming that the mm which is being put is current->mm, we need to calculate the virtual span of the mm. Add a new per-arch macro MM_VM_SIZE() for that. Some platforms can currently go BUG over this (where?). sparc64 is safe because our TASK_SIZE is constant. Platforms such as ia64 should stick the VM extent inside of mm_struct, I'd suggest adding it to mm_context_t. 1) TASK_SIZE means what is valid for mmap()'s in the processes address space 2) MM_VM_SIZE means where things might be mapped for a MM, including private implementation-specific areas created by the kernel which the user cannot access [PATCH] semop race fix From: Mingming Cao Basically, freeary() is called with the spinlock for that semaphore set hold. But after the semaphore set is removed from the ID array by calling sem_rmid(), there is no lock to protect the waiting queue for that semaphore set. So, if a waiter is woken up by a signal (not by the wakeup from freeary()), it will check the q->status and q->prev fields. At that moment, freeary() may not have a chance to update those fields yet. static void freeary (int id) { ....... sma = sem_rmid(id); ...... /* Wake up all pending processes and let them fail with EIDRM.*/ for (q = sma->sem_pending; q; q = q->next) { q->status = -EIDRM; q->prev = NULL; wake_up_process(q->sleeper); /* doesn't sleep */ } sem_unlock(sma); ...... } So I propose move sem_rmid() after the loop of waking up every waiters. That could gurantee that when the waiters are woke up, the updates for q->status and q->prev have already done. Similar thing in message queue case. The patch is attached below. Comments are very welcomed. I have tested this patch on 2.5.68 kernel with LTP tests, seems fine to me. Paul, could you test this on DOTS test again? Thanks! [PATCH] visws: fix penguin with sgi logo From: Andrey Panin attached patch fixes penguin with sgi framebuffer logo for visws subarch. It was broken in 2.5.68 IIRC. [PATCH] fix for clusterd io_apics From: Keith Mannthey The following is a patch to fix inconsistent use of the function set_ioapic_affinity. In the current kernel it is unclear as to weather the value being passed to the function is a cpu mask or valid apic id. In irq_affinity_write_proc the kernel passes on a cpu mask but the kirqd thread passes on logical apic ids. In flat apic mode this is not an issue because a cpu mask represents the apic value. However in clustered apic mode the cpu mask is very different from the logical apic id. This is an attempt to do the right thing for clustered apics. I clarify that the value being passed to set_ioapic_affinity is a cpu mask not a apicid. Set_ioapic_affinity will do the conversion to logical apic ids. Since many cpu masks don't map to valid apicids in clustered apic mode TARGET_CPUS is used as a default value when such a situation occurs. I think this is a good step in making irq_affinity clustered apic safe. [PATCH] provide user feedback for emergency sync and remount People like to see when the emergency sync and emergency remount operations have completed. [PATCH] copy_process return value fix Rather than assuming that all the things which copy_process() calls want to return -ENOMEM, correctly propagate the return values. This turns out to be a no-op at present. [PATCH] de_thread memory corruption fix From: Manfred Spraul de_thread calls list_del(¤t->tasks), but current->tasks was never added to the task list. The structure contains stale values from the parent. switch_exec_pid() transforms a normal thread to a thread group leader. Thread group leaders are included in the init_task.tasks linked list, non-leaders are not in that list. The patch adds the new thread group leader to the linked list, otherwise de_thread corrupts the task list. [PATCH] vmalloc race fix From: William Lee Irwin III The new vmalloc() semantics from 2.5.32 had a race window. As things stand, the presence of a vm_area in the vmlist protects from allocators other than the owner examining the ptes in that area. This puts an ordering constraint on unmapping, so that allocators are required to unmap areas before removing them from the list or otherwise dropping the lock. Currently, unmap_vm_area() is done outside the lock and after the area is removed, which as we've seen from Felix von Leitner's test is oopsable. The following patch folds calls to unmap_vm_area() into remove_vm_area() to reinstate what are essentially the 2.4.x semantics of vfree(). This renders a number of unmap_vm_area() calls unnecessary (and in fact oopsable since they wipe ptes from later allocations). It's an open question as to whether this is sufficiently performant, but it is the minimally invasive approach. The more performant alternative is to provide the right API hooks to wipe the vmalloc() area clean before removing them from the list, using the ownership of the area to eliminate holding the vmlist_lock for the duration of the unmapping. If it proves to be necessary wli is on standby to implement it. [PATCH] Reserve the ext2/ext3 EAs for the Lustre filesystem From: Andreas Dilger Below are the patches which reserve the Lustre EA index. The rest of the code is part of the Lustre tree, which isn't working with 2.5 yet. [PATCH] Fix arch/i386/op