Summary of changes from v2.5.52 to v2.5.53 ============================================ Update aic7xxx driver to 6.2.10. Add aic79xx U320 SCSI driver version 1.1.1 Final 1.1.1 aic79xx driver updates Bring in some deltas that were missed in the aic79xx 1.1.1 and aic7xxx 6.2.10 updates. The aic79xx driver now also supports mid-layer induced ordered tag operations. ia64: Make mremap() work properly when returning "negative" addresses. Based on patch by Matt Chapman. ia64: Define new "arch_switch" macros so that the tasklist_lock can be released during the (low-level) context-switch. Patch by Erich Focht. ia64: Fix efi_memmap_walk() to work with more complicated memory maps. Fix ACPI_ACQUIRE_GLOBAL_LOCK and ACPI_RELEASE_GLOBAL_LOCK. Both bugs reported by Charles Sluder. [PATCH] ia64: mca logging bug fixes I've attached a version of Jenna Hall's mca logging fixes, updated for 2.5.45. Jenna listed the benefits as: 1. Simplifies and fixes date reporting during MCA log printing (patch from Matthew Wilcox) 2. Fixes nested MCA handling 3. Fixes clearing of fatal error records from SAL logs upon reboot 4. Fixes returning the PAL min-state address upon return from OS_MCA Item #1 was already in 2.5.45. In addition to Jenna's changes, I deleted some unused debug code (and associated data min_state_labels[]), and dropped the #warning about save_and_cli() that you had added. [PATCH] ia64: C99 designated initializer for arch/ia64/sn/ Here's a trivial patch for one file deep in the ia64 tree. The patch is against 2.5.47. [PATCH] ia64: [Trivial Patch] scsi_register-001-002 Via Rusty Russell: Updated patches to scsi_register patches against the 2.5.45 tree. ia64: Rename __flush_tlb_all() to local_flush_tlb_all(). ia64: Make flush_tlb_mm() work for multi-threaded address-spaces on SMP machines. [PATCH] ia64: ia32 emulation fixes for 2.5.45 I found that Linux 2.5.45 had some problems passing arguments to ia32 programs running on ia64 in emulation mode. The attached patch fixes the problems. ia64: Make it easier to set a breakpoint in the Ski simulator right before starting the kernel (based on patch by Peter Chubb). [SCTP] MSG_PEEK support for recvmsg(). [SCTP] Fix for bad dereference in sctp_cmd_assoc_failed(). [SCTP] Last of the v4/v6 partioning (for now) Mostly code on the bind path, splitting out to pf and af family specific functions. Minor code cleanups/fixes mixed in. ALSA update - CS46xx - SPDIF channel status implementation - mixer name cleanups - Trident - added S/PDIF device for SiS 7018 - CS4281 - fixed broken loops in suspend/resume routines - ENS1370 - fixed driver names and rights for IEC958 Playback Mask - ICE1712 - added possibility to lock the rate (pro-pcm device) - usbaudio - fixed rawmidi [SCTP] SCTP_INITMSG socket option. ia64: Patch by Venkatesh Pallipadi to fix IA-32 signal handling to restore instruction and data pointers. [SCTP] Fix for memcpy() in sctp_sendmsg() that can copy too much. ia64: Delete arch/ia64/sn/configs/ files on request by John Hesterberg. ia64: For ia32 emulation, do not turn on O_LARGEFILE automatically on open(). Reported by Andi Kleen. [PATCH] ia64: IA32 ptrace bug-fixes The changes done in the patch include: 1) Support for xmm registers. At present xmm registers are not saved/restored during ptrace and gdb wont show them. Patch adds new ptrace options (IA32_PTRACE_GETFPXREGS and IA32_PTRACE_SETFPXREGS, used by gdb to get/set fp+xmm state). 2) Bug fix in getting 'tag' field of fpstate (fsr>>16 in place of fsr>>32) 3) Bug fix in calculating fp TOS (it is a 3 bit field in fsr. Using (fsr>>11) & 7 in place of (fsr>>11) & 3) Also, I had to add new structures in ia32.h, corresponding to the way gdb is expecting the data. Gdb uses structures defined in sys/user.h ia64: Decode feature bits added by SDM2.1 (spontaneous deferral & 16-byte atomic ops). ALSA update - Added hotplug support - disconnection of devices - usbaudio - added hotplug support - added support for resolution to ALSA mixer - ALI5451 - added initialization for ALi 7101 - via82xx - added rate initialization for all AC97 streams - RME HDSP - fixed multiface initialization - ICE1712 - spin-lock cleanups ia64: Sync up with 2.5.50 (Ski simulator has been tested only so far). [SCTP] sctp_v6_xmit() cleanup. ALSA update - control API - replace global control lock with semaphore - ac97 - added VT1616 support - add code for PC98 architecture - ENS1370/1371 - added gameport code - HDSP - fixed oops when device is not detected - replace __SMP__ with CONFIG_SMP ALSA update - ALS4000 - improved mixer support - ICE1712 - added ICE1724 (Envy24HT code) - fixed Delta410 support - usbaudio - added quirks for more Yamaha devices [SCTP] Stale cookie support. (ardelle.fan) [SCTP] Register a notifier for v6 address additions/deletions. [PATCH] Please apply this cleanup patch to your 2.5.50. The patch is made using 2.4.45 but the file has not changed since. It cleans up the initialization and some text alignment problems. Initial patch by Chris Wilson. [PATCH] ia64: Configurable NUMA node memory size following the requests from Xavier and Jesse I introduced a configuration parameter for the maximum memory per NUMA node. The DIG_BANKSHIFT is set accordingly, the current choices are: 512MB/bank: 16GB/node, 2048MB/bank: 64GB/node, 8192MB/bank: 256GB/node. The patch is for 2.5.50+ia64. Please consider applying it. [SPARC]: missing free_irq in sunsu driver. ia64: Manual merge of Erich's NUMA node-size changes. [PATCH] ia64: SN update David, here's a patch to update SN support in the ia64 tree. I had to make a few mods outside arch/ia64/sn and include/asm-ia64/sn to get CONFIG_IA64_SGI_SN2 to compile. [SCTP]: Add MAINTAINERS entry. ia64: Fix unaligned memory access handler. [PATCH] ia64: arch makefiles update Second try ready. Other architectures does not practice this, but I added a rule to copy vmlinux.gz + bootloader to root of kernel-tree. bootloader is build when needed, therefore the boot: target has not been re-introduced. Complete summary of changes: o Copy vmlinux-gz + bootloader to root of kernel-tree o Fix make ia64: Manual Makefile cleanup merge. ia64: Merge with 2.5.50. ia64: Avoid holding tasklist_lock across routines that do IPIs (such as flush_tlb_all()). [PATCH] ia64: arch-specific part of 1st compat clean up Just in case you need it, here it is against recent Linus' BK tree that has the generic part applied. Fix XFree86 brain damage. we can't go to 1.0 until they fix some real stupidity in XFree86. It's only by chance we can bump past 0.99 at all due to some boolean logic error. [AGP] kconfig tweaks & missing exports. don't allow to be opened twice. This allows us to early_init using a direct agp_init() call for the i810fb. Update to aic7xxx 6.2.22 and aic79xx 1.3.0_ALPHA2 Remove generated file. [PATCH] ia64: Fix typo in unaligned memory access handler (no functional change). Fix typo (no functional change). oops. missed a part of the double init patch First part of 2.5.51 syncup. Complete aic7xxx 6.2.22 and aic79xx 1.3.0_ALPHA2 update. New file asm-ia64/intrinsics.h. [SCTP] Fixes for gcc 3.2 compiler issues and warnings. [SCTP] Move the registration of v6 address event notifier to ipv6.c. Enable highmem_io. [PATCH] SCSI tape driver fix for 2.5.51 The SCSI tape driver in 2.5.51 does not find any devices. The following patch fixes this (and adds a missing unlocking call). Kai [PROMCON]: Fix type in vc_resize call. missing typecast ALSA update - CS46xx - volume bug fixes and phase reversal fix - AC3 stuff... - SPDIF input fix - init.c - used workqueue for the disconnection job - CMIPCI - S/PDIF output / PLL updates - ICE1712 - fixed reversed volume for AK4524 and AK4528 codecs - added support for Hoontech STA DSP24 Media 7.1 - USB audio - various mixer fixes - quirks for Edirol PCR-30/50 keyboards and Midiman hardware Fix the max_sectors warning afflicting some host adapter drivers Also merge in missing printk \n's noticed by Robert Love don't allow backend to unload if in use by a chipset driver. HP100 network driver - Pavel Machek - TRUE/FALSE removal - detection of Coaxial wire ALSA update - fixed compilation problems for rawmidi, sb16, ac97_codec, ens1370 - ES1968 - added use_pm parameter - USB audio - complete callback follows 2.5 - fixed support for FU and PU controls (mixer) - updated SB Extigy comments AGPGART fixes for HP ZX1 and Intel I460 OSST tape driver fix for 2.5.51 The patch to osst.c below is needed to fix an oops and at the same time brings in some bug fixes discovered in the 2.4 version. [PATCH] ia64: ia32 emulation layer bug fix sys32_mprotect code isn't dropping ia32_mmap_sem before returning. This affects both 2.4 and 2.5. o Kill host template files. o Move readme files into the Documentation SCSI directory o Enable highmem_io o Split out Kconfig files for aic7xxx and aic79xx Host template and large disk changes provided or inspired by: Christoph Hellwig [AGP] small c99/inlining cleanups [AGP] Remove unused prototypes [AGP] Add AGP 3.0 support and I7505 chipset driver. [AGP] fix bogus casts. Complete the upgrade to aic7xxx 6.2.23 and aic79xx 1.3.0_ALPHA3. ia64: efivars fix by Matt Domsch and Peter Chubb. [ALPHA] Change EH mechanism to be pc-relative instead of gp-relative. This eliminates one variable and simplfies the code when trying to resolve the fault. [PATCH] typos in asm-alpha/dma.h This fixes Alcor and Sable build. Ivan. [PATCH] Fix filesystems that cannot do mmap writeback The writepage-removal patch broke filesystems which do not want to support writeable mappings. Fix that up by making those filesystems point their mmap vector at the new generic_file_readonly_mmap(). [PATCH] dm: move ioctl numbers to a sane place Four constants: DM_DIR, DM_MAX_TYPE_NAME, DM_NAME_LEN, DM_UUID_LEN Were being declared in device-mapper.h, these are all specific to the ioctl interface, so they've been moved to dm-ioctl.h. Nobody in userland should ever include so remove ifdef __KERNEL guards. [PATCH] dm: proper error checking An error value was not being checked correctly in open_dev(). [Kevin Corry] [PATCH] dm: fix error number Return -ENOTBLK if lookup_device() finds the inode, but it is not a block device. [Cristoph Hellwig] [PATCH] dm: REMOVE_ALL parameter checking No need to validate the parameters if we are doing a REMOVE_ALL command. [PATCH] dm: fix check_device_area compare check_device_area was comparing the bytes with sectors. [Stefan Lauterbach] [PATCH] dm: check chunksize before allocation minor change for dm-stripe.c. Tests for correct chunksize before it allocates the stripe context. [Heinz Mauelshagen] [PATCH] dm: stripe constructor validity check There's a bug in the dm-stripe.c constructor failing top check if enough destinations are handed in. [Heinz Mauelshagen] [PATCH] dm: per-device mempools Give each device its own io mempool to avoid a potential deadlock with stacked devices. [HM + EJT] [PATCH] dm: check correct flag in queue_io() queue_io() was checking the DMF_SUSPENDED flag rather than the new DMF_BLOCK_IO flag. This meant suspend could deadlock under load. [PATCH] dm: dm_suspend locking fix dm_suspend(): Stop holding the read lock around the while loop that waits for pending io to complete. [PATCH] dm: flush pending IO before dm_suspend Add a blk_run_queues() call to encourage pending io to flush when we're doing a dm_suspend(). [PATCH] dm: avoid unnecessary locking dec_pending(): only bother spin locking if io->error is going to be updated. [Kevin Corry] [PATCH] dm: fix md->pending count md->pending was being incremented for each clone rather than just once. [Kevin Corry] [PATCH] dm: fix bio duplication Some fields in the duplicated bio weren't being set up properly in __split_page(). [Kevin Corry] [PATCH] dm: remove highmem paranoia Remove some paranoia in highmem.c [PATCH] dm: remove verbose debug message Remove verbose debug message 'Splitting page'. [PATCH] dm: fix/simplify endio o If there's an error you still need to call bio_endio with bio->bi_size as the 'done' param. o Simplify clone_endio. [Kevin Corry] [PATCH] dm: bio split fix The block layer does not honour bio->bi_size when issuing io, instead it performs io to the complete bvecs. This means we have to change the bio splitting code slightly. Given a bio we repeatedly apply one of the following three operations until there is no more io left in the bio: 1) The remaining io does not cross an io/target boundary, so just create a clone and issue all of the io. 2) There are some bvecs at the start of the bio that are not split by a target boundary. Create a clone for these bvecs only. 3) The first bvec needs splitting, use bio_alloc() to create *two* bios, one for the first half of the bvec, the other for the second half. A bvec can never contain more than one boundary. [PATCH] dm: fix sector calculation The linear target was getting the start sector wrong when doing a dm_get_device(). [Kevin Corry] ALSA update - fixes in ALI5451 initalization - added snd_pci_alloc_page() workaround - FM801 - fixed PCI device identification - USB mixer - fixed min values for some types [PATCH] ehci-hcd (1/2): portability (2.4), tasklet, This should be innocuous; I expect most folk won't notice anything better (or worse) from this patch unless they're using Intel EHCI. removing tasklet - parts of davem's patch (passing pt_regs down) - remove 'max_completions' - update cleanup after hc died - fix an urb unlink oops (null ptr) that happens more often this way talking to hardware - fixes for some short read issues (may still be others) * use qtd->hw_alt_next to stop qh processing after short reads * detect/report short reads differently - longer reset timeout (it was excessively short, broke Intel) other - simpler diagnostics portability to 2.4: wrap dev_err() etc - urb unlink wait and non-wait unlink codepaths share most code - don't try ehci_stop() in interrupt context (bug from hcd layer) - minor stuff, including * some "after hc died" paths were wrong * verbose debug messages compile again * don't break error irq count [PATCH] ehci-hcd (2/2): rest of tasklet remove This is the rest of the work to remove the tasklet: the non-syntax portions which affect work scheduling. It's not quite davem's version; it's got locking updates, which among other things prevent a hang when the timer kicks in. This scheduling change is split out from the other parts in case more problems like that unlink race (fixed in my previous patch) show up. It doesn't fix (or help fix) any ehci bugs, but simpler code is fine. [PATCH] usbnet: zaurus, oops, etc This patch: - Removes Pavel's Zaurus-private crc32 code; the base patch was from Pavel. - Addresses two issues Toby Milne reported against the Zaurus: (a) if skbs had extra framing added (z, net1080, gl620a), the original size (now too small) was used on tx; (b) added FLAG_FRAMING_Z so rx packets had enough space - Removes an oops from the driver model conversion (saved the wrong pointer). Disconnecting wasn't healthy. - Forward-ports some ethtool support from the 2.4 version: PDAs are always connected, so report them that way. - Stubs in some PXA-250 support for non-Zaurus PDAs. This is currently commented out; so far those PDAs only run Linux for bleeding edge developers. - Minor cleanups. [PATCH] ehci misc patches small fixes flushed by the hunt for bigger game: - terminate td lists with dummy, not list end marker - use alt_next only for real short control reads - un-halt async qhs before scheduling - deletes unused debug code, pointless assignments - surely nobody ever sees that memleak - terminate two related "while" loops the same way [PATCH] 2.5.51 More typedef removal from usbvideo This patch against 2.5.51 removes the remaining typedefs from usbvideo typedef enum { .. } ScanState_t -> enum ScanState typedef enum { .. } ParseState_t -> enum ParseState typedef enum { .. } FrameState_t -> enum FrameState typedef enum { .. } Deinterlace_t -> enum Deinterlace typedef struct { .. } usbvideo_t -> struct usbvideo [PATCH] USB: PWC 8.10 for 2.5.51 Well, two patches in one... These patches will bring the PWC (Philips Webcam) driver in both 2.4.20 and 2.5.51 up to version 8.10. Functionally, the two branches are the same (about 70% of the code is shared), but the differences in kernel architecture are too large to handle with a few #ifdefs. This patch fixes the following (this are only the differences between 8.9 and 8.10): * Fixed ID for QuickCam Notebook pro * Added GREALSIZE ioctl() call * Fixed bug in case PWCX was not loaded and invalid size was set [PATCH] usb-storage: fixup interpret_urb_result() This patch fixes interpret_urb_result in two major ways: (1) Uses a switch() instead of nested if() statements (2) Handle -EREMOTEIO to indicate a short scatter-gather transfer ACPI: Fix oops on module insert/remove (Matthew Tippett) [AGP] Hopefully get the KT400 working in AGP3.0 mode. [SCTP] Window update SACK support. [PATCH] USB: speedtouch driver memory allocation deadlock fix ia64: More 2.5.51/2.5.52 sync up. [PATCH] USB: usbserial: Add a short_name field to work better with sysfs. This cleans up the bus/usb-serial/drivers/ directory Add VIRTUAL_MEM_MAP config option. [PATCH] ia64: consolidate sys32_times ia64: consolidate sys32_new[lf]stat. Patch by Stephen Rothwell. Add "sysenter" support on x86, and a "vsyscall" page. Instead of doing a "int 0x80" instruction for system calls, user space can do a "call 0xfffff000" which will do the right thing regardless of what kind of system call support the CPU has. [PATCH] USB: keyspan_pda: fix up the short names, as they were too big. HP100 - fixed compilation problem when debug is active remove 2TB limit in sd modern storage boxes support >2TB arrays, but READ CAPACITY may return 2TB only (with 512 bytes blocksize). According to SBC, target may return 0xffffffff as device size in order to notify initiator that device size can't fit into 32 bits and that initiator should use Long READ CAPACITY with 64bits LBA field. Following patch implements this logic. indentation fixes. ACPI: remove non-Linux revision on files, and make types more Linux-like [AGP] Use compatability mode of KT400 if detected ACPI: More cosmetic changes to make the code more Linux-like [PATCH] fix the build for old gcc's Older gcc's do not support that form of ellipsis in a macro. Allow KALLSYMS even without kernel debugging Export the 'vsyscall' address to user space with the AT_SYSINFO elf AUX-table entry. Move the 'vsyscall' page to 0xffffe000, leaving a hole at the top of the address space. [AGP] Clean up capability pointer detection. This has to be done differently on some chipsets, so I moved it back into the chipset drivers for now. This cleanup also fixed a few bugs, which may also make the hammer gart start working again. [PATCH] fix the compilation of eata_pio_proc.c The change to eata_pio_proc.c contained a typo: a semicolon instead of a comma. [PATCH] MSNDCLAS_HAVE_BOOT and MSNDPIN_HAVE_BOOT shouldn't ask questions 2.5.50 included a change from -ac which changed MSNDCLAS_HAVE_BOOT and MSNDPIN_HAVE_BOOT to asked questions. This is wrong (I know since I was the one who wrote the patch Alan picked up...). They shouldn't ask questions, the following patch reverts my buggy change. [PATCH] USB: usb-storage bugfix Don't try to dereference the interrupt endpoint if it doesn't exist. [PATCH] USB: clean kernel thread exit for speedtouch this makes sure that the kernel thread is dead and gone on module unload. - use a completion to wait for the kernel thread's death [PATCH] USB: speedtouch: eliminate sleep_on [PATCH] USB: fix an unlinking race in speedtouch driver checking for -EINPROGRESS is wrong. [PATCH] USB: proper error return for usblcd unknown ioctls return -ENOTTY and nothing else. [PATCH] hub driver uses dev_info(), less log clutter This patch converts most common hub diagnostics to use the device model diagnostic macros ... not all, someone should reduce the number of err() strings for "bogus hub" cases, and ideally streamline some of the dozen or so "here's what's special about this new hub" dbg() messages. So the messages become more useful: they id the port (and implicitly the device) involved, using a kernel-wide standard convention. Size overhead is smaller too. For folk running with USB debugging enabled, it also cuts the useless chatter on connections by deleting the per-poll success messages and a partial dup message when things change. And it deletes a newish diagnostic on a (non-hub) unlink path. It also makes Pete's new debounce message use the right port number -- one-based, not zero-based. My main issue with this patch is that it doesn't change more messages, but it seems reasonable to merge it anyway. [PATCH] USB: whiteheat: fix some gcc 3.2 warning messages [PATCH] vm86 IRQ bugfix vm86 does broken tasklist scanning for matching task_struct pointers, which is oopsable. This registers a notifier for it to GC vm86 IRQ's in release_thread() and removes the broken tasklist scanning. This bugfix is in 2.4.x and has been in 2.5.x-dj for an extended period of time. Make six-argument system calls work with the fast system call trampoline. Here's how: we re-load %ebp (arg6) in the kernel sysenter handler from the stack, and on system call re-play we jump back in user space to re-initialize %ebp to point to the stack pointer before re-doing the sysenter instruction. [PATCH] USB: warn users that they should not be using the usbdevfs name. [PATCH] ehci, more small fixes - some access to urb->hcpriv and urb->status needed to be locked using urb->lock - paranoia: don't depend on two values being in lock-step. ALSA update - intel8x0 - added NVidia NForce2 Audio PCI ID - USB driver - clenaups in the disconnect routine - added ALSA-Configuration.txt and ControlNames.txt documents [AGP] __init audit after Rusty found a bug. [AGP] Missing bits of David Mosberger's cleanups. Merge with DRI CVS tree. - add support for sending a signal on vblank - remove unhelpful AGP chipset strings - update radeon texture cache handling Fix the remaining known problems (NMI and debugging) with fast system calls. They should now be fully comparable to traditional system calls. Fix SEP stack allocation to look like a real thread stack. This fixes the "Trap on first sysenter instruction" problem, which can happen either as a result of an NMI or a breakpoint trap (TF bit set). Also make the user trampoline save and restore EFLAGS, so that the TF bit gets restored after a fast system call (it will have been cleared to avoid trap faults in the kernel). [PATCH] Fix bad interaction with APM and the new sysenter segment layout This fixes the APM GDT entry allocation issue. Confirmed by Andrew Morton. [PATCH] fix intermezzo build This simple intermezzo Makefile change allows it to build. OK'ed by Peter Braam. LSM: changed the dummy code to use the default operations logic. [PATCH] converting cap_set_pg() to for_each_task_pid() cap_set_pg() wants to find all processes in a given process group. This converts it to use for_each_task_pid(). LSM: Fix up the description of the root_plug code to try to make it clearer. LSM: update the copyright dates for my entry. [PATCH] namespace pollution in STV0680 camera driver Variables should not be defined in a header file. This slightly improves the driver by making them static instead of global. [PATCH] namespace pollution in ibmcam driver The variable 'cams' should be static. Don't initialize to 0, while we're here. [PATCH] USB: simplify spinlocks in send path for speedtouch irqsave spinlocks in an interrupt handler are superfluous. Simple spinlocks are sufficient and quicker. As this is in interrupt context, every cycle counts. [PATCH] USB: more spinlock work for speedtouch - simple spinlocks will do [PATCH] USB: speedtouch remove error handling with usb_clear_halt usb_clear_halt cannot be used from a completion handler because it sleeps As that code path would have crashed the driver, it's obviously not needed and can be removed. [PATCH] USB: speedtouch reentrancy race through usbfs speedtouch povides an ioctl handler through usbfs. It must not be reentered. A semaphore ensures that. [PATCH] USB: remove obviously broken code from the speedtouch disconnect handler I am not sure what this code was supposed to do, but it can stop khubd indefinitely. It has to go. [PATCH] USB: speedtouch possible deadlock in atm_close path this removes the spinlocks in close, so that the synchronous unlinking is safe. [PATCH] USB cdc-acm: missed a GFP_KERNEL in interrupt the patch turns it into GFP_ATOMIC. [PATCH] USB cdc-ether: GFP_KERNEL in interrupt cdc-ether has the same problem as cdc-acm. - usb_submit_urb() under spinlock or in interrupt must use GFP_ATOMIC [AGP] Export agp3 routines and link to module if needed. ia64: More merge fixes. [PATCH] USB: fix the spelling of "deprecated". Thanks to Randy Dunlap for pointing this out. [PATCH] oprofile update This makes the following changes : o headers cleanup o remove deprecated kernel_only o mention minimum oprofile version o correct initialise stats o remove racy debug check (wli saw this oops) o remove pointless simple_open o add dump functionality o remove pessimising FASTCALL It fixes a critical race. [PATCH] ehci, qtd submit and completions This ought to address a number of the problems with the recent "dummy td" update as well as some older ones: - Slims down the qh_append_tds() to remove two pairs of "should be duplicate" logic so that * qh_make() only creates and initializes; * qh_append_tds() calls it earlier; * always appends with dummy, no routine qh updates. - Reworked qh_completions() ... simpler, better. * two notable FIXMEs gone, and a bug related to how they interacted with scatterlist i/o * fixed bugs (including one oops) exposed by using dummies more. Passes basic testing: most 'usbtest' cases, usb2 hub with keyboard and CF adapter, storage enumeration. So it seems less troublesome, though it's still not as happy as I've seen it. However, "testusb -at12" (running 'write unlink' tests) still fails for me, and usb-storage gets unhappy when it decides (why? and unsuccessfully) to reset high speed devices. I'm still chasing those problems, which seem to come from higher up in the stack. [PATCH] usbcore: rm hub oops, message cleanups, unlink These changes are unrelated except I ran into them all at once: - Fixes an oops from a partial hub_configure() clean; let hub_disconnect() do the whole thing, simpler. - Since I was there, modify that routine's err() messages to use dev_err(). Then eliminate a redundant diagnostic in hub_probe(), and merge the "bad descriptor" cases into one diagnostic. Saves a few hundred rodata bytes, and the messages now say what hub's involved. - Unlink fixes: if lower level code reports a submit error, make sure the urb gets unlinked from the device's urb_list; and report "it's already being unlinked" as -EBUSY so callers can do something smarter than wonder "what did I do wrong". [AGP] agp_frontend_initialize() now gets called when a chipset driver registers, so it can't be __init any more. [AGP] Readd module_exit function so that agpgart.ko can be unloaded. [AGP] misplaced setting of bridge device. correct compile warnings without Large Block Device support Based on a patch from Andrew Morton. Also checks to see if the sd device is bigger than the kernel can support and prints out a warning in that case [XFS] remove xfs_dm_send_create_event SGI Modid: 2.5.x-xfs:slinx:135038a [XFS] rework iocore infrastructure, remove some code and make it more orthogonal. In addition, add some of the hooks for unwritten extents. SGI Modid: 2.5.x-xfs:slinx:134603a [XFS] remove unused debugging code SGI Modid: 2.5.x-xfs:slinx:135137a [XFS] more dead code removal SGI Modid: 2.5.x-xfs:slinx:135153a [XFS] Fix size check for realtime devices. SGI Modid: 2.5.x-xfs:slinx:135199a [XFS] Some cleanup, some more unwritten extent related changes. SGI Modid: 2.5.x-xfs:slinx:135207a [AGP] Make i845g use correct initialisation routine. [XFS] remove references to i_dev, it's gone in recent kernels SGI Modid: 2.5.x-xfs:slinx:135308a [XFS] fix an out-of-date comment SGI Modid: 2.5.x-xfs:slinx:135307a [XFS] Fix up setting up of sector size for the superblock buffer after the very first read on mount. Make some of the surrounding code dealing with buffers consistent. SGI Modid: 2.5.x-xfs:slinx:135452a [XFS] Fix some setxattr compiler warnings (const). SGI Modid: 2.5.x-xfs:slinx:135453a [XFS] Change some %x formats to %p for pointers SGI Modid: 2.5.x-xfs:slinx:135454a [XFS] "merge" the 2.4 fsx fix for block size < page size to 2.5. This needed major changes to actually fit. SGI Modid: 2.5.x-xfs:slinx:132210a Update to aic7xxx version 6.2.24 and aic79xx version 1.3.0_ALPHA5. aic7xxx_old: improve usage of pci_request_regions due to device contention Change all uses of device->request_queue (was struct, now pointer) Update scsi_scan so that we don't pass around a scsi_device struct for scanning. Instead, we pass around a request_queue during scanning and create and destroy device structs as needed. This allows us to have a 1:1 correlation between scsi_alloc_sdev() and scsi_free_sdev() calls, which we didn't have before. aic7xxx_old/aic7xxx.h: Run time warning fix [SPARC64]: Update ioctl32 for fb changes. [SPARC64]: Add sbus_{read,write}q. [SPARC]: Update asm/fbio.h for fb changes. [ATYFB]: Fix build error in sparc specific sections. [FB]: Add readq/writeq for sparc. [SPARC64]: Convert for stat/utime compat syscall changes. [SPARC64]: Define COMPAT_USER_HZ and compat_clock_t. [SPARC64]; Convert over to compat_clock_t and compat_sys_times. [SPARC]: Update for new do_coredump args. [SPARC64]: Un-static cp_compat_stat. [SPARC64]: Fix some circular include deps. [SPARC64]: Some more compat stat syscall entry conversions. [SOUND]: ioctl32/{ioctl32,rawmidi32,seq32,timer32}.c needs linux/fs.h [PATCH] Some i386 cleanups - MTRR, bootflag This does: - fix one warning in bootflag.c - change a few longs to int and int to long in the MTRR driver to make it 64bit clean (should be a NOP for 32bit i386, but is needed for x86-64) - Convert the MTRR /proc interface to seq_file and remove the broken compute_ascii() hack. This fixes some broken code e.g. the old mtrr_write was completely broken because the loop checking for commands started with a "continue" - remove duplicated mtrr type strings. [PATCH] x86-64 merge This patch depends on the i386 MTRR driver cleanup I sent earlier. - Support non executable mappings for x86-64. data/heap are non executable by default now. - Beginnings of software suspend from Pavel (not working yet) - Support generic compat functions and remove some shared code in the 32bit emulation (Stephen Rothwell) - Support hugetlbfs - Some makefile updates - Make sure all 32bit emulation functions return long, not int. This fixes some problems with ERESTARTNOSYS.et.al. leaking to userspace. - Add new system calls. - Fix long standing fs/gs context switch bugs (thanks to Karsten Keil for helping to fix that mess). Also make sure the gs selector is set to 0 after an exec. - Simplify TLS switching - Paranoid CPUID check at bootup - Reorder scatterlist to be more space efficient (Jes Soerensen) - Enlarge 32bit address space to full 4GB. - Beginnings of 32bit SYSCALL support (not completely working yet and vsyscall page miss yet) - Various merges from i386 - New module loader - Support threaded core dump (XMM saving for 32bit programs doesn't work, but it appears to be broken on i386 too) - Fix bug in signal stack rounding - Remove DRM 32bit emulation. - Use MTRR driver from i386 - Use bootflag.c from i386 - Various other fixes and cleanups. [PATCH] x86-64 relocations for elf.h This adds the x86-64 ELF relocations to include/linux/elf.h This is needed for the new module loader. [PATCH] Add workaround for AMD8131 bug Some revisions of the AMD8131 PCI-X bridge have a irq routing bug that appears in IO-APIC mode. To work around it a bit needs to be set in this case. [PATCH] Cyrix 3 gcc options changed. Newer gcc changes alignment flags from a -m to -f [PATCH] swap.h doesn't use prefetching [PATCH] i2c size_t fix [PATCH] make cpu serial number disable generic This check needs to happen for all CPUs that support PN, not just Intel. From hpa and Pat Mochel. [PATCH] Clean up NFSv4 READ xdr path This creates a clean XDR path for the NFSv4 read requests instead of routing through encode_compound()/decode_compound(). This eliminates the intermediate step of setting up a struct nfs4_compound before proceeding to XDR encoding, and removes the large 'switch()' statements from the codepath altogether. [PATCH] Clean up NFSv4 WRITE xdr path The following patch creates a clean XDR path for the NFSv4 write requests instead of routing through encode_compound()/decode_compound(). [PATCH] Support for NFSv4 READ + WRITE attribute cache consistency Retrieve the post-operation attribute changes for NFSv4 READ and WRITE operations. Unlike for NFSv2 and NFSv3, we do not retrieve the full set of file attributes. The main reason for this is that interpreting attributes is a much heavier task on NFSv4 (requiring, for instance, translation of file owner names into uids ...). Hence For a READ request, we retrieve only the 'change attribute' (for cache consistency checking) and the atime. For a WRITE request, we retrieve the 'change attribute' and the file size. In addition, we retrieve the value of the change attribute prior to the write operation, in order to be able to do weak cache consistency checking. [PATCH] Patch for affs: pr_debug() usage pr_debug() is defined to print using KERN_DEBUG already, so uses of it don't need to repeat KERN_DEBUG. [PATCH] Fix CPU bitmask truncation Fix task->cpus_allowed bitmask truncations on 64.bit architectures. Originally by Bjorn Helgaas for 2.4.x. [PATCH] Update v850 includes for slimmed-down sched.h Adds extra includes needed because sched.h doesn't include them anymore, and removes includes of sched.h where they're not really necessary. [PATCH] Make some symbol exports conditional on CONFIG_MMU A few symbols are only defined when CONFIG_MMU=y, but are exported (by kernel/ksyms.c) unconditionally. This patch makes them conditional. [PATCH] Add v850 support for `sys_restart_syscall' [PATCH] Add some v850 elf constants These are used for the new in-kernel module loader (actually not all the relocation types are used right now, but are included for completeness). Only the EM_CYGNUS_V850 macro, which is in a global namespace, is added to ; the relocation types, which are private to the v850, are added to . [Perhaps some other archs can do a similar split, to reduce the bloat in ] [PATCH] Pass extra signal handler args correctly on the v850 The old code seems completely wrong; I guess it was just left over from whichever architecture this code was copied from. [PATCH] Reduce redundancy in v850 linker scripts This moves most of the duplicated text in the various v850 platform- specific linker scripts (each of which was previously completely standalone) into cpp macros in vmlinux.lds.S, which are then used by the platform linker scripts as appropriate. This should make the scripts a lot easier to maintain. Also, a number of linker-script bugs are fixed. [PATCH] use kmap_atomic instaed of kmap in NFS client Description: andrew morton suggested there are places in the NFS client that could make use of kmap_atomic instead of vanilla kmap in order to improve scalability on 8-way and higher SMP systems. Test status: Passes all Connectathon '02 tests with v2 and v3, UDP and TCP; passes NFS torture tests on a UP HIGHMEM x86 system. [PATCH] give NFS client a "set_page_dirty" address space op. Description: The default set_page_dirty address space op is too heavyweight for NFS, which doesn't use buffers. [PATCH] cleanup: simplify req_offset function in NFS client Description: everywhere the NFS client uses the req_offset() function today, it adds req->wb_offset to the result. this patch simply makes "+req->wb_offset" a part of the req_offset() function. Test status: Passes all Connectathon '02 tests with v2, v3, UDP and TCP. Passes NFS torture tests on an x86 UP highmem system. [BONDING]: Update to version 2.4.20-20021210. [PKTGEN]: Mark some functions static. Make NFS compile even without NFS_V4 support Ignore ".ko" files - kernel module objects. [IPV6]: Missing in6_dev_put in router discovery. ia64: Finish 2.5.52+ merge. ia64: Fix printing of memory attributes. [AGP] Make things compile again if AGP3=n [PATCH] new attempt at sys_poll allocation (was: Re: Poll patches..) This replaces the dynamically allocated two-level array in sys_poll with a dynamically allocated linked list. The current implementation causes at least two alloc/free calls, even if only one or two descriptors are polled. This reduces that to one alloc/free, and the .text segment is around 220 bytes shorter. The microbenchmark that polls one pipe fd is around 30% faster. [1140 cycles instead of 1604 cycles, Celeron mobile 1.13 GHz] [PATCH] PCI: setup-xx fixes Don't disable PCI devices before changing the BARs, as discussed recently. Disabling PCI_COMMAND_MASTER bit is an obvious bug. Further, pdev_enable_device() is a leftover from very old (2.0, I guess) alpha PCI code. It's used in pci_assign_unassigned_resources() to enable *every* PCI device in the system. So, if we have two graphic cards on the same bus, both with legacy VGA IO... oops. Actually, only alpha relied on that due to the lack of pcibios_enable_device (which has been already fixed). Get rid of silly printk's in recent mtrr driver changes. [AF_KEY]: Fix comment typo. Sysenter cleanups (originals by Brian Gerst, updated and expanded by me): - set up kernel stack pointer for sysenter at each context switch. - disable sysenter while in vm86 mode. - clean up mtrr number defines and SEP feature testing [PATCH] sync_fs deadlock fix Running a `mount -o remount' against ext3 deadlocks if there is heavy write activity. It's a sort of AB/BA deadlock caused by calling log_wait_commit() under lock_super(). The caller holds lock_super() and is waiting for a commit, but the commit cannot complete because lock_super() is also used in the block allocator. The way we fixed this in tha past is to drop the superblock lock inside ext3. The way this patch fixes it is to arrange for lock_super() to not be held around the ->sync_fs() call. Also: sync_filesystems is on the sys_sync() path and is racy wrt unmount. Check sb->s_root after taking sb->s_umount. [PATCH] fix a page dirtying race in vmscan.c There's a small window in which another CPU could dirty the page after we've cleaned it, and before we've moved it to mapping->dirty_pages(). The end result is a dirty page on mapping->locked_pages, which is wrong. So take mapping->page_lock before clearing the dirty bit. [PATCH] fix use-after-free bug in move_vma() move_vma() calls do_munmap() and then uses the memory at *new_vma. But when starting X11 it just happens that the memory which do_munmap unmapped had the same start address and the range at *new_vma. So new_vma is freed by do_munmap(). This was never noticed before because (vm_flags & VM_LOCKED) evaluates false when vm_flags is 0x5a5a5a5a. But I just changed that to 0x6b6b6b6b and boom - we call make_pages_present() with start == end == 0x6b6b6b6b and it goes BUG. So I think the right fix here is for move_vma() to not inspect the values of any vma's after it has called do_munmap(). The patch does that, for `new_vma'. The local variable `vma' is also being used after the call do do_munmap(), and this may also be a bug. Proving that this is not so, and adding a comment to explain why is hereby added to Hugh's todo list ;) [PATCH] more informative slab poisoning slab poisons objects with 0x5a both when they are constructed and when they are freed. So it is not possible to tell whether a deref of 0x5a5a5a5a was a use-before-initialisation bug or a use-after-free bug. The patch changes it so that 1) A deref of 0x5a5a5a5a means use-of-uninitialised-memory 2) A deref of 0x6b6b6b6b means use-of-freed-memory. [PATCH] Add generic_file_readonly_mmap() for nommu Add a generic_file_readonly_mmap() for !CONFIG_MMU. [PATCH] misc fixes - A C99 initialiser in drivers/char/mem.c - Remove unneeded deref in madvise_willneed() [PATCH] Remove PF_NOWARN We keep getting in a mess with the current->flags setting and unsetting. Remove current->flags:PF_NOWARN and create __GFP_NOWARN instead. [PATCH] Give kswapd writeback higher priority than pdflush The `low latency page reclaim' design works by preventing page allocators from blocking on request queues (and by preventing them from blocking against writeback of individual pages, but that is immaterial here). This has a problem under some situations. pdflush (or a write(2) caller) could be saturating the queue with highmem pages. This prevents anyone from writing back ZONE_NORMAL pages. We end up doing enormous amounts of scenning. A test case is to mmap(MAP_SHARED) almost all of a 4G machine's memory, then kill the mmapping applications. The machine instantly goes from 0% of memory dirty to 95% or more. pdflush kicks in and starts writing the least-recently-dirtied pages, which are all highmem. The queue is congested so nobody will write back ZONE_NORMAL pages. kswapd chews 50% of the CPU scanning past dirty ZONE_NORMAL pages and page reclaim efficiency (pages_reclaimed/pages_scanned) falls to 2%. So this patch changes the policy for kswapd. kswapd may use all of a request queue, and is prepared to block on request queues. What will now happen in the above scenario is: 1: The page alloctor scans some pages, fails to reclaim enough memory and takes a nap in blk_congetion_wait(). 2: kswapd() will scan the ZONE_NORMAL LRU and will start writing back pages. (These pages will be rotated to the tail of the inactive list at IO-completion interrupt time). This writeback will saturate the queue with ZONE_NORMAL pages. Conveniently, pdflush will avoid the congested queues. So we end up writing the correct pages. In this test, kswapd CPU utilisation falls from 50% to 2%, page reclaim efficiency rises from 2% to 40% and things are generally a lot happier. The downside is that kswapd may now do a lot less page reclaim, increasing page allocation latency, causing more direct reclaim, increasing lock contention in the VM, etc. But I have not been able to demonstrate that in testing. The other problem is that there is only one kswapd, and there are lots of disks. That is a generic problem - without being able to co-opt user processes we don't have enough threads to keep lots of disks saturated. One fix for this would be to add an additional "really congested" threshold in the request queues, so kswapd can still perform nonblocking writeout. This gives kswapd priority over pdflush while allowing kswapd to feed many disk queues. I doubt if this will be called for. [PATCH] ext2/3 commentary and cleanup - Add some (much-needed) commentary to the ext2/ext3 block allocator state fields. - Remove the SEARCH_FROM_ZERO debug code. I wrote that to trigger some race and it hasn't been used in a year. [PATCH] ext2/3: better starting group for S_ISREG files ext2 places non-directory objects into the same blockgroup as their directory, as long as that directory has free inodes. It does this even if there are no free blocks in that blockgroup (!). This means that if there are lots of files being created at a common point in the tree, they _all_ have the same starting blockgroup. For each file we do a big search forwards for the first block and the allocations end up getting intermingled. So this patch will avoid placing new inodes in block groups which have no free blocks. So far so good. But this means that if a lot of new files are being created under a directory (or multiple directories) which are in the same blockgroup, all the new inodes will overflow into the same blockgroup. No improvement at all. So the patch arranges for the new inode locations to be "spread out" across different blockgroups if they are not going to be placed in their directory's block group. This is done by adding parent->i_ino into the starting point for the quadratic hash. i_ino was chosen so that files which are in the same directory will tend to all land in the same new blockgroup. [PATCH] ext3: smarter block allocation startup When an ext3 (or ext2) file is first created the filesystem has to choose the initial starting block for its data allocations. In the usual (new-file) case, that initial goal block is the zeroeth block of a particular blockgroup. This is the worst possible choice. Because it _guarantees_ that this file's blocks will be pessimally intermingled with the blocks of another file which is growing within the same blockgroup. We've always had this problem with files in the same directory. With the introduction of the Orlov allocator we now have the problem with files in different directories. And it got noticed. This is the cause of the post-Orlov 50% slowdown in dbench throughput on ext3 on write-through caching SCSI on SMP. And 25% in ext2. It doesn't happen on uniprocessor because a single CPU will not exhibit sufficient concurrency in allocation against two or more files. It will happen on uniprocessor if the files are growing slowly. It has always happened if the files are in the same directory. ext2 has the same problem but it is siginficantly less damaging there because of ext2's eight-block per-inode preallocation window. The patch largely solves this problem by not always starting the allocation goal at the zeroeth block of the blockgroup. We instead chop the blockgroup into sixteen starting points and select one of those based on the lower four bits of the calling process's PID. The PID was chosen as the index because this will help to ensure that related files have the same starting goal. If one process is slowly writing two files in the same directory, we still lose. Using the PID in the heuristic is a bit weird. As an alternative I tried using the file's directory's i_ino. That fixed the dbench problem OK but caused a 15% slowdown in the fast-growth `untar a kernel tree' workload. Because this approach will cause files which are in different directories to spread out more. Suppressing that behaviour when the files are all being created by the same process is a reasonable heuristic. I changed dbench to never unlink its files, and used e2fsck to determine how many fragmented files were present after a `dbench 32' run. With this patch and the next couple, ext2's fragmentation went from 22% to 13% and ext3's from 25% to 10.4%. [PATCH] ext2: smarter block allocation startup The same thing, for ext2. [PATCH] rename locals in ext2_new_block() Renames the local variables `bh2', `i', `j', 'k', and `tmp' to something meanigful. This brings ext2_new_block() into line with ext3_new_block(). [PATCH] ext3 use-after-free bugfix If ext3_add_nondir() fails it will do an iput() of the inode. But we continue to run ext3_mark_inode_dirty() against the potentially-freed inode. This oopses when slab poisoning is enabled. Fix it so that we only run ext3_mark_inode_dirty() if the inode was successfully instantiated. [PATCH] ext3: fix buffer dirtying This is a forward-port from 2.4. One of Stephen's recent fixes. I managed to merge up only half of it. Here is the rest. It should fix the asserton failure reported by Robert Macaulay "There was a race window in buffer refiling where we could temporarily expose the journal's internal BH_JBDDirect flag as BH_Dirty, which is visible to the rest of the VFS. That doesn't affect the journaling, because we hold journal_head locks while the buffer is in this transient state, but bdflush can see the buffer and write it out unexpectedly, causing ext3 to find the buffer in an unexpected state later." The fix simply keeps the dirty bits clear during the internal buffer processing, restoring the state to the private BH_JBDDirect once refiling is complete." [PATCH] hugetlb bugfixes From Rohit Seth 1) Bug fixes (mainly in the unsuccessful attempts of hugepages). i) not modifying the value of key for unsuccessful key allocation ii) Correct usage of mmap_sem in free_hugepages iii) Proper unlocking of key->lock for partial hugepage allocations 2) Include the IPC_LOCK for permission to use hugepages via the syscall interface. This brings the syscall interface into line with the hugetlbfs interface. It also adds permits users who are in the superuser group to access hugetlb resources. This is so that database servers can run without elevated permissions. 3) Increment the key_counts during forks to correctly identify the number of processes references a key. [PATCH] hugetlb: report shared memory attachment counts From Rohit Seth Attached is a patch that passes the correct information back to user land for number of attachments to shared memory segment. I could have done few more changes in a way nattach is getting set for regular cases now, but just want to limit it at this point. [PATCH] hugetlbfs: set inode->i_size An `ls' in hugetlbfs currently shows all files having zero size. So, part-cosmetic, part-informative, we here set i_size to represent the index of the highest present page in the mapping, plus one. [PATCH] don't cacheline-align radix_tree_nodes They are 260 bytes. We can get 15 per page without cacheline alignment. But we're currently only getting ten per page on P4. [PATCH] remove memclass() From hch. Nothing is using the memclass() predicate. [PATCH] remove unused macro MAP_ALIGN() Patch from Christoph Hellwig remove unused macro MAP_ALIGN() More mtrr/if.c fixes - printk is not an acceptable substitute for errors - fix indentation of mtrr_close() - fix duplicate mtrr "release" fn pointer initializer generic device DMA API add dma_ API to mirror pci_ DMA API but phrased to use struct device instead of struct pci_dev. See Documentation/DMA-API.txt for details allow pci primary busses to have parents in the device model Remove old pci_dma_supported(), this is done by the generic device DMA now (see for the compat wrapper). [PATCH] ehci, qtd submit and completions > ... usb-storage gets unhappy when > it decides (why? and unsuccessfully) to reset high speed > devices. ... I don't know if that problem is resolved, but this patch makes the question moot by handling an earlier error correctly. The patch updates an incorrect test, so a short read will now be treated as one. Please merge. This lets storage behave again. As in, "mkfs -c" then copy about 8 GB around, then 'dbench'. [PATCH] scanner.h: add/fix vendor/product ids This patch adds additional vendor and product ids for Nikon, Mustek, Plustek, Genius, Epson, Canon, Umax, Hewlett-Packard, Benq, Agfa, and Minolta scanners. The entries for Benq, Genius and Plustek scanners have been updated. I've also increased the version number to 0.4.9 and brought the version numbers in scanner.c and scanner.h in sync. [PATCH] scanner.c: Support for devices with only one bulk-in endpoint This patch (originally from Sergey Vlasov) adds support for scanners with only one bulk-in endpoint. It's needed by all the GT-6801 based scanners like the Artec Ultima 2000 or some of the Mustek BearPaws. [PATCH] dev_printk macro [ALPHA] Add __param support to link script. remove PCI_NEW_DMA_COMPAT_API use a #include mechanism for generic implementations of the pci_ API in terms of the dma_ one [PATCH] reorder 'rep;nop;' in the spinlock macro According to Intel's recommendation, 'rep;nop; should be called before testing if the lock variable was modified (i.e. rep nop;cmp;jcc). The current implementation does it the wrong way around: first test, then wait, then branch. I've asked Asit Mallik from Intel, and he recommended to change it. It should be at least consistent: Right now, spinlock uses 'cmp;rep nop;jcc', rwlock uses 'rep nop;cmp;jcc' [PATCH] Make mem=nopentium clear cpu_has_pse "mem=nopentium" would clear the PSE bit in boot_cpu_data, but the CPU detection later would overwrite it again from CPUID. The large pages would be correctly disabled, but cpu_has_pse was lying. This patch makes sure it stays clear when the option is given. I also took the liberty to remove these obnoxious cpu capability printks who give no use information (the data can be either gotten from CPUID in user space in raw form or from /proc/cpuinfo processed) [PATCH] Fix pageattr with mem=nopentium This fixes a hang in change_page_attr() that occured with mem=nopentium. Make sure a non large page kernel mapping is handled correctly. Previously the page reference counter was handled incorrectly in this case. Also hardens change_page_attr against bogus addresses. You get an EINVAL now. [PATCH] honour init= bootparm Restore the accidentally dropped code to handle "init=xxx" [PATCH] Avoid overwriting boot_cpu_data from trampoline code boot_cpu_data should contain the common capabilities of all cpus in the system. identify_cpu [arch/i386/kernel/cpu/common.c] tries to enforce that. But right now, the SMP trampoline code [arch/i386/kernel/head.S] overwrites boot_cpu_data when the secondary cpus are started, i.e. boot_cpu_data contains the capabilities from the last cpu that booted :-( The attached patch adds a new, __initdata variable for the asm code. Handle single-stepping over fast system calls without polluting the fast case with a pushf/popf, by having the kernel debug trap set the TIF_SINGLESTEP flag and causing the return path to dtrt. [TCP]: Fix infinite loop when reading /proc/net/tcp with ipv6-sockets. [PPPOE]: Fix connect handling. [IPV4]: lockfree ipv4 route cache [Netfilter]: Forgotten dev_put for bridge-devices in nf_reinject. [SCSI 53c700] remove no_module_init again, sigh [PATCH] Re: scsi_scan.c complaints... On Fri, Dec 20, 2002 at 08:29:23PM -0500, Doug Ledford wrote: > And I was right. One little q = NULL; is all that was missing. Anyway, > here's a printout of what startup looks like with this patch in place > under 2.5.52. This should make you happy Justin ;-) Okay, I looked at the patches that are in mainline and they look pretty cool to me. When looking over the code (in preparation of implementing Justin's suggestion to get rid of the highmem_io flag) I found quite a bit small stuff to make the code in that area a lot cleaner: - new helper scsi_calculate_bounce_limit to calculate the bounce limit for a scsi host, remove a copy of that code ni st.c - scsi_initialize_queue gets replace with scsi_alloc_queue, this one now takes only a struct Scsi_Host and returns the request queue, it's paired with a small scsi_free_queue helper. Diffstat: hosts.h | 3 - scsi.c | 43 ---------------------- scsi.h | 1 scsi_scan.c | 113 ++++++++++++++++++++++++++++++++++-------------------------- scsi_syms.c | 5 ++ st.c | 16 +------- 6 files changed, 73 insertions(+), 108 deletions(-) [PATCH] x86 subarch header files Patch from John Stultz. This reorganises the subarch files to put all the headers under the include dir, instead of mixing them up with the C files. The only interesting part is the top section where he makes it fall back from the subarch dir to the default dir if there's no .h file under the subarch dir. This means we can create multiple subarches without copying every single file that any subarch wants into all the directories. And is much tidier, IMHO. [PATCH] NUMA-Q subarch directory This adds a shell of a NUMA-Q subarch directory, and copies mach-default/mach_apic.h into it. I then edited the default version to remove the NUMA-Q stuff, and the NUMA-Q version to remove the default stuff. [PATCH] abstract out clustered APIC code Code originally by James Cleverdon. This abstracts out some sections that were switched by clustered_apic_mode into the following functions: - apic_id_registered() - init_apic_ldr() - multi_timer_check() Changes the return check in balance_irq from testing clustered_apic_mode to testing "no_balance_irq" to be more general. The removal of: entry.dest.logical.logical_dest = TARGET_CPUS; is because it's a duplicate (we do it twice in the same function for no reason). [PATCH] abstract out mpparse code Most of code originally by James Cleverdon. Abstracts out code from the mpparse stuff into: - mpc_apic_id() - apicid_to_cpu_present() instead of using clustered_apic_mode switching. [PATCH] mpparse cleanups Most of code originally by James Cleverdon. More stuff reformed in the mpparse sections - this time not apic stuff, so we create mach_mpparse.h and stick it in there. Abstracts out: - mpc_oem_bus_info() - stores mappings between buses and nodes/quads. - mpc_oem_pci_bus() - stores mappings between global and local pci bus numbers Changes summit_check() into mps_oem_check() to generalise it. [PATCH] cleanup IPI code Reformat the IPI stuff, specifically send_IPI_mask, send_IPI_allbutself, and send_IPI_all. Though the way they work is pretty silly for NUMA-Q, I do an equivalent transform here, and fix the code in a seperate patch (next one). Goes into mach_ipi.h [PATCH] clustered IPI cleanups This one fixes up the IPI code to do something more sensible. Sorry, was just too ugly to leave it alone ... but I did keep it seperated out ;-) Though this is not an equivalent transform it will only affect NUMA-Q & summit - same op twice because some twit just split it out in the last patch for both NUMA-Q & Summit. Because clustered apic logical mode can't do arbitrary broadcasts of addressing (it's not just a bitmap), I have to do send IPI instructions as a sequence of unicasts. However, there's already a loop in the generic send_IPI_mask code to do that ... there's no need to call send_IPI_mask once for each CPU. The comment I wrote at the time even noted that this was silly. [PATCH] more clustered-apic-mode work Code mostly originally by James Cleverdon. Abstracts out more clustered_apic_mode gunk into - ioapic_phys_id_map() - wakeup_secondary_cpu() - setup_portio_remap() [SCSI 53c700] update to new generic device dma_ API [PATCH] scsi_debug version 1.67 for lk 2.5.52 This patch uses the module_param() facility introduced in lk 2.5.52 (see linux/moduleparam.h) to simplify boot time and module load time parameters for the scsi_debug driver. The intent of module_param() is to unify - boot time parameters - module load time parameters - sysfs driver parameters into a few simple calls (seen from the driver's point of view). The sysfs capability hasn't been implemented yet. Using module_param() removes over 100 lines of boilerplate code from the scsi_debug driver. Following the conventions suggested by Rusty, scsi_debug's kernel boot time options have been changed to this form: scsi_debug.num_devs=2 while the module load options are now like this: modprobe scsi_debug num_devs=2 This patch also updates the Kconfig entry for the scsi_debug driver. [SCSI] update lasi700 for new parisc device model ide-scsi changes for new mid level api and error handling in 2.5.52 Here is my proposal for bringing ide-scsi in line with the current kernel. The attached patch does: 1. Change from old style initialization to the new hotplug initialization model. It involves declaring both a parent device and bus kernel object, which feels a bit awkward, but hey, it works. 2. Make ide-scsi request sense itself when CHECK_CONDITION is asserted. This change particularly makes ide-scsi run much smoother on my test box. 3. Implement eh_abort_handler and eh_device_reset_handler. I have no real way to thoroughly test these new routines, so for this part particularly I ask for peer review. Fix sysenter restart backwards jump, add offset comments, and make the alignment of the return point be saner. Remove bogus duplicated (and wrong) function declaration. Linux v2.5.53