886 Commits

Author SHA1 Message Date
Linus Torvalds
4fd5f8267d Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel
Manual #include fixups for clashes - there may be some unnecessary
2005-10-31 07:32:56 -08:00
Jeff Garzik
ce1eeb95fc Merge branch 'upstream' 2005-10-30 23:32:03 -05:00
Jeff Garzik
005a5a06a6 [libata] locking rewrite (== fix)
A lot of power packed into a little patch.

This change eliminates the sharing between our controller-wide spinlock
and the SCSI core's Scsi_Host lock.  As the locking in libata was
already highly compartmentalized, always referencing our own lock, and
never scsi_host::host_lock.

As a side effect, this change eliminates a deadlock from calling
scsi_finish_command() while inside our spinlock.
2005-10-30 23:31:48 -05:00
Jeff Garzik
e533825447 [libata] ata_tf_to_host cleanups
Integrate ata_exec() and ata_tf_to_host() into their only caller,
ata_bus_edd().

Rename ata_tf_to_host_nolock() to ata_tf_to_host().

This makes locking a bit easier to review, and may help pave the way for
future changes.
2005-10-30 21:37:17 -05:00
Paul Mackerras
23fd07750a Merge ../linux-2.6 by hand 2005-10-31 13:37:12 +11:00
Tim Schmielau
4e57b68178 [PATCH] fix missing includes
I recently picked up my older work to remove unnecessary #includes of
sched.h, starting from a patch by Dave Jones to not include sched.h
from module.h. This reduces the number of indirect includes of sched.h
by ~300. Another ~400 pointless direct includes can be removed after
this disentangling (patch to follow later).
However, quite a few indirect includes need to be fixed up for this.

In order to feed the patches through -mm with as little disturbance as
possible, I've split out the fixes I accumulated up to now (complete for
i386 and x86_64, more archs to follow later) and post them before the real
patch.  This way this large part of the patch is kept simple with only
adding #includes, and all hunks are independent of each other.  So if any
hunk rejects or gets in the way of other patches, just drop it.  My scripts
will pick it up again in the next round.

Signed-off-by: Tim Schmielau <tim@physik3.uni-rostock.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-30 17:37:32 -08:00
Jean Delvare
33430dc593 [PATCH] Typo fix: explictly -> explicitly
(akpm: I don't do typo patches, but one of these is in a printk string)

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-30 17:37:20 -08:00
Andrew Morton
17fd47ab4d [PATCH] ide-scsi highmem cleanup
It's not necessary to test PageHighmem in here - kmap_atomic() does the right
thing.

Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-30 17:37:17 -08:00
Jeff Garzik
95dbf5c4be Merge branch 'master' 2005-10-30 20:24:34 -05:00
Jeff Garzik
a9524a76f7 [libata] use dev_printk() throughout drivers
A few drivers were not following the standard meme of printing out
their driver name and version at module load time; this is fixed
as well.
2005-10-30 14:39:11 -05:00
Jeff Garzik
fbf30fbaa6 [libata ata_piix] fix native mode probe, after recent updates 2005-10-30 07:57:31 -05:00
Jeff Garzik
6248e64721 [libata ata_piix] use dev_printk() where appropriate 2005-10-30 06:42:18 -05:00
Jeff Garzik
0f0d519269 [libata] fix legacy IDE probing
ata_pci_init_one() receives an array of struct ata_port_info.  Recent
updates to the code had always obtained port information from
array element 0, rather than array element N.

Change to avoid hardcoding port_info[0], thereby restoring proper
hardware information to secondary legacy ports.
2005-10-30 06:41:29 -05:00
Jeff Garzik
054ee8fd39 Merge branch 'upstream' 2005-10-30 04:50:22 -05:00
Jeff Garzik
a7dac447bb [libata] change ata_qc_complete() to take error mask as second arg
The second argument to ata_qc_complete() was being used for two
purposes: communicate the ATA Status register to the completion
function, and indicate an error.  On legacy PCI IDE hardware, the latter
is often implicit in the former.  On more modern hardware, the driver
often completely emulated a Status register value, passing ATA_ERR as an
indication that something went wrong.

Now that previous code changes have eliminated the need to use drv_stat
arg to communicate the ATA Status register value, we can convert it to a
mask of possible error classes.

This will lead to more flexible error handling in the future.
2005-10-30 04:44:42 -05:00
Jeff Garzik
f0612bbc41 Merge branch 'upstream' 2005-10-30 01:58:18 -05:00
Jeff Garzik
81cfb8864c Merge branch 'master' 2005-10-30 01:56:31 -05:00
Linus Torvalds
9f75e1eff3 Merge master.kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6 2005-10-29 21:48:06 -07:00
Nick Piggin
b5810039a5 [PATCH] core remove PageReserved
Remove PageReserved() calls from core code by tightening VM_RESERVED
handling in mm/ to cover PageReserved functionality.

PageReserved special casing is removed from get_page and put_page.

All setting and clearing of PageReserved is retained, and it is now flagged
in the page_alloc checks to help ensure we don't introduce any refcount
based freeing of Reserved pages.

MAP_PRIVATE, PROT_WRITE of VM_RESERVED regions is tentatively being
deprecated.  We never completely handled it correctly anyway, and is be
reintroduced in future if required (Hugh has a proof of concept).

Once PageReserved() calls are removed from kernel/power/swsusp.c, and all
arch/ and driver code, the Set and Clear calls, and the PG_reserved bit can
be trivially removed.

Last real user of PageReserved is swsusp, which uses PageReserved to
determine whether a struct page points to valid memory or not.  This still
needs to be addressed (a generic page_is_ram() should work).

A last caveat: the ZERO_PAGE is now refcounted and managed with rmap (and
thus mapcounted and count towards shared rss).  These writes to the struct
page could cause excessive cacheline bouncing on big systems.  There are a
number of ways this could be addressed if it is an issue.

Signed-off-by: Nick Piggin <npiggin@suse.de>

Refcount bug fix for filemap_xip.c

Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-29 21:40:39 -07:00
Jeff Garzik
0169e284f6 [libata] remove ata_chk_err(), ->check_err() hook.
We now depend on ->tf_read() to provide us with the contents
of the Error shadow register.
2005-10-29 21:25:10 -04:00
David Hardeman
378f058cc4 [PATCH] Use sg_set_buf/sg_init_one where applicable
This patch uses sg_set_buf/sg_init_one in some places where it was
duplicated.

Signed-off-by: David Hardeman <david@2gen.com>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Cc: Greg KH <greg@kroah.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2005-10-30 11:19:43 +11:00
Jeff Garzik
b0c4e148bd Merge branch 'master' 2005-10-29 17:49:12 -04:00
Linus Torvalds
e9d52234e3 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2005-10-29 12:19:15 -07:00
Maciej W. Rozycki
15b6e09b66 dec_esp: Use physical addresses
These should really be addresses obtained with ioremap() or some
bus-specific backend, but for now...

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2005-10-29 19:31:20 +01:00
Linus Torvalds
955c503882 Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev 2005-10-29 11:26:04 -07:00
Al Viro
2ab540becd [PATCH] sata_sil24 iomem annotations and fixes
trivial iomem annotations + missing memcpy_fromio() caught by
those
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-29 14:10:06 -04:00
Randy Dunlap
57f3bda88a [PATCH] libata-core cleanups (updated)
libata-core cleanups:
- use kzalloc() instead of kmalloc() + memset();
- use one exit path in ata_device_add();

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-29 14:10:06 -04:00
Russell King
d052d1beff Create platform_device.h to contain all the platform device details.
Convert everyone who uses platform_bus_type to include
linux/platform_device.h.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-10-29 19:07:23 +01:00
Jeff Garzik
ac19bff25b [libata] ensure ->tf_read() hook reads Status and Error registers
We want ->tf_read() to get a complete snapshot of all taskfile
registers, without requiring the callers to manually call
ata_chk_status() and ata_chk_err() themselves.

This also fixes a minor bug in sata_vsc where the lower bits of the
feature register were incorrectly placed in the HOB (high order bits)
portion of struct ata_taskfile.
2005-10-29 13:58:21 -04:00
Al Viro
4b4a5eaedf [PATCH] sata_sil24 iomem annotations and fixes
trivial iomem annotations + missing memcpy_fromio() caught by those

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-29 10:35:07 -07:00
Jack Hammer
a3632fa3ec [SCSI] ips: Fix up for correct scatter/gather processing
Added kmap_atomic/kunmap_atomic. Added protection of KM_IRQ0 slot with
local_irq_save(), local_irq_restore(), and comments.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:39:41 -05:00
James.Smart@Emulex.Com
eb66fff7d9 [SCSI] lpfc: Change version number to 8.1.0
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:33:14 -05:00
James.Smart@Emulex.Com
73797e31b5 [SCSI] lpfc 8.1.0 : Add owner field to struct pci_driver
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:32:49 -05:00
James.Smart@Emulex.Com
0bd4ca25ad [SCSI] lpfc: Fix eh_ return codes for commands
Return FAILED from eh_ routines if command(s) is(are) not completed

There were scenarios where we may have returned from the error
handlers prior to all affected commands being flushed to the midlayer.
Add changes to ensure this doesn't happen.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:31:48 -05:00
James.Smart@Emulex.Com
4a0dfcdefb [SCSI] lpfc: Remove unneeded IOCB_t * cast
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:31:05 -05:00
James.Smart@Emulex.Com
a784efbff7 [SCSI] lpfc: Adjust lpfc_scsi_buf allocation
Adjust lpfc_scsi_buf allocation to account for lun_queue_depth and
error handling

Under high load and high duress, the error handler could steal some
command resources from the normal i/o path. Rework to allocate
additional resources to avoid this scneario.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:30:12 -05:00
James.Smart@Emulex.Com
68876920f4 [SCSI] lpfc: Replace lpfc_sli_issue_iocb_wait_high_priority
Replace lpfc_sli_issue_iocb_wait_high_priority with lpfc_sli_issue_iocb_wait.

Simplify code paths, as there really wasn't a "priority"

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:29:09 -05:00
James Bottomley
604a3e3042 [SCSI] lpfc: Fix for "command completion for iotax x?? not found"
From: James Smart <James.Smart@emulex.com>

There were scenarios where the error handlers could reuse an iotag
value of an active io.  Remove all possibility of this by
pre-assigning iotag resources to command resources.

Signed-off-by: James Smart <James.Smart@emulex.com>

Rejections fixed up and
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:28:33 -05:00
James.Smart@Emulex.Com
21568f5387 [SCSI] lpfc: Remove RPI hash from the driver
Table was not providing a lot of value and injected a couple of
errors. Removed it and made functionality inline.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:22:50 -05:00
James.Smart@Emulex.Com
93a20f7445 [SCSI] lpfc: Restore HEX safe bahavior of the sysfs xxx_store functions.
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:21:26 -05:00
James.Smart@Emulex.Com
f91b392c4d [SCSI] lpfc: Fix for "Unknown IOCB command Data: x0 x3 x0 x0"
Fix for "Unknown IOCB command Data: x0 x3 x0 x0" messages and
inability to see devices

On some platforms, the host-memory based ring mgmt area was not
zero. Also, driver wasn't manipulating the entire 32bits of the ring
pointers.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:19:52 -05:00
James.Smart@Emulex.Com
09703d38d4 [SCSI] lpfc: Fix comments for nodev_tmo
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:18:30 -05:00
James.Smart@Emulex.Com
7bcbb7527f [SCSI] lpfc: Add range checking for attributes passed as options at load time.
Reuse macros defined for sysfs store callbacks in the initialization
code in order to enforce the same range checking.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:12:49 -05:00
James.Smart@Emulex.Com
755c0d06c5 [SCSI] lpfc: Return -EINVAL, -EPERM, and -EIO instead of 0 from sysfs callbacks
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:11:40 -05:00
James.Smart@Emulex.Com
964b77e776 [SCSI] lpfc: Update to Emulex hba model names
Update adapter names to match Emulex naming conventions.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:10:44 -05:00
James.Smart@Emulex.Com
433c357956 [SCSI] lpfc: Cleanup code in lpfc_get_stats().
Cleanup white spaces in argument calls & initializations, prune if
statements, remove casting and remove redundant if checks.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:09:58 -05:00
James Bottomley
ca61f10ab2 [SCSI] remove broken driver cpqfc
Hopefully there should be a brand new replacement driver for this heap
of junk by the beginning of next year.

Acked By: Martin K. Petersen <mkp@mkp.net>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 10:01:24 -05:00
James Bottomley
80e23babfc [SCSI] fix up mismerge in osst
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-29 09:42:17 -05:00
James.Smart@Emulex.Com
19a7b4aebf [SCSI] update fc_transport for removal of block/unblock functions
We recently went back to implement a board reset. When we perform the
reset, we wanted to tear down the internal data structures and rebuild
them. Unfortunately, when it came to the rport structure, things were
odd. If we deleted them, the scsi targets and sdevs would be
torn down. Not a good thing for a temporary reset. We could block the
rports, but we either maintain the internal structures to keep the
rport reference (perhaps even replicating what's in the transport),
or we have to fatten the fc transport with new search routines to find
the rport (and deal with a case of a dangling rport that the driver
forgets).

It dawned on me that we had actually reached this state incorrectly.
When the fc transport first started, we did the block/unblock first, then
added the rport interface. The purpose of block/unblock is to hide the
temporary disappearance of the rport (e.g. being deleted, then readded).
Why are we making the driver do the block/unblock ? We should be making
the transport have only an rport add/delete, and the let the transport
handle the block/unblock.

So... This patch removes the existing fc_remote_port_block/unblock
functions. It moves the block/unblock functionality into the
fc_remote_port_add/delete functions.  Updates for the lpfc driver are
included. Qlogic driver updates are also enclosed, thanks to the
contributions of Andrew Vasquez. [Note: the qla2xxx changes are
relative to the scsi-misc-2.6 tree as of this morning - which does
not include the recent patches sent by Andrew]. The zfcp driver does
not use the block/unblock functions.

One last comment: The resulting behavior feels very clean. The LLDD is
concerned only with add/delete, which corresponds to the physical
disappearance.  However, the fact that the scsi target and sdevs are
not immediately torn down after the LLDD calls delete causes an
interesting scenario... the midlayer can call the xxx_slave_alloc and
xxx_queuecommand functions with a sdev that is at the location the
rport used to be. The driver must validate the device exists when it
first enters these functions. In thinking about it, this has always
been the case for the LLDD and these routines. The existing drivers
already check for existence. However, this highlights that simple
validation via data structure dereferencing needs to be watched.
To deal with this, a new transport function, fc_remote_port_chkready()
was created that LLDDs should call when they first enter these two
routines. It validates the rport state, and returns a scsi result
which could be returned. In addition to solving the above, it also
creates consistent behavior from the LLDD's when the block and deletes
are occuring.

Rejections fixed up and
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-28 21:20:07 -05:00
Jeff Garzik
422c0d61d5 [SCSI] use scmd_id(), scmd_channel() throughout code
Wrap a highly common idiom.  Makes the code easier to read, helps pave
the way for sdev->{id,channel} removal, and adds a token that can easily
by grepped-for in the future.

There are a couple sdev_id() and scmd_printk() updates thrown in as well.

Rejections fixed up and
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2005-10-28 21:10:16 -05:00