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.