Summary of changes from v2.6.6 to v2.6.7 ============================================ input: Chips passing MUX detection incorrectly due to USB Legacy support report MUX version 10.12, not 12.10. Fixed. input: Profusion/ServerWorks chipset workaround in i8042.c for Ingo Molnar. Fixed ALSA aureal driver compilation - wrong and missing PCI IDs input: Fix emulation of mouse reset (0xff) command. [PATCH] kill acient compat cruft from acenic Kills lots of really old cruft and adds a little cruft to actually make the driver work with recent 2.4 again. [PATCH] convert acenic to pci_driver API [PATCH] 8139too: more useful debug info for tx_timeout Hi, I think this patch is useful for looking whether it's the real driver bug or other bug. What do you think of this? If ok, please apply. -- OGAWA Hirofumi [PATCH] 8139too: more useful debug info for tx_timeout /* disable Tx ASAP, if not already */ tmp8 = RTL_R8 (ChipCmd); if (tmp8 & CmdTxEnb) RTL_W8 (ChipCmd, CmdRxEnb); The above will clear the Tx Descs. So, this prints the debugging info before rtl8139_tx_timeout() does it. And IntrStatus etc. also prints anytime for the debug. - Converted Linux drivers to initialize DRM instances based on PCI IDs, not just a single instance. The PCI ID lists include a driver private field, which may be used by drivers for chip family or other information. Based on work by jonsmirl and Eric Anholt. I've left out the PCI device naming for this patch as that might be a bit controversial. clean up tdfx to look like everyone else.. From: Eric Anholt: - Move IRQ functions from drm_dma.h to new drm_irq.h and disentangle them from __HAVE_DMA. This will be useful for adding vblank sync support to sis and tdfx. Rename dma_service to irq_handler, which is more accurately what it is. - Fix the #if _HAVE_DMA_IRQ in radeon, r128, mga, i810, i830, gamma to have the right number of underscores. This may have been a problem in the case that the server died without doing its DRM_IOCTL_CONTROL to uninit left gamma_dma.c out of last changeset - Add DRM_GET_PRIV_WITH_RETURN macro. This can be used in shared code to get the drm_file_t * based on the filp passed in ioctl handlers. From Eric Anholt: Introduce a new ioctl, DRM_IOCTL_SET_VERSION. This ioctl allows the server or client to notify the DRM that it expects a certain version of the device dependent or device independent interface. If the major doesn't match or minor is too large, EINVAL is returned. A major of -1 means that the requestor doesn't care about that portion of the interface. The ioctl returns the actual versions in the same struct. From: Michel Daenzer: Memory layout transition: * the 2D driver initializes MC_FB_LOCATION and related registers sanely * the DRM deduces the layout from these registers * clients use the new SETPARAM ioctl to tell the DRM where they think the framebuffer is located in the card's address space * the DRM uses all this information to check client state and fix it up if necessary This is a prerequisite for things like direct rendering with IGP chips and video capturing. From Eric Anholt: some cleanups from AlanH: - Tie the DRM to a specific device: setunique no longer succeeds when given a busid that doesn't correspond to the device the DRM is attached to. This is a breaking of backwards-compatibility only for the multiple-DRI-head case with X Servers that don't use interface 1.1. - Move irq_busid to drm_irq.h and make it only return the IRQ for the current device. Retains compatibility with previous X Servers, cleans up unnecessary code. This means no irq_busid on !__HAVE_IRQ, but can be changed if necessary. - Bump interface version to 1.2. This version when set signifies that the control ioctl should ignore the irq number passed in and enable the interrupt handler for the attached device. Otherwise it errors out when the passed-in irq is not equal to the device's. - Store the highest version the interface has been set to in the device. From Eric Anholt: Return EBUSY when attempting to addmap a DRM_SHM area with a lock in it if dev->lock.hw_lock is already set. This fixes the case of two X Servers running on the same head on different VTs with interface 1.1, by making the 2nd head fail to inizialize like before. From Eric Anholt + Jon Smirl: Don't ioremap the framebuffer area. The ioremapped area wasn't used by anything. From Michel Daenzer: Adapt to nopage() prototype change in Linux 2.6.1. Reviewed by: Arjan van de Ven , additional feedback from William Lee Irwin III and Linus Torvalds. More differentiated error codes for DRM(agp_acquire) drm_ctx_dtor.patch Submitted by: Erdi Chen Miscellaneous changes from DRM CVS radeon_drm.h: missing define from previous checkin * Introduce COMMIT_RING() as in radeon DRM, stop using error prone writeback for ring read pointer (Paul Mackerras) * Get rid of some superfluous stuff, minor fixes From Jon Smirl: This code allows the mesa drivers to use a single definition of the DRM sarea/IOCTLS [AGPGART] If ati_create_gatt_pages() fails, don't propagate an address we've freed. [PATCH] fealnx #0: replace dev->base_addr with ioaddr [PATCH] fealnx #1: replace magic constants with enums [PATCH] fealnx #2: add 'static'; fix wrapped comment [PATCH] fealnx #3: fix pointer substraction bug [PATCH] fealnx #4: stop doing stop_nic_rx/writel(np->crvalue) in reset_rx_descriptors this can inadvertently (re)enable tx and/or rx. [PATCH] fealnx #5: introduce stop_nic_rxtx(), use it where makes sense [PATCH] fealnx #6: Francois' fixes for low memory handling; remove free_one_rx_descriptor (not used anymore) [PATCH] fealnx #7: Garzik fix (IIRC): add locking to tx_timeout [PATCH] fealnx #8: rework error handling Add reset timer, fire it 1/2 sec after 'Too much work in interrupt' Move reset code from tx_timeout into two separate routines: reset_and_disable_rxtx() and enable_rxtx() New function reset_tx_descriptors(): clean up tx ring after tx_timeout. tx_timeout now does: reset_and_disable_rxtx() reset_tx_descriptors() enable_rxtx() netif_wake_queue() Absense of netif_wake_queue() call was probably the cause of tx_timeout() stalling all future tx. Remove stop_nic_tx(), not used anymore [PATCH] fealnx #9: fix locking for set_rx_mode [PATCH] fealnx #10: replace local delay functions with udelay [PATCH] fealnx #11: cleanup and coding style [PATCH] pcnet32 add register dump capability At the next opportunity to add new code to 2.6.6, please apply the following patch to include the capability to dump chip registers. Ethtool -d support. [PATCH] pcnet32 timer to free tx skbs for 79C971/972 At the next opportunity to add new code to 2.6.6, please apply the following: This patch uses an on-chip timer to free completed transmit skb's for the 79C971 and 972 versions which currently will leave completed transmit skb's on the transmit ring until new transmit traffic occurs. define an empty driver pci ids for ffb driver [PATCH] Cleanups for b44 Hi! During some unrelated work I was confused by b44_init_hw. Its return is checked in _open() but nowhere else. I started adding missing checks, but then I found why its so: it only ever returns 0. So this turns it into void. Killed #if 0-ed piece of code and fixed indentation at one point. Please apply, Pavel [libata sata_sis] add new PCI id Also remove constant from linux/pci_ids.h. [libata] Promise driver split part 1: clone to sx4 Clone sata_promise to sata_sx4. [libata] Promise driver split part 2: remove SX4 code from sata_promise [libata] Promise driver split part 3: remove TX2/4 code from sata_sx4 [libata] Promise driver split part 4: common header convert DRM to use pci device structures on Linux, move pci ids into a separate include file (this is auto-generated from the DRM tree) drmP.h: remove unused structure [CPUFREQ] powernow-k8 cpuid changes. cpuid changes to support new processors that will be coming out in the future. Also works around a processor that we have released to the field that can have an erroneous cpuid value. From paul.devriendt@amd.com [CPUFREQ] powernow-k8 ignore invalid p-states. From paul.devriendt@amd.com [CPUFREQ] powernow-k8: prevent BIOSs offering a vid of 0x1f, which means off. From paul.devriendt@amd.com Input: synaptics driver cleanup - pack all button data in 2 bytes instead of 48 - adjust the way we extract button data - query extended capabilities if SYN_EXT_CAP_REQUESTS >= 1 (was == 1) according to Synaptics' addendum to the interfacing guide - do not announce or report BTN_BACK/BTN_FORWARD unless touchpad has SYN_CAP_FOUR_BUTTON in its capability flags Input: support Synaptics touchpads that have separate middle button Input: pass maximum allowed protocol to psmouse_extensions instead of accessing psmouse_max_proto directly allowing to avoid changing the global parameter when synaptics initialization fails Input: Change spurious ACK warning in atkbd to soften accusation against XFree86 Input: fix trailing whitespace in atkbd Input: remove unneeded fields in atkbd structure, convert to bitfields Input: Do not generate events from atkbd until keyboard is completely initialized. It should suppress messages about suprious NAKs when controller's timeout is longer than one in atkbd Input: when getting a new device announce (0xAA 0x00) in psmouse try reconnecting instead of rescanning to preserve (if possible) the same input device. Input: move "reconnect after so many errors" handling from synaptics driver to psmouse so it can be used by other PS/2 protcol drivers (but so far only synaptics knows how to validate incoming data) Input: add protocol_handler to psmouse structure to ease adding new protocols to psmouse module Input: add psmouse_sliced_command (passes extended commands encoded with 0xE8 to the mouse) and use it in Synaptics and Logitech drivers Input: do not modify device's properties when probing for protocol extensions on reconnect as it may interfere with reconnect process Input: allow disabling legacy psaux device even for non-embedded systems Input: serio trailing whitespace fixes Input: make serio open and close methods optional Input: trailing whitespace fixes Input: - move set_abs_params from synaptics driver to input and rename to input_set_abs_params - convert input_report_* macros into inline functions - make use of set_abs_params in touchscreen drivers [PATCH] USB: fix usbfs iso interval problem In 2.6, ISO transfers on USB require a value for urb->interval ... which usbfs didn't provide (until this patch), or let user mode drivers specify. This patch initializes the urb->interval from the endpoint's descriptor, so ISO transfers should now work from userspace. It also fixes a related problem for interrupt transfers. [PATCH] USB: root hubs can report remote wakeup feature The patch lets HCDs report the root hub remote wakeup feature to usbcore through config descriptors, and lets usbcore say whether or not remote wakeup (of host from sleep, by devices) should be enabled. Both OHCI and UHCI HCDs have some remote wakeup support already; I'm not too sure how well it works. Given (separate) patches, their root hubs can start to act more like other hubs in this area too. That'll make it easier to start using USB suspend mode. [PATCH] USB: Remove unusual_devs entries for Minolta DiMAGE 7, 7Hi It looks safe to conclude that the unusual_devs.h entries for the Minolta DiMAGE 7x cameras aren't needed. (Michael has tested the 7Hi and it's definitely unnecessary.) The two other DiMAGE entries probably aren't needed either, but we don't have any evidence of that so I'm leaving them. [PATCH] USB: unusual_devs.h update On Tue, 20 Apr 2004, Damian Ivereigh wrote: > Here is the output of dmesg when plugging in an IBM USB MemKey > > usb-storage: This device (0a16,8888,0100 S 06 P 50) has unneeded SubClass and Protocol entries in unusual_devs.h > Please send a copy of this message to Thank you for sending this in. Greg and Pete, here's the patch. [PATCH] USB: Implement endpoint_disable() for UHCI This patch implements the endpoint_disable method for the UHCI driver, as you requested a while back. It guarantees that during unbinding events (disconnect, configuration change, rmmod) the UHCI driver will have finished using every URB for the interface being unbound. It doesn't quite guarantee that the completion handlers will have finished running, but it would take a pretty unlikely race to violate that assumption. (I think it's the same with the OHCI and EHCI drivers.) Despite the patch numbering this one applies _after_ as249, which is a more important bugfix. [PATCH] USB: Eliminate dead code from the UHCI driver I'm not sure what this piece of code is doing in the UHCI driver. It looks like someone envisioned queuing several URBs for the same endpoint simultaneously. Anyway, the driver can't do that and this code can never run. [PATCH] USB: fix devio compiler warnings created by previous patch. [PATCH] USB: usbtest, smp unlink modes Handle some SMP-visible unlink states better. [PATCH] USB: re-factor enumeration logic This is an update to some patches from the December/January timeframe, which will help sort out some of the mess for drivers that need to use the reset logic. It's one of the last significant patches in my gadget-2.6 tree that haven't yet been merged into the main kernel tree. More refactoring of the enumeration code paths: * The first half of usb_new_device() becomes the second half of a new hub_port_init() routine (resets, sets address, gets descriptor) * The middle chunk of hub_port_connect_change() becomes the first half of that new hub_port_init() routine. * Khubd uses that new routine in hub_port_connect_change(). * Now usb_new_device() cleans up better after faults, and has a more useful locking policy (caller owns dev->serialize). * Has related minor cleanups including commenting some of the curious request sequences coming from khubd. Refactoring means a lot of the current usb_reset_device() logic won't need to stay an imperfect clone of the enumeration code ... soon, it can just call hub_port_init(). Even without touching usb_reset_device(), this eliminates a deadlock. Previously, address0_sem was used both during probe and during reset, so probe routines can't implement DFU firmware download (involves a reset; DFU also uncovers other problems) or safely recover from probe faults by resetting (usb-storage can try that). Now that lock is no longer held during probe(); so those deadlocks are gone. (And some drivers, like at76c503, can start to remove ugly workarounds.) [PATCH] USB: khubd fixes This goes on top of the other enumeration patch I just sent, to handle some dubious and/or broken hub configurations better. Make khubd handle some cases better: - Track power budget for bus-powered hubs. This version only warns when the budgets are exceeded. Eventually, the budgets should help prevent such errors. - Rejects illegal USB setup: two consecutive bus powered hubs would exceed the voltage drop budget, causing much flakiness. - For hosts with high speed hubs, warn when devices are hooked up to full speed hubs if they'd be faster on a high speed one. - For hubs that don't do power switching, don't try to use it - For hubs that aren't self-powered, don't report local power status [PATCH] USB usbfs: take a reference to the usb device Hi Greg, this is the first of a series of patches that replace the per-file semaphore ps->devsem with the per-device semaphore ps->dev->serialize. The role of devsem was to protect against device disconnection. This can be done equally well using ps->dev->serialize. On the other hand, ps->dev->serialize protects against configuration and other changes, and has already been introduced into usbfs in several places. Using just one semaphore simplifies the code and removes some remaining race conditions. It should also fix the oopses some people have been seeing. In this first patch, a reference is taken to the usb device as long as the usbfs file is open. That way we can use ps->dev->serialize for as long as ps exists. devio.c | 27 ++++++++++++++++----------- inode.c | 3 --- 2 files changed, 16 insertions(+), 14 deletions(-) [PATCH] USB usbfs: replace the per-file semaphore with the per-device semaphore devio.c | 43 +++++++++++++++++++++++-------------------- usbdevice_fs.h | 1 - 2 files changed, 23 insertions(+), 21 deletions(-) [PATCH] USB usbfs: remove obsolete comment from proc_resetdevice devio.c | 3 --- 1 files changed, 3 deletions(-) [PATCH] USB usbfs: fix up proc_setconfig The semaphore is now taken in the caller. devio.c | 2 -- 1 files changed, 2 deletions(-) [PATCH] USB usbfs: fix up proc_ioctl The semaphore is now taken in the caller. devio.c | 2 -- 1 files changed, 2 deletions(-) [PATCH] USB usbfs: fix up releaseintf The semaphore is now taken in the callers. devio.c | 2 -- 1 files changed, 2 deletions(-) [PATCH] USB usbfs: destroy submitted urbs only on the disconnected interface The remaining three patches contain miscellaneous fixes to usbfs. This one fixes up the disconnect callback to only shoot down urbs on the disconnected interface, and not on all interfaces. It also adds a sanity check (this check is pointless because the interface could never have been claimed in the first place if it failed, but I feel better having it there). devio.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) [PATCH] USB usbfs: missing lock in proc_getdriver Hi Oliver, > I expect it to rarely matter, but it might matter now and then. It's > just a question of hygiene. If you are using a temporary buffer I'd > like to see it used to full advantage. So either drop the lock or do > a direct copy. I'd prefer the first option your patch implemented. I agree. Greg, please consider applying the updated patch: Protect against driver binding changes while reading the driver name. [PATCH] USB usbfs: drop pointless racy check The check of interface->dev.driver requires a lock to be taken to protect against driver binding changes. But in fact I think it is better just to drop the test. The result is that the caller is required to claim an interface before changing the altsetting, which is consistent with the other routines that operate on interfaces. devio.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) [PATCH] USB: Ignore URB_NO_INTERRUPT flag in UHCI Following a suggestion of David Brownell's I have decided to remove support for the URB_NO_INTERRUPT flag in the UHCI driver. The overall effect of the flag is to reduce the number of interrupts, thereby improving throughput somewhat while increasing the duration of the remaining IRQ handlers quite a lot (i.e., increasing interrupt variance). So I think we're better off without it. Mind you, this is all in the absence of any firm measurements. A common case where this will come up is during usb-storage bulk transfers. Such transfers are generally divided into scatter-gather components each corresponding to a single URB and transferring one memory page (4 KB). While generating an interrupt for each one is a little faster than ideal -- about every 3 ms -- it's better than waiting until 64 KB has been transferred and there are 1024 individual TDs to clean up during the IRQ. [PATCH] USB: Cosmetic improvements for the UHCI driver This patch makes a few minor improvements to the appearance of the UHCI driver. Please apply. [PATCH] USB: Altsetting updates for USB media drivers This patch implements the new altsetting regime for the drivers under usb/media. Not much needed to be changed. I'm unable to test any of the changes, but at least they compile all right (except that I didn't even try to compile the pwc driver since it's marked BROKEN). The stv680 and w9968cf drivers still include an assumption that they are bound to interface number 0. Since that the drivers are fairly tightly linked to a specific kind of device I didn't try to change those assumptions, but maybe they should be changed. [PATCH] USB: Altsetting update for USB misc drivers This is the altsetting update for the drivers under usb/misc. As you can, not much was needed at all. [PATCH] USB: Altsetting update for USB net drivers The only driver under usb/net that needed any altsetting changes was usbnet. I'm not looking forward to going through all the source files under usb/serial. :-( ALSA CVS update - Jaroslav Kysela CS4281 driver Added retry_count ALSA CVS update - Jaroslav Kysela PCMCIA Kconfig SND_PDAUDIOCF depends on SND_PCM ALSA CVS update - Jaroslav Kysela ALSA Version release: 1.0.4 ALSA CVS update - Takashi Iwai VIA82xx driver added dxs_support and ac97_quirk entries for Amira notebook. ALSA CVS update - Takashi Iwai ATIIXP driver - fixed SPDIF support. restricted only 48k sample rate. - fixed the address assignment for bigendian (not existing, though) ALSA CVS update - Takashi Iwai AC97 Codec Core - fixed the possibl ac97 register cache mismatch. - added the detection of spdif sample rates. ALSA CVS update - Clemens Ladisch AC97 Codec Core fix access to wrong register when clearing powerdown bits ALSA CVS update - Clemens Ladisch Intel8x0 driver 20-bit sample format support ALSA CVS update - Clemens Ladisch USB generic driver remove superfluous address operator from literal arrays ALSA CVS update - Clemens Ladisch USB generic driver allow specification of rate_table in AUDIO_FIXED_ENDPOINT quirks ALSA CVS update - Jaroslav Kysela Timer Midlevel,ALSA Core Added early event flag and code to the timer interface. ALSA CVS update - Clemens Ladisch AC97 Codec Core show AC'97 2.3 information in proc file ALSA CVS update - Clemens Ladisch AC97 Codec Core fix AC'97 revision bits on AD1985 ALSA CVS update - Takashi Iwai Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver NM256 driver,RME HDSP driver,RME9652 driver,Trident driver Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver SPARC cs4231 driver,USB generic driver use the new module_param*() functions. ALSA CVS update - Takashi Iwai Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver Sound Core PDAudioCF driver Clean up of power-management codes. - moved commonly used codes to the core layer. - using the unified suspend/resume callbacks for PCI and ISA - added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks() as the registration functions. ALSA CVS update - Takashi Iwai ALI5451 driver Clean up of power-management codes. - moved commonly used codes to the core layer. - using the unified suspend/resume callbacks for PCI and ISA - added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks() as the registration functions. ALSA CVS update - Jaroslav Kysela Trident driver,CS4231 driver,PARISC Harmony driver Remove all old SNDRV_DMA_TYPE_PCI references ALSA CVS update - Clemens Ladisch ALSA sequencer load snd-seq-dummy automatically, as documented in seq_dummy.c ALSA CVS update - Clemens Ladisch USB generic driver use wrapper function for usb_control_msg() to prevent DMA'ing from/to the stack ALSA CVS update - Takashi Iwai Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver Trident driver,Digigram VX222 driver,YMFPCI driver - removed superfluous warning messages after pci_module_init(). (2.6 kernel doesn't return the error anyway...) - store card pointer in pci_drvdata instead of chip pointer. this would make easier to add PM support. ALSA CVS update - Takashi Iwai PCI drivers,au88x0 driver bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander ALSA CVS update - Takashi Iwai ICE1712 driver added Event Electronics EZ8 support by Doug McLain ALSA CVS update - Takashi Iwai Intel8x0 driver fixed MX440 workaround in suspend/resume. ALSA CVS update - Takashi Iwai Memalloc module fixed the allocation of coherent DMA pages under 32bit mask. ALSA CVS update - Clemens Ladisch USB generic driver Edirol UA-700 advanced modes support ALSA CVS update - Takashi Iwai Intel8x0 driver,Intel8x0-modem driver - probe only audio (intel8x0) or modem (intel8x0m) codecs. - call snd_ac97_suspend() in the suspend callback. ALSA CVS update - Takashi Iwai AC97 Codec Core - export snd_ac97_suspend(). - mute MASTER and HEADPHONE volumes in suspend to avoid possible clicks. ALSA CVS update - Takashi Iwai CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver CS46xx driver,NM256 driver,Trident driver,YMFPCI driver - call snd_ac97_suspend() in the suspend callback. - suspend/resume secondary codecs, too. ALSA CVS update - Takashi Iwai PCM Midlevel fixed the deadlock of power_lock in suspend (by Terry Loftin) ALSA CVS update - Takashi Iwai PPC PMAC driver fixed the suspend/resume with the new ALSA common callbacks. ALSA CVS update - Takashi Iwai Memalloc module removed the obsolete hack for dev_alloc_coherent() with dev = 0. ALSA CVS update - Takashi Iwai PPC PMAC driver another fix for the new suspend/resume. ALSA CVS update - Jaroslav Kysela ICE1712 driver added a control for default rate in the ice1712 driver ALSA CVS update - Takashi Iwai PPC PMAC driver fixed the missing function declarations. ALSA CVS update - Takashi Iwai ATIIXP driver - added the PCI id entry for SB300. - added the missing terminator to the PCI id list. ALSA CVS update - Takashi Iwai AC97 Codec Core - fixed the center/mic share switch on ALC65x. - created AC97_SINGLE_VALUME() macro. ALSA CVS update - Takashi Iwai Control Midlevel - fixed the compilation without CONFIG_PM. - fixed the return value of POWER ioctl. ALSA CVS update - Takashi Iwai AC97 Codec Core added the mic/center sharing switch of cm9739 codec again. ALSA CVS update - Takashi Iwai Documentation,AC97 Codec Core added the write support to ac97#x-x+regs proc file. this is for debugging purpose, and enabled only when CONFIG_SND_DEBUG is set. it allows the user to modify AC97 register bits without compiling the sources. ALSA CVS update - Jaroslav Kysela AC97 Codec Core Fixed AD18xx PCM bit handling ALSA CVS update - Jaroslav Kysela Opti9xx drivers Fixed irq&dma initialization for <93x chips ALSA CVS update - Jaroslav Kysela Intel8x0 driver From: Giridhar Pemmasani It seems that pci config space is messed up after resume for Intel ICH4 audio controller (on Dell Latitude D600, but I notice that others also complain about this problem). Consequently resume from S3 causes oops with snd_intel8x0 module. If the module is removed before suspend and loaded afterwards, I still get oops. The following simple patch fixes the problem. With this, I can leave alsa untouched during suspend/resume. ALSA CVS update - Jaroslav Kysela AC97 Codec Core patch_sigmatel_stac9758 - initialize with default values from datasheet - apply old initialization only for Gateway M675 notebook ALSA CVS update - Jaroslav Kysela AC97 Codec Core ac97->pci might be null ALSA CVS update - Takashi Iwai PPC Keywest driver,PPC PMAC driver,PPC PowerMac driver PPC Tumbler driver fixed the oops on resume and the initialization of chip. ALSA CVS update - Takashi Iwai AC97 Codec Core fixed the compilation without CONFIG_SND_DEBUG. ALSA CVS update - Takashi Iwai PCI drivers,ATIIXP driver - added IXP 300 to descriptions and comments. - fixed the codec probing without the proper interrupts. - added the experimental PM support. ALSA CVS update - Takashi Iwai VIA82xx driver - added the experimental PM support. ALSA CVS update - Jaroslav Kysela OPL3SA2 driver Added YMH0801 ISA PnP ID - OPL3-SA2 [libata] add ata_tf_{to,from}_fis helpers [libata] clean up taskfile submission to hardware When writing taskfile (an ATA command) to the controller, the exact setup of the taskfile is dependent on the taskfile "protocol": PIO, PIO Multiple, DMA, Non-data, etc. So, we separate out the submission of the taskfile to hardware into a separate function ata_qc_issue_prot(), which will later be the home for more code. Also, remove some dead code (#if 0'd). [PATCH] sata_vsc initialization fix drm_irq.h: remove NO_VERSION MPT Fusion add back FC909 support From: "Moore, Eric Dean" [PATCH] qlogicfas: kill horrible irq probing this patch kills irq probe and also I/O because isn't useful to probe I/O if we can't probe irq later. [PATCH] qlogicfas: split and create a new module [PATCH] qlogic_cs: use qlogicfas408 module this patch kills qlogic_core.c and I guess the same idea can be applied to other pcmcia scsi drivers. comments? [PATCH] qla2xxx set current state fixes - always set_current_state(TASK_UNINTERRUBTIBLE) unless we explicitly check for signals. - make all timeouts take HZ based values. [PATCH] SCSI tape log message fixes This patch changes the st console/log messages: - __GFP_NOWARN added to buffer allocation to suppress useless messages when having to use smaller than default segments - move log message from enlarge_buffer() to caller so that the tape name can be printed and remove some debugging messages; now the st messages should include drive name where applicable (a problem reported by Hironobu Ishii) - setting options is logged only when debugging; the most important options are now seen in sysfs [PATCH] aic7xxx: fix oops whe hardware is not present From: Herbert Xu This is because aic7xxx does not unregister itself properly if no devices are found. This patch fixes the problem. aic7xxx: compile fix for EISA only case We can't refer to PCI functions for a pure EISA machine. [PATCH] Update aacraid MAINTAINERS entry [PATCH] scsi: don't attach device if PQ indicates not connected [PATCH] 3ware driver update This patch includes the following driver changes: 1.26.00.038 - Roll driver minor version to 26 to denote kernel 2.6. Add support for cmds_per_lun module parameter. 1.26.00.039 - Fix bug in tw_chrdev_ioctl() polling code. Fix data_buffer_length usage in tw_chrdev_ioctl(). Update contact information. [libata] move ATAPI startup from katad thread to workqueue thread libata creates one thread per ata_port structure. This is inadequate for our needs, and also cumbersome to maintain, now that workqueues and Rusty's thread work is available. This patch begins to move libata away from doing its own per-port thread, by moving the ATAPI command initiation code to work under the workqueue system. This patch also creates a private workqueue, global to all of libata. [libata] move PIO data xfer from katad thread to workqueue thread [libata] move probe execution from katad thread to workqueue thread This allows us to kill the katad thread itself, and several thread-related variables in struct ata_port. [PATCH] fix module unload problem in sd Move scsi_device_get out of sd probe path to allow module to be unloaded when devices are not open. [libata] move ATAPI command initiation code from libata-scsi to libata-core [libata] make ata_wq workqueue local to libata-core module Now that libata-scsi module no longer calls queue_work() directly, we can localize the use of ata_wq. [libata] internal cleanup: kill ata_pio_start Integrate it into its caller. [libata] some work on the ATAPI path Remove a lot of redundant code in ATAPI packet submission. ATAPI is still disabled, it doesn't work yet. [libata] work queueing cleanups and fixes Make sure to initialize PIO data xfer state. Use queue_delayed_work() rather than manually calling schedule_timeout(), then queue_work(), ourselves. [libata] increase max-sectors limit for modern drives This is the much-discussed "speed up SATA" patch. It limits requests to 1MB as discussed, rather than the hardware maximum (32MB). As soon as Jens Axboe's patch to dynamically determining request size is merged, max_sectors becomes what it properly should be -- a description of the absolute hardware maximum. [libata] replace per-command semaphore with optional completion The semaphore was initialized and up'd for each command, but nobody was listening. Replace this with a completion, which may or may not be present. [libata promise] make sure our schedule_timeout(N) are never with N==0 Make sure we delay for a minimum desired length of time. drm_pciids.h: add new tdfx id, and blank ffb ids [PATCH] scsi_disk_release() warning fix drivers/scsi/sd.c: In function `scsi_disk_release': drivers/scsi/sd.c:1477: warning: unused variable `sdev' [libata] remove unused struct ata_engine [PATCH] sata_sx4.c warning fix drivers/scsi/sata_sx4.c: In function `pdc20621_put_to_dimm': drivers/scsi/sata_sx4.c:928: warning: comparison is always true due to limited range of data type The code is doing, effectively: if ((long)(expr returning u32)) >= 0 but on 64-bit architectures, that will always be true. So cast the u32 result to s32 before promoting to long so that bit 31 correctly propagates into bits 32-63. [PATCH] USB: mtouchusb update for 2.6.6-rc2 The attached patch for the 3M Touch Systems Capacitive controller. Quick list of changes: * Changed reset from standard USB dev reset to vendor reset * Changed data sent to host from compensated to raw coordinates * Eliminated vendor/product module params * Performed multiple successfull tests with an EXII-5010UC The changes are primarily due to comments from Vojtech Pavlik, as well as making the newer EXII-50XXUC controllers work. Thanks to 3M Touch Systems for sending me some new controllers to test with! An updated HOWTO is also available at: http://groomlakelabs.com/grandamp/code/microtouch/Linux-Input-USB-Touchscreen-HowTo.txt [PATCH] USB: audits in usb_init() there were some missing audits in usb_init() [PATCH] USB: be assertive in usbfs Be assertive. [PATCH] USB: Altsetting updates for usb/serial The updates needed for proper altsetting handling among the USB serial drivers turned out to be a lot easier than I expected, thanks to the organization of the drivers. Only a handful of changes were needed. [PATCH] USB: usb-storage driver changes for 2.6.x [1/4] Patch as239b from Alan Stern: This patch improves the interaction between a SCSI reset, an internally generated reset, and an abort. This improves our error-recovery in cases where the device is hung (or almost hung) while we're trying to auto-reset. [PATCH] USB: usb-storage driver changes for 2.6.x [2/4] This is patch as248b from Alan Stern, modified by myself: This adds a flag which allows us to supress the "unneeded unusual_devs.h entry" message. This is useful for times when idiotic device manufacturers break the rules and release two different devices with the same VID, PID, and revision number. [PATCH] USB: usb-storage driver changes for 2.6.x [3/4] This patch adds some clear-halt calls if a GetMaxLUN fails. Apparently, some devices (like certain early-rev Zip100s) stall their bulk pipes if they receive a GetMaxLUN. [PATCH] USB: usb-storage driver changes for 2.6.x [4/4] This is a trivial patch to remove some duplicate includes. sched.h and errno.h are already included in this file about a dozen lines or so above this point. USB: switch struct urb to use a kref instead of it's own atomic_t [libata sata_sx4] trivial: fix filename in header USB: removed unused atomic_t in keyspan driver structure. USB: make ehci driver use a kref instead of an atomic_t USB: fix incorrect usb-serial conversion for cur_altsetting from previous patch. [PATCH] USB: Allocate interface structures dynamically This is a revised version of an earlier patch; I feel a lot better about this one. Basically it does the same thing as before: allocate interfaces dynamically to avoid the problems with reusing them. The difference is that this patch adds a struct kref to the array of usb_interface_cache's, so the array can persist if needed after the device has been disconnected. Each interface takes a reference to it (along with the configuration itself), so as long as the interfaces remain pinned in memory the altsettings will also remain. Here is a slight revision of patch as246b. This one allocates all the new interfaces before changing any other state; otherwise it's the same. USB: fix compiler warnings in devices.c file. Cset exclude: jejb@mulgrave.(none)|ChangeSet|20040404150128|05866 scsi_get_device needs no NULL check [PATCH] add SMBIOS tables to sysfs -- UPDATED My cleanups to the smbios driver. [PATCH] USB: add new USB PhidgetServo driver Here is a driver for the usb servo controllers from Phidgets , using sysfs. Note that the devices claim to be hid devices, so I've added them to the hid_blacklist (HID_QUIRK_IGNORE). A servo controller isn't really an hid device (or is it?). [PATCH] USB: Lock devices during tree traversal On Tue, 27 Apr 2004, Greg KH wrote: > So, what's next in this patch series? :) Funny you should ask... While writing those patches I noted a problem, that the USB device tree can change while a process reading /proc/bus/usb/devices is traversing it, leading to an oops when a pointer to a no-longer-existing child device is dereferenced. The ensuing discussion led to the conclusion that the devices' ->serialize locks should be acquired, top-down, while going through the tree. That means changing the code that populates the devices file and changing the code that adds and removes USB device structures. This patch takes care of the first part. I'm delaying the second part because that section of usbcore is still under change -- David Brownell's revisions have not yet been fully integrated. A similar change should be made to usb_find_device() and match_device() in usb.c. You may want to add that yourself. [PATCH] USB: fix sparc64 2.6.6-rc2-mm2 build busted: usb/core/hub.c hubstatus > 2) An undefined 'hubstatus' variable in drivers/usb/core/hub.c: > > CC drivers/usb/core/hub.o > drivers/usb/core/hub.c: In function `hub_port_connect_change': > drivers/usb/core/hub.c:1343: error: `hubstatus' undeclared (first use in this function) > drivers/usb/core/hub.c:1343: error: (Each undeclared identifier is reported only once > drivers/usb/core/hub.c:1343: error: for each function it appears in.) > make[3]: *** [drivers/usb/core/hub.o] Error 1 > > As a total shot in the dark, the following fixes the build (I've no clue > if it is the right fix): Yes, it's the right fix. Greg, please merge the attached patch, which will be needed on any big-endian system. [PATCH] USB: fix PhidgetServo driver Somehow I managed to send the wrong version. Here is a patch which fixes that. (Remove a dev_info() which wasn't supposed to be there, and make sure that everything is still consistent in the unlikely event that kmalloc() fails). Just minor cleanups. USB: remove the wait_for_urb function from bfusb driver as it's no longer needed. USB: fix build error in hci_usb driver due to urb reference count change. This really needs to get fixed the proper way, by making the urb allocation dynamic in the driver, instead of the hack it is currently doing... [PATCH] PCI: pci.ids update from sf.net + add IXP4xx to pci_ids.h [PATCH] PCI: I'm moving Can you please feed the following patch to Andrew? [PATCH] PCI: message cleanup in PCI probe The messages read: PCI: Address space collision on region 8 of bridge 0000:00:1f.0 [1180:11bf] PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1 Transparent bridge - 0000:00:1e.0 PCI: Using IRQ router PIIX/ICH [8086/24cc] at 0000:00:1f.0 PCI: Found IRQ 11 for device 0000:00:1f.1 The following patch adds "PCI: " in front of the message and KERN_INFO as well. Compile&boot tested. Jochen [PATCH] PCI Hotplug: rpaphp: set eeh option (enabled ) prior to any i/o to newly added IOA Attached patch fix the problem I have found during DLPAR I/O slots testing on our new hardware. rpaphp needs to set eeh-option(eanbled) for newly added IOA prior to performing PCI config(pci_setup_device), otherwise the pci_dev of the IOA will have invalid base address information. Linas Vepstas impleted eeh changes. [PATCH] PCI Hotplug: RPA DLPAR remove slot, return code fix [PATCH] PCI Hotplug: Clean up acpiphp_core.c: null checks If the "struct hotplug_struct *" parameter to any function in hotplug_slots_ops is ever NULL something bogus is going on. In this case we should just oops and not hide the bug. This also fixes the driver name used in debug messages. [PATCH] PCI Hotplug: Clean up acpiphp_core.c: slot_paranoia_check Matthew Wilcox wrote: > On Thu, Apr 22, 2004 at 01:18:23PM +0200, Rolf Eike Beer wrote: > > slot_paranoia_check is only another kind of checking everything for NULL. > > Removing this leads to function get_slot is reduced to a simple cast, so > > this function can be killed also. > > Since private is void *, you don't even need the casts. > > > static int enable_slot (struct hotplug_slot *hotplug_slot) > > { > > - struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); > > + struct slot *slot = (struct slot *)hotplug_slot->private; > > struct slot *slot = hotplug_slot->private; > > is enough. Fixed. [PATCH] PCI Hotplug: Clean up acpiphp_core.c: coding style This patch kills the space before the opening brace in function declarations. It also beautifies some ugly return statements. [PATCH] PCI Hotplug: Clean up acpiphp_core.c: kill hardware_test The function hardware_test only tells that there are no tests. If we just kill it the file "test" in the slot's directory will not show up which means pretty much the same. [PATCH] PCI Hotplug: Clean up acpiphp_core.c: use goto for error handling This one converts the error handling in init_slots to use gotos to avoid code duplication. [PATCH] PCI Hotplug: Clean up acpiphp_core.c: return Fix 2 very ugly return constructs. [PATCH] PCI Hotplug: Clean up acpiphp_core.c: remove 3 get_* functions If we remove this 3 get_* functions the pci hotplug core will do the same thing for us. [PATCH] CompactPCI Hotplug: remove unneeded funtion for parameter handling A special function for handling the parameters in non-module case is not needed, the MODULE_* makros handle this also for compiled in situations. [PATCH] CompactPCI Hotplug: kill magic number slot->magic is not used anymore since slot_paranoia_check is dead, so just kill it. [PATCH] CompactPCI Hotplug ZT5550: use new style of module parameters Convert the driver to use new interface for module parameters, Also fix the driver name used in debug messages. Eike [PATCH] ACPI PCI Hotplug: use new style of module parameters This one converts acpiphp_core.c to use the new interface for module parameters. [PATCH] ACPI PCI Hotplug: kill magic number The magic slot number was only another type of checking the validity of a pointer. These checks are all gone so magic can follow them. [PATCH] ACPI PCI Hotplug: use goto for error handling This one fixes another space before an opening brace I missed before and optimizes the error paths in init_slots a bit more. [PATCH] ACPI PCI Hotplug: coding style fixes Some minor coding style fixes: -space before opening brace of function -wrap some long lines -change some identations from spaces to tabs [PATCH] ACPI PCI Hotplug: add a BUG() where one should be If there is a condition with the comment "should never happen" it is a good place for a BUG() if it is ever reached. [PATCH] PCI Hotplug skeleton: use new style of module parameters Convert the PCI hotplug skeleton driver to use new style of module parameter handling. [PATCH] PCI Hotplug skeleton: remove useless NULL checks This one removes all the useless NULL checks including slot_paranoia_check, get_slot and the magic number from the PCI hotplug skeleton driver. Also some lines containing only a single tab are fixed. [PATCH] PCI Hotplug skeleton: fix codingstyle Coding style fixes for pcihp_skeleton.c: remove spaces before opening braces and change a comment in function hardware_test to make clearer that the functions purpose is not to tell the user there are no tests. [PATCH] PCI Hotplug skeleton: mark functions __init/__exit Add __init and __exit to some functions only called from __init/__exit context. [PATCH] PCI Hotplug skeleton: use goto for error handling Convert PCI hotplug skeleton driver to use goto for error handling in init_slots to avoid code duplication. [PATCH] PCI Hotplug skeleton: final cleanups Some final fixes for the skeleton driver: -spaces before opening brace -add a better example for hardware_test function -remove a "int retval" in a void function -some more coding style changes -changed enough stuff: increase version number -fix a typo in a comment [PATCH] PCI Express Hotplug: fix coding style [PATCH] PCI Express Hotplug: remove useless kmalloc casts The result of kmalloc does not need to be casted, it is a void * which can be assigned to any pointer variable. Also avoid code duplication in one if statement. [PATCH] PCI Express Hotplug: splut pciehp_ctrl.c::configure_new_function configure_new_function is way too big (>600 lines). Split it in 2 functions, one for the new functions and one for bridges. And split out a small piece from the bridge function which is used twice to it's own function. Patch is huge because of the identation changes but does nothing than the split and some minor coding style changes. input: Microtouch USB driver update Changed reset from standard USB dev reset to vendor reset Changed data sent to host from compensated to raw coordinates Eliminated vendor/product module params Performed multiple successfull tests with an EXII-5010UC [PATCH] Compaq PCI Hotplug: coding style fixes The usual coding style fixes, this time for cpqphp_ctrl.c and cpqphp.c. [PATCH] Compaq PCI Hotplug: remove useless NULL checks Remove some useless NULL and magic checks from Compaq PCI Hotplug driver. If one of this pointers is invalid we are in bad trouble anyway. [PATCH] Compaq PCI Hotplug: move huge inline function out of header file set_controller_speed is implemented in cpqphp.h but only used in cpqphp_ctrl.c and it's much too big to be defined in a header file. This patch moves it to cpqphp_ctrl.c. Also the inline attribute is removed, this function is called from 2 places and to big to be an inline. [PATCH] Compaq PCI Hotplug: use new style of module parameters Convert Compaq PCI Hotplug driver to use the new style of module parameters. [PATCH] Compaq PCI Hotplug: more coding style fixes Fix a lot of coding style issues in Compaq PCI hotplug: -spaces before opening brace of functions -much too much C++ style comments -wrap long lines -remove some comments where the code does not really need to be explained Eike [PATCH] Compaq PCI Hotplug: split up hardware_test This puts the LED shifting used as "hardware test" in a function to make cpqhp_hardware_test much smaller and easier to read. Also changes some comments from C++ to C style. [PATCH] Compaq PCI Hotplug: use goto for error handling Convert ctrl_slot_setup to use goto for error handling and fix some minor coding style things. [PATCH] Compaq PCI Hotplug: remove useless NULL checks from cpqphp_core.c Remove some useless NULL checks in cpqphp_core.c [PATCH] Compaq PCI Hotplug: fix C++ style comments This is not C++! Fix comments from C++ style to C style, removing some useless ones (e.g. no need to tell up and down protect a critical section). [PATCH] Compaq PCI Hotplug: use goto for error handling in cpqphp_ctrl.c Change cpqphp_ctrl.c to use goto for error handling. [PATCH] Compaq PCI Hotplug: coding style fixes for cpqphp_ctrl.c Some coding style fixes I missed last time. [PATCH] Compaq PCI Hotplug: some final fixes for cpqphp_core.c Final small fixes for cpqphp_core.c: -use better error handling in one_time_init -small coding style fixes -the name of the driver is not "pci_hotplug" -add an __exit for unload_cpqphp -changes enough to increment version, isn't it? [PATCH] PCI Hotplug: Remove type magic from kmalloc This patch removes the cast of kmalloc's results to the target pointer type. Also it fixes kmalloc to use sizeof(*foo) instead of sizeof(type_of_foo) as suggested by Matthew Wilcox. Also removes a few useless checks if a pointer is NULL before calling kfree: kfree checks this itself. [PATCH] [BUGFIX] shpchp_pci.c: fix missing braces after if Add missing braces around if statement, if not we will try to add devices for an empty slot. [PATCH] PCI Hotplug Core: use new style of module parameters Convert PCI Hotplug Core to new style of module parameter handling. [PATCH] PCI Hotplug: Move an often used while loop to an inline function Walking through a pci_resource list and freeing all members is done a lot of times in unload functions. This patch moves this to an inline function in pciehp_core.c, pciehp_pci.c, shpchp_core.c and shpchp_pci.c. This shrinks the code a lot (some 200 lines) and makes it much easier to read. Also adds some __exit. [PATCH] PCI Express Hotplug: use new style of module parameters This converts PCI Express Hotplug to the new style of module parameter handling. [PATCH] Compaq PCI Hotplug: fix missing braces Fix missing braces. It does not change the code but makes it easier to read. PCI Hotplug: fix stupid build bugs caused by previous patches. Doesn't anyone build their patches anymore before sending them out... [PATCH] PCI Express Hotplug: remove useless NULL checks Remove useless NULL checks and magic numbers from PCI Express Hotplug, also some minimal coding style fixes. [PATCH] RPA PCI Hotplug: Remove useless NULL checks Remove useless NULL checks and magic numbers from rpaphp. If one of these ever becomes invalid we are in serious trouble anyway. [PATCH] Compaq PCI Hotplug: kill useless kmalloc casts This patch removes the cast of kmalloc's results to the target pointer type. Also it fixes kmalloc to use sizeof(*foo) instead of sizeof(type_of_foo) as suggested by Matthew Wilcox. Also removes a few useless checks if a pointer is NULL before calling kfree: kfree checks this itself. [PATCH] PCI Express Hotplug: kill hardware_test The hardware_test function of the PCI Express Hotplug driver is empty. It's better to completely kill this to tell the user hardware tests are not supported by this driver. [PATCH] Compaq PCI Hotplug: remove useless NULL checks from cpqphp_ctrl.c Remove useless NULL checks from cpqphp_ctrl.c. Under normal circumstances there is no chance for any of this functions to get called with a NULL argument. If we are in such trouble that we get a NULL pointer don't hide it, just oops. [PATCH] PCI Express Hotplug: use goto for error handling This changes pciehp_core.c::init_slots to use goto for error hanling. Also a missing magic missed by previous patches is killed. [PATCH] PCI Express Hotplug: codingstyle fixes for pciehp.h Some small coding style fixes and a typo fix for pciehp.h [PATCH] PCI Express Hotplug: remove useless kmalloc casts The result of kmalloc does not need to be casted to any other pointer type. Also use kmalloc(*foo) instead of kmalloc(type_of_foo) and wrap some long lines. [PATCH] PCI Express Hotplug: some cleanups Some coding style fixes and small cleanups for pciehp_core.c: -wrap long lines -kill spaces before opening braces of functions -remove code duplication where both parts of an if statement do exactly the same -kill some useless comments -kill an unneeded initialisation [PATCH] PCI Express Hotplug: mark global variables static Don't know why, but it looks like a good idea to mark this global variables static. [PATCH] PCI Express Hotplug: kill more useless casts This patch does two things: -remove casts of pointers which are void* or already the correct type for the target -if we dereferenced a struct member and copied this to it's own variable use this and don't dereference the member again [PATCH] PCI Express Hotplug: codingstyle fixes for pciehp_pci.c This is a bunch of coding style fixes (wrap long lines, whitspacing etc.) for pciehp_pci.c [PATCH] RPA PCI Hotplug: use new style of module parameters The debug parameter of rpaphp is only used as a boolean so we can scan the commandline of it like a boolean parameter. [PATCH] RPA PCI Hotplug: kill get_cur_bus_speed from rpaphp_core.c The get_cur_bus_speed function of rpaphp does nothing that the PCI Hotplug Core would not do by itself if this function does not exist, so just kill it. [PATCH] RPA PCI Hotplug: codingstyle fixes for rpaphp_core.c Some coding style fixes for rpaphp_core.c: -s/return(foo)/return foo/ -some whitespace fixes -document function in proper way Eike [PATCH] RPA PCI Hotplug: fix up init_slots in rpaphp_core.c rpaphp_core.c::init_slots is not more than a for loop and is called only from one place, this inlines the important 3 lines. Als add some __init and __exit. [PATCH] RPA PCI Hotplug: remove useless NULL checks from rpaphp_core.c Remove two useless NULL checks from rpaphp_core.c [PATCH] RPA PCI Hotplug: use goto for error handling in rpaphp_slot.c Convert rpaphp_slot.c::alloc_slot_struct to use goto for error handling. Also some small coding style fixes. [PATCH] RPA PCI Hotplug: codingstyle fixes for rpaphp_pci.c Some coding style fixes for rpaphp_pci.c. [PATCH] SHPC PCI Hotplug: use new style of module parameters Convert shpchp_core.c to use new style of module handling. Eike [PATCH] SHPC PCI Hotplug: kill hardware_test shpchp_core.c::hardware_test is empty. If we remove it we tell the user that hardware tests are not supported at all. [PATCH] SHPC PCI Hotplug: fix cleanup_slots to use a release function shpchp is the only driver which does not use a release function for the slot struct. This adds one and does some minor coding style fixes. Also no one cares about the return value of cleanup_slots (which is always 0 anyway) so we can make the function void. [PATCH] SHPC PCI Hotplug: use goto for error handling Convert shpchp_core.c::init_slots to use goto for error handling. [PATCH] SHPC PCI Hotplug: codingstyle fixes Some small coding style fixes for shpchp_core.c. [PATCH] SHPC PCI Hotplug: kill useless NULL checks [PATCH] SHPC PCI Hotplug: more coding style fixes A big bunch of coding style fixes for shpchp_ctrl.c and shpchp_pci.c Eike [PATCH] SHPC PCI Hotplug: remove some useless casts Remove a useless cast: pci_add_new_bus returns a struct pci_bus*, so no need to cast. PCI Hotplug: fix build error due to previous patches. Fix errors in [PATCH] aic7xxx: fix oops whe hardware is not present This patch was causing a boot panic. Now fixed. [PATCH] USB: USB altsetting updates for IDSN Hisax driver The USB core is changing the way interfaces and altsettings are stored. They are no longer required to be in numerical order, and as a result, simply indexing the interface and altsetting arrays won't work as expected. This patch for the st5481 takes these changes into account. A simpler approach would be to store a pointer to the struct usb_host_interface rather than look it up repeatedly, but I'm not very familiar with this driver and didn't want to attempt such an alteration. [PATCH] USB: Alcatel TD10 Serial to USB converter cable support The Alcatel TD10 USB to Serial converter cable (for use with a Alcatel OT 535 or 735(i) mobile phone) seems to be a repackaged Alcatel version of the Prolific 2303 adapter. And as such, simply adding its product/vendor id (0x11f7/0x02df) to drivers/usb/serial/pl2303.c seems to be enough to make it work. [PATCH] USB Gadget: gadget zero and USB suspend/resume This patch lets gadget zero be more useful in testing usb suspend and resume. It prints messages on suspend() and resume(), and supports an "autoresume=N" mode to wake the host after N seconds. [PATCH] USB: reject urb submissions to suspended devices This patch rejects URB submissions to suspended devices, so that they don't get hardware-specific fault reports. Instead, they get the same code (-EHOSTUNREACH) for all HCDs. It also fixes a minor problem with colliding declarations of the symbol USB_STATE_SUSPENDED. [PATCH] USB: LEGO USB Tower driver v0.95 here is the latest version 0.95 of the LEGO USB Tower driver against 2.6.6-rc3 which corrects a lot of problems in the version currently in the kernel, most notably sleeping in interrupt context and improper locking. Please apply. It has been thoroughly tested with UHCI, OHCI and EHCI host controllers using Lejos and NQC. Firmware and program download, and with proper modifications all communication protocols supported by Lejos work, as well as firmware and program download and datalog upload in NQC. Notes to application maintainers/protocol designers: - Small modifications are needed in communication protocols because the tower tends to discard the first byte of transmissions. So for example LNP needs to send an extra byte like 0xff before the packet, and F7 handlers needs to cope with a lost 0x55. - I suggest /dev/usb/legousbtower0 etc. as the standard device names. This puts it in the same place as the other USB devices and makes clear which driver is responsible for these devices. [PATCH] USB: usbfs: change extern inline to static inline And change __inline__ to inline and get rid of an unused function while at it. [PATCH] USB: fix WARN_ON in usbfs On Tuesday 27 April 2004 10:58, Oliver Neukum wrote: > Am Dienstag, 27. April 2004 00:14 schrieb Greg KH: > > On Mon, Apr 26, 2004 at 04:05:17PM +0200, Duncan Sands wrote: > > > diff -Nru a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c > > > --- a/drivers/usb/core/devio.c Mon Apr 26 13:48:28 2004 > > > +++ b/drivers/usb/core/devio.c Mon Apr 26 13:48:28 2004 > > > @@ -350,8 +350,8 @@ > > > * all pending I/O requests; 2.6 does that. > > > */ > > > > > > - if (ifnum < 8*sizeof(ps->ifclaimed)) > > > - clear_bit(ifnum, &ps->ifclaimed); > > > + BUG_ON(ifnum >= 8*sizeof(ps->ifclaimed)); > > > > I've changed that to a WARN_ON(). Yeah, writing over memory is bad, but > > oopsing is worse. Let's be a bit nicer than that. > > You aren't nice that way. An oops has localised consequences. Scribbling > over memory can cause anything. Hi Greg, if won't accept a BUG_ON, how about the following? [PATCH] USB: dummy_hcd, root port wakeup/suspend Here's what's in my tree to make dummy_hcd do suspend and wakeup correctly ... that is, making its emulated root hub and gadget work more like real ones. It's easier to do this for fake hardware than the real stuff. But real drivers tend to need very similar changes ... :) - Dave p.s. This does not depend on the suspend/resume patch. And it doesn't do "global" suspend (of root hub). [PATCH] USB: DSBR-100 tiny patch On Fri, Feb 06, 2004 at 10:17:32AM -0800, Greg KH wrote: > On Fri, Feb 06, 2004 at 05:06:01PM +0100, Markus Demleitner wrote: > > Since I finally switched over to 2.6 I noticed that my dsbr100 driver > > produces a warning to the effect that I should provide a release > > callback. After a quick google on the issue I came to the conclusion > > No, you will have to fix up your driver to work properly, sorry. It's > due to the changes to the v4l layer to handle removable devices much > better (and to tie it into the driver model.) I didn't get around to doing real work on this until now, but finally in the attachment there's my stab at bringing dsbr100 up to kernel 2.6. I'm not really comfortable with the release callback issues (I've yet to find some HOWTO-like documentation on this...) on the v4l side, so I'd be grateful if you could have a look at it. I've basically tried to copy what stv680 does, which may or may not have been a good idea (in particular see the comment above the disconnect function). I've used the opportunity for some code beautyfing, which of course makes the patch a bit of a mess. I hope you won't mind too much -- as you can see, it would have been pretty messy anyway. [PATCH] I2C: Add LM99 support to the lm90 driver The following patch adds support for the LM99 chip to the lm90 driver, on popular request. The nVidia GeForce FX 5900 series cards have such a chip on-board for monitoring the GPU temperature. Relevant pointers: http://archives.andrew.net.au/lm-sensors/msg07671.html http://secure.netroedge.com/~lm78/readticket.cgi?ticket=1661 http://secure.netroedge.com/~lm78/readticket.cgi?ticket=1662 Additional effects of the patch: * Do not consider the lm90 driver experimental anymore. I have had enough testers and not a single problem report, the driver is working OK. * Support the LM89. According to the datasheets, it is exactly the same chip as the LM99 (to the chip ID). We've never seen this chip in a computer so far, but it doesn't cost anything to support it (actually we cannot not support it, since we have no way to differenciate with the LM99). * Scan two addresses instead of one. The LM99 and LM89 have a "-1" variant using an alternate address. * Update copyright year. * Reword the identification code a bit. It is hopefully slightly less unreadable. This patch was successfully tested by Corey Hickey. [PATCH] PCI Hotplug: pciehp-linkage-fix.patch This fixes allyesconfig I2C: rename i2c-ip4xx.c driver [PATCH] I2C: Voltage conversions in via686a My previous patch was actually not correct, reading from the chip's registers was fixed but writing limits to it wasn't. This new version of the patch should be better. Sorry for the trouble. [PATCH] I2C: support I2C_M_NO_RD_ACK in i2c-algo-bit I have an I2C device (Samsung ks0127 video grabber) with a peculiar i2c implementation. When reading bytes, it only senses for the stop condition in the place where the acknowledge bit should be. So, to properly support this device acks need to be turned off during reads. There is an I2C_M_NO_RD_ACK bit already defined in i2c.h which appears to be what I want. Unfortunately it doesn't seem to be used anywhere in the current tree. At the end of this message is a patch to teach i2c_algo_bit to honor the bit. [PATCH] I2C: Update IXP4xx I2C bus driver The 2.6 IXP4xx code has been cleaned up to change all references to IXP42x/IXP425 with IXP4xx. The following patch updates the I2C bits. Before applying, you need to 'bk move i2c-ixp42x.c ixp-4xx.c". [PATCH] I2C: add I2C epson 8564 RTC chip driver Add support for the Epson 8564 RTC chip. Update cifs change log [PATCH] Class support for ppdev.c [PATCH] Add class support to drivers/char/ip2main.c [PATCH] add class support to drivers/block/paride/pg.c This patch adds class support to pg.c, the parallel port generic ATAPI device driver. I have verified it compiles but do not have the hardware. If someone does and could test that would be helpful. [PATCH] add class support to drivers/block/paride/pt.c This patch adds class support to pt.c which "the high-level driver for parallel port ATAPI tape drives based on chips supported by the paride module." Which I dont have in order to test. I have verified it compiles but can not test it. If someone who has the hardware could I would appreciate it. [PATCH] add class support to drivers/char/tipar.c This patch adds class support to the Texas Instruments graphing calculators with a parallel link cable. I have verified it compiles. If someone has the hardware please verify it works. [PATCH] Re: Platform device matching On Mon, Apr 26, 2004 at 12:27:33AM +0100, Russell King wrote: > So, this comment needs updating: > > * So, extract the from the device, and compare it against > * the name of the driver. Return whether they match or not. Want a patch? Add missing cifs protocol data unit definitions [TG3]: Add eeprom dump support. [PATCH] USB: esthetic and trivial patch. [PATCH] USB: Altsetting update for USB IrDA driver This patch updates the USB IrDA driver to take into account that the kernel may no longer store altsetting entries in numerical order. The driver only needed one change; this was a simple matter of using the entry corresponding to the altsetting that was just installed. [PATCH] USB: update for mtouchusb The attached patch for the 3M Touch Systems Capacitive controller. (again) Quick list of changes: * decrease mtouch->open counter in the event of a urb submission failure The changes are due to comments Oliver Neukum's comments on the touchkit.c driver. Good catch! Sorry I missed it. http://marc.theaimsgroup.com/?l=linux-usb-devel&m=108343028201159&w=2 ia64: Avoid ".save rp, r0" since the kernel unwinder doesn't support it yet. Once we switch to a libunwind-based kernel unwinder, this code can be re-enabled again. Add smb copy function fix truncated directory listings on large directories to Samba (when Unicode and Unix extensions enabled) [PATCH] sym53c500_cs PCMCIA SCSI driver (round 5) Fifth attempt at a PCMCIA SCSI driver for the Symbios 53c500 controller. This version has all the cleanup Christoph has requested to date, including removal of support for the obsolete (in 2.6) proc_info functionality. Support for additional sysfs class device attributes has been added: two are read-only (irq, ioport), one is read-write (fast_pio). The read-write attribute is a per-instance flag indicating the PIO speed of the particular HBA: valid values are 1 (enabled -- default) and 0 (disabled). [PATCH] PATCH: (as255) Handle Unit Attention during INQUIRY better Some buggy USB storage devices can return Unit Attention status for INQUIRY commands. The current code in scsi_scan.c checks for ASC = 0x28 = Not ready to ready transition, but these devices can also return ASC = 0x29 = Power-on or reset occurred. In addition, the code doesn't retry the INQUIRY when these codes are received. [PATCH] minor changes to qla1280 driver On one of our big machines we found a problem with posted writes while running AIM. Two writes of the Request Queue In pointer went out of order, making the chip think that it had a queue wrap. I took advantage of this opportunity to add relaxed reads, which helps the Altix. It should not affect other arches. All reads are relaxed except for the read of the Semaphore register. [PATCH] aic7xxx deadlock fix We cannot call del_timer_sync() from within that timer's handler function! [PATCH] (5/5) pcmcia/nsp: use kernel.h min/max/ARRAY_SIZE From: Michael Veeck Subject: [Kernel-janitors] [PATCH] drivers/scsi/pcmcia MIN/MAX/NUMBER removal Patch (against 2.6.6-rc1) removes unnecessary min/max/number macros and changes calls to use kernel.h macros instead. drivers/scsi/pcmcia/nsp_cs.c | 12 ++++++------ drivers/scsi/pcmcia/nsp_cs.h | 2 -- 2 files changed, 6 insertions(+), 8 deletions(-) [PATCH] (2/5) aic7xyz_old: use kernel.h min/max/ARRAY_SIZE From: Michael Veeck Subject: [Kernel-janitors] [PATCH] drivers/scsi/aic7xxx_old MIN/MAX/NUMBER removal Patch (against 2.6.6-rc1) removes unnecessary min/max/number macros and changes calls to use kernel.h macros instead. drivers/scsi/aic7xxx_old.c | 43 ++++++++++++++------------------ drivers/scsi/aic7xxx_old/aic7xxx_proc.c | 6 ++-- 2 files changed, 23 insertions(+), 26 deletions(-) [PATCH] (4/5) nsp32 (ninja): use kernel.h min/max/ARRAY_SIZE From: Michael Veeck Subject: [Kernel-janitors] [PATCH] drivers/scsi/nsp MIN/MAX/NUMBER removal Patch (against 2.6.6-rc1) removes unnecessary min/max/number macros and changes calls to use kernel.h macros instead. drivers/scsi/nsp32.c | 24 ++++++++++++------------ drivers/scsi/nsp32.h | 4 ---- 2 files changed, 12 insertions(+), 16 deletions(-) [PATCH] (3/5) ncr53c8x: use kernel.h min/max From: Michael Veeck Subject: [Kernel-janitors] [PATCH] drivers/scsi/53c* MIN/MAX removal Patch (against 2.6.6-rc1) removes unnecessary min/max macros and changes calls to use kernel.h macros instead. drivers/scsi/ncr53c8xx.c | 6 +++--- drivers/scsi/sym53c8xx_comm.h | 5 +---- 2 files changed, 4 insertions(+), 7 deletions(-) [PATCH] support swsusp for aic7xxx From: Pavel Machek Marks threads as needed for suspend. DESC aic79xx_osm.c build fix EDESC drivers/scsi/aic7xxx/aic79xx_osm.c: In function `ahd_linux_dv_thread': drivers/scsi/aic7xxx/aic79xx_osm.c:2594: `PF_IOTHREAD' undeclared (first use in this function) [netdrvr b44] ethtool_ops support [netdrvr b44] use netdev_priv [netdrvr b44] use miilib for MII ioctl handling [PATCH] add simple class for adb This adds /sys/class/adb/, removes unused devfs lines and updates a comment to match reality. PCI Hotplug: revert broken PCI Express hotplug patch USB: add support for Zire 31 devices. Info was from Adriaan de Groot [PATCH] USB Gadget: fix pxa define in gadget_chips.h below is a trivial patch which fixes the PXA gadget define in drivers/linux/usb/gadget/gadget_chips.h Everywhere CONFIG_USB_GADGET_PXA2XX is used, except in that file, which bites obviously ... Fix define for PXA UDC. [PATCH] USB Gadget: fix g_serial debug module parm g_serial.ko can't be load as module because "debug" is only defined if G_SERIAL_DEBUG is defined, but "debug" is referenced in MODULE_PARM(). [PATCH] USB: usbnet handles Billionton Systems USB2AR This adds another ax8817x device to "usbnet". [PATCH] USB: add support for eGalax Touchscreen USB this is the second version of the patch to add support for eGalax Touchkit USB touchscreen. changes since last patch: - fixed the bug in open, found by oliver neukum - renamed driver from touchkit.c to touchkitusb.c (since the thing also exists as RS232, PS/2 and I2C) - some minor coding style updates [PATCH] USB: Reduce kernel stack usage This patch allocates a temporary array from the heap instead of from the kernel's stack in usb_set_configuration(). It also updates a few comments. Please apply. [PATCH] USB Storage: unusual_devs.h update On 4 May 2004, Rajesh Kumble Nayak wrote: > The Above patch work fine for Sony Hc-85 > I shall post the dmesg entry soon. > > With many thanks > Rajesh Greg and Pete, here's the patch. It's possible that this entry could be combined with the previous one, but until we know definitely they should be kept separate. [PATCH] USB: Small change to CPiA USB driver Only one aspect of it is notable: The CPiA USB driver calls usb_driver_release_interface() during its disconnect() routine. That doesn't appear to be necessary, since it didn't call usb_driver_claim_interface() beforehand and since the interface will be released automatically when disconnect() returns. [PATCH] USB Storage: Kyocera Finecsm 3L -unusual_devs.h [PATCH] PATCH: (as268) Import device-reset changes from gadget-2.6 tree This patch imports the changes that David Brownell has made to the device-reset functions in his gadget-2.6 tree. Once these ongoing troubling questions about locking are settled, I'll add support for the "descriptors changed" case. [PATCH] PCI Hotplug: rpaphp doesn't initialize slot's name Attached is a revised version of rpaphp.patch. It has the following fixes: - Set up slot->name - Kill some dbgs - Eike's fixes - New fixes for incorrect "goto" in rpaphp_slot.c. [PATCH] USB Storage: Sony Clie I've received the following report which indicates that the Sony Clie needs the US_FL_FIX_INQUIRY flag set. http://bugs.debian.org/243650 Driver core: handle error if we run out of memory in kmap code [PATCH] missing audit in bus_register() |How about using a goto on the error path to clean up properly |instead of the different return sections. .. here goes Take 2: [PATCH] I2C: Sensors (W83627HF) in Tyan S2882 [PATCH] I2C: Invert as99127f beep bits in kernel space The following patch changes the way we invert beep bits for the AS99127F sensor chip. This chip behaves differently from the other chips in that a disabled bit is 1, not 0. So far we didn't handle that specificity in the w83781d driver, so it was left to user-space applications to handle it. For the sake of uniformity, it's obviously better if it's done in the driver instead (although the meaning of each bit is still chip-dependant). I already did a similar change to the 2.4 driver and the sensors program. I don't think that many user-space application will be affected, since most of them don't handle the beep mask as far as I can tell. This also close Debian bug #209299: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=209299 Successfully tested on my AS99127F rev.1 chip. Aurelien Jarno also checked that there were no regression on non-Asus chips. [PATCH] I2C: Rewrite temperature conversions in via686a driver The following patch rewrites the temperature conversion macros and functions found in the via686a chip driver. Contrary to the voltage conversions a few weeks ago, temperature conversions were numerically correct, but artificially complex. The new ones are cleaner. It also fixes a highly improbable array overflow (would take one of the measured temperatures to be over 145 degrees C). Successfully tested by Mark D. Studebaker and I, and already applied to our CVS repository. [PATCH] I2C: Fix memory leaks in w83781d and asb100 Quoting myself > U-ho. I think I've introduced a memory leak with this patch :( > > For drivers that handle subclients (asb100 and w83781d on i2c), the > sublient memory is never released if I read the code correctly. This > is because we now free the private data on unload, assuming that it > contains the i2c client data as well. That's true for the main i2c > client, but not for the subclients (data == NULL so nothing is freed). > > Could someone take a look and confirm? I could test and actually saw memory leaking when cycling the w83781d driver at a sustained rate (5/s). > I can see two different fixes: > > 1* When freeing the memory, free the data if it's not NULL (main > client), else free client (subclients). Cleaner (I suppose?). > > 2* When creating subclients, do data = &client instead of data = NULL. > Then freeing will work. Less code, faster. Are there side effects? (I > don't think so) > > My preference would go to 2*. I ended up implementing 1*. That's cleaner and there's actually almost no extra code. Mark, can you confirm that I'm doing the correct thing? I'll do something similar in our CVS repository (for now, the asb100 and w83781d drivers had not their memory allocation scheme reworked there). [PATCH] I2C: add .class to i2c drivers in the "[RFC|PATCH][2.6] Additional i2c adapter flags for i2c client isolation" thread, the i2c people have agreed that an ".class" field should be added to struct i2c_driver. Currently only drivers do checks for plausibility ("Is this an adapter I can attach to?"), but adapters don't have a chance to keep drivers away from their bus. If both drivers and adapters provide a .class entry, the i2c-core can easily compare them and let devices only probe on busses where they can really exist. Real world example: DVB i2c adapters cannot ensure that only known DVB i2c chipsets probe their busses. Most client drivers probe every bus they get their hands on. This will confuse some DVB i2c busses. With the new I2C_CLASS_ALL flag it will be possible that an adapter can request that really all drivers are probed on the adapter. On the other hand, drivers can make sure that they get the chance to probe on every i2c adapter out there (this is not encouraged, though) The attached patch does the first step: - add .class member to struct i2c_device - remove unused .flags member from struct i2c_adapter - rename I2C_ADAP_CLASS_xxx to I2C_CLASS_xxx (to be used both for drivers and adapters) - add new I2C_CLASS_ALL and I2C_CLASS_SOUND classes - follow these changes in the existing drivers with copy & paste [PATCH] ia64: perfmon update - Cleanup the read/write check routines for pfm_write_pmcs, pfm_write_pmds, pfm_read_pmds. - Autodetect the PMU model. No need to have the kernel compiled for Itanium, HP Simulator, or Itanium2. The support for all PMU models is included. Probing is based on processor family and platform_name, if necessary. With this patch, it is possible to use an Itanium2 compiled kernel on an Itanium 1 system and get perfmon to work. - Removed remaining dependency on CONFIG_MCKINLEY by adding a new field (flags) to pmu_config_t. Update /proc/perfmon to show the new field. - Fixed a bug in the Itanium2 pmc_ita2_write_check() where an inactive PMC13 would be considered active. [PATCH] ia64: initialize IO-port-base early (start_secondary): Set up IO port base here, in case early console needs it. (smp_callin): Move IO port base setup to start_secondary(). [PATCH] ia64: arch/ia64/kernel/smp.c: kill duplicate #include linux/cache.h is included more than once. ia64: rename "mem" boot parameter to "max_addr" and implement proper "mem" Patch by Robert Picco: This patch renames the mem bootparameter to max_addr and implements the mem boot parameter to work as documented (i.e., to limit the amount of memory to be recognized by the kernel). [PATCH] PCI: PCI devices with no PCI_CACHE_LINE_SIZE implemented On Wed, May 05, 2004 at 03:31:02PM -0700, Greg KH wrote: > On Thu, Apr 29, 2004 at 02:53:01PM -0500, Matt Domsch wrote: > > a) need this be a warning, wouldn't KERN_DEBUG suffice, if a message > > is needed at all? This is printed in pci_generic_prep_mwi(). > > Yes, we should make that KERN_DEBUG. I don't have a problem with that. > Care to make a patch? [PATCH] ia64: SN2 - remove node_first_cpu member Remove node_first_cpu member from nodepda_s and replace its usage with calls to sn_get_node_first_cpu(). ia64: Fix spurious GAS dependency-violation (dv) warnings by taking advantage of two new GAS directives (.serialize.{data,instruction}). [CPUFREQ] Export scaling cur frequencies Many users want to know the current cpu freqeuncy, even if not using the userspace frequency. On ->target cpufreq drivers (if they do their calls to cpufreq_notify_transition correctly) this just means reading out cpufreq_policy->cur. [CPUFREQ] Move cpufreq_get() from the userspace governor to the core. Contrary to the previous implementation, it now calls the cpufreq driver, and reads out the _actual_ current frequency, and not the frequency the CPUfreq core _thinks_ the CPU is running at. Most cpufreq drivers do provide such a "hw get" function (only ACPI-io can definitely not be supported, I'm not sure about sh, sparc64 and powermac) anyway, and it is useful for other issues. [CPUFREQ] Export cpufreq_get() to userspace. As it involves calls to hardware which might take some time, only let the super-user read out this value. [CPUFREQ] Fix 'out of sync' issue. Sometimes we might discover during a call to cpufreq_get() that we're "out of sync", meaning the actual CPU frequency changed "behind our back". If this happens, the flag CPUFREQ_PANIC_OUTOFSYNC decides what can be done: if it is set, the kernel panic's, it it is not set, the cpufreq transition notifiers are informed of this change, and a call to cpufreq_update_policy() is scheduled [using the default workqueue] so that the user-defined values override BIOS / external interaction. [CPUFREQ] (Hopefully) fix cpufreq resume support. Upon resuming, first CPUfreq hardware support needs to be re-enabled in certain cases (call to cpufreq_driver->resume()). Then, two different paths may need to be taken: a) frequency during suspend equals frequency during resume ==> everything is fine, b) frequency differ ==> either we can't handle it, then panic (see flag CPUFREQ_PANIC_RESUME_OUTOFSYNC). Or we can handle it, then notify all [CPUFREQ] Handle CPUFREQ_RESUMECHANGE notifications Notifications in i386, sparc64, x86_64, sh-sci and sa11xx-pcmcia notifiers. sa1100-framebuffer doesn't seem to be able to handle frequency transitions behind its back well. So, sa11xx will be marked CPUFREQ_PANIC_OUTOFSYNC | CPUFREQ_PANIC_RESUME_OUTOFSYNC later. [CPUFREQ] use elanfreq's internal get function as ->get() [CPUFREQ] use gx-suspmod's internal get function as ->get() [CPUFREQ] Add a longhaul_get function. [CPUFREQ] Add longrun ->get Longrun users might be interested in their CPU's current frequency as well, so use a longrun-specific cpuid-call in longrun_get(). [CPUFREQ] Add p4-clockmod ->get p4-clockmod is a bit more complicated as it might run on SMP, HT, and the instructions need to run on the specific (physical) CPU. [CPUFREQ] powernow-k6 ->get powernow_k6 has almost all pieces in place for its own ->get() function. Add the rest. [CPUFREQ] powernow-k7->get() implementation by Bruno Ducrot. [CPUFREQ] Add powernowk8_get() but be careful as some code needs to run on specified CPU only. [CPUFREQ] use speedstep_centrino's internal get function as ->get() [CPUFREQ] Use speedstep_lib's capabilites for ->get() in speedstep-ich.c [CPUFREQ] Use speedstep_lib's capabilites for ->get() in speedstep-smi.c JFS: Avoid race invalidating metadata page [CPUFREQ] arm-integrator ->get() implementation arm-integrator had its ->get() implementation inside integrator_cpufreq_init(). Move it to an extra function, and add it as ->get() function. [CPUFREQ] sa11x0 ->get sa11x0_getspeed can be used by both cpu-sa1100.c and cpu-sa1110.c as ->get() function. Update calling conventions, and un-export it as we fixed the handling of cpufreq_get in the cpufreq core. Also, remove special call to userspace-governor init as it isn't needed any longer. [CPUFREQ] Handle CPU frequency changing behind our back. Once we detected 50 consecutive ticks with lost ticks (and this is half of the amount needed to trigger the fallback to a "sane" timesource), verify the CPU frequency is in sync if cpufreq is used: sometimes the CPU frequency changes behind the user's back, and then the TSC detects lost ticks. By a call to cpufreq_get(), the frequency the TSC driver thinks the CPU is in is updated to the actual frequency, in case these differ. Works really nice on my notebook -- it's never falling back to a different timesource now, even if I plug in the power cord. [CPUFREQ] Also check whether the CPU frequency is out of sync once we get to cpufreq_notify_transition. [CPUFREQ] Handle P4 TSC scaling. Currently, the TSC cpufreq notifiers does almost nothing on P4s, as we assumed the TSC to be constant independent of _all_ frequency transitions. Extensive testing by Karol Kozimor has shown, though, that only _throttling_ does not affect the TSC, but _scaling_ does. So: - pass the CPUFREQ_CONST_LOOPS flags (to be exact, all flags) to cpufreq transition notifiers - skip TSC value changes if this flag is set - set this flag for P4 / P4-Ms only in p4-clockmod [On Pentium-M banias the TSC _is_ affected by p4-clock modulation [CPUFREQ] Clean up P4 centrino detection. Add a new "struct cpu_id" for better handling of different Pentium M steppings / revisions. [CPUFREQ] Improved Banias detection. The built-in tables are only valid for Pentium M (Banias) processors with CPUID 6/9/5. So, add a pointer to the proper struct cpu_id to the cpu_model struct, and re-name _CPU/CPU to _BANIAS/BANIAS [CPUFREQ] Add support for Pentium M (Dothan) processors. Until further review, only ACPI data will get this driver to run - no built-in tables will exist. Many thanks to Thomas Renninger for reporting the lack of, and testing the support for Dothan processors. [CPUFREQ] Add support for Pentium M (Dothan) processors for p4-clockmod. But warn loudly if anyone tries to use it -- you really should use speedstep-centrino instead. On Dothans, the TSC is _not_ affected by TSC transitions (contrary to Banias processors), so set the CPUFREQ_CONST_LOOPS flag. Many thanks to Thomas Renninger for reporting the lack of, and testing the support for Dothan processors. JFS: reduce stack usage [PATCH] ia64: fix MOD_{INC,DEC}_USE_COUNT use in prominfo set proper proc_entry owner instead. Patch OK'd by Jesse Barnes. JFS: [CHECKER] More robust error recovery in add_index If an error is encountered in add_index, it now leaves the index table in a consistent state. Since the return value is stored in the directory entry regardless of add_index's success, return zero instead of -EPERM (which made no sense). Add modules to sysfs This patch adds basic kobject support to struct module, and it creates a /sys/module directory which contains all of the individual modules. Each module currently exports the refcount (if they are unloadable) and any module paramaters that are marked exportable in sysfs. Was written by me and Rusty over and over many times during the past 6 months. update readme for mode,uid,gid description [PATCH] ia64: make perfmon treat Ski simulator like real Itanium chip Remove perfmon_hpsim.c. Support is folded into perfmon_itanium.c or perfmon_itanium2.c depending on how Ski identifies itself via the CPU ID family (Merced or McKinley/Madison). Also fix firmware emulator PAL_PERFMON_INFO emulation to report Itanium2 information. [TG3]: Add 572x/575x PCI IDs. [TG3]: Add 5750 chip and PHY IDs. [TG3]: Prepare for 5750 support plus minor fixes. 1) Handle cases that apply to 5750 the same as 5705. 2) Only set CLOCK_CTRL_FORCE_CLKRUN on 5705_A0 3) Clear out on-chip and memory stats block right before setting MAC_MODE. 4) On bootup chip probe, always skip PHY reset if link is up. [TIGON3]: Detect and record PCI Express. [TG3]: PCI Express 5750_A0 chips need 5701_REG_WRITE_BUG treatment. [TG3]: Fix chiprev test in previous change. [TG3]: Do not set CLOCK_CTRL_DELAY_PCI_GRANT on PCI Express. [TG3]: Double delay after writing MAC_MI_MODE reg. [TG3]: Correct RDMAC/WDMAC mode settings on 5705/5750. [TG3]: Do not write stats coalescing ticks reg on 5705/5750. Input: trailing whitespace fixes in drivers/input/serio Input: kbd98io_interrupt should return irqreturn_t Input: kbd98_interrupt should return irqreturn_t Input: various fixes for H3600 touchscreen driver - h3600ts_interrupt, npower_button_handler and action_button_handler should return irqreturn_t - fix missing argument in h3600ts_process_packet call - add MODULE_AUTHOR, MODULE_DESCRIPTION and MODULE_LICENSE - small formatting changes Input: twidjoy module - twidjoy_interrupt should return irqreturn_t - add MODULE_DESCRIPTION and MODULE_LICENSE Input: trailing whitespace fixes in drivers/input/keyboard Input: power - add MODULE_LICENSE Input: trailing whitespace fixes in drivers/input/joystick Input: trailing whitespace fixes in drivers/input/gameport Input: trailing whitespace fixes in drivers/input Input: do not call synaptics_init unless we are ready to do full mouse setup Input: split i8042 interrupt handling into an IRQ handler and a tasklet Patch from Sau Dan Lee Input: i8042 - kill the timer only after removing interrupt handler, otherwise there is a chance that interrupt handler will install the timer again and it will trigger after module is unloaded. Input: mousedev - better multiplex absolute and relative devices; cleanups NTFS: 2.1.9 release - Fix two bugs in the decompression engine in handling of corner cases. [CPUFREQ] Warning fixes. On sparc64: drivers/cpufreq/cpufreq.c: In function `cpufreq_add_dev': drivers/cpufreq/cpufreq.c:394: warning: cast to pointer from integer of different size drivers/cpufreq/cpufreq.c: In function `handle_update': drivers/cpufreq/cpufreq.c:507: warning: cast from pointer to integer of different size [PATCH] Make SCSI timeout modifiable add a timeout field to struct scsi_device and expose it in in sysfs. This patch allows LLDs to override the default timeout used for scsi devices and exposes it in sysfs. The default timeout value used is too short for many RAID array devices, such as those created by the ipr driver. MPT Fusion driver 3.01.06 update From: Moore, Eric Dean [PATCH] PATCH [1/15] qla2xxx: Firmware dump fixes ISP dump routine fixes: o Properly release hardware_lock in failure path. o Fix inability to complete ISP2100 dump, by properly reseting the RISC after register reads. drivers/scsi/qla2xxx/qla_dbg.c | 34 ++++++++++++---------------------- 1 files changed, 12 insertions(+), 22 deletions(-) [PATCH] PATCH [2/15] qla2xxx: Remove flash routines Remove flash support from embedded driver: o Remove unused option-rom variables from host structure. o Remove flash manipulation routines. drivers/scsi/qla2xxx/qla_def.h | 2 drivers/scsi/qla2xxx/qla_gbl.h | 8 drivers/scsi/qla2xxx/qla_init.c | 3 drivers/scsi/qla2xxx/qla_sup.c | 446 ---------------------------------------- 4 files changed, 459 deletions(-) [PATCH] PATCH [3/15] qla2xxx: 2100 request-q contraints Older, notably the ISP2100, chips have some contraints for the request queue depth and number of scatter-gather elements allowed for a given command. For this chip, reduce request queue size to 128 and maximum number of scatter-gather entries for a command to 32. drivers/scsi/qla2xxx/qla_def.h | 14 +++----------- drivers/scsi/qla2xxx/qla_init.c | 9 +++++---- drivers/scsi/qla2xxx/qla_iocb.c | 14 +++++++------- drivers/scsi/qla2xxx/qla_os.c | 14 +++++++++----- drivers/scsi/qla2xxx/qla_rscn.c | 2 +- 5 files changed, 25 insertions(+), 28 deletions(-) [PATCH] PATCH [4/15] qla2xxx: PortID binding fixes Fix problem where port ID binding would not be honoured when a device was moved within the fabric. drivers/scsi/qla2xxx/qla_init.c | 33 ++++++++++++++++++++++++--------- 1 files changed, 24 insertions(+), 9 deletions(-) [PATCH] PATCH [5/15] qla2xxx: Debug messages during ISP abort Issue a kernel warning message before initiating an ISP abort (big hammer) -- additional debugging mechanism in case of event. drivers/scsi/qla2xxx/qla_mbx.c | 9 +++++++++ drivers/scsi/qla2xxx/qla_os.c | 2 ++ drivers/scsi/qla2xxx/qla_rscn.c | 2 ++ 3 files changed, 13 insertions(+) [PATCH] PATCH [6/15] qla2xxx: LoopID downcast fix Fix problem where the driver would incorrectly down-cast the target loop_id while retrieving link statistics. drivers/scsi/qla2xxx/qla_gbl.h | 2 +- drivers/scsi/qla2xxx/qla_mbx.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) [PATCH] PATCH [7/15] qla2xxx: Firmware options fixes Cleanup retrieval and update of firmware options: o Update only valid for non-(2[12]00) ISPs. o Instruct firmware to return completed IOCBs without waiting for an ABTS to complete. drivers/scsi/qla2xxx/qla_init.c | 79 +++++++++++++++++++++++++--------------- 1 files changed, 50 insertions(+), 29 deletions(-) [PATCH] PATCH [8/15] qla2xxx: Volatile topology fixes Fix problem where during ISP initialization in a volatile topology (i.e. fabric environment with large number of streaming RSCNs) the driver would loop indefinitely or hang due to termination of an invalid thread pid. drivers/scsi/qla2xxx/qla_init.c | 142 ++++++++++++++++------------------------ drivers/scsi/qla2xxx/qla_os.c | 1 2 files changed, 60 insertions(+), 83 deletions(-) [PATCH] PATCH [9/15] qla2xxx: Tape command handling fixes Fix several problems when handling commands issued to tape devices: 1) insure commands are not prematurely returned to the mid-layer with a failed status during loop/fabric transitions. 2) tape commands tend to have rather 'long' timeout values, unfortunately, as the these values increase into the 17 to 20 minute range (and larger), the cumulative skew of the RISC's own timer result in commands being held for seconds beyond their defined timeout values. Compensate for this in the driver's command timeout function. drivers/scsi/qla2xxx/qla_def.h | 3 + drivers/scsi/qla2xxx/qla_init.c | 4 ++ drivers/scsi/qla2xxx/qla_isr.c | 10 ++--- drivers/scsi/qla2xxx/qla_os.c | 74 ++++++++++++++++++++++++++++++++++++---- 4 files changed, 79 insertions(+), 12 deletions(-) [PATCH] PATCH [10/15] qla2xxx: Use readX_relaxed Jeremy Higdon : For those to whom this is new (it was discussed on linux-kernel and linux-ia64 I believe), normal PCI register reads imply that PCI DMA writes that occured prior to the PCI MMR (memory mapped register) read (on the PCI bus) will be reflected in system memory once the MMR read is complete. On our platforms, we can speed up the MMR read significantly if that ordering requirement is "relaxed". So I attempted to find the common register reads that don't have a need for this ordering so that I could make them use this faster read. drivers/scsi/qla2xxx/qla_def.h | 3 +++ drivers/scsi/qla2xxx/qla_iocb.c | 6 +++--- drivers/scsi/qla2xxx/qla_isr.c | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) [PATCH] PATCH [11/15] qla2xxx: /proc fixes /proc file updates: o Address 'unaligned access' message on ia64 platorms while displaying bit-field flags. o Iterate through the the OS target array to display target ID bindings. drivers/scsi/qla2xxx/qla_os.c | 30 ++++++++++++------------------ 1 files changed, 12 insertions(+), 18 deletions(-) [PATCH] PATCH [12/15] qla2xxx: RIO/ZIO fixes RIO/ZIO fixes: o Reduce register access during RIO operation by checking for a 'dirtied' signature. o Fix problem where ZIO mode handling could result in a nasty recursive call-frame. drivers/scsi/qla2xxx/qla_os.c | 5 +---- 1 files changed, 1 insertion(+), 4 deletions(-) [PATCH] PATCH [13/15] qla2xxx: Misc. code scrubbing Misc. driver scrubbing: o Use kernel #define for PCI command register bit. o Fix rate-limiting check the queue-depth module parameter. o Clean-up comments. drivers/scsi/qla2xxx/qla_init.c | 2 +- drivers/scsi/qla2xxx/qla_mbx.c | 1 - drivers/scsi/qla2xxx/qla_os.c | 7 +++---- 3 files changed, 4 insertions(+), 6 deletions(-) PATCH [14/15] qla2xxx: Resync with latest released firmware -- 3.02.28. From: Andrew Vasquez drivers/scsi/qla2xxx/ql2300_fw.c |12380 +++++++++++++++++++-------------------- drivers/scsi/qla2xxx/ql2322_fw.c |11812 ++++++++++++++++++------------------- drivers/scsi/qla2xxx/ql6312_fw.c |10174 ++++++++++++++++---------------- drivers/scsi/qla2xxx/ql6322_fw.c |10352 ++++++++++++++++---------------- 4 files changed, 22368 insertions(+), 22350 deletions(-) [PATCH] PATCH [15/15] qla2xxx: Update driver version Update version number to 8.00.00b12-k. drivers/scsi/qla2xxx/qla_version.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) [PATCH] imm/ppa style police fix remaining style problems after Al ressurrected the drivers. [PATCH] missing pci_set_master in megaraid [PATCH] mca_53c9x needs CONFIG_MCA_LEGACY sym53c500_cs remove irq,ioport scsi attributes From: Bob Tracy [PATCH] Initio INI-9X00U/UW error handling in 2.6 Plumb old error handling into new eh infrastructure. [Bluetooth] Fix disconnect race on ISOC interface The hci_usb_disconnect() gets called recursively when SCO support is enabled and used. This causes sysfs_hash_and_remove() finally to dereference a NULL pointer. Noticed by Sebastian Schmidt [Bluetooth] Adapt changes for USB core altsettings The USB core has changed its way the interfaces and the altsettings are stored. The probe routines of the USB based Bluetooth drivers must be changed and in some cases they are simplified. Patch from Alan Stern JFS: module unload was not removing /proc/fs/jfs/ Add IBM power RAID driver 2.0.6 From: Brian King [netdrvr tg3] netdev_priv [Bluetooth] Use type of the parent socket The SELinux fixes for kernel sockets assume that we always use the type SOCK_SEQPACKET, but this must not be the truth. Give the sock->type as argument to sock_create_lite() and everything is correct for the new child socket. Add SCSI IPR PCI Ids to pci_ids.h [PATCH] small scheduler cleanup From: Ingo Molnar From: Nick Piggin wrote: It removes the last place where we mess with run_list open coded. [PATCH] sched: improved resolution in find_busiest_node From: Nick Piggin From: Frank Cornelis In order to get the best possible resolution we need to use NR_CPUS instead of the constant value 10. load is an int, so no need to worry about overflows... [PATCH] sched: scheduler domain support From: Nick Piggin This is the core sched domains patch. It can handle any number of levels in a scheduling heirachy, and allows architectures to easily customize how the scheduler behaves. It also provides progressive balancing backoff needed by SGI on their large systems (although they have not yet tested it). It is built on top of (well, uses ideas from) my previous SMP/NUMA work, and gets results very similar to them when using the default scheduling description. Benchmarks ========== Martin was seeing I think 10-20% better system times in kernbench on the 32 way. I was seeing improvements in dbench, tbench, kernbench, reaim, hackbench on a 16-way NUMAQ. Hackbench in fact had a non linear element which is all but eliminated. Large improvements in volanomark. Cross node task migration was decreased in all above benchmarks, sometimes by a factor of 100!! Cross CPU migration was also generally decreased. See this post: http://groups.google.com.au/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&frame=right&th=a406c910b30cbac4&seekm=UAdQ.3hj.5%40gated-at.bofh.it#link2 Results on a hyperthreading P4 are equivalent to Ingo's shared runqueues patch (which is a big improvement). Some examples on the 16-way NUMAQ (this is slightly older sched domain code): http://www.kerneltrap.org/~npiggin/w26/hbench.png http://www.kerneltrap.org/~npiggin/w26/vmark.html From: Jes Sorensen Tiny patch to make -mm3 compile on an NUMA box with NR_CPUS > BITS_PER_LONG. From: "Martin J. Bligh" Fix a minor nit with the find_busiest_group code. No functional change, but makes the code simpler and clearer. This patch does two things ... adds some more expansive comments, and removes this if clause: if (*imbalance < SCHED_LOAD_SCALE && max_load - this_load > SCHED_LOAD_SCALE) *imbalance = SCHED_LOAD_SCALE; If we remove the scaling factor, we're basically conditionally doing: if (*imbalance < 1) *imbalance = 1; Which is pointless, as the very next thing we do is to remove the scaling factor, rounding up to the nearest integer as we do: *imbalance = (*imbalance + SCHED_LOAD_SCALE - 1) >> SCHED_LOAD_SHIFT; Thus the if statement is redundant, and only makes the code harder to read ;-) From: Rick Lindsley In find_busiest_group(), after we exit the do/while, we select our imbalance. But max_load, avg_load, and this_load are all unsigned, so min(x,y) will make a bad choice if max_load < avg_load < this_load (that is, a choice between two negative [very large] numbers). Unfortunately, there is a bug when max_load never gets changed from zero (look in the loop and think what happens if the only load on the machine is being created by cpu groups of which we are a member). And you have a recipe for some really bogus values for imbalance. Even if you fix the max_load == 0 bug, there will still be times when avg_load - this_load will be negative (thus very large) and you'll make the decision to move stuff when you shouldn't have. This patch allows for this_load to set max_load, which if I understand the logic properly is correct. With this patch applied, the algorithm is *much* more conservative ... maybe *too* conservative but that's for another round of testing ... From: Ingo Molnar sched-find-busiest-fix [PATCH] sched_domain debugging From: Nick Piggin Anton was attempting to make a sched domain topology for his POWER5 and was having some trouble. This patch only includes code which is ifdefed out, but hopefully it will be of some use to implementors. [PATCH] scheduler domain balancing improvements From: Nick Piggin This patch gets the sched_domain scheduler working better WRT balancing. Its been tested on the NUMAQ. Among other things it changes to the way SMT load calculation works so as not to active load blances when it shouldn't. It still has a problem with SMT and NUMA: it will put a task on each sibling in a node before moving tasks to another node. It should probably start moving tasks after each *physical* CPU is filled. To fix, you need "how much CPU power in this domain?" At the moment we approximate # runqueues == CPU power, and hack around it at the CPU physical domain by counting all sibling runqueues as 1. It isn't hard to correctly work the CPU power out, but once CPU hotplug is in the equation it becomes much more hotplug events. If anyone is actually interested in getting this fixed, that is. [PATCH] sched: cpu_sibling_map to cpu_mask From: Nick Piggin This is a (somewhat) trivial patch which converts cpu_sibling_map from an array of CPUs to an array of cpumasks. Needed for >2 siblings per package, but it actually can simplify code as it allows the cpu_sibling_map to be set up even when there is 1 sibling per package. Intel want this, I use it in the next patch to build scheduling domains for the P4 HT. From: Thomas Schlichter Build fix From: "Pallipadi, Venkatesh" Fix to handle more than 2 siblings per package. [PATCH] sched: implement domains for i386 HT From: Nick Piggin The following patch builds a scheduling description for the i386 architecture using cpu_sibling_map to set up SMT if CONFIG_SCHED_SMT is set. It could be made more fancy and collapse degenerate domains at runtime (ie. 1 sibling per CPU, or 1 NUMA node in the computer). From: Zwane Mwaikambo This fixes an oops due to cpu_sibling_map being uninitialised when a system with no MP table (most UP boxen) boots a CONFIG_SMT kernel. What also happens is that the cpu_group lists end up not being terminated properly, but this oops kills it first. Patch tested on UP w/o MP table, 2x P2 and UP Xeon w/ no siblings. From: "Martin J. Bligh" , Nick Piggin Change arch_init_sched_domains to use cpu_online_map From: Anton Blanchard Fix build with NR_CPUS > BITS_PER_LONG [PATCH] sched: handle inter-CPU jiffies skew From: Nick Piggin John Hawkes discribed this problem to me: There *is* a small problem in this area, though, that SuSE avoids. "jiffies" gets updated by cpu0. The other CPUs may, over time, get out of sync (and they're initialized on ia64 to start out being out of sync), so it's no guarantee that every CPU will wake up from its timer interrupt and see a "jiffies" value that is guaranteed to be last_jiffies+1. Sometimes the jiffies value may be unchanged since the last wakeup. Sometimes the jiffies value may have incremented by 2 (or more, especially if cpu0's interrupts are disabled for long stretches of time). So an algoithm that says, "I'll call load_balance() only when jiffies is *exactly* N" is going to fail on occasion, either by calling load_balance() too often or not often enough. *** I fixed this by adding a last_balance field to struct sched_domain, and working off that. [PATCH] sched_balance_exec(): don't fiddle with the cpus_allowed mask From: Rusty Russell , Nick Piggin The current sched_balance_exec() sets the task's cpus_allowed mask temporarily to move it to a different CPU. This has several issues, including the fact that a task will see its affinity at a bogus value. So we change the migration_req_t to explicitly specify a destination CPU, rather than the migration thread deriving it from cpus_allowed. If the requested CPU is no longer valid (racing with another set_cpus_allowed, say), it can be ignored: if the task is not allowed on this CPU, there will be another migration request pending. This change allows sched_balance_exec() to tell the migration thread what to do without changing the cpus_allowed mask. So we rename __set_cpus_allowed() to move_task(), as the cpus_allowed mask is now set by the caller. And move_task_away(), which the migration thread uses to actually perform the move, is renamed __move_task(). I also ignore offline CPUs in sched_best_cpu(), so sched_migrate_task() doesn't need to check for offline CPUs. Ulterior motive: this approach also plays well with CPU Hotplug. Previously that patch might have seen a task with cpus_allowed only containing the dying CPU (temporarily due to sched_balance_exec) and forcibly reset it to all cpus, which might be wrong. The other approach is to hold the cpucontrol sem around sched_balance_exec(), which is too much of a bottleneck. [PATCH] sched-group-power From: Nick Piggin The following patch implements a cpu_power member to struct sched_group. This allows special casing to be removed for SMT groups in the balancing code. It does not take CPU hotplug into account yet, but that shouldn't be too hard. I have tested it on the NUMAQ by pretending it has SMT. Works as expected. Active balances across nodes. [PATCH] sched_domains: use cpu_possible_map From: Nick Piggin This changes sched domains to contain all possible CPUs, and check for online as needed. It's in order to play nicely with CPU hotplug. [PATCH] sched: SMT niceness handling From: Con Kolivas This patch provides full per-package priority support for SMT processors (aka pentium4 hyperthreading) when combined with CONFIG_SCHED_SMT. It maintains cpu percentage distribution within each physical cpu package by limiting the time a lower priority task can run on a sibling cpu concurrently with a higher priority task. It introduces a new flag into the scheduler domain unsigned int per_cpu_gain; /* CPU % gained by adding domain cpus */ This is empirically set to 15% for pentium4 at the moment and can be modified to support different values dynamically as newer processors come out with improved SMT performance. It should not matter how many siblings there are. How it works is it compares tasks running on sibling cpus and when a lower static priority task is running it will delay it till high_priority_timeslice * (100 - per_cpu_gain) / 100 <= low_prio_timeslice eg. a nice 19 task timeslice is 10ms and nice 0 timeslice is 102ms On vanilla the nice 0 task runs on one logical cpu while the nice 19 task runs unabated on the other logical cpu. With smtnice the nice 0 runs on one logical cpu for 102ms and the nice 19 sleeps till the nice 0 task has 12ms remaining and then will schedule. Real time tasks and kernel threads are not altered by this code, and kernel threads do not delay lower priority user tasks. with lots of thanks to Zwane Mwaikambo and Nick Piggin for help with the coding of this version. If this is merged, it is probably best to delay pushing this upstream in mainline till sched_domains gets tested for at least one major release. [PATCH] sched: add local load metrics From: Nick Piggin This patch removes the per runqueue array of NR_CPU arrays. Each time we want to check a remote CPU's load we check nr_running as well anyway, so introduce a cpu_load which is the load of the local runqueue and is kept updated in the timer tick. Put them in the same cacheline. This has additional benefits of having the cpu_load consistent across all CPUs and more up to date. It is sampled better too, being updated once per timer tick. This shouldn't make much difference in scheduling behaviour, but all benchmarks are either as good or better on the 16-way NUMAQ: hackbench, reaim, volanomark are about the same, tbench and dbench are maybe a bit better. kernbench is about one percent better. John reckons it isn't a big deal, but it does save 4K per CPU or 2MB total on his big systems, so I figure it must be a bit kinder on the caches. I think it is just nicer in general anyway. [PATCH] Reduce TLB flushing during process migration From: Martin Hicks Another optimization patch from Jack Steiner, intended to reduce TLB flushes during process migration. Most architextures should define tlb_migrate_prepare() to be flush_tlb_mm(), but on i386, it would be a wasted flush, because i386 disconnects previous cpus from the tlb flush automatically. [PATCH] sched: trivial fixes, cleanups From: Ingo Molnar The trivial fixes. - added recent trivial bits from Nick's and my patches. - hotplug CPU fix - early init cleanup [PATCH] Hotplug CPU sched_balance_exec Fix From: Rusty Russell From: Srivatsa Vaddagiri From: Andrew Morton From: Rusty Russell We want to get rid of lock_cpu_hotplug() in sched_migrate_task. Found that lockless migration of execing task is _extremely_ racy. The races I hit are described below, alongwith probable solutions. Task migration done elsewhere should be safe (?) since they either hold the lock (sys_sched_setaffinity) or are done entirely with preemption disabled (load_balance). sched_balance_exec does: a. disables preemption b. finds new_cpu for current c. enables preemption d. calls sched_migrate_task to migrate current to new_cpu and sched_migrate_task does: e. task_rq_lock(p) f. migrate_task(p, dest_cpu ..) (if we have to wait for migration thread) g. task_rq_unlock() h. wake_up_process(rq->migration_thread) i. wait_for_completion() Several things can happen here: 1. new_cpu can go down after h and before migration thread has got around to handle the request ==> we need to add a cpu_is_offline check in __migrate_task 2. new_cpu can go down between c and d or before f. ===> Even though this case is automatically handled by the above change (migrate_task being called on a running task, current, will delegate migration to migration thread), would it be good practice to avoid calling migrate_task in the first place itself when dest_cpu is offline. This means adding another cpu_is_offline check after e in sched_migrate_task 3. The 'current' task can get preempted _immediately_ after g and when it comes back, task_cpu(p) can be dead. In which case, it is invalid to do wake_up on a non-existent migration thread. (rq->migration_thread can be NULL). ===> We should disable preemption thr' g and h 4. Before migration thread gets around to handle the request, its cpu goes dead. This will leave unhandled migration requests in the dead cpu. ===> We need to wakeup sleeping requestors (if any) in CPU_DEAD notification. I really wonder if we can get rid of these issues by avoiding balancing at exec time and instead have it balanced during load_balance ..Alternately if this is valuable and we want to retain it, I think we still need to consider a read/write sem, with sched_migrate_task doing down_read_trylock. This may eliminate the deadlock I hit between cpu_up and CPU_UP_PREPARE notification, which had forced me away from r/w sem. Anyway patch below addresses the above races. Its against 2.6.6-rc2-mm1 and has been tested on a 4way Intel Pentium SMP m/c. Rusty sez: Two other changes: 1) I grabbed a reference to the thread, rather than using preempt_disable(). It's the more obvious way I think. 2) Why the wait_to_die code? It might be needed if we move tasks after stop_machine, but for nowI don't see the problem with the migration thread running on the wrong CPU for a bit: nothing is on this runqueue so active_load_balance is safe, and __migrate task will be a noop (due to cpu_is_offline() check). If there is a problem, your fix is racy, because we could be preempted immediately afterwards. So I just stop the kthread then wakeup any remaining... [PATCH] sched: wakeup balancing fixes From: Nick Piggin Make affine wakes and "passive load balancing" more conservative. Aggressive affine wakeups were causing huge regressions in dbt3-pgsql on 8-way non NUMA systems at OSDL's STP. [PATCH] sched: fix imbalance calculations From: Nick Piggin Imbalance calculations were not right. This would cause unneeded migration. [PATCH] sched: altix tuning From: Nick Piggin From: John Hawkes The following brings up performance on a 64-way Altix. This system being on the smaller end of the scale should also be applicable to other NUMA systems. [PATCH] sched: oops fix From: Nick Piggin After the for_each_domain change, the warn here won't trigger, instead it will oops in the if statement. Also, make sure we don't pass an empty cpumask to for_each_cpu. [PATCH] ppc64: sched-domain support From: Anton Blanchard Below are the diffs between the current ppc64 sched init stuff and x86. - Ignore the POWER5 specific stuff, I dont set up a sibling map yet. - What should I set cache_hot_time to? large cpumask typechecking requirements (perhaps useful on x86 as well): - cpu->cpumask = CPU_MASK_NONE -> cpus_clear(cpu->cpumask); - cpus_and(nodemask, node_to_cpumask(i), cpu_possible_map) doesnt work, need to use a temporary [PATCH] ARCH_HAS_SCHED_WAKE_BALANCE doesnt exist From: Anton Blanchard It seems someone has been making trivial changes without using grep. [PATCH] sched: fix setup races From: Nick Piggin De-racify the sched domain setup code. This involves creating a dummy "init" domain during sched_init (which is called early). When topology information becomes available, the sched domains are th