Summary of changes from v2.6.3 to v2.6.4 ============================================ [netdrvr] e100 version 3 (complete rewrite) [e100] ICH6 IDs + ia64 memcpy fix + module_param * Add ICH6 device IDs. Devices funcionally equivalent to supported ICH5 devices, but new IDs. * Fixed unaligned access to casted skb->data (Matt Willcox [willy@debian.org]). * MODULE_PARM -> module_param * Bug printk after register_netdev to identify nic details. * misc cleanups. [netdrvr e100] include linux/moduleparam.h Fixes build. [netdrvr bonding] Cannot remove and re-enslave the original active slave In TLB/ALB modes, when enslaving a slave that has the bond's mac address, allow the operation if no other slave has that address. Should be applied after the cleanup patch set. [netdrvr bonding] Releasing the original active slave causes mac address duplication When releasing the active slave in TLB/ALB modes, bond_alb_deinit_slave() must be called before trying to select a new active slave. [netdrvr bonding] Add support for slaves that use ethtool_ops When collecting link information from slaves via ETHTOOL, first try using the relevant ethtool_ops functions. [netdrvr e100] netpoll + fixes to speed/duplex forced settings * Preserve forced speed/duplex settings during close/open sequence. * Reset PHY when going from autoneg to forced speed/duplex settings using ethtool. * Add netpoll support. [netdrvr bonding] fix build breakage [PATCH] [bonding 2.6] Fix compilation warning in bond_alb.c The IPX_TYPE_* constants and ipxhdr.ipx_type are u8 values, so we shouldn't use __constant_htons(). [netdrvr bonding] trivial - Update comment blocks and version field Update comment blocks, version field and copyright years to match all the recent changes that were accepted into 2.4/2.6. [PATCH] [bonding 2.6] Save parameters in a per-bond data structure - Save the bonding parameters in a per-bond data structure. - Move all handling of the insmod parameters to bond_check_params(). - Fix the handling of some warning messages regarding parameter use. [PATCH] [bonding 2.6] Use the per-bond value of the bond_mode parameter Change usage of the global 'bond_mode' parameter to the per-bond value. [PATCH] [bonding 2.6] Use the per-bond values of all remaining parameters Change usage of the all remaining global parameters to the per-bond values. [wan lapb] beginning of cleanups Beginning of lapb cleanups: lapb_register gets net_device along with the "token" and it gets stored in lapb_cb (token argument will die later). [wan lapb] switch to use net_device instead of custom token lapb functions that used to take a token to select lapb_cb they'll deal with are switched to getting net_device instead. Callbacks switched to using lapb->dev instead of lapb->token. [wan lapb] Printks switched from %p lapb->token to %p lapb->dev. [wan lapb] kill now-unused custom token container Nothing is using lapb->token anymore; removed, along with the old "token" argument of lapb_register(). [wan hdlc] hdlc_open() switched to net_device Beginning of hdlc fixes. hdlc_open() switched from hdlc_device to net_device. [wan hdlc] hdlc_close() switched to net_device. [wan hdlc] new port_to_dev() helper New helper in hd6457x.c: port_to_dev(). A bunch of port->hdlc eliminated. [wan hdlc] switch sca_xxx() to use net_device More hd6457x.c massage: sca_open(), sca_close(), sca_dump_rings() switched to net_device. Bunch of hdlc_to_port() eliminated in favor of dev_to_port(). [wan hdlc] hdlc_set_carrier() switched to net_device. [wan hdlc] hdlc->attach() switched to net_device. [wan farsync] Eliminated a bunch of port->hdlc and hdlc_to_dev() uses [wan hdlc] hdlc->proto.*() switched to net_device. Eliminated a bunch of ->netdev and hdlc_to_dev() uses. [wan hdlc] hdlc_cisco: killed ->netdev, hdlc_to_name() and hdlc_to_dev() uses. [wan hdlc] hdlc_fr: eliminated ->netdev, hdlc_to_dev() and hdlc_to_name() uses. [wan hdlc_x25] eliminated hdlc_to_dev() and hdlc_to_name() uses. [wan wanxl] eliminated hdlc_to_name() uses and a bunch of port->hdlc ones. [wan hdlc] switch internal ioctl dispatch to net_device Switched remaining ioctls to net_device, killed a bunch of hdlc_to_dev() and killed hdlc_to_name(). [wan pc300] more direct use of net_device In pc300 replaced dev->hdlc with dev->dev (hdlc to net_device). Killed a bunch of ugliness in pc300_tty.c, killed hdlc_to_dev() uses. [wan hdlc] new hdlc_stats() helper New inlined helper - hdlc_stats(). A lot of places had it spelled out; replaced with calls. [wan dscc4] Uses of ->hdlc and hdlc_to_dev() encapsulated into dscc4_to_dev(). [wan hdlc] switch register_hdlc_device() to take net_device arg register_hdlc_device()/unregister_hdlc_device() switched to net_device. Now all remaining callers of hdlc_to_dev() are isolated and we can start killing them. [wan hdlc] new private struct pointer in hdlc_device, and helpers for it New field in hdlc_device: void *priv; New helpers: struct net_device *alloc_hdlcdev(priv) allocates hdlc, sets ->priv and returns pointer to hdlc->netdev free_hdlcdev(dev) takes such pointer and frees its hdlc. wanxl switched to use of those; instead of embedding hdlc into card->ports[] we allocate it separately right after card had been allocated and store pointer to hdlc->netdev in card->ports[]->dev. Freeing is done just before freeing card. Pointer back to card->ports[] is stored in hdlc->priv. port_to_dev() and dev_to_port() rewritten in the obvious way; by now the rest of driver doesn't care whether hdlc is embedded or not - everything uses port_to_dev() and dev_to_port(). That killed embedded hdlc replacing it with pointer to net_device. Fairly similar work will be done in the next few patches for other drivers. Additionally, setup-after-register and free_irq()-before-unregister races had been fixed. [wan hdlc] kill embedded struct in various drivers Killed embedded hdlc in hd6457x.c derivatives (same as wanxl in previous patch) [wan pc300] use alloc_hdlcdev()/free_hdlcdev(). Leak fixed [wan farsync] embedded struct hdlc_device removal Removed embedded hdlc in farsync (same as for wanxl and friends). setup-after-registration race fixed. [wan dscc4] embedded struct removal Killed embedded hdlc in dscc4 (same as for other drivers). Fixed a setup-after-registration race. That was the last user of hdlc_to_dev(); killed. [wan hdlc] removal hdlc_to_dev() No more users, we may remove it. [wan hdlc] kill embedding of struct net_device Now we can kill the embedding of net_device into hdlc_device. Indeed, all instances of hdlc_device are created by alloc_hdlcdev() and nothing uses hdlc->netdev directly. So we can * remove hdlc->netdev * have alloc_hdlcdev() implemented via alloc_netdev() with the rest of hdlc_device as private part of net_device. * replace free_hdlcdev() with free_netdev(). * have dev_to_hdlc(dev) simply return netdev_priv(dev). [wan hdlc_fr] Switched allocation of net_device to alloc_netdev(). [wan hostess_sv11] sane net_device allocation Sane allocation in sv11. Switched it to SET_MODULE_OWNER(), while we are at it. Fixed a leak on exit and destroy-before-unregister race. [wan sbni] sane net_device allocation; plug a bunch of leaks Plugged a bunch of leaks in sbni. Replaced check_region() with intended request_region() in pci probe (BTW, that bugger should be turned into normal PCI driver at some point). [wan sealevel] Plugged a leak [netdrvr tun] Killed bogus ->init() [wireless airo] switched to sane allocation. [netdrvr s390/netiucv] partially sanitized wrt allocation [netdrvr fec] switched to sane allocation. It still leaks on failure exits, though. [wan sdla] Fixed leaks and double-free [netdrvr isa-skeleton] cleanups and fixes isa-skeleton.c got the same changes as actual ISA drivers - dynamic allocation, leak fixes, clobbering fixes, fix for IO-before-request_region(). [all over] more kfree -> free_netdev Remaining kfree -> free_netdev replacements (easy part of free_netdev() fixes) [netdrvr acenic] Race and leak fixes [netdrvr 3c509] Leak fixed [netdrvr apne] resource leak fix [wireless orinoco] check alloc_etherdev for failure [netdrvr s390/lcs] Leak fix lcs_cleanup_channel() is not enough there, we need full lcs_cleanup_card() (e.g. to free netdev) [wan] leak fixes in hostess_sv11, lapbether [netdrvr arm/am79c961] Fix for IO-before-request_region race [netdrvr saa9730] fix double-free Fixed double-free in saa9730.c (caller of that function does free_netdev() itself if we return an error). [netdrvr arch/uml] leak fix [netdrvr dvb/dvb_net] fixes Don't leave dvbnet->device[...] dangling after we free the sucker [netdrvr shaper] fix double-free Fix for double-free (we do explicit free_netdev() after unregister_netdev() in shaper.c) [netdrvr s390/qeth] Alloc fixes [PATCH] bugfixes for dgrs.c Update the RightSwitch dgrs.c driver for net-drivers-2.5-exp (2.6.1-rc3) to resolve some of the outstanding cruft there. Al may have a better/newer patch. * Don't copy net_device structure on slave device! This won't work because of state variables in structure. * make sure and request_regions before doing i/o to the card * use cpu_relax rather than barrier while spin waiting * don't use dev->init to do the probing work because hard to get unwind correct * Use new pci/eisa probing model, don't search the bus directly Beneficial side effect, don't need to keep on device list anymore. * Be more careful about releaseing resources in error paths Compiled and module loaded/unloaded, but don't have this hardware. Remove unused and invalid 'struct ppp' definition from if_pppvar.h. Eliminate ancient and unused include/linux/{if_pppvar,ppp}.h. Well, unused except for one silly constant in isdn_ppp.c. [netdrvr e100] fix slab corruption * Addresses two problems, both resulting in slab corruption: 1) driver indicating skb while HW is still DMA'ing (ouch!), 2) driver not stopping receiver activity before downing i/f. Fix is 1) wait for RNR (receiver-no-resources) interrupt before restarting receiver, 2) reseting HW to stop receiver before stopping i/f. This issue was also reproducible with eepro100. You need to turn off the copybreak, and reduce the number of descriptors to 4. Then bang on it with pktgen with 60-byte packets, with slab debugging enabled. For e100-3.0.x, the issue was a lot easier to reproduce with NAPI, because NAPI polls independently of where the HW is at, so it's easier for us to catch HW in the middle of finishing off the last Rx (as it runs out of resources) and asking HW if it's idle. Checking the RU status is not-reliable! That's the problem, and the mistake both eepro100 and e100-3.0.x were making. The solution is rely on RNR interrupts as the only indicator that HW is truly done, and then we're ready to restart the RU. We should only get RNR interrupts when we overrun the Rx ring. With NAPI, if the ring is overrun, we'll post RNR, but not restart the RU until we're out of polling. Without NAPI, we'll restart the RU as soon as we get RNR. I ran some 24-hour tests with and without NAPI (with 4 descriptors) and didn't get any corruption. Prior to this patch, I would get many errors about slab corruption. Also, the patch is larger than you might expect, but I initially thought I was doing something wrong with managing the ring, so I that code using old fashion double-link list. The ring management wasn't the problem, after all, but I prefer the old-fashion d-link implementation as it's easier to read. [netdrvr e100] copyright + trailing blanks + misc * Misc: 2004 copyright, remove trailing white space, remove some unused symbols. [wan] apply hdlc cleanups to new driver pci200syn [ALPHA] Mark exit_code before waking process for SINGLESTEP. From Aneesh Kumar . [IA32] VIA C3 crypto/RNG bits * Enable ACE (crypto) and RNG units on bootup. * Do not disable RNG unit when unloading hw_random module. * New bits listed in /proc/cpuinfo: rng_en, ace, ace_en * Add ACE-associated constants to cpufeature.h IEEE1394(r1118): Addition of new config-rom processing code [TG32]: Use pci_get_slot() to find 5704 peers, to handle domains properly. [IPV6]: Unify ipv6 output routine. [NET]: Kill bogus kmem cache alignment in neigh_table_init(). [TG3]: Reset GRC, if necessary, before DMA test. With help from Michael Chan. [NET]: Mention tuxmobil.org in drivers/net/Kconfig. JFS: get_UCSname does not need nls_tab argument This is a minor code cleanup. get_UCSname can get nls_tab by following the dentry to the superblock. This makes the calling code simpler and prettier. [IPV6]: Clean up ndisc printks. [PKTGEN]: Fix unintentional unaligned access. [IPV6]: Spelling corrections, and remove some XXX's [NET]: Fix ethtool oops if device support get but not set ringparam. [NET_SCHED]: Fix slot leakage in SFQ scheduler. [NET]: Do not send negative 2nd arg to skb_put(). With help from Yoshfuji Hideaki. [IPV6]: Kill remaining in6_u.u6_addrX uses. [IRDA]: Fix URLs in Kconfig. [HAMRADIO]: Fix URLs in Kconfig. JFS: Don't do filename translation by default Due to its roots in OS/2, JFS has always tried to convert pathnames into unicode. Unfortunately, it never had a reliable idea of what the incoming character set was, so it defaulted to CONFIG_NLS_DEFAULT. This behavior was confusing and many users have requested that JFS have a more sane behavior. This patch changes the default behavior to store the incoming bytes directly without translation. This is consistent with the behavior when the default value of CONFIG_NLS_DEFAULT (iso8859-1) was defined. The default behavior can be overridden by using the iocharset mount option. [IPV6]: Except MLD packets from source filtering. Co-authored with Yoshfuji Hideaki. [IPV6]: Kill 64-bit warnings in ndisc.c [CPUFREQ] Update URL. [libata] catch, and ack, spurious DMA interrupts Hardware issue on Intel ICH5 requires an additional ack sequence over and above the normal IDE DMA interrupt ack requirements. Issue described in post to freebsd list: http://www.mail-archive.com/freebsd-stable@freebsd.org/msg58421.html Since the bug workaround only requires a single additional PIO or MMIO read in the interrupt handler, it is applied to all chipsets using the standard libata interrupt handler. Credit for research the issue, creating the patch, and testing the patch all go to Jon Burgess. [ACPI] revert previous AML param patch for ACPICA update [ACPI] ACPICA 20040211 udpate from Bob Moore Completed investigation and implementation of the call-by-reference mechanism for control method arguments. Fixed a problem where a store of an object into an indexed package could fail if the store occurs within a different method than the method that created the package. Fixed a problem where the ToDecimal operator could return incorrect results. Fixed a problem where the CopyObject operator could fail on some of the more obscure objects (e.g., Reference objects.) Improved the output of the Debug object to display buffer, package, and index objects. Fixed a problem where constructs of the form "RefOf (ArgX)" did not return the expected result. Added permanent ACPI_REPORT_ERROR macros for all instances of the ACPI_AML_INTERNAL exception. [IRDA]: Add stir4200 driver. After a long maturation, this is time to send you the latest version of the stir4200 USB driver. Initially started by Paul Stewart, modified by Martin Diehl and me, and later partially rewriten by Stephen Hemminger. The hardware has many quirks. This is the first version that work reliably at SIR and mostly work at FIR. We may never get optimal operation from this hardware due to its pecularities, but at least its now usable. [IRDA]: Forgot to add stir4200.c in previous commit. [IPSEC]: Move hardware headers for decaped packets. Move the hardware header so that it appears next to the payload for AF_PACKET sockets. [TG3]: Abstract out mailbox workarounds into tw32_{rx,tw}_mbox(). [IPV4]: Add configurable restriction of local IP announcements in ARP requests. [IRDA]: Fix error return status in stir4200 driver. If stir_reset() succeeds, stir_net_open() must not return a success status code for every failure until irlap_open(). [IRDA]: In stir4200 driver, defer netif_start_queue() until device opening succeeds. [WAN]: Kconfig clean-up and update URL links. [IPVS] remove the superfluous call of waitpid in sync code [IPVS] retry to run kernel_thread when memory is temporarily exhausted [IPVS] update the version number of code to 1.2.0 [SUNGEM]: Kill unused variable on ppc. [TG3]: Define MBOX_WRITE_REORDER flag to zero on non-x86. [SCTP] Revert back to use kmalloc() for ssnmap allocs of sizes < 128K. [CPUFREQ] bump copyrights. [PATCH] USB: EHCI updates (mostly periodic schedule scanning) [USB] EHCI updates Update periodic schedule scanning - fix shutdown sometimes-hangs (Bernd Porr) - resolve the "whole frame at once" FIXME - try harder to avoid rescanning - don't delegate interrupt qh handling to a buggy helper routine - describe more of the relevant iso tuning parameters One-liners: - URB_NO_INTERRUPT hint affects ISO - show correct data toggle in sysfs debug files - FIXME is resolved by Linus' 20msec delay [PATCH] USB: fix usblp.c The line that IMHO triggers the bug is this: "writecount += usblp->writeurb->transfer_buffer_length;" It uses "usblp->writeurb->transfer_buffer_length" before initializing it, assuming that it will be zero on the first run. If it is not zero, but instead random *negative* garbage from memory, the loop will start printing endless data from user-space data. [PATCH] USB: ftdi_sio new PIDs and name fix for sysfs This patch adds a couple of new PIDs for the ftdi_sio driver and changes the name of the USB-UIRT device to avoid the "/" character, as that appears as a directory separator in the sysfs namespace. [IPV6]: Add sysctl to force MLD version. IEEE1394(r1125): Set host field of hpsb_address_serve struct when registering address spaces. IEEE1394(r1126): Small cleanup based on patch from Isaac Claymore. IEEE1394(r1128): Implement bus reset handling for hosts (based on patch from Oracle) IEEE1394(r1129): Initial support for reusing node entries over plug/unplug cycles IEEE1394(r1130): Conversion of some list_for_each() usages to list_for_each_entry(). IEEE1394/OHCI(r1131): Suspend/resume isn't dependent on CONFIG_PM. IEEE1394(r1132): Update Kconfig description of the eth1394 driver. IEEE1394: Sync revisions IEEE1394(r1134): Fix some typos introduced over the last few changes IEEE1394(r1135): Initial ieee1394_host_class implementation. IEEE1394(r1136): Implement node class [TG3]: Two more PHY bug workaround, plus fix DMA test on big-endian. [PATCH] USB: some stv680 fixes - swapRGB is already initialized to 0 - change "swapRGB_on == 1" to match in-source documentation - submit urb with GFP_ATOMIC (interrupt context) - this made driver unusable because of "might_sleep" messages. - group some "case"s - release vdev on fail - remove "kfree(0)" checking [TG3]: Fix early chip programming in tg3_setup_copper_phy(). 1) First action must be to set MAC_EVENT to zero. 2) Do not forget to clear MI_COMPLETION/LNKSTATE_CHANGED status bits in MAC_STATUS register. This fixes the bug wherein the link does not come up at all at the first ifup done after tg3 module load. [PATCH] USB: Remove unneeded and error-provoking variable in UHCI This patch removes an unneeded "status" field from the UHCI driver's URB-private data structure. The driver had been storing the status of completed URBs there rather than in the URBs themselves. This not only is wasteful of space but is also a cause of bugs, since the USB core relies on urb->status for proper synchronization with the driver. The patch also takes care of a number of small things that have been bugging me for ages: Close a small loophole by allowing an URB to be unlinked even before the uhci_urb_enqueue() procedure has started. Remove some fossil code from back when interrupt URBs were automagically resubmitted. Giveback unlinked URBs in the order they were unlinked. Don't set urb->status for dequeued URBs; the core has already set it for us. Rename uhci_remove_pending_qhs to uhci_remove_pending_urbps. (That has _really_ bothered me!) [TG3]: Bump driver version and reldate. [PATCH] USB: Even out distribution of UHCI interrupt transfers This patch evens out the distribution of interrupt transfers for the UHCI driver. It insures that no frame must handle interrupt queues for more than two different periods, thus improving the bandwidth utilization. It also simplifies the initialization code by replacing a multi-nested "if" statement with a simple bit-operation (thanks to Eric Piel for suggesting this approach). [PATCH] USB: ERRBUF_LEN compiling error when PAGE_SIZE=64KB on IA64 Randy, thanks for forwarding this to me. > Johannes, > > When I compile base kernel 2.6.1 with PAGE_SIZE=64KB on an IA64 > platform, there is an error. > CC init/version.o > LD init/built-in.o > LD .tmp_vmlinux1 > drivers/built-in.o(.init.text+0x168a2): In function `uhci_hcd_init': > : undefined reference to `__you_cannot_kmalloc_that_much' > make: *** [.tmp_vmlinux1] Error 1 > > That's because ERRBUF_LEN (equal to PAGE_SIZE*8) is too long when > PAGE_SIZE=64KB. Actually, there was a similar error found by Tony. See > http://marc.theaimsgroup.com/?l=linux-ia64&m=105604765306485&w=2. > > Could you change the definition of ERRBUF_LEN to a fixed value? For > example, 32*1024? > > Yanmin Yanmin, I'm the new maintainer for the UHCI driver. Yep, that's a definite error. This will fix it. Also included in this patch: change some confusing references from "high speed" to "full speed" and add proper hyphenation. [PATCH] USB: Simplify locking in UHCI This patch is an amalgam of 9 contributions from Stephen Hemminger. It begins the process of straightening out the use of semaphores and locking in the UHCI driver by removing unneeded irqsaves and irqrestores. It also removes an unnecessary list node and makes a couple of other small changes. clear_next_interrupt only called in IRQ context don't need irqsave/restore Since uhci_finish_completion is only called from IRQ routine, the irqsave/irqrestore is redundant and unnecessary. UHCI transfer_result is only called from IRQ context so irqsave/restore is unnecessary here. uhci_finish_urb is always called from irq so no need for irqsave/irqrestore. uhci_add_complete only called from IRQ context The complete_list element in the urb private data is redundant, since it is only used when the urb is on the complete list. And given the state transitions, an urb can't be on the complete list and any other list (remove, or urb_list). Therefore just use urb_list to link the complete_list Use list_move_tail to move between remove (or urb_list) and the complete_list. Save irq state in uhci_stop so that the irqsave/irqrestore's in all the free_pending and remove_pending code can be eliminated. Since uhci_stop now saves IRQ state, the free/remove pending routines no longer need irqsave/irqrestore. [PATCH] USB: Mask "HC Halted" bit in the UHCI status register Contrary to the UHCI specification document, in real controllers the "HC Halted" bit in the status register cannot be cleared by writing a 1. It will persist for as long as the controller is halted. Hence the bit needs to be masked away before checking whether or not the controller initiated an interrupt. Without this patch, other devices sharing the same IRQ line might not get serviced while the host controller is suspended, because the always-on status bit would cause the UHCI driver to report that it had handled the interrupt. [PATCH] USB Storage: Handle excess 0-length data packets This patch is an attempt to cope with Genesys Logic's, shall we say, creative approach to implementing the USB protocols. Their high-speed mass storage devices sometimes add an excess 0-length packet to the end of a data phase transmission. Of course we don't read that packet as part of the data phase; we see it as a 0-length CSW message. The real CSW follows immediately after. (Or sometimes a STALL follows immediately after, with the real CSW coming after that!) The patch checks the results of the first attempt to read the CSW. If it sees a normal packet (not a STALL) with length 0, it retries the read. Reports from two users indicate that it improves the performance of their USB-2 DVD drives. [PATCH] USB Storage: Treat STALL as failure for CB[I] I recall something like this had to be changed a while ago, but it looks like it's still not right. A STALL during either the command or data phase of a CB[I] command should indicate a failure. [PATCH] USB Storage: Reduce auto-sensing for CB transport This patch addresses a problem common among digital cameras that use the CB transport. Namely, too much auto-sensing confuses them; particularly auto-sensing after INQUIRY. I've made some traces of a Windows 2000 driver to see what it does (data sent to Andries Brouwer for inclusion on his web site; I'll announce when it's ready for viewing). Basically, it almost never sends REQUEST SENSE unless it received a STALL from the device. That's a pretty bogus way to operate, because it means that Windows has no way to tell when the device has finished executing a command if the command doesn't involve an IN transfer. Even after a lengthy WRITE, Windows continues to transmit more commands without regard for whether or not they will get overwritten in the device's internal buffer (and hence not executed). Indeed, exactly that happened with some of the commands in one of my traces. To be safe, we must follow every non-IN transfer with an auto-sense, but IN transfers that don't stall can be considered to have succeeded. That's what this patch does. It reduces auto-sensing by a considerable factor, probably close to half. It also fixes the problem with INQUIRY, since INQUIRY involves an IN data transfer. [PATCH] USB Storage: Save the SCSI residue value when auto-sensing This patch (a regeneration of as173) saves the residue value of a command when doing an auto-sense. Not that it really matters much -- almost nobody looks at that value. But it's definately incorrect the way it is, and this fixes it. [PATCH] USB Storage: Reduce unsolicited auto-sense This patch (a regeneration of as185) reduces the amount of auto-sensing we do even further. It also zeros-out the sense buffer in those cases where we do auto-sense and get back no error. [PATCH] USB Storage: Fix small endian-ness bug This patch fixes up a small endian-ness bug from mid-January. [PATCH] USB Storage: unusual_devs.h fixup On 15 Feb 2004, Frank D. Cringle wrote: > Hi, > > my syslog requests that I send this message. See below regarding > usb-storage: This device ... has an unneeded SubClass entry in unusual_devs.h > Feb 15 00:11:16 dagger usb-storage: This device (07cf,1001,1000 S 05 P 00) has an unneeded SubClass entry in unusual_devs.h > Feb 15 00:11:16 dagger Please send a copy of this message to Thank you for sending this in. Greg, it looks like an earlier patch changed too much. Here is the fix. Also included in this patch: Moved several entries that were in the wrong positions. Removed an entry (0x08ca, 0x2011) that could never be used because the preceding entry always would take precedence. [PATCH] USB: Fix USB host code to use generic DMA API [SCTP] Force enable Crypto options that are needed by SCTP config. [IPV4]: Add sophisticated ARP reply control via arp_ignore sysctl. [NET]: Ditch TSO in loopback driver, it's had enough testing. [SPARC32] Uninline atomic_t functions to save space. [PATCH] PCI: Changing 'GALILEO' to 'MARVELL' I'm working with some Marvell components (formerly Galileo Technologies) and noticed that the entries in include/linux/pci_ids.h have become dated. I have attached a patch that changes 'GALILEO' to 'MARVELL', adds some more devices, and updates the uses of the macros in the code. Please note that the newer marvell parts start with 'MV' instead of 'GT' to represent the new name. Also, I didn't change all uses of galileo to marvell, only the macro in pci_ids.h. [PATCH] PCI: add copyright for files msi.c and msi.h First I would like to say sorry for not responding immediately after receiving your email mentioning Copyright. I have contacted Intel Legal for proper text upon receiving this email; but have not received any response. As a result of team discussion, the attached patch, based on Linux kernel 2.6.3-rc2, includes the Intel Copyright for files: msi.h and msi.c. [PATCH] PCI: Fix pci_bus_find_capability() pci_bus_find_capability() is currently broken. It checks the wrong device's hdr_type for being a cardbus bridge or not. This patch pulls the guts of pci_bus_find_capability() and pci_find_capability() into a new function __pci_bus_find_cap() and changes these two functions to call it. [PATCH] PCI: remove unused defines in pci.h It occured to me that we also have the following related code in pci.h: Perhaps this should be removed as well? [PATCH] Intel x86-64 support merge This has all the x86-64 specific changes for Intel Prescott/Nocona support. It requires a few minor changes outside arch/x86_64, which I am sending separately. This patch is needed to boot an 64bit kernel on a 64-bit capable Prescott machine. The ugliest part is probably the swiotlb code. In fact the code for that is not even included, but just reused from IA64. swiotlb implements the PCI DMA API using bounce buffering. I don't like this at all, but there was no other way to support non DAC capable hardware (like IDE or USB) on machines with >3GB. Please redirect all flames for that to the Intel chipset designers. ChangeLog: - Add Kconfig options for PSC - Add support to reuse microcode driver from i386 (Suresh B Siddha) - Try to optimize for the selected CPU - Fix early CPUID check for Intel CPUs (Suresh B Siddha) - Fix GDT to use the configured cache line size for padding - Support monitor/mwait idle loop - Support HyperThreading - Support Intel CPUID flags - Remove all 3dnow prefetches - Add alternative() for the prefetchw prefetch inline. - Include P4 driver in oprofile - Support Intel NOPs in alternative [PATCH] Update i386 microcode driver for x86-64 The microcode driver needs to support 64bit physical addresses too. [PATCH] Enable Intel AGP on x86-64 Enable the Intel AGP driver for x86-64 too. [PATCH] Allow P4 oprofile code for x86-64 P4 support was previously ifdefed out for x86-64, remove that. [PATCH] ia64: fix possible memory leak in PCI alloc_resource() [PATCH] ia64: add "platform_data" to struct pci_controller, update SN2 accordingly Here's a small mod for Altix. It breaks up our 'pci fixup' function and has some other smallish clean ups. For the ia64 crowd I've added 'platform_data' to struct pci_controller. [PATCH] PCI Hotplug: Add SHPC and PCI Express hot-plug drivers [PATCH] PCI Hotplug: Add PPC64 PCI Hotplug Driver for RPA [PATCH] PCI Hotplug : add DLPAR driver for PPC64 PCI Hotplug slots Please consider the following patch for submission. This patch contains the implementation of the I/O Slot DLPAR Drivers for PPC64 RISC Platform Architecture. This module depends on the RPA PCI Hotplug Module in the previous post. The patch is made against kernel version 2.6.3-rc2. The Dynamic Logical Partitioning Module allows the runtime movement of I/O Slots between logical partitions. An administrator can logically add/remove PCI Buses to/from a PPC64 partition at runtime. These operations are initiated using interface files located at: /sys/bus/pci/pci_hotplug_slots/control/ Development contact for this module is John Rose (johnrose@austin.ibm.com). [IPVS] tidy up the header files to include [APPLETALK]: Use '%Z' for size_t. [PATCH] USB: usbcore, scatterlist cleanups [USB] minor usb_sg_wait() cleanups - count urb completions correctly when there's a non-recoverable fault during scatterlist submission ... prevents a hang (seen only with already-faulty usb-storage devices). - don't local_irq_{save,restore}() when not needed [PATCH] USB: usbcore, hub driver enables TT-per-port mode [USB] hub driver turns on multi-TT mode This turns on the multi-tt mode in hubs that support it; the Cypress "TetraHub" products are appearing at retail now, complete with some of the first Mini-B connectors I've seen shipping. This will be important for hooking up lots of full speed isochronous devices (audio, video, etc). [PATCH] USB: usbcore, avoid RNDIS configs [USB] usbcore avoids RNDIS configuration. Modifies the "choose a configuration" heuristic to recognize the other case that 2.4 handled: RNDIS, a MSFT protocol that's sometimes used as the first/default configuration (as specified by MSFT) on cable modems. CDC Ethernet is vendor-neutral, and preferred (except by MSFT). The initial version didn't catch RNDIS because it cloaks its ethernet links as a kind of CDC ACM (modem) device. [PATCH] USB: usbtest, two more protocol cases [USB] usbtest, two more control queueing subtests From Alan Stern. This adds two more "short control read" test cases, both padding the "expected" transfer to end-of-packet. We need both hosts and devices/gadgets to behave correctly here. [BLUETOOTH]: Use min_t to avoid warning in rfcomm sock.c [DECNET]: Make second arg to dn_alloc_send_skb a size_t pointer. [PATCH] USB: ehci-hcd, fullspeed iso data structures (1/3) [USB] start ehci split transaction support Updates split ISO transaction descriptor structure, add bitmask #defines; it's groundwork for full speed ISO support in EHCI. Updates periodic schedule scanning, and bandwidth calculations accordingly. Fixes bandwidth calculation to behave when the periodic schedule has entries of multiple types ... as will be more common as ISO support starts to be used here. [PATCH] USB: ehci-hcd, fullspeed iso data structures (2/3) [USB] ehci, rename some iso data structures Rename some data and functions used by EHCI to manage ISO transactions, since they currently assume only high speed transfers. Much of the same infrastructure will be used for full speed ISO, with split transactions. [PATCH] USB: ehci-hcd, scheduler handles TT collisions (3/3) [USB] ehci-hcd detects microframe transaction scheduling collisions This detects TT schedule collisions for split periodic transactions on USB 2.0 hubs, handling both isochronous and interrupt transfers but not supporting the "wrap around to the next frame" modes for either transfer type. The ISO scheduler is modified to use that support for full speed transfers ... though nothing will yet ask it to do that. It also tracks schedule depth, to help avoid accepting ISO URBs which need more time than currently remains unscheduled. [PKTSCHED]: Use queue limit of 1 when tx_queue_len is zero. PCI: fix pci quirk for P4B533-V, fixes bug 1720 Thanks to stephanrave@gmx.de (Stephan Rave) for the patch. [PATCH] USB: Improve UHCI root hub code: descriptor, OC bits, etc. This patch is from David Brownell. UHCI root hub updates ... minor bugfixes and cleanups, improving conformance with the USB hub specification. - UHCI doesn't support any kind of power switching; so modify the hub descriptor to stop claiming it does! Likewise fail attempts to disable power on any port. - Intel defined both overcurrent status overcurrent-change bits, but the current code only knows about one. Modify hub descriptor to report per-port overcurrent protection; and use both bits. - Modify the port status set/clear macros to know about the bits that must always be written as zero, and the write-to-clear bits. Update callers which wrote "set" instead of "clear". - Rewrote code returning port status; magic numbers are gone. - Driver can't really support 8 root hub ports; don't try. Also moves the #define DEBUG earlier so that it can kick in any of the various debug macros ... like pr_debug() and dev_dbg(). [PATCH] USB: More UHCI root hub code improvements This adds some minor improvements to the UHCI root hub code. The only important change is that it handles the overcurrent indicator bits on VIA controllers properly; they are reported using the opposite sense from Intel controllers. Report the OverCurrent status bits in the /proc debugging file and spontaneously change the use of whitespace. Remove unused variable in uhci_hub_status_data(). Report OverCurrent status for VIA controllers properly (the meaning of the status bit is inverted with respect to Intel controllers). Save the port status I/O address in a variable rather than recalculating it many times. Merge code for handling SetHubFeature and ClearHubFeature since we don't implement either one. Remove some unnecessary comments. Remove redundant min_t calculation. Fix up the microcode update on regular 32-bit x86. Our wrmsr() is a bit unforgiving and really doesn't like 64-bit values. We should possibly make wrmsr() automatically truncate the arguments, but regardless we should just fix microcode.c. IEEE1394(r1137): Check to make sure we have a hostinfo in sbp2_host_reset. [PATCH] move CONFIG_HOTPLUG to init/Kconfig As a bonus: cris, h8300, m68k and sparc can use CONFIG_HOTPLUG now. [PATCH] ia64: add support for time-interpolation via IBM EXA Cyclone timer This patch provides access to the cyclone time source found on IBM EXA based systems (x450 and x455). This is needed on multi-node systems where the CPU ITCs are not synchronized, causing possible time inconsistencies. This release fixes one last minor think-o and ran overnight without any time inconsistencies (when used in conjunction w/ the time-interpolator-fix_A0 patch). [PATCH] 2.6.3 pcnet32.c bus master arbitration failure fix Here is the first of several individual patches to 2.6.3 for the pcnet32 driver. The driver did not properly serialize accesses to chip registers, resulting in reading/writing the wrong register. This patch eliminates this problem and gets rid of the cause of the symptom of 'bus master arbitration failure'. It was easier to use generic_mii_ioctl than modify the current pcnet32_ioctl routine with the necessary locks. This has been re-tested on an IA32 system. [PATCH] hp100 pci probe problem Jean discovered problem with my hp100 PCI changes. This should fix the problem... The multi-bus probe logic error handling was botched. He validated it; so please apply [PATCH] 2.6.3 pcnet32.c SLAB_DEBUG length error fix The pcnet32 driver uses the incorrect length (of zero) in pci_[un]map_single for receive buffers. This is seen with SLAB_DEBUG enabled. Tested in IA32 system. If this patch is not applied after my previous one hunks #1, #3, and #5 will have an offset of -2 lines. [PATCH] sk98lin: Added Support for Belkin adapter Patch 1/2 [SK98LIN]: Added Support for Belkin adapter [SK98LIN]: Don't handle Yukon2 cards at the moment [PATCH] [kernel 2.6] sk98lin: Insert revision version and date to uniquely identify the files, it's necessary to add the version of each file. Please, don't remove the revision infos. It's really important for us. Patch 2/2 [SK98LIN]: Insert revision version and date [back] into the files [PATCH] 6pack reinit bug This patch is the same as to mkiss a while ago, the current code triggers a bug when reattaching a network device. [PATCH] Add support for HW accel. slaves Now that David Miller accepted the first half of this set into 2.6, I'm resending the last half to you for inclusion in netdev-2.6. Tested against latest netdev-2.6. Summary: Change the bond interface to publish full VLAN hardware acceleration offloading capabilities, and add capability in all xmit functions to take special care for VLAN HW accel. tagged skb's that are going out through a slave that is not offloading capable. Add a mechanism to collect and save the VLAN Id's that have been added on top of a bond interface, and propagate the register/add/kill operations to the slaves. Add blocking mechanism to prevent adding VLAN interfaces on top of a bond that contains VLAN challenged slaves and to prevent adding VLAN challenged slaves to a bond that already has VLAN interfaces on top of it. Add a section about VLAN to Documentation/networking/bonding.txt and also correct some minor spelling/grammer errors. [PATCH] Add VLAN support in TLB mode Add capability to tag self generated learning packets that are required to speed up port selection in the switch after a fail over in bonding since some switches will only update their MAC tables from tagged packets when VLAN support is turned on. All VLAN Id's that have been configured on top of the bond interface will be used in cyclic order. [PATCH] Add VLAN support in ALB mode Add capability to tag self generated ARP packets that are required for receive load balancing in bonding. VLAN Id's are saved and used each time a new IP connection is established since 8021q currently supports IP binding. Update module version and comment blocks. [netdrvr sis900] fix multicast bug [SELINUX]: Event notifications via netlink. [SELINUX]: Forgot to add these in previous commit. [PATCH] depca: remove double semi-colon description: remove double semi-colon typo; [PATCH] 2.6.3 pcnet32.c transmit hang fix The transmit routine will stop interrupting and hang, causing the tx_timeout routine to attempt to restart the device when the 32-bit cur_tx counter wraps below dirty_tx. If the device had called netif_stop_queue it will never call netif_wake_queue in the interrupt routine (at least on an IA32 system) due to 32-bit wrap around arithmetic. On my IA32 system 'dirty_tx > lp->cur_tx - TX_RING_SIZE + 2' would always evaluate to false when dirty and cur_tx were less than 15, preventing netif_wake_queue to be called. By starting dirty_tx and cur_tx at 0xfffffff0 (to reduce test time) I found that once cur_tx wrapped to zero, that transmitted buffers would never be unmapped or freed because 'while (dirty_tx < lp->cur_tx) {' was not true. cur_tx would keep incrementing (in start_xmit) but dirty_tx would not (in pcnet32_interrupt), thus leaking skb's and pci map entries. On PPC machines, the system would quickly run out of pci maps. Fix tested on PPC and IA32. [PATCH] tr/3c359: handle kmalloc failures during init From: Pablo Menichini and maximilian attems while looking at kj mails from 200212 and 200301 this patch slept through originally from: Pablo Menichini rediffed and compile tested patch applies on plain 2.6.0 maximilian attems handle kmalloc failures during init diff -puN drivers/net/tokenring/3c359.c~tr3c_kmalloc drivers/net/tokenring/3c359.c linux-261-bk4-kj1-rddunlap/drivers/net/tokenring/3c359.c | 13 +++++++++++++ 1 files changed, 13 insertions(+) [PATCH] 2.6.3 - drivers/net/sis190.c - Tx desc overflow Tx descriptor overflow - take II. Assume tp->dirty_tx = NUM_TX_DESC/2, tp->cur_tx = NUM_TX_DESC - 1, watch "entry" go beyond NUM_TX_DESC. Actually this is where the same bug in r8169 driver comes from. IEEE1394(r1138): Cleanup nodemgr probe, and fix a bug with the driver update. [PATCH] tulip printk warning fix Don't assume the size of a dma_addr_t [PATCH] add card types to aacraid driver This patch adds support for new RAID cards. Also removes two cards from the list that were never products. Makefile | 2 aacraid.h | 21 +++ linit.c | 32 +++- rkt.c | 416 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rx.c | 10 - 5 files changed, 465 insertions(+), 16 deletions(-) [CPUFREQ] Add extra __init markers to longhaul driver. Caught by Randy Dunlap. longhaul_cpu_init only gets called during startup, and calls other __init routines. [CPUFREQ] Add extra __init markers to longrun driver. Caught by Randy Dunlap. longrun_cpu_init() only gets called during startup, and calls other __init routines. [PATCH] remove flush_cache_all() from qla1280 It's not needed with the new DMA API and isn't exported to modules on some architectures. (See davem's qla2xxx patch for reference) [PATCH] qla2xxx: remove flush_cache_all [PATCH] ISDN udpate From: Karsten Keil - new port of 2.4 I4L core to 2.6 - new port of 2.4 I4L HiSax to 2.6 - fixes for I4L CAPI subsystem to make it stable in 2.6 - fix parameter handling of AVM ISA cards (calle) - cleanup ISDN config variables - SMP in act2000 and pcbit driver - remove check_region in act2000 - mark hysdn, isdnloop and divert as BROKEN_ON_SMP [PATCH] i4l: hisax deadlock fix From: Karsten Keil This patch fix a deadlock in HiSax (reported from David Woodhouse ). upper layer was called back while holding the card lock fix is to move the wakeup call into BH handler to avoid direct callbacks. [PATCH] Fix for PPP activ/passiv filter From: Karsten Keil I found a bug in the PPPIOCSPASS PPPIOCSACTIVE IOCTL implementation in kernel 2.5/2.6. The current pppd code use a empty filter (uprog.len=0) to detach the filter in the kernel, but this code was removed in 2.5.71 while fixing a compiler warning. Here the new patch, also with better limit checking. The second patch check for flen == 0 in the filter check too, since later in this code a filter[flen - 1] access is done, which is not so funny with flen 0. Maybe it's not really needed anymore, since with the first patch it would not longer called with flen=0. paulus says: It looks correct. Previously we had (and in 2.4 we still have) if (uprog.len > 0 && uprog.len < 65536) { ... which gave warnings since uprog.len is unsigned short. So someone decided that both parts of the condition were redundant. [PATCH] ia32 early printk From: Andi Kleen Implement VGA and serial early printk on x86. We just include the x86_64 version. [PATCH] early printk tweaks - Use __pa() around the VGA base address: more friendly for the 4g/4g split. - Use cpu_relax() rather than open-coding rep_nop(). - Default to 9600 baud - Move documentation to Documentation/kernel-parameters.txt - Make CONFIG_EARLY_PRINTK disableable if CONFIG_EMBEDDED [PATCH] Remove BDEV_RAW and friends These no longer do anything. This patch changes modules API. It was acked by Arjan@RH and Hubert@Suse. [PATCH] msg.h needs list.h msg.h uses list_head. (I'm not sure what config actually required this, but it is legit). [PATCH] ppc64: Fix prom.c warnings arch/ppc64/kernel/prom.c:200: warning: missing braces around initializer arch/ppc64/kernel/prom.c:200: warning: (near initialization for `hmt_thread_data[0]') arch/ppc64/kernel/prom.c: In function `prom_hold_cpus': arch/ppc64/kernel/prom.c:1090: warning: implicit declaration of function `_get_PIR' [PATCH] ppc64: fix saved_command_line/cmd_line lengths From: Anton Blanchard cmd_line was twice the size of saved_command_line but we did a strcpy from the larger into the smaller. Create COMMAND_LINE_SIZE and use it. [PATCH] ppc64: fix debugger() warnings From: Anton Blanchard Fix compile warnings and add some type safety to debugger macros. [PATCH] ppc64: iseries IRQ fix From: Stephen Rothwell This patch lets 2.6.3-rc4 build and boot on an PPC64 iSeries box (at least for my configuration). The veth.o bit in the networking Makefile got there by accident and should be removed anyway ... There is more to make it work properly (note the "Temporary hack"), but this gets us closer. [PATCH] loop: remove the bio remapping capability This patch removes the loop feature wherein we remap BIOs for block-backed loop. So file-backed and block-backed loop are handled identically. It cleans up the code a lot and fixes the low-on-memory lockups which block-backed loop currently suffers. What we lose is the journalling ordering guarantees which exts-on-loop-on-blockdev had. But dm-crypt provides that. [PATCH] remove useless highmem bounce from loop/cryptoloop From: Ben Slusky The attached patch changes the loop device transfer functions (including cryptoloop transfers) to accept page/offset pairs instead of virtual addresses, and removes the redundant kmaps in do_lo_send, do_lo_receive, and loop_transfer_bio. Per Andrew Morton's request a while back. [PATCH] loop: BIO handling fix From: Ben Slusky One more patch --- this fixes a minor bio handling bug in the filebacked code path. I'd fixed it incidentally in the loop-recycle patch. I don't think you could actually see damage from this bug unless you run device mapper on top of loop devices, but still this is the correct behavior. [PATCH] loop.c doesn't fail init gracefully From: BlaisorBlade loop_init doesn't fail gracefully for two reasons: 1) If initialization of loop driver fails, we have an call to devfs_add("loop") without any devfs_remove; I add that. 2) On lwn.net 2.6 kernel docs, Jonathan Corbet says: "If you are calling add_disk() in your driver initialization routine, you should not fail the initialization process after the first call." So I make loop.c conform to this request by moving add_disk after all memory allocations. [PATCH] loop: remove redundant initialisation From: "Yury V. Umanets" This removes a redundant assignment in loop. [PATCH] ACPI PM timer From: Dominik Brodowski , John Stultz , Dmitry Torokhov Add the ACPI Powermanagement Timer as x86 kernel timing source. Unlike the Time Stamp Counter, it is a reliable timing source which does not get affected by aggressive powermanagement features like CPU frequency scaling. Some ideas and some code are based on Arjan van de Ven's implementation for 2.4, and on R. Byron Moore's drivers/acpi/hardware/hwtimer.c. We also replace the loop based delay_pmtmr with a TSC based delay_pmtmr, which resolves a number of issues caused by the loop based delay. Unsynced TSCs as well frequency changing TSCs will effect the length of __delay(), but it seems this method works best. [PATCH] kthread primitive From: Rusty Russell These two patches provide the framework for stopping kernel threads to allow hotplug CPU. This one just adds kthread.c and kthread.h, next one uses it. Most importantly, adds a Monty Python quote to the kernel. Details: The hotplug CPU code introduces two major problems: 1) Threads which previously never stopped (migration thread, ksoftirqd, keventd) have to be stopped cleanly as CPUs go offline. 2) Threads which previously never had to be created now have to be created when a CPU goes online. Unfortunately, stopping a thread is fairly baroque, involving memory barriers, a completion and spinning until the task is actually dead (for example, complete_and_exit() must be used if inside a module). There are also three problems in starting a thread: 1) Doing it from a random process context risks environment contamination: better to do it from keventd to guarantee a clean environment, a-la call_usermodehelper. 2) Getting the task struct without races is a hard: see kernel/sched.c migration_call(), kernel/workqueue.c create_workqueue_thread(). 3) There are races in starting a thread for a CPU which is not yet online: migration thread does a complex dance at the moment for a similar reason (there may be no migration thread to migrate us). Place all this logic in some primitives to make life easier: kthread_create() and kthread_stop(). These primitives require no extra data-structures in the caller: they operate on normal "struct task_struct"s. Other changes: - Expose keventd_up(), as keventd and migration threads will use kthread to launch, and kthread normally uses workqueues and must recognize this case. - Kthreads created at boot before "keventd" are spawned directly. However, this means that they don't have all signals blocked, and hence can be killed. The simplest solution is to always explicitly block all signals in the kthread. - Change over the migration threads, the workqueue threads and the ksoftirqd threads to use kthread. - module.c currently spawns threads directly to stop the machine, so a module can be atomically tested for removal. - Unfortunately, this means that the current task is manipulated (which races with set_cpus_allowed, for example), and it can't set its priority artificially high. Using a kernel thread can solve this cleanly, and with kthread_run, it's simple. - kthreads use keventd, so they inherit its cpus_allowed mask. Unset it. All current users set it explicity anyway, but it's nice to fix. - call_usermode_helper uses keventd, so the process created inherits its cpus_allowed mask. Unset it. - Prevent errors in boot when cpus_possible() contains a cpu which is not online (ie. a cpu didn't come up). This doesn't happen on x86, since a boot failure makes that CPU no longer possible (hacky, but it works). - When the cpu fails to come up, some callbacks do kthread_stop(), which doesn't work without keventd (which hasn't started yet). Call it directly, and take care that it restores signal state (note: do_sigaction does a flush on blocked signals, so we don't need to repeat it). [PATCH] Remove kstat cpu notifiers From: Rusty Russell Some well-meaning person put a notifier in for CPUs to update the kstat structures in sched.c. However, it does nothing, and even with the full hotplug CPU patch, it still does nothing. Simple counters very rarely need anything done when CPUs come up or go down. If you have per-cpu caches, or per-cpu threads, you need to do something. But very rarely for stats. [PATCH] Minor workqueue.c cleanup From: Rusty Russell Move duplicated code to __queue_work(), and don't set the CPU for queue_delayed_work() until the timer goes off. The second one only has an effect on CONFIG_HOTPLUG_CPU where the CPU goes down and the timer goes off on a different CPU than it was scheduled on. [PATCH] Remove More Unneccessary CPU Notifiers From: Rusty Russell Three more removed CPU notifiers extracted from the hotplug CPU patch. kernel/softirq.c: the tasklet cpu prepration callback is useless: the vectors are already initialized to NULL. Even with the hotplug CPU patches, they're of little or no use. fs/buffer.c: once again, they are already initialized to zero. mm/page_alloc.c: once again, already initialized to zero. [PATCH] Use CPU_UP_PREPARE properly From: Rusty Russell The cpu hotplug code actually provides two notifiers: CPU_UP_PREPARE which preceeds the online and can fail, and CPU_ONLINE which can't. Current usage is only done at boot, so this distinction doesn't matter, but it's a bad example to set. This also means that the migration threads do not have to be higher priority than the others, since they are ready to go before any CPU_ONLINE callbacks are done. This patch is experimental but fairly straight foward: I haven't been able to test it since extracting it from the hotplug cpu code, so it's possible I screwed something up. [PATCH] Limit hashtable sizes From: "Chen, Kenneth W" The issue of exceedingly large hash tables has been discussed on the mailing list a while back, but seems to slip through the cracks. What we found is it's not a problem for x86 (and most other architectures) because __get_free_pages won't be able to get anything beyond order MAX_ORDER-1 (10) which means at most those hash tables are 4MB each (assume 4K page size). However, on ia64, in order to support larger hugeTLB page size, the MAX_ORDER is bumped up to 18, which now means a 2GB upper limits enforced by the page allocator (assume 16K page size). PPC64 is another example that bumps up MAX_ORDER. Last time I checked, the tcp ehash table is taking a whooping (insane!) 2GB on one of our large machine. dentry and inode hash tables also take considerable amount of memory. Setting the size of these tables is difficult: they need to be constrained on many-zone ia64 machines, but this could cause significant performance problems when there are (for example) 100 million dentries in cache. Large-memory machines which do not slice that memory up into huge numbers of zones do not need to run the risk of this slowdown. So the sizing algorithms remain essentially unchanged, and boot-time options are provided which permit the tables to be scaled down. [PATCH] add Pentium M and Pentium-4 M options From: Adrian Bunk add Pentium M and Pentium-4 M options: - add MPENTIUMM (equivalent to PENTIUMIII except for a bigger X86_L1_CACHE_SHIFT) - document that MPENTIUM4 is the right choice for a Pentium-4 M [PATCH] gcc 2.95 supports -march=k6 (no need for check_gcc) From: Adrian Bunk gcc 2.95 supports -march=k6 (no need for check_gcc) [PATCH] AMD Elan is a different subarch From: Adrian Bunk - AMD Elan is a different subarch, you can't configure a kernel that runs on both the AMD Elan and other i386 CPUs - added optimizing CFLAGS for the AMD Elan [PATCH] Documentation: remove /etc/modules.conf refs From: Rusty Russell Someone complained about the number of references to /etc/modules.conf in the documentation. While fixing them up (and examples where changed), removed those which are redundant due to MODULE_ALIAS. [PATCH] add some more MODULE_ALIASes From: Rusty Russell New MODULE_ALIASes in: 1) arch/i386/kernel/microcode.c 2) drivers/char/genrtc.c 3) drivers/ide/ide-tape.c 4) drivers/net/bonding/bond_main.c 5) drivers/net/bsd_comp.c 6) drivers/net/ppp_deflate.c 7) drivers/net/ppp_generic.c [PATCH] bonding alias revert and documentation fix From: Rusty Russell Jeff Garzik disliked the bonding driver knowing it was called "bond0". Remove that alias, and revert documentation. [PATCH] NGROUPS 2.6.2rc2 + fixups From: Tim Hockin , Neil Brown , me New groups infrastructure. task->groups and task->ngroups are replaced by task->group_info. Group)info is a refcounted, dynamic struct with an array of pages. This allows for large numbers of groups. The current limit of 32 groups has been raised to 64k groups. It can be raised more by changing the NGROUPS_MAX constant in limits.h [PATCH] Mark intermezzo as broken The NGROUPS changes broke it, and we're not sure how to fixit, and nobody appears to be working on or testing intermezzo. [PATCH] bd_set_size i_size handling We need to hold i_sem while running i_size_write(). But that seems like a lot of fuss and deadlock potential. So just write the dang thing. [PATCH] snprintf fixes From: Juergen Quade Lots of places in the kernel are using [v]snprintf wrongly: they assume it returns the number of characters copied. It doesn't. It returns the number of characters which _would_ have been copied had the buffer not been filled up. So create new functions vscnprintf() and scnprintf() which have the expected (sane) semaptics, and migrate callers over to using them. [PATCH] devfs: race fixes and cleanup From: Andrey Borzenkov - use struct nameidata in devfs_d_revalidate_wait to detect when it is called without i_sem hold; take i_sem on parent in this case. This prevents both deadlock with devfs_lookup by allowing it to drop i_sem consistently and oops in d_instantiate by ensuring that it always runs protected - remove dead code that deals with major number allocation. The only remaining user was devfs itself and patch changes it to - use register_chardev to get device number for internal /dev/.devfsd and /dev/.statd. - remove dead auto allocation flag as well - remove code that does module get on dev open - it is handled by fops_get. Use init_special_inode consistently - get rid of struct cdev_type and bdev_type - both have just single dev_t now [PATCH] Enable coredumps > 2GB From: Andi Kleen Some x86-64 users were complaining that coredumps >2GB don't work. This will enable large coredump for everybody. Apparently the 32bit gdb/binutils cannot handle them, but I hear the binutils people are working on fixing that. I doubt it will harm people - unreadable coredumps are not worse than no coredump and it won't make any difference in space usage if you get a 1.99GB or a 2.5GB coredump. So just enable it unconditionally. If it should be really a problem for 32bit the rlimit defaults in resource.h could be changed. For file systems that don't support O_LARGEFILE you should just get an truncated coredumps for big address spaces. [PATCH] MIPS: New 2.6 serial drivers From: Ralf Baechle Three new MIPS-specific serial drivers. ip22.c is derived from the sparc zilog driver; guess we should write a generic Zilog driver somewhen ... [PATCH] #if versus #ifdef cleanup From: Valdis.Kletnieks@vt.edu 15 changes of #if to #ifdef and 2 places CONFIG_FOO should be defined(CONFIG_FOO). This gets rid of spurious warnings if you build with "-Wundef" so you get a warning if you have a preprocessor command like: #if CONFIG_ETRAX_DS1302_RSTBIT == 27 and you'll be told if it's substituting a zero rather than silent weirdness and unexpected code generation. [PATCH] kNFSd: Fix possible scheduling_while_atomic in cache.c From: NeilBrown We currently call cache_put, which can schedule(), under a spin_lock. This patch moves that call outside the spinlock. [PATCH] kNFSd: Allow sunrpc/svc cache init function to modify the "key" From: NeilBrown When adding a item to a sunrpc/svc cache that contains kmalloced data it is usefully to move the malloced data out of the key object into the new cache object rather than copying (as then we would need to cope with kmalloc failure and such). This means modifying the original. If the kmalloced data forms part of the key, then we must not move the data out until after the key isn't needed any more. So this patch moves the call to "INIT" on a new item (which fills in the key) to *after* the item has been found (or not), and also makes sure we only call the HASH function once. Thanks to "J. Bruce Fields" also 1/ remove unnecessary assignment 2/ fix comments that lag behind implementation. [PATCH] kNFSd: ip_map_init does a kmalloc which isn't checked... From: NeilBrown There is no way to return an error from a cache init routine, so instead we make sure to pre-allocate the memory needed, and free it after the lookup if the lookup failed. [PATCH] kNFSd: convert NFS /proc interfaces to seq_file From: NeilBrown From: shemminger@osdl.org Sat Sep 6 09:19:50 2003 Date: Fri, 5 Sep 2003 16:19:30 -0700 Converts /proc/net/rpc/nfs and /proc/net/rpc/nfsd to use the simpler seq_file interface. [PATCH] kNFSd:fix build problems in nfs w/o proc_fs on 2.6.0-test5 From: NeilBrown From: Stephen Hemminger Date: Fri, 12 Sep 2003 11:31:06 -0700 NFS won't build w/o CONFIG_PROC_FS. Looks like typo's (or a C++ programmer) in stats.h [PATCH] md: Print "deprecated" warning when START_ARRAY is used. From: NeilBrown The "START_ARRAY" ioctl depends on major/minor numbers (as stored in the raid superblock) are stable over reboots, which is increasingly untrue. There are better ways to start an array (e.g. with mdadm) so we mark the ioctl as deprecated for 2.6, and will remove it in 2.7. [PATCH] md: Split read and write end_request handlers From: NeilBrown Instead of having a single end_request handler that must determine whether it was a read or a write request, we have two separate handlers, which makes each of them easier to follow. [PATCH] md: Discard the cmd field from r1_bio structure From: NeilBrown The only time it is really needed is to differentiate a retry-on-fail from a write-after-read-for-resync request to raid1d. So we use a bit in 'state' for that. [PATCH] md: Remove some un-needed fields from r1bio_s From: NeilBrown next_r1 is never used, so it can just go. read_bio isn't needed as we can easily use one of the pointers in the write_bios array - write_bios[->read_disk]. So rename "write_bios" to "bios" and store the pointer to the read bio in there. [PATCH] md: Avoid unnecessary bio allocation during raid1 resync From: NeilBrown For each resync request, we allocate a "r1_bio" which has a bio "master_bio" attached that goes largely unused. We also allocate a read_bio which is used. This patch removes the read_bio and just uses the master_bio instead. This fixes a bug wherein bi_bdev of the master_bio wasn't being set, but was being used. We also introduce a new "sectors" field into the r1_bio as we can no-longer rely in master_bio->bi_sectors. [PATCH] md: Dynamically limit size of bio requests used for raid1 resync From: NeilBrown Currently raid1 uses PAGE_SIZE read/write requests for resync, as it doesn't know how to honour per-device restrictions. This patch uses to bio_add_page to honour those restrictions and ups the limit on request size to 64K. This has a measurable impact on rebuild speed (25M/s -> 60M/s) [PATCH] md: Allow partitioning of MD devices. From: NeilBrown With this patch, md used two major numbers for arrays. One Major is number 9 with name 'md' have unpartitioned md arrays, one per minor number. The other Major is allocated dynamically with name 'mdp' and had on array for every 64 minors, allowing for upto 63 partitions. The arrays under one major are completely separate from the arrays under the other. The preferred name for devices with the new major are of the form: /dev/md/d1p3 # partion 3 of device 1 - minor 67 When a paritioned md device is assembled, the partitions are not recognised until after the whole-array device is opened again. A future version of mdadm will perform this open so that the need will be transparent. [PATCH] dm: Export dm_vcalloc() From: Joe Thornber Export dm_vcalloc() [PATCH] dm: Move to_bytes() and to_sectors() into dm.h From: Joe Thornber Move to_bytes() and to_sectors() into dm.h [PATCH] dm: Get rid of struct dm_deferred_io in dm.c From: Joe Thornber Remove struct dm_deferred_io from dm.c. [Christophe Saout] [PATCH] dm: Maintain ordering when deferring bios From: Joe Thornber Make sure that we maintain ordering when deferring bios. [PATCH] dm: Tidy up the error path for alloc_dev() From: Joe Thornber Tidy up the error path for alloc_dev() [PATCH] dm: Correct GFP flag in dm_table_create() From: Joe Thornber For some reason dm_table_create() was allocating GFP_NOIO rather than GFP_KERNEL. [PATCH] dm: Zero size target sanity check From: Joe Thornber Add sanity check to dm_table_add_target() against zero length targets. [Christophe Saout] [PATCH] dm: Remove redundant spin lock in dec_pending() From: Joe Thornber Remove redundant spin lock in dec_pending() [PATCH] dm: drop BIO_SEG_VALID bit From: Joe Thornber I just noticed that bio_clone copies the BIO_SEG_VALID bit from the original bio when it was set. When we modify bi_idx or bi_vcnt afterwards the segment counts are invalid and the bit must be dropped (though it is fairly unlikely that it has already been set). [Christophe Saout] [PATCH] Fix printk level on non fatal MCEs From: Andi Kleen For various reasons non fatal Machine Checks can happen on Athlons (e.g. we have reports that laptops like to trigger them on suspend/resume) They are not necessarily fatal and often only minor hardware glitches. But what's annoying is that they're KERN_EMERG and pollute your console and scare the user into writing confused kernel bug reports. This patch just replaces the KERN_EMERGs with KERN_INFO for now. Longer term I think it would be better to log this stuff into a separate log. [PATCH] MCE fixes and cleanups Andi notes that the smp_call_function(foo); foo(); in there is incorrect on preemptible kernels. Fix that by using on_each_cpu(), which takes care of such things. Also, remove the open-coded timer from here. We have schedule_delayed_work(). And remove the `timerset' variable, which doesn't do anything. [PATCH] Rename bitmap_snprintf() and cpumask_snprintf() to *_scnprintf() From: Joe Korty Rename bitmap_snprintf() to bitmap_scnprintf() and cpumask_snprintf() to cpumask_scnprintf(), as these functions now belong to the scnprintf family of functions. [PATCH] OSS: remove #ifdef's for kernel 2.0 From: Adrian Bunk The patch below removes two #ifdef's for kernel 2.0 from OSS. [PATCH] remove kernel 2.2 #ifdef's from {i,}stallion.h From: Adrian Bunk The patch below removeskernel 2.2 #ifdef's from {i,}stallion.h . [PATCH] kbuild documentation fix From: Ryan Boder Explains how to compile external modules in Documentation/kbuild/modules.txt. [PATCH] adfs: remove a kernel 2.2 #ifdef From: Adrian Bunk The patch below removes a kernel 2.2 #ifdef from fs/adfs/adfs.h . Note that this #ifdef was only present in the header, the implementation of adfs_bmap was already removed. [PATCH] defer panic for too many items in boot parameter line From: Werner Almesberger When passing too many unrecognized boot command line options (which become arguments or environment variables), the 2.6 kernel panics (unlike 2.4, which just ignores the extra items). Unfortunately, this happens before the console is initialized, so all you get is a kernel that dies quickly, for no apparent reason. This is particularly irritating if using UML with init=something wi th a lot of ar gu men t s The patch below delays the panic until after console_init. (akpm: I mainly added this in because we have other places where the panic-later-on machinery is needed). [PATCH] cpufreq_scale() fixes From: Dominik Brodowski Use do_div on 32-bit archs in cpufreq_scale, and native "/" on 64-bit archs. [PATCH] Minor cross-compile issues From: Pratik Solanki - Fix include path for build.c so that it finds asm/boot.h. /usr/include/asm/boot.h may not be present when cross-compiling on a non-Linux machine. - $(CONFIG_SHELL) instead of sh. [PATCH] /proc thread visibility fixes From: Kingsley Cheung Is is possible to examine the data of tasks currently existing in the system which are not threads of the same thread group. For example, the only task in the group where init is group leader is itself: gen2 02:50:44 ~: ls /proc/1/task 1 However, I can then read the contents of 'stat' for any other task in the system: gen2 02:49:45 ~: cat /proc/1/task/$$/stat 1669 (bash) S 1668 1669 1669 34816 1730 256 1480 6479 12 4 8 5 5 17 15 0 1 0 +8065 3252224 451 4294967295 134512640 134955932 3221225104 3221222840 +4294960144 0 65536 3686404 1266761467 3222442959 0 0 17 0 0 0 I had a look at fs/proc/base.c and found that the 'lookup' functions for these directories were checking that the task in question existed, but overlooked the following: 1. In the function proc_pid_lookup, a check is required to ensure that the task in question is a thread group leader. Without the check, any task can have its data retrieved accordingly. Consider the following. There is a multithreaded process 1777. gen2 23:22:47 /proc/1777: ls task 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 However, I can read the stat file for its thread 1778 as follows: gen2 23:22:50 /proc/1777: cat /proc/1778/stat 1778 (multithreadtest) T 1777 1777 1672 34816 1672 64 0 0 0 0 14 17 0 0 15 0 12 0 8871 24727552 104 4294967295 134512640 134515104 3221222496 1077365276 4294960144 0 0 0 0 3222479248 0 0 -1 1 0 0 But 1778 is not meant to show up in /proc/, as intended right?: gen2 23:22:56 /proc/1777: ls /proc/ 1 1365 1661 1793 881 dma kcore scsi 10 1371 1662 18 9 driver kmsg self 1014 1372 1663 2 909 execdomains loadavg slabinfo 1032 14 1664 3 963 fb locks stat 1062 15 1665 4 966 filesystems mdstat swaps 1066 16 1666 5 buddyinfo fs meminfo sys 1067 1605 1669 6 bus ide misc sysrq-trigger 1087 1610 1670 7 cmdline interrupts modules sysvipc 1095 1611 1671 736 cpuinfo iomem mounts tty 11 1641 1672 8 crypto ioports mtrr uptime 12 1658 17 807 devices irq net version 13 1660 1777 810 diskstats kallsyms partitions vmstat 2. The other part of the bug is in the function proc_task_lookup. Here there needs to be a check that the task X is indeed a thread of the thread group Y when we read /proc//task/. Right now, this check does not exist, which allows for any existing task to have its data read from another thread group directory. The following reads the stat directory of my bash shell from the thread group 1. gen2 23:28:07 ~: cd /proc/1 gen2 23:28:10 /proc/1: ls auxv cwd exe maps mounts stat status wchan cmdline environ fd mem root statm task gen2 23:28:11 /proc/1: ls task 1 gen2 23:28:27 /proc/1: cat task/$$/stat 1671 (bash) S 1670 1671 1671 34817 1802 256 1953 8101 12 4 10 6 9 26 15 0 1 0 5789 3252224 454 4294967295 134512640 134955932 3221225104 3221222840 4294960144 0 65536 3686404 1266761467 3222442959 0 0 17 0 0 0 [PATCH] drivers/char/vt possible race From: Benjamin Herrenschmidt I falled again on the crash in con_do_write() with driver->data beeing NULL. It happens during boot, when userland is playing open/close games with tty's, I was intentionally typing keys like mad during boot trying to trigger another problem when this one poped up. Looking at the code, I'm not sure how protected we are by the above (tty) layer, paulus told me to not rely on anything like locking coming from there, so I decided to extend the scope of the console semaphore one more bit to cover races between calls to con_open, con_close and con_write. Note that in con_do_write, I intentionally drop the semaphore to avoid keeping it held when waiting on the local buffer, and I added some sanity checks on tty->driver_data with some printk's in case we still have an open race by the tty layer. At least, now, the couple vc_allocated & tty->driver_data should be protected though. [PATCH] off_t in nfsd_commit needs to be loff_t From: Neil Brown , From: Miquel van Smoorenburg While I was stress-testing NFS/XFS on 2.6.1/2.6.2-rc, I found that sometimes my "dd" would exit with: # dd if=/dev/zero bs=4096 > /mnt/file dd: writing `standard output': Invalid argument 1100753+0 records in 1100752+0 records out After adding some debug printk's to the server and client code and some tcpdump-ing, I found that the NFSERR_INVAL was returned by nfsd_commit on the server. Turns out that the "offset" argument is off_t instead of loff_t. It isn't used at all (unfortunately), but it _is_ checked for sanity, so that's where the error came from. [PATCH] skip offline CPUs in show_free_areas From: Christoph Hellwig Don't try to display the per-cpu information for CPUs which aren't there. [PATCH] fix display of NBD in /proc/partitions The recent change to /proc/partitions which prevents it from displaying removeable media accidentally caused 128 NBD and 16 ramdisk partitions to appear in /proc/partitions instead. So add a specific gendisk flag which says "don't show me in /proc/partitions" and use that. [PATCH] cleanup patch that prepares for 4Kb stacks From: Arjan van de Ven I have 4Kb stacks + IRQ stacks working in my tree. The biggest part of the 4K-stacks work is changing hardcoded 8Kb assumptions to the proper, pre-existing define for this. That part of the patch is appropriate in general, even when 4Kb stacks might not be. [PATCH] 3c59x: bring back the `enable_wol' option Some machines appear to have BIOS problems which are causing 3c59x adapters to come up in a powered-off state when WOL and PM are enabled. So bring back the 2.4 `enable_wol' module option which disables wake-on-lan unless the user specifically asked for it. [PATCH] Oprofile: fix nmi_timer_int detection From: Philippe Elie From: Zwane Mwaikambo The nmi_timer_int oprofile driver was enabling itself unconditionally if an SMP kernel was being used on a UP system without an IOAPIC. Tested on a P5 using NMI timer int driver and UP system using timer int driver both running an SMP kernel. 2004-02-11 Zwane Mwaikambo * arch/i386/kernel/nmi.c: export nmi_active * arch/i386/oprofile/nmi_timer_int.c: use it to check if owe can use an nmi interrupt [PATCH] oprofile: ARM infrastructure From: Philippe Elie From: Zwane Mwaikambo This patch adds infrastructure code and enables ARM to utilise the timer int oprofile driver. There is PMU code under development for the XScale but that is still forthcoming. In the meantime you can use the timer int driver with an updated Oprofile-CVS userspace (SF is a bit slow, please allow 24hrs). [PATCH] oprofile: add Pentium Mobile support From: Philippe Elie From: Will Cohen Add oprofile support for Pentium Mobile (P6 core). Pentium Mobile needs to unmask LVPTC vector, since it doesn't hurt other P6 core based cpus we do it unconditionally for all these. This patch require userspace tools >= 0.8 (only in sourceforge cvs currently) [PATCH] remove max_anon limit From: Tim Hockin Remove the max_anon via dynamically allocation. We also change the idr_pre_get() interface to take a gfp mask, which should have always been there. [PATCH] Fix __release_region() race From: MAEDA Naoaki I am testing PCI hot-plug in 2.6.2 kernel, but sometimes a struct resource tree in kernel/resource.c was broken if multiple hot-plug requests are issued at the same time. The reason is lots of drivers call release_region() on hot removal, and __release_region(), which is invoked by release_region() macro, changes the tree without holding a writer lock for resource_lock. I think __release_region() must hold a writer lock as well as __request_region() does. A following patch fixes the issue in my environment. [PATCH] Documentation on how to debug modules From: Alex Goddard How to debug module loading problems. The wording is a slightly changed version of what Rusty said. [PATCH] Module headers cleanup From: Brian Gerst Cleans up some leftovers from the old module loader: - Remove unused defines from modules.h - Remove unused file modsetver.h [PATCH] add clock_was_set() to all architectures From: Anton Blanchard Add clock_was_set to all architectures. I'm disappointed this wasnt done by whoever wrote the code. (It is a callback which the arch-specific RTC-updating code must make when someone sets the time). [PATCH] Fix race in epoll_ctl(EPOLL_CTL_MOD) From: Davide Libenzi A potential race can happen in epoll_ctl(EPOLL_CTL_MOD) where an event can happen in between f_op->poll() and the lock on ep->lock (we cannot call f_op->poll() inside a lock, and the f_op->poll() callback does not carry any info at the current time - missing wake_up_info() already ;). In that case the event would be removed. We can easily leave the event inside the ready list and have the ep_send_events() logic do the job for us at later time. (Thanks to david.lee@teracruz.com for reporting the thing, since it shouldn't have been a nice one ;) [PATCH] slab: remove extraneous printk From: "David S. Miller" From: YOSHIFUJI Hideaki If I create some kmem cache on 64-bit with like 3 u32's in it, it should silently just work and not warn. [PATCH] do_swap_page() return value fix From: BlaisorBlade An exhausted do_swap_page() should return VM_FAULT_OOM rather than -ENOMEM. [PATCH] ide-tape: remove obsolete onstream support From: Willem Riede The onstream drives, be they scsi, atapi, ieee1394 or usb, are supported by the osst driver. When the drives were new, code was introduced in ide-tape independently, but never really maintained since. There are issues with the drives I found and dealt with in osst, that ide-tape doesn't address. So this code in ide-tape is both redundant and imperfect. I assumed from http://marc.theaimsgroup.com/?l=linux-kernel&m=107550547613846&w=2 that there was buy in for removing it. When this patch is applied, ide-tape will refuse to attach to an onstream DI drive, and will write to syslog to use ide-scsi + osst instead. [PATCH] Disable bootmem warning From: Andi Kleen Make the "hm, page reserved twice" message dependent on CONFIG_DEBUG_BOOTMEM. [PATCH] dm-crypt From: Christophe Saout Adds a crypto module for device-mapper. The intent here is to remove cryptoloop ASAP, to pull the remapping gunk out of the loops driver and to migrate people onto dm-crypt. It is on-disk compatible with existing cryptolop installations. See http://www.saout.de/misc/dm-crypt/ for usage details. [PATCH] Fix make rpm when using RH9 or Fedora.. From: Thomas Davis Doing a 'make rpm' will fail with the current RH9/Fedora RPM macros. The failure message is this: Processing files: kernel-debuginfo-2.6.3rc1mm1-12 error: Could not open %files file /usr/src/redhat/BUILD/kernel-2.6.3rc1mm1/debugfiles.list: No such file or directory The fix is this patch: [PATCH] menuconfig: fix the check for ncurses-devel From: Sam Ravnborg Corrected check for missing ncurses-devel when executing "make menuconfig". Now tell user to install 'ncurses-devel' if check fails. [PATCH] Inefficient TLB flush fix From: Martin Hicks This is a patch based on one that Jack Steiner sent to the ia64 list in November. The original thread can be found at: http://marc.theaimsgroup.com/?l=linux-ia64&m=106869606922555&w=2 I created the little wrapper function that was requested. I think the only other arch, other than ia64, that doesn't at least include asm-generic/tlb.h is arm. Something appears broken in TLB flushing on IA64 (& possibly other architectures). Functionally, it works but performance is bad on systems with large cpu counts. The result is that TLB flushing in exit_mmap() is frequently being done via IPIs to all cpus rather than with a "ptc" instruction or with a new context.. [PATCH] sf16fmr2 radio card driver From: "ZIGLIO, Frediano, VF-IT" Add a new driver for the SF16FMR2 Radio card. [PATCH] Remove overenthusiastic BUG in smp_boot_cpus From: "Martin J. Bligh" There's no real need to BUG and stop the system from booting if the BIOS spec'ed apicid for the boot CPU isn't correct - we can continue perfectly well with the real one. [PATCH] Codingstyle update From: Michael Frank [PATCH] smbfs: support the loop driver From: Urban Widmark Add the necessary bits for loop-over-smbfs. [PATCH] Fix sprintf modifiers in usr/gen_init_cpio.c for cygwin From: Pragnesh Sampat The file initramfs_data.cpio is slightly different when generated on cygwin, compared to linux, which causes the kernel to panic with the message "no cpio magic" (See Documentation/early-userspace/README). The problem in cpio generation is due to the difference in sprintf modifiers on cygwin. The code uses "%08ZX" for strlen of a device node. printf man pages discourages "Z" and has 'z' instead. Both of these are not available on cygwin sprintf (at least some versions of cygwin). The net result of all of this is that the generated file literally contains "ZX" and then the strlen after that and messes up that 110 offset etc. The file is 516 bytes long on the system that I tested and on linux it is 512 bytes. The fix below just uses "%08X" for that field. [PATCH] wireless/Kconfig enable/select complete replacement From: mcgrof@studorgs.rutgers.edu (Luis R. Rodriguez) Complete the migration from Kconfig's undocumented "enable" to "select". [PATCH] tuner driver fixes From: Gerd Knorr "options tuner type=2" is just there for historical reasons and should only be used/needed if the main driver doesn't allow to configure the tuner type. I'm not sure whenever I can remove that altogether without breaking anything. There are several users of the tuner module, some outside the standard kernel tree ... > > if (type < TUNERS) { > > + t->type = type; > > printk("tuner: type forced to %d (%s) [insmod]\n", > > t->type,tuners[t->type].name); > > set_type(client,type); That is wrong, it will break in other corner cases, it may cause the set_type() function not doing the initializations. The prink can also be dropped because set_type does that too. The patch below removes that. It also makes the kernel messages a bit more verbose and adds support for two new tuners. [PATCH] crc32.c copyright fix From: Matt Domsch Patch below applies to both 2.4.25 and 2.6.3, and replaces the public domain statement and non-warranty with the GPL, as is permitted by the code being in the public domain, and is done with legal advice. [PATCH] Add C99 initializers to arch/i386/pci/fixup.c From: "Art Haas" Here's a small patch that adds C99 initializers to the file. [PATCH] mark ftape un-removable From: Christoph Hellwig I've just grepped over the tree for reamining MOD_INC_USE_COUNT users, and ftape is a really horrible one, it relies on MOD_{INC,DEV}_USE_COUNT in the most horrible places + it's own bookkepping and the <= 2.4 may unload hooks. And although I don't have the hardware I can guarantee it doesn't work as expected. So let's just remove the module_exit handler and mark it unremovable, if someone wants to fix up ftape later it's fine with me, but it's a really scary driver.. [PATCH] aio sysctl parms From: Janet Morgan It looks like aio_nr and aio_max_nr were intended to be sysctl parameters. [PATCH] SCSI: Make retries obey host_self_blocked flag The following patch against 2.6.2 will prevent the midlayer from issuing retries if host_self_blocked is set. This was raised as an issue here: http://marc.theaimsgroup.com/?l=linux-scsi&m=107357742430401&w=2 [PATCH] Remove CONFIG_SCSI_DC390T_NOGENSUPP Now that the Am53C974 driver is gone it doesn't make sense to not support all Am53C974-based cards, and the amount of code under the ifdef is tiny anyways. [PATCH] fix up ini9100 interrupt handling Currently is has a different irq handler for every "supported" chip. Make use of the private data passed to request_irq instead. [PATCH] fix up NCR5380 private data Use the private data passed to request_irq instead of looping over all controllers. The patch was ACKed by Alan a while ago. Note that the patch only looks so huge because of the two leves of indentation removed by the tiny chage. [PATCH] qla2xxx -- Properly schedule mailbox command timeouts. For mailbox commands which the firmware internally times-out in 2 * R_A_TOV, the driver should timeout no sooner than 2.5 * R_A_TOV so we do not inappropriately schedule an ISP abort. [PATCH] qla2xxx -- FCP_RSP IU check during command completion. While processing command completions in qla2x00_status_entry() interrogate the FCP_RSP IU in case of any FCP protocol errors (FCP-3, 9.4.11) during command execution. If there were any failures, schedule a retry of the command via DID_BUS_BUSY. [Corrected patch attached. Thanks to RA for pointing this out.] [PATCH] move remaining definitions from drivers/scsi/scsi.h to include/scsi Simple move for a bunch of definitions so driver can finally stop doing the -Idriver/scsi mess. I'd like to get it out ASAP because the distros are going to branch their first 2.6 releases soon and the vendors will want to support those basically forever. [PATCH] have CONFIG_SCSI_PROC_FS depend on CONFIG_PROC_FS Patch against recent 2.6: have CONFIG_SCSI_PROC_FS depend on CONFIG_PROC_FS, as configuring CONFIG_SCSI_PROC_FS without CONFIG_PROC_FS prevents scsi core from initializing. [PATCH] fix memory leaks in binfmt_flat loader Fix a number of memory leaks in the uClinux binfmt_flat loader. All are related to not cleaning up properly on failure conditions. [PATCH] allow configuration for shared flat binary support This adds the configuration option to enable the uClinux shared flat binary support. The code support is already in the binfmt_load code, just the config option is missing. [PATCH] add m68k elf relocation types to elf.h Added ELF relocation type defines. These are needed by the module loading code for m68knommu. [PATCH] fixes to ColdFire/5407 startup code Correct the cache setup bits for the 5407. This enables the write buffers properly (despite what the previous comment said). This combined with fixed cache flushing code provides a nice performance boost on the 5407. Also fix the ROMfs setup to only move the ROMfs region if it is actually configured. [ARM] URL change for linux-on-laptops Patch from: Sebastian Henschel Attached is a cosmetic patch for arch/arm/Kconfig which updates the URL for Kenneth's page and introduces the URL of tuxmobil.org. IEEE1394/SBP2(r1139): Some cleanups, and a better, more unique id for ieee1394_id attribute. IEEE1394(r1140): Add a bus rescan bus_attr file, and an ignore_driver attr for ud's [PATCH] ramdisk cleanup Fairly pointless coding-style cleanups which I've been sitting on for ages. The ramdisk driver is still buggy: it drops pagecache when unmounted. I still need to fix this. Apparently it also displays data corruption under load even when not unmounted. [PATCH] slab: print slab name in kmem_cache_init() Print the name of the offending slab if we're going to go BUG in kmem_cache_init(). [PATCH] prevent ptrace from altering page permissions From: Roland McGrath Under some circumstances, ptrace PEEK/POKE_TEXT can cause page permissions to be permanently changed. Thsi causes changes in application behaviour when run under gdb. Fix that by only marking the pte as writeable if the vma is marked for writing. A write fault thus unshares the page but doesn't necessarily make it writeable. [PATCH] slab: hexdump for check_poison From: Manfred Spraul The patch is designed improve the diagnostics which are presented when the slab memory poison detector triggers. check_poison_obj checks for write accesses after kfree by comparing the object contents with the poison value. The current implementation contains several flaws: - it accepts both POISON_BEFORE and POISON_AFTER. check_poison_obj is only called with POISON_AFTER poison bytes. Fix: only accept POISON_AFTER. - the output is unreadable. Fix: use hexdump. - if a large objects is corrupted, then the relevant lines can scroll of the screen/dmesg buffer. Fix: line limit. - it can access addresses behind the end of the object, which can oops with CONFIG_DEBUG_PAGEALLOC. Fix: bounds checks. Additionally, the patch contains the following changes: - rename POISON_BEFORE and POISON_AFTER to POISON_FREE and POISON_INUSE. The old names are ambiguous. - use the new hexdump object function in ptrinfo. - store_stackinfo was called with wrong parameters: it should store caller, i.e. __builtin_return_address(0), not POISON_AFTER in the object. - dump both the object before and after the corrupted one, not just the one after. Example output: <<< Slab corruption: start=194e708c, len=2048 Redzone: 0x5a2cf071/0x5a2cf071. Last user: [<02399d7c>](dummy_init_module+0x1c/0xb0) 010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 7b 030: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 63 Prev obj: start=194e6880, len=2048 Redzone: 0x5a2cf071/0x5a2cf071. Last user: [<00000000>](0x0) 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b <<< [PATCH] page_add_rmap(): remove meaningless test Remove page validity test. I had a warning in there for a few weeks, no reports of it happening. [PATCH] Add CONFIG for -mregparm=3 From: Andi Kleen , me. Using -mregparm=3 shrinks the kernel further: (compiled with gcc 3.4, without -funit-at-a-time, using the later and together with -Os shrinks .text even more, making over 700KB difference) 4129346 708629 207240 5045215 4cfbdf vmlinux 3892905 708629 207240 4808774 496046 vmlinux-regparm This one helps even more, >236KB .text difference. Clearly worth the effort. This patch adds an option to use -mregparm=3 while compiling the kernel. I did an LTP run and it showed no additional failures over an non regparm kernel. According to some gcc developers it should be safe to use in all gccs that are still supports (2.95 and up) I didn't make it the default because it will break all binary only modules (although they can be fixed by adding a wrapper that calls them with "asmlinkage"). Actually it may be a good idea to make this default with 2.7.1 or somesuch. We add new kbuild infrastructure: the command scripts/gcc-version.sh $(CC) will print out the version of gcc in a canonical 4-digit form suitable for performing numerical tests against. DESC arch/i386/Makefile,scripts/gcc-version.sh,Makefile small fixes EDESC From: Serge Belyshev <33554432@mtu-net.ru> arch/i386/Makefile: * omitted $(KBUILD_SRC)/ in script call. scripts/gcc-version.sh: * GNU tail no longer supports 'tail -1' syntax. We should consider adding -fweb option: vanilla: $ size vmlinux text data bss dec hex filename 3056270 526780 386056 3969106 3c9052 vmlinux with -fweb: $ size vmlinux text data bss dec hex filename 3049523 526780 386056 3962359 3c75f7 vmlinux Also note 0.1 ... 1.0% speedup in various benchmarks. This option is not enabled by default at -O2 because it (like -fomit-frame-pointer) makes debugging impossible. [PATCH] Use -funit-at-a-time on ia32 From: Andi Kleen The upcomming gcc 3.4 has a new compilation mode called unit-at-a-time. What it does is to first load the whole file into memory and then generate the output. This allows it to use a better inlining strategy, drop unused static functions and use -mregparm automatically for static functions. It does not seem to compile significantly slower. This is also available in some of the 3.3 based "hammer branch" compilers used in distributions (at least in SuSE and Mandrake) Some tests show impressive .text shrinkage from unit-at-a-time. e.g. here is the same kernel compiled with -fno-unit-at-a-time and -funit-at-a-time with a gcc 3.4 snapshot. The gains are really impressive: text data bss dec hex filename 4129346 708629 207240 5045215 4cfbdf vmlinux-nounitatatime 3999250 674853 207208 4881311 4a7b9f vmlinux-unitatatime .text shrinks by over 130KB!. And .data shrinks too. At first look the numbers look nearly too good to be true, but they have been verified with several configurations and seem to be real. It looks like we have a lot of stupid inlines or dead functions. I'm really not sure why it is that much better. But it's hard to argue with hard numbers. [A bloat-o-meter comparision between the two vmlinuxes can be found in http://www.firstfloor.org/~andi/unit-vs-no-unit.gz . It doesn't show any obvious candidates unfortunately, just lots of small changes] With the gcc 3.3-hammer from SuSE 9.0 the gains are a bit smaller, but still noticeable (>100KB on .text) This patch enables -funit-at-a-time on ia32 if the compiler is gcc-3.4 or later. We had several reports of gcc-3.3 producing very early lockups. [PATCH] Add noinline attribute From: Andi Kleen This patch adds the `noinline' function attribute. It can be used to explicitly tell the compiler to not inline functions. We need this due to what is, IMO, a bug present in gcc-3.4 and current gcc-3.5 CVS: the compiler is inlining init/main.c:rest_init() inside init/main.c:start_kernel(), despite the fact that thay are declared to be placed in different text sections. [PATCH] use noinline for rest_init() gcc-3.4 incorretly inlines rest_init() into start_kernel(), causing things to crash when the .text.init section gets unloaded. Use noinline to prevent that. [PATCH] gcc-3.5: bonding drivers/net/bonding/bond_alb.c: In function `bond_alb_xmit': drivers/net/bonding/bond_alb.c:1188: error: invalid lvalue in assignment [PATCH] fix access() POSIX compliance From: Andreas Gruenbacher The fix for permission() that makes it compliant with POSIX.1-2001 apparently was lost. Here is the patch I sent before. (The relevant lines from the standard text are cited in http://www.ussg.iu.edu/hypermail/linux/kernel/0310.2/0286.html. The fix proposed in that posting did not handle directories without execute permissions correctly.) Make permission check conform to POSIX.1-2001 The access(2) function does not conform to POSIX.1-2001: For root and a file with no permissions, access(file, MAY_READ|MAY_EXEC) returns 0 (it should return -1). [PATCH] fix pfn_valid on ia32 discontigmem From: "Martin J. Bligh" Fix pfn_valid for architctures with discontiguous memory. This only changes the NUMA definition, and it leaves the NUMA-Q definition as was, because it's faster that way, it's in hotpaths, and our memory is always contiguous. [PATCH] ia32: pfn_to_nid fix From: "Martin J. Bligh" Makes sure pfn_to_nid is defined for all combinations of subarches, and that it's defined before it's used so we don't run into implicit declaration problems. [PATCH] ia32: disallow NUMA on PC subarch From: "Martin J. Bligh" Disallow NUMA on the i386 PC subarch (it doesn't work, nor was it intended to). [PATCH] config option for irqbalance From: "Martin J. Bligh" Make irqbalance into a config option - some people (jgarzik, arjan, etc) wanted to be able to disable it and do things from userspace instead. This patch allows each camp to do their own thing, which seems fair ;-) [PATCH] print some x86 build options during oopses I find this handy sometimes: it makes the oops output include info as to whether the user has selected CONFIG_PREEMPT, CONFIG_SMP or, particularly, CONFIG_DEBUG_PAGEALLOC. It can save one email round-trip. [PATCH] show_task() fix and cleanup show_task() is preinting negative numbers for free stack due to arithmetic against the wrong pointer. Fix that up, and clean up a few related things. show_task still has bogus code which atempts to work out how much stack the task has ever used - it cannot work because we don't actually zero out the stack pages when allocating them. We should fix that, or take it out. [PATCH] show_task() is not SMP safe From: Arnd Bergmann Christian Bornträger noticed that the kernel can crash after -T. It appears that the show_task function gets called for all tasks, which does not work if one of the tasks is running in a system call on another CPU. In that case the result of thread_saved_pc and show_stack is undefined and likely to cause a crash. For tasks running in user space on other CPUs, show_task() is probably harmless, but I'm not sure if that's true on all architectures. The patch below is still racy for tasks that are about to sleep, but it demonstrates the problem. IEEE1394(r1141): Add an "ignore_drivers" global default. [PATCH] ia64: on SN2, use the pda to count interrupts [PATCH] ia64: on SN2, skip init_platform_hubinfo() if on the simulator [PATCH] ia64: SN2 header file cleanups Here is a patch to clean up some of the Altix header files and includes. I've run the patch past the appropriate people at SGI and they seem happy with the changes. [PATCH] ia64: clean up SN2 setup.c Cleanup the SN setup.c file. Add __init and static to functions where required. [PATCH] ia64: cleanup SN2 pci_bus_cvlink.c I incorporated (at least in spirit I hope) hch's suggestions on the fixup code put in some kfrees that I was missing and static for sn_alloc_pci_sysdata (thanks Bartlomiej Zolnierkiewicz). White space clean up. IEEE1394(r1142): Use a kernel thread to rescan devices so we don't block the writer. ia64: Back-port from libunwind: fix off-by-one error in kernel-unwinder. There are no known failures due to this bug, but it's clearly a bug and given the right compiler, it could trigger and lead to bad stack traces etc. [PATCH] sys_device_[un]register() are not syscalls sys_xyz() names in Linux are all syscalls... except for sys_device_register() and sys_device_unregister(). This patch renames them so that the sys_ namespace is once again used only by syscalls. [PATCH] USB: Another unusual_devs.h update On Thu, 19 Feb 2004, Agustin De Igartua wrote: > Initializing USB Mass Storage driver... > usb-storage: This device (04e6,0002,0100 S 06 P 50) has unneeded SubClass and Protocol entries in unusual_devs.h > Please send a copy of this message to scsi0 : SCSI emulation for USB Mass Storage devices Thank you for sending this in. Greg, here's the patch. [PATCH] USB: Repair unusual_devs.h entry On Fri, 20 Feb 2004, Gustavo Guillermo wrote: > Ok, I tested the patch, The camera works, just as in the old Kernel, > Thanks, I'm including as an atachment the /proc/bus/usb/devices from > kernel 2.4.x and 2.6.x, and the kernel log for 2.4.x, but ooops, I forgot > to biold 2.4.x with full debug, if someone need it I will do. > > Please include this FIX in the Next Release. Greg, I now feel confident that this patch should be applied. [PATCH] USB: Use driver-model logging in the UHCI driver The main item in this patch is the conversion of the UHCI driver from using the old usb.h logging macros to the new driver-model dev_xxx macros. There are a few other minor changes too: updated version number, author, copyright, and maintainer information, removed some unneeded error messages, added some line breaks, added a convenience macro for the device pointer. [PATCH] USB: fix up compile errors in uhci driver. [PATCH] propogate errors from misc_register to caller The patch to check for / in class_device is not enough. The misc_register function needs to check return value of the things it calls! [PATCH] USB: add comments to sddr09.c People ask how to write the CIS on a SmartMedia card using an sddr09 reader/writer. The patch below documents the required command (but does not add the code). Two years ago or so I used this to fix the CIS on a card that my camera no longer wanted to accept. A Linux utility to do this might be useful, but the problem always is that we do not really have a good mechanism. How does one tell a driver that it has to do something special? Add yet another ioctl? IEEE1394(r1143): Fix FCP requests, broken by my change for list_for_each_entry(). USB storage: sync up with some missing unusual_devs entries that were in my tree. [SPARC64]: Update defconfig. [I2C]: Fix resource address typing. [I2C]: Use correct port address types in i2c-velleman.c [I2C]: Fix resource address typing in i2c-voodoo3.c [PATCH] Be careful about memory ordering in sungem driver Some barriers between setting up the DMA regions and writing the descriptor addresses would be most useful. I had some in my 2.4 version but they got lost someway, probably me not properly merging with davem at this point. The 970 is definitely more agressive at re-ordering stores than previous CPUs... Here is a patch adding some (probably too much, but better safe than sorry). [PATCH] Fix a DMA underrun problem with pmac IDE This fixes the behaviour of the pmac "macio" IDE driver when a DMA transfer happen to get less data out of the device than expected when setting up the DMA commands (the device underruns). This is very common with recent ATAPI stuffs and used to cause problem & disable DMA. This patch fixes the way we handle that condition, thus also fixing DVD burning on a bunch of recent pmacs. [FREEVXFS]: Fix u64 printk warnings on some 64-bit platforms. [I2C]: If comparing against ULONG_MAX, use ulong type, in lm85.c [PATCH] ppc64 compile fix From: Arjan van de Ven fix obvious non-C-standard stubs on ppc64 [PATCH] v850 ptrace.c task_struct leak From: Herbert Poetzl sys_ptrace() for v850, if pid == 1, doesn't put the struct task_struct (child), the following patch should fix that ... [PATCH] Fix the display of max-ever-used-stack in sysrq-T output The sysrq-T output currently tries to display the mimimum amount of free stack which each task has ever had available. It has been busted for years, because we forgot to zero out the stack when it is first created. Fix that up, adding a conig option for it. If the option is disabled, or the arch is not x86 then the free stack usage will display as zero. [PATCH] smbfs: remove debug code Remove an unneeded WSET() which snuck in there. [PATCH] x86_64 uniproc build fix From: Andi Kleen This fixes some more problems introduced by the IA32e merge on x86-64 - Make it compile on UP again. - Let the microcode driver build as a module [PATCH] remove dead kernel parameters Remove "hdx=flash" (ignored since 2.5.63) and "hdx=slow" (ignored since 2.5.41) kernel parameters. Also remove "slow" entry from /proc/ide/hdx/settings and "ata_flash", "nobios" and "slow" fields from ide_drive_t. [PATCH] keep documentation of kernel parameters in one place only [PATCH] kill useless IDE_SUBDRIVER_VERSION [PATCH] kill default_shutdown() and ide_drive_t->shutdown [PATCH] kill default_flushcache() and ide_drive_t->flushcache [PATCH] remove bogus comment and code from ide_unregister_driver() When ide_remove_proc_entries() is called, driver specific /proc/ide/hdx/ entries have been already removed by ->cleanup()->ide_unregister_subdriver(). [PATCH] remove dead/unfinished taskfile version of ide_cmd_ioctl() [PATCH] remove unused ide_end_taskfile() Additionally ide_end_drive_cmd() contains all functionality of this function. [NFSD]: Fix u64 printk warnings on some 64-bit platforms. [PATCH] fix /proc/ide/ for IDE PCI modules Make IDE PCI drivers register /proc/ide/ entries themselves. [SMBFS]: Use '%z' printf format for size_t types. [MEDIA]: Print out pointers correctly in dst.c [MEDIA]: Use '%z' printf format for size_t. [SKFDDI]: Use unsigned long for resource base/size. [SUNDANCE]: Fix casting so u64 printk does not warn on some 64-bit platforms. [MEDIA]: Use '%z' printf format for size_t/ptrdiff_t types in w9968cf.c. [PATCH] initial support for transmeta's efficeon processors This implements the initial support for the AGP gart in Transmeta's Efficeon processors. This code is based on linus' code from a while ago. Peter and I adapted it for the current kernel. The note at the top indicates how it was tested, known issues, and so forth. It is working quite well, and we'll work to fix the minor issues and test it some more with s3, more cards, other southbridges, etc., next. [I2C]: Use correct port address typing in i2c-elv.c [SPARC64]: Do similar macro casting for {in,out}{b,w,l}() as we do for {read,write}{b,w,l,q}(). Include the header file for DMA mapping. You know you want it. Give it to me. [SPARC32]: Do similar macro casting for {in,out}{b,w,l}() as we do for {read ,write}{b,w,l,q}(). [SPARC64]: Update defconfig. [SPARC32]: Nuke a.out build cruft This removes C_LABEL and asm/cprefix.h as well as NEW_GAS. These were used to support building on SunOS and with ancient binutils. [ARM PATCH] 1759/1: Add ARM925 support, updated Patch from Tony Lindgren The following patch adds the ARM925 processor support. This patch is based on the proc-arm925.S in 2.4 kernel, and it has been modified to be more like the ARM926 support in the 2.6 kernel, except for the cache flushing and initialization. Also, this patch fixes the writeback cache flushing for most part. There are still some issues with writeback cache flushing with devices using direct memory access, such as USB OHCI. It is recommended to use the writethrough instead if using USB. This is the default for OMAP-1510. OMAP-1610 does not have these issues, as it uses ARM926 core. This patch includes the update for the processor functions to be armv4t instead armv5t as suggested here: http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=1740/1 [ARM PATCH] 1670/1: PXA serial driver Patch from Holger Schurig PXA Serial port (FFUART, BTUART, STUART) and console support This patch works perfectly here with "console=ttyS0,115200" in the kernel command line. It contains Jean-frederic Clere fix to detect STUART and BTUART. Nico said that I should post it to your patch tracker. It replaces patch 1662/1 [PATCH] PCI: update MSI Documentation After getting feedback from Tom,I made some changes to the patch Attached is a revised version. [IPV6]: In ipv6_skip_exthdr(), access frag header correctly. [NETFILTER]: Fix ipv6 TCP/UDP matching wrt. extension headers [WAN]: Fix single_open confusion in wandev_show. [IGMP/MLD]: Validate filter size against optlen. [IPV6]: Use udpv6_queue_rcv_skb for multicast delivery. Noticed by Takashi Hibi. [NETFILTER]: Include net/ipv6.h in ip6_tables.c [IPV6]: Make ipv6_skip_exthdrs take const skb arg. [PATCH] PCI Hotplug: fix build warnings on 64 bit processors [NETFILTER]: C99 initializers in ip_conntrack_standalone.c [IPV4]: Make ip_auto_config a late initcall. [ARM PATCH] 1761/1: Remove SA1111_PCI_FAKEDEV (take 2) Patch from Deepak Saxena Follows your suggestion and also removes the #ifdef around pci_unmap_addr and friends. Since pci.h should only be getting included if PCI is enabled by PCI drivers and core, we shouldn't need the NOP version. [ARM] Make Acorn I2C build again. Unfortunately some i2c drivers were missed when the "name" element of struct device was removed. This cset fixes these drivers. [ARM] Fix ambakmi to use amba_request_regions() and the correct IRQ. [PATCH] ICS IDE is not a PCI IDE interface Don't list icside.o in drivers/ide/pci/Makefile - it's in drivers/ide/arm. Fix silly thinko in sungem network driver. From David Miller. [NETFILTER]: Resync with 2.4.x - Update listhelp.h to benefit from prefetching - More efficient selective_cleanup() impl. in conntrack - Export number of conntrack buckets via r/o sysctl. [ARM] Fix Acorn VIDC sound driver. Update the Acorn VIDC sound interrupt handler to return IRQ_HANDLED. [NETFILTER]: Remove unused structure member in NAT, from Patrick McHardy. [PATCH] NCR53C9x slave_{alloc,destroy}() NCR53C9x: Add missing slave_{alloc,destroy}() (from Kars de Jong and Matthias Urlichs). This affects the following drivers: - Amiga Blizzard 1230, Blizzard 2060, CyberStorm, CyberStorm Mk II, Fastlane, and Oktagon SCSI - DECstation NCR53C94 SCSI - Jazz ESP 100/100a/200 SCSI - Mac 53C9x SCSI - MCA NCR 53c9x SCSI - Sun-3x SCSI (was already fixed on its own) [PATCH] Sun-3x ESP SCSI clean up Sun-3x ESP SCSI: Remove obsolete cruft IEEE1394/SBP2(r1144): Convert sbp2 to do one scsi_host per unit-directory. [PATCH] aacraid reset handler Adds a reset handler to the aacraid template IEEE1394: Revision sync [PATCH] ia64: fix sched.c compile warning MPT Fusion driver 3.00.03 update From: "Moore, Eric Dean" Here's a new patch for MPT Fusion driver version 3.00.03 It address issues with proper hot plug implementation. [PATCH] MIPS mega-patch From: Ralf Baechle Below following 125547 lines of patches, all to arch/mips and include/asm-mips. I'm going to send the remaining stuff of which the one or other bit may need to be discussed in smaller bits. [PATCH] ia64: Fix 64 bit DMA mapping problem with PCI cards on SN2 PCI cards were forced to 32 bit addresses. There is significant extra overhead to DMA setup with 32 bit, and it is fairly easy to run out of mapping resources. This patch reenables 64 bit DMA mapping for PCI cards. [PKT_SCHED]: Convert to {subsys,module}_initcall(), fix init failure bugs in sch_teql.c pktsched_init() and tc_filter_init() converted to subsys_initcall(). initialization of individual qdisc and tcf_proto switched to module_init(). Some of them used to be registered twice if built-in, BTW. init failure handling in sch_teql.c fixed - it used to leave objects (both qdisc and netdev) registered if insmod failed. [PKT_SCHED]: Missing linux/init.h includes in sch_{arm,dsmark}.c IEEE1394 is no longer experimental, but eth1394 is. [SERIAL] fix 8250_pnp resource allocation Patch from: Mark Hindley Patch below to ensure that 8250_pnp sets necessary flags so that 8250 driver will reserve ioports. Before, I was logging errors like Feb 20 08:42:37 titan kernel: Trying to free nonexistent resource <000003e8-000003ef> on module unload. IEEE1394(r1146): Make the probe callback return an error if problems, and unbind drivers on failure. IEEE1394/ETH1394(r1147): Make sure to set update_config_rom on add host. [PATCH] ppc32: rework l2 cache code This patch removes the code that tweaked the L1 cache when setting up the L2 one. That was added a while ago in the intend of making things more robust but ended up breaking earlier 750 CPU setup. Also fix some crap in the L1 cache code that is only used for the powermac sleep at this point. [PATCH] Synchronize sungem RX complation path While perusing the driver I noticed a workaround we don't have in the Linux driver. The comment I added explains the issue. [PATCH] ppc32: Export cpu_possible_map cpu_possible_map is needed by some modules, export it. [PATCH] Fix use of sector_t in swim3 driver This driver won't build with CONFIG_LBD due to a 64 bits division. Use the "simple" fix of a cast down to 32 bits, this is only a floppy driver, no need to do sector_div. [PATCH] H8/300 start_thread problem fix Illegal usp corrected a set problem in starting of thread. [PATCH] H8/300 include cleanup - duplicate define marge. - unused define delete. - reduced code size. [PATCH] H8/300 warning fix Fix any warnings [PATCH] H8/300 io.h bussizing problem fix - fix warning - byte swap miss fix - 16bit bus access problem fix [PATCH] H8/300 Kconfig / defconfig update delete obsolute CONFIG [PATCH] Remove use of "current" identifier in via-pmu Andrew spotted this one, here's the fix: Remove usage of "current" as a variable name and structure member in the battery management code of PowerMac via-pmu and apm-emu drivers [IPV4]: Do not return -EAGAIN on blocking UDP socket, noticed by Olaf Kirch. [IPV6]: Kill MODULE ifdeffing, common init for sysctls. [SERIAL] Discover ACPI serial ports before plug-in ports Patch from: Bjorn Helgaas This makes us discover ACPI serial ports before PCI ones. The ACPI ports tend to be built-in, and discovering them late means their ttyS names move around if PCI serial ports are added or removed. I think it makes more sense to have relatively predictable and consistent names for the built-in hardware. [SERIAL] Fix /proc serial info for MMIO ports Patch from: Bjorn Helgaas This patch against 2.6.2 fixes a minor issue with /proc/tty/drivers/*, which currently doesn't show MMIO address information. Current sample output: # cat /proc/tty/driver/serial serinfo:1.0 driver revision: