commit 120bda20c6f64b32e8bfbdd7b34feafaa5f5332e Author: Linus Torvalds Date: Wed Jul 5 21:09:49 2006 -0700 Linux 2.6.18-rc1 It's all good. commit 4fe683f50d3fc8e36d4749277631dfc711393aa0 Author: Thomas Graf Date: Wed Jul 5 20:47:28 2006 -0700 [PKT_SCHED]: Fix error handling while dumping actions "return -err" and blindly inheriting the error code in the netlink failure exception handler causes errors codes to be returned as positive value therefore making them being ignored by the caller. May lead to sending out incomplete netlink messages. Signed-off-by: Thomas Graf Signed-off-by: David S. Miller commit d152b4e1e9a18f332ecd9e66492d706edc083345 Author: Thomas Graf Date: Wed Jul 5 20:45:57 2006 -0700 [PKT_SCHED]: Return ENOENT if action module is unavailable Signed-off-by: Thomas Graf Signed-off-by: David S. Miller commit 26dab8930b408d5e5eb9ef496d68364dc955e249 Author: Thomas Graf Date: Wed Jul 5 20:45:06 2006 -0700 [PKT_SCHED]: Fix illegal memory dereferences when dumping actions The TCA_ACT_KIND attribute is used without checking its availability when dumping actions therefore leading to a value of 0x4 being dereferenced. The use of strcmp() in tc_lookup_action_n() isn't safe when fed with string from an attribute without enforcing proper NUL termination. Both bugs can be triggered with malformed netlink message and don't require any privileges. Signed-off-by: Thomas Graf Signed-off-by: David S. Miller commit 37e64e5ae1a9554762b6ec494871adcf48be20cf Author: Mikael Pettersson Date: Wed Jul 5 20:42:58 2006 -0700 [SPARC64]: Fix stack overflow checking in modular non-SMP kernels. The sparc64 kernel's EXPORT_SYMBOL(_mcount) is inside an #ifdef CONFIG_SMP. This breaks modules in non-SMP kernels built with stack overflow checking (CONFIG_STACK_DEBUG=y), as modules_install reports: WARNING: /lib/modules/2.6.17/kernel/drivers/ide/ide-cd.ko needs unknown symbol _mcount Trivially fixed by moving EXPORT_SYMBOL(_mcount) outside of the #ifdef CONFIG_SMP. Signed-off-by: Mikael Pettersson Signed-off-by: David S. Miller commit 7233589d77fdb593b482a8b7ee867e901f54b593 Author: Randy Dunlap Date: Wed Jul 5 20:18:39 2006 -0700 [SPARC64]: Fix sparc64 build errors when CONFIG_PCI=n. Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit 309bade002e9226781c2d7a015340d0089e399b5 Author: Jeff Garzik Date: Wed Jul 5 23:02:48 2006 -0400 [PCI] Add JMicron PCI ID constants They will be used in several IDE/libata files. Signed-off-by: Jeff Garzik commit 9545b5781cfa822ea1528bc65965dbace0c39a5d Author: root Date: Wed Jul 5 22:58:20 2006 -0400 [PATCH] ahci: Ensure that we don't grab both functions When we force the chip into dual fn mode so we get PATA and AHCI we must be sure we don't then do anything dumb like try and grab both with the AHCI driver. Signed-off-by: Alan Cox Signed-off-by: Jeff Garzik commit 5afc81427f79193ed55edd7184ba2b6ce119a649 Author: Borislav Petkov Date: Tue Jun 27 14:51:25 2006 +0200 [PATCH] libata-core.c: restore configuration boot messages in ata_dev_configure(), v2 This one looks better, IMHO. This restores the default libata configuration messages printed during booting. Signed-off-by: Signed-off-by: Jeff Garzik commit d2298dca9a2ec8a8ff23e251d8aaab00e9d229f9 Author: Tejun Heo Date: Mon Jul 3 16:07:27 2006 +0900 [PATCH] sata_sil24: add suspend/sleep support Add suspend/sleep support. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 2a41a6108d93a62910d1c36913d83a79b550b40a Author: Tejun Heo Date: Mon Jul 3 16:07:27 2006 +0900 [PATCH] sata_sil24: separate out sil24_init_controller() Separate out controller initialization from sil24_init_one() into sil24_init_controller(). This will be used by resume. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit afb5a7cb84b1ea8b6045945e3d288303e6b71336 Author: Tejun Heo Date: Mon Jul 3 16:07:27 2006 +0900 [PATCH] sata_sil: add suspend/sleep support Add suspend/sleep support. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 3d8ec91352099b32a400f1952112dc076da28106 Author: Tejun Heo Date: Mon Jul 3 16:07:27 2006 +0900 [PATCH] sata_sil: separate out sil_init_controller() Separate out controller initialization from sil_init_one() into sil_init_controller(). This will be used by resume. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 500530f652f9e5dabe7571b018dec47742ce0f16 Author: Tejun Heo Date: Mon Jul 3 16:07:27 2006 +0900 [PATCH] libata: reimplement controller-wide PM Reimplement controller-wide PM. ata_host_set_suspend/resume() are defined to suspend and resume a host_set. While suspended, EHs for all ports in the host_set are pegged using ATA_FLAG_SUSPENDED and frozen. Because SCSI device hotplug is done asynchronously against the rest of libata EH and the same mutex is used when adding new device, suspend cannot wait for hotplug to complete. So, if SCSI device hotplug is in progress, suspend fails with -EBUSY. In most cases, host_set resume is followed by device resume. As each resume operation requires a reset, a single host_set-wide resume operation may result in multiple resets. To avoid this, resume waits upto 1 second giving PM to request resume for devices. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit d6f26d1f1f1128a896f38a7f8426daed0a1205a2 Author: Tejun Heo Date: Mon Jul 3 16:07:26 2006 +0900 [PATCH] libata: reimplement per-dev PM Reimplement per-dev PM. The original implementation directly put the device into suspended mode and didn't synchronize w/ EH operations including hotplug. This patch reimplements ata_scsi_device_suspend() and ata_scsi_device_resume() such that they request EH to perform the respective operations. Both functions synchronize with hotplug such that it doesn't operate on detached devices. Suspend waits for completion but resume just issues request and returns. This allows parallel wake up of devices and thus speeds up system resume. Due to sdev detach synchronization, it's not feasible to separate out EH requesting from sdev handling; thus, ata_device_suspend/resume() are removed and everything is implemented in the respective libata-scsi functions. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 02670bf379267f55a43aa57f6895689697e90eb3 Author: Tejun Heo Date: Mon Jul 3 16:07:26 2006 +0900 [PATCH] libata: implement PM EH actions Implement two PM per-dev EH actions - ATA_EH_SUSPEND and ATA_EH_RESUME. Each action puts the target device into suspended mode and resumes from it respectively. Once a device is put to suspended mode, no EH operations other than RESUME is allowed on the device. The device will stay suspended till it gets resumed and thus reset and revalidated. To implement this, a new device state helper - ata_dev_ready() - is implemented and used in EH action implementations to make them operate only on attached & running devices. If all possible devices on a port are suspended, reset is skipped too. This prevents spurious events including hotplug events from disrupting suspended devices. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit c0b6c0377c32fe3f6a2cf1e018db6da8a3b78379 Author: Tejun Heo Date: Mon Jul 3 16:07:26 2006 +0900 [PATCH] libata: separate out __ata_ehi_hotplugged() Separate out __ata_ehi_hotplugged() from ata_ehi_hotplugged(). The underscored version doesn't set AC_ERR_ATA_BUS. This will be used for resume which is a hotplug event but not an ATA bus error. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 1cdaf534f829b8759ba30f97d5e8dceb2ab77ba4 Author: Tejun Heo Date: Mon Jul 3 16:07:26 2006 +0900 [PATCH] libata: implement ATA_EHI_NO_AUTOPSY and QUIET Implement ATA_EHI_NO_AUTOPSY and QUIET. These used to be implied by ATA_PFLAG_LOADING, but new power management and PMP support need to use these separately. e.g. Suspend/resume operations shouldn't print full EH messages and resume shouldn't be recorded as an error. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit e9c839142d698086d3fe33a0daafde55ddd00c4e Author: Tejun Heo Date: Mon Jul 3 16:07:26 2006 +0900 [PATCH] libata: clean up debounce parameters and improve parameter selection The names of predefined debounce timing parameters didn't exactly match their usages. Rename to more generic names and implement param selection helper sata_ehc_deb_timing() which uses EHI_HOTPLUGGED to select params. Combined with the previous EHI_RESUME_LINK differentiation, this makes parameter selection accurate. e.g. user scan resumes link but normal deb param is used instead of hotplug param. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 28324304350e23db24d679c55de3f06a5b1e40aa Author: Tejun Heo Date: Mon Jul 3 16:07:26 2006 +0900 [PATCH] libata: implement ATA_EHI_RESUME_LINK Implement ATA_EHI_RESUME_LINK, which indicates that the link needs to be resumed. This used to be implied by ATA_EHI_HOTPLUGGED. However, hotplug isn't the only event which requires link resume and separating this out allows other places to request link resume. This differentiation also allows better debounce timing selection. This patch converts user scan to use ATA_EHI_RESUME_LINK. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit e30349d27e093f32ef517b5416d9dce1998d4676 Author: Tejun Heo Date: Mon Jul 3 03:02:15 2006 +0900 [PATCH] libata: replace ap_lock w/ ap->lock in ata_scsi_error() ap_lock was used because &ap->host_set->lock was too long and used a lot. Now that &ap->host_set->lock is replaced with ap->lock, there's no reason to keep ap_lock. [ed. note: that's not entirely true. ap_lock is a local variable, caching the results of a de-ref. In theory, if the compiler is smart enough, this patch is cosmetic. However, since this is not a fast path (it is the error path), this patch is nonetheless acceptable, even though it _may_ introduce a performance regression.] Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 0662c58b3265f52f708a6d59476bc7862b01f9c0 Author: Tejun Heo Date: Mon Jul 3 02:54:58 2006 +0900 [PATCH] libata: fix ehc->i.action setting in ata_eh_autopsy() ata_eh_autopsy() used to directly assign determined action mask to ehc->i.action thus overriding actions set by some of nested analyze functions. This patch makes ata_eh_autopsy() add action masks just as it's done in other places. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit b51e9e5db0e36239f786692f1cac6e435ed30c66 Author: Tejun Heo Date: Thu Jun 29 01:29:30 2006 +0900 [PATCH] libata: add ap->pflags and move core dynamic flags to it ap->flags is way too clamped. Separate out core dynamic flags to ap->pflags. ATA_FLAG_DISABLED is a dynamic flag but left alone as it's referenced by a lot of LLDs and it's gonna be removed once all LLDs are converted to new EH. Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit e6d902a3bfd53da375588e498251f4f4f6cd9650 Author: Brian King Date: Wed Jun 28 08:30:31 2006 -0500 [PATCH] libata: Conditionally set host->max_cmd_len In preparation for SAS attached SATA devices, which will not have a libata scsi_host, only setup host->max_cmd_len if ap->host exists. Signed-off-by: Brian King Signed-off-by: Jeff Garzik commit a93620b860434a19820072e656f4933e101ea6d4 Author: Martin Hicks Date: Wed Jun 28 12:17:47 2006 -0400 [PATCH] sata_vsc: data_xfer should use mmio Hi, sata_vsc is an MMIO device, and should use the correct data_xfer function. This problem was introduced by: commit a6b2c5d4754dc539a560fdf0d3fb78a14174394a Author: Alan Cox Date: Mon May 22 16:59:59 2006 +0100 [PATCH] PATCH: libata. Add ->data_xfer method Signed-off-by: Martin Hicks Signed-off-by: Jeff Garzik commit 2c1a108890c5b57cf3f7d7909f55c4fae0f52f19 Author: Brice Goglin Date: Mon Jul 3 18:16:46 2006 -0400 [PATCH] myri10ge - Export more parameters to ethtool Add the IRQ line, the tx_boundary, and whether Write-combining and MSI are enabled to the list of parameters that are exported to ethtool. Signed-off-by: Brice Goglin Signed-off-by: Jeff Garzik commit d6020787488e837d3c2b24eb1b8cf9849058d340 Author: Brice Goglin Date: Mon Jul 3 18:41:30 2006 -0400 [PATCH] myri10ge - Use dev_info() when printing parameters after probe Displaying the interface name when listing the device parameters at the end of myri10ge_probe is not a good idea since udev might rename the interface soon afterwards. Print the bus id instead, using dev_info(). Signed-off-by: Brice Goglin Signed-off-by: Jeff Garzik commit 18ac544306855aa366d34d29755f4596acd7a58d Author: brice@myri.com Date: Mon Jul 3 18:02:32 2006 -0400 [PATCH] myri10ge - Drop ununsed nvidia chipset id The workaround for the AER capability of the nVidia chipset has been removed, we don't need this PCI id anymore. Drop it. Signed-off-by: Brice Goglin Signed-off-by: Jeff Garzik commit ec590970f0f45a11c06b9525cd718dbdde22b4a3 Author: brice@myri.com Date: Mon Jul 3 18:02:31 2006 -0400 [PATCH] myri10ge - Drop unused pm_state The pm_state field in the myri10ge_priv structure is unused. Drop it. Signed-off-by: Brice Goglin Signed-off-by: Jeff Garzik commit b07db75a9f542c1a1745fcb047fd743843db8daa Author: Ralf Baechle Date: Fri Jun 30 13:56:13 2006 +0100 [PATCH] Fix freeing of net device Plus optical sugar. Signed-off-by: Ralf Baechle Signed-off-by: Jeff Garzik commit 22db99bd32646aa33051e23420ff3517cc70cad5 Author: Paul Fulghum Date: Fri Jun 30 02:27:19 2006 -0700 [PATCH] remove dead entry in net wan Kconfig Remove dead entry from net wan Kconfig and net wan Makefile.. This entry is left over from 2.4 where synclink used syncppp driver directly. synclink drivers now use generic HDLC Signed-off-by: Paul Fulghum Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 5b552b16420d11ec59d301494477713ab5cc1f43 Author: Andreas Mohr Date: Fri Jun 30 02:25:07 2006 -0700 [PATCH] NI5010 netcard cleanup - updated MAINTAINERS entry to new format - updated Jan-Pascal's (ACKed) and my email address - driver cleanup/modernization (runtime-, not hardware-tested) [bunk@stusta.de: build fix] Signed-off-by: Andreas Mohr Cc: Jeff Garzik Cc: Jan-Pascal van Best Signed-off-by: Adrian Bunk Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 3a10ccebe928691d16a001687552228d32ff7910 Author: Ingo Molnar Date: Fri Jun 30 02:25:06 2006 -0700 [PATCH] lock validator: fix ns83820.c irq-flags bug Barry K. Nathan reported the following lockdep warning: [ 197.343948] BUG: warning at kernel/lockdep.c:1856/trace_hardirqs_on() [ 197.345928] [] show_trace_log_lvl+0x5b/0x105 [ 197.346359] [] show_trace+0x1b/0x20 [ 197.346759] [] dump_stack+0x1f/0x24 [ 197.347159] [] trace_hardirqs_on+0xfb/0x185 [ 197.348873] [] _spin_unlock_irq+0x24/0x2d [ 197.350620] [] do_tx_done+0x171/0x179 [ns83820] [ 197.350895] [] ns83820_irq+0x149/0x20b [ns83820] [ 197.351166] [] handle_IRQ_event+0x1d/0x52 [ 197.353216] [] handle_level_irq+0x97/0xe1 [ 197.355157] [] do_IRQ+0x8b/0xac [ 197.355612] [] common_interrupt+0x25/0x2c this is caused because the ns83820 driver re-enables irq flags in hardirq context. While legal in theory, in practice it should only be done if the hardware is really old and has some very high overhead in its ISR. (such as PIO IDE) For modern hardware, running ISRs with irqs enabled is discouraged, because 1) new hardware is fast enough to not cause latency problems 2) allowing the nesting of hardware interrupts only 'spreads out' the handling of the current ISR, causing extra cachemisses that would otherwise not happen. Furthermore, on architectures where ISRs share the kernel stacks, enabling interrupts in ISRs introduces a much higher kernel-stack-nesting and thus kernel-stack-overflow risk. 3) not managing irq-flags via the _irqsave / _irqrestore variants is dangerous: it's easy to forget whether one function nests inside another, and irq flags might be mismanaged. In the few cases where re-enabling interrupts in an ISR is considered useful (and unavoidable), it has to be taught to the lock validator explicitly (because the lock validator needs the "no ISR ever enables hardirqs" artificial simplification to keep the IRQ/softirq locking dependencies manageable). This teaching is done via the explicit use local_irq_enable_in_hardirq(). On a stock kernel this maps to local_irq_enable(). If the lock validator is enabled then this does not enable interrupts. Now, the analysis of drivers/net/ns83820.c's irq flags use: the irq-enabling in irq context seems intentional, but i dont think it's justified. Furthermore, the driver suffers from problem #3 above too, in ns83820_tx_timeout() it disables irqs via local_irq_save(), but then it calls do_tx_done() which does a spin_unlock_irq(), re-enabling for a function that does not expect it! While currently this bug seems harmless (only some debug printout seems to be affected by it), it's nevertheless something to be fixed. So this patch makes the ns83820 ISR irq-flags-safe, and cleans up do_tx_done() use and locking to avoid the ns83820_tx_timeout() bug. From: Arjan van de Ven ns83820_mib_isr takes the misc_lock in IRQ context. All other places that do this in the ISR already use _irqsave versions, make this consistent at least. At some point in the future someone should audit the driver to see if all _irqsave's in the ISR can go away, this is generally an iffy/fragile proposition though; for now get it safe, simple and consistent. From: Arjan van de Ven ok this is a real driver deadlock: The ns83820 driver enabled interrupts (by unlocking the misc_lock with _irq) while still holding the rx_info.lock, which is required to be irq safe since it's used in the ISR like this: writel(1, dev->base + IER); spin_unlock_irq(&dev->misc_lock); kick_rx(ndev); spin_unlock_irq(&dev->rx_info.lock); This is can cause a deadlock if an irq was pending at the first spin_unlock_irq already, or if one would hit during kick_rx(). Simply remove the first _irq solves this Signed-off-by: Ingo Molnar Cc: Benjamin LaHaise Cc: Jeff Garzik Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit ac5bfe40f94cc8df512d247a5588897b0bc6dbea Author: Don Fry Date: Thu Jun 29 13:55:27 2006 -0700 [PATCH] pcnet32: Cleanup rx buffers after loopback test. More cleanup to pcnet32_loopback_test to release receive buffers if device is not up. Created common routine to free rx buffers. Tested ia32 and ppc64 Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit df27f4a610e22e8c8c740286368cc13e0600f22c Author: Don Fry Date: Thu Jun 29 13:55:02 2006 -0700 [PATCH] pcnet32: Suspend the chip rather than restart when changing multicast/promisc Suspend the chip if possible rather than stop and discard all tx and rx frames, when changing the mcast list or entering/leaving promiscuous mode. Created common pcnet32_suspend routine. Tested ia32 and ppc64 Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit 06c878500893c315795fcf944ecbd85c3d023040 Author: Don Fry Date: Thu Jun 29 13:54:38 2006 -0700 [PATCH] pcnet32: Handle memory allocation failures cleanly when resizing tx/rx rings Fix pcnet32_set_ringparam to handle memory allocation errors without leaving the adapter in an inoperative state and null pointers waiting to be dereferenced. Tested ia32 and ppc64. Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit 12fa30f35b52e85b4c37a2ef3c3320c158d510fa Author: Don Fry Date: Thu Jun 29 13:53:48 2006 -0700 [PATCH] pcnet32: Use kcalloc instead of kmalloc and memset On 2006-03-08 Eric Sesterhenn wrote: converts drivers/net to kzalloc usage. Don Fry modified it to use netif_msg_drv. Tested ia32 and ppc64. Signed-off-by: Eric Sesterhenn Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit 6dcd60c2c78ca87163730472ddea6aa1a7754b61 Author: Don Fry Date: Thu Jun 29 13:53:23 2006 -0700 [PATCH] pcnet32: Fix off-by-one in get_ringparam Fix off-by-one in pcnet32_get_ringparam Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit f2622a2b16f27d0087c913115dc15ee70797d58b Author: Don Fry Date: Thu Jun 29 13:52:58 2006 -0700 [PATCH] pcnet32: Use PCI_DEVICE macro Jon Mason wrote on Thu, 12 Jan 2006 17:07:49 -0600: This patch adds the PCI_DEVICE macro to the pcnet32 driver. This has been tested on my opteron with my "trident" adapter. Don Fry modified it slightly and tested on ia32 and ppc64. Signed-off-by: Jon Mason Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit dcaf9769801ff49268f5a7a8376045e251700dcf Author: Don Fry Date: Thu Jun 29 13:52:29 2006 -0700 [PATCH] pcnet32: Fix Section mismatch error Fix Section mismatch error. Tested ia32 and ppc64. Signed-off-by: Don Fry Signed-off-by: Jeff Garzik commit 0c639b31068e8e111ec330a3634d95e20c11aab6 Author: Kim Phillips Date: Wed Jun 28 21:13:23 2006 -0500 [PATCH] Add support for the Cicada 8201 PHY Add support for the Cicada 8201 PHY, a.k.a Vitesse VSC8201. This PHY is present on the MPC8349mITX. Signed-off-by: Kim Phillips Signed-off-by: Andy Fleming Signed-off-by: Jeff Garzik commit c9a4b35df9a5e24065e2dd80aa18a381da62339d Author: Daniel Drake Date: Sun Jun 11 23:18:54 2006 +0100 [PATCH] zd1211rw: disable TX queue during stop This avoids some potential races. Signed-off-by: Daniel Drake Signed-off-by: John W. Linville commit e85d0918b54fbd9b38003752f7d665416b06edd8 Author: Daniel Drake Date: Fri Jun 2 17:11:32 2006 +0100 [PATCH] ZyDAS ZD1211 USB-WLAN driver There are 60+ USB wifi adapters available on the market based on the ZyDAS ZD1211 chip. Unlike the predecessor (ZD1201), ZD1211 does not have a hardware MAC, so most data operations are coordinated by the device driver. The ZD1211 chip sits alongside an RF transceiver which is also controlled by the driver. Our driver currently supports 2 RF types, we know of one other available in a few marketed products which we will be supporting soon. Our driver also supports the newer revision of ZD1211, called ZD1211B. The initialization and RF operations are slightly different for the new revision, but the main difference is 802.11e support. Our driver does not support the QoS features yet, but we think we know how to use them. This driver is based on ZyDAS's own GPL driver available from www.zydas.com.tw. ZyDAS engineers have been responsive and supportive of our efforts, so thumbs up to them. Additionally, the firmware is redistributable and they have provided device specs. This driver has been written primarily by Ulrich Kunitz and myself. Graham Gower, Greg KH, Remco and Bryan Rittmeyer have also contributed. The developers of ieee80211 and softmac have made our lives so much easier- thanks! We maintain a small info-page: http://zd1211.ath.cx/wiki/DriverRewrite If there is enough time for review, we would like to aim for inclusion in 2.6.18. The driver works nicely as a STA, and can connect to both open and encrypted networks (we are using software-based encryption for now). We will work towards supporting more advanced features in the future (ad-hoc, master mode, 802.11a, ...). Signed-off-by: Daniel Drake Signed-off-by: John W. Linville commit 4a232e725b5cc1bc7fc5b177424a9ff8313b23ad Author: John W. Linville Date: Mon Jun 26 16:34:29 2006 -0400 [PATCH] softmac: fix build-break from 881ee6999d66c8fc903b429b73bbe6045b38c549 Signed-off-by: John W. Linville commit 8f7eb40749f4b0cf9d3892d9680c97b1bfce6de6 Author: Horms Date: Mon Jun 26 17:44:38 2006 +0900 [PATCH] CONFIG_WIRELESS_EXT is neccessary after all WARNING: /lib/modules/2.6.17-mm2/kernel/net/ieee80211/ieee80211.ko needs unknown symbol wireless_spy_update Someone removed the `#ifdef CONFIG_WIRELESS_EXT' from around the callsite in net/ieee80211/ieee80211_rx.c and didn't update Kconfig appropriately. The offending patchset seems to be 35c14b855f52c49e4f3d078b9532b056005ed321 which is tittled [PATCH] ieee80211: remove unnecessary CONFIG_WIRELESS_EXT checking After a quick look it seems that wireless_spy_update() lives in net/core/wirless.c, and that file is only compiled if CONFIG_WIRELESS_EXT is set. Perhaps this is Kconig work, but in the mean time here is a reversal of the recent change. Signed-Off-By: Horms Signed-off-by: John W. Linville commit 9f101fc5e5a4810a2560841e4292a782b250cb02 Author: Joseph Jezak Date: Sun Jun 11 12:01:03 2006 -0400 [PATCH] SoftMAC: Add network to ieee80211softmac_call_events when associate times out The ieee80211softmac_call_events function, when called with event type IEEE80211SOFTMAC_EVENT_ASSOCIATE_TIMEOUT should pass the network as the third parameter. This patch does that. Signed-off-by: Joseph Jezak Signed-off-by: John W. Linville commit cb74c432e321ed645b6cd88b77edc15f9478efbd Author: Joseph Jezak Date: Sun Jun 11 12:00:37 2006 -0400 [PATCH] SoftMAC: Prevent multiple authentication attempts on the same network This patch addresses the "No queue exists" messages commonly seen during authentication and associating. These appear due to scheduling multiple authentication attempts on the same network. To prevent this, I added a flag to stop multiple authentication attempts by the association layer. I also added a check to the wx handler to see if we're connecting to a different network than the one already in progress. This scenario was causing multiple requests on the same network because the network BSSID was not being updated despite the fact that the ESSID changed. Signed-off-by: Joseph Jezak Signed-off-by: John W. Linville commit 4359219425a0918a72775480e125fbb077de338d Author: Daniel Drake Date: Fri Jun 16 20:50:22 2006 +0100 [PATCH] bcm43xx: enable shared key authentication I recently patched softmac to enable shared key authentication. This small patch will enable crazy or unfortunate bcm43xx users to use this new capability. Signed-off-by: Daniel Drake Signed-off-by: John W. Linville commit 6d41e2651080c717c1b48389fe4171180388f042 Author: Larry Finger Date: Tue Jun 20 09:19:18 2006 -0500 [PATCH] 2.6.17 missing a call to ieee80211softmac_capabilities from ieee80211softmac_assoc_req In commit ba9b28d19a3251bb1dfe6a6f8cc89b96fb85f683, routine ieee80211softmac_capabilities was added to ieee80211softmac_io.c. As denoted by its name, it completes the capabilities IE that is needed in the associate and reassociate requests sent to the AP. For at least one AP, the Linksys WRT54G V5, the capabilities field must set the 'short preamble' bit or the AP refuses to associate. In the commit noted above, there is a call to the new routine from ieee80211softmac_reassoc_req, but not from ieee80211softmac_assoc_req. This patch fixes that oversight. As noted in the subject, v2.6.17 is affected. My bcm43xx card had been unable to associate since I was forced to buy a new AP. I finally was able to get a packet dump and traced the problem to the capabilities info. Although I had heard that a patch was "floating around", I had not seen it before 2.6.17 was released. As this bug does not affect security and I seem to have the only AP affected by it, there should be no problem in leaving it for 2.6.18. Signed-Off-By: Larry Finger Signed-off-by: John W. Linville commit fc8fd3400b716615933a47be453839d190b235bd Author: Larry Finger Date: Sun Jun 25 21:32:21 2006 -0500 [PATCH] Convert bcm43xx-softmac to use the ieee80211_is_valid_channel routine The current version of bcm43xx-softmac uses local routines to check if a channel is valid. As noted in the comments, these routines do not take any regulatory information into account. This patch converts the code to use the equivalent routine in ieee80211, which is being converted to know about regulatory information. Signed-Off-By: Larry Finger Signed-off-by: John W. Linville commit 60d48f1e23c25d09dbe7025ff179b808d72704b3 Author: Eric Sesterhenn Date: Wed Jun 21 21:05:58 2006 +0200 [PATCH] skb used after passing to netif_rx in net/ieee80211/ieee80211_rx.c this patch fixes coverity id #913. ieee80211_monitor_rx() passes the skb to netif_rx() and we should not reference it any longer. Signed-off-by: Eric Sesterhenn Signed-off-by: John W. Linville commit 4b301536694facb93f597281580f5ad907d36050 Author: Hong Liu Date: Wed Jun 21 11:35:08 2006 +0800 [PATCH] ieee80211: fix not allocating IV+ICV space when usingencryption in ieee80211_tx_frame We should preallocate IV+ICV space when encrypting the frame. Currently no problem shows up just because dev_alloc_skb aligns the data len to SMP_CACHE_BYTES which can be used for ICV. Signed-off-by: Hong Liu Signed-off-by: John W. Linville commit a1d79aaaa564abc19b7bf3a024bb371fa7648a15 Author: Michael Buesch Date: Sat Jun 17 15:19:05 2006 +0200 [PATCH] bcm43xx: workaround init_board vs. IRQ race Place the Init-vs-IRQ workaround before any card register access, because we might not have the wireless core mapped at all times in init. So this will result in a Machine Check caused by a bus error. Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit e8d596972221aea55ae7f5c2bb7d5895039f664d Author: Daniel Drake Date: Wed Jun 14 17:51:14 2006 +0200 [PATCH] bcm43xx: use softmac-suggested TX rate Use Softmac-suggested TX ratecode: ieee80211softmac_suggest_txrate() Signed-off-by: Daniel Drake Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit d3cef4ee2207033b9f231da308d966f357af34da Author: Faidon Liambotis Date: Sat Jun 10 20:54:58 2006 +0300 [PATCH] Add two PLX device IDs This patch adds device IDs for Symbol LA-4123 and Global Sun Tech GL24110P to the HostAP PLX driver. This is not tested with real hardware, but there is no reason why it shouldn't work. Please test. Signed-off-by: Faidon Liambotis Signed-off-by: John W. Linville commit 9b91cf9daac41eeaaea57ecfe68dc13bb0305fa9 Author: Jeff Garzik Date: Tue Jun 27 11:39:50 2006 -0400 [netdrvr] use dev_xxx() printk helpers, rather than dev_printk(KERN_xxx, ... Suggested by Jiri Slaby. Signed-off-by: Jeff Garzik commit 2e8a538d865de0eb9813c8a0f2284e920299c0cc Author: Jeff Garzik Date: Tue Jun 27 10:47:51 2006 -0400 [netdrvr] Use dev_printk() when ethernet interface isn't available For messages prior to register_netdev(), prefer dev_printk() because that prints out both our driver name and our [PCI | whatever] bus id. Updates: 8139{cp,too}, b44, bnx2, cassini, {eepro,epic}100, fealnx, hamachi, ne2k-pci, ns83820, pci-skeleton, r8169. Signed-off-by: Jeff Garzik commit cabb7667dc150320ccd9d6f64fbd7a34766bc775 Author: Jeff Garzik Date: Tue Jun 27 09:25:28 2006 -0400 [netdrvr] via-velocity: remove io_size struct member, it is invariant Replace io_size struct members with VELOCITY_IO_SIZE constant. Also, constify chip_info_table[]. Signed-off-by: Jeff Garzik commit e54f48933f414fa447c26d16524a4c9a8e2facc6 Author: Jeff Garzik Date: Tue Jun 27 09:20:08 2006 -0400 [netdrvr] via-velocity: misc. cleanups - const-ify pci_device_id table - clean up pci_device_id table with PCI_DEVICE() - don't store internal pointer in pci_device_id table, use pci_device_id::driver_data as an integer index - use dev_printk() for messages where eth%d prefix is unavailable - formatting fixes Signed-off-by: Jeff Garzik commit 46009c8bcd5d7c9fcbfc17d0455a471bea5be4d4 Author: Jeff Garzik Date: Tue Jun 27 09:12:38 2006 -0400 [netdrvr] minor cleanups in Becker-derived drivers - fealnx: convert #define to enum - fealnx, sundance: mark chip info table __devinitdata - fealnx: use dev_printk() during probe - fealnx: formatting cleanups - starfire: remove obsolete comment - sundance, via-rhine: add some whitespace where useful, in tables - sundance: prefer "{ }" table terminator - via-rhine: mark PCI probe table const Signed-off-by: Jeff Garzik commit 8ab6f3f706f5cb91bc0793afc95c8809837ece05 Author: Jeff Garzik Date: Tue Jun 27 08:56:23 2006 -0400 [netdrvr] via-velocity: use netdev_priv() where appropriate Signed-off-by: Jeff Garzik commit c3d8e682b7d10f57d13c86ecbb15806781d6e953 Author: Jeff Garzik Date: Tue Jun 27 08:54:34 2006 -0400 [netdrvr] Remove Becker-template 'io_size' member, when invariant Becker-derived drivers often have the 'io_size' member in their chip info struct, indicating the minimum required size of the I/O resource (usually a PCI BAR). For many situations, this number is either constant or irrelevant (due to pci_iomap convenience behavior). This change removes the io_size invariant member, and replaces it with a compile-time constant. Drivers updated: fealnx, gt96100eth, winbond-840, yellowfin Additionally, - gt96100eth: unused 'drv_flags' removed from gt96100eth - winbond-840: unused struct match_info removed - winbond-840: mark pci_id_tbl[] const, __devinitdata Signed-off-by: Jeff Garzik commit 03a8c6611aa18f919f8700b18f925e9008b616a8 Author: Jeff Garzik Date: Tue Jun 27 07:57:22 2006 -0400 [netdrvr] Remove Linux-specific changelogs from several Becker template drivers When in-kernel net drivers branched from Donald Becker's vanilla driver set, in the days before BitKeeper and git, a driver changelog was maintained in the driver source code. These days, the kernel's changelog is far superior and much more accurate, so the in-driver changelogs are removed. Another relic of the Becker/kernel split was version numbering, using "foo-LKx.y.z" notation, resulting in weird version numbers like "1.17b-LK1.1.9". These drivers are for older hardware, and see few changes these days, so the version numbers were all bumped to something more simple. Finally, in xircom_tulip_cb specifically, an additional cleanup removes the always-enabled CARDBUS cpp macro. Signed-off-by: Jeff Garzik commit 36e1e84768b1123eb632aff153104855c71684cc Author: Jeff Garzik Date: Tue Jun 27 07:38:33 2006 -0400 [netdrvr] epic100: minor cleanups - Remove in-source changelog, it's in the global kernel history. - convert silly and useless version to useful one - replace invariant pci_id_tbl[]::io_size uses with EPIC_TOTAL_SIZE - remove now-unused io_size member from pci_id_tbl[] - current kernel style prefers dev_printk() for the rare ethernet driver messages that cannot print an 'eth%d' prefix. Signed-off-by: Jeff Garzik commit 4e0641a7ad98fca5646a6be17605bc80f6c4ebde Author: Trond Myklebust Date: Wed Jul 5 13:05:13 2006 -0400 NFS: Optimise away an excessive GETATTR call when a file is symlinked In the case when compiling via a symlink tree, we want to ensure that the close-to-open GETATTR call is applied only to the final file, and not to the symlink. Signed-off-by: Trond Myklebust commit bce3481c91801665e17f8daf59ede946129f3d3f Author: Trond Myklebust Date: Wed Jul 5 13:17:12 2006 -0400 This fixes a panic doing the first READDIR or READDIRPLUS call when: * the client is ia64 or any platform that actually implements flush_dcache_page(), and * the server returns fsinfo.dtpref >= client's PAGE_SIZE, and * the server does *not* return post-op attributes for the directory in the READDIR reply. Problem diagnosed by Greg Banks Signed-off-by: Trond Myklebust commit 83715ad54fad5a7ed330110f83e31ae92630e9d9 Author: Trond Myklebust Date: Wed Jul 5 13:17:12 2006 -0400 NFS: Fix NFS page_state usage The introduction of the FLUSH_INVALIDATE argument to nfs_sync_inode_wait() does not clear the nr_unstable page state counter for pages that are being released. Also fix a longstanding similar bug when nfs_commit_list() fails. Signed-off-by: Trond Myklebust commit 01c3b861cd77b28565a2d18c7caa3ce7f938e35c Author: Trond Myklebust Date: Thu Jun 29 16:38:39 2006 -0400 NLM,NFSv4: Wait on local locks before we put RPC calls on the wire Use FL_ACCESS flag to test and/or wait for local locks before we try requesting a lock from the server Signed-off-by: Trond Myklebust commit f07f18dd6f29f11887b8d9cf7ecb736bf2f7dc62 Author: Trond Myklebust Date: Thu Jun 29 16:38:37 2006 -0400 VFS: Add support for the FL_ACCESS flag to flock_lock_file() Signed-off-by: Trond Myklebust commit 42a2d13eee3c895d22e9d1a52b96d15ca49adabc Author: Trond Myklebust Date: Thu Jun 29 16:38:36 2006 -0400 NFSv4: Ensure nfs4_lock_expired() caches delegated locks Signed-off-by: Trond Myklebust commit 9b07357490e5c7a1c3c2b6f4679d7ee4b4185ecd Author: Trond Myklebust Date: Thu Jun 29 16:38:34 2006 -0400 NLM,NFSv4: Don't put UNLOCK requests on the wire unless we hold a lock Use the new behaviour of {flock,posix}_file_lock(F_UNLCK) to determine if we held a lock, and only send the RPC request to the server if this was the case. Signed-off-by: Trond Myklebust commit f475ae957db66650db66916c62604ac27409d884 Author: Trond Myklebust Date: Thu Jun 29 16:38:32 2006 -0400 VFS: Allow caller to determine if BSD or posix locks were actually freed Change posix_lock_file_conf(), and flock_lock_file() so that if called with an F_UNLCK argument, and the FL_EXISTS flag they will indicate whether or not any locks were actually freed by returning 0 or -ENOENT. Signed-off-by: Trond Myklebust commit e340221acda6bc0bf05a0ff6e6114902c4307670 Author: Andreas Schwab Date: Wed Jul 5 18:57:48 2006 +0200 [PATCH] Makefile typo Fix a typo in the toplevel makefile. Signed-off-by: Andreas Schwab Signed-off-by: Linus Torvalds commit a8e0c51c71fc973b400f6502382063553b82af5a Author: David Woodhouse Date: Wed Jul 5 11:24:26 2006 +0100 [PATCH] powerpc: implement missing jiffies64_to_cputime64() asm-powerpc/cputime.h doesn't declare jiffies64_to_cputime64() or cputime64_sub(), and due to CONFIG_VIRT_CPU_ACCOUNTING it's not picking up the definition from asm-generic like x86-64 & friends do. Cc: Dave Jones Cc: Andrew Morton Signed-off-by: David Woodhouse Signed-off-by: Linus Torvalds commit ba1826e5eced176cc9ec0033ad8ee0f1cd5ad2e4 Author: Benjamin Herrenschmidt Date: Wed Jul 5 15:36:15 2006 +1000 [PATCH] powerpc: Fix loss of interrupts with MPIC With the new interrupt rework, an interrupt "host" map() callback can be called after the interrupt is already active. It's called again for an already mapped interrupt to allow changing the trigger setup, and currently this is not guarded with a test of wether the interrupt is requested or not. I plan to change some of this logic to be a bit less lenient against random reconfiguring of live interrupts but just not yet. The ported MPIC driver has a bug where when that happens, it will mask the interrupt. This changes it to preserve the previous masking of the interrupt instead. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Linus Torvalds commit ba854e18413d2d827f050984edeb8286c3335895 Author: Andrew Victor Date: Wed Jul 5 17:22:52 2006 +0100 [ARM] 3711/1: AT91 timer update Patch from Andrew Victor The AIC interrupt controller is the same on the Atmel AT91RM9200, AT91SAM9261 and AT91SAM9260 processors. This patch removes any RM9200-specific naming from the IRQ driver, and moves the AT91RM9200's default IRQ priority table into at91rm9200.c. Signed-off-by: Andrew Victor Signed-off-by: Russell King commit 5904a7f9167cdeb95569799e0be652c2ce6d3298 Author: Vitaly Wool Date: Wed Jul 5 14:47:20 2006 +0100 [ARM] 3709/1: pnx4008: convert to generic irq subsystem Patch from Vitaly Wool Convert pnx4008 chip support to use generic irq subsystem Signed-off-by: Vitaly Wool Signed-off-by: Russell King commit 20e652761cbf6983fd067aef2f0242c262057737 Author: Andrew Victor Date: Wed Jul 5 14:31:13 2006 +0100 [ARM] 3710/1: AT91 Serial: Use GPIO API Patch from Andrew Victor The AT91RM9200 errata work-around should be using the GPIO API and not accessing the PIO registers directly. Signed-off-by: Andrew Victor Signed-off-by: Russell King commit 7ad7153b051d9628ecd6a336b543ea6ef099bd2c Author: Linus Torvalds Date: Tue Jul 4 14:00:06 2006 -0700 Fix up headers_install wrt devfs removal No devfs_fs.h header any more.. Signed-off-by: Linus Torvalds commit c6482dde1c2811afba289b2344268f850595f350 Author: Arjan van de Ven Date: Tue Jul 4 03:07:22 2006 -0700 [PATCH] fix AB-BA deadlock inversion at cs46xx_dsp_remove_scb There is a code sequence where the locking is substream->self_group.lock -> ins->scbs[index].lock substream->self_group.lock is interrupt safe, and taken from irq context as well (trace is snipped for brevity) so what can happen is cpu 0 cpu 1 user context user context take ins->scbs[index].lock without disabling interrupts get substream->self_group.lock (irqsafe) try to get ins->scbs[index].lock (spins) interrupt happens try to get substream->self_group.lock (spins) which is an obvious AB-BA deadlock fix is to just take the lock with _irqsafe Signed-off-by: Arjan van de Ven Cc: Jaroslav Kysela Acked-by: Takashi Iwai Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a46f9484f8926aacb2e79a0e1676de3a6a6fbae8 Author: Zach Brown Date: Tue Jul 4 02:57:52 2006 -0700 [PATCH] mthca: initialize send and receive queue locks separately mthca: initialize send and receive queue locks separately lockdep identifies a lock by the call site of its initialization. By initializing the send and receive queue locks in mthca_wq_init() we confuse lockdep. It warns that that the ordered acquiry of both locks in mthca_modify_qp() is recursive acquiry of one lock: ============================================= [ INFO: possible recursive locking detected ] --------------------------------------------- modprobe/1192 is trying to acquire lock: (&wq->lock){....}, at: [] mthca_modify_qp+0x60/0xa7b [ib_mthca] but task is already holding lock: (&wq->lock){....}, at: [] mthca_modify_qp+0x53/0xa7b [ib_mthca] Initializing the locks separately in mthca_alloc_qp_common() stops the warning and will let lockdep enforce proper ordering on paths that acquire both locks. Signed-off-by: Zach Brown Cc: Roland Dreier Cc: Arjan van de Ven Cc: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit dd8041f16b117f63f40fb844d6cdebe8b03514d2 Author: Yasunori Goto Date: Tue Jul 4 02:57:51 2006 -0700 [PATCH] Fix copying of pgdat array on each node for ia64 memory hotplug I found a bug in memory hot-add code for ia64. IA64's code has copies of pgdat's array on each node to reduce memory access over crossing node. This array is used by NODE_DATA() macro. When new node is hot-added, this pgdat's array should be updated and copied on new node too. However, I used for_each_online_node() in scatter_node_data() to copy it. This meant its array is not copied on new node. Because initialization of structures for new node was halfway, so online_node_map couldn't be set at this time. To copy arrays on new node, I changed it to check value of pgdat_list[] which is source array of copies. I tested this patch with my Memory Hotadd emulation on Tiger4. This patch is for 2.6.17-git20. Signed-off-by: Yasunori Goto Cc: "Luck, Tony" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 31304c909e6945b005af62cd55a582e9c010a0b4 Author: Greg Ungerer Date: Tue Jul 4 15:04:39 2006 +1000 [PATCH] uclinux: fix proc_task()/get_proc-task() naming Fix changed name of proc_task() to get_proc_task(). Signed-off-by: Greg Ungerer Signed-off-by: Linus Torvalds commit d8cb7c1ded6e5a80a7335716dde60784a0d51c1d Author: Andrew Morton Date: Mon Jul 3 17:32:22 2006 -0700 [PATCH] revert "kthread: convert stop_machine into a kthread" Jiri reports that the stop_machin kthread conversion caused his machine to hang when suspending. Hyperthreading is apparently involved. I don't see why that would be and I can't reproduce it. Revert to the 2.6.17 code. Cc: "Serge E. Hallyn" Cc: Jiri Slaby Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 38c54ee8d5338f49aca986081ea41a987c15cf9d Author: Heiko Carstens Date: Mon Jul 3 17:32:21 2006 -0700 [PATCH] zfcp: fix incorrect usage of fsf_req_list_lock ================================= [ INFO: inconsistent lock state ] --------------------------------- inconsistent {in-hardirq-W} -> {hardirq-on-W} usage. swapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes: (&adapter->fsf_req_list_lock){++..}, at: [<0000000000274486>] zfcp_qdio_reqid_check+0x46/0x178 {in-hardirq-W} state was registered at: [<000000000005fb0c>] __lock_acquire+0xad8/0xed0 [<00000000000604ae>] lock_acquire+0x9a/0xc8 [<000000000035a326>] _spin_lock+0x4e/0x68 [<0000000000274486>] zfcp_qdio_reqid_check+0x46/0x178 [<000000000027469e>] zfcp_qdio_response_handler+0xe6/0x430 [<0000000000219dd4>] tiqdio_thinint_handler+0xd20/0x213c [<000000000020229a>] do_adapter_IO+0xb2/0xc0 [<0000000000206f32>] do_IRQ+0x136/0x16c [<0000000000020462>] io_no_vtime+0x16/0x1c [<0000000000019432>] cpu_idle+0x222/0x250 irq event stamp: 129220 hardirqs last enabled at (129220): [<00000000000411e6>] tasklet_hi_action+0x5a/0x19c hardirqs last disabled at (129219): [<00000000000411c0>] tasklet_hi_action+0x34/0x19c softirqs last enabled at (129212): [<0000000000040b62>] __do_softirq+0x13a/0x180 softirqs last disabled at (129217): [<000000000001fd58>] do_softirq+0xec/0xf0 other info that might help us debug this: no locks held by swapper/0. stack backtrace: 00000000012bb670 0000000000000002 0000000000000000 00000000012bb780 00000000012bb6e8 0000000000399122 0000000000399122 0000000000016b0a 0000000000000000 0000000000000000 0000000000000000 00000000004660e8 0000000000000000 000000000000000d 00000000012bb6e0 00000000012bb758 0000000000368b90 0000000000016b0a 00000000012bb6e0 00000000012bb730 Call Trace: ([<0000000000016a26>] show_trace+0x76/0xdc) [<0000000000016b2c>] show_stack+0xa0/0xd0 [<0000000000016b8a>] dump_stack+0x2e/0x3c [<000000000005e3da>] print_usage_bug+0x27e/0x290 [<000000000005ea9c>] mark_lock+0x6b0/0x6c0 [<000000000005f33e>] __lock_acquire+0x30a/0xed0 [<00000000000604ae>] lock_acquire+0x9a/0xc8 [<000000000035a326>] _spin_lock+0x4e/0x68 [<0000000000274486>] zfcp_qdio_reqid_check+0x46/0x178 [<000000000027469e>] zfcp_qdio_response_handler+0xe6/0x430 [<0000000000217bd2>] tiqdio_tl+0xd02/0x2120 [<000000000004123a>] tasklet_hi_action+0xae/0x19c [<0000000000040ae4>] __do_softirq+0xbc/0x180 [<000000000001fd58>] do_softirq+0xec/0xf0 [<0000000000040c38>] irq_exit+0x90/0xa8 [<0000000000206f40>] do_IRQ+0x144/0x16c [<0000000000020462>] io_no_vtime+0x16/0x1c [<0000000000019432>] cpu_idle+0x222/0x250 ([<0000000000019416>] cpu_idle+0x206/0x250) [<000000000001405a>] rest_init+0x5a/0x68 [<0000000000536998>] start_kernel+0x39c/0x3dc [<0000000000013046>] _stext+0x46/0x1000 Fix incorrect usage of fsf_req_list_lock. It's used in tasklet context (irqs on) as well as in irq context. Therefore use the spin_lock_irqsave variant to avoid deadlocks. Acked-by: Andreas Herrmann Signed-off-by: Heiko Carstens Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 9f09c548e185b63a3567498b96783f897b5f0399 Author: Heiko Carstens Date: Mon Jul 3 17:32:20 2006 -0700 [PATCH] zfcp: fix incorrect usage of erp_lock ================================= [ INFO: inconsistent lock state ] --------------------------------- inconsistent {hardirq-on-W} -> {in-hardirq-W} usage. swapper/0 [HC1[1]:SC0[0]:HE0:SE1] takes: (&adapter->erp_lock){+-..}, at: [<000000000026c7f8>] zfcp_erp_async_handler+0x3c/0x70 {hardirq-on-W} state was registered at: [<000000000005f33e>] __lock_acquire+0x30a/0xed0 [<00000000000604ae>] lock_acquire+0x9a/0xc8 [<000000000035a7ae>] _write_lock+0x4e/0x68 [<000000000026d822>] zfcp_erp_adapter_strategy_generic+0x286/0xd94 [<000000000026fd72>] zfcp_erp_strategy_do_action+0x91e/0x1a94 [<0000000000271a3a>] zfcp_erp_thread+0x21a/0x1568 [<0000000000019096>] kernel_thread_starter+0x6/0xc [<0000000000019090>] kernel_thread_starter+0x0/0xc irq event stamp: 12078 hardirqs last enabled at (12077): [<0000000000019416>] cpu_idle+0x206/0x250 hardirqs last disabled at (12078): [<0000000000020458>] io_no_vtime+0xc/0x1c softirqs last enabled at (12072): [<0000000000040b62>] __do_softirq+0x13a/0x180 softirqs last disabled at (12059): [<000000000001fd58>] do_softirq+0xec/0xf0 other info that might help us debug this: no locks held by swapper/0. stack backtrace: 00000000012bb648 0000000000000002 0000000000000000 00000000012bb758 00000000012bb6c0 0000000000399122 0000000000399122 0000000000016b0a 0000000000000000 0000000000000001 0000000000000000 00000000004660e8 0000000000000000 000000000000000d 00000000012bb6b8 00000000012bb730 0000000000368b90 0000000000016b0a 00000000012bb6b8 00000000012bb708 Call Trace: ([<0000000000016a26>] show_trace+0x76/0xdc) [<0000000000016b2c>] show_stack+0xa0/0xd0 [<0000000000016b8a>] dump_stack+0x2e/0x3c [<000000000005e3da>] print_usage_bug+0x27e/0x290 [<000000000005e934>] mark_lock+0x548/0x6c0 [<000000000005fb0c>] __lock_acquire+0xad8/0xed0 [<00000000000604ae>] lock_acquire+0x9a/0xc8 [<000000000035a662>] _write_lock_irqsave+0x62/0x80 [<000000000026c7f8>] zfcp_erp_async_handler+0x3c/0x70 [<0000000000279178>] zfcp_fsf_req_dispatch+0xd8/0x1fa8 [<000000000027e538>] zfcp_fsf_req_complete+0x104/0xe4c [<0000000000274534>] zfcp_qdio_reqid_check+0xf4/0x178 [<000000000027469e>] zfcp_qdio_response_handler+0xe6/0x430 [<0000000000219dd4>] tiqdio_thinint_handler+0xd20/0x213c [<000000000020229a>] do_adapter_IO+0xb2/0xc0 [<0000000000206f32>] do_IRQ+0x136/0x16c [<0000000000020462>] io_no_vtime+0x16/0x1c [<0000000000019432>] cpu_idle+0x222/0x250 ([<0000000000019416>] cpu_idle+0x206/0x250) [<000000000001405a>] rest_init+0x5a/0x68 [<0000000000536998>] start_kernel+0x39c/0x3dc [<0000000000013046>] _stext+0x46/0x1000 Fix incorrect usage of erp_lock. Using the write_lock() variant is wrong, since this might lead to deadlocks. Acked-by: Andreas Herrmann Signed-off-by: Heiko Carstens Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit b6a7c79a52939513ef043d6eb9fcf12a056c010e Author: OGAWA Hirofumi Date: Mon Jul 3 17:32:20 2006 -0700 [PATCH] Fix modular cpuid.ko With recent change, if CONFIG_HOTPLUG_CPU is disabled, register_cpu_notifier() is not exported. And it breaked moduler msr/cpuid (msr.c was already fixed). We need to use register_hotcpu_notifier() now in module, instead of register_cpu_notifier(). Signed-off-by: OGAWA Hirofumi Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 300b93974ff64f1bef1ac8294547c573954f0300 Author: Marcel Holtmann Date: Mon Jul 3 10:37:55 2006 +0200 [Bluetooth] Add RFCOMM role switch support This patch adds the support for RFCOMM role switching before the connection is fully established. Signed-off-by: Marcel Holtmann commit 7c2660b00fae0575dd4ce5c7b6bf30762b632045 Author: Marcel Holtmann Date: Mon Jul 3 10:02:51 2006 +0200 [Bluetooth] Allow disabling of credit based flow control This patch adds the module parameter disable_cfc which can be used to disable the credit based flow control. The credit based flow control was introduced with the Bluetooth 1.1 specification and devices can negotiate its support, but for testing purpose it is helpful to allow disabling of it. Signed-off-by: Marcel Holtmann commit 0139418c943c3389cf75afc4f4d2b2fa52bbf7c9 Author: Marcel Holtmann Date: Mon Jul 3 10:02:46 2006 +0200 [Bluetooth] Small cleanup of the L2CAP source code This patch is a small cleanup of the L2CAP source code. It makes some coding style changes and moves some functions around to avoid forward declarations. Signed-off-by: Marcel Holtmann commit a91f2e396f5b32b21d842b4757bc8de5e88eac66 Author: Marcel Holtmann Date: Mon Jul 3 10:02:41 2006 +0200 [Bluetooth] Use real devices for host controllers This patch converts the Bluetooth class devices into real devices. The Bluetooth class is kept and the driver core provides the appropriate symlinks for backward compatibility. Signed-off-by: Marcel Holtmann commit 27d35284258c596900e0e41c46932ec4abe6a7b1 Author: Marcel Holtmann Date: Mon Jul 3 10:02:37 2006 +0200 [Bluetooth] Add platform device for virtual and serial devices This patch adds a generic Bluetooth platform device that can be used as parent device by virtual and serial devices. Signed-off-by: Marcel Holtmann commit 04837f6447c7f3ef114cda1ad761822dedbff8cf Author: Marcel Holtmann Date: Mon Jul 3 10:02:33 2006 +0200 [Bluetooth] Add automatic sniff mode support This patch introduces the automatic sniff mode feature. This allows the host to switch idle connections into sniff mode to safe power. Signed-off-by: Ulisses Furquim Signed-off-by: Marcel Holtmann commit da1f519851d1c66331363253f364bdb5d924ea96 Author: Marcel Holtmann Date: Mon Jul 3 10:02:29 2006 +0200 [Bluetooth] Correct SCO buffer size on request This patch introduces a quirk that allows the drivers to tell the host to correct the SCO buffer size values. Signed-off-by: Olivier Galibert Signed-off-by: Marcel Holtmann commit dcdcf63ef12dc3fbaa17a6d04f16ada8e63bb4d0 Author: Marcel Holtmann Date: Mon Jul 3 10:02:24 2006 +0200 [Bluetooth] Add suspend/resume support to the HCI USB driver This patch implements the suspend/resume methods for the HCI USB driver by killing all outstanding URBs on suspend, and re-issuing them on resume. Signed-off-by: Johannes Berg Signed-off-by: Marcel Holtmann commit 2b86ad21deec4c47a1f0089298f12e4038c2aa68 Author: Marcel Holtmann Date: Mon Jul 3 10:02:18 2006 +0200 [Bluetooth] Use raw mode for the Frontline sniffer device The Frontline sniffer device looks like a normal H:2 Bluetooth device, but it is not and so mark it as raw mode device. Signed-off-by: Marcel Holtmann commit 69ee20a58fa0cad6520c2a9538100a87ef0abd7d Author: Andrey Savochkin Date: Mon Jul 3 19:50:14 2006 -0700 [BRIDGE]: br_dump_ifinfo index fix Fix for inability of br_dump_ifinfo to handle non-zero start index: loop index never increases when entered with non-zero start. Spotted by Kirill Korotaev. Signed-off-by: Andrey Savochkin Signed-off-by: David S. Miller commit 3c6b377321678c649f9b3c66da0149975c614102 Author: Randy Dunlap Date: Mon Jul 3 19:48:25 2006 -0700 [ATM]: add+use poison defines ATM: add and use POISON define values. Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit 4bdbf6c033ba05bff65f69989baccd7103c5a530 Author: Randy Dunlap Date: Mon Jul 3 19:47:27 2006 -0700 [NET]: add+use poison defines Add and use poison defines in net/. Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit 6508871eddbbd3e62799f3b6182a6a4fd3ef31d5 Author: Randy Dunlap Date: Mon Jul 3 19:45:31 2006 -0700 [IOAT]: fix kernel-doc in source files Fix kernel-doc warnings in drivers/dma/: - use correct function & parameter names - add descriptions where omitted Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit fe4ada2d6f0b746246e9b5bf0f4f2e4d3a07d26e Author: Randy Dunlap Date: Mon Jul 3 19:44:51 2006 -0700 [IOAT]: fix header file kernel-doc Fix kernel-doc problems in include/linux/dmaengine.h: - add some fields/parameters - expand some descriptions - fix typos Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit b0026624f1aa3e38a887cb483de61f104d600b97 Author: Michael Chan Date: Mon Jul 3 19:42:14 2006 -0700 [TG3]: Add ipv6 TSO feature Enable ipv6 TSO feature on chips that support it. Update version to 3.61. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6703931c546e6dec0431776fa616d5accd3e7162 Author: Michael Chan Date: Mon Jul 3 19:41:11 2006 -0700 [IPV6]: Fix ipv6 GSO payload length Fix ipv6 GSO payload length calculation. The ipv6 payload length excludes the ipv6 base header length and so must be subtracted. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 863fae666acb87b150f4634e6e79476ebe274f43 Author: Allan Stephens Date: Mon Jul 3 19:39:36 2006 -0700 [TIPC] Fixed sk_buff panic caused by tipc_link_bundle_buf (REVISED) The recent change to direct inspection of bundle buffer tailroom did not account for the possiblity of unrequested tailroom added by skb_alloc(), thereby allowing a bundle to be created that exceeds the current link MTU. An additional check now ensures that bundling works correctly no matter if the bundle buffer is smaller, larger, or equal to the link MTU. Signed-off-by: Allan Stephens Signed-off-by: Per Liden Signed-off-by: David S. Miller commit bbcf467dab42ea3c85f368df346c82af2fbba665 Author: Herbert Xu Date: Mon Jul 3 19:38:35 2006 -0700 [NET]: Verify gso_type too in gso_segment We don't want nasty Xen guests to pass a TCPv6 packet in with gso_type set to TCPv4 or even UDP (or a packet that's both TCP and UDP). Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 6ce1669fdb6b0a0faf9b2e2ba08048b520c57841 Author: Horms Date: Mon Jul 3 19:35:40 2006 -0700 [IPVS]: Add sysctl documentation * Derived from http://www.linuxvirtualserver.org/docs/sysctl.html, v1.4 maintained by Wensong Zhang * Adjusted preample to match ip-sysctl.txt * Sorted options into alphabetical order * Added expire_quiescent_template * Removed timeout_* which are no longer present * Incoporated doc/debug-levels.txt from IPVS source tree into description of ipvs_debug * Minor spelling fixes * Further editing more than welcome Signed-Off-By: Horms Signed-off-by: David S. Miller commit d85838c55d836c33077344fab424f200f2827d84 Author: Ralf Baechle Date: Mon Jul 3 19:32:23 2006 -0700 [ROSE]: Try all routes when establishing a ROSE connections. From Jean-Paul F6FBB ROSE will only try to establish a route using the first route in its routing table. Fix to iterate through all additional routes if a connection attempt has failed. Signed-off-by: Ralf Baechle Signed-off-by: David S. Miller commit 18601a7d30c8340af4d786793ee52828471d2630 Author: Ralf Baechle DL5RB Date: Mon Jul 3 19:31:14 2006 -0700 [NETROM]: Use socket helpers instead of direct fiddling with struct sock Signed-off-by: Ralf Baechle DL5RB Signed-off-by: David S. Miller commit 006f68b84fe19fc5015a8cf838a10d75f91f0218 Author: Ralf Baechle DL5RB Date: Mon Jul 3 19:30:18 2006 -0700 [AX.25]: Reference counting for AX.25 routes. In the past routes could be freed even though the were possibly in use ... Signed-off-by: Ralf Baechle DL5RB Signed-off-by: David S. Miller commit 8dc22d2b642f8a6f14ef8878777a05311e5d1d7e Author: Ralf Baechle Date: Mon Jul 3 19:29:15 2006 -0700 [ROSE]: Fix dereference of skb pointer after free. If rose_route_frame return success we'll dereference a stale pointer. Likely this is only going to result in bad statistics for the ROSE interface. This fixes coverity 946. Signed-off-by: Ralf Baechle Signed-off-by: David S. Miller commit 518d1c9679f644811adaa22d853f43a83fbdae84 Author: Benoit Boissinot Date: Mon Jul 3 19:28:13 2006 -0700 [IOAT]: Fix a warning in ioatdma drivers/dma/ioatdma.c: In function 'ioat_init_module': drivers/dma/ioatdma.c:830: warning: control reaches end of non-void function Signed-off-by: Benoit Boissinot Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 56e0873b7b146564a0c36e225624f5a9b2d63791 Author: Adrian Bunk Date: Mon Jul 3 19:27:20 2006 -0700 [IOAT]: drivers/dma/iovlock.c: make num_pages_spanned() static This patch makes the needlessly global num_pages_spanned() static. Signed-off-by: Adrian Bunk Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 882d02d6fb040a246b005305ffeb790bb5ce80ad Author: Andrew Morton Date: Mon Jul 3 19:26:15 2006 -0700 [AF_UNIX]: datagram getpeersec fix The unix_get_peersec_dgram() stub should have been inlined so that it disappears. Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit c1b4df5d2a5b1a9c037fe3b2e42804cf1267c750 Author: Randy Dunlap Date: Mon Jul 3 19:24:19 2006 -0700 [IOAT]: fix sparse ulong warning Fix sparse warning: drivers/dma/ioatdma.c:444:32: warning: constant 0xFFFFFFFFFFFFFFC0 is so big it is unsigned long Also needs a MAINTAINERS entry. Signed-off-by: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 70b97a7f0b19cf1f2619deb5cc41e8b78c591aa7 Author: Ingo Molnar Date: Mon Jul 3 00:25:42 2006 -0700 [PATCH] sched: cleanup, convert sched.c-internal typedefs to struct convert: - runqueue_t to 'struct rq' - prio_array_t to 'struct prio_array' - migration_req_t to 'struct migration_req' I was the one who added these but they are both against the kernel coding style and also were used inconsistently at places. So just get rid of them at once, now that we are flushing the scheduler patch-queue anyway. Conversion was mostly scripted, the result was reviewed and all secondary whitespace and style impact (if any) was fixed up by hand. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 36c8b586896f60cb91a4fd526233190b34316baf Author: Ingo Molnar Date: Mon Jul 3 00:25:41 2006 -0700 [PATCH] sched: cleanup, remove task_t, convert to struct task_struct cleanup: remove task_t and convert all the uses to struct task_struct. I introduced it for the scheduler anno and it was a mistake. Conversion was mostly scripted, the result was reviewed and all secondary whitespace and style impact (if any) was fixed up by hand. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 48f24c4da1ee7f3f22289cb85e8b8a73e4df4db5 Author: Ingo Molnar Date: Mon Jul 3 00:25:40 2006 -0700 [PATCH] sched: clean up fallout of recent changes Clean up some of the impact of recent (and not so recent) scheduler changes: - turning macros into nice inline functions - sanitizing and unifying variable definitions - whitespace, style consistency, 80-lines, comment correctness, spelling and curly braces police Due to the macro hell and variable placement simplifications there's even 26 bytes of .text saved: text data bss dec hex filename 25510 4153 192 29855 749f sched.o.before 25484 4153 192 29829 7485 sched.o.after [akpm@osdl.org: build fix] Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 829035fd709119d9def124a6d40b94d317573e6f Author: Paul Mackerras Date: Mon Jul 3 00:25:40 2006 -0700 [PATCH] lockdep: irqtrace subsystem, move account_system_vtime() calls into kernel/softirq.c At the moment, powerpc and s390 have their own versions of do_softirq which include local_bh_disable() and __local_bh_enable() calls. They end up calling __do_softirq (in kernel/softirq.c) which also does local_bh_disable/enable. Apparently the two levels of disable/enable trigger a warning from some validation code that Ingo is working on, and he would like to see the outer level removed. But to do that, we have to move the account_system_vtime calls that are currently in the arch do_softirq() implementations for powerpc and s390 into the generic __do_softirq() (this is a no-op for other archs because account_system_vtime is defined to be an empty inline function on all other archs). This patch does that. Signed-off-by: Paul Mackerras Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8688cfcebf09b84385b5e2c461ae08fcde8a5d18 Author: Ingo Molnar Date: Mon Jul 3 00:25:39 2006 -0700 [PATCH] lockdep: annotate forcedeth.c disable_irq() nv_do_nic_poll() is called from timer softirqs, which has interrupts enabled, but np->lock might also be taken by some other interrupt context. The driver does disable_irq() to get around this problem, so annotate the disable_irq()/enable_irq() calls for lockdep. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Ayaz Abdulla Cc: Manfred Spraul Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 479ceddd7baf3b387665c4d69a7398918b201ad0 Author: Andrew Morton Date: Mon Jul 3 00:25:37 2006 -0700 [PATCH] forcedeth: typecast cleanup Someone went nuts in there. Cc: Ayaz Abdulla Cc: Manfred Spraul Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cd11acdd8542cb0c0fa7cd86590b1ba79d7e263a Author: Arjan van de Ven Date: Mon Jul 3 00:25:36 2006 -0700 [PATCH] lockdep: annotate hostap netdev ->xmit_lock On Fri, 2006-06-30 at 15:45 -0700, Miles Lane wrote: > Okay, I rebuilt my kernel with your combo patch applied. > Then, I inserted my US Robotics USR2210 PCMCIA wifi card, > ran "pccardutil eject", popped out the card and then inserted > a Compaq iPaq wifi card. This triggered the following. > > [ INFO: possible circular locking dependency detected ] > ------------------------------------------------------- > syslogd/1886 is trying to acquire lock: > (&dev->queue_lock){-+..}, at: [] dev_queue_xmit+0x120/0x24b > > but task is already holding lock: > (&dev->_xmit_lock){-+..}, at: [] dev_queue_xmit+0x183/0x24b > > which lock already depends on the new lock. ok this appears to be hostap playing games... it has 2 network devices for one piece of hardware and one calls the other via the networking layer; there is thankfully a natural ordering between the two, so just making the slave one a separate type ought to make this work. Signed-off-by: Ingo Molnar Cc: Arjan van de Ven Cc: "John W. Linville" Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a5b5bb9a053a973c23b867738c074acb3e80c0a0 Author: Ingo Molnar Date: Mon Jul 3 00:25:35 2006 -0700 [PATCH] lockdep: annotate sk_locks Teach sk_lock semantics to the lock validator. In the softirq path the slock has mutex_trylock()+mutex_unlock() semantics, in the process context sock_lock() case it has mutex_lock()/mutex_unlock() semantics. Thus we treat sock_owned_by_user() flagged areas as an exclusion area too, not just those areas covered by a held sk_lock.slock. Effect on non-lockdep kernels: minimal, sk_lock_sock_init() has been turned into an inline function. Signed-off-by: Ingo Molnar Cc: Arjan van de Ven Cc: "David S. Miller" Cc: Herbert Xu Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 0afffc723c8041a005134099847ac2a2fd0316a0 Author: Ingo Molnar Date: Mon Jul 3 00:25:35 2006 -0700 [PATCH] lockdep: annotate on-stack completions, mmc lockdep needs to have the waitqueue lock initialized for on-stack waitqueues implicitly initialized by DECLARE_COMPLETION(). Annotate mmc_wait_for_req()'s on-stack completion accordingly. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Cc: Arjan van de Ven Cc: Russell King Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 5dd8d1e9eb8b51041505966fe96d081ecbe86efe Author: Arjan van de Ven Date: Mon Jul 3 00:25:33 2006 -0700 [PATCH] lockdep: annotate vlan net device as being a special class vlan network devices have devices nesting below it, and are a special "super class" of normal network devices; split their locks off into a separate class since they always nest. [deweerdt@free.fr: fix possible null-pointer deref] Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar Signed-off-by: Frederik Deweerdt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 663d440eaa496db903cc58be04b9b602ba45e43b Author: Ingo Molnar Date: Mon Jul 3 00:25:33 2006 -0700 [PATCH] lockdep: annotate blkdev nesting Teach special (recursive) locking code to the lock validator. Effects on non-lockdep kernels: - the introduction of the following function variants: extern struct block_device *open_partition_by_devnum(dev_t, unsigned); extern int blkdev_put_partition(struct block_device *); static int blkdev_get_whole(struct block_device *bdev, mode_t mode, unsigned flags); which on non-lockdep are the same as open_by_devnum(), blkdev_put() and blkdev_get(). - a subclass parameter to do_open(). [unused on non-lockdep] - a subclass parameter to __blkdev_put(), which is a new internal function for the main blkdev_put*() functions. [parameter unused on non-lockdep kernels, except for two sanity check WARN_ON()s] these functions carry no semantical difference - they only express object dependencies towards the lockdep subsystem. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 2b2d5493e10051694ae3a57ea6a153e3cb4d4488 Author: Ingo Molnar Date: Mon Jul 3 00:25:28 2006 -0700 [PATCH] lockdep: annotate SLAB code Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Fix initialize-locks-via-memcpy assumptions. Effects on non-lockdep kernels: the subclass nesting parameter is passed into cache_free_alien() and __cache_free(), and turns one internal kmem_cache_free() call into an open-coded __cache_free() call. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Pekka Enberg Cc: Christoph Lameter Cc: Manfred Spraul Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 897c6ff9568bcb102ffc6b465ebe1def0cba829d Author: Arjan van de Ven Date: Mon Jul 3 00:25:28 2006 -0700 [PATCH] lockdep: annotate sb ->s_umount The s_umount rwsem needs to be classified as per-superblock since it's perfectly legit to keep multiple of those recursively in the VFS locking rules. Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cf51624999e56c88154b5f7d451a265db6aabff7 Author: Ingo Molnar Date: Mon Jul 3 00:25:27 2006 -0700 [PATCH] lockdep: annotate ->s_lock Teach special (per-filesystem) locking code to the lock validator. Minimal effect on non-lockdep kernels: one extra parameter to alloc_super(). Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 91ebe2a9320db7195d1e25152b5d158fc66dc133 Author: Heiko Carstens Date: Mon Jul 3 00:25:26 2006 -0700 [PATCH] lockdep: annotate qeth driver Annotate the qeth driver which uses a private skb-queue-head that is safely used in hardirq context too. Has no effect on non-lockdep kernels. Signed-off-by: Heiko Carstens Acked-by: Ingo Molnar Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 60be6b9a41cb0da0df7a9f11486da56baebf04cd Author: Ingo Molnar Date: Mon Jul 3 00:25:26 2006 -0700 [PATCH] lockdep: annotate on-stack completions lockdep needs to have the waitqueue lock initialized for on-stack waitqueues implicitly initialized by DECLARE_COMPLETION(). Annotate on-stack completions accordingly. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 366c7f554e888e51b8395f9b07b273fe775c7ff3 Author: Ingo Molnar Date: Mon Jul 3 00:25:25 2006 -0700 [PATCH] lockdep: annotate enable_in_hardirq() Make use of local_irq_enable_in_hardirq() API to annotate places that enable hardirqs in hardirq context. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 0a9da4bd8eb30fb3f36e841c2cc72e426a17bbe2 Author: Ingo Molnar Date: Mon Jul 3 00:25:24 2006 -0700 [PATCH] lockdep: annotate 3c59x.c disable_irq() 3c59x.c's vortex_timer() function knows that vp->lock can only be used by an irq context that it disabled - and can hence take the vp->lock without disabling hardirqs. Teach lockdep about this. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Cc: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit e745165c6d235c03e9fa0e57984ca6fd3d3b2c50 Author: Ingo Molnar Date: Mon Jul 3 00:25:23 2006 -0700 [PATCH] lockdep: annotate 8390.c disable_irq() 8390.c knows that ei_local->page_lock can only be used by an irq context that it disabled - and can hence take the ->page_lock without disabling hardirqs. Teach lockdep about this. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Cc: Arjan van de Ven Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 933a2efc59513551dcfa7b814752dc581bd3c60b Author: Arjan van de Ven Date: Mon Jul 3 00:25:22 2006 -0700 [PATCH] lockdep: annotate sound/core/seq/seq_device.c The ops structure has complex locking rules, where not all ops are equal, some are subordinate on others for some complex sound cards. This requires for lockdep checking that each individual reg_mutex is considered in separation for its locking rules. Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven Cc: Ingo Molnar Cc: Takashi Iwai Cc: Jaroslav Kysela Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit d8371f0481fd1ad2701081d37815b0bb5d236b92 Author: Ingo Molnar Date: Mon Jul 3 00:25:21 2006 -0700 [PATCH] lockdep: annotate sound/core/seq/seq_ports.c Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Takashi Iwai Cc: Jaroslav Kysela Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8e7795ef6b5fd117b22b87ea7d501de2526a25f7 Author: Arjan van de Ven Date: Mon Jul 3 00:25:21 2006 -0700 [PATCH] lockdep: annotate USBFS In usbfs's fs_remove_file() function, the aim is to remove a file or directory from usbfs. This is done by first taking the i_mutex of the parent directory of this file/dir via mutex_lock(&parent->d_inode->i_mutex); and then to call either usbfs_rmdir() for a directory or usbfs_unlink() for a file. Both these functions then take the i_mutex for the to-be-removed object themselves: mutex_lock(&inode->i_mutex); This is a classical parent->child locking order relationship that the VFS uses all over the place; the VFS locking rule is "you need to take the parent first". This patch annotates the usbfs code to make this explicit and thus informs the lockdep code that those two locks indeed have this relationship. The rules for unlink that we already use in the VFS for unlink are to use I_MUTEX_PARENT for the parent directory, and a normal mutex for the file itself; this patch follows that convention. Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar Cc: Greg KH Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 5c81a4197de38411fe3e27f8593fff73a5d6b868 Author: Arjan van de Ven Date: Mon Jul 3 00:25:20 2006 -0700 [PATCH] lockdep: annotate the quota code The quota code plays interesting games with the lock ordering; to quote Jan: | i_mutex of inode containing quota file is acquired after all other | quota locks. i_mutex of all other inodes is acquired before quota | locks. Quota code makes sure (by resetting inode operations and | setting special flag on inode) that noone tries to enter quota code | while holding i_mutex on a quota file... The good news is that all of this special case i_mutex grabbing happens in the (per filesystem) low level quota write function. For this special case we need a new I_MUTEX_* nesting level, since this just entirely outside any of the regular VFS locking rules for i_mutex. I trust Jan on his blue eyes that this is not ever going to deadlock; and based on that the patch below is what it takes to inform lockdep of these very interesting new locking rules. The new locking rule for the I_MUTEX_QUOTA nesting level is that this is the deepest possible level of nesting for i_mutex, and that this only should be used in quota write (and possibly read) function of filesystems. This makes the lock ordering of the I_MUTEX_* levels: I_MUTEX_PARENT -> I_MUTEX_CHILD -> I_MUTEX_NORMAL -> I_MUTEX_QUOTA Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven Acked-by: Ingo Molnar Cc: Jan Kara Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 59345374742ee6673c2d04b0fa8c888e881b7209 Author: Ingo Molnar Date: Mon Jul 3 00:25:18 2006 -0700 [PATCH] lockdep: annotate NTFS locking rules NTFS uses lots of type-opaque objects which acquire their true identity runtime - so the lock validator needs to be helped in a couple of places to figure out object types. Many thanks to Anton Altaparmakov for giving lots of explanations about NTFS locking rules. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Anton Altaparmakov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit c6573c2904231279de0584787d6214f19a128d0b Author: Arjan van de Ven Date: Mon Jul 3 00:25:16 2006 -0700 [PATCH] lockdep: annotate sunrpc code Add i_mutex ordering annotations to the sunrpc rpc_pipe code. This code has 3 levels of i_mutex hierarchy in some cases: parent dir, client dir and file inside client dir; the i_mutex ordering is I_MUTEX_PARENT -> I_MUTEX_CHILD -> I_MUTEX_NORMAL This patch applies this ordering annotation to the various functions. This is in line with the VFS expected ordering where it is always OK to lock a child after locking a parent; the sunrpc code is very diligent in doing this correctly. Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar Cc: Trond Myklebust Cc: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit ad33945175bed649ca5fe0881269db005bbb449a Author: Ingo Molnar Date: Mon Jul 3 00:25:15 2006 -0700 [PATCH] lockdep: annotate ->mmap_sem Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit d378834840907326ac9d448056d957d13cc3718f Author: Ingo Molnar Date: Mon Jul 3 00:25:14 2006 -0700 [PATCH] lockdep: annotate ieee1394 skb-queue-head locking ieee1394 reuses the skb infrastructure of the networking code, and uses two skb-head queues: ->pending_packet_queue and hpsbpkt_queue. The latter is used in the usual fashion: processed from a kernel thread. The other one, ->pending_packet_queue is also processed from hardirq context (f.e. in hpsb_bus_reset()), which is not what the networking code usually does (which completes from softirq or process context). This locking assymetry can be totally correct if done carefully, but it can also be dangerous if networking helper functions are reused, which could assume traditional networking use. It would probably be more robust to push this completion into a workqueue - but technically the code can be 100% correct, and lockdep has to be taught about it. The solution is to split the ->pending_packet_queue skb-head->lock class from the networking lock-class by using a private lock-validator key. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Cc: Stefan Richter Cc: Jody McIntyre Cc: Ben Collins Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit c63661848581a9842dfc72d9a400285dd284fc47 Author: Ingo Molnar Date: Mon Jul 3 00:25:13 2006 -0700 [PATCH] lockdep: annotate bh_lock_sock() Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: "David S. Miller" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a09785a2414afb261d9f719d544742af4300df22 Author: Ingo Molnar Date: Mon Jul 3 00:25:12 2006 -0700 [PATCH] lockdep: annotate af_unix locking Teach special (recursive) locking code to the lock validator. Also splits af_unix's sk_receive_queue.lock class from the other networking skb-queue locks. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: "David S. Miller" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit da21f24dd73954c2ed0cd39a698e2c9916c05d71 Author: Ingo Molnar Date: Mon Jul 3 00:25:12 2006 -0700 [PATCH] lockdep: annotate sock_lock_init() Teach special (multi-initialized, per-address-family) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: "David S. Miller" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 543655244866b8ec648fea1eb9c32a35ffba5721 Author: Ingo Molnar Date: Mon Jul 3 00:25:11 2006 -0700 [PATCH] lockdep: annotate hrtimer base locks Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit fcb993712f231a4faea8393513d1276170679107 Author: Ingo Molnar Date: Mon Jul 3 00:25:10 2006 -0700 [PATCH] lockdep: annotate scheduler runqueue locks Teach per-CPU runqueue locks and recursive locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit d730e882a15c38de02b63a063be636b2ff9e9ed1 Author: Ingo Molnar Date: Mon Jul 3 00:25:10 2006 -0700 [PATCH] lockdep: annotate timer base locks Split the per-CPU timer base locks up into separate lock classes, because they are used recursively. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 06825ba3553151eea24206bc53d4fc3de49e0ab1 Author: Ingo Molnar Date: Mon Jul 3 00:25:09 2006 -0700 [PATCH] lockdep: annotate skb_queue_head_init Teach special (multi-initialized) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: "David S. Miller" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 3aceafc1e2596f1c2c4e053126561f00b68e3a1a Author: Arjan van de Ven Date: Mon Jul 3 00:25:08 2006 -0700 [PATCH] lockdep: annotate serio The PS/2 code has a natural device order and there is a one level recursion in this device order in terms of the cmd_mutex; annotate this explicit recursion as ok. Has no effect on non-lockdep kernels. Signed-off-by: Arjan van de Ven Cc: Dmitry Torokhov Cc: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit f20dc5f7c1adf1c4b68b7672d6f2002cb824e636 Author: Ingo Molnar Date: Mon Jul 3 00:25:08 2006 -0700 [PATCH] lockdep: annotate mm Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit eb4542b98c81e22e08587b747b21986a45360999 Author: Ingo Molnar Date: Mon Jul 3 00:25:07 2006 -0700 [PATCH] lockdep: annotate waitqueues Create one lock class for all waitqueue locks in the kernel. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 243c7621aac4ed1aa79524c9a1cecf7c05a28124 Author: Ingo Molnar Date: Mon Jul 3 00:25:06 2006 -0700 [PATCH] lockdep: annotate genirq Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8b8f319fc7f4ab59f567d6a401a62659b3d37007 Author: Ingo Molnar Date: Mon Jul 3 00:25:05 2006 -0700 [PATCH] lockdep: annotate futex Teach special (recursive) locking code to the lock validator. Introduces double_lock_hb() to unify double- hash-bucket-lock taking. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit f2eace23e924bd3f05aedea4fc505eb5508d2d93 Author: Ingo Molnar Date: Mon Jul 3 00:25:05 2006 -0700 [PATCH] lockdep: annotate i_mutex Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a90b9c05df3c1e58eaedc28795d0f5abd896c098 Author: Ingo Molnar Date: Mon Jul 3 00:25:04 2006 -0700 [PATCH] lockdep: annotate dcache Teach special (recursive) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 13e83599d282ddfd544600df9db5ab343ac4662f Author: Ingo Molnar Date: Mon Jul 3 00:25:03 2006 -0700 [PATCH] lockdep: annotate serial Teach special (dual-initialized) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Russell King Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit d8aa905b429700e8b6b6b301a8ac2d4a24f2c19b Author: Ingo Molnar Date: Mon Jul 3 00:25:02 2006 -0700 [PATCH] lockdep: annotate direct io Teach special (rwsem-in-irq) locking code to the lock validator. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Russell King Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 2b105ff9cccea5533ad518bb37dc9b43a322f7b1 Author: Ingo Molnar Date: Mon Jul 3 00:25:02 2006 -0700 [PATCH] lockdep: enable on s390 Enable LOCKDEP_SUPPORT on s390. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 1e9505279a8a2303d8feef4e464e6f48ea644f03 Author: Ingo Molnar Date: Mon Jul 3 00:25:01 2006 -0700 [PATCH] lockdep: enable on x86_64 Enable LOCKDEP_SUPPORT on x86_64. Signed-off-by: Ingo Molnar Cc: Andi Kleen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cbbf437a8de3192739334eb8cae7c9acee38590f Author: Ingo Molnar Date: Mon Jul 3 00:25:00 2006 -0700 [PATCH] lockdep: enable on i386 Enable LOCKDEP_SUPPORT on i386. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8e9ccae6ee2bb19b7752b7d412e1bbbaf28e7fe1 Author: Heiko Carstens Date: Mon Jul 3 00:25:00 2006 -0700 [PATCH] lockdep: s390 turn validator off in machine-check handler Machine checks on s390 are always enabled (except in the machine check handler itself). Therefore use lockdep_off()/on() in the machine check handler to avoid deadlocks in the lock validator. Signed-off-by: Heiko Carstens Acked-by: Ingo Molnar Cc: Martin Schwidefsky Cc: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 6205120044bb75ca06019491d1aa0e727fdd35be Author: Ingo Molnar Date: Mon Jul 3 00:24:59 2006 -0700 [PATCH] lockdep: fix RT_HASH_LOCK_SZ On lockdep we have a quite big spinlock_t, so keep the size down. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: "David S. Miller" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a0f1ccfd8d37457a6d8a9e01acebeefcdfcc306e Author: Ingo Molnar Date: Mon Jul 3 00:24:58 2006 -0700 [PATCH] lockdep: do not recurse in printk Make printk()-ing from within the lock validation code safer by using the lockdep-recursion counter. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 3047e99ede366298c6233d1870d12a520d4d92f3 Author: Ingo Molnar Date: Mon Jul 3 00:24:57 2006 -0700 [PATCH] lockdep: x86 smp alternatives workaround Disable SMP alternatives fixups (the patching in of NOPs on 1-CPU systems) if the lock validator is enabled: there is a binutils section handling bug that causes corrupted instructions when UP instructions are patched in. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 2148270cd2ebe0d05e4289b7c77b1435c45481bf Author: Ingo Molnar Date: Mon Jul 3 00:24:57 2006 -0700 [PATCH] lockdep: x86_64 early init x86_64 uses spinlocks very early - earlier than start_kernel(). So call lockdep_init() from the arch setup code. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Andi Kleen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8c64580d522542e50f2ba689316128b7fbae497b Author: Ingo Molnar Date: Mon Jul 3 00:24:56 2006 -0700 [PATCH] lockdep: print all lock classes on SysRQ-D Print all lock-classes on SysRq-D. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 4d9f34ad366a7935be3d6e7cca90805e6b7a692d Author: Ingo Molnar Date: Mon Jul 3 00:24:55 2006 -0700 [PATCH] lockdep: kconfig Offer the following lock validation options: CONFIG_PROVE_LOCKING Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit ef5d4707b9065c0cf8a69fa3716893f3b75201ba Author: Ingo Molnar Date: Mon Jul 3 00:24:55 2006 -0700 [PATCH] lockdep: prove mutex locking correctness Use the lock validator framework to prove mutex locking correctness. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8a25d5debff2daee280e83e09d8c25d67c26a972 Author: Ingo Molnar Date: Mon Jul 3 00:24:54 2006 -0700 [PATCH] lockdep: prove spinlock rwlock locking correctness Use the lock validator framework to prove spinlock and rwlock locking correctness. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 4ea2176dfa714882e88180b474e4cbcd888b70af Author: Ingo Molnar Date: Mon Jul 3 00:24:53 2006 -0700 [PATCH] lockdep: prove rwsem locking correctness Use the lock validator framework to prove rwsem locking correctness. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a8f24a3978c5f82419e1c90dc90460731204f46f Author: Ingo Molnar Date: Mon Jul 3 00:24:52 2006 -0700 [PATCH] lockdep: procfs Lock validator /proc/lockdep and /proc/lockdep_stats support. (FIXME: should go into debugfs) Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit f3e97da38e1d69d24195d76f96b912323f5ee30c Author: Ingo Molnar Date: Mon Jul 3 00:24:52 2006 -0700 [PATCH] lockdep: design docs Lock validator design documentation. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 6c9076ec9cd448f43bbda871352a7067f456ee26 Author: Ingo Molnar Date: Mon Jul 3 00:24:51 2006 -0700 [PATCH] lockdep: allow read_lock() recursion of same class From: Ingo Molnar lockdep so far only allowed read-recursion for the same lock instance. This is enough in the overwhelming majority of cases, but a hostap case triggered and reported by Miles Lane relies on same-class different-instance recursion. So we relax the restriction on read-lock recursion. (This change does not allow rwsem read-recursion, which is still forbidden.) Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit fbb9ce9530fd9b66096d5187fa6a115d16d9746c Author: Ingo Molnar Date: Mon Jul 3 00:24:50 2006 -0700 [PATCH] lockdep: core Do 'make oldconfig' and accept all the defaults for new config options - reboot into the kernel and if everything goes well it should boot up fine and you should have /proc/lockdep and /proc/lockdep_stats files. Typically if the lock validator finds some problem it will print out voluminous debug output that begins with "BUG: ..." and which syslog output can be used by kernel developers to figure out the precise locking scenario. What does the lock validator do? It "observes" and maps all locking rules as they occur dynamically (as triggered by the kernel's natural use of spinlocks, rwlocks, mutexes and rwsems). Whenever the lock validator subsystem detects a new locking scenario, it validates this new rule against the existing set of rules. If this new rule is consistent with the existing set of rules then the new rule is added transparently and the kernel continues as normal. If the new rule could create a deadlock scenario then this condition is printed out. When determining validity of locking, all possible "deadlock scenarios" are considered: assuming arbitrary number of CPUs, arbitrary irq context and task context constellations, running arbitrary combinations of all the existing locking scenarios. In a typical system this means millions of separate scenarios. This is why we call it a "locking correctness" validator - for all rules that are observed the lock validator proves it with mathematical certainty that a deadlock could not occur (assuming that the lock validator implementation itself is correct and its internal data structures are not corrupted by some other kernel subsystem). [see more details and conditionals of this statement in include/linux/lockdep.h and Documentation/lockdep-design.txt] Furthermore, this "all possible scenarios" property of the validator also enables the finding of complex, highly unlikely multi-CPU multi-context races via single single-context rules, increasing the likelyhood of finding bugs drastically. In practical terms: the lock validator already found a bug in the upstream kernel that could only occur on systems with 3 or more CPUs, and which needed 3 very unlikely code sequences to occur at once on the 3 CPUs. That bug was found and reported on a single-CPU system (!). So in essence a race will be found "piecemail-wise", triggering all the necessary components for the race, without having to reproduce the race scenario itself! In its short existence the lock validator found and reported many bugs before they actually caused a real deadlock. To further increase the efficiency of the validator, the mapping is not per "lock instance", but per "lock-class". For example, all struct inode objects in the kernel have inode->inotify_mutex. If there are 10,000 inodes cached, then there are 10,000 lock objects. But ->inotify_mutex is a single "lock type", and all locking activities that occur against ->inotify_mutex are "unified" into this single lock-class. The advantage of the lock-class approach is that all historical ->inotify_mutex uses are mapped into a single (and as narrow as possible) set of locking rules - regardless of how many different tasks or inode structures it took to build this set of rules. The set of rules persist during the lifetime of the kernel. To see the rough magnitude of checking that the lock validator does, here's a portion of /proc/lockdep_stats, fresh after bootup: lock-classes: 694 [max: 2048] direct dependencies: 1598 [max: 8192] indirect dependencies: 17896 all direct dependencies: 16206 dependency chains: 1910 [max: 8192] in-hardirq chains: 17 in-softirq chains: 105 in-process chains: 1065 stack-trace entries: 38761 [max: 131072] combined max dependencies: 2033928 hardirq-safe locks: 24 hardirq-unsafe locks: 176 softirq-safe locks: 53 softirq-unsafe locks: 137 irq-safe locks: 59 irq-unsafe locks: 176 The lock validator has observed 1598 actual single-thread locking patterns, and has validated all possible 2033928 distinct locking scenarios. More details about the design of the lock validator can be found in Documentation/lockdep-design.txt, which can also found at: http://redhat.com/~mingo/lockdep-patches/lockdep-design.txt [bunk@stusta.de: cleanups] Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Adrian Bunk Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cae2ed9aa573415c6e5de9a09b7ff0d74af793bc Author: Ingo Molnar Date: Mon Jul 3 00:24:48 2006 -0700 [PATCH] lockdep: locking API self tests Introduce DEBUG_LOCKING_API_SELFTESTS, which uses the generic lock debugging code's silent-failure feature to run a matrix of testcases. There are 210 testcases currently: +----------------------- | Locking API testsuite: +------------------------------+------+------+------+------+------+------+ | spin |wlock |rlock |mutex | wsem | rsem | -------------------------------+------+------+------+------+------+------+ A-A deadlock: ok | ok | ok | ok | ok | ok | A-B-B-A deadlock: ok | ok | ok | ok | ok | ok | A-B-B-C-C-A deadlock: ok | ok | ok | ok | ok | ok | A-B-C-A-B-C deadlock: ok | ok | ok | ok | ok | ok | A-B-B-C-C-D-D-A deadlock: ok | ok | ok | ok | ok | ok | A-B-C-D-B-D-D-A deadlock: ok | ok | ok | ok | ok | ok | A-B-C-D-B-C-D-A deadlock: ok | ok | ok | ok | ok | ok | double unlock: ok | ok | ok | ok | ok | ok | bad unlock order: ok | ok | ok | ok | ok | ok | --------------------------------------+------+------+------+------+------+ recursive read-lock: | ok | | ok | --------------------------------------+------+------+------+------+------+ non-nested unlock: ok | ok | ok | ok | --------------------------------------+------+------+------+ hard-irqs-on + irq-safe-A/12: ok | ok | ok | soft-irqs-on + irq-safe-A/12: ok | ok | ok | hard-irqs-on + irq-safe-A/21: ok | ok | ok | soft-irqs-on + irq-safe-A/21: ok | ok | ok | sirq-safe-A => hirqs-on/12: ok | ok | ok | sirq-safe-A => hirqs-on/21: ok | ok | ok | hard-safe-A + irqs-on/12: ok | ok | ok | soft-safe-A + irqs-on/12: ok | ok | ok | hard-safe-A + irqs-on/21: ok | ok | ok | soft-safe-A + irqs-on/21: ok | ok | ok | hard-safe-A + unsafe-B #1/123: ok | ok | ok | soft-safe-A + unsafe-B #1/123: ok | ok | ok | hard-safe-A + unsafe-B #1/132: ok | ok | ok | soft-safe-A + unsafe-B #1/132: ok | ok | ok | hard-safe-A + unsafe-B #1/213: ok | ok | ok | soft-safe-A + unsafe-B #1/213: ok | ok | ok | hard-safe-A + unsafe-B #1/231: ok | ok | ok | soft-safe-A + unsafe-B #1/231: ok | ok | ok | hard-safe-A + unsafe-B #1/312: ok | ok | ok | soft-safe-A + unsafe-B #1/312: ok | ok | ok | hard-safe-A + unsafe-B #1/321: ok | ok | ok | soft-safe-A + unsafe-B #1/321: ok | ok | ok | hard-safe-A + unsafe-B #2/123: ok | ok | ok | soft-safe-A + unsafe-B #2/123: ok | ok | ok | hard-safe-A + unsafe-B #2/132: ok | ok | ok | soft-safe-A + unsafe-B #2/132: ok | ok | ok | hard-safe-A + unsafe-B #2/213: ok | ok | ok | soft-safe-A + unsafe-B #2/213: ok | ok | ok | hard-safe-A + unsafe-B #2/231: ok | ok | ok | soft-safe-A + unsafe-B #2/231: ok | ok | ok | hard-safe-A + unsafe-B #2/312: ok | ok | ok | soft-safe-A + unsafe-B #2/312: ok | ok | ok | hard-safe-A + unsafe-B #2/321: ok | ok | ok | soft-safe-A + unsafe-B #2/321: ok | ok | ok | hard-irq lock-inversion/123: ok | ok | ok | soft-irq lock-inversion/123: ok | ok | ok | hard-irq lock-inversion/132: ok | ok | ok | soft-irq lock-inversion/132: ok | ok | ok | hard-irq lock-inversion/213: ok | ok | ok | soft-irq lock-inversion/213: ok | ok | ok | hard-irq lock-inversion/231: ok | ok | ok | soft-irq lock-inversion/231: ok | ok | ok | hard-irq lock-inversion/312: ok | ok | ok | soft-irq lock-inversion/312: ok | ok | ok | hard-irq lock-inversion/321: ok | ok | ok | soft-irq lock-inversion/321: ok | ok | ok | hard-irq read-recursion/123: ok | soft-irq read-recursion/123: ok | hard-irq read-recursion/132: ok | soft-irq read-recursion/132: ok | hard-irq read-recursion/213: ok | soft-irq read-recursion/213: ok | hard-irq read-recursion/231: ok | soft-irq read-recursion/231: ok | hard-irq read-recursion/312: ok | soft-irq read-recursion/312: ok | hard-irq read-recursion/321: ok | soft-irq read-recursion/321: ok | --------------------------------+-----+---------------- Good, all 210 testcases passed! | --------------------------------+ Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 1f194a4c393103ac925001d7e04b05fbb122580d Author: Heiko Carstens Date: Mon Jul 3 00:24:46 2006 -0700 [PATCH] lockdep: irqtrace subsystem, s390 support irqtrace support for s390. Signed-off-by: Heiko Carstens Signed-off-by: Ingo Molnar Cc: Martin Schwidefsky Cc: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 6375e2b74c620794e1a27a26e4338aec2e41346a Author: Ingo Molnar Date: Mon Jul 3 00:24:45 2006 -0700 [PATCH] lockdep: irqtrace cleanup of include/asm-x86_64/irqflags.h Clean up the x86-64 irqflags.h file: - macro => inline function transformation - simplifications - style fixes Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Andi Kleen Cc: Jan Beulich Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 2601e64d262ee5ed4d4a5737345803800d9c4db3 Author: Ingo Molnar Date: Mon Jul 3 00:24:45 2006 -0700 [PATCH] lockdep: irqtrace subsystem, x86_64 support Add irqflags-tracing support to x86_64. [akpm@osdl.org: build fix] Signed-off-by: Ingo Molnar Cc: Andi Kleen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit c8558fcdecb1f920df8050be4f2d5f499060030e Author: Ingo Molnar Date: Mon Jul 3 00:24:44 2006 -0700 [PATCH] lockdep: irqtrace cleanup of include/asm-i386/irqflags.h Clean up the x86 irqflags.h file: - macro => inline function transformation - simplifications - style fixes Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 55f327fa9e876758491a82af7491104f1cc3fc4d Author: Ingo Molnar Date: Mon Jul 3 00:24:43 2006 -0700 [PATCH] lockdep: irqtrace subsystem, i386 support Add irqflags-tracing support to i386. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 55df314fbdb44c20fa7a5112d16546ee970c1d76 Author: Ingo Molnar Date: Mon Jul 3 00:24:43 2006 -0700 [PATCH] lockdep: irqtrace subsystem, docs Add Documentation/irqflags-tracing.txt. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit de30a2b355ea85350ca2f58f3b9bf4e5bc007986 Author: Ingo Molnar Date: Mon Jul 3 00:24:42 2006 -0700 [PATCH] lockdep: irqtrace subsystem, core Accurate hard-IRQ-flags and softirq-flags state tracing. This allows us to attach extra functionality to IRQ flags on/off events (such as trace-on/off). Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 5bdc9b447c0076f494a56fdcd93ee8c5e78a2afd Author: Heiko Carstens Date: Mon Jul 3 00:24:41 2006 -0700 [PATCH] lockdep: stacktrace subsystem, s390 support stacktrace interface for s390 as needed by lock validator. [clg@fr.ibm.com: build fix] Signed-off-by: Heiko Carstens Acked-by: Ingo Molnar Cc: Martin Schwidefsky Cc: Arjan van de Ven Signed-off-by: Cedric Le Goater Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 21b32bbff950771f196da91011249fa05fa83b32 Author: Ingo Molnar Date: Mon Jul 3 00:24:40 2006 -0700 [PATCH] lockdep: stacktrace subsystem, x86_64 support Framework to generate and save stacktraces quickly, without printing anything to the console. x86_64 support. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Cc: Andi Kleen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 4a7c7197817e7180f56110334d961f4aa6ac69cb Author: Ingo Molnar Date: Mon Jul 3 00:24:39 2006 -0700 [PATCH] lockdep: stacktrace subsystem, i386 support Framework to generate and save stacktraces quickly, without printing anything to the console. i386 support. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cbbd1fa72d22896332301ca7e6b7164284be105c Author: Heiko Carstens Date: Mon Jul 3 00:24:38 2006 -0700 [PATCH] lockdep: s390 CONFIG_FRAME_POINTER support CONFIG_FRAME_POINTER support for s390. Signed-off-by: Heiko Carstens Acked-by: Ingo Molnar Cc: Martin Schwidefsky Cc: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8637c09901049f061b94f684915d4f18ecf91d79 Author: Ingo Molnar Date: Mon Jul 3 00:24:38 2006 -0700 [PATCH] lockdep: stacktrace subsystem, core Framework to generate and save stacktraces quickly, without printing anything to the console. Signed-off-by: Ingo Molnar Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit f0a5c315eb266edc608a29971bb4ff1a3025c58f Author: Ingo Molnar Date: Mon Jul 3 00:24:37 2006 -0700 [PATCH] lockdep: i386 remove multi entry backtraces Remove CONFIG_STACK_BACKTRACE_COLS. This feature didnt work out: instead of making kernel debugging more efficient, it produces much harder to read stacktraces! Check out this trace for example: http://static.flickr.com/47/158326090