Set ide_task_t fields (command_type, handler and prehandler) directly.
Remove unused ide_task_t->posthandler and all ide_cmd_type_parser() logic.
ide_cmd_type_parser() was meant to be used for ioctls but
ended up checking validity of kernel generated requests (doh!).
Rationale for removal:
- it can't be used for existing ioctls (changes the way they work)
- kernel shouldn't check validity of (root only) user-space requests
(it can and should be done in user-space)
- it wastes CPU cycles on going through parsers
- it makes code harder to understand/follow
(now info about request is localized)
Many thanks to Promise for their support.
Expect more updates/fixes for Promise PATA support soon.
- fix PIO (auto-)tuning - use pdcnew_new_tune_chipset()
and always tune PIO mode even if (U)DMA is used
- cleanup cable verification code a bit
- remove leftovers from driver split-up
- remove duplicate DISPLAY_PDC202XX_TIMINGS define
Jeff Garzik [Sun, 14 Mar 2004 18:32:20 +0000 (13:32 -0500)]
[libata sata_sil] remove incorrect limit on drive quirk
The original submittor of the quirk code noted that the errata
of a lockup creating when the condition "sector % 15 == 1" is
true only on chip revisions <= 1. This is limitation on chip
revision is apparently not correct, therefore we apply to all
affected drives in the quirk list.
This is a sledgehammer fix, limiting max-sectors to 15. A much better
fix would split the hardware request into two taskfiles, issuing
an additional command, thereby avoiding "sectors % 15 == 1"
Given the errata is limited to "sil 311x + <these drives>", it is hoped
that some janitor cares enough to do a real fix.
[SPARC32]: Rework the CPU enumeration and probing code
The low 2 bits of the MID are now used exclusively as the software
CPU ID on 4m. This eliminates entirely the need for mid_xlate. We
also eliminate linux_num_cpus and linux_cpus; since the hardware-based
id is now used everywhere we don't need indexed CPU tables.
The device probe is almost identical to sparc64's version. The one
exception is that 4m only uses the bottom 2 bits of the MID, so we also
have a separate function to get the true hardware MID for the rare times
it's actually needed.
Per-cpu data is now used the same way as in sparc64. As a side benefit
we now display the same format Bogo and Clock values in /proc/cpuinfo.
Andrew Morton [Sun, 14 Mar 2004 05:50:10 +0000 (21:50 -0800)]
[PATCH] __kill_pg_info() return value fix
Fix a bug which was spotted by Alex Lyashkov <shadow@psoft.net>
The fairly unobvious coding in __kill_pg_info() will cause a zero value to be
incorrectly returned if the second or succeeding call to
group_send_sig_info() returns an error.
Andrew Morton [Sun, 14 Mar 2004 05:49:48 +0000 (21:49 -0800)]
[PATCH] move consistent_dma_mask to the generic device
From: James Bottomley <James.Bottomley@SteelEye.com>
pci_dev.consistent_dma_mask was introduced to get around problems in the
IA64 Altix machine.
Now, we have a use for it in x86: the aacraid needs coherent memory in a
31 bit address range (2GB). Unfortunately, x86 is converted to the dma
model, so it can't see the pci_dev by the time coherent memory is
allocated.
The solution to all of this is to move pci_dev.consistent_dma_mask to
dev.coherent_dma_mask and make x86 use it in the dma_alloc_coherent()
calls.
This should allow me to make the aacraid set the coherent mask instead
of using it's current dma_mask juggling.
Andrew Morton [Sun, 14 Mar 2004 01:05:57 +0000 (17:05 -0800)]
[PATCH] gcc-3.5 libata build fix
drivers/scsi/sata_vsc.c: In function `vsc_sata_interrupt':
include/linux/libata.h:414: sorry, unimplemented: inlining failed in call to 'ata_host_intr': function body not available
drivers/scsi/sata_vsc.c:187: sorry, unimplemented: called from here
Andrew Morton [Sun, 14 Mar 2004 01:05:48 +0000 (17:05 -0800)]
[PATCH] module unload deadlock fix
From: Rusty Russell <rusty@rustcorp.com.au>
From: Andrea Arcangeli <andrea@suse.de>
We should drop module sem before calling mod->exit, for practical reasons:
too many module exit functions oops or hang, resulting in a permenantly held
module sem, which blocks all module ops including lsmod.
Andrew Morton [Sun, 14 Mar 2004 01:05:37 +0000 (17:05 -0800)]
[PATCH] DMA: Fill gaping hole in DMA API interfaces.
From: "David S. Miller" <davem@redhat.com>
Currently, for an existing DMA mapping, there is a way to transfer buffer
ownership back to the cpu, yet there is no way to give it back to the device
again explicitly. The latter really is needed on platforms where the PCI
subsystem does not snoop the cpu caches, MIPS is one example.
Many drivers were expecting the existing DMA sync interface to handle both
directions, which was wrong.
Now, with this change, we have explicit interfaces for DMA syncing to/from
the device and the cpu.
James Bottomley [Sat, 13 Mar 2004 19:40:13 +0000 (14:40 -0500)]
[PATCH] Add Domain Validation to 53c700 driver
This simply throws out the 53c700 driver's optimistic setting of the
best possible transport parameters and replaces it with DV
determination. It also adds a missing report_bus_reset() callback and
finally does a delayed DV on device errors.
Jaroslav Kysela [Sat, 13 Mar 2004 19:19:40 +0000 (20:19 +0100)]
ALSA CVS update - Takashi Iwai <tiwai@suse.de>
EMU10K1/EMU10K2 driver
disabled Dell OEM Emu10k1x from the pci id list.
the board isn't compatible with the normal emu10k1.
Jaroslav Kysela [Sat, 13 Mar 2004 19:15:17 +0000 (20:15 +0100)]
ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
USB generic driver
prevent twenty-seconds wait when unplugging USB MIDI device with a port subscription
Wim Van Sebroeck [Sun, 14 Mar 2004 00:38:29 +0000 (01:38 +0100)]
WATCHDOG] v2.6.4 wdt977-v0.03-patch
Version 0.03 of wdt977.c - Changes that were made are:
* Extract the stop code in a seperate function (wdt977_stop)
* Extract the start code in a seperate function (wdt977_start)
* Rename kick_wdog to wdt977_keepalive for consistency
* Extract the watchdog's status code to a seperate function (wdt977_get_status)
* Change the way we deal with the watchdog timeout:
Up till now we used timeoutM (in minutes) as the correct value and then
calculated timeout as being timeoutM*60 or *timeoutM*120 (depending on
wether or not we have the netwinder hardware bug).
From now on timeout is the correct value and we calculate timeoutM out
of it. Because of this we start with checking wether or not we have a
correct timeout value (if not we reset it to the default value) and we
automatically calculate timeoutM. Each time we change timeout with a
correct timeout value, we recalculate timeoutM.
* Extended ioctl code with WDIOC_SETOPTIONS and updated the watchdog_info structure
* Added notifier support
Wim Van Sebroeck [Sun, 14 Mar 2004 00:31:12 +0000 (01:31 +0100)]
[WATCHDOG] v2.6.4 pcwd_pci-v1.00_20040313-patch
Two small fixes:
* Make cards_found a global variable so that if we remove the
pci device we can count down.
* If we can't find a correct I/O address for the card, then we
should disable the card again.
Trond Myklebust [Sat, 13 Mar 2004 17:10:52 +0000 (12:10 -0500)]
akpm@odsl.org: For complex reasons it is not possible to hold i_sem in nfs_update_inode().
Hence the i_size_write() in there is deadlocky. Go back to the old way.
Trond Myklebust [Sat, 13 Mar 2004 17:07:59 +0000 (12:07 -0500)]
From: <martin@meltin.net>
Forward-port from 2.4:
The following patch pulls an NFS server IP address off root_server_path
(handed out via the DHCP root-path option), if it is present. For example,
you can do this sort of thing in dhcpd.conf:
root-path = 192.168.1.33:/tftpboot/yip.zImage
This lets you mount your root filesystem off a different machine than you
booted from, without needing to use kernel command-line parameters.
The patch appears to be backwards compatible.
RFC2132 says this about the root-path option:
This option specifies the path-name that contains the client's root
disk. The path is formatted as a character string consisting of
characters from the NVT ASCII character set.
This is sufficiently vague to allow the path-name to include an IP-address.
Also, I found some documentation for FreeBSD saying it does this too, so it
must be right, because those FreeBSD guys are really smart... :-)
The only downside of the patch is that the summary that ipconfig prints can
be a little odd when the kernel command line overrides whatever ipconfig gets
from (say) DHCP. The address from the kernel command line seems to get
stripped off early, so ipconfig reports it, but it doesn't report the kernel
command line NFS path, since that's handled a bit later... This small
cosmetic problem looks difficult to "fix" without rewriting quite a bit of
stuff...
Trond Myklebust [Sat, 13 Mar 2004 16:59:23 +0000 (11:59 -0500)]
RPC: patch by Chuck Lever to make the number of RPC slots a tunable parameter.
This is wanted in order to allow the NFS client to send more requests before
is has to block and wait for replies.
This is mainly useful if you have a WAN and want to ensure that the bandwidth
is being used efficiently.
Trond Myklebust [Sat, 13 Mar 2004 16:53:43 +0000 (11:53 -0500)]
RPC,NFSv3: remove the redundant "memset()" in call_encode(). Fix up the only places
where this causes a padding error: xdr_encode_fhandle() and unx_marshal()
Trond Myklebust [Sat, 13 Mar 2004 16:52:33 +0000 (11:52 -0500)]
NFSv2/v3 locking: A patch to ensure that blocks which are not going to time out
are placed last on the ordered list nlm_block (problem reported by Olaf
Kirch).
Trond Myklebust [Sat, 13 Mar 2004 16:51:10 +0000 (11:51 -0500)]
NFSv2/v3 locking: Patch by Patrice Dumas to ensure that the server index blocks uniquely
by using the client address in addition to the value of the NLM cookie field.
Trond Myklebust [Sat, 13 Mar 2004 16:49:51 +0000 (11:49 -0500)]
NFSv2/v3 locking: Patch by Patrice Dumas that adds a check to ensure we really
were requesting a blocking lock when we get a reply from the server asking us to
block.
Trond Myklebust [Sat, 13 Mar 2004 16:48:42 +0000 (11:48 -0500)]
NFSv2/v3 locking: Patch by Patrice Dumas to implement nlmsvc_proc_granted_res.
When a server receives that callback it should deallocate the corresponding blocked
lock using the nlmsvc_grant_reply function.
Trond Myklebust [Sat, 13 Mar 2004 16:47:36 +0000 (11:47 -0500)]
NFSv2/v3/v4: Parenthesize #defines in nfs?xdr.c. Fix an off-by-one error on the value
of compound_decode_hdr_maxsz.
NFSv4: fix a printk() typo (spotted by Linda Dunaphant).
NFSv4: Ensure that nfs4_open_reclaim() copies the value of the new stateid back into
the shared nfsv4 state structure.
NFSv4: Don't leak NFS4ERR_WRONGSEC errors back into nfs_lookup().
RPC,NFS,Lockd: Mark the debugging code as "unlikely" so that gcc moves it out of the
mainline code paths.
Trond Myklebust [Sat, 13 Mar 2004 16:45:10 +0000 (11:45 -0500)]
RPC,NFSv2/v3/v4: Ensure that xprt_create_proto() and rpc_create_client() return
full error codes. Should allow the "mount" program to print more useful error
diagnostics.
Trond Myklebust [Sat, 13 Mar 2004 16:43:28 +0000 (11:43 -0500)]
RPC: Ensure that we have the correct capabilities when binding a socket to a reserved
port. Fixes a privilege bug when CONFIG_SECURITY is set.
RPC: When trying to reconnect to a TCP port, try to bind() to the last used port number
in order to ensure that the servers NFS replay cache recognizes this as being the
same mount as before.
Trond Myklebust [Sat, 13 Mar 2004 16:36:38 +0000 (11:36 -0500)]
NFSv2/v3/v4: Ensure that fsync() flushes all writebacks to disk rather than just the
ones labelled as belonging to our file. This fixes a bug in which msync(MS_SYNC)
will fail to flush the pages to disk.
Trond Myklebust [Sat, 13 Mar 2004 16:34:29 +0000 (11:34 -0500)]
NFSv2/v3: Ensure that we only use GETATTR+STATFS (NFSv2) and FSINFO (NFSv3) when
mounting. This should allow us to use AUTH_SYS credentials when mounting,
(even when the user requests RPCSEC_GSS authentication) due to the hack
described in RFC2623.
Trond Myklebust [Sat, 13 Mar 2004 16:28:35 +0000 (11:28 -0500)]
Configuration: simplify configuration options. Automatically select RPCSEC_GSS
if NFSv4 is selected. Remove need for user to select SUNRPC_GSS, and the
crypto options.
Make NFSv3 a recommended option.
Andrew Morton [Sat, 13 Mar 2004 11:26:39 +0000 (03:26 -0800)]
[PATCH] Work around an AMD768MPX erratum
From: Andi Kleen <ak@suse.de>
This patch has been in the SuSE 2.4 kernel forever, but for some reason
never made it mainline.
It works around the infamous "only works stable when a mouse is plugged in"
problem some AMD 768MPX Dual Athlon chipsets have. The problem happens
because the chipset can hang when PCI prefetch strides from a RAM page into
the VGA text buffer. When a PS2 mouse is plugged in the BIOS reserves a
page before the VGA text buffer, which stops the prefetch early.
This patch always reserves this page when the chipset could be AMD768MPX.
This can be only done early in bootmem setup. Because it's difficult to
scan the PCI bus that early it just always reserves this page when the CPU
is an Athlon. Normally it should not make a difference because the BIOS
will have reserved that page anyways when a PS/2 mouse is plugged in.
Andrew Morton [Sat, 13 Mar 2004 11:26:09 +0000 (03:26 -0800)]
[PATCH] use wait_task_inactive() in kthread_bind()
From: Rusty Russell <rusty@rustcorp.com.au>
Make it clear that the reason we do wait_task_inactive is because
kthread_bind frobs with k->thread_info->cpu, which is only legal because
the task is definitely not running.
We can't use the normal migration thread code here, because it doesn't let
us bind to cpus which are offline yet, and also because we use this to
start the migration threads themselves.
Andrew Morton [Sat, 13 Mar 2004 11:25:58 +0000 (03:25 -0800)]
[PATCH] further __KERNEL_SYSCALLS__ removal
From: Arnd Bergmann <arnd@arndb.de>
Dave Jones already removed some of the useless __KERNEL_SYSCALLS__ defines
in various files, this gets rid of almost all the others. Replacing
execve() is nontrivial, so I left those in for now.
For all the other system calls that are currently used from inside the
kernel, calling the sys_* function directly should always have an identical
effect.
James Bottomley [Sat, 13 Mar 2004 08:48:36 +0000 (03:48 -0500)]
[PATCH] Fix removable USB drive oops
The actual problem reported was because there wasn't a corresponding
check on transport_classdev.class in the unregister.
However, on closer inspection I also turned up a nasty thinko in the
reference counting. For reasons best known to the class code authors,
class devices have to obtain their own references to the devices they're
attached to which they release again in their .release routines, so you
have to remember to do a get_device() in the correct place after the
class_device_add(). I put comments in the code so that, hopefully, we
can avoid the problem in future.
James Bottomley [Sat, 13 Mar 2004 05:35:20 +0000 (00:35 -0500)]
[PATCH] Add Domain Validation to the SPI transport class
Domain Validation is a fairly essential element to the SCSI Parallel
Interface (although if you look very few drivers actually do it). The
premise is that the Parallel Bus, being a transmission line, might not
be correctly tuned to the transfers you want do perform. DV probes the
parameters of the transport until it finds a setting that works (for the
interested, see http://www.t10.org/ftp/t10/drafts/sdv/sdv-r08b.pdf)
The current code employs rather simplistic DV heuristics, although those
can be improved over time. The change in scsi_scan.c is so that DV may
be done easily from the slave_configure routine, which is the most
natural place to begin.