Summary of changes from v2.6.5 to v2.6.6-rc1 ============================================ [netdrvr r8169] Conversion of Rx/Tx descriptors to consistent DMA: - use pci_alloc_consistent() for Rx/Tx descriptors in rtl8169_open() (balanced by pci_free_consistent() on error path as well as in rtl8169_close()); - removal of the fields {Rx/Tx}DescArrays in struct rtl8169_private as there is no need to store a non-256 bytes aligned address any more; - fix for rtl8169_open() leak when RxBufferRings allocation fails. Said allocation is pushed to rtl8169_init_ring() as part of an evil cunning plan. [netdrvr r8169] Conversion of Rx data buffers to PCI DMA - endianness is kept in a fscked state as it is in the original code (will be adressed in a later patch); - rtl8169_rx_clear() walks the buffer ring and releases the allocated data buffers. It needs to be used in two places: - rtl8169_init_ring() failure path; - normal device release (i.e. rtl8169_close); - rtl8169_free_rx_skb() releases a Rx data buffer. Mostly an helper for rtl8169_rx_clear(). As such it must: - unmap the memory area; - release the skb; - prevent the ring descriptor from being used again; - rtl8169_alloc_rx_skb() prepares a Rx data buffer for use. As such it must: - allocate an skb; - map the memory area; - reflect the changes in the ring descriptor. This function is balanced by rtl8169_free_rx_skb(). - rtl8169_unmap_rx() simply helps with the 80-columns limit. - rtl8169_rx_fill() walks a given range of the buffer ring and try to turn any descriptor into a ready to use one. It returns the count of modified descriptors and exits if an allocation fails. It can be seen as balanced by rtl8169_rx_clear(). Motivation: - partially abstract the (usually big) piece of code for the refill logic at the end of the Rx interrupt; - factorize the refill logic and the initial ring setup. - simple conversion of rtl8169_rx_interrupt() without rx_copybreak (will be adressed in a later patch). [netdrvr r8169] rtl8169_start_xmit fixes: - it forgot to update stats if the skb couldn't be expanded; - it didn't free it either if the descriptor was not available; - move the spin_unlock nearer of the exit point instead of duplicating it in the new branch. [netdrvr r8169] Conversion of Tx data buffers to PCI DMA: - endianness is kept in a fscked state as it is in the original code (will be adressed in a later patch); - buf_addr of an unmapped descriptor is always set to the same value (cf rtl8169_unmap_tx_skb); - nothing fancy, really. [netdrvr r8169] Rx copybreak for small packets. - removal of rtl8169_unmap_rx() (unneeded as for now). [netdrvr r8169] Add {mac/phy}_version. - change of identification logic in rtl8169_init_board(); - {chip/rtl_chip}_info are merged in rtl_chip_info; - misc style nits (lazy braces, SHOUTING MACROS from realtek converted to functions). [netdrvr r8169] Merge of changes done by Realtek to rtl8169_init_one(): - phy capability settings allows lower or equal capability as suggested in Realtek's changes; - I/O voodoo; - no need to s/mdio_write/RTL8169_WRITE_GMII_REG/; - s/rtl8169_hw_PHY_config/rtl8169_hw_phy_config/; - rtl8169_hw_phy_config(): ad-hoc struct "phy_magic" to limit duplication of code (yep, the u16 -> int conversions should work as expected); - variable renames and whitepace changes ignored. [netdrvr r8169] Merge of timer related changes from Realtek: - changed their timeout value from 100 to HZ to trigger rtl8169_phy_timer(); - s/TX_TIMEOUT/RTL8169_TX_TIMEOUT/ to have RTL8169_{TX/PHY}_TIMEOUT. [netdrvr r8169] Merge of changes from Realtek: - register voodoo in rtl8169_hw_start(). [netdrvr r8169] Driver forgot to update the transmitted bytes counter. Originally done in rtl8169_start_xmit() by Realtek. [netdrvr r8169] Modification of the interrupt mask (RealTek). [netdrvr r8169] Suspend/resume code (Fernando Alencar Marótica). [netdrvr r8169] fix RX Brown paper bag time: the Rx descriptors are contiguous and EORbit only marks the last descriptor in the array. OWNbit implicitly marks the end of the Rx descriptors segment which is owned by the nic. [netdrvr r8169] Endianness update (original idea from Alexandra N. Kossovsky): - descriptors status (bitfields enumerated as _DescStatusBit); - address of buffers stored in Rx/Tx descriptors. [netdrvr r8169] Stats fix (Fernando Alencar Marótica ). [PATCH] 2.6.1-rc1-mm1 - typo of death in the r8169 driver silly bug in the r8169 driver. [netdrvr r8169] fix oops by removing __devinitdata marker [netdrvr r8169] fix rx counter masking bug [netdrvr r8169] fix phy initialization loop init [netdrvr r8169] fix TX race - possible tx descriptor index overflow (assume tp->dirty_tx = NUM_TX_DESC/2, tp->cur_tx = NUM_TX_DESC - 1 and watch TxDescArray for example); - the status of an inadequate descriptor is checked. NB: the bug will not necessarily noticed when tx_left == 1. [netdrvr r8169] Rx wrap bug: - rtl8169_rx_interrupt() can wrap and process an Rx descriptor that it has invalidated a few iterations before. The patch limits the number of allowed descriptors between two invocations of the Rx refill function; - rtl8169_rx_interrupt() now looks similar to rtl8169_tx_interrupt to highlight the issue. [PATCH] PATCH [1/15] qla2xxx: Update copyright banner Update copyright banner for all source files. [PATCH] PATCH [2/15] qla2xxx: Track DSDs used by an SRB Track the number of DSDs and request entries required for an SRB in case of a request-entry or command-slot shortage. [PATCH] PATCH [3/15] qla2xxx: Increase MBX IOXB timeout Fix a problem where during heavy I/O the driver would improperly timeout an outstanding MBX IOCB before the firmware itself had a chance to issue and wait for the command to timeout. [PATCH] PATCH [4/15] qla2xxx: Endianess fix while reading stats Return firmware statistics retrieved from qla2x00_get_link_status() in host-endian form. [PATCH] RE: PATCH [5/15] qla2xxx: request entries update For now, I'd say keep everything in the original patch except the hunk that changes SG_ALL -> 32, revised patch attached. [PATCH] PATCH [6/15] qla2xxx: Track error-state of SBRs Consistenly track the error-state of a failed SRB. [PATCH] PATCH [7/15] qla2xxx: Misc. updates with FO resync Misc. updates due to resync with non-embedded (failover-aware) driver. o Add ancillary support definitions. o Remove extraneous *_IOCTL #ifs. o Make qla2x00_cmd_timeout() and its support routines visible to the non-embedded driver. [PATCH] PATCH [8/15] qla2xxx: Use proper HA references Fix issue where the driver would reference the incorrect HA during loop state check. [PATCH] PATCH [9/15] qla2xxx: NVRAM id-list updates Resync with latest NVRAM subsystem ID list. [PATCH] PATCH [10/15] qla2xxx: Use fcports list for targets Consistently use the fcports list of an HA to iterate through the known target devices. [PATCH] PATCH [11/15] qla2xxx: Add login-retry-count override Add a module parameter to override the NVRAM's login retry count value. [PATCH] PATCH [12/15] qla2xxx: Restore update state during resync Restore the UPDATE state of the HA if a resync event occurs during a device (re)discovery. [PATCH] PATCH [13/15] qla2xxx: Device reset fix During a back-door device reset call, hold off execution of commands until the reset is complete. PATCH [14/15] qla2xxx: 23xx/63xx firmware updates Andrew Vasquez Resync with latest released firmware -- 3.02.26. [PATCH] PATCH [15/15] qla2xxx: Update driver version Update version number to 8.00.00b11-k (to indicate embedded driver). [PATCH] USB multi-card reader blacklist updates Here's a couple more blacklist entries. Seems everyone suddenly rushed out and bought one of these multi-card readers. Dave [PATCH] Fix error handler offline behaviour No-one seems to have noticed, but there's a bug in our offline handling which can cause the eh to loop forever when it tries to offline a device (basically offline I/O rejections are done in prep, which doesn't work for already prepped commands). The attached fixes this, and also sweeps offline up into a fairly fully fledged scsi state model. With this applied I can now offline my root device under load without causing a SCSI hang (ext2 BUG()s rather unhappily but at least that's not a SCSI problem). [PATCH] aacraid reset handler update This is an update from the Adaptec version of the driver to the aacraid reset handler. The current code has a logic error that is fixed by this version. This builds against 2.6.5-rc1. [PATCH] Replace scsi_host flags with scsi_device sdev_bflags Replace the scsi_host flags with scsi_device sdev_bflags. Change USB to set sdev_bflags in its new slave_alloc function. [PATCH] Add 192 byte MODE SENSE flag Add a BLIST_MS_192_BYTES_FOR_3F flag. If it is set, sends a 192 byte MODE SENSE in sd.c. SCSI: correct blacklist entry [CPUFREQ] If ->init fails, unregister cpufreq driver. Some cpufreq drivers can only tell whether they work while the per-CPU ->init() function is executed [e.g. the acpi driver]. So that cpufreq_driver isn't blocked by such stale drivers, unload them unless the driver sets a special flag. [CPUFREQ] Use KERN_WARNING for warning. [CPUFREQ] Move the centrino table matching into an own function Only the FEATURE_EST bit for CPU 0 is checked in module_init() directly. As cpufreq drivers aren't sticky any longer (see previous patch), this will not change user-visible behaviour. [CPUFREQ] Merge ACPI perflib. Use ACPI _PSS data to determine valid frequency and voltage pairs on Enhanced SpeedStep-capable processors. An original form of such ACPI-PentiumM-cpufreq interaction was sent to the cpufreq list by David Moore in June last year; the attached patch utilizes his code to set _PDC. The new ACPI "P-States library" is utilized to obtain the correct frequency and MSR value pairs for the speedstep-centrino driver. Only if no such proper table exists (!CONFIG_ACPI, broken ACPI tables, etc.), fall back to the existing hard-coded table. If anyone has a better idea for the Kconfig section, please tell me so. This version of this patch has proper acpi_state setting included, and also has a hint in the banner of the centrino_cpu_init_acpi() function, as Jeremey Fitzhardinge suggested. [CPUFREQ] Export an array of available frequency settings of the centrino driver. [CPUFREQ] Fix up centrino initcall level centrino_init needs to be late_initcall so that the ACPI processor module is completely up and running. [CPUFREQ] SPEEDSTEP_RELAXED_CAP_CHECK option. A few SpeedStep-capable systems don't perform according to specification: the CPUID and/or some MSRs don't tell us the CPU is SpeedStep capable even though it definitely is. Allow a relaxed checking for one such issue by a module parameter only available if a config option is turned on. This is done to avoid the risk of doing invalid speedstep instructions on systems which do not support it, and which might even lead to (hardware) failure. Patch originally from Andres Aeriksson (?) aeriksson at fastmail (dot) fm [CPUFREQ] Fix an off-by-10 value in the detection of the Pentium M processor frequency. [CPUFREQ] Extra __init section function for longrun driver. From Luiz Fernando Capitulino [CPUFREQ] Extra __init section function for longhaul driver. From Luiz Fernando Capitulino [PATCH] I2C: w83781d fan_div code refactoring Quoting myself: > This tends to increase the size of the three set_store_regs_fan_div > functions, and I am considering refactoring them at some point. Later > though. Here is the promised refactoring. Tested on my AS99127F rev.1, seems to work. As for the previous patch, there is a part that I cannot test with the AS99127F, so additional testing is welcome. I agree this makes the code slightly less readable, but this saves 60 lines of code (1754 bytes, around 3% of the driver total), and is actually far less complex that I first feared. [PATCH] I2C: add new chip driver: pcf8574 Please find below a patch against kernel 2.6.5-rc1 to add the pcf8574 driver (an I/O expander for the I2C bus). I have ported it from the 2.4 version, and it includes some fixes and simplifications. It has been reviewed by Jean Delvare on IRC. [PATCH] Fix scsi_transport_spi.c for gcc-2.95.3 Work around the gcc-2.95 token pasting bug. [libata] Add driver for SiS 964/180 SATA. [libata sata_sis] minor cleanups [PATCH] More domain validation fixes and additions Following testing in more extreme situations, the following problems turned up: - The error handler can offline the device during DV (most particularly true when transport parameters are undetectably mismatched). Fixed by modifying the state model to allow this and then having DV set the device back online for the retry. - DV needs to be serialised. Fixed by introducing a per device semaphore. - Cosmetically, it's nice to trigger DV from userland, so added a revalidate sysfs entry. [libata] use new pci_dma_error() to check for pci_map_single() failure [libata] use kmap_atomic() rather than kmap() [libata ata_piix] do not disable SATA port on module unload We were disabling the SATA port, but not enabling it on module load. So, modprobe+rmmod+modprobe would fail. [libata ata_piix] clean up combined mode handling [libata ata_piix] fix combined mode device detection SATA port detection should not have assumed that a single SATA port mapped to a single struct ata_port. Combined mode breaks this assumption. Change code to simply detect if one or more devices are present on the struct ata_port, which is what we really wanted to do. [libata sata_promise] check for PATA port on PDC20375 We don't handle it yet, but this prints out a message in its presence, permitting verification of the check and informing users why their PATA device is not recognized. [libata] set up some of the per-command data beforehand The data transfer mode and the set of read/write commands we generate during normal operation remains constant until we change the data transfer mode. This removes a series of branches in the read/write fast path, and in general cleans up that particular spot of code. [libata] consolidate data transfer mode handling The various ways you can send data to/from your ATA device is known as the ATA taskfile protocol: PIO single sector, PIO multiple sector, DMA, DMA TCQ, DMA NCQ, ... Prior to this change, the data direction (read/write) was encoded implicitly into the ATA_PROT_xxx value itself. This increased complexity in some areas, and inhibited flexibility in others. This change separates data direction from taskfile protocol, and also moves the data direction flag (ATA_QCFLAG_WRITE) down to a lower level (ATA_TFLAG_WRITE). [ata] move some generic stuff linux/libata.h -> linux/ata.h struct ata_taskfile is generic, and so far its flags (ATA_TFLAG_xxx) Also, move ATA_PROT_xxx definitions into their own enum. [PATCH] I2C: Discard out-of-date comment in adm1021 driver This simple patch discards an out-of-date comment in the adm1021 driver. I've done the same in our CVS repository where many more drivers were affected. I agree it's not very important, but I prefer it to be done before any driver with the error is used as a base to port a new driver, and the misinformation spreads. [PATCH] I2C: initialize fan_mins in w83781d, asb100 and lm78 Quoting myself: > While testing, I found a corner case that isn't handled properly. It > doesn't seem to be handled by the lm78 and the asb100 either. Setting > fanN_div before ever reading from the chip or setting fanN_min will > make use of fanN_min while it was never initialized. The following patch addesses the issue. Tested to work on my AS99127F rev.1 (which means that only the changes to the w83781d driver were actually tested). Testers welcome. [PATCH] USB: FTDI 232BM "USB-RS232 OptoBridge" we (the german company Gude Analog und Digitalsysteme GmbH, http://www.gude.info) have manufactored a USB<->RS232 adapter with galvanic isolated RS232 Interface. Data is transmitted by optical signals only. The Product's name is "USB-RS232 OptoBridge". We used the FTDI 233BM Chip with PID 0xE889 (VID 0x0403). The Product will be released this Cebit 2004. Could you please extend the ftdi_sio code with this PID. You find a .diff file attached which I have tested with kernel 2.6.4 At http://ftdi-usb-sio.sourceforge.net/ I saw that you provide a patch for 2.4.x kernels. Will our PID also find it's way in this back-ported driver patch? In the future (in the next 10 month), our company will have some more Products using the FTDI Chip. The PID's FTDI already allocated for us are: E888 to E88F and E808 to E80F Thank you very much, Martin Bachem [PATCH] USB: kernel-doc comment tweak Correct kernel-doc comment with incorrect parameters documented [PATCH] USB: gadget zero does endpoint autoconfig Here's where all those preceding autoconfig patches start to fit together: one gadget driver gets rid of almost all the controller-specific #ifdeffery. Two of the other gadget drivers can do the same thing, and just as easily: file storage, and serial. (I'll hope their maintainers do those changes though.) The "ether.c" gadget driver is a lot more complicated to do this way since it has to cope with some differences by switching to alternate protocols (CDC Ethernet vs a subset) and soon be able to handle RNDIS. So that'll be a while yet. Gadget Zero learns to autoconfigure. - Gets rid of remaining controller-specific #ifdeffery. Now hardware choices can be made at run time too (not just compile time). - Simplifies its use of the "DEBUG" CPP symbol. - Force device to report itself consistently as self-powered. [PATCH] USB: rtl8150 update adds two more vid/did and better packet error statistics. Link detection also has been added. [libata] pci_dma_error() was renamed to pci_dma_mapping_error() [libata] reduce diff with 2.4 libata backport [libata] use scsi host lock In 2.4 we release io_request_lock and take our own per-host lock, in the ->queuecommand() hook. In 2.6, the SCSI layer provides a useful to simply use the lock we already have, via scsi_assign_lock(). [PATCH] USB: new cypress thermometer driver [PATCH] USB: add cytherm driver to the build [PATCH] USB: USB gadgets can autoconfigure endpoints This adds some code that gadget drivers can call from driver initialization, to simplify the "configure against this hardware" step. Add endpoint autoconfiguration for gadget drivers. Endpoint selection is currently being done with conditional compilation. That doesn't look nice, but more importantly it doesn't work well with the model that some distributions won't be custom-matched to hardware. Say, a PDA distro running on iPaq (pxa2xx_udc) or Axim (mq11xx_udc). This code just makes it easier for drivers to match to hardware at run-time. It's a convenience function for something they could have been doing already, but weren't. [libata] documentation, and a couple tiny cleanups Add more per-function source code documentation. Some of this stuff is esoteric ATA crapola, and definitely needed to be documented. Also, two tiny cleanups spotted while documenting: * kill unused arg from internal function ata_dev_try_classify() * kill unused return value from ata_dev_id_string() [PATCH] USB: Improve core/config.c error messages This patch improves error reporting in the configuration parsing routines. It also adds a few extra minor tweaks. #include linux/config.h and make the usual DEBUG settings available. Use the driver-model dev_xxx() macros for log output. Be much more explicit about the nature of errors, including configuration, interface, and altsetting numbers where appropriate. Log fatal problems as errors, non-fatal ones as warnings. Remove a #define'd constant that is already set in linux/usb.h. Fix some variables declared as pointer to char that really should be pointers to unsigned char. Replace a whole bunch of "out-of-memory" error messages with a single message. Wrap source lines that are longer than 80 columns (but not log output lines!). Clean up the logic for detecting errors when retrieving a configuration descriptor. Apart from the log messages themselves, this introduces no functional changes. [PATCH] USB: Code improvements for core/config.c This patch makes some improvements to the code in config.c. Create a subroutine to handle the repeated task of skipping forward to the next descriptor of a certain type. Remove some fairly useless debugging messages (they could never even have been enabled in the pre-as221 code). Verify that endpoint descriptors don't have an address equal to 0 (as well as not being above 15). Rename some local variables so they are a little more consistent and meaningful. Despite all the changes, the functionality should remain the same. Please apply. [PATCH] USB: fix osdl bugid 481 (USB boot messages) Some boot-time messages were obnoxiously long because they used "old-style" diagnostics. OSDL bugid 481 Get rid of most remaining "old style" diagnostics from usbcore. Most messages use driver model style diagnostics. Messages that don't have an associated device use the standard kernel printk wrappers and label themselves as from "usbcore". (Except that there's no such wrapper for KERN_ERR.) This doesn't touch usbfs, "config.c" (Alan's patches do this), or usb_reset_device() (needs a more substantial overhaul). Or any other USB drivers (notably HID). [PATCH] USB: fix osdl bugid 2006 (timer init and fault paths) Need to initialize timers a bit earlier to handle certain initialization faults. OSDL bug 2006 Need to initialize some timers a bit earlier to clean up safely after very early init HCD failures. Those early init faults were needlessly mysterious since they didn't emit diagnostics except at HCD discretion. [PATCH] USB: Unusual_devs update On Tue, 16 Mar 2004, John Katzmaier wrote: > Hi, > > Just wanted to let you know that when using my Panasonic PV-SD4090 digital > camera with kernel 2.6.3, I found this entry in my logs: > > Mar 16 21:43:27 rocket kernel: usb-storage: Vendor: Panasonic > Mar 16 21:43:27 rocket kernel: usb-storage: Product: LS-120 Camera > Mar 16 21:43:27 rocket kernel: usb-storage: This device (04da,0901,0109 S 00 P > 00) has an unneeded Protocol entry in unusual_devs.h > Mar 16 21:43:27 rocket kernel: Please send a copy of this message to > > > I thought it might be best to follow its instructions and so I did. > > Thanks. > > -John Katzmaier Thank you for sending this in. An update will appear in a forthcoming kernel. Greg, here's the patch. [PATCH] USB: Regularize unusual_devs entries for Genesys Logic I saw that you just added another unusual_devs.h entry submitted by Henning Schild, for vendor ID 0x05e3. It turns out this is our old friend Genesys Logic. A recent message from Brad Campbell included a Windows driver file by Genesys, and it included these lines: USB\VID_05E3&PID_0700.DeviceDesc="USB Card Reader" USB\VID_05E3&PID_0701.DeviceDesc="USB Optical Device" USB\VID_05E3&PID_0702.DeviceDesc="USB Mass Storage Device" Based on this information, we can clean up the 0x05e3 entries in unusual_devs.h. This patch puts all three entries into a regularized form. [PATCH] USB: kernel-doc comment tweak in vicam.c Correct kernel-doc comment with incorrect parameters documented [PATCH] USB: fix race in ati_remote and small cleanup On Thu, 2004-03-18 at 07:44, Oliver Neukum wrote: > Hi, > > you must use set_current_state() only after usb_submit_urb() with GFP_KERNEL > as second argument, because it may sleep to allocate memory and is woken up > resetting the state to TASK_RUNNING. In that case you had a busy polling loop. > Furthermore, always use wake_up unconditionally. It checkes anyway. Thanks for reviewing this code, I'm new to Linux driver development and more eyes on my work is a good thing. I've actually been working on some more cleanups to the driver to fix the race between open and disconnect, and was just about to send it in... So, the attached patch against 2.6.5-rc1-mm1 includes a mutex to lock the open/disconnect paths, modelled after the usb-skeleton driver. It includes Oliver Neukum's fixes and other cleanups as well. [PATCH] USB: Unusual_devs.h update On Thu, 18 Mar 2004, Urban Borstnik wrote: > The 2.6.4 and 2.6.3 (and possibly some earlier) kernels log the > following message when I plug in a Lexar CompactFlash Reader: > > usb-storage: This device (05dc,b002,0113 S 06 P 50) has unneeded > SubClass and Protocol entries in unusual_devs.h > Please send a copy of this message to > > Otherwise it has been working very well with the devepment kernels on at > least 4 machines ever since a trivial fix was introduced for this device > to unusual_devs.c over a year ago. > > Best regards, > Urban. Thank you for sending this in. An update will appear soon. [PATCH] USB: race condition in open of w9968cf there's a race in how open handles multiple openers. You implement exclusive opening and wait for close in case of further openers. However if there are more than one waiter, only one of them must be allowed to proceed. [PATCH] USB: Don't trust raw descriptor length in devioc. This is a very minor point, unlikely ever to come up. But just in case... It's conceivable that a device might transmit different values for a configuration descriptor's wTotalLength the first time we ask for it (in order to get the length) and the second time (to get the entire descriptor). Should that improbable event occur, the rawdescriptor buffer could be allocated using a size that's smaller than the length recorded in the rawdescriptor itself. This patch protects devio.c against such a problem. If you feel this sequence of events is too unlikely to worry about, then don't bother to apply the patch. [PATCH] USB: UHCI: Do short packet detection correctly This patch makes some simple changes to the way the UHCI driver does short packet detection. The current implementation is incorrect in several ways: The Short-Packet-Detect flag is set for OUT transfers, which yields undefined behavior according to the UHCI spec. It's not set for URBs with URB_SHORT_NOT_OK, which is just the opposite of what we want! Those are the ones where short packets do matter. It is set for the last packet in a transfer, which causes an unnecessary pause in the data flow (except of course that the pause _is_ necessary when URB_SHORT_NOT_OK is set). The patch also implements the URB_NO_INTERRUPT flag for bulk transfers, which can help improve system performance by reducing interrupt overhead. [PATCH] USB: UHCI: Improved handling of short control transfers This patch simplies the way the UHCI driver handles short control transfers. When a transfer is short the HC will stop handling that endpoint, and it's necessary to get it going again so that the status stage of the control transfer can take place. Currently the driver does this by allocating a new QH for the transfer and setting its element pointer to point at the final status TD. The old QH is recycled. But it's not necessary to go to all that trouble; the element pointer in the original QH can be updated directly. Normally the element pointer is supposed to be owned by the HC, and it's not safe to just change its value since the HC may overwrite it at any time. But when a transfer is stopped because of a short packet, the current TD is marked inactive and the HC will not update the element pointer. To write an unchanged pointer value back to memory would be a waste of PCI bus cycles. Now the UHCI spec doesn't say explicitly that an HC _can't_ do this, but I've tested both Intel and VIA hardware and neither of them does. As a side effect of this change, some of the code for removing QHs can be eliminated. [PATCH] USB: UHCI: Get rid of excessive spinlocks This patch introduces a major simplification into the UHCI driver by replacing its multiple spinlocks with a single one. The protected area of code is slightly larger and there's more possibilities for contention on an SMP system, but I think that shouldn't be a problem. Stephen Hemminger has been kind enough to test this on his SMP computer and he hasn't encountered any difficulties. [PATCH] USB: fix error paths in kobil_sct some error codes are incorrect and there's an URB leak in an error path. [PATCH] USB: usb hiddev stack usage patch Patch below fixes some obscenely high stack uage; struct hiddev_usage_ref_multi is well over 4Kb in size so really doesn't belong on the stack. ia64: Patch by Stephane Eranian: remove irq_stat from cpuinfo_ia64. irq_stat isn't needed anymore since its members got rolled into thread_info.preempt_count. [libata sata_promise] minor initialization updates * remove incorrect PATA port check * enable undocumented bit 13 in flash control register, because the Promise driver does so. * wait 10 ms after setting TBG mode, for the same reason. [libata] clean up command queue/submit path a bit This change is part of a series that compartmentalizes and consolidates ATA taskfile submission. Here, the device-location-related checks are moved out of the ->queuecommand() hook and into an inline helper function. [libata] more command queue path cleanup A new helper ata_scsi_xlat_possible(), and the command queue path gets a bit more compact. As side effects we kill the 'cmd_size' argument from two functions, and mark ata_scsi_rw_queue() as static, as its only needed in libata-scsi.c. [libata] more cmd queue path cleanups Final part in tonight's series of changes to clean up the command queueing path. The simulate-ATA-over-SCSI code is moved to a new function, ata_scsi_simulate(), and ata_scsi_rw_queue() is renamed to ata_scsi_translate(). With the SCSI CDB debugging dump function also moved into its own function, the queue-command path is now nice, compact, and readable. [PATCH] USB: fix bug in usb-skeleton.c [PATCH] USB: fix DMA to stack in ftdi driver this driver is doing DMA to the stack. Here's the obvious fix. [PATCH] USB: cleanup of st5481 you are using __devinit which must not be used with USB drivers, in addition you are using some false GFP values and fail to check some error codes. - check for unlink due to removal of controller - correct GFP values - no __devinit in USB [PATCH] USB: fix typo in previous patch I screwed up. This corrects it. [PATCH] USB: fix hfc_usb sleeping in irq you are using GFP_KERNEL in irq and __devinit with hotpluggable code. - use proper GFP flags - kill __devinit [PATCH] USB: Fix drivers/usb/net/Kconfig This allows the pegasus driver to actually be seen as a config option. Apparently it's not that popular, though I have confirmed that it still works on at least the netgear fv101. [PATCH] USB: fix race in whiteheat serial driver Patch below fixes an obvious race in the whiteheat usb serial driver... [PATCH] USB: define USB feature bit indices This patch provides standard symbols for the various USB device and endpoint feature bits, so that drivers can use symbolic names for them. It also changes the code relating to endpoint halts so it uses those symbols. [PATCH] USB: usbnet, minor probe() fault fix Some hardware had the poor taste to misbehave during probe(), which turned up a minor bug. This fixes it: don't try to free a network device that hasn't been registerd. [PATCH] USB: g_ether does endpoint autoconfig too Here's an update for the Ethernet gadget that corresponds to the earlier one for Gadget Zero ... it gets rid of almost all the remaining controller-specific #ifdefs in this driver. (And also lets the driver initialize using "dummy_hcd".) This is a significant step towards doing hardware-specific configuration at run time (or at least init-time) rather than compile time, but other patches will be needed to take it the rest of the way there. (Especially considering the RNDIS support...) The runtime footprint of the driver shrank a bit, mostly because things moved into the init section. [PATCH] USB: fix whiteheat USB serial compile failure on PPC > Bah, looks like PPC doesn't ever define CMSPAR :( > > How about adding something like: > #ifndef CMSPAR > #define CMSPAR 0 > #endif > To the beginning of the driver like the cdc-acm.c driver does? If that > works, care to send me a patch? Yes, it compiles. USB: mark pwc driver as broken, as it is. And the maintainer doesn't seem to want to fix it :( [PATCH] USB: Add dummy_hcd to the main kernel This is a resubmission of as225, together with appropriate changes for the g_serial driver. David Brownell's latest g_ether update makes it unnecessary to change that file or gadget_chips.h. dummy_hcd is simultaneously a host controller driver and a device controller driver. It creates a simulated HC together with a simulated UDC plugged into it. Gadget drivers can run under the simulated UDC and will appear as regular USB devices on the simulated HC. The simulation is reasonably (although not totally) realistic. It's a wonderful tool for testing and developing gadget drivers without the need for lots of additional hardware: Both the host driver and the gadget driver can run on the same computer. It's been available for quite some time in David's gadget-2.6 tree and it works well. I couldn't have gotten the file-storage gadget running in any reasonable length of time without it. [PATCH] USB: more ftdi_sio ids USB: ftdi_sio merge fixups. [PATCH] USB: add ftdi_sio product ids USB: fix compiler warning in whiteheat driver. [PATCH] I2C: adm1021 (probably) does something VERY,VERY BAD Quoting myself: > 3* Drop adm1021's limit init. This was already done in the 2.4 driver > and should have been done in 2.6 as well. Here is a patch that does that. It also prevents bit 7 (and unused bits) of configuration register from being reset, as was discussed before: http://archives.andrew.net.au/lm-sensors/msg04593.html That second part needs to be backported to the 2.4 driver, and I will do so. Additionally, we get rid of a useless label. The patch is untested (I don't own any supported chip) but quite straightforward IMHO. [PATCH] I2C: Setting w83627hf fan_div preserves fan_min Here is a patch that updates the w83627hf driver in the exact same way I did recently for the w83781d driver. There were two problems: 1* Fan divisor storing code was ugly, badly ripped from the 2.4 w83627hf driver and/or the 2.6 w83781d driver. 2* Setting fan divisors wouldn't preserve fan mins. Exactly the same as w83781d: http://archives.andrew.net.au/lm-sensors/msg06952.html http://archives.andrew.net.au/lm-sensors/msg07008.html No surprise since the w83627hf driver is a fork of the w83781d driver. Since the two drivers are strongly similar, I took the code directly from the updated w83781d driver. I cannot test the w83627hf driver (testers welcome BTW) but this makes me feel confident that the code is correct. To make it clear, this single patch is the w83627f equivalent of the three patches I submitted for the w83781d: * Cleanup * Refactoring * Setting fan_div preserves fan_min All in one (much better looking BTW). [PATCH] IXP425 -> IXP4XX conversion for USB-gadget The 2.6 code for Intel's IXP4xx NPU line has been updated to remove all references to IXP42x or IXP425 and replace it with IXP4XX, including config options and file names. This patch updates the USB-gadget pxa-udc driver with these changes. [PATCH] USB: ohci misc updates Mostly from Benjamin Herrenschmidt: - prevent usbcore from asking the HCD root hub code to read registers on one more suspend path (some hardware gets upset in those cases); - try handling a "device died" cleanup case better - add some wmb() calls in spots that could matter on some hardware [PATCH] USB: Altsetting update for USB input drivers This patch continues the update process for the cur_altsetting change. The drivers in usb/input were all in good shape and needed only minimal changes. [libata] more documentation libata-scsi.c should now be fully documented. [libata sata_promise] better locking and error handling * Prefer spin_lock() to spin_lock_irq() in interrupt handler * Reset each port, before probing the SATA phy * Reset port when every time an error occurs [libata] fix bug with READ(6) and WRITE(6) SCSI commands Must set the LBA bit on all transfers, not just {read,write}{10,16} scsi commands. [libata] remove synchronize-cache dead code Just a placeholder, and now that a better way to do this is coming, we don't even need the [unused] placeholder anymore. [PATCH] ia64: implement SN2 version of dma_mapping_error() On sn2, dma_mapping_error is trivial. pci_map_single was already returning 0 in case of failure (0 is an invalid DMA address on sn2), so make dma_mapping_error check for that. [PATCH] ia64: only scan SN2 PCI busses that exist sn_pci_init was unconditionally scanning 255 PCI busses, even though only a few are actually present on most systems. This patch adds a check to make sure a given bus exists before doing the scan, which saves a little memory and also makes /sys/devices reflect reality a bit more closely. [PATCH] stack reduction: aic7xxx_old From: Arjan van de Ven aic7xxx_old: constant array of PCI ID's can be static since it's read only [PATCH] Update FC transport attributes API This patch brings the FC transport attributes up to date with the SPI attributes API. The only major change I made was to separate read-only attributes from read-write attributes. [PATCH] Add FC transport attributes support to qla2xxx Here is a patch that adds FC transport attributes to the qla2xxx driver. The patch should apply cleanly to a recent 2.6 kernel with the FC attributes update that I just sent to linux-scsi. MPT Fusion driver 3.01.03 update From: "Moore, Eric Dean" Changelog for mpt version 3.01.03: (1) Fix fifo memory allocation under 64bit systems by merging 3 seperate memory allocations into one call. Before this fix, it was possible that these seperate pci_alloc_consistent() calls were crossing the 4GB hardware boundary. Delete the MPTBASE_MEM_ALLOC_FIFO_FIX logic. Backout recent ak@muc.de workaround. (2) Replace wrappers for CHIPREG_XXX with defines; per request from Jeff Garzik [jgarzik@pobox.com] (3) Remove support for FC909. (4) Remove PortIo modules parameter. (5) Move procmpt_destroy function before pci_unregister_driver, as the memory allocated for the proc was not being deallocated. (6) Remove mptscshi_reset_timeouts function. The timer was already expired when mod_timer is called. (7) Fix small bug in slave_destroy, which could prevent domain validation on hidden drive in a RAID volume. ---------------------------------------------------------------------- Changelog for mpt version 3.01.02: (1) Andi Kleen[ak@suse.de] put warning "Device (0:0:0) reported QUEUE_FULL!" into debug messages (2) Alexander Stohr[Alexander.Stohr@gmx.de] fix warnings from mptscsih_setup when driver isn't compiled as module (3) Randy.Dunlap[rddunlap@osdl.org] Remove unnecessary min/max macros and change calls to use kernel.h macros instead. ServeRAID ( ips ) 7.00.15 ith the completion of testing at Adaptec and IBM, the latest version of the ServeRAID Linux device driver ( ips Version 7.00.15 )is now available. Attached is the patches against the previous ServeRAID releases. Basically, this is a convergence to a common ips driver code base for the 2.4 and 2.6 kernels. This driver is based on the driver currently in 2.6, so you while there appears to be lots of changes to the 2.4 driver, the changes to the current 2.6 driver are trivial ( the only changes are version number changes and the addition of some new adapter ID's ). For 2.4, this was primarily a testing effort to ensure that the 2.6 driver code was stable when built for a 2.4 kernel. [PATCH] Fix template size calculation in transport attributes This small patch fixes the template size calculation in {spi,fc}_attach_transport(). [libata] back out duplicated upstream fix We already fixed this bug locally, so fix up the automerge by removing the upstream change. [PATCH] USB; minor usbfs locking updates These are "obvious" locking fixes: using the right lock to protect interface claim/release (should be the driver model bus lock, not BKL). [PATCH] USB: usb/core/config.c null pointers after kfree Prevents an oops with some other patchsets. Clear some pointers after the memory is kfreed, to avoid making some other patch combinations oops. [PATCH] USB: ohci unlink tweaks Minor unlink tweaks, including a case where SMP could oops if it were abused, as if from 'usbtest' or 'stir4200'. [PATCH] USB Gadget: RNDIS/Ethernet Gadget Driver (1/2) This patch adds the RNDIS message engine and kbuild/kconfig support for it. This is currently labeled EXPERIMENTAL. Patch contributed by Robert Schwebel, and developed with support from Auerswald GmbH. [PATCH] USB Gadget: RNDIS/Ethernet Gadget Driver (2/2) This updates the existing Ethernet gadget driver to support an additional RNDIS configuration on all current USB controllers that can support one. It also includes a bit more work to address the complex autoconfiguration of this driver. Needs testing on PXA. Patch (mostly) contributed by Robert Schwebel, and developed with support from Auerswald GmbH. [PATCH] USB: set_configuration locking cleanups I've posted all these before, the only notable change is treating that one gphoto2 case as warn-and-continue rather than return-with-failure. usb_set_configuration() cleanup * Remove it from the USB kernel driver API. No drivers need it now, and the sysadmin can change bConfigurationValue using sysfs (say, when hotplugging an otherwise problematic device). * Simpler/cleaner locking: caller must own dev->serialize. * Access from usbfs now uses usb_reset_configuration() sometimes, preventing sysfs thrash, and warns about some dangerous usage (which gphoto2 and other programs may be relying on). (This is from Alan Stern, but I morphed an error return into a warning.) * Prevent a couple potential "no configuration" oopses. (Alan's?) * Remove one broken call from usbcore, in the "device morphed" path of usb_reset_device(). This should be more polite now, hanging that one device rather than khubd. [libata] fix broken delay Due to rounding and HZ==100, sometimes delays would not occur for the desired length of time, or even at all. Fix call to schedule_timeout() to ensure we delay -at least- for the correct amount of time. [PATCH] USB: drivers/usb/gadget/epautoconf.c gcc-3.5 build fix drivers/usb/gadget/epautoconf.c: In function `ep_matches': drivers/usb/gadget/epautoconf.c:175: error: `typeof' applied to a bit-field [PATCH] USB: ftdi_sio.c: not unlinking urb on ftdi_close This patch fixes a bug in ftdi_sio.c where the driver wouldn't unlink the read urb if the user application cleared the HUPCL flag on termios->c_cflag. [PATCH] USB Storage: datafab fix and unusual devices datafab.c has an often-seen bug: the SCSI READ_CAPACITY command does not need the number of sectors but the last sector. I just tried the CF and SM parts of a 5-in-1 card reader. The CF part works with US_PR_DATAFAB when the bug mentioned is fixed. The SM part works with US_PR_SDDR55. (Revision Number is 17.08 - that in case the 0000-ffff should prove to be too optimistic.) We still must discuss what setup to use for readers like this - I have several of them - that require different drivers for different LUNs. As it is now one has to compile usb-storage twice, once with CONFIG_USB_STORAGE_DATAFAB defined and once without, and remove one usb-storage.ko and insert the other to go from CF to SM. (And that hangs with 2.6.4 so a reboot is required..) [PATCH] USB: kill off CONFIG_USB_BRLVGER detritus. This died a while ago, but lingers on in defconfigs. [PATCH] USB: RNDIS/Ethernet Gadget Driver comment changes Whoops, I missed something. You should apply this patch too. The RNDIS spec license agreement does NOT require tacking any GPL-incompatible restrictions on the results of _using_ the spec: "... may be used solely for the purpose of implementing the RNDIS protocol message set to interface with ..." (the two cases identified in the text) And that's all the implementation does -- end of story. [PATCH] USB: Rename the USB HID driver > > I like to see this rename as soon as possible. So if nobody minds I send > > a patch to LKML and ask Linus for inclusion. > > Go ahead, but also please patch all relevant documentation in the > kernel. the attached patch should do the renaming everywhere hid or hid.o was mentioned. It also removes all references to *.o module names. [PATCH] USB: omninet patch here's a small patch for omninet.c . [PATCH] I2C: Prevent misdetections in adm1021 driver Yet another patch for the adm1021 chip driver. I refined the detection code a bit in order to prevent chip misdetection. Some chips handled by the adm1021 driver are hard to detect and identify (LM84 and MAX1617) so we tend to accept any chip it the valid I2C address range as one of these. It has caused much, much trouble already. See these threads for example: http://archives.andrew.net.au/lm-sensors/msg04448.html http://archives.andrew.net.au/lm-sensors/msg04624.html http://archives.andrew.net.au/lm-sensors/msg05560.html http://archives.andrew.net.au/lm-sensors/msg05871.html http://archives.andrew.net.au/lm-sensors/msg06754.html http://archives.andrew.net.au/lm-sensors/msg07181.html And this ticket: http://www2.lm-sensors.nu/~lm78/readticket.cgi?ticket=1434 So I thought it would be good to prevent this kind of problems if possible, and read the 8 datasheets again in search for ways to refine the detection method. I changed it in sensors-detect already, and had positive feedback from one user. I will also backport the changes to the driver to the 2.4 version we have in CVS. What the patch does: * Use unused bits of two more registers (configuration and conversion rate) to reduce misdetections. * Return with -ENODEV if the detection fails. * Change the order in which we try to identify the chips. We better finish with the LM84 and the MAX1617, in this order, because they are harder to identify and are more likely to result in false positives. * Refine LM84 detection. The LM84 has less features than the other chips(chip cannot be stopped, conversion rate cannot be set, no low limits) so it has extra unused bits. * Do not intialize the chip if it was detected as an LM84. This one cannot be stopped so why would we try to start it again? And as said right before, conversion rate isn't changeable either. Note that I couldn't test the changes on any supported chip since I don't own any. Still I believe that they should be applied, since the current code already broke one system and seriously harmed several others. I believe it's not critical if it turns out that we reject valid chips (which shouldn't happen if the datasheets are correct, anyway). People will simply let us know and we'll be less restrictive. In the meantime they can force the driver. That said, testers are welcome, as usual. [PATCH] I2C: i2c documentation update (1/2) Here is an update to my 2.4 to 2.6 i2c client porting guide. The changes were inspired by the feedback I got with the drivers that have been ported so far. [PATCH] I2C: i2c documentation update (2/2) Here is a patch to Documentation/i2c/sysfs-interface. This is mostly my intent to make the document more readable. There are also a few incorrectnesses fixed, and some comments added. [PATCH] I2C: Incorrect memset in eeprom.c Quoting Ralf Roesch: > currently I'm only working with Linux MIPS 2.4 kernel, > so it would be nice if you could forward the patch for 2.6. OK, so here we are. Greg, this is the port to 2.6 of Ralf patch that fixes an incorrect memset while initializing the eeprom driver. Please apply. [PATCH] I2C: Discard pointless comment in via686a The simple patch below discards a comment in via686a referencing a file that doesn't belong to the Linux tree. Now that I tell people not to do that in my porting guide, we better follow our own advice. SCSI: Add noretry check to the error handler path This still doesn't give us complete fast fail on the eh path because we still get delayed to recover the transport. [PATCH] USB: w9968cf driver misplaced ; [PATCH] USB: fix dvb-ttusb-budget driver due to set_configuration locking cleanups > Oops, you forgot to grep: > > CC [M] drivers/media/dvb/ttusb-dec/ttusb_dec.o > drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c: In function `ttusb_setup_interfaces': > drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c:1011: warning: implicit declaration of function `usb_set_configuration' Well, when I did the grep that bug wasn't there; it was just integrated on Feb 26! > Care to send a patch to fix it up before Andrew gets grumpy with me for > breaking his build? :) The first part makes it use usb_reset_configuration() like it did before ... I'm surprised this driver hasn't been generating "it deadlocks during probe" reports. The second part prints a diagnostic if the configuration wasn't set right; the fix would use hotplug and sysfs. [libata sata_via] Fix detection of device 1 VIA hardware thinks port 1 (second port) is "SATA primary slave". Since the hardware rarely configures SATA to present as slave devices, we must pretend that the second hardware port (as the user sees it) is the third port (as the VIA PCI config registers see it). [PATCH] USB Gadget: Use configuration-buffer library in file-storage This patch imports the config-buffer library into the file-storage gadget, simplifying and decreasing the amount of code needed for assembling configuration descriptors. It also changes the driver to remove any pretense at bus-powered operation and to use the new DUALSPEED configuration option. This is in line with recent changes made to other gadget drivers. [PATCH] USB Gadget: Use automatic endpoint selection in file-storage This patch imports the endpoint auto-config library into the file-storage gadget, simplifying the code needed for endpoint selection and removing almost all dependencies on the controller type from the driver. It also changes some log messages for reporting fatal problems from INFO to ERROR. [PATCH] USB: Complete all URBs in UHCI when releasing the bus This patch changes the UHCI driver's bus-release routine; now it will correctly finish all pending but not-yet-completed URBs. This fixes a reported bug, when trying to rmmod uhci-hcd while using a USB mouse under X. Also, the patch changes a variable name from ...hs... to ...fs... ("high speed" -> "full speed") -- something I accidentally omitted in an earlier patch. [PATCH] USB Gadget: Rename the dummy_hcd's gadget When David added an entry to the gadget_chips.h file for the dummy_hcd driver, he mistakenly used the name "dummy_udc" rather than "dummy_hcd". The mistake is understandable, since other controllers use "_udc" in their names and it is illogical to put "_hcd" in a _device_ controller's name. This patch updates the dummy_hcd driver and changes the gadget name to agree with the gadget_chips.h entry. [PATCH] USB: RNDIS/Ethernet Gadget Driver .inf file [PATCH] USB: remove usb_interface.driver field Remove usb_interface.driver, and along with it the "half bound" state previously associated with drivers binding with claim() instead of probe(). This changes usb_driver_claim_interface() semantics slightly: drivers must now be prepared to accept disconnect() callbacks. Fixes more locking bugs, and a claim() oops that snuck in with a recent patch. USB: remove "released" field from struct usb_interface as it is not needed. USB: clean up usb_get_dev() as it was written quite horribly. USB: add usb_get_intf() and usb_put_intf() functions as they will be needed. SCSI: Updates to non-sector size completion calculations From: Jens Axboe , Mike Christie [AGPGART] VIA GART driver can use the new generic AGPv3 masks. [AGPGART] Efficeon GART driver can use generic masking routine. [AGPGART] SiS 746 chipset also needs extra recovery time when changing mode. [AGPGART] Fix SiS workaround printk. This happens on multiple chipsets. [PATCH] ia64: clean up pcibr_slot.c warnings A few warnings crept into pcibr_slot.c that this patch takes care of. - forward declare pcibr_slot_pwr so it can be used w/o warning - fix argument passed to pcibr_slot_attach in pcibr_slot_enable [PATCH] ia64: fix sn_serial warning In my fixes to quiet the sn_serial driver, I made sn_debug_printf only get used when the DEBUG define was turned on in the driver but forgot to #ifdef out the function definition, causing an 'defined but not used' warning. This patch fixes that. [PATCH] ia64: small SN2 interface.c patch Change the calls to link_path_walk() to path_walk(). link_path_walk() doesn't initialze current->total_link_count and path_walk() does. Without the initialization, path_walks start to fail when 40 sym links have been followed. [CPUFREQ] Various updates/fixes to the powernow-k8 comment header. [CPUFREQ] fix compilation of speedstep-lib with DEBUG set [CPUFREQ] powernow-k8 whitespace changes. Trying to get the diffsize down between me & Pavel. [AGPGART] Actually Call the SiS workaround on SiS 746 too. [PATCH] ia64: bring ia64 nodes online properly Andi's libnuma exposed the fact that we don't bring nodes online properly as we discover them in ia64. Here's a quick patch to fix that. Tested with Andi's numademo program; seems to work fine. [AGPGART] EM64T driver should only run when we have a supported CPU. Otherwise we see strange things at boottime if we compile in all drivers, like this.. agpgart: Unsupported Intel chipset (device id: 1a30) agpgart: Detected an Intel i845 Chipset. [CPUFREQ] Step 1 of SMP support for powernow-k8. Move lots of code to the cpu init routine from the detection routine. Do some SMP sanity checks in the detection routine. [CPUFREQ] powernow-k8 SMP work part 2. Introduce a per-cpu powernow_k8_data struct, and pass it around between all the functions that need to know about it. [PATCH] USB: ehci updates: CONFIG_PCI, integrated TT Generalize the driver a bit: - PCI-specific handling is restricted to a small chunk of init code. Non-PCI implementations are in the pipeline. - Merge support from ARC International (Craig Nadler) for their integrated root hub transaction translators (on PCI). Other implementations should be similar. [PATCH] USB Gadget: ethernet/rndis gadget updates This fixes an oops during "ifconfig usb0 down" after unplug from a Windows box. It also shrinks the driver size to something much more reasonable by leaving out debug messaging, and adds a few missing newlines. [PATCH] I2C: Add ALi 1563 Device ID to pci_ids.h [PATCH] I2C: Add support for the ALi 1563 in the PCI IRQ routing code. [PATCH] I2C: Add ALi 1563 i2c driver The i2c interface on the 1563 is totally different than on both the 1533 and the 1535. It supports i2c 2.0, and happens to be nearly identical to the interface on the i810 chipsets. [PATCH] I2C: Fix check for DEBUG in i2c-ali1563 [PATCH] USB: usbcore blinkenlights The per-port LEDs on the most USB 2.0 hubs are programmable. And the USB spec describes some ways to use them, blinking to alert users about hardware (amber) or software (green) problems. This patch is the infrastructure for that blinking. And if you should happen to "modprobe usbcore blinkenlights", the LEDs will cycle through all the ports ... which is not a USB-standard mode, but it can certainly handy be handy as a system heartbeat visible across the room. [PATCH] sd_shutdown cannot be called when in state SDEV_DEL sd_remove calls sd_shutdown to finish I/O to the disc. However, the state model puts the device in SDEV_DEL before triggering the sd_remove (which won't allow any further I/O at all). Fix by making SDEV_CANCEL the intermediate state and only transitioning to SDEV_DEL after calling device_del(). [ARM PATCH] 1777/1: Add TI OMAP support to ARM core files Patch from Tony Lindgren This patch updates the ARM Linux core files to add support for Texas Instruments OMAP-1510, 1610, and 730 processors. OMAP is an embedded ARM processor with integrated DSP. OMAP-1610 has hardware support for USB OTG, which might be of interest to Linux developers. OMAP-1610 could be easily be used as development platform to add USB OTG support to Linux. This patch is an updated version of an earlier patch 1767/1 with the dummy Kconfig added for OMAP as suggested by Russell King here: http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=1767/1 This patch is brought to you by various linux-omap developers. [ARM PATCH] 1780/1: Add TI OMAP support, include files Patch from Tony Lindgren This patch adds the include files for Texas Instruments OMAP-1510 and 1610 processors. OMAP is an embedded ARM processor with integrated DSP. OMAP-1610 has hardware support for USB OTG, which might be of interest to Linux developers. OMAP-1610 could be easily be used as development platform to add USB OTG support to Linux. This patch is an updated version of patch 1768/1 with Russell King's comments fixed. This patch requires patch 1777/1 applied. This patch is brought to you by various linux-omap developers. [ARM PATCH] 1781/1: Add TI OMAP support, arch files Patch from Tony Lindgren This patch adds the arch files for Texas Instruments OMAP-1510 and 1610 processors. OMAP is an embedded ARM processor with integrated DSP. OMAP-1610 has hardware support for USB OTG, which might be of interest to Linux developers. OMAP-1610 could be easily be used as development platform to add USB OTG support to Linux. This patch is an updated version of patch 1769/1 with Russell King's comments fixed. This patch requires patch 1777/1 applied. This patch is brought to you by various linux-omap developers. [PATCH] SCSI sense buffer size -> 96 some SCSI devices need more than 64bytes of sense buffer. I know about one: The IBM MagStar tapes report the necessity to be cleaned at bytes 70 and report 96 bytes in total. Attached patch increases the sense buffer size to 96 bytes. Fix scsi_device_get to allow NULL devices Modification of patch from SLES-9 [PATCH] sym 2.1.18j sym 2.1.18j: - Add SPI transport attributes (James Bottomley) - Use generic code to do Domain Validation (James Bottomley) - Stop using scsi_to_pci_dma_dir() (Christoph Hellwig) - Change some constants to their symbolic names (Grant Grundler) - Handle a race between a postponed command completing and the EH retrying it (James Bottomley) - If the auto request sense fails, issue a device reset (James Bottomley) [ARM PATCH] 1782/1: discontigmem support for PXA chips Patch from Nicolas Pitre [ARM PATCH] 1783/1: more PXA reg definitions Patch from Nicolas Pitre [ARM PATCH] 1788/1: SC2410 include/asm-arm/arch-s3c2410 [repost of 1778/1] Patch from Ben Dooks This patch is a repost of 1778/1 with the memory.h file fixed. This patch contains all the necessary include files for include/asm-arm/arch-s3c2410 for Samsing S3C2410 SoC CPU support. The patch also includes the support headers for IPAQ H1940, Simtec BAST and VR1000 board support. [ARM PATCH] 1793/1: S3C2410 - arch/arm/mach-s3c2410 [ repost of 1790/1 ] Patch from Ben Dooks Core support for S3C2410 based machines machine support for Simtec BAST, VR1000 and IPAQ H1940 repost of 1790/1 with configuration definition fixed [ARM PATCH] 1792/1: S3C2410 - arch/arm/boot [ fix for 1789/1 ] Patch from Ben Dooks arch/arm/boot support for S3C2410 support for boot (and debug) messages via EmbeddedICE (CP14) comms registers. fixed typos from 1789/1 [ARM PATCH] 1794/1: S3C2410 - arch/arm/kernel patches [ repost 1791/1 ] Patch from Ben Dooks arch/arm/kernel patch for S3C2410 support - default configurations for S3C2410 - build changes for S3C2410 - IRQ support for kernel entry - debug serial support [ARM] Clean up formatting of s3c2410 help texts. [CPUFREQ] Transmeta longrun driver fix. (From Stelian Pop) Upon investigation, the reason is that trying to set the performance to 80% in longrun_determine_freqs leaves the performance to 100%. The performance level, at least on this particular model, can be lowered only in 33% steps. And in order to put the performance to 66%, the code should try to set the barrier to 70%. The following patch does even more, it tries every value from 80% to 10% in 10% steps, until it succeeds in lowering the performance. I'm not sure this is the best way to do it but in any case, it works for me (and should continue to work for everybody else). [ARM] Fix silent build error caused by undefined symbol. Current binutils silently ignores certain undefined symbols; this cset fixes one such instance. [AGPGART] Previous AGPv3 SiS fixes broke AGPv2 users. Oops. [PATCH] ia64: Missing overflow check in mmap Calling mmap with len == -1 was silently accepted. The test in the generic code was fixed in July 2003, but the fix didn't make it into the ia64- specific code. [PATCH] ia64: Missing include in hugetlbpage.c This fixes a missing include file in arch/ia64/mm/hugetlbpage.c in 2.6.5. module.h is needed for EXPORT_SYMBOL. [ARM] Add ecard_(request|release)_resources(). [PATCH] update Compaq Personal Server URL Patch from Petri T. Koistinen Update of Compaq Personal Server URL. [PATCH] ia64: setup max dma addr earlier on hp boxes sba_iommu was setting up MAX_DMA_ADDRESS way too late to do any good. This patch makes it get setup via platform_setup, so it's ready for paging_init(). All pages should show up in zone DMA now. Against latest 2.6. [PATCH] make_coherent pgoff Patch from Hugh Dickins In wandering through the Linus 2.6 tree preparing for changeover of i_mmap and i_mmap_shared to Rajesh's prio tree for object-based rmap... I noticed that pgoff in make_coherent doesn't add up (plus, I think we need to mask out the word "don't" in the comment further down). 2.4.25 looks equally wrong. [CPUFREQ] Fix up docbook parameters on x86 drivers. From Michael Still [CPUFREQ] Grammar fix in p4-clockmod.c Noted by Viktor Radnai. [CPUFREQ] Remove useless goto. (Pavel Machek) [CPUFREQ] Indentation fix. [CPUFREQ] Kill off inlines in powernow-k8 driver. Gcc should be smart enough to do this itself. [CPUFREQ] make powernow-k8 use batps from powernow data struct instead of static struct. [CPUFREQ] Merge a bunch of extra powernow-k8 helpers. [CPUFREQ] Serialise fid/vid changes in powernow-k8 driver. [CPUFREQ] SMP fixes for powernow-k8's check_supported_cpu() [CPUFREQ] printk cleanup in powernow-k8's check_pst_table() [CPUFREQ] Add missing MSR define to fix the powernow-k8 compile. [CPUFREQ] powernow-k8 header cleanups remove unused defines, introduce some new ones, and generally cleanup. [CPUFREQ] fill out the powernow_k8_data table. [CPUFREQ] Use the new fill_powernow_table() to fill struct instead of doing it inline. [PATCH] pcnet32.c add support for 79C976 Please include this patch to add support for the 79C976 device to the pcnet32 driver. [PATCH] pcnet32 all printk under netif_msg Please apply the following patch to 2.6.5. All printk's are now done under netif_msg debug level tests. [PATCH] pcnet32 correct name display This displays the device name (eth%d) instead of the device type when registering the interrupt handler. [PATCH] pcnet32 add led blink capability Please apply this patch to 2.6.5 to include the capability of blinking the LED's for device identification. Ethtool -p support. [CPUFREQ] More SMP/preempt fixes, this time powernowk8_target() Also some changes to use some helpers. Remove unused compatibility-defines include wan/lmc/lmc_ver.h. Noticed by Adrian Bunk. [CPUFREQ] Change powernow-k8 over to use its new KHz frequency helpers [CPUFREQ] Extra debugging foo. [CPUFREQ] Stuck pending bit is now checked in the init routine. [PATCH] dgrs: add missing iounmaps [resend] Insert missing iounmap's. From: Leana Ogasawara [PATCH] lmc header file not needed From: Domen Puncer [CPUFREQ] numerous powernow-k8 cpu_init() fixes/cleanups. [netdrvr r8169] DMA api resync. [netdrvr r8169] ethtool driver info Author: Krishnakumar R. [netdrvr r8169] Barrier against compiler optimization. [netdrvr r8169] DAC changes: - Rx and Tx descriptors rings handled on 64 bit; - enable DAC through use of CPlusCmd register (reserved bits apart, this is similar to the 8139cp driver); - use the higher 32 bits of addresses for the Rx/Tx buffers. [netdrvr r8169] TX irq handler looping fix If a few packets have been scheduled for Tx, it is possible to keep looping in the Tx irq handler as soon as the irq for the first packet has been received until the descriptor of the last packet has been sent (with interrupts disabled btw). [PATCH] remove magic '31' for netdev priv. alignment [resend/rediff] // linux-2.6.5 // remove magic number of '31' from net_device and private alignment; [CPUFREQ] ACPI support for powernow-k8. We fall back on the legacy PSB table if the ACPI tables don't work out. [PATCH] Support newer revisions of broadcoms in b44.c This adds support for newer revisions of the chips. The b44_disable_ints at the beggining actually kills machine with newer revision, but its removal has no ill effects. [CPUFREQ] Bump powernow-k8 revision. [CPUFREQ] As we're using ACPI in powernow-k8 now, we need ACPI to initialise first. [CPUFREQ] Fix %x printk's in powernow-k8. These are hex values. Prefix them all with 0x [netdrvr] Add S2IO 10gige network driver. Contributed by Leonid Grossman @ S2IO [netdrvr s2io] correct an incorrect cleanup I made [PATCH] tc35815 cleanup [PATCH] netdev_priv for xirc2ps_cs, nmclan_cs s/dev->priv/netdev_priv(dev)/ for xirc2ps_cs.c and nmclan_cs.c xircom one is tested. against 2.6.4-bk [netdrvr 8139cp] rearrange priv struct, add cacheline-align markers suggested by Jes Sorensen. [netdrvr s2io] NAPI build fixes [netdrvr 8139cp] locking cleanups * s/spin_lock_irq/spin_lock_irqsave/ where it was simple and easy to verify. * release spinlock earlier in interrupt routine. [netdrvr 8139cp] minor cleanups * update version, copyright date * remove unportable "pci_dev->irq < 2" check in ->probe * don't use ioremap_nocache() without a real reason [netdrvr 8139cp] use netdev_priv() [netdrvr 8139cp] complete 64-bit DMA (PCI DAC) support [netdrvr 8139cp] better dev->close() handling, and misc related stuff * don't synchronize_irq() in cp_stop_hw(). when necessary, do so in the callers. * call synchronize_irq() in cp_close(), after releasing the spinlock. * move netif_stop_queue() and netif_carrier_off() calls inside lock * flush last interrupt status write, in cp_stop_hw() * add unlikely() check for dev==NULL, first thing in the irq handler [PATCH] s2io.h: gcc-3.5 build fix In file included from drivers/net/s2io.c:68: drivers/net/s2io.h: In function `readq': drivers/net/s2io.h:757: error: invalid lvalue in assignment drivers/net/s2io.h:758: error: invalid lvalue in assignment [CPUFREQ] Stop preempt count from going negative. Broken failure path spotted by Dominik Brodowski. Fix SCSI cdrom disconnection race This fixes http://bugme.osdl.org/show_bug.cgi?id=2400 [AGPGART] Fix SiS 746 again. Turns out that this chipset won't work in AGPv3 mode with the generic AGPv3 routines. *somehow*, it works in AGPv3 mode with AGPv2 aperture sizing etc. Very, very strange. Still, until we get some docs from SiS, some support is better than none. [AGPGART] Whitespace cleanup in sis-agp use spaces instead of (borked) tabs. Add missing header changes from SCSI cdrom disconnection fix [PATCH] USB: retry some descriptor fetches This helps Linux handle certain enumeration problems better, by retrying most stalled descriptor fetches; on some devices, those indicate temporary problems. This match makes at least one such (old) device enumerate reliably. [PATCH] USB: fix xsane breakage, hangs on device scan at launch Disable a usbfs disconnect() synchronization hack, which recently started deadlocking because this routine is now called in a different context. It shouldn't be needed any longer now that usbcore shuts down endpoints as part of driver unbinding. (Except maybe on UHCI, which will have canceled but not necessarily completed all requests.) [PATCH] USB: add missing usb entries to sysfs We have found in the course of hacking on HAL that some information that is in /proc/bus/usb/devices is not in sysfs. It would be nice to rely only on sysfs, so the attached patch adds three files to usb devices in sysfs: devnum, maxChild, and version. This patch is actually by David Zuethen, the HAL maintainer - I told him I would clean it up and get it upstream. [PATCH] USB: fix up previous sysfs patch to actually compile... [CPUFREQ] Quieten powernow-k7 in the built-in case. The other cpufreq drivers are quiet in the 'dont have hardware' case, so this should follow suit. [CPUFREQ] Don't bother checking if we need workarounds if we don't support powernow. [PATCH] I2C: Refactor swap_bytes in i2c chip drivers > Ick, no, we should be using the proper kernel call for this, swab16(), > right? Care to redo this patch to just fix the drivers and get rid of > our duplicating of this function. Oh, I didn't know such a function existed, sorry. Here's a new patch, hope you like it. Tested to work on my as99127f, btw (w83781d driver). Documentation update follows (well, tomorrow it does). [ARM PATCH] 1807/1: S3C2410 - onboard serial Patch from Ben Dooks Serial driver for S3C2410 on board UARTs. Re-post of 1796/1 Includes BAST driver to register on-board 16550s. [ARM PATCH] 1806/1: Adding barrier() to show_stack () for proper backtracing Patch from Marc Singer As suggested by Russell, we add a barrier() before returning from stack_trace(). This was helpful when diagnosing a problem with a kernel transition to user-space where the problem was a lack of floating point support in the kernel. Without this change, the backtrace reported an error. It is possible that this change has already been made. I don't see it in any of the applied patches that I can read. [ARM] Fix ordering of machine class selection. The machine class should be in alphabetical order. Swap ordering of the recently added TI and S3C2410 entries to return it to this ordering. [PATCH] SCSI: make DV check device capabilities the SPI transport class DV should check the data we derive from the inquiry to see if the device is capable of supporting wide/sync before trying to validate the settings. [PATCH] I2C: class fixup for the ali1563 driver [PATCH] I2C: i2c-ali1563.c section fix ali1563_shutdown() is called from __init ali1563_probe() and hence cannot be marked __init. USB: fix pl2303 handling of status bits. Patch originally from Kevin Watkins USB: fix empty write issue in pl2303 driver. Patch originally from Christian Groessler but cleaned up by me. [ARM] Move definition of the kernel module space to asm-arm Since all machine classes define module space the same way, we move this into the common ARM code. [PATCH] ia64: put URLs in documentation files inside angle-brackets Patch by Petri T. Koistinen. [PATCH] ia64: ACPI IRQ cleanup (arch part) Here's the ia64 part of the ACPI IRQ cleanup I proposed here: http://www.gelato.unsw.edu.au/linux-ia64/0403/8979.html After the arch bits are in, I'll post the corresponding ACPI changes. I removed the "Found IRQ" printk now because when the ACPI change goes in, dev->irq won't be initialized until *after* acpi_pci_irq_enable(). [PATCH] ia64: allow simscsi to be a module Requiring CONFIG_HP_SIMSCSI to be either "y" or "n" breaks allmodconfig, because simscsi ends up built-in, while scsi itself is a module. So allow simscsi to be a module also. [PATCH] ia64: perfmon update Here is a new perfmon patch. It is important because it fixes the problem of the close() when the file descriptor is shared between two related processes. The good thing is that it simplifies a lot the cleanup of the sampling buffer. Here is the ChangeLog: - fix bug in pfm_close() when the descriptor is shared between related processed. Introduce a pfm_flush() called for each invocation of close(). pfm_close() only called for the last user. - fix pfm_restore_monitoring() to also reload the debug registers. They could be modified while monitoring is masked. - fix pfm_close() to clear ctx_fl_is_sampling. - fix a bug in pfm_handle_work() which could cause the wrong PMD to be reset. - converted PROTECT_CTX/UNPROTECT_CTX into local_irq_save/restore to keep context protection but allow IPI to proceed. - updated pfm_syswide_force_stop() to use local_irq_save/restore now that the context is protected from the caller side. - updated pfm_mck_pmc_check() to check if context is loaded before checking for special IBR/DBR combinations. Clearing the debug registers is not needed when the context is not yet loaded. - updated perfmon.h to have to correct prototype definitions for the pfm_mod_*() functions. - got rid of the PFM_CTX_TERMINATED state. - cleanup the DPRINT() statements to remove explicit output of current->pid. This is done systematically by the macros. - added a systctl entry (expert_mode) to bypass read/write checks on PMC/PMD. As its name indicates this is for experts ONLY. Must be root to toggle /proc/sys entry. - corrected pfm_mod_*() to check against the current task. - removed pfm_mod_fast_read_pmds(). It is never needed. - added pfm_mod_write_ibrs() and pfm_mod_write_dbrs(). ia64: Make acpi.c compile again: there was an implicit declaration mismatch because the external declaration isn't in the arch- independent ACPI bits yet. [PATCH] USB: Updated unusual_dev.h entry On Thu, 8 Apr 2004, Marcin Juszkiewicz wrote: > usb-storage: This device (054c,0025,0100 S 04 P 01) has unneeded SubClass and > Protocol entries in unusual_devs.h Thank you for sending this in. [PATCH] I2C: Enable changing fan_divs in lm80 driver For some reason the original lm80 driver in 2.6 cannot set fan_divs (while the 2.4 driver could). This patch brings support back. It was lightly tested by one user. This patch also suggests some code cleanups (fan code refactoring). I'll send a different patch later for these. [PATCH] I2C: New chip driver: pcf8591 Please find below a patch against kernel 2.6.5-rc2-mm4 to add the pcf8591 driver (a 8-bit A/D and D/A converter). I have ported it from the 2.4 version, and it includes some fixes, improvements and simplifications. It has been reviewed by Jean Delvare on IRC. Please also note that the patch also fixes a missing space in drivers/i2c/chips/Kconfig, introduced by the previous patch I sent you concerning the pcf8574. [PATCH] I2C: minor bugfixes for the pcf8591.c driver and formatting cleanups. [PATCH] I2C: clean up out of order bus Makefile and Kconfig entries. [netdrvr tulip] remove ChangeLog file It was out of date. BitKeeper logs are more recent and more accurate. [netdrvr tulip] add MII support for Comet chips Add MII support for ADMtek Comet (Linksys LNE100TX v4.1 & others): * tulip_core.c: add HAS_MII flag to COMET entry in tulip_tbl[] * timer.c (comet_timer): add missing call to tulip_check_duplex() and replace inl() calls with tulip_mdio_read() calls Changes modeled after Donald Becker's tulip.c:v0.98 1/8/2004 [SERIAL] Unuse old SERIAL_IO_xxx macros. 8250.c should be using the replacement UPIO_xxx macros instead. [SERIAL] Remove some dead declarations. [SERIAL] Correct minor debugging format string error. [SERIAL] Don't try to free resources we didn't request. [SERIAL] Pass device pointer through to tty_register_device. This allows drivers to pass their struct device through to tty_register_device, which in turn allows sysfs to show which device and driver owns the UART. [SERIAL] Pass sa11x0 struct device through to tty_register_device. [SERIAL] Remove UPF_HUP_NOTIFY; this is no longer used. [SERIAL] HCDP IRQ fixup Some pre-production firmware has incorrect GSI values in the HCDP, which tells us where the serial console port is, so we have to do the auto-IRQ thing after all. [SERIAL] Add extra suspend/resume functionality to serial_cs. This calls into the 8250 driver so that the serial port settings can be saved and restored over a suspend/resume cycle. Previous kernels have assumed that the port will be re-opened after such an event, which may not be the case. Convert sd to kref and fix sd_open/sd_remove race We actually fix this race by mediating the object release/get race (i.e. we destroy the scsi_disk object when its reference count goes 1->0, we use a semaphore to prevent something else trying to get a reference after or during this). The open/remove race is actually irrelevant because even if we open an already removed object, all that will happen is that we get a reference to a device that always returns EIO. Convert sr to a kref and fix sr_open/sr_remove race We actually fix this race by mediating the object release/get race (i.e. we destroy the scsi_cd object when its reference count goes 1->0, we use a semaphore to prevent something else trying to get a reference after or during this). The open/remove race is actually irrelevant because even if we open an already removed object, all that will happen is that we get a reference to a device that always returns EIO. [ARM] Reduce the number of unnecessary includes in decompressor. This appears to work around the gcc problem where gcc adds extra .globl directives into the assembly for misc.s for its internal libgcc functions. [PCMCIA] Fix resource handling for memory probe Add claim_region and free_region to claim/free resource regions. This ensures that we only attempt to probe memory regions which are directly related to the socket in question, rather than any memory region we happen to be able to request. This also fixes a memory leak where we don't kfree the resources we previously allocated. [PCMCIA] Remove racy check_io_resource() Convert do_io_probe() to use claim/free_region() rather than the racy check_io_resource(). Remove check_io_resource() and the now unused resource_parent() functions. [PCMCIA] Use kernel resource core as primary resource allocator. Turn the resource management on its head. Rather than using PCMCIA's resource database as the primary object to allocate resources, use Linux's standard resource allocation instead. When we have a socket on a PCI bus, we always use the PCI resource allocation functions rather than the kernels core resource allocation, so that we can take account of any bridges. [ARM] Drop -traditional from assembler command line in decompressor. [PCMCIA] Re-export pci_bus_alloc_resource() from PCI code. Since PCMCIA now uses this, re-export it. [PCMCIA] Fix warning about truncated integer. [ARM] Fix spacing in arch/arm/boot/Makefile and arch/arm/mm/Kconfig. NFSv2/v3/v4: Prepare the nfs_page struct to allow for short reads. [SERIAL] Add support for TI16C750 hardware flow control. NFSv2/v3/v4: Add support for asynchronous reads even if rsize NFSv2/v3/v4: Add support for asynchronous writes even if wsize NFSv2/v3/v4: When pdflush() is trying to free up memory by calling our writepages() method, throttle all writes to that mountpoint. RPC,NFS: remove instances of tests for waitqueue_active(). Those can be racy. RPC: remove unnecessary support for sk->sk_sleep on those sockets that are owned by the RPC client. RPC: add fair queueing to the RPC scheduler. If a wait queue is defined as a "priority queue" then requests are dequeued in blocks of 16 in order to work well with write gathering + readahead on the server. There are 3 levels of priority. The high priority tasks get scheduled 16 times for each time the default level gets scheduled. The lowest level gets scheduled once every 4 times the normal level gets scheduled. Original patch contributed by Shantanu Goel. RPC: Close some potential scheduler races in rpciod. NFSv2/v3/v4: Deal with the case where the server reads/writes fewer bytes than we requested due to resource limitations etc. RPCSEC_GSS: Fix integrity checksum bugs. Need to take into account the starting offset when calculating the page length. NFSv2/v3/v4: Fix a slowdown of O_SYNC and O_DIRECT writes that resulted from over-aggressive attribute cache revalidation. NFSROOT: clean up the parser routines (patch by Fabian Frederic) RPCSEC_GSS: Fix RPC padding in two instances of RPCSEC_GSS code. RPC: Clean up XDR encoding of opaque data. NFSv4: attribute bitmap values need to be unsigned long integers. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating ACCESS RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating GETATTR RPC calls. NFSv4: Remove unnecessary post-op attributes from read/write/... calls. The new attribute revalidation scheme doesn't rely on them. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating LOOKUP RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for looking up the mountpoint. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating REMOVE RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating RENAME RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for hard linking NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating CREATE RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating PATHCONF RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating STATFS RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme when doing sillyrename() completion. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating READLINK RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating READDIR RPC calls. NFSv4: assorted code readability cleanups in the XDR NFSv4: clean up the FSINFO XDR code to conform to the new scheme for GETATTR. RPC: add a field to the xdr_buf that explicitly contains the maximum buffer length. RPC: make the client receive xdr_buf return the actual length of the RPC length. NFSv4/RPC: improved checks to prevent XDR reading beyond the actual end of the RPC reply. NFSv4: Check server capabilities at mount time so that we can optimize away requests for attributes that are not supported. In particular, we wish to determine whether or not the server supports ACLs. RPC: Fix a bug introduced by trond.myklebust@fys.uio.no|ChangeSet|20040314024328|33542. portmap can fail due to the call to xprt_close() in xprt_connect(): xprt_disconnect() wakes up xprt->snd_task, and sets -ENOTCONN, which again gets converted to EIO by xprt_connect_status() Fix is to remove call to xprt_disconnect(). We don't need it in the case when we are reconnecting. However we do need to ensure that we wake up xprt->snd_task if reconnection fails. Diagnosis & proposed solution by Olaf Kirch Lockd: Fix waiting on the server grace period. The old code was wrong in that it assumed that we are out the grace period as soon as the client is finished doing lock recovery. Also ensure that we respect signals when waiting for the server grace period to end. RPC: Ensure that we only schedule one RPC request at a time. In theory the current code could cause two to be scheduled if something wakes up xprt->snd_task before keventd has had a chance to run xprt_sock_connect() NFSv3: Fix an XDR overflow bug in READDIRPLUS [PCMCIA] init_pcmcia_cs() to return error from class_register() Patch from: Randy Dunlap From: Walter Harms Now init_pcmcia_cs() returns the result of class_register(). Therefore init_pcmcia_cs() will possibly return an error. [ARM] use errno #defines in assembly Patch from: Randy Dunlap From: Danilo Piazzalunga Some assembly code (on various archs) either 1. uses hardcoded errno numbers instead of the canonical macro names, or 2. defines them locally, instead of including the appropriate header (while including other headers). This patch "fixes" such usage in - getuser.S for arm - putuser.S for arm JFS: Fix race in jfs_sync Don't let final iput happen while jfs_sync is processing inode. [PATCH] Fix unaligned stxncpy again Herbert Xu noted: "The current stxncpy on alpha is still broken when it comes to single word, unaligned, src misalignment > dest misalignment copies. I've attached a program which demonstrates this problem." Ugh, indeed. It fails when there is a zero byte before the data. Thanks. Here is the fix for this (both regular and ev6 version). [PATCH] x86-64 update From: Andi Kleen Current x86-64 patchkit for 2.6.5. - Add drivers/firmware/Kconfig - Clarify description of CONFIG_IOMMU_DEBUG - Use correct gcc option to optimize for Intel CPUs - Add EDD support (Matt Domsch) - Add workaround for broken IOMMU on VIA hardware. Uses swiotlb there now. - Handle more than 8 local APICs (Suresh B Siddha) - Delete obsolete mtrr Makefile - Add x86_cache_alignment and set it up properly for P4 (128 bytes instead of 64bytes). Also report in /proc/cpuinfo - Minor cleanup in in_gate_area - Make asm-generic/dma-mapping.h compile with !CONFIG_PCI Just stub out all functions in this case. This is mainly to work around sysfs. - More !CONFIG_PCI compile fixes - Make u64 sector_t unconditional [PATCH] Fix URLs in Kconfig files From: Rusty Russell From: "Petri T. Koistinen" 1) Various URLs in the Kconfig files are out of date: update them. 2) URLs should be of form . 3) References to files in the source should be of form 4) Email addresses should be of form [PATCH] feed devfs through Lindent Nobody seems to have any outstanding work against devfs, so... [PATCH] generalise system_running From: Olof Johansson It's currently a boolean, but that means that system_running goes to zero again when shutting down. So we then use code (in the page allocator) which is only designed to be used during bootup - it is marked __init. So we need to be able to distinguish early boot state from late shutdown state. Rename system_running to system_state and give it the three appropriate states. [PATCH] vt.c cleanup - Remove unneeded casts of a void * - whitespace consistency. [PATCH] con_open() speedup/cleanup con_open() is called on every open of the tty, even if the tty is already all set up. We only need to do that initialisation if the tty is being set up for the very first time (tty->count == 1). So do that: check for tty_count == 1 inside console_sem() and if so, bypass all the unnecessary initialisation. Note that this patch reintroduces the con_close()-vs-init_dev() race+oops. This is because that oops is accidentally prevented because when it happens, con_open() reinstalls tty->driver_data even when tty->count > 1. But that's bogus, and when the race happens we end up running vcs_make_devfs() and vcs_remove_devfs() against the same console at the same time, producing indeterminate results. So the race needs to be fixed again, for real. [PATCH] remove down_tty_sem() Remove the down_tty_sem() and up_tty_sem() and replace them with open-coded up() and down(). This is an equivalent transformation. I assume these functions were created to open the possibility of per-tty semaphores at some time in the future. But the code which is protected by this lock deals with two tty's at the same time, and the next patch will need to release the lock after the tty has been destroyed. [PATCH] Fix VT open/close race The race is that con_close() can sleep, and drops the BKL while tty->count==1. But another thread can come into init_dev() and will take a new ref against the tty and start using it. But con_close() doesn't notice that new ref and proceeds to null out tty->driver_data while someone else is using the resurrected tty. So the patch serialises con_close() against init_dev() with tty_sem. Here's a test app which reproduced the oops instantly on 2-way. It realy needs to be run against all tty-capable devices. /* * Run this against a tty which nobody currently has open, such as /dev/tty9 */ #include #include #include #include #include #include void doit(char *filename) { int fd,x; fd = open(filename, O_RDWR); if (fd < 0) { perror("open"); exit(1); } ioctl(fd, KDKBDREP, &x); close(fd); } main(int argc, char *argv[]) { char *filename = argv[1]; for ( ; ; ) doit(filename); } [PATCH] i4l: kernelcapi receive workqueue and locking rework From: Armin Schindler With this patch the ISDN kernel CAPI code uses a per application workqueue with proper locking to prevent message re-ordering due to the fact a workqueue may run on another CPU at the same time. Also some locks for internal data is added. Removed global recv_queue work, use per application workqueue. Added proper locking mechanisms for application, controller and application workqueue function. Increased max. number of possible applications and controllers. [PATCH] Fix get_wchan() FIXME wrt. order of functions From: William Lee Irwin III This addresses the issue with get_wchan() that the various functions acting as scheduling-related primitives are not, in fact, contiguous in the text segment. It creates an ELF section for scheduling primitives to be placed in, and places currently-detected (i.e. skipped during stack decoding) scheduling primitives and others like io_schedule() and down(), which are currently missed by get_wchan() code, into this section also. The net effects are more reliability of get_wchan()'s results and the new ability, made use of by this code, to arbitrarily place scheduling primitives in the source code without disturbing get_wchan()'s accuracy. Suggestions by Arnd Bergmann and Matthew Wilcox regarding reducing the invasiveness of the patch were incorporated during prior rounds of review. I've at least tried to sweep all arches in this patch. [PATCH] get_wchan() sparc64 fix From: William Lee Irwin III Now the scheduler text is in its own ELF section this branch is asking for an illegal displacement. [PATCH] ppc32: Fix thinko in the altivec exception code From: Benjamin Herrenschmidt Without this patch, executing an altivec instruction on an altivec capable CPU with a kernel that do not have CONFIG_ALTIVEC set would result in a kernel crash. (Fix forward ported from 2.4 by John Whitney ) [PATCH] ppc64: si_addr fix From: Benjamin Herrenschmidt This patch fixes si_addr on some segfaults in 64 bits mode, it used to be bogus (address not passed to do_page_fault by the asm code after a failure to set an SLB entry). [PATCH] ppc64: Fix bug in hugepage support From: David Gibson The PPC64 version of is_aligned_hugepage_range() is buggy. It is supposed to test not only that the given range is hugepage aligned, but that it lies within the address space allowed for hugepages. We were checking only that the given range intersected the hugepage range, not that it lay entirely within it. This patch fixes the problem and changes the name of some macros to make it less likely to make that misunderstanding again. [PATCH] ppc64: hugepage bugfix From: David Gibson Found this again while looking at hugepage extensions. Haven't actually had it bite yet - the race is small and the other bug will never be triggered in 32-bit processes, and the function is rarely called on 64-bit processes. This patch fixes two bugs in the (same part of the) PPC64 hugepage code. First the method we were using to free stale PTE pages was not safe with some recent changes (race condition). BenH has fixed this to work in the new way. Second, we were not checking for a valid PGD entry before dereferencing the PMD page when scanning for stale PTE page pointers. [PATCH] ppc64: fix failure return codes from {pci,vio}_alloc_consistent() From: Olof Johansson A bug snuck in during the rewrite of ppc64 IOMMU code. When a {pci,vio}_alloc_consistent() call fails, DMA_ERROR_CODE is returned instead of NULL. [PATCH] ppc64: Fix G5 build with DART (iommu) support From: Benjamin Herrenschmidt A recent patch that cleaned up some absolute/virt translation macros forgot one occurence, thus breaking g5 build with iommu support. [PATCH] disable VT on iSeries by default From: Paul Mackerras This patch from Julie DeWandel makes CONFIG_VT default to N on iSeries machines which are using the iSeries virtual console driver viocons.c. The VT console and the viocons code can't coexist because they use the same tty numbers, that is, viocons supplies /dev/tty1. Without this patch the user has to figure out somehow that s/he has to turn on CONFIG_EMBEDDED in order to be able to turn off CONFIG_VT, which is really very non-obvious. [PATCH] ppc64: export itLpNaca on iSeries From: Paul Mackerras This patch from Julie DeWandel exports the symbol itLpNaca on iSeries machines, for the use of the viodasd driver. [PATCH] PPC64: iSeries virtual ethernet driver From: Stephen Rothwell This is the iSeries virtual ethernet driver. David Gibson has taken you previous comments and hopefully sitisfied most of them. The driver has also undergone some more testing which showed up some bugs which have been addressed. Unfortunately, Anton is about to submit some other patches of mine which will sightly comflict with this. I will send a patch shortly that will (hopefully) fix that. [PATCH] ppc64: allow hugepages anywhere in low 4GB From: David Gibson On PPC64, to deal with the restrictions imposed by the PPC MMU's segment design, hugepages are only allowed to be mapping in two fixed address ranges, one 2-3G (for use by 32-bit processes) and one 1-1.5T (for use in 64-bit processes). This is quite limiting, particularly for 32-bit processes which want to use a lot of large page memory. This patch relaxes this restriction, and allows any of the low 16 segments (i.e. those below 4G) to be individually switched over to allow hugepage mappings (provided the segment does not already have any normal page mappings). The 1-1.5T fixed range for 64-bit processes remains. [PATCH] ppc64: Move EPOW log buffer to BSS From: Olof Johansson RTAS on IBM pSeries runs in real mode, so all pointers being passed in to it need to be in low memory. There's two places in the RAS code that passes in pointers to items on the stack, which might end up being above the limit. Below patch resolves this by creating a buffer in BSS + a lock for serialization. There's no reason to worry about contention on the lock, since rtas_call() also serializes on a single spinlock and this is an infrequent code path in the first place. [PATCH] ppc64: Disable SMT snooze by default From: Anton Blanchard Disable SMT snooze by default [PATCH] ppc64: Allow PCI devices to use address that happens to fall in the ISA range From: Jake Moilanen Allow PCI devices to use address that happens to fall in the ISA range, but still protect against ISA device accesses when there is not an ISA bus. [PATCH] ppc64: JS20 PHB devfn fix From: Jake Moilanen The JS20 uses devfn 0 for a HT->PCI bridge. The PHB devfn assumption does not hold for this case. [PATCH] ppc64: Correct comments for the offsets of fields in paca From: Will Schmidt Correct comments for the offsets of fields in paca [PATCH] ppc64: Make rtasd dump KERN_DEBUG From: Jake Moilanen Change the loglevel of an error log printed so it does not goto the console. Since error logs can be upto 2k in size, it can spam the console. [PATCH] ppc64: Fix xmon compile warning From: Joel Schopp Fix includes to avoid the compiler warning: arch/ppc64/xmon/start.c: In function `xmon_readchar': arch/ppc64/xmon/start.c:104: warning: implicit declaration of function `xmon_printf' [PATCH] ppc64: Misc rtasd fixes From: Jake Moilanen Misc rtasd fixes for some broken firmware versions. [PATCH] ppc64: Additional PVR value for power5 processor From: Will Schmidt Additional PVR value for power5 processor [PATCH] ppc64: Add support for hotplug cpus From: Joel Schopp Add support for hotplug cpus [PATCH] ppc64: Add RTAS os-term call for panic on pSeries From: Michael Strosaker Add RTAS os-term call for panic on pSeries [PATCH] ppc64: Fix xics irq affinity bug From: Anton Blanchard Fix xics irq affinity bug. We were anding with cpu_online_map but werent using the result later on. [PATCH] ppc64: irq cleanups From: Paul Mackerras Create and use irq_offset_up/down, get_irq_desc, for_each_irq [PATCH] ppc64: Create xics get_irq_server From: Anton Blanchard Create xics get_irq_server and use it in enable/disable code. [PATCH] ppc64: Put SMT threads into global interrupt queue From: David Engebretsen Put SMT threads into global interrupt queue [PATCH] ppc64: Update CPU features From: Anton Blanchard Update CPU features. Remove DABR feature, all cpus have it. Add MMCRA, PMC8, SMT, COHERENT_ICACHE, LOCKLESS_TLBIE features [PATCH] ppc64: Move sysfs specific stuff into sysfs.c From: Anton Blanchard Move sysfs specific stuff into sysfs.c [PATCH] ppc64: Add some POWER5 specific optimisations From: Anton Blanchard Add some POWER5 specific optimisations: - icache is coherent, no need to explicitly flush - tlbie lock no longer required [PATCH] ppc64: Add PMCs to sysfs From: Anton Blanchard Add PMCs to sysfs. [PATCH] ppc64: Add HW PMC support to oprofile From: Anton Blanchard Add HW PMC support to oprofile [PATCH] ppc64: Register secondary threads in NUMA init code From: Anton Blanchard Register secondary threads in NUMA init code [PATCH] ppc64: Use enum dma_data_direction for the vio DMA api routines. From: Stephen Rothwell This patch uses enum dma_data_direction for the vio DMA api routines. This allows us to remove some include of linux/pci.h. Also missed some pci_dma_mapping_error uses. [PATCH] ppc64: Use enum dma_data_direction for all APIs From: Stephen Rothwell This is just a cleanup to use enum dma_data_direction for all APIs except the pci_dma_ ones (since they are defined generically). Also make most of the functions in arch/ppc64/kernel/pci_iommu.c static. [PATCH] ppc64: Consolidate some of the iommu DMA mapping routines. From: Stephen Rothwell This patch consolidates some of the iommu DMA mapping routines. [PATCH] ppc64: change the iSeries virtual device drivers to use the vio infrastructure for DMA mapping From: Stephen Rothwell This patch changes the iSeries virtual device drivers to use the vio infrastructure for DMA mapping instead of the PCI infrastructure. This is a step along the way to integrating them correctly into the driver model. [PATCH] ppc64: replace vio_dma_mapping_error with dma_mapping_error everywhere. From: Stephen Rothwell James Bottomley is right, this was a mistake. This patch replaces vio_dma_mapping_error with dma_mapping_error everywhere. [PATCH] ppc64: add platform identification to oops messages From: Anton Blanchard [PATCH] ppc64: Oops cleanup From: Anton Blanchard Oops cleanup: - Move prototypes into system.h - Move the debugger hooks into die, all the calls sites were calling them. - Handle bad values passed to prregs [PATCH] ppc64: Add smt_snooze_delay cpu sysfs attribute From: Anton Blanchard Add smt_snooze_delay cpu sysfs attribute [PATCH] ppc64: DMA API updates From: Anton Blanchard DMA API updates, in particular adding the new cache flush interfaces. [PATCH] ppc64: Remove unused rtas functions From: Joel Schopp I was looking at rtas serialization for reasons I won't go into here. While wandering through the code I found that two functions were not properly serialized. phys_call_rtas and phys_call_rtas_display_status are the functions. After looking further they are redundant and not used anywhere at all. [PATCH] ppc64: Quieten NVRAM driver From: Anton Blanchard Quieten NVRAM driver [PATCH] ppc64: UP compile fixes From: Anton Blanchard UP compile fixes [PATCH] ppc44x: fix memory leak From: Matt Porter This fixes a memory leak when freeing pgds on PPC44x. [PATCH] Quota locking fixes From: Jan Kara Change locking rules in quota code to fix lock ordering especially wrt journal lock. Also some unnecessary spinlocking is removed. The locking changes are mainly: dqptr_sem, dqio_sem are acquired only when transaction is already started, dqonoff_sem before a transaction is started. This change requires some callbacks to ext3 (also implemented in this patch) to start transaction before the locks are acquired. [PATCH] fs/inode.c list_head cleanup Teach inode.c about list_move(). [PATCH] search for /init for initramfs boots From: Olaf Hering initramfs can not be used in current 2.6 kernels, the files will never be executed because prepare_namespace doesn't care about them. The only way to workaround that limitation is a root=0:0 cmdline option to force rootfs as root filesystem. This will break further booting because rootfs is not the final root filesystem. This patch checks for the presence of /init which comes from the cpio archive (and thats the only way to store files into the rootfs). This binary/script has to do all the work of prepare_namespace(). [PATCH] knfsd: Return -EOPNOTSUPP when unknown mechanism name encountered From: NeilBrown It's better than oopsing. [PATCH] knfsd: Minor fix to error return when updating server authentication information From: NeilBrown [PATCH] knfsd: fix a problem with incorrectly formatted auth_error returns. From: NeilBrown From: Fred Isaman [PATCH] knfsd: Remove name_lookup.h that noone is using anymore. From: NeilBrown [PATCH] knfsd: Add server-side support for the nfsv4 mounted_on_fileid attribute. From: NeilBrown [PATCH] knfsd: Improve UTF8 checking. From: NeilBrown From: Fred. We don't do all the utf8 checking we could in the kernel, but we do some simple checks. Implement slightly stricter, and probably more efficient, checking. [PATCH] knfsd: Export a symbol needed by auth_gss From: NeilBrown From: "J. Bruce Fields" Without this compiling auth_gss as module fails. [PATCH] knfsd: Add data integrity to serve rside gss From: NeilBrown From: "J. Bruce Fields" rpcsec_gss supports three security levels: 1. authentication only: sign the header of each rpc request and response. 2. integrity: sign the header and body of each rpc request and response. 3. privacy: sign the header and encrypt the body of each rpc request and response. The first 2 are already supported on the client; this adds integrity support on the server. [PATCH] md: merge_bvec_fn needs to know about partitions. From: Neil Brown Addresses http://bugme.osdl.org/show_bug.cgi?id=2355 It seems that a merge_bvec_fn needs to be aware of partitioning... who would have thought it :-( The following patch should fix the merge_bvec_fn for both linear and raid0. We teach linear and raid0 about partitions in the merge_bvec_fn. ->merge_bvec_fn needs to make decisions based on the physical geometry of the device. For raid0, it needs to decide if adding the bvec to the bio will make the bio span two drives. To do this, it needs to know where the request is (what the sector number is) in the whole device. However when called from bio_add_page, bi_sector is the sector number relative to the current partition, as generic_make_request hasn't been called yet. So raid_mergeable_bvec needs to map bio->bi_sector (which is partition relative) to a bi_sector which is device relative, so it can perform proper calculations about when chunk boundaries are. [PATCH] posix message queues: code move From: Manfred Spraul cleanup of sysv ipc as a preparation for posix message queues: - replace !CONFIG_SYSVIPC wrappers for copy_semundo and exit_sem with static inline wrappers. Now the whole ipc/util.c file is only used if CONFIG_SYSVIPC is set, use makefile magic instead of #ifdef. - remove the prototypes for copy_semundo and exit_sem from kernel/fork.c - they belong into a header file. - create a new msgutil.c with the helper functions for message queues. - cleanup the helper functions: run Lindent, add __user tags. [PATCH] posix message queues: syscall stubs From: Manfred Spraul Add -ENOSYS stubs for the posix message queue syscalls. The API is a direct mapping of the api from the unix spec, with two exceptions: - mq_close() doesn't exist. Message queue file descriptors can be closed with close(). - mq_notify(SIGEV_THREAD) cannot be implemented in the kernel. The kernel returns a pollable file descriptor . User space must poll (or read) this descriptor and call the notifier function if the file descriptor is signaled. [PATCH] posix message queues: implementation From: Manfred Spraul Actual implementation of the posix message queues, written by Krzysztof Benedyczak and Michal Wronski. The complete implementation is dependant on CONFIG_POSIX_MQUEUE. It passed the openposix test suite with two exceptions: one mq_unlink test was bad and tested undefined behavior. And Linux succeeds mq_close(open(,,,)). The spec mandates EBADF, but we have decided to ignore that: we would have to add a new syscall just for the right error code. The patch intentionally doesn't use all helpers from fs/libfs for kernel-only filesystems: step 5 allows user space mounts of the file system. Signal changes: The patch redefines SI_MESGQ using __SI_CODE: The generic Linux ABI uses a negative value (i.e. from user) for SI_MESGQ, but the kernel internal value must be posive to pass check_kill_value. Additionally, the patch adds support into copy_siginfo_to_user to copy the "new" signal type to user space. Changes in signal code caused by POSIX message queues patch: General & rationale: mqueues generated signals (only upon notification) must have si_code == SI_MESGQ. In fact such a signal is send from one process which caused notification (== sent message to empty message queue) to another which requested it. Both processes can be of course unrelated in terms of uids/euids. So SI_MESGQ signals must be classified as SI_FROMKERNEL to pass check_kill_permissions (not need to say that this signals ARE from kernel). Signals generated by message queues notification need the same fields in siginfo struct's union _sifields as POSIX.1b signals and we can reuse its union entry. SI_MESGQ was previously defined to -3 in kernel and also in glibc. So in userspace SI_MESGQ must be still visible as -3. Solution: SI_MESGQ is defined in the same style as SI_TIMER using __SI_CODE macro. Details: Fortunately copy_siginfo_to_user copies si_code as short. So we can use remaining part of int value freely. __SI_CODE does the work. SI_MESGQ is in kernel: 6<<16 | (-3 & 0xffff) what is > 0 but to userspace is copied (short) SI_MESGQ == -3 Actual changes: Changes in include/asm-generic/siginfo.h __SI_MESGQ added in signal.h to represent inside-kernel prefix of SI_MESGQ. SI_MESGQ is redefined from -3 to __SI_CODE(__SI_MESGQ, -3) Except mips architecture those changes should be arch independent (asm-generic/siginfo.h is included in arch versions). On mips SI_MESGQ is redefined to -4 in order to be compatible with IRIX. But the same schema can be used. Change in copy_siginfo_to_user: We only add one line to order the same copy semantics as for _SI_RT. This change isn't very portable - some arch have its own copy_siginfo_to_user. All those should have similar change (but possibly not one-line as _SI_RT case was sometimes ignored because i wasn't used yet, e.g. see ia64 signal.c). Update: mq: only fail with invalid timespec if mq_timed{send,receive} needs to block From: Jakub Jelinek POSIX requires EINVAL to be set if: "The process or thread would have blocked, and the abs_timeout parameter specified a nanoseconds field value less than zero or greater than or equal to 1000 million." but 2.6.5-mm3 returns -EINVAL even if the process or thread would not block (if the queue is not empty for timedreceive or not full for timedsend). [PATCH] posix message queues: linux-specific poll extension From: Manfred Spraul Linux specific extension: make the message queue identifiers pollable. It's simple and could be useful. [PATCH] posix message queues: made user mountable From: Manfred Spraul Make the posix message queue mountable by the user. This replaces ipcs and ipcrm for posix message queue: The admin can check which queues exist with ls and remove stale queues with rm. I'd like a final confirmation from Ulrich that our SIGEV_THREAD approach is the right thing(tm): He's aware of the design and didn't object, but I think he hasn't seen the final API yet. [PATCH] posix message queue update From: Manfred Spraul My discussion with Ulrich had one result: - mq_setattr can accept implementation defined flags. Right now we have none, but we might add some later (e.g. switch to CLOCK_MONOTONIC for mq_timed{send,receive} or something similar). When we add flags, we might need the fields for additional information. And they don't hurt. Therefore add four __reserved fields to mq_attr. - fail mq_setattr if we get unknown flags - otherwise glibc can't detect if it's running on a future kernel that supports new features. - use memset to initialize the mq_attr structure - theoretically we could leak kernel memory. - Only set O_NONBLOCK in mq_attr, explicitely clear O_RDWR & friends. openposix uses getattr, attr |=O_NONBLOCK, setattr - a sane approach. Without clearing O_RDWR, this fails. I've retested all openposix conformance tests with the new patch - the two new FAILED tests check undefined behavior. Note that I won't have net access until Sunday - if the message queue patch breaks something important either ask Krzysztof or drop it. Ulrich had another good idea for SIGEV_THREAD, but I must think about it. It would mean less complexitiy in glibc, but more code in the kernel. I'm not yet convinced that it's overall better. [PATCH] security bugfix for mqueue From: Manfred Spraul I found a security bug in the new mqueue code: a process that has only write permissions to a message queue could call mq_notify(SIGEV_THREAD) and use the returned notification file descriptor to read from the message queue. [PATCH] split netlink_unicast From: Manfred Spraul The attached patch splits netlink_unicast into three steps: - netlink_getsock{bypid,byfilp}: lookup the destination socket. - netlink_attachskb: perform the nonblock checks, sleep if the socket queue is longer than the limit, etc. - netlink_sendskb: actually send the skb. jamal looked over it and didn't see a problem with the netlink change. The actual use from ipc/mqueue.c is still open (just send back whatever the C library passed to mq_notify, add an nlmsghdr or perhaps even make it a specialized netlink protocol), but the attached patch is independant from the the message queue change. (acked by davem) [PATCH] posix message queues: send notifications via netlink From: Manfred Spraul SIGEV_THREAD means that a given callback should be called in the context on a new thread. This must be done by the C library. The kernel must deliver a notice of the event to the C library when the callback should be called. This patch switches to a new, simpler interface: User space creates a socket with socket(PF_NETLINK, SOCK_RAW,0) and passes the fd to the mq_notify call together with a cookie. When the mq_notify() condition is satisfied, the kernel "writes" the cookie to the socket. User space then reads the cookie and calls the appropriate callback. [PATCH] compat emulation for posix message queues From: Arnd Bergmann I have tested the code with the open posix test suite and found the same four failures for both 64-bit and compat mode, most tests pass. The patch is against -mc1, but I guess it also applies to the other trees around. What worries me more than mq_attr compatibility is the conversion of struct sigevent, which might turn out really hard when more fields in there are used. AFAICS, the only other part in the kernel ABI is sys_timer_create(), so maybe it's not too late to deprecate the current structure and create a structure that can be used properly for compat syscalls. [PATCH] IPMI driver updates From: Corey Minyard - Add support for messaging through an IPMI LAN interface, which is required for some system software that already exists on other IPMI drivers. It also does some renaming and a lot of little cleanups. - Add the "System Interface" driver. The previous driver for system interfaces only supported the KCS interface, this driver supports all system interfaces defined in the IPMI standard. It also does a much better job of handling ACPI and SMBIOS tables for detecting IPMI system interfaces. [PATCH] move job control fields from task_struct to signal_struct From: Roland McGrath This patch moves all the fields relating to job control from task_struct to signal_struct, so that all this info is properly per-process rather than being per-thread. [PATCH] Fix page allocator lower zone protection for NUMA From: Martin Hicks This changes __alloc_pages() so it uses precalculated values for the "min". This should prevent the problem of min incrementing from zone to zone across many nodes on a NUMA machine. The result of falling back to other nodes with the old incremental min calculations was that the min value became very large. [PATCH] ext3 fsync() and fdatasync() speedup ext3's fsync/fdatasync implementation is currently syncing the inode via a full journal commit even if it was unaltered. Fix that up by exporting the core VFS's inode sync function to modules and calling it if the inode is dirty. We need to do it this way so that the inode is moved to the appropriate superblock list and so that the i_state dirty flags are appropriately updated. This speeds up ext3 fsync() for file overwrites by a factor of four (disk non-writeback) to forty (disk in writeback mode). [PATCH] speed up ext2 fsync() and fdatasync() ext2_sync_file() forgets to clear the inode's dirty bits, so we write the inode on every fsync(), even if it hasn't changed. Fix that up via the new sync_file() API which correctly manages the inode state bits and the superblock inode lists. When performing file overwrite on IDE with and without writeback caching enabled this patch approximately doubles fsync() speed, bringing it into line with O_SYNC writes. Also, fix up the return value handling in ext2_sync_file(). Credit due to Jeffrey Siegal who noticed the performance discrepancy and wrote a test app. [PATCH] jbd: fix ordered-data writeout logic There's some nasty code in commit which deals with a lock ranking problem. Currently if it fails to get the lock when and local variable `bufs' is zero we forget to write out some ordered-data buffers. So a subsequent crash+recovery could yield stale data in existing files. Fix it by correctly restarting the t_sync_datalist search. [PATCH] JBD: ordered-data commit cleanup For data=ordered, kjournald at commit time has to write out and wait upon a long list of buffers. It does this in a rather awkward way with a single list. it causes complexity and long lock hold times, and makes the addition of rescheduling points quite hard So what we do instead (based on Chris Mason's suggestion) is to add a new buffer list (t_locked_list) to the journal. It contains buffers which have been placed under I/O. So as we walk the t_sync_datalist list we move buffers over to t_locked_list as they are written out. When t_sync_datalist is empty we may then walk t_locked_list waiting for the I/O to complete. As a side-effect this means that we can remove the nasty synchronous wait in journal_dirty_data which is there to avoid the kjournald livelock which would otherwise occur when someone is continuously dirtying a buffer. [PATCH] jbd: fix I/O error handling Fix a few buglets spotted by Jeff Mahoney . We're currently only checking for I/O errors against journal buffers if they were locked when they were first inspected. We need to check buffer_uptodate() even if the buffers were already unlocked. [PATCH] readv/writev range checking fix do-readv_writev() is trying to fail if a) any of the segments have a length < 0 or b) the sum of the segments wraps negative. But it gets b) wrong because local variable tot_len is unsigned. Fix that up. [PATCH] Fix scripts/kernel-doc to handle __attribute__ From: Tom Rini The following patch is needed so that kernel-doc can handle functions which have __attribute__'s on them (such as __attribute__ ((weak))). [PATCH] slab: updates for per-arch alignments From: Manfred Spraul Description: Right now kmem_cache_create automatically decides about the alignment of allocated objects. The automatic decisions are sometimes wrong: - for some objects, it's better to keep them as small as possible to reduce the memory usage. Ingo already added a parameter to kmem_cache_create for the sigqueue cache, but it wasn't implemented. - for s390, normal kmalloc must be 8-byte aligned. With debugging enabled, the default allocation was 4-bytes. This means that s390 cannot enable slab debugging. - arm26 needs 1 kB aligned objects. Previously this was impossible to generate, therefore arm has its own allocator in arm26/machine/small_page.c - most objects should be cache line aligned, to avoid false sharing. But the cache line size was set at compile time, often to 128 bytes for generic kernels. This wastes memory. The new code uses the runtime determined cache line size instead. - some caches want an explicit alignment. One example are the pte_chain objects: they must find the start of the object with addr&mask. Right now pte_chain objects are scaled to the cache line size, because that was the only alignment that could be generated reliably. The implementation reuses the "offset" parameter of kmem_cache_create and now uses it to pass in the requested alignment. offset was ignored by the current implementation, and the only user I found is sigqueue, which intended to set the alignment. In the long run, it might be interesting for the main tree: due to the 128 byte alignment, only 7 inodes fit into one page, with 64-byte alignment, 9 inodes - 20% memory recovered for Athlon systems. For generic kernels running on P6 cpus (i.e. 32 byte cachelines), it means Number of objects per page: ext2_inode_cache: 8 instead of 7 ext3_inode_cache: 8 instead of 7 fat_inode_cache: 9 instead of 7 rpc_tasks: 24 instead of 15 tcp_tw_bucket: 40 instead of 30 arp_cache: 40 instead of 30 nfs_write_data: 9 instead of 7 [PATCH] set mod->waiter before calling stop_machine From: Rusty Russell mod->waiter needs to be set before we try to stop the module: setting it in __try_stop_module means it gets set to the kthread, not rmmod. [PATCH] fs/proc/proc_tty.c comment fixes From: Marc-Christian Petersen [PATCH] sb_mixer bounds checking From: Muli Ben-Yehuda This patch add proper bounds checking to the sb_mixer.c code, found by the stanford checker[0]. It fixes bugzilla bugs 252[1], 253[2] and 254[3]. Patch is against 2.6.5-rc2. It was tested by Rene Herman on SN AWE64 gold and sound still works. The issue was previously discussed on lkml[4], but apparently no fix was applied. The patch is a bit more intrusive than I would've liked, but I don't think it can be helped without really intrusive changes. sb_devc has a pointer to an array (iomap) that is set at run time to point to arrays of variable sizes. The patch adds an 'iomap_sz' member to sb_devc that is set to the length of the array, and does bounds checking in sb_common_mixer_set() and smw_mixer_set() agains that. [PATCH] pmdisk: fix strcmp in sysfs store From: Herbert Xu This patch fixes the sysfs store functions for pmdisk when the input contains a trailing newline. [PATCH] add file_operations.fcntl From: Chuck Lever O_DIRECT|O_APPEND cannot possibly work on NFS, so NFS needs some way of preventing the user from setting this combination. We felt that the best way of implementing this restriction is to allow the filesytem to implement its own fcntl() handler. This patch does, that, and provide the appropriate handler for NFS. Additional details from Chuck: Forgetting O_DIRECT for a moment, O_APPEND writes on NFS don't work in any case when multiple clients are writing to a file, since an NFS client can never guarantee it knows where the true end of file is 100% of the time. it works as expected iff only one client writes to an O_APPEND file at a time. Multi-client O_APPEND writing doesn't seem to be a problem for any application I'm aware of. Since it can be made to behave in the multi-client case with careful application logic or by using file locking, I don't think we should disallow it. I want to drop the inode semaphore when doing NFS direct I/O because it is synchronous; holding the i_sem means we reduce direct I/O concurrency to one I/O per file at a time. the important thing sct was worried about was the case where a single client is writing with O_APPEND and O_DIRECT, and we don't hold the i_sem during the write. We must at least hold the i_sem when determining where the end of file is to do the O_APPEND write. In 2.6, I believe that is handled correctly in the VFS layer, so this is not an issue for 2.6, right? [PATCH] Fix sys_time() to get subtick correction from the new xtime From: "La Monte H.P. Yarroll" This is a Scott Wood patch against 2.6.3. Use gettimeofday() rather than xtime.tv_sec in sys_time(), since sys_stime() uses settimeofday() and thus subtracts the subtick correction from the new xtime. stime() used settimeofday(), but time() did not use gettimeofday(). Since settimeofday() subtracts out the current intra-tick correction, and nsec was 0 (since stime() only allows seconds), this resulted in xtime being slightly earlier than the time that was set. If time() had used gettimeofday(), the correction would have been applied, and everything would be fine. However, instead time just reads the current xtime.tv_sec, so if time() is called immediately after stime(), you'll usually get a value one second earlier. [PATCH] Broken bitmap_parse for ncpus > 32 From: Joe Korty This patch replaces the call to bitmap_shift_right() in bitmap_parse() with bitmap_shift_left(). I also prepended comments to the bitmap_shift_* functions defining what 'left' and 'right' means. This is under the theory that if I and all the reviewers were bamboozled, others in the future occasionally might be too. [PATCH] ver_linux fix From: Rusty Russell From: Adrian Bunk Some versions of ps print non-version lines when ps --version is invoked. grep them out. [PATCH] Update CodingStyle hints for Emacs users. From: Trivial Patch Monkey From: Ben Greear Depending on one's default emacs settings, the suggestion in the CodingStyle may or may not work. This patch adds a few more commands to ensure it works in more cases. [PATCH] document unused pte bits on i386 From: Rusty Russell From: Ed L Cashin This small patch documents that bits 9, 10, and 11 are unused by the Linux kernel. The IA-32 Intel Architecture Software Developer's Manual says that these bits are available for programmer use. [PATCH] Consistently use quotes for SGML attributes From: Rusty Russell From: Hans Ulrich Niedermann doc patch: Consistently use quotes for SGML attributes This makes it possible to process the SGML files without SHORTTAG YES. [PATCH] SGML: close tag with ">" From: Rusty Russell From: Hans Ulrich Niedermann doc patch: close tag with ">" [PATCH] fix sch_ingress help From: Rusty Russell From: John Levon [PATCH] i386 irq.c ifdef cleanup From: Rusty Russell From: Josef 'Jeff' Sipek I just noticed the nested ifdefs, and made it little more readable. [PATCH] Fix firmware loader docs From: Rusty Russell From: Pavel Machek sysfs should be mounted on /sys these days. [PATCH] Trivial Patch Monkey should be in MAINTAINERS From: Rusty Russell From: Petri Koistinen [PATCH] Fix genksyms parsing From: Rusty Russell From: Andreas Schwab I'm getting a warning when building for ia64 with MODVERSIONS enabled. This is a bug in genksyms, it can't cope with some arguments of __typeof__. The following patch will fix that. Actually the argument of __typeof__ is an abstract declarator, but the genksyms parser has no production for that; decl_specifier_seq also matches some invalid constructs, but I don't think this is a problem in practice, since the compiler will reject them. [PATCH] CONFIG_X86_GENERIC description fixup From: Rusty Russell From: Stewart Smith A better explanation of the X86_GENERIC config option follows. [PATCH] updating email info in CREDITS From: Rusty Russell From: Thomas Molina [PATCH] Kill duplicate #include From: Rusty Russell include/linux/device.h includes include/linux/ioport.h twice. [PATCH] Use valid node number when unmapping x86 CPUs From: Rusty Russell From: colpatch@us.ibm.com The cpu_2_node[] array for i386 is initialized to all 0's, meaning that until modified at CPU bring-up, all CPUs are mapped to node 0. When CPUs are brought online, they are mapped to the appropriate node by various mechanisms, depending on the underlying hardware. When we unmap CPUs (hotplug time), we should return the mapping for the CPU that is going away to its original state, ie: 0. When this code was initially submitted, the misguided poster (me) made the mistake of putting a -1 in the cpu_2_node[] array for the CPU going away. This patch fixes this mistake, and allows code to get a valid node number for all valid CPU numbers. This is important, because most (if not all) callers do not error check the value returned by the cpu_to_node() macro, and they should not have to. The API specifies that a valid node number be returned for any valid CPU number. [PATCH] Add CC Trivial Patch Monkey to SubmittingPatches From: Rusty Russell From: maximilian attems Add the Monkey to SubmittingPatches. [PATCH] ne2k-pci.c compile fix on ppc[64] From: Rusty Russell These macros are redefined here. Previously definitions are in asm-ppc(64)/io.h [PATCH] Update Documentation/Changes From: Trivial Patch Monkey From: Thomas Molina [PATCH] i830 DRM missing put_user From: Arjan van de Ven The patch below adds a few missing put_user()'s to the i810/i830 drm modules. Users reported oopses with 4g/4g split in action, and sparse annotations indeed found the offender in the function in question. I've kept the sparse __user annotations since those are generally useful anyway. I can't test it myself but a few people reported that the oopses went away so far. [PATCH] export complete_all() From: Mike Waychison Export complete_all for module use. [PATCH] /dev/urandom scalability improvement From: David Mosberger Somebody recently pointed out a performance-anomaly to me where an unusual amount of time was being spent reading from /dev/urandom. The problem isn't really surprising as it happened only on >= 4-way machines and the random driver isn't terribly scalable the way it is written today. If scalability _really_ mattered, I suppose per-CPU data structures would be the way to go. However, I found that at least for 4-way machines, performance can be improved considerably with the attached patch. In particular, I saw the following performance on a 4-way ia64 machine: Test: 3 tasks running "dd if=/dev/urandom of=/dev/null bs=1024": throughput: [PATCH] cpu5wdt.c warning fix From: Heiko Ronsdorf - Remvoe a volatile which causes a warning via module_param() - Remove an unused variable. [PATCH] speed up fget() and fget_light() Eric Dumazet We can avoid evaluating `current' in a few places. [PATCH] Move __this_module to modpost From: Brian Gerst Move the __this_module structure to the modpost code where it really belongs. [PATCH] fix modversions now __this_module is created only in .ko From: Rusty Russell Brian Gerst's patch which moved __this_module out from module.h into the module post-processing had a side effect. genksyms didn't see the undefined symbols for modules without a module_init (or module_exit), and hence didn't generate a version for them, causing the kernel to be tainted. The simple solution is to always include the versions for these functions. Also includes two cleanups: 1) alloc_symbol is easier to use if it populates ->next for us. 2) add_exported_symbol should set owner to module, not head of module list (we don't use this field in entries in that list, fortunately). [PATCH] Support for floppies whose sectors are numbered from zero instead of one From: Marcelo Tosatti From: Alain Knaff This patch adds support for floppy disks whose sectors are numbered starting at 0 rather than 1 as usual disks would be. This format is used for some CP/M disks, and also for certain music samplers (such as Ensoniq Ensoniq EPS 16plus). In order to use it, you need an fdutils with the current patch from http://fdutils.linux.lu as well, and then do setfdrpm /dev/fd0 dd zerobased sect=10 or setfdprm /dev/fd0 hd zerobased sect. In addtion, the patch also fixes my email addresses. I no longer use pobox.com. [PATCH] Remove bitmap_shift_*() bitmap length limits From: William Lee Irwin III Chang bitmap_shift_left()/bitmap_shift_right() to have O(1) stackspace requirements. Given zeroed tail preconditions these implementations satisfy zeroed tail postconditions, which makes them compatible with whatever changes from Paul Jackson one may want to merge in the future. No particular effort was required to ensure this. A small (but hopefully forgiveable) cleanup is a spelling correction: s/bitmap_shift_write/bitmap_shift_right/ in one of the kerneldoc comments. The primary effect of the patch is to remove the MAX_BITMAP_BITS limitation, so restoring the NR_CPUS to be limited only by stackspace and slab allocator maximums. They also look vaguely more efficient than the current code, though as this was not done for performance reasons, no performance testing was done. [PATCH] Fix huge sparse tmpfs files From: Hugh Dickins Kevin P. Fleming pointed out that the 2.6 tmpfs does not allow writing huge sparse files. This is an unintended side-effect of the strict memory commit changes: which should make no difference. The solution is to treat the tmpfs files (of variable size) and the shmem objects (of fixed size) differently: sounds nasty but works out well. The shmem objects follow the VM preallocation convention as before, but the tmpfs files revert to allocation on demand as a filesystem would. If there's not enough memory to write to a tmpfs hole, it is reported as -ENOSPC rather than -ENOMEM, so the mmap writer gets SIGBUS rather than everyone else getting OOM-killed. [PATCH] Strip quotes from kernel parameters From: Rusty Russell Agustin Martin pointed out that this doesn't work: options ide-mod options="ide=nodma hdc=cdrom" The quotes are understood by kernel/params.c (ie. it skips over spaces inside them), but are not stripped before handing to the underlying function. They should be. [PATCH] summit: per-subarch NR_IRQ_VECTORS From: James Cleverdon Break out the definition of NR_IRQ_VECTORS, etc from irq_vectors.h into irq_vectors_limits.h, so we can change it per subarch without having code duplication for the rest of the file. Stick the same values back for mach-default, and override them for mach-summit/generic which needs bigger limits. [PATCH] summmit: increase MAX_MP_BUSSES From: James Cleverdon Bump up MAX_MP_BUSSES for summit/generic subarch to cope with big IBM x440 systems. [PATCH] ia64 MSI support From: "Nguyen, Tom L" Adds MSI support for ia64. - Modified existing code in drivers/pci/msi.c and drivers/pci/msi.h to include MSI support on IA64 platform. - Based on the comments received from Zwane Mwaikambo and David Mosberger, this patch consolidates the vector allocators as assign_irq_vector(AUTO_ASSIGN) has the same semantics as ia64_alloc_vector() by converting the existing uses of ia64_alloc_vector() to assign_irq_vector(AUTO_ASSIGN). - Based on the comments received from Zwane Mwaikambo, this patch consolidates the semantics of vector allocator assign_irq_vector() in drivers/pci/msi.c into the relevant architecture's vector allocator assign_irq_vector() in arch/i386/kernel/io_apic.c. - Regarding vector allocation, this patch modifies the existing function assign_irq_vector() to maximize the number of allocated vectors to 188 before going -ENOSPC. - Based on your comments, this patch creates , and , includes from within drivers/pci/msi.h and then places all the code which is currently under ifdef in msi.h into the relevant architecture's file. - Based on your comments, this patch places pci_vector_resources() in existing drivers/pci/msi.c in the relevant architecture implementations such as into arch/.../pci/irq.c. [PATCH] stv0299.c unused variable From: "Luiz Fernando N. Capitulino" drivers/media/dvb/frontends/stv0299.c:356: warning: unused variable `i' [PATCH] selinux: fix struct type From: Stephen Smalley This patch fixes the type of the ssec pointer in the sk_free_security function. This has no current impact as the magic element is the top of each structure. Thanks to Chad Hanson of TCS for discovering the bug and submitting the patch. [PATCH] missing NULL pointer check in pte_alloc_one. From: Martin Schwidefsky Just found an small bug in pgalloc for s390*. Comparing notes with other architectures I found that pte_alloc_one is sick for alpha and sparc64 as well. [PATCH] kill spurious MAKDEV scripts From: Christoph Hellwig Kill magic ide/sound makedev scripts in scripts/. The userland MAKEDEV is the proper place and already has support for them. [PATCH] oss/wavfront.c warning fix. From: "Luiz Fernando N. Capitulino" sound/oss/wavfront.c: At top level: sound/oss/wavfront.c:2498: warning: `errno' defined but not used [PATCH] remove bogus MOD_{INC,DEC}_USE_COUNT from hysdn From: Christoph Hellwig the maintainer doesn't response unfortauntely, but removing these from net_devices unconditionally is the 2.6 way to go, there's no more module refcounting on net devices. [PATCH] improve CONFIG_EMBEDDED help text From: Matt Mackall Make CONFIG_EMBEDDED description more accurate [PATCH] eliminate nswap and cnswap From: Matt Mackall The nswap and cnswap variables counters have never been incremented as Linux doesn't do task swapping. [PATCH] shrink inode when quota is disabled From: Matt Mackall drop quota array in inode struct if no quota support [PATCH] enable suspend-on-halt for NS Geode From: Matt Mackall From: Zwane Mwaikambo This enables deep powersaving mode on Geode boxes. [PATCH] O_DIRECT data exposure fixes From: Badari Pulavarty, Suparna Bhattacharya, Andrew Morton Forward port of Stephen Tweedie's DIO fixes from 2.4, to fix various DIO vs buffered IO exposures involving races causing: (a) stale data from uninstantiated blocks to be read, e.g. - O_DIRECT reads against buffered writes to a sparse region - O_DIRECT writes to a sparse region against buffered reads (b) potential data corruption with - O_DIRECT IOs against truncate due to writes to truncated blocks (which may have been reallocated to another file). Summary of fixes: 1) All the changes affect only regular files. RAW/O_DIRECT on block are unaffected. 2) The DIO code will not fill in sparse regions on a write. Instead -ENOTBLK is returned and the generic file write code would fallthrough to buffered IO in this case followed by writing through the pages to disk using filemap_fdatawrite/wait. 3) i_sem is held during both DIO reads and writes. For reads, and writes to already allocated blocks, it is released right after IO is issued, while for writes to newly allocated blocks (e.g file extending writes and hole overwrites) it is held all the way through until IO completes (and data is committed to disk). 4) filemap_fdatawrite/wait are called under i_sem to synchronize buffered pages to disk blocks before issuing DIO. 5) A new rwsem (i_alloc_sem) is held in shared mode all the while a DIO (read or write) is in progress, and in exclusive mode by truncate to guard against deallocation of data blocks during DIO. 6) All this new locking has been pushed down into blockdev_direct_IO to avoid interfering with NFS direct IO. The locks are taken in the order i_sem followed by i_alloc_sem. While i_sem may be released after IO submission in some cases, i_alloc_sem is held through until dio_complete (in the case of AIO-DIO this happens through the IO completion callback). 7) i_sem and i_alloc_sem are not held for the _nolock versions of write routines, as used by blockdev and XFS. Filesystems can specify the needs_special_locking parameter to __blockdev_direct_IO from their direct IO address space op accordingly. Note from Badari: Here is the locking (when needs_special_locking is true): (1) generic_file_*_write() holds i_sem (as before) and calls ->direct_IO(). blockdev_direct_IO gets i_alloc_sem and call direct_io_worker(). (2) generic_file_*_read() does not hold any locks. blockdev_direct_IO() gets i_sem and then i_alloc_sem and calls direct_io_worker() to do the work (3) direct_io_worker() does the work and drops i_sem after submitting IOs if appropriate and drops i_alloc_sem after completing IOs. [PATCH] Fix race between ll_rw_block() and block_write_full_page() Fix a race which was identified by Daniel McNeil If a buffer_head is under I/O due to JBD's ordered data writeout (which uses ll_rw_block()) then either filemap_fdatawrite() or filemap_fdatawait() need to wait on the buffer's existing I/O. Presently neither will do so, because __block_write_full_page() will not actually submit any I/O and will hence not mark the page as being under writeback. The best-performing fix would be to somehow mark the page as being under writeback and defer waiting for the ll_rw_block-initiated I/O until filemap_fdatawait()-time. But this is hard, because in __block_write_full_page() we do not have control of the buffer_head's end_io handler. Possibly we could make JBD call into end_buffer_async_write(), but that gets nasty. This patch makes __block_write_full_page() wait for any buffer_head I/O to complete before inspecting the buffer_head state. It only does this in the case where __block_write_full_page() was called for a "data-integrity" write: (wbc->sync_mode != WB_SYNC_NONE). Probably it doesn't matter, because kjournald is currently submitting (or has already submitted) all dirty buffers anyway. [PATCH] blockdev direct-io speedups From: Badari Pulavarty 1) blkdev_direct_IO() calls blockdev_direct_IO() instead of blockdev_direct_IO_no_locking(). 2) writev entry point is generic_file_writev() which grabs i_sem. It should use generic_file_write_nolock() instead. [PATCH] direct-io AIO fixes From: Suparna Bhattacharya Fixes the following remaining issues with the DIO code: 1. During DIO file extends, intermediate writes could extend i_size exposing unwritten blocks to intermediate reads (Soln: Don't drop i_sem for file extends) 2. AIO-DIO file extends may update i_size before I/O completes, exposing unwritten blocks to intermediate reads. (Soln: Force AIO-DIO file extends to be synchronous) 3. AIO-DIO writes to holes call aio_complete() before falling back to buffered I/O ! (Soln: Avoid calling aio_complete() if -ENOTBLK) 4. AIO-DIO writes to an allocated region followed by a hole, falls back to buffered i/o without waiting for already submitted i/o to complete; might return to user-space, which could overwrite the buffer contents while they are still being written out by the kernel (Soln: Always wait for submitted i/o to complete before falling back to buffered i/o) [PATCH] AIO+DIO bio_count race fix From: Suparna Bhattacharya , Daniel McNeil This patch ensures that when the DIO code falls back to buffered i/o after having submitted part of the i/o, then buffered i/o is issued only for the remaining part of the request (i.e. the part not already covered by DIO), rather than redo the entire i/o. Now, instead of returning written == -ENOTBLK, generic_file_direct_IO returns the number of bytes already handled by DIO, so that the caller knows how much of the I/O is left to be handled via fallback to buffered write. We need to careful not to access dio fields if its possible that the dio could already have been freed asynchronously during i/o completion. A tricky part of this involves plugging the window between the decrement of bio_count and accessing dio->waiter during i/o completion where the dio could get freed by the submission path. This potential "bio_count race" was tackled (by Daniel) by changing bio_list_lock into bio_lock and using that for all the bio fields. Now bio_count and bios_in_flight have been converted from atomics into int and are both protected by the bio_lock. The race in finished_one_bio() could thus be fixed by leaving the bio_count at 1 until after the dio_complete() and then doing the bio_count decrement and wakeup holding the bio_lock. It appears that shifting to the spin_lock instead of atomic_inc/decs is ok performance wise as well. Update: An AIO O_DIRECT request was extending the file so it was done synchronously. However, the request got an EFAULT and direct_io_worker() was calling aio_complete() on the iocb and returning the EFAULT. When io_submit_one() got the EFAULT return, it assume it had to call aio_complete() since the i/o never got queued. The fix is for direct_io_worker() to only call aio_complete() when the upper layer is going to return -EIOCBQUEUED and not when getting errors that are being return to the submit path. [PATCH] rw_swap_page_sync(): place the pages in swapcache This function is setting page->mapping = swapper_space, but isn't actually adding the page to swapcache. This triggers soon-to-be-added BUGs in the radix tree code. So temporarily add these pages to swapcache for real. Also, make rw_swap_page_sync() go away if it has no callers. [PATCH] radix-tree tags for selective lookup Add radix-tree tagging so we can look up dirty or writeback pages in O(log64(n)) time. Each radix-tree node gains two bits for each slot: one for page dirtiness and one for page writebackness. If a tag bit is set on a leaf node, it indicates that item at the corresponding slot is tagged (say, a dirty page). If a tag bit is set in a non-leaf node it indicates that the same tag bit is set in the subtree which lies under the corresponding slot. ie: "there is a dirty page under here somewhere, but you need to search down further to find it". A gang lookup function is provided which can walk the radix tree in logarithmic time looking for items which are tagged, starting from a specified offset. We use this for in-order searches for dirty or writeback pages. There is a userspace test harness for this code at http://www.zip.com.au/~akpm/linux/patches/stuff/rtth.tar.gz [PATCH] make the pagecache lock irq-safe. Intro to these patches: - Major surgery against the pagecache, radix-tree and writeback code. This work is to address the O_DIRECT-vs-buffered data exposure horrors which we've been struggling with for months. As a side-effect, 32 bytes are saved from struct inode and eight bytes are removed from struct page. At a cost of approximately 2.5 bits per page in the radix tree nodes on 4k pagesize, assuming the pagecache is densely populated. Not all pages are pagecache; other pages gain the full 8 byte saving. This change will break any arch code which is using page->list and will also break any arch code which is using page->lru of memory which was obtained from slab. The basic problem which we (mainly Daniel McNeil) have been struggling with is in getting a really reliable fsync() across the page lists while other processes are performing writeback against the same file. It's like juggling four bars of wet soap with your eyes shut while someone is whacking you with a baseball bat. Daniel pretty much has the problem plugged but I suspect that's just because we don't have testcases to trigger the remaining problems. The complexity and additional locking which those patches add is worrisome. So the approach taken here is to remove the page lists altogether and replace the list-based writeback and wait operations with in-order radix-tree walks. The radix-tree code has been enhanced to support "tagging" of pages, for later searches for pages which have a particular tag set. This means that we can ask the radix tree code "find me the next 16 dirty pages starting at pagecache index N" and it will do that in O(log64(N)) time. This affects I/O scheduling potentially quite significantly. It is no longer the case that the kernel will submit pages for I/O in the order in which the application dirtied them. We instead submit them in file-offset order all the time. This is likely to be advantageous when applications are seeking all over a large file randomly writing small amounts of data. I haven't performed much benchmarking, but tiobench random write throughput seems to be increased by 30%. Other tests appear to be unaltered. dbench may have got 10-20% quicker, but it's variable. There is one large file which everyone seeks all over randomly writing small amounts of data: the blockdev mapping which caches filesystem metadata. The kernel's IO submission patterns for this are now ideal. Because writeback and wait-for-writeback use a tree walk instead of a list walk they are no longer livelockable. This probably means that we no longer need to hold i_sem across O_SYNC writes and perhaps fsync() and fdatasync(). This may be beneficial for databases: multiple processes writing and syncing different parts of the same file at the same time can now all submit and wait upon writes to just their own little bit of the file, so we can get a lot more data into the queues. It is trivial to implement a part-file-fdatasync() as well, so applications can say "sync the file from byte N to byte M", and multiple applications can do this concurrently. This is easy for ext2 filesystems, but probably needs lots of work for data-journalled filesystems and XFS and it probably doesn't offer much benefit over an i_semless O_SYNC write. These patches can end up making ext3 (even) slower: for i in 1 2 3 4 do dd if=/dev/zero of=$i bs=1M count=2000 & done runs awfully slow on SMP. This is, yet again, because all the file blocks are jumbled up and the per-file linear writeout causes tons of seeking. The above test runs sweetly on UP because the on UP we don't allocate blocks to different files in parallel. Mingming and Badari are working on getting block reservation working for ext3 (preallocation on steroids). That should fix ext3 up. This patch: - Later, we'll need to access the radix trees from inside disk I/O completion handlers. So make mapping->page_lock irq-safe. And rename it to tree_lock to reliably break any missed conversions. [PATCH] tag dirty pages as such in the radix tree Arrange for all dirty pagecache pages to be tagged as dirty within their radix tree. [PATCH] tag writeback pages as such in their radix tree Arrange for under-writeback pages to be marked thus in their pagecache radix tree. [PATCH] stop using the address_space dirty_pages list Move everything over to walking the radix tree via the PAGECACHE_TAG_DIRTY tag. Remove address_space.dirty_pages. [PATCH] fix the kupdate function Juggle dirty pages and dirty inodes and dirty superblocks and various different writeback modes and livelock avoidance and fairness to recover from the loss of mapping->io_pages. [PATCH] remove address_space.io_pages Now remove address_space.io_pages. [PATCH] Stop using address_space.locked_pages Instead, use a radix-tree walk of the pages which are tagged as being under writeback. The new function wait_on_page_writeback_range() was generalised out of filemap_fdatawait(). We can later use this to provide concurrent fsync of just a section of a file. [PATCH] stop using address_space.clean_pages Remove remaining references to address_space.clean_pages. [PATCH] revert the slabification of i386 pgd's and pmd's This code is playing with page->lru from pages which came from slab. But to remove page->list we need to convert slab over to using page->lru. So we cannot allow the i386 pagetable code to go scribbling on the ->lru field of active slab pages. This optimisation was pretty thin, and it is more important to shrink the pageframe (on all architectures). [PATCH] slab: stop using page.list slab.c is using page->list. Switch it over to using page->lru so we can remove page.list. [PATCH] stop using page.list in the page allocator Switch the page allocator over to using page.lru for the buddy lists. [PATCH] stop using page->list in the hugetlbpage implementations Switch them over to page.lru [PATCH] stop using page.list in pageattr.c Switch it to ->lru [PATCH] stop using page.list in readahead The address_space.readapges() function currently takes a list of pages, strung together via page->list. Switch it to using page->lru. This changes the API into filesystems. [PATCH] stop using page->lru in compound pages The compound page logic is using page->lru, and these get will scribbled on in various places so switch the Compound page logic over to using ->mapping and ->private. [PATCH] arm: stop using page->list Switch the ARM `small_page' code over to page->lru. [PATCH] switch the m68k pointer-table code over to page->lru Switch the m68k pointer-table code over to page->lru. [PATCH] remove page.list Remove the now-unneeded page.list field. [PATCH] fdatasync integrity fix fdatasync can fail to wait on some pages due to a race. If some task (eg pdflush) is flushing the same mapping it can remove a page's dirty tag but not then mark that page as being under writeback, because pdflush hit a locked buffer in __block_write_full_page(). This will happen because kjournald is writing the buffer. In this situation __block_write_full_page() will redirty the page so that fsync notices it, but there is a window where the page eludes the radix tree dirty page walk. Consequently a concurrent fsync will fail to notice the page when walking the radix tree's dirty pages. The approach taken by this patch is to leave the page marked as dirty in the radix tree while ->writepage is working out what to do with it. This ensures that a concurrent write-for-sync will successfully locate the page and will then block in lock_page() until the non-write-for-sync code has finished altering the page state. [PATCH] don't allow background writes to hide dirty buffers If pdflush hits a locked-and-clean buffer in __block_write_full_page() it will just pass over the buffer. Typically the buffer is an ext3 data=ordered buffer which is being written by kjournald, but a similar thing can happen with blockdev buffers and ll_rw_block(). This is bad because the buffer is still under I/O and a subsequent fsync's fdatawait() needs to know about it. It is not practical to tag the page for writeback - only the submitter of the I/O can do that, because the submitter has control of the end_io handler. So instead, redirty the page so a subsequent fsync's fdatawrite() will wait on the underway I/O. There is a risk that pdflush::background_writeout() will lock up, repeatedly trying and failing to write the same page. This is prevented by ensuring that background_writeout() always throttles when it made no progress. [PATCH] writeback efficiency and QoS improvements The radix-tree walk for writeback has a couple of problems: a) It always scans a file from its first dirty page, so if someone is repeatedly dirtying the front part of a file, pages near the end may be starved of writeout. (Well, not completely: the `kupdate' function will write an entire file once the file's dirty timestamp has expired). b) When the disk queues are huge (10000 requests), there can be a very large number of locked pages. Scanning past these in writeback consumes quite some CPU time. So in each address_space we record the index at which the last batch of writeout terminated and start the next batch of writeback from that point. [PATCH] Add mpage_writepages() scheduling point From: Jens Axboe Takashi did some nice latency testing of the current kernel (with -mm writeback changes), and the biggest offender in general core is mpage_writepages(). [PATCH] mpage_writepages() cleanup Rework the code layout a bit. No logic change. [PATCH] use compound pages for hugetlb pages only The compound page logic is a little fragile - it relies on additional metadata in the pageframes which some other kernel code likes to stomp on (xfs was doing this). Also, because we're treating all higher-order pages as compound pages it is no longer possible to free individual lower-order pages from the middle of higher-order pages. At least one ARM driver insists on doing this. We only really need the compound page logic for higher-order pages which can be mapped into user pagetables and placed under direct-io. This covers hugetlb pages and, conceivably, soundcard DMA buffers which were allcoated with a higher-order allocation but which weren't marked PageReserved. The patch arranges for the hugetlb implications to allocate their pages with compound page metadata, and all other higher-order allocations go back to the old way. (Andrea supplied the GFP_LEVEL_MASK fix) [PATCH] fork vma ordering during fork From: Hugh Dickins First of six patches against 2.6.5-rc3, cleaning up mremap's move_vma, and fixing truncation orphan issues raised by Rajesh Venkatasubramanian. Originally done as part of the anonymous objrmap work on mremap move, but useful fixes now extracted for mainline. The mremap changes need some exposure in the -mm tree first, but the first (fork one-liner) is safe enough to go straight into 2.6.5. From: Rajesh Venkatasubramanian. Despite the comment that child vma should be inserted just after parent vma, 2.5.6 did exactly the reverse: thus a racing vmtruncate may free the child's ptes, then advance to the parent, and meanwhile copy_page_range has propagated more ptes from the parent to the child, leaving file pages still mapped after truncation. [PATCH] mremap: copy_one_pte cleanup From: Hugh Dickins Clean up mremap move's copy_one_pte: - get_one_pte_map_nested already weeded out the pte_none case, now don't even call copy_one_pte if it has nothing to do. - check pfn_valid before passing page to page_remove_rmap. [PATCH] mremap: move_vma fixes and cleanup From: Hugh Dickins Partial rewrite of mremap's move_vma. Rajesh Venkatasubramanian has pointed out that vmtruncate could miss ptes, leaving orphaned pages, because move_vma only made the new vma visible after filling it. We see no good reason for that, and time to make move_vma more robust. Removed all its vma merging decisions, leave them to mmap.c's vma_merge, with copy_vma added. Removed duplicated is_mergeable_vma test from vma_merge, and duplicated validate_mm from insert_vm_struct. move_vma move from old to new then unmap old; but on error move back from new to old and unmap new. Don't unwind within move_page_tables, let move_vma call it explicitly to unwind, with the right source vma. Get the VM_ACCOUNTing right even when the final do_munmap fails. [PATCH] mremap: vma_relink_file race fix From: Hugh Dickins Subtle point from Rajesh Venkatasubramanian: when mremap's move_vma fails and so rewinds, before moving the file-based ptes back, we must move new_vma before old vma in the i_mmap or i_mmap_shared list, so that when racing against vmtruncate we cannot propagate pages to be truncated back from new_vma into the just cleaned old_vma. [PATCH] mremap: check map_count From: Hugh Dickins mremap's move_vma should think ahead to lessen the chance of failure during its rewind on failure: running out of memory always possible, but it's silly for it to embark when it's near the map_count limit. [PATCH] Fix rmap comment From: Hugh Dickins rmap's try_to_unmap_one comments on find_vma failure, that a page may temporarily be absent from a vma during mremap: no longer, though it is still possible for this find_vma to fail, while unmap_vmas drops page_table_lock (but that is no problem for file truncation). [PATCH] kswapd: remove pages_scanned local This is always equal to constant zero. [PATCH] laptop mode From: Bart Samwel Adds /proc/sys/vm/laptop-mode: a special knob which says "this is a laptop". In this mode the kernel will attempt to avoid spinning disks up. Algorithm: the idea is to hold dirty data in memory for a long time, but to flush everything which has been accumulated if the disk happens to spin up for other reasons. - Whenever a disk request completes (read or write), schedule a timer a few seconds hence. If the timer was already pending, reset it to a few seconds hence. - When the timer expires, write back the whole world. We use sync_filesystems() for this because it will force ext3 journal commits as well. - In balance_dirty_pages(), kick off background writeback when we hit the high threshold (dirty_ratio), not when we hit the low threshold. This has the effect of causing "lumpy" writeback which is something I spent a year fixing, but in laptop mode, it is desirable. - In try_to_free_pages(), only kick pdflush if the VM is getting into distress: we want to keep scanning for clean pages, deferring writeback. - In page reclaim, avoid writing back the odd random dirty page off the LRU: only start I/O if the scanning is working harder. The effect is to perform a sync() a few seconds after all I/O has ceased. The value which was written into /proc/sys/vm/laptop-mode determines, in seconds, the delay between the final I/O and the flush. Additionally, the patch adds tools which help answer the question "why the heck does my disk spin up all the time?". The user may set /proc/sys/vm/block_dump to a non-zero value and the kernel will print out information which will identify the process which is performing disk reads or which is dirtying pagecache. The user should probably disable syslogd before setting block-dump. [PATCH] Add commit=0 to ext3, meaning "set commit to default". From: Bart Samwel Add support for the value "0" to ext3's "commit" option. When this value is given, ext3 substitutes it by the default commit interval. Introduce a constant JBD_DEFAULT_MAX_COMMIT_AGE for this. [PATCH] Honour the readahead tunable in filemap_nopage() Remove the hardwired pagefault readaround distance in filemap_nopage() and use the per-file readahead setting. The main reason for this is in fact laptop-mode. If you want to prevent the disk from spinning up then you want all of your application's pages to be pulled into memory in one hit. Otherwise the disk will spin up each time you use a new part of whatever application(s) you are running. [PATCH] Fix logic in filemap_nopage() The filempa_nopage() logic will go into a tight loop if do_page_cache_readahead() doesn't actually start I/O against the target page. This can happen if the disk is read-congested, or if the filesystem doesn't want to read that part of the file for some reason. We will accidentally break out of the loop because (ra->mmap_miss > ra->mmap_hit + MMAP_LOTSAMISS) will eventually become true. Fix that up. [PATCH] acpi printk fix drivers/acpi/events/evmisc.c: In function `acpi_ev_queue_notify_request': drivers/acpi/events/evmisc.c:143: warning: too many arguments for format [PATCH] ia32: 4Kb stacks (and irqstacks) patch From: Arjan van de Ven Below is a patch to enable 4Kb stacks for x86. The goal of this is to 1) Reduce footprint per thread so that systems can run many more threads (for the java people) 2) Reduce the pressure on the VM for order > 0 allocations. We see real life workloads (granted with 2.4 but the fundamental fragmentation issue isn't solved in 2.6 and isn't solvable in theory) where this can be a problem. In addition order > 0 allocations can make the VM "stutter" and give more latency due to having to do much much more work trying to defragment The first 2 bits of the patch actually affect compiler options in a generic way: I propose to disable the -funit-at-a-time feature from gcc. With this enabled (and it's default with -O2), gcc will very agressively inline functions, which is nice and all for userspace, but for the kernel this makes us suffer a gcc deficiency more: gcc is extremely bad at sharing stackslots, for example a situation like this: if (some_condition) function_A(); else function_B(); with -funit-at-a-time, both function_A() and _B() might get inlined, however the stack usage of both functions of the parent function grows the stack usage of both functions COMBINED instead of the maximum of the two. Even with the normal 8Kb stacks this is a danger since we see some functions grow 3Kb to 4Kb of stack use this way. With 4Kb stacks, 4Kb of stack usage growth obviously is deadly ;-( but even with 8Kb stacks it's pure lottery. Disabling -funit-at-a-time also exposes another thing in the -mm tree; the attribute always_inline is considered harmful by gcc folks in that when gcc makes a decision to NOT inline a function marked this way, it throws an error. Disabling -funit-at-a-time disables some of the agressive inlining (eg of large functions that come later in the .c file) so this would make your tree not compile. The 4k stackness of the kernel is included in modversions, so people don't load 4k-stack modules into 8k-stack kernels. At present 4k stacks are selectable in config. When the feature has settled in we should remove the 8k option. This will break the nvidia modules. But Fedora uses 4k stacks so a new nvidia driver is expected soon. [PATCH] procfs LoadAVG/load_avg scaling fix From: Ingo Molnar Dave reported that /proc/*/status sometimes shows 101% as LoadAVG, which makes no sense. the reason of the bug is slightly incorrect scaling of the load_avg value. The patch below fixes this. [PATCH] ppc64: NUMA fix for 16MB LMBs From: Olof Johansson As discussed on the ppc64 list yesterday and today: On some ppc64 systems, Open Firmware will give memory device nodes that are only 16MB in size, instead of the 256MB that our NUMA code currently expects (see MEMORY_INCREMENT in mmzone.h). Just changing the defines from 256MB to 16MB makes the table blow up from 32KB to 512KB, so this patch also makes it dynamically allocated based on actual memory size. Since all this is done before (well, during) bootmem init so we need to use lmb_alloc(). Finally, there's no need to use a full int for node ID. Current max is 16 nodes, so a signed char still leaves plenty of room to grow. [PATCH] build fails on sparc64 in hugetlbpage.c From: Romain Francoise arch/sparc64/mm/hugetlbpage.c does not include linux/module.h so EXPORT_SYMBOL prints out warnings, and since sparc64 Makefiles have -Werror, the build fails. [PATCH] epoll comment fix From: Davide Libenzi When I split evenpoll_release() in an inline fast path plus an eventpoll_release_file() slow path, I forgot to change comments. [PATCH] add stop_machine barriers From: Andrea Arcangeli We need a barrier before checking for kthread_should_stop in do_stop. [PATCH] sunrpc: connection dropping tweaks From: Olaf Kirch Some NFS clients respond badly to a TCP connection being reset immediately after it has been accepted so: - Accept more connections before starting to drop them - Always drop the oldest connection - Random Early Drop doesn't really help here, and can hurt - ratelimit the friendly warnings. [PATCH] ACL version mismatch error code fix From: Andreas Gruenbacher Return EOPNOTSUPP rather than EINVAL when we discover an ACL version mismatch. [PATCH] v4l: cropcap ioctl fix From: Gerd Knorr The VIDIOC_CROPCAP ioctl had wrong R/W bits, this patch fixes it. [PATCH] v4l: v4l1-compat fix From: Gerd Knorr Minor tweak in the v4l1 compatibility layer: Make sure that capture actually is active before going to wait for a frame so we don't block forever. [PATCH] v4l: tuner fix From: Gerd Knorr This patch fixes a bug in the tuner descriptions and prepares for the removal of the type= insmod option by printing a warning when it is used. [PATCH] v4l: msp3400 update From: Gerd Knorr This patch allows to use switch to the second external input of the msp34xx chips. Also has some minor cleanups and more verbose debug info. [PATCH] v4l: add support for pv951 remote to ir-kbd-i2c From: Gerd Knorr Trivial patch, $subject says all, just a new keytable. [PATCH] v4l: saa7134 driver update From: Gerd Knorr This is a update for the saa7134 driver. Changes: * add cropping support. * fix Makefile to build the saa6752hs module. * fix locking bug in oss dsp driver. * infrared remote keytable update. * some card-specific fixes. [PATCH] v4l-saa7134-update fix drivers/built-in.o(.text+0x32912b): In function `dsp_buffer_init': drivers/media/video/saa7134/saa7134-oss.c:77: undefined reference to `videobuf_dma_init' [PATCH] v4l: bttv driver update From: Gerd Knorr This patch updates the bttv driver. Changes: (1) several card-specific tweaks. (2) make software vs. hardware i2c configurable per TV card. (3) reinitialize image parameters after chip reset. (4) make bttv quite by default on frame drops. (5) new insmod option: "debug_latency=1" to enable frame drop debug messages. bttv is quite sensitive to irq latencies, especially when capturing both video and vbi. There are several reports about problems due to this, I don't see that on my machines through. (5) dumps a stracktrace if the driver thinks the frame drop is is caused by high latencies as experiment, lets see whenever that helps ... [PATCH] v4l: documentation update From: Gerd Knorr This patch updates the documentation for the v4l drivers. [PATCH] cx88 update. From: Gerd Knorr This is a update for the cx88 driver. There are *lots* of changes: * vbi support was added. * plenty of fixes for audio support (there are still problems through). * new cards added. * serveral minor tweaks. [PATCH] drivers/base/platform.c typo fix From: Geert Uytterhoeven [PATCH] Subject: [PATCH] Fix overflow bug in READDIRPLUS... From: Trond Myklebust Fixes the Oops reported by Paul Blazejowski. Bug turned out to be in the page overflow checking for READDIRPLUS. [PATCH] Fix 32bit statfs on NFS From: Olaf Kirch The attached patch fixes a problem with the 32bit statfs call on NFS file systems. Some NFS servers return a value of -1 for the f_files and f_ffree. The current code would think this is a 64bit value that cannot be converted to 32bits. Consequently, the system call would always fail. The patch adds two special if() to detect a value of -1 for f_files and f_ffree. [PATCH] nfs-32bit-statfs-fix warning fix With CONFIG_LBD=n: fs/open.c: In function `vfs_statfs_native': fs/open.c:67: warning: comparison is always true due to limited range of data type fs/open.c:70: warning: comparison is always true due to limited range of data type [PATCH] wavefront_synth.c var not used. From: "Luiz Fernando N. Capitulino" sound/isa/wavefront/wavefront_synth.c:1923: warning: `errno' defined but not used [PATCH] tda1004x.c var not used. From: "Luiz Fernando N. Capitulino" drivers/media/dvb/frontends/tda1004x.c:191: warning: `errno' defined but not used [PATCH] pmdisk needs asmlinkage From: Pavel Machek This function will break with -mregparm, so mark it asmlinkage. [PATCH] cycx_drv.c warning fix. From: "Luiz Fernando N. Capitulino" drivers/net/wan/cycx_drv.c: In function `load_cyc2x': drivers/net/wan/cycx_drv.c:430: warning: unsigned int format, long unsigned int arg (arg 3) [PATCH] ibmlana needs CONFIG_MCA_LEGACY From: "Luiz Fernando N. Capitulino" IBM LAN Adapter/A driver depends on mca-legacy. [PATCH] Improve list.h documentation for _rcu() primitives From: "Paul E. McKenney" The attached patch improves the documentation of the _rcu list primitives. [PATCH] list.h cleanup - s/__inline__/inline/ - Remove lots of extraneous andi-was-here trailing whitespace [PATCH] Non-Exec stack support From: Kurt Garloff A patch to parse the elf binaries for a PT_GNU_STACK section to set the stack non-executable if possible. Most parts have been shamelessly stolen from Ingo Molnar's more ambitious stackshield http://people.redhat.com/mingo/exec-shield/exec-shield-2.6.4-C9 The toolchain has meanwhile support for marking the binaries with a PT_GNU_STACK section wwithout x bit as needed. If no such section is found, we leave the stack to whatever the arch defaults to. If there is one, we explicitly disabled the VM_EXEC bit if no x bit is found, otherwise explicitly enable. [PATCH] Fix ext3 transaction batching ext3 transaction batching has been ineffective since the scheduler changes forced us to replace the yield() with a schedule(). Using schedule_timeout(1) fixes it up again. Benchmarking is positive with wither a 1 or 10 millisecond delay in there, so there appears to be no need to play around with HZ. [PATCH] reiserfs: support for nested transactions From: Chris Mason reiserfs support for nested transactions. This originally came from Peter Braam for 2.4.x and was ported forward by Jeff Mahoney. [PATCH] reiserfs: cleanups From: Chris Mason reiserfs cleanup, get rid of old debugging code. [PATCH] reiserfs: logging rework From: Chris Mason reiserfs logging rework, making things much faster for small transactions. metadata buffers are dirtied when they are safe to write, so normal kernel mechanisms can contribute to log cleaning. [PATCH] reiserfs: data=ordered support From: Chris Mason reiserfs data=ordered support. [PATCH] reiserfs: locking fix From: Chris Mason Make sure to hold the BKL while ending a transaction in the error path or reiserfs_prepare_write. [PATCH] reiserfs: preallocation support From: Chris Mason Enable preallocation for reiserfs_file_write when the write size is smaller than the default preallocation size. [PATCH] reiserfs: tail repacking fix From: Chris Mason Repacking a tail might leave a journal handle attached to an unmapped buffer. If that buffer gets dirtied again (via mmap for example), the reiserfs data=ordered code might try to write the dirty unmapped buffer to disk. The fix is to make sure we remove the journal handle when we unmap buffers. [PATCH] reiserfs: fix race with writepage From: Chris Mason Fix reiserfs_writepage so it doesn't race with data=ordered writes. This still has a pending fix to redirty the page when it finds a locked buffer. Waiting for Andrew to finish sorting that out on ext3 first. [PATCH] reiserfs: sparse file handling fix From: Chris Mason reiserfs_file_write makes a hole one block too large if it is the first thing in the file. [PATCH] reiserfs: laptop-mode support From: Chris Mason Add reiserfs support for laptop mode. [PATCH] reiserfs: truncate leak fix From: Chris Mason reiserfs_unmap_buffer should clean and wait on all buffers. This fixes a leak under fsx workloads. [PATCH] reiserfs: scheduling latency improvements From: Chris Mason Some latency improvements for the reiserfs data=ordered code from Takashi. [PATCH] reiserfs: fix dirty-buffer warnings From: Chris Mason block_write_full_page() might see and lock clean metadata buffers, which leads to journal-1777 messages. Change the message to ignore bh locked. [PATCH] reiserfs_kfree warning fix fs/reiserfs/journal.c: In function `reiserfs_end_persistent_transaction': fs/reiserfs/journal.c:2616: warning: unused variable `s' Make the functions static inline so that typechecking is enabled if !CONFIG_REISERFS_CHECK. [PATCH] reiserfs writepage race with data=ordered From: Chris Mason reiserfs-writepage-ordered-race needs a minor update to include your latest __block_write_full_page fixes for the direct_read_under bug Daniel was hitting. [PATCH] selinux: add IPv6 support From: James Morris The patch below adds explicit IPv6 support to SELinux. Brief description of changes: o IPv6 networking is now subject to the same controls as IPv4 (in addition to the generic socket permissions which cover all protocols), namely: bind to local node address; bind to local port; send & receive TCP/UDP and raw IP packets based on local network interface and remote node address. o Packet parsing has been extended to IPv6 packets for logging and control, and simplified for IPv4. o Support for logging of IPv6 addresses has also been added. o The kernel policy database code has been modified to support IPv6, and reworked to provide generic security policy version handling so that older policy versions will still work, making upgrading simpler. Corresponding userspace patches are available at , although current userspace tools will continue to function normally (but without explicit IPv6 support). For more details at the security management level, see This code has been under testing and review for several weeks. [PATCH] From: James Morris This patch removes a harmless duplicate assignment from the IPv6 code. [PATCH] Light-weight Auditing Framework From: Rik Faith This patch provides a low-overhead system-call auditing framework for Linux that is usable by LSM components (e.g., SELinux). This is an update of the patch discussed in this thread: http://marc.theaimsgroup.com/?t=107815888100001&r=1&w=2 In brief, it provides for netlink-based logging of audit records that have been generated in other parts of the kernel (e.g., SELinux) as well as the ability to audit system calls, either independently (using simple filtering) or as a compliment to the audit record that another part of the kernel generated. The main goals were to provide system call auditing with 1) as low overhead as possible, and 2) without duplicating functionality that is already provided by SELinux (and/or other security infrastructures). This framework will work "stand-alone", but is not designed to provide, e.g., CAPP functionality without another security component in place. This updated patch includes changes from feedback I have received, including the ability to compile without CONFIG_NET (and better use of tabs, so use -w if you diff against the older patch). Please see http://people.redhat.com/faith/audit/ for an early example user-space client (auditd-0.4.tar.gz) and instructions on how to try it. My future intentions at the kernel level include improving filtering (e.g., syscall personality/exit codes) and syscall support for more architectures. First, though, I'm going to work on documentation, a (real) audit daemon, and patches for other user-space tools so that people can play with the framework and understand how it can be used with and without SELinux. Update: Light-weight Auditing Framework receive filter fixes From: Rik Faith Since audit_receive_filter() is only called with audit_netlink_sem held, it cannot race with either audit_del_rule() or audit_add_rule(), so the list_for_each_entry_rcu()s may be replaced by list_for_each_entry()s, and the rcu_read_{un,}lock()s removed. A fix for this is part of the attached patch. Other features of the attached patch are: 1) generalized the ability to test for inequality 2) added syscall exit status reporting and testing 3) added ability to report and test first 4 syscall arguments (this adds a large amount of flexibility for little cost; not implemented or tested on ppc64) 4) added ability to report and test personality User-space demo program enhanced for new fields and inequality testing: http://people.redhat.com/faith/audit/auditd-0.5.tar.gz [PATCH] selinux: make IPv6 code work with audit framework From: James Morris This patch makes the IPv6 code work with the audit framework, following the merge of both. [PATCH] selinux: Audit compute_sid errors From: Stephen Smalley This patch changes an error message printk'd by security_compute_sid to use the audit framework instead. These errors reflect situations where a security transition would normally occur due to policy, but the resulting security context is not valid. The patch also changes the code to always call the audit framework rather than only doing so when permissive as this was causing problems with testing policy, and does some code cleanup. [PATCH] selinux: remove ratelimit from avc From: Stephen Smalley This patch drops the ratelimit code from the SELinux avc, as this can now be handled by the audit framework. Enabling and setting the ratelimit is then left to userspace. [PATCH] CONFIG_SND_MIXART doesn't compile From: Bernhard Rosenkraenzer mixart.h uses tasklet_struct without including linux/interrupt.h -- fix attached. [PATCH] unmap_vmas latency improvement unmap_vmas() will cause scheduling latency when tearing down really big vmas on !CONFIG_PREEMPT. That's a bit unkind to the non-preempt case, so let's do a cond_resched() after zapping 1024 pages. [PATCH] more i386 head.S cleanups From: Brian Gerst - Move empty_zero_page and swapper_pg_dir to BSS. This requires that BSS is cleared earlier, but reclaims over 3k that was lost due to page alignment. - Move stack_start, ready, and int_msg, boot_gdt_descr, idt_descr, and cpu_gdt_descr to .data. They were interfering with disassembly while in .text. [PATCH] intermezzo leak fixes - Don't leak a pathname ref on error - Don't do putname() on a nameidata. [PATCH] es1688 Definition redundancy From: Fabian Frederick Here's a trivial patch to avoid definition redundancy in es1688. [PATCH] binfmt_elf.c fix for 32-bit apps with large bss From: Julie DeWandel A problem exists where a 32-bit application can have a huge bss, one that is so large that an overflow of the TASK_SIZE happens. But in this case, the overflow is not detected in load_elf_binary(). Instead, because arithmetic is being done using 32-bit containers, a truncation occurs and the program gets loaded when it shouldn't have been. Subsequent execution yields unpredictable results. The attached patch fixes this problem by checking for the overflow condition and sending a SIGKILL to the application if the overflow is detected. This problem can in theory exist when loading the elf interpreter as well, so a similar check was added there. [PATCH] stack reduction: ide-cd From: Arjan van de Ven ide-cd: a few 512 byte scratch buffers can be static; they are just for putting "padding" sectors in that aren't used. (acked by Jens) [PATCH] stack reductions: ide From: Arjan van de Ven ide.c: constant array of strings can be static [PATCH] stack reduction: ISDN From: Arjan van de Ven isdn: dynamically allocate big structures [PATCH] use EFLAGS #defines instead of inline constants From: "Randy.Dunlap" Use x86 EFLAGS defines in place of hardwired constants. [PATCH] H8/300 support update (1/3) - ptrace fix From: Yoshinori Sato - fix PTRACE_SIGLESTEP bug. - separate to CPU depend. [PATCH] H8/300 support update (2/3) - entry.S cleanup From: Yoshinori Sato - cleanup define [PATCH] H8/300 support update (3/3) - others From: Yoshinori Sato - use new serial driver (drivers/serial/sh-sci.[ch]) - typo fix - add message level [PATCH] H8/300 support update From: Yoshinori Sato - fix any error/warning - fix {request,freee}_irq interrupt control fix - add dump_stack - fix show_trace_task - fix typo [PATCH] sh-sci compile error fix patch From: Yoshinori Sato - add Kconfig depends H8300 - H8/300 support compile error fixed. [PATCH] fix posix-timers to have proper per-process scope From: Roland McGrath The posix-timers implementation associates timers with the creating thread and destroys timers when their creator thread dies. POSIX clearly specifies that these timers are per-process, and a timer should not be torn down when the thread that created it exits. I hope there won't be any controversy on what the correct semantics are here, since POSIX is clear and the Linux feature is called "posix-timers". The attached program built with NPTL -lrt -lpthread demonstrates the bug. The program is correct by POSIX, but fails on Linux. Note that a until just the other day, NPTL had a trivial bug that always disabled its use of kernel timer syscalls (check strace for lack of timer_create/SYS_259). So unless you have built your own NPTL libs very recently, you probably won't see the kernel calls actually used by this program. Also attached is my patch to fix this. It (you guessed it) moves the posix_timers field from task_struct to signal_struct. Access is now governed by the siglock instead of the task lock. exit_itimers is called from __exit_signal, i.e. only on the death of the last thread in the group, rather than from do_exit for every thread. Timers' it_process fields store the group leader's pointer, which won't die. For the case of SIGEV_THREAD_ID, I hold a ref on the task_struct for it_process to stay robust in case the target thread dies; the ref is released and the dangling pointer cleared when the timer fires and the target thread is dead. (This should only come up in a buggy user program, so noone cares exactly how the kernel handles that case. But I think what I did is robust and sensical.) /* Test for bogus per-thread deletion of timers. */ #include #include #include #include #include #include #include #include #include /* Creating timers in another thread should work too. */ static void *do_timer_create(void *arg) { struct sigevent *const sigev = arg; timer_t *const timerId = sigev->sigev_value.sival_ptr; if (timer_create(CLOCK_REALTIME, sigev, timerId) < 0) { perror("timer_create"); return NULL; } return timerId; } int main(void) { int i, res; timer_t timerId; struct itimerspec itval; struct sigevent sigev; itval.it_interval.tv_sec = 2; itval.it_interval.tv_nsec = 0; itval.it_value.tv_sec = 2; itval.it_value.tv_nsec = 0; sigev.sigev_notify = SIGEV_SIGNAL; sigev.sigev_signo = SIGALRM; sigev.sigev_value.sival_ptr = (void *)&timerId; for (i = 0; i < 100; i++) { printf("cnt = %d\n", i); pthread_t thr; res = pthread_create(&thr, NULL, &do_timer_create, &sigev); if (res) { error(0, res, "pthread_create"); continue; } void *val; res = pthread_join(thr, &val); if (res) { error(0, res, "pthread_join"); continue; } if (val == NULL) continue; res = timer_settime(timerId, 0, &itval, NULL); if (res < 0) perror("timer_settime"); res = timer_delete(timerId); if (res < 0) perror("timer_delete"); } return 0; } [PATCH] v850: use volatile qualifier on v850 test-n-bitop asm statements From: (Miles Bader) Otherwise the compiler can delete them (this is one of those "how on earth did it ever work before" moments). [PATCH] v850: make v850 dma-mapping.h header work when !CONFIG_PCI From: (Miles Bader) Is this something that should be done in ? [PATCH] m68knommu: create dma-mapping.h From: Create a dma-mapping.h for m68knommu architecture. [PATCH] m68knommu: fix kernel_thread() From: Some kernel janitor clean ups of printk for the m68knommu specific process code. And more importantly a fix to the kernel_thread() asm code to correctly return the pid back to the return var from the clone system call. [PATCH] m68knommu: Kconfig cleanup From: A few changes to the m68knommu Kconfig: . Add support for 64MHz clocked CPU's . Add support for selecting the COBRA5272 and COBRA5282 boards . Use drivers/Kconfig for driver configuration . Allow configuring compilation with frame-pointer [PATCH] m68knommu: comempci.c printk cleanup From: Cleanup m68knommu's comempci.c support code. Add type to all printk calls. Patch originally from kernel janitors. [PATCH] m68knommu: coherent dma allocation From: Create the coherent DMA allocation functions for m68knommu. No current hardware in this class requires anything special, so it just just does normal allocations after sanity checks. [PATCH] m68knommu: build dma.c From: Add local m68knommu dma allocation code to build list. [PATCH] m68knommu cleanup setup.c (printk and irqreturn_t) From: Cleanup m68knommu/kernel/setup.c. Add type to all printk calls, remove obsolete framebuffer setup and fix a few irqreturn_t for interrupt handlers in prototypes. Printk cleanup originally from kernel janitors. [PATCH] m68knommu cleanup traps.c (printk and dump_stack) From: Add type to all printk calls in m68knommu traps.c. Also added a modern dump_stack function. [PATCH] m68knommu: platform additions in linker script From: A couple of additions to the linker script for m68knommu platforms: . add support for COBRA5272 and COBRA5282 boards . link in .rodata.str1 generated by gcc-3.3.x compilers [PATCH] m68knommu/coldfire: fix gcc cpu define From: Fix architecture/cpu defines to support those used by modern versions of gcc (that is gcc > 3.3.x) for m68knommu. The standard for defining ColdFire architectures is no longer __mcf5200__, it is now __mcoldfire__. This patch fixes all the occurances in the m68knommu/lib functions. [PATCH] m68knommu: add senTec vendor support to Makefile From: Add build support for the senTec vendor to m68knommu architecture Makefile. [PATCH] m68knommu: fault.c printk cleanup From: Add type field to printk calls. Patch original provided by kernel janitors. [PATCH] m68knommu: mm/init.c printk cleanup From: Add type field to printk calls in m68knommu mm/init.c. Patch originally from kernel janitors. [PATCH] m68knommu/ColdFire base DMA addresses From: Define the DMA register set base address array for those m68knommu/ColdFire CPU's that have a DMA engines. [PATCH] m68knommu: timers.c printk cleanup From: Add type field to printk calls in m68knommu timers.c [PATCH] m68knommu: auto-size DRAM on Motorola/5272 ColdFire board From: Allow for auto-detecting the size of the DRAM in the startup code for the Motorola/5272 (ColdFire) board. Use the DRAM sizing register, since it will have been setup by the debug boot monitor (dBUG). [PATCH] m68knommu: add start code for COBRA5272 board From: Add startup code specific to newly supported COBRA5272 board. [PATCH] m68knommu: use irqreturn_t in ColdFire 5282 setup code From: Fixes to the Motorola ColdFire 5282 setup code: . fix interrupt routine return types to be irqreturn_t . add DMA base addresses array [PATCH] m68knommu: add start code for COBRA5282 board From: Add start up code specific to the newly added COBRA5282 board. [PATCH] m68knommu: cleanup ColdFire/5307 ints code From: . add type field to printk calls (from kernel janitors) . there is no loop in show_interrupts(), don't use continue [PATCH] m68knommu: use irqreturn_t in ColdFire 5307 setup code From: Fixes to the Motorola ColdFire 5307 setup code: . fix interrupt routine return types to be irqreturn_t . add DMA base addresses array [PATCH] m68knommu: mm/5307/vectors.c printk cleanup From: Add type field to printk call. Original patch supplied bu kernel janitors. [PATCH] m68knommu: conditional ROMfs copy for 5407 CLEOPATRA board From: Conditionaly copy an attached ROMfs filesystem in memory on kernel startup. This should only be done if there really is a ROMfs there. [PATCH] m68knommu: 68360 commproc.c printk cleanup From: Add type specifier to printk calls. Original patch from kernel janitors. [PATCH] m68knommu: 68360 config.c printk cleanup From: Add type specifier to printk calls. Patch originally from kernel janitors. [PATCH] m68knommu: 68EZ328 config.c printk cleanup From: Add type specifier to printk calls. Patch originally from kernel janitors. [PATCH] 68knommu: use irqreturn_t in ColdFire 5407 setup code From: Fixes to the Motorola ColdFire 5407 setup code: . fix interrupt routine return types to be irqreturn_t . add DMA base addresses array . support compile time setting of kernel boot arguments [PATCH] 68knommu: use irqreturn_t in Motorola 68328 setup code From: A number of small fixes for the Motorola 68328 setup code: . fix interrupt routine return types to be irqreturn_t . add type specifier to printk calls (from kernel janitors) . rework asm code to be gcc-3.3.x clean [PATCH] 68knommu: cleanup Motorola 68328 ints code From: Some fixes for the 68328 common ints management code: . use irqreturn_t for return type of interrupt handlers . clean up asm code to be gcc-3.3.x clean . add type field to printk calls (from kernel janitors) . there is no loop in show_interrupts(), don't use continue [PATCH] 68knommu: cleanup Motorola 68360 ints code From: Some fixes for the 68360 common ints management code: . use irqreturn_t for return type of interrupt handlers . add type field to printk calls (from kernel janitors) . there is no loop in show_interrupts(), don't use continue [PATCH] 68knommu: mk68knommu DragonEngine setup code printk cleanup From: A couple of fixes for the DragonEngine sepcific setup code: . remove cs8900 ethernet setup from here . add type specifier to printk calls (from kernel janitors) [PATCH] 68knommu: cleanup startup code for 68EZ328 DragonEngine board From: Clean up debug trace in startup code of 68EZ328 DragonEngine board. [PATCH] 68knommu: 68EZ328/ucdimm setup code printk cleanup From: Add type specifier to printk calls in 68EZ328/ucdimm setup code. Patch original from kernel janitors. [PATCH] 68knommu: add support for 64MHz clock for ColdFire boards From: Add support for boards that have a 64MHz clock to common Coldfire header. [PATCH] missing \n in timer_tsc.c From: Arjan van de Ven patch below fixes a missing \n in a printk; without this you get to see a <4> in the middle of that line... [PATCH] hugetlb consolidation From: William Lee Irwin III The following patch consolidates redundant code in various hugetlb implementations. I took the liberty of renaming a few things, since the code was all moved anyway, and it has the benefit of helping to catch missed conversions and/or consolidations. [PATCH] s390: core s390 From: Martin Schwidefsky s390 core changes: - Fix _raw_spin_trylock for 64 bit. - Add clarification to s390 debug debug documentation. [PATCH] s390: common i/o layer From: Martin Schwidefsky Common i/o layer changes: - Avoid de-registering a ccwgroup device multiple times. - Remove check for channel path objects in get_subchannel_by_schid. Channel patch objects are never in the bus list. - Avoid NULL pointer deref. in qdio_unmark_q. - Fix reference counting on subchannel objects. - Add shutdown function to terminate i/o and disable subchannels at reipl. - Remove all ccwgroup devices if the ccwgroup driver is unregistered. [PATCH] s390: tape driver fixes From: Martin Schwidefsky Tape driver changes: - Add missing break in tape_34xx_work_handler to avoid misleading message. - Cleanup offline/remove code. [PATCH] s390: dasd driver fix From: Martin Schwidefsky dasd driver changes: - Fix check for device type in error recovery for fba devices. [PATCH] s390: network driver fixes From: Martin Schwidefsky Network driver changes: - ctc: move kfree of driver structure after the last use of it. - netiucv: stay in state startwait if peer is down. - lcs: initialize ipm_list and unregister netdev only if it is present. [PATCH] s390: dcss block driver fix From: Martin Schwidefsky DCSS block device driver changes: - Fix remove_store function, put_device is called too early. [PATCH] s390: zfcp fixes (without kfree hack) From: Martin Schwidefsky zfcp host adapter fixes: - Reuse freed scsi_ids and scsi_luns for mappings. - Order list of ports/units by assigned scsi_id/scsi_lun. - Don't update max_id/max_lun in scsi_host anymore. - Get rid of all magics. - Add owner field to ccw_driver structure. - Avoid deadlock on bus->subsys.rwsem. - Use a macro for all scsi device sysfs attributes. - Change proc_name from "dummy" to "zfcp". - Don't wait for scsi_add_device to complete while holding a semaphore. - Cleanup include files in zfcp_aux.c & zfcp_def.h. - Get rid of zfcp_erp_fsf_req_handler. - Proper link up/down handling. - Avoid possible NULL pointer dereference in zfcp_erp_schedule_work. - Remove module_exit function. Without an external release function for the zfcp_port/zfcp_unit objects module unloading is racy. [PATCH] s390: zfcp log messages part 1 From: Martin Schwidefsky zfcp host adapter log message cleanup part 1: - Shorten log output. - Increase log level for some messages. - Always print leading zeroes for wwpn and fcp-lun. [PATCH] s390: zfcp log messages part 2 From: Martin Schwidefsky zfcp host adapter log message cleanup part 2: - Shorten log output. - Increase log level for some messages. - Always print leading zeroes for wwpn and fcp-lun. [PATCH] s390: crypto device driver part 1 From: Martin Schwidefsky The crypto device driver for PCICA & PCICC cards, part 1. [PATCH] s390: crypto device driver part 2 From: Martin Schwidefsky The crypto device driver for PCICA & PCICC cards, part 2. [PATCH] ia64: Allow IO port space without EFI RT attribute Some firmware does not require run-time mapping of the legacy IO port space. (It may not need to perform any IO port operations, or it may do them with translation disabled.) (efi_get_iobase): Don't require that IO port space be marked RT, since there's no reason the firmware should require mappings for it. Thanks to Greg Albrecht for noticing this. Also, allow attributes in addition to EFI_MEMORY_UC. I can't think of another current attribute that makes sense, but the kernel only depends on being able to use UC. [PATCH] ia64: set_rte() should get iosapic_lock Currently set_rte() changes RTE without iosapic_lock held. I guess it assumes to be called only at the boot time. But set_rte() can be called by PCI driver not only at the boot time. So I think set_rte() should get iosapic_lock. pci_enable_device(drivers/pci/pci.c) | +-> pci_enable_device_bars(drivers/pci/pci.c) | +-> pcibios_enable_device(arch/ia64/pci/pci.c) | +-> acpi_pci_irq_enable (drivers/acpi/pci_irq.c) | +-> iosapic_enable_intr (arch/ia64/kernel/iosapic.c) | +-> set_rte (arch_ia64/kernel/iosapic.c) A following patch fixes this issue. [PATCH] s390: rewritten qeth driver From: Martin Schwidefsky The rewritten qeth network driver. [PATCH] Add queue congestion callout From: Miquel van Smoorenburg The VM and VFS use the address_space_backing_dev_info to track the realtime status of the device which backs the mapping. The read_congested and write_congested fields are used to determine whether a read or write against that device may block. We use this infrastructure to a) allow pdflush to service many queues in parallel (by not getting stuck on any particular one) and b) to avoid undesirable and uncontrolled latencies in places such as page reclaim and c) To avoid blocking in readahead operations The current code only supports simple disk queues (and I have a patch here for NFS). Stacked queues (MD and DM) don't get this information right and problems were expected. Efficiency problems have now been noted and it's time to fix it. This patch lays down the infrastructure which permits the queue implementation to get control when someone at a higher level is querying the queue's congestion state. So DM (for example) can run around and examine all the queues which contribute to the higher-level queue. It also adds bdi_rw_congested() for code in xfs and ext2 that calls both bdi_read_congested() and bdi_write_congested() in a row, and it was "free" anyway. [PATCH] Implement queue congestion callout for device mapper From: Miquel van Smoorenburg Joe Thornber This implements the queue congestion callout for DM stacks. To make bdi_read/write_congested() return correct information. - md->lock protects all fields in md _except_ md->map - md->map_lock protects md->map - Anyone who wants to read md->map should use dm_get_table() which increments the tables reference count. This means the spin lock is now only held for the duration of a reference count increment. Udpate: dm.c: protect md->map with a rw spin lock rather than the md->lock semaphore. Also ensure that everyone accesses md->map through dm_get_table(), rather than directly. [PATCH] dmL remove __dm_request From: Joe Thornber dm.c: remove __dm_request (merge with previous patch). [PATCH] per-backing dev unplugging From: Jens Axboe , Chris Mason, me, others. The global unplug list causes horrid spinlock contention on many-disk many-CPU setups - throughput is worse than halved. The other problem with the global unplugging is of course that it will cause the unplugging of queues which are unrelated to the I/O upon which the caller is about to wait. So what we do to solve these problems is to remove the global unplug and set up the infrastructure under which the VFS can tell the block layer to unplug only those queues which are relevant to the page or buffer_head whcih is about to be waited upon. We do this via the very appropriate address_space->backing_dev_info structure. Most of the complexity is in devicemapper, MD and swapper_space, because for these backing devices, multiple queues may need to be unplugged to complete a page/buffer I/O. In each case we ensure that data structures are in place to permit us to identify all the lower-level queues which contribute to the higher-level backing_dev_info. Each contributing queue is told to unplug in response to a higher-level unplug. To simplify things in various places we also introduce the concept of a "synchronous BIO": it is tagged with BIO_RW_SYNC. The block layer will perform an immediate unplug when it sees one of these go past. [PATCH] Use BIO_RW_SYNC in swap write page From: Jens Axboe Dog slow software suspend found this one. If WB_SYNC_ALL, then you need to mark the bio as sync as well. This is because swap_writepage() does a remove_exclusive_swap_page() (going to __delete_from_swap_cache -> __remove_from_page_cache) which can kill page->mapping, thus aops->sync_page() has nothing to work with for unplugging the address space. [PATCH] unplugging: md update From: Neil Brown I've made a bunch of changes to the 'md' bits - largely moving the unplugging into the individual personalities which know more about which drives are actually in use. [PATCH] Correct unplugs on nr_queued From: Jens Axboe There's a small discrepancy in when we decide to unplug a queue based on q->unplug_thresh. Basically it doesn't work for tagged queues, since q->rq.count[READ] + q->rq.count[WRITE] is just the number of allocated requests, not the number of requests stuck in the io scheduler. We could just change the nr_queued == to a nr_queued >=, however that is still suboptimal. This patch adds accounting for requests that have been dequeued from the io scheduler, but not freed yet. These are q->in_flight. allocated_requests - q->in_flight == requests_in_scheduler. So the condition correctly becomes if (requests_in_scheduler == q->unplug_thresh) instead. I did a quick round of testing, and for dbench on a SCSI disk the number of timer induced unplugs was reduced from 13 to 5 :-). Not a huge number, but there might be cases where it's more significant. Either way, it gets ->unplug_thresh always right, which the old logic didn't. [PATCH] CFQ io scheduler From: Jens Axboe CFQ I/O scheduler [PATCH] rmap 1 linux/rmap.h From: Hugh Dickins First of a batch of three rmap patches: this initial batch of three paving the way for a move to some form of object-based rmap (probably Andrea's, but drawing from mine too), and making almost no functional change by itself. A few days will intervene before the next batch, to give the struct page changes in the second patch some exposure before proceeding. rmap 1 create include/linux/rmap.h Start small: linux/rmap-locking.h has already gathered some declarations unrelated to locking, and the rest of the rmap declarations were over in linux/swap.h: gather them all together in linux/rmap.h, and rename the pte_chain_lock to rmap_lock. [PATCH] rmap 2 anon and swapcache From: Hugh Dickins Tracking anonymous pages by anon_vma,pgoff or mm,address needs a pointer,offset pair in struct page: mapping,index the natural choice. But swapcache uses those for &swapper_space,swp_entry_t. It's trivial to separate swapcache from pagecache with radix tree; most of swapper_space is actually unused, just a fiction to pretend swap like file; and page->private is a good place to keep swp_entry_t, now that swap never uses bufferheads. Define PG_anon bit, page_add_rmap SetPageAnon and put an oopsable address in page->mapping to test that we're not confused by it. Define page_mapping(page) macro to give NULL when PageAnon, whatever may be in page->mapping. Define PG_swapcache bit, deduce swapper_space from that in the few places we need it. add_to_swap_cache now distinct from add_to_page_cache. Separating the caches somewhat simplifies the tmpfs swizzling in swap_state.c, now the page can briefly be in both caches. The rmap method remains pte chains, no change to that yet. But one small functional difference: the use of PageAnon implies that a page truncated while still mapped will no longer be found and freed (swapped out) by try_to_unmap, will only be freed by exit or munmap. But normally pages are unmapped by vmtruncate: this should only affect nonlinear mappings, and a later patch not in this batch will fix that. [PATCH] rw_swap_page_sync fixes Fix up the rw_swap_page_sync() gorrors by fully decoupling this function from the VM - it is now just a helper function which reads a page from or writes a page to swap. [PATCH] rmap 3 arches + mapping_mapped From: Hugh Dickins Some arches refer to page->mapping for their dcache flushing: use page_mapping(page) for safety, to avoid confusion on anon pages, which will store a different pointer there - though in most cases flush_dcache_page is being applied to pagecache pages. arm has a useful mapping_mapped macro: move that to generic, and add mapping_writably_mapped, to avoid explicit list_empty checks on i_mmap and i_mmap_shared in several places. Very tempted to add page_mapped(page) tests, perhaps along with the mapping_writably_mapped tests in do_generic_mapping_read and do_shmem_file_read, to cut down on wasted flush_dcache effort; but the serialization is not obvious, too unsafe to do in a hurry. [PATCH] rename page_to_nodenum() From: "Martin J. Bligh" I'd prefer we renamed this to page_to_nid() before anyone starts using it. This fits with the naming convention of everything else (pfn_to_nid, etc). Nobody uses it right now - I grepped the whole tree. [PATCH] cyclades works OK on SMP From: Marcelo Tosatti The cyclades.c driver was marked BROKEN_ON_SMP during early 2.6. It was fixed later on but the tag was left in Kconfig. The driver is not very smart wrt SMP locking, it can be improved. There is only one spinlock per card which guarantees command block ordering and protects different shared data, which can be held for long periods. _But_ the locking works reliably, so remove the BROKEN_ON_SMP tag. [PATCH] dnotify_parent speedup From: Anton Blanchard Directory notify code was showing up in a dd bs=1024k from 2 raid arrays on an emulex FC adapter: 3635 69.4896 vmlinux-2.6.5 .default_idle 332 6.3468 vmlinux-2.6.5 .__copy_tofrom_user 112 2.1411 vmlinux-2.6.5 .save_remaining_regs 76 1.4529 vmlinux-2.6.5 .scsi_dispatch_cmd 64 1.2235 vmlinux-2.6.5 .dnotify_parent 61 1.1661 vmlinux-2.6.5 .do_generic_mapping_read We already have a sysctl to enable/disable it, the patch below uses it in dnotify_parent. dnotify_parent disappears and idle time goes up: 4508 70.8582 vmlinux-2.6.5 .default_idle 253 3.9767 vmlinux-2.6.5 .__copy_tofrom_user 142 2.2320 vmlinux-2.6.5 .save_remaining_regs 88 1.3832 vmlinux-2.6.5 .shrink_zone 84 1.3203 vmlinux-2.6.5 .elx_drvr_unlock 75 1.1789 vmlinux-2.6.5 .scsi_dispatch_cmd 69 1.0846 vmlinux-2.6.5 .do_generic_mapping_read Of course, to gain this small speedup isers need to know to set /proc/sys/fs/dir-notify-enable to zero. Nobody does that. [PATCH] Feed floppy.c through Lindent From: "Randy.Dunlap" [PATCH] jbd: do_get_write_access lock contention reduction We're seeing heavy contention against j_list_lock on 8-way in do_get_write_access(). We actually don't need j_list_lock in there except for one little case - the per-bh jbd_lock_bh_state() is sufficient to protect this buffer's internal state. On some nice quick LVM array Ram Pai measured an overall 3x speedup from this patch: the script took the following time on 265mm1 real 0m57.504s user 0m0.400s sys 7m29.867s and with the 2patches it took real 0m19.983s user 0m0.438s sys 1m55.896s [PATCH] jbd: b_transaction zeroing cleanup Almost everywhere where JBD removes a buffer from the transaction lists the caller then nulls out jh->b_transaction. Sometimes, the caller does that without holding the locks which are defined to protect b_transaction. This makes me queazy. So change things so that __journal_unfile_buffer() nulls out b_transaction inside both j_list_lock and jbd_lock_bh_state(). It cleans things up a bit, too. [PATCH] i386 probe_roms(): preparation From: Rene Herman The i386 probe_roms() function has a fair number of problems currently: - When you actually have an adapter ROM in the machine, your video ROM disappears. This is due to the pc9800 subarch merge that split it up in probe_video_rom(int roms) and probe_extension_roms(int roms), but expects a "roms++" in probe_video_roms() to have an effect outside of that function. - The majority of VGA adapters these days host a ROM larger then 32K, yet the current code hardcodes a 32K ROM. The VGA BIOS "length" byte is normally valid (it in fact needs to be for a regular mainboard BIOS to accept it) and I've verified on a few dozen very new to very old VGAs that it is. However, assuming someone actually did not check for the length and checksum there for a reason, the safe thing to do here is accept the length byte when we also get a valid checksum. - The current code scans 0xc0000 to 0xdffff for a video ROM while the standard PC thing to do (that which the BIOS does) is only scan for a video ROM starting between 0xc0000 and 0xc7fff. This means that on a headless- (or BIOS-less monochrome adapter-) box, the first adapter ROM found triggers the registration of a 32K "Video ROM" at hardcoded address 0xc0000, even when _nothing_ is present between 0xc0000 and 0xc7fff. - The current adapter ROM scan stops at 0xdffff, whether or not an extension ROM is present at 0xe0000. The PC thing to do is scan 0xc8000 upto 0xdffff if an extension ROM is present, and upto 0xeffff when it's not (it's not/hardly ever). - Adapter ROMs are called "Extension ROM", but the latter term is really better reserved for a motherboard extension ROM. - Currently, the code happily starts scanning through a ROM it just registered looking for the next one (just does += 2048, even when that's inside the previous ROM) which is at least silly. Unfortunately, this code is "subarched" between mach-default and mach-pc9800, meaning the patch got a bit involved. Currently all this code, and gobs of data, is defined (not just declared) in the header: include/asm-i386/mach-{default,pc9800}/mach_resources.h which isn't nice. That .h really wants to be a .c. The first patch, in the next message, does not change any code but only undoes the probe_video_rom / probe_extension_roms split and moves the code to a new file arch/i386/mach-{default,pc9800}/std_resources.c with a header include/asm-i386/std_resources.h for the prototypes only. The second patch overhauls the code itself for mach-default. Please see comments on top of that patch for (yet more) comments. It's tested on various machines, with and without adapter ROMs. I haven't touched pc9800. Nothing should have changed though. The pc9800 author, as given in the code, is CCed. Also, x86-64 inherits the probe_roms() code from 2.4, and while it doesn't have the subarch specific problems, it has all others. I'll convert it to if this i386 version is deemed desirable. This patch doesn't change any code, just moves stuff from the "mach_resources.h" header to a "std_resources.c" subarch specific file, and introduces a "std_resources.h" header for the prototypes. [PATCH] i386 probe_roms(): fixes From: Rene Herman This patch tries to improve the i386/mach-default probe_roms(). This also c99ifies the data, adds an IORESOURCE_IO flag for the I/O port resources, an IORESOURCE_MEM flag for the VRAM resource, IORESOURCE_READONLY | IORESOURCE_MEM for the ROM resources and adds two additional "adapter ROM slots" (for a total of 6) since it now also scans the 0xe0000 segment. [PATCH] swsusp update: supports discontingmem/highmem From: Pavel Machek Bill Irwin did some work on this. It makes swsusp behave correctly w.r.t. discontingmem, and adds highmem handling (very simple-minded, but should work ok with 1GB). It now should behave correctly w.r.t. more than one swap device, and fixes double restoring of console. [PATCH] swsusp update: supports discontingmem/highmem fixes From: Pavel Machek It makes swsusp behave correctly w.r.t. discontingmem, and adds highmem handling. [PATCH] Swsusp should not wake up stopped processes From: Pavel Machek If you stop process with ^Z, then suspend, process is awakened. Thats a bug. Solution is to simply leave already stopped processes alone. Plus we no longer use TASK_STOPPED for processes in refrigerator. Userland might see us and get confused. [PATCH] Correct kernel-doc comment with incorrect parameters documented From: "Randy.Dunlap" From: Michael Still Correct kernel-doc comment with incorrect parameters documented [PATCH] get_user_pages shortcut for anonymous pages From: Martin Schwidefsky The patch avoids the instantiation of pagetables for not-present pages in get_user_pages(). Without this, the coredump code can cause total memory exhaustion in pagetables. Consider a store to current stack - 1TB. The stack vma is extended to include this address because of VM_GROWSDOWN. If such a process dies (which is likely for a defunc process) then the elf core dumper will cause the system to hang because of too many page tables. We especially recognise this situation and simply return a ref to the zero page. [PATCH] isicom.c: jiffies must be unsigned long From: Geert Uytterhoeven jiffies must be unsigned long [PATCH] isicom.c: unused vars From: Geert Uytterhoeven Recent serial changes moved some code, causing unused variable warnings. [PATCH] parport dependency fix From: Geert Uytterhoeven PCI multi-IO card support depends on PCI [PATCH] DVB dependency fix From: Geert Uytterhoeven DVB_TWINHAN_DST depends on DVB_BT8XX (dependency is explicitly mentioned in help text, but not enforced) [PATCH] isicom error path fix From: Geert Uytterhoeven Variable error is not initialized, but printed if tty_unregister_driver() fails. [PATCH] QD65xx I/O ports fix From: Geert Uytterhoeven I/O port numbers can be larger than 8-bit on many platforms (this caused a warning when {out,in}b() cast reg to a pointer on platforms with memory mapped I/O) [PATCH] Fix parportbook build again From: Herbert Xu The previous fix causes a syntax error when building: Working on: /home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml jade:/home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml:4059:2:E: invalid comment declaration: found character "!" outside comment but inside comment declaration jade:/home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml:4058:0: comment declaration started here jade:/home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml:4059:4:E: character data is not allowed here This patch removes the offending line completely since that file is probably not coming back anyway. [PATCH] saa7134 - Add two inputs for Asus TV FM From: Martin Hicks I just bought an ASUS TV FM capture card, based on the saa7134 chip. It only had one input specified, coax. This patch adds the Composite and S-Video inputs. It seems to work correctly for me. [PATCH] pdaudiocf.c needs init.h From: Herbert Xu This patch makes this file includes linux/init.h since it uses the __init tag. [PATCH] don't offer GEN_RTC on ia64 From: Bjorn Helgaas gen_rtc.c doesn't work on ia64 (we don't have asm/rtc.h, for starters), so don't offer it there. [PATCH] remove concatenation with __FUNCTION__ arch/* From: Tony Breeds [PATCH] remove concatenation with __FUNCTION__ drivers/* From: Tony Breeds [PATCH] remove concatenation with __FUNCTION__ include/* From: Tony Breeds [PATCH] remove concatenation with __FUNCTION__ sound/* From: Tony Breeds [PATCH] Fix Raid5/6 above 2 Terabytes From: Evan Felix Here is a patch that fixes a major issue in the raid5/6 code. It seems that the code: logical_sector = bi->bi_sector & ~(STRIPE_SECTORS-1); (sector_t) = (sector_t) & (constant) that the right side of the & does not get extended correctly when the constant is promoted to the sector_t type. I have CONFIG_LBD turned on so sector_t should be 64bits wide. This fails to properly mask the value of 4294967296 (2TB/512) to 4294967296. in my case it was coming out 0. this cause the loop following this code to read from 0 to 4294967296 blocks so it could write one character. As you might imagine this makes a format of a 3.5TB filesystem take a very long time. [PATCH] make ibmasm driver uart support depend on SERIAL_8250 From: Max Asbock This patch makes serial line registration in the ibmasm service processor driver depend on CONFIG_SERIAL_8250. Previously the driver wouldn't compile when serial driver support wasn't enabled. [PATCH] fix test_and_change_bit comment From: Paul Jackson I've read over the code in each case, built and ran a test case for i386 in particular, and studied the other uses and definitions of test_and_change_bit(). Everything I see recommends this change. - Fix test_and_change_bit() comment: returns old value, not new one. [PATCH] ext2fs sb= mount option fix From: (Andrew Church) The following patch fixes a bug in the processing of the sb= (alternate superblock) mount option for ext2: when changing the device block size, the given superblock is ignored and the code reverts to using block 1. [PATCH] ext3fs sb= mount option fix From: (Andrew Church) The following patch fixes a bug in the processing of the sb= (alternate superblock) mount option for ext3: when changing the device block size, the given superblock is ignored and the code reverts to using block 1. [PATCH] fix for potential integer overflow in zoran driver From: "Ronald S. Bultje" Attached patch fixes a potential integer overflow in zoran_procs.c (part of the zr36067 driver). Bug was detected by Ken Ashcraft with the Stanford checker. [PATCH] mdacon.c warning fix. From: "Luiz Fernando N. Capitulino" drivers/video/console/mdacon.c:599: warning: initialization from incompatible pointer type [PATCH] do_fork() error path memory leak From: In do_fork(), if an error occurs after the mm_struct for the child has been allocated, it is never freed. The exit_mm() meant to free it increments the mm_count and this count is never decremented. (For a running process that is exitting, schedule() takes care this; however, the child process being cleaned up is not running.) In the CLONE_VM case, the parent's mm_struct will get an extra mm_count and so it will never be freed. This patch should fix both the CLONE_VM and the not CLONE_VM case; the test of p->active_mm prevents a panic in the case that a kernel-thread is being cloned. [PATCH] Fix More Problems Introduced By Module Structure Added in modpost.c From: Rusty Russell Sam Ravnborg found these. 1) have_vmlinux is a global, and should not be reset every time. 2) We pretend every module needs cleanup_module so it gets versioned, but that isn't defined for CONFIG_MODULE_UNLOAD=n. 3) The visible effect of this is that modpost will start complaning about undefined symbols - previously this happened only when the module was isntalled. [PATCH] Rename bitmap_clear to bitmap_zero, remove CLEAR_BITMAP From: Rusty Russell clear_bit(n, addr) clears the nth bit. test_and_clear_bit(n, addr) clears the nth bit. cpu_clear(n, cpumask) clears the nth bit (vs. cpus_clear()). bitmap_clear(bitmap, n) clears out all the bits up to n. Moreover, there's a CLEAR_BITMAP() in linux/types.h which bitmap_clear() is a wrapper for. Rename bitmap_clear to bitmap_zero, which is harder to confuse (yes, it bit me), and make everyone use it. [PATCH] i2c-dev warning fixes drivers/i2c/i2c-dev.c: In function `i2cdev_read': drivers/i2c/i2c-dev.c:140: warning: int format, different type arg (arg 3) drivers/i2c/i2c-dev.c: In function `i2cdev_write': drivers/i2c/i2c-dev.c:168: warning: int format, different type arg (arg 3) [PATCH] policydb printk warnings security/selinux/ss/policydb.c:1160: warning: signed size_t format, different type arg (arg 3) security/selinux/ss/policydb.c:1160: warning: signed size_t format, different type arg (arg 3) [PATCH] applicom warnings and usercopy-in-cli fix drivers/char/applicom.c: In function `ac_write': drivers/char/applicom.c:363: warning: int format, different type arg (arg 2) drivers/char/applicom.c:363: warning: int format, different type arg (arg 3) drivers/char/applicom.c:363: warning: int format, different type arg (arg 2) drivers/char/applicom.c:363: warning: int format, different type arg (arg 3) drivers/char/applicom.c:523:2: warning: #warning "Je suis stupide. DW. - copy*user in cli" drivers/char/applicom.c: In function `ac_read': drivers/char/applicom.c:546: warning: int format, different type arg (arg 2) drivers/char/applicom.c:546: warning: int format, different type arg (arg 3) drivers/char/applicom.c:546: warning: int format, different type arg (arg 2) drivers/char/applicom.c:546: warning: int format, different type arg (arg 3) [PATCH] tpqic02 warnings drivers/char/tpqic02.c: In function `rdstatus': drivers/char/tpqic02.c:700: warning: int format, different type arg (arg 2) drivers/char/tpqic02.c:700: warning: int format, different type arg (arg 2) [PATCH] BSD accounting oops fix oopses have been reported in do_acct_process(), with premption enabled, when threaded applications are exitting. It appears that we're racing with another thread which is nulling out current->tty. I think this race is still there after we moved current->tty into current->signal->tty, so let's take the needed lock. [PATCH] framebuffer bugfix From: Arjan van de Ven Patch below fixes a thinko in the frame buffer drivers; the code does cursor.image.data = kmalloc(size, GFP_KERNEL); .... cursor.mask = kmalloc(size, GFP_KERNEL); .... if (copy_from_user(&cursor.image.data, sprite->image.data, size) || copy_from_user(cursor.mask, sprite->mask, size)) { .... where it's clear that the & in the first copy_from_user is utterly bogus since the destination is the content of the newly allocated buffer, and not the pointer to it as the code does. [PATCH] fb_copy_cmap() fix From: Arjan van de Ven fb_copy_cmap() takes an argument about wether to do memcpy, copy_from_user or copy_to_user. 0 is memcpy, 2 is copy_to_user. In the ioctl you want copy_to_user for copying the colormap to userspace. [PATCH] Make %docs depend on scripts_basic From: Sam Ravnborg From: Herbert Xu It seems that the %docs targets only needs scripts_basic. The following patch does just that. This removes its dependency on the existence of a .config file. [PATCH] kbuild: cleaning in three steps From: Sam Ravnborg Previously 'make clean' deleted all automatically generated files. The following patch revert this behaviour, and now 'make clean' leaves enough behind to allow external modules to be built. The cleaning is now done in three steps: make clean - delete everything not needed for building external modules make mrproper - delete all generated files, including .config make distclean - delete all temporary files such as *.orig, *~, *.rej etc. This fixes reports about nvidia and vmware build issues. [PATCH] kbuild: external module support From: Sam Ravnborg Based on initial patch from Andreas Gruenbacher there is now better support for building external modules with kbuild. The preferred syntax is now: make -C $KERNELSRC M=$PWD but the old syntax: make -C $KERNELSRC SUBDIRS=$PWD modules will remain supported. The major differences compared to before are that: 1) No attempt is made to neither check nor update any files in $KERNELSRC 2) Module versions are now supported During stage 2 of kernel compilation where the modules are built, a new file Module.symvers is created. This file contains the version for all symbols exported by the kernel and any module compiled within the kernel tree. When the external module is build the Module.symvers file is being read and symbol versions are used from that file. The purpose of avoiding any updates in the kernel src is that usually in a distribution the kernel src will be read-only, and there is no need to try to update it. And when building an external module the focus is on the module, not the kernel. I expect the distributions will start using something like this: kernel src - with no generated files. Not even .config: /usr/src/linux- Output from build: /lib/modules/linux-/build where build is a real directory with relevant output files and the appropriate .config. I have some Documentation in the pipe-line, but wants to see how this approach is received before completing it. This patch is made on top of the previously posted patch to divide make clean in three steps. And you may need to edit the following line in the patch to make it apply: %docs: scripts_basic FORCE to %docs: scripts FORCE [PATCH] parport: no procfs warning fix drivers/parport/procfs.c: In function `parport_default_proc_unregister': drivers/parport/procfs.c:529: warning: `return' with a value, in function returning void [PATCH] Add CONFIG_SYSFS From: Patrick Mochel Here is a patch to make sysfs optional. Note that with CONFIG_SYSFS=n you must specify the boot device's major:minor on the kernel boot command line with root=03:01 For embedded systems, it will save a significant amount of memory during runtime. And, it saves 4k from the built kernel image for me. [PATCH] JBD: BH_Revoke cleanup Use the bh bit test/set infrastructure rather than open-coding everything. No functional changes. [PATCH] cciss: /proc fix From: This patch fixes a bug where /proc displays 1 less logical volume than is actually configured. This causes problems for some installers. [PATCH] cciss_scsi warning drivers/block/cciss_scsi.c: In function `scsi_cmd_stack_free': drivers/block/cciss_scsi.c:241: warning: cast from pointer to integer of different size [PATCH] pmdisk is x86 only Only x86 implements pmdisk_arch_suspend(). So mark pmdisk as ia32-only, to avoid breaking allyesconfig. [PATCH] Oprofile: ARM/XScale PMU driver From: Zwane Mwaikambo The following patch adds support for the XScale performance monitoring unit to OProfile. It uses not only the performance monitoring counters, but also the clock cycle counter (CCNT) allowing for upto 5 usable counters. The code has been developed and tested on an IOP331 (hardware courtesy of Intel) therefore i haven't been able to test it on XScale PMU1 systems. Testing on said systems would be appreciated, and if done, please uncomment the #define DEBUG line at the top of op_model_xscale.c OProfile userspace support has already been committed and should be available via CVS. [PATCH] I2C: Rework memory allocation in i2c chip drivers Additional remarks: 1* This patch also removes an unused struct member in via686a and fixes an error message in ds1621. 2* I discovered error path problems in it87 and via686a detection functions. For the it87, I think that this patch makes it even more broken. I will fix both drivers in a later patch (really soon). [PATCH] I2C: Error paths in it87 and via686a drivers Here comes the patch that fixes error paths in the it87 and via686a detection functions. The it87 part also adds missing error values. [PATCH] I2C: pwm support in w83781d.c Here is a general pwm support cleanup patch for the w83781d chip driver. Featuring: * Don't pretend that we handle PWM on AS99127F chips. We don't know how it works, and one of the register we are accessing for now is clearly not a PWM register, and changing its value usually breaks temperature readings. * Discard irrelevant comments. * Rewrite show_pwmenable_reg. It was obviously taken from the 2.4 driver, with unneeded tests and the code was much too complicated anyway. And now we handle errors correctly. * Initialize pwm_enable at load time. So far it was done conditionally (if init=1) while it should always be done. And pwm2_enable wasn't read from the chip, while it should. I could test that my AS99127F doesn't expose pwm files through ssysfs anymore. Which means that I couldn't test the rest of the pwm changes, unfortunately. I've applied similar changes to our 2.4/CVS repository. [PATCH] I2C: make I2C chip drivers return -EINVAL on error [PATCH] I2C: fix asb100 bug Hi nymisi, Greg: * Nyeste Mihály [2004-01-27 16:02:04 +0100]: > Hi! > > I reported a bug of asb100 chip at: > http://www2.lm-sensors.nu/~lm78/readticket.cgi?ticket=1539 > > The reply was the follow: > > "Is there a BIOS option you can disable, e.g. Asus "COP", > "QFAN", or some such? My guess is that the BIOS is > somehow interfering with the asb100 driver. Otherwise > I don´t know how this could happen. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Yeah, I wrote that. "You do that, you go to the box, you know. Two minutes by yourself, and you feel shame, you know." - Denis the goalie Greg, please apply this fix (vs. 2.6.5): [PATCH] I2C: Fix voltage rounding in lm80 This one line patch fixes voltage rounding in the lm80 chip driver. [PATCH] I2C: No reset not limit init in via686a The following patch removes limits initialization in the via686a driver. It was decided some times ago that this belongs to user-space, not kernel. See the thread here: http://archives.andrew.net.au/lm-sensors/msg06134.html It also prevents the sensor chip from being savagely reset at load time. This too follows a decision taken long ago that drivers should do as little as possible in their init procedure. See the thread here: http://archives.andrew.net.au/lm-sensors/msg04593.html This should make the driver smaller, safer and faster to load. The same was done to our 2.4/CVS version of the driver 5 months ago and it seems to work just fine. Delete unused files in sound/oss From Herbert Xu; the files aren't used anywhere, and shouldn't be there in the first place. [PATCH] USB: New ID for ftdi_sio Hi, I have an USB contactless reader which uses a FTDI chip. It works well with the current ftdi_sio driver, it's just a matter of adding an ID: [PATCH] Zorro devlist.h kbuild Zorro: Quieten building of devlist.h (cfr. PCI) [PATCH] Pm2fb is broken on Amiga Permedia2: Mark pm2fb broken on Amiga, until somebody fixes it (pm2fb.c explicitly tests for CONFIG_PCI right now) [PATCH] pm2fb barrier cleanup Permedia2: Always use the standard barrier macros (they do exist on m68k, and map to barrier()) [PATCH] Amiga Zorro8390 Ethernet section conflict Zorro8390: const data cannot be in the init data section (from Roman Zippel) [PATCH] MVME16x RTC const MVME16x RTC: Make days_in_mo[] const [PATCH] Sun-3 duplicates Sun-3: Kill duplicate definitions: - FC_CONTROL is defined in - vectors[] is declared in [PATCH] M68k vector definitions M68k: Add remaining CPU vector definitions [PATCH] M68k initializers cleanup M68k: Clean up initializers: - Convert struct/array initializers to C99 style - Do not initialize data to 0 or NULL explicitly so it can move to bss [PATCH] Amikbd C99 cleanup Amikbd: Use C99 array initializers and standard key defines [PATCH] m68k I/O m68k: Use explicit-sized types for I/O accesses [PATCH] M68k TLB fixes M68k TLB fixes from Roman Zippel: - Check current->active_mm for currently active mm - Set correct context to flush the right ATC entry This is especially important for kswapd to correctly flush unmapped entries (it caused random segfaults during large compiles) [PATCH] M68k time update M68k: Update time adjustment code cfr. other architectures. (perhaps do_gettimeofday() is a good candidate for consolidation across archs?) [PATCH] Amiga eth%d Amiga Ethernet drivers: Print card info after calling register_netdev(), to avoid dev->name still being 'eth%d'. [PATCH] m68k show_interrupts bug M68k: Make sure machine-specific interrupts are always printed (bug introduced by show_interrupts() conversion) [PATCH] hugetlbpage highmem fix From: Andy Whitcroft When clearing a large page allocation ensure we use a page clear function which will correctly clear a ZONE_HIGHMEM page. [PATCH] kbuild: Create .tmp_versions when building external modules From: Sam Ravnborg When building external modules the $PWD/.tmp_versions directory is used. The .tmp_versions directory in the kernel tree cannot be used because this would clutter up the kernel tree especially when more than one external module is being build for the same kernel tree. This patch make sure to create $PWD/.tmp_versions, and to delete it during make clean. It also removes warning about 'messed with SUBDIRS', this is no longer relevant when .tmp_versions is made outside the kernel tree. [PATCH] put ia32 pgds and pmds back into slab From: William Lee Irwin III This optimisation was reverted when I was removing all users of page->list. Bill fixed it up, so unrevert it again. [PATCH] get_files_struct cleanup From: Russell King Cleanup the 4 duplicate "get_files_struct" implementations into one get_files_struct() function to compliment put_files_struct(). [PATCH] shrink VFS hash sizes on small machines From: Matt Mackall Base hash sizes on available memory rather than total memory. An additional 50% above current used memory is considered reserved for the purposes of hash sizing to compensate for the hashes themselves and the remainder of kernel and userspace initialization. [PATCH] fix vga16fb.c frame buffer bad memory mapping From: Vincent Sanders The vga16fb driver uses a direct ioremap on 0xa00000 to gain access to the vga card. This is wrong on architectures other than x86, every other driver uses VGA_MAP_MEM macro from vga.h to ensure the correct memory mapping. [PATCH] uninline put_page() Shrinks my vmlinux by an astonishing 28k. text data bss dec hex filename 3038796 589890 150612 3779298 39aae2 vmlinux.before 3009761 590107 150612 3750480 393a50 vmlinux.after Thanks to Denis Vlasenko for performing the analysis. [PATCH] uninline seq_puts() and seq_putc() Saves 3.4k from my vmlinux. Thanks to Denis Vlasenko for performing the analysis. [PATCH] uninline copy_to_user() and copy_from_user() 40k reduction in my vmlinux. Thanks to Denis Vlasenko for performing the analysis. [PATCH] Fix tmscsim on amd64 From: Jeff Garzik DC390_init() takes a long, not an int. [PATCH] m68knommu: change addr type to reduce casting in ColdFire serial driver From: Change "addr" field type to reduce casting in ColdFire serial driver. [PATCH] m68knommu: fixes to the ColdFire serial driver From: A whole bunch of fixes for the ColdFire serial driver: . remove unused CONFIG_LEDMAN code . reformat port definitions to new style structure init . change "addr" field type to reduce casting in ColdFire serial driver . cleanup locking problems in mcfrs_write(). . implement fraction baud rate clock support for hardware that supports it (namely the ColdFire 5272) . implement wait_until_sent, some ColdFire parts of hardware support for this (again the 5272). . correctly use return values from put_user(), get_user() and copy_to_user() Many of these originaly from kernel janitors. [PATCH] m68knommu: fixes to the 68328 DragonBall serial driver From: A few fixes for the 68328 "DragonBall" serial driver: . use irqreturn_t for interrupt handlers . correct a few variable types (stop compiler warnings) . correctly use return values from put_user(), get_user() and copy_to_user() Many of these originaly from kernel janitors. [PATCH] Wrong return value in hfs_fill_super From: Nick Wellnhofer hfs_fill_super in 2.6.5 returns -EIO instead of -EINVAL if a valid supe= block isn't found. So mount_block_root in init/do_mounts.c bails out before trying to mount the root device as XFS. [PATCH] mips build fix From: Samium Gromoff Without this one it fails to build. [PATCH] another mips build fix From: Samium Gromoff Without this one it fails to build, too. [PATCH] pcmcia/rsrc_mgr.c warning fix. From: "Luiz Fernando N. Capitulino" , me drivers/pcmcia/rsrc_mgr.c: In function `find_io_region': drivers/pcmcia/rsrc_mgr.c:604: warning: large integer implicitly truncated to unsigned type We don't really know what underlying type an ioaddr_t has, so just use an integer here and let the compiler promote it appropriately. [PATCH] Compile fix for macserial From: Jeff Mahoney This patch fixes a problem with the serial conversion to tiocm[sg]et. The paste from rs_ioctl included the command sanity checking, but there's no command for tiocm[sg]et. The compile ends up failing. [PATCH] stack reductions: nfs root From: Arjan van de Ven root_nfs_name is called one in single threaded environment; can use static. [PATCH] binfmt_misc: remove attribute(unused) From: Anton Blanchard It's been there since the kernel was first imported into bk. We see no reason for this. [PATCH] ufs2_frag_map_fix : fixes wrong content reading in ufs2 code From: Niraj Kumar This is in continuation of the ufs2 read-only code that went into 2.6.5. This patch fixes a bug where wrong content was being read off the disk after around 4 MB mark. [PATCH] ppc64: Fix ibmveth.c compilation From: Paul Mackerras This patch changes PCI_DMA_TODEVICE to DMA_TO_DEVICE in a couple of places in drivers/net/ibmveth.c, since it doesn't compile without this change and it does compile with it. It also reformats a couple of over-long lines in the vicinity of the other changes. [PATCH] ppc64: restore r13 in an unrecoverable exception From: Anton Blanchard We have to restore r13 when entering unrecoverable_exception. [PATCH] e1000: ethtool set/get eeprom fixes [PATCH] e1000: ethtool set/get ring param support [PATCH] e1000: fix eeprom update to include e1000_standby_eeprom A Bug in e1000_spi_eeprom_ready where the Chip Select bit wasn't being toggled after every status register read (if the eeprom wasn't ready after the first status register read). The call to e1000_standby_eeprom manages the CS bit correctly [PATCH] e1000: remove polarity reversal workaround for forced 10H/10F links Adding this caused the adapter to fail while operating at 10 mbps, half duplex. Hence the fix is not complete. We are still investigating a more complete fix for the polarity reversal issue. [PATCH] e1000: Set Attla PHY to Class A Some LOM implementation of our controllers pass IEEE tests (Tx distortion/Symmetry) while operating in Class A mode rather than in class AB mode. [PATCH] e1000: New bit definitions, fix comments on loadtime parameters [PATCH] e1000: all other white space fixes, changelog [PATCH] e1000: replace if(retval=fn()) with retval=fn(); if (retval) [PATCH] pcnet32 fix hang/crash with loopback test If the pcnet32 interface is not up, running the loopback test may hang or crash the system. This patch provided by Jim Lewis fixes that problem. Tested on ia32 and ppc systems. [PATCH] MAINTAINER entry for the r8169 driver. [PATCH] r8169: Missing 'static' qualifier for functions. [PATCH] r8169: correct irq handler return value The irq handler must not return 1 when the status register is null during the firt iteration. [PATCH] r8169: mod_timer() expects an absolute time, not a relative offset. [PATCH] remove concat. with __FUNCTION__ (drivers/net/) (V2) Hi, Previous patch had a small problem. This patch replaces the previous version. I can/will send a relative/differential diff if you want/need it. Problem: On Tue, 2004-04-06 at 14:45, Randy.Dunlap wrote: > From: Tony Breeds > > "concatenation of string literals with __FUNCTION__ is deprecated" > -#define TRACE_ENTER(devname) DEBUG(2, "%s: -> " __FUNCTION__ "()\n", devname); > -#define TRACE_EXIT(devname) DEBUG(2, "%s: <- " __FUNCTION__ "()\n", devname); > +#define TRACE_ENTER(devname) DEBUG(2, "%s: -> %s()\n", __FUNCTION__, devname); > +#define TRACE_EXIT(devname) DEBUG(2, "%s: <- %s()\n", __FUNCTION__, devname); | Hi. This isn't the same. It should be: | | +#define TRACE_ENTER(devname) DEBUG(2, "%s: -> %s()\n", devname, __FUNCTION__); | +#define TRACE_EXIT(devname) DEBUG(2, "%s: <- %s()\n", devname, __FUNCTION__ ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/gt96100eth.c | 2 +- drivers/net/irda/smsc-ircc2.c | 6 +++--- drivers/net/irda/via-ircc.c | 2 +- drivers/net/wireless/orinoco.h | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) Delete sis190 net driver. The driver was copied from the very-buggy r8169 (pre-Francois), and is for hardware that isn't even out of the lab yet. [netdrvr r8169] temporary build fix, until DMA_xxBIT_MASK is upstream [PATCH] ide-disk.c: workaround for bogus LBA48 drives From: Geert Uytterhoeven Apparently some IDE drives (e.g. a pile of 80 GB ST380020ACE drives I have access to) advertise to support LBA48, but don't, causing kernels that support LBA48 (i.e. anything newer than 2.4.18, including 2.4.25 and 2.6.4) to fail on them. Older kernels (including 2.2.20 on the Debian woody CDs) work fine. Check for id->lba_capacity_2 being non-zero in idedisk_supports_lba48(). [PATCH] hpt366.c: fix 'cat /proc/ide/hpt366' crash Disable code doing outb() without any locking in /proc handler. Otherwise 'cat /proc/ide/hpt366' crashes if done during I/O. Noticed by John Stoffel . [PATCH] zero 'hw_regs_t hw' allocated from stack in ide.c and ide-cs.c [PATCH] asm-arm26/hdreg.h: use unsigned long for ide_ioreg_t [PATCH] add asm-generic/hdreg.h Use it on all archs which define ide_ioreg_t to unsigned long. [PATCH] asm/ide.h: ide_ioreg_t cleanup ide_ioreg_t is deprecated and hasn't been used by IDE driver for some time. Use unsigned long directly on alpha, arm26, arm, mips, parisc, ppc64 and sh. asm-ia64/ide.h (ide_ioreg_t is unsigned short) and asm-m68knommu/ide.h (broken - ide_ioreg_t is not defined) are the only users of ide_ioreg_t left. [PATCH] asm-ia64/ide.h: use unsigned long instead of ide_ioreg_t [PATCH] obsolete asm/hdreg.h [PATCH] jbd copyout fix When I converted journal_write_metadata_buffer() to kmap_atomic() I screwed up the handling of the copyout buffers - we're currently writing four zeroes into the user's page rather than into the data which is to be written to the journal (oops). Net effect: any block which starts with 0xC03B3998 gets scribbled on in data=journal mode. [PATCH] Fix ext3 add_nondir d_instantiate() It should be unconditional. [PATCH] Fix MSI IA64 Support Build Breakage From: "Nguyen, Tom L" The patch showed up in Linus' tree last night breaks the "generic_defconfig" build for ia64. Fix it by adding the NR_VECTORS device to ia64. [PATCH] update fix for potential integer overflow in zoran driver From: Dave Jones 2.4 already had this fixed, but uses a somewhat larger value to clip at. For uniformity sake, perhaps they should be the same? Patch below makes it match 2.4-bk [PATCH] x86-64 update Various fixes and cleanups for x86-64. - Update defconfig - Fix some problems in ROM resource scanning (Rene Herman) - Initialize APIC id of CPU 0 (Venkatesh Pallipadi) - Always enable swiotlb for GART_IOMMU - Fix compilation without IOMMU_GART - Remove nodes_present; use standard node_online_map instead. This also fixes a bug with no memory on node 0. - Switch node<->cpu mapping to arrays. This fixes some awkward special cases with no nodes and empty nodes. - Move K8 fallback node setup to common code - Eliminate old fake_node. - Fix wrong fields in MCE handling (Marc Bevand) - Make pci_dma_consistent behave more similar to i386 to fix Alsa [ARM PATCH] 1811/1: Set dma_handle to ~0 when coherent allocation too big Patch from Deepak Saxena [ARM] Fix builds using O= [SERIAL] Add ARM PL011 uart primecell support. This adds support for the AMBA PL011 UART primecell, and moves the existing AMBA UART support to indicate it covers the AMBA PL010 primecell. [PATCH] USB speedtouch: turn on debugging if CONFIG_USB_DEBUG is set Hi Greg, this causes the speedtouch driver to output non-verbose debugging messages if the kernel was configured with CONFIG_USB_DEBUG. The patch is against your 2.6 kernel tree. [PATCH] USB speedtouch: fix memory leak in error path Hi Greg, this patch fixes a memory leak in the speedtouch driver. The leak occurs when the ATM layer submits a skbuff for transmission, but the driver rejects it (because the device has been unplugged for example). The ATM layer requires the driver to free the skbuff in this case. The patch is against your 2.6 kernel tree. [PATCH] USB speedtouch: bump the version number Hi Greg, this patch bumps the speedtouch driver's version number. It also adds the version number to the module description, so people can see it with modinfo. I also added a MODULE_VERSION line (why? because it was there...) The patch is against your 2.6 kernel tree. [PATCH] USB: more ftdi devices [PATCH] USB: Patch for Clie TH55 Support in visor kernel module I just want to explain the changes I've made, since I tried to adhere to the more organized structure in the 2.6 visor module to incorporate my changes. I didn't want to pollute this with some ugly hack. I created a new device id table with name clie_id_5_table to cleanly separate the UX50/TH55 from the rest. Along with this I added a new usb_serial_device_type which is essentially a copy of handspring_device but has its own attach function. This new attach function ( clie_5_attach ) will do the actual magic. I think it is justified to introduce a new type ( which I called clie_5 ) since I suspect that Sony is intentionally changing the interface spec ( As it has done so in the past ). I dare to predict that we will see more clie devices coming this year which will require this new attachment procedure. At the moment I am only aware of the UX50 and TH55 to implement that weird configuration. [PATCH] isofs buffer overflow fix Merged in 2.4, and various vendor kernels.. iDefense reported a buffer overflow flaw in the ISO9660 filesystem code. An attacker could create a malicious filesystem in such a way that they could gain root privileges if that filesystem is mounted. The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CAN-2004-0109 to this issue. Ernie Petrides came up with the following patch which I fixed up a slight reject in to apply to 2.6. Otherwise, unchanged from the 2.4 patch. [ARM PATCH] 1810/1: Support for non-PXA XScale UARTs Patch from Deepak Saxena Supersedes 1809/1 [PATCH] ppc64 signal frame issue Fix a corruption bug, we were copying too much information back off the signal frame. While in the area help with gccs sign extension optimisation problems and convert some things to long. (Saves about 30 instructions in signal.c) [PATCH] large cpumask fix The RCU code was missing cpus_empty() in one place, required with large cpumasks. [PNPBIOS] parse asci text name This patch fixes the unknown tag warning by adding support for the asci text tag. [PNP] minor resource management fixes This patch fixes a bug in pnp_auto_config_dev in which it wouldn't always report allocation failures. It also corrects the return codes. [PNP] sysfs entry "resource" fix This patch ensures the proper count is returned in pnp_set_current_resources. [PNPBIOS] blacklist asus P4P800 The ASUS p4p800 motherboard's BIOS has a broken PnPBIOS implementation. This patch will disable PnPBIOS support if this hardware is detected by DMI. [PNPBIOS] avoid making potentially broken calls in proc.c This patch prevents /proc/bus/pnp/devices from requesting on-boot node information. Dynamic information is used instead. [ISAPNP] MEM32 fix in read resources Corrects isapnp_read_resources so that it gets MEM32 information properly. [ARM] Fix __do_softirq breakage. [ARM] Use #defined constants for handle_mm_fault and __do_page_fault. [PATCH] I2C: Fix voltage rounding in asb100 This one line patch fixes voltage rounding in the asb100 chip driver. It's very similar to a patch I submitted for the lm80 a few days ago. [PATCH] kbuild: fix modules_install The directory .tmp_versions/ was deleted during make vmlinux. This eliminated the list of modules used for moudles_install. The effect was that the following scenario failed: make make install make modules_install The solution is to only cleanup .tmp_versions when building modules. [PATCH] USB: fix CAN-2004-0075 Okay, now while we are at fixing security holes, is there any chance we can _finally_ get the attached patch in? The Vicam USB driver in all Linux Kernels 2.6 mainline does not use the copy_from_user function when copying data from userspace to kernel space, which crosses security boundaries and allows local users to cause a denial of service. Already ACKed by Greg. Only complaint was inproper coding style which is done with attached patch ;) ciao, Marc [PATCH] yenta: interrupt routing for TI briges Some TI cardbus bridges found in notebooks and PCI add-on cards are uninitialized. This means the interrupt mode and the interrupt routing is wrong in most cases, ending up in non working PCI interrupts. This makes the TI Yenta driver probe the PCI interrupt and adjust the interrupt setting if no interrupts are delivered. It's done in a safe way, that doesn't hurt working setups. Function 1 on two slot devices is handled differently from function 0 since both share the settings. Linux 2.6.6-rc1