Commit graph android_kernel_sony_sdm845/include/linux/libata.h
Message SHA1
[PATCH] libata: fix qc->n_elem == 0 case handling in ata_qc_next_sg
This patch makes ata_for_each_sg() start with pad_sgent when
qc->n_elem is zero.  Previously, ata_for_each_sg() unconditionally
started with qc->__sg, handling the first sg to fill_sg() routines
even when the entry was invalid.  And while at it, unwind ?: in
ata_qc_next_sg() into if statement.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-20 16:48:18 -05:00
cc1887f3d8
Merge branch 'upstream'
Jeff Garzik   commited 2006-02-20 05:13:31 -05:00
ff60774859
[PATCH] libata: rename ata_dev_id_[c_]string()
This patch renames ata_dev_id_[c_]string() to ata_id_[c_]string().
All other functions which read data from ATA ID data start with ata_id
and those two function names were getting too long.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-20 04:54:22 -05:00
6a62a04d47
Merge branch 'upstream'
Jeff Garzik   commited 2006-02-13 00:13:48 -05:00
3875e1945b
[PATCH] libata: add per-device max_sectors
If a low level driver wants to control max_sectors, it had to adjust
ap->host->max_sectors and set ATA_DFLAG_LOCK_SECTORS to tell
ata_scsi_slave_config not to override the limit.  This is not only
cumbersome but also incorrect for hosts which support more than one
devices per port.

This patch adds per-device ->max_sectors.  If the field is unset
(zero), libata core layer will adjust ->max_sectors according to
default rules.  If the field is set, libata honors the setting.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-12 14:36:30 -05:00
b00eec1d58
[PATCH] libata: move cdb_len for host to device
cdb_len is per-device property.  Sharing cdb_len on ap results in
inaccurate configuration on revalidation and hotplugging.  This patch
makes cdb_len per-device.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-12 14:29:10 -05:00
6e7846e9c5
[PATCH] libata: implement ata_dev_id_c_string()
ata_dev_id_c_string() reads ATA string from the specified offset of
the given IDENTIFY PAGE and puts it in the specified buffer in trimmed
and NULL-terminated form.  The caller must supply a buffer which is
one byte larger than the maximum size of the target ID string.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-12 14:24:41 -05:00
0e949ff304
Merge branch 'upstream'
Jeff Garzik   commited 2006-02-11 18:02:04 -05:00
1cb9d721d9
[PATCH] libata: kill assert() macro
libata assert() now has no user left.  Kill it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-11 17:51:57 -05:00
bef4a456b8
[PATCH] libata: inline ata_qc_complete()
This patch inlines ata_qc_complete() and uninlines __ata_qc_complete()
as suggested by Jeff Garzik.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-11 17:51:56 -05:00
76014427e6
Merge branch 'upstream'
Jeff Garzik   commited 2006-02-10 07:09:37 -05:00
ca7d5e42d7
[PATCH] libata: implement ata_scsi_timed_out()
Implement ata_scsi_timed_out(), to be used as
scsi_host_template->eh_timed_out callback for all libata drivers.
Without this function, the following race exists.

If a qc completes after SCSI timer expires but before libata EH kicks
in, the qc gets completed but the scsicmd still gets passed to libata
EH resulting in ->eng_timeout invocation with NULL qc, which none is
handling properly.

This patch makes sure that scmd and qc share the same lifetime.
Original idea from Jeff Garzik <jgarzik@pobox.com>.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-10 06:50:46 -05:00
f29841e08f
[PATCH] libata: add ATA_QCFLAG_EH_SCHEDULED
Add ATA_QCFLAG_EH_SCHEDULED.  If this flag is set, the qc is owned by
EH and normal completion path is not allowed to finish it.  This patch
doesn't actually use this flag.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-10 06:50:45 -05:00
341963b909
Merge branch 'upstream'
Jeff Garzik   commited 2006-02-09 04:28:13 -05:00
99b3738fbf
[PATCH] libata: implement ata_std_probeinit()
This patch implements the off-the-shelf probeinit component operation.
Currently, all it does is waking up the PHY if it's a SATA port.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-09 01:59:52 -05:00
8a19ac89ed
[PATCH] libata: add probeinit component operation to ata_drive_probe_reset()
This patch adds probeinit component operation to
ata_drive_probe_reset().  If present, this new operation is called
before performing any reset.  The operations's roll is to prepare @ap
for following probe-reset operations.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-09 01:59:52 -05:00
7944ea9522
[PATCH] libata: EH / pio tasks synchronization
This patch makes sure that pio tasks are flushed before proceeding
with EH.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-09 01:18:38 -05:00
c18d06f89f
[PATCH] libata: implement ATA_FLAG_IN_EH port flag
ATA_FLAG_IN_EH flag is set on entry to EH and cleared on completion.
This patch just sets and clears the flag.  Following patches will
build normal qc execution / EH synchronization aroung this flag.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-02-09 01:18:37 -05:00
dde44589bf
[PATCH] libata: implement standard reset component operations and ->probe_reset
Implement SRST, COMRESET and standard postreset component operations
for ata_drive_probe_reset(), and use these three functions to
implement ata_std_probe_reset.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-27 20:58:34 -05:00
c2bd58047b
[PATCH] libata: implement ata_drive_probe_reset()
Most low level drivers share supported reset/classify actions and
sequence.  This patch implements ata_drive_probe_reset() which helps
constructing ->probe_reset from three component operations -
softreset, hardreset and postreset.  This minimizes duplicate code and
yet allows flexibility if needed. The three component operations can
also be shared by EH later.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-27 20:58:34 -05:00
a62c0fc526
Merge branch 'upstream-2.6.17'
Jeff Garzik   commited 2006-01-27 02:45:00 -05:00
f6ef65e6d0
Merge branch 'tmp'
Jeff Garzik   commited 2006-01-27 02:39:25 -05:00
7103c7bc86
Merge branch 'tmp'
Jeff Garzik   commited 2006-01-27 02:37:46 -05:00
b4d28889f7
Merge branch 'tmp'
Jeff Garzik   commited 2006-01-27 02:36:14 -05:00
7dfb869c8e
Merge branch 'tmp'
Jeff Garzik   commited 2006-01-27 02:29:20 -05:00
628e386e27
Merge branch 'tmp'
Jeff Garzik   commited 2006-01-27 02:26:46 -05:00
8dd2e3bd57
Merge branch 'master'
Jeff Garzik   commited 2006-01-27 02:20:42 -05:00
2af5920b81
[PATCH] libata: new ->probe_reset operation
Add new ->probe_reset operation to ata_port_operations obsoleting
->phy_reset.  The main difference from ->phy_reset is that the new
operation is not allowed to manipulate libata internals directly.
It's not allowed to configure or disable the port or devices.  It can
only succeed or fail and classify attached devices into passed
@classes.

This change gives more control to higher level and eases sharing reset
methods with EH.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-26 23:20:14 -05:00
c19ba8af4f
[PATCH] libata: export ata_busy_sleep
Export ata_busy_sleep(), to be used by low level driver reset functions.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-26 23:18:47 -05:00
6f8b995895
[PATCH] libata: implement and apply ata_eh_qc_complete/retry()
Implement ata_eh_qc_complete/retry() using scsi_eh_finish_cmd() and
scsi_eh_flush_done_q().  This removes all eh scsicmd finish hacks from
low level drivers.

This change was first suggested by Jeff Garzik.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-26 22:36:28 -05:00
a72ec4ce6d
[PATCH] libata: add detailed AC_ERR_* flags
Add detailed AC_ERR_* flags and use them.  Long-term goal is to
describe all errors with err_mask and tf combination (tf for failed
sector information, etc...).  After proper error diagnosis is
implemented, sense data should also be generated from err_mask instead
of directly from hardware tf registers as it is currently.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-26 22:36:27 -05:00
11a56d2439
[PATCH] libata: return AC_ERR_* from issue functions
Return AC_ERR_* mask from issue fuctions instead of 0/-1.  This
enables things like failing a qc with AC_ERR_HSM when the device
doesn't set DRDY when the qc is about to be issued.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-26 22:36:27 -05:00
9a3d9eb017
[PATCH] libata: make the owner of a qc responsible for freeing it
qc used to be freed automatically on command completion.  However, as
a qc can carry information about its completion status, it can be
useful to its owner/issuer after command completion.  This patch makes
freeing qc responsibility of its owner.  This simplifies
ata_exec_internal() and makes command turn-around for atapi request
sensing less hackish.

This change was originally suggested by Jeff Garzik.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2006-01-26 22:33:49 -05:00
77853bf2b4
Merge branch 'debug'
Jeff Garzik   commited 2006-01-17 19:46:27 -05:00
8a6d498e86
[PATCH] libata: Fix heuristic typos add LBA48PIO flag and support code, add IRQ flag for next diff
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Alan Cox   authored and   Jeff Garzik   commited 2006-01-17 19:37:45 -05:00
8d238e0124
From: Borislav Petkov <petkov@uni-muenster.de>
libata new debugging macro definitions

Signed-off-by: Borislav Petkov <petkov@uni-muenster.de>
Signed-off-by: Randy Dunlap <randy_d_dunlap@linux.intel.com>

Randy Dunlap   authored and   Jeff Garzik   commited 2006-01-17 19:34:42 -05:00
bfd6057959
Merge branch 'upstream'
Jeff Garzik   commited 2006-01-17 10:29:06 -05:00
ea9b395fe2
[PATCH] libata: add a function to decide if we need iordy
This ought to be simple but for PIO2 we have to poke around the drive
data to get it 100% correct.

Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Alan Cox   authored and   Jeff Garzik   commited 2006-01-17 08:25:39 -05:00
1bc4ccfff8
Merge branch 'post-2.6.15' of git://brick.kernel.dk/data/git/linux-2.6-block
Manual fixup for merge with Jens' "Suspend support for libata", commit
ID 9b84754866.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>

Linus Torvalds   commited 2006-01-06 09:01:25 -08:00
d99cf9d679
[PATCH] Suspend support for libata
This patch adds suspend patch to libata, and ata_piix in particular. For
most low level drivers, they should just need to add the 4 hooks to
work. As I can only test ata_piix, I didn't enable it for more
though.

Suspend support is the single most important feature on a notebook, and
most new notebooks have sata drives. It's quite embarrassing that we
_still_ do not support this. Right now, it's perfectly possible to
suspend the drive in mid-transfer.

Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

Jens Axboe   authored and   Linus Torvalds   commited 2006-01-06 08:36:09 -08:00
9b84754866
[BLOCK] add FUA support to libata
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jens Axboe <axboe@suse.de>

Tejun Heo   authored and   Jens Axboe   commited 2006-01-06 09:56:18 +01:00
9a3dccc425
Merge branch 'upstream'
Jeff Garzik   commited 2005-12-13 02:32:01 -05:00
e8b0942848
Merge branch 'upstream-fixes'
Jeff Garzik   commited 2005-12-13 02:30:04 -05:00
e508a391a0
[libata] mark certain hardware (or drivers) with a no-atapi flag
Some hardware does not support the PACKET command at all.
Other hardware supports ATAPI, but the driver does something nasty such
as calling BUG() when an ATAPI command is issued.

For these such cases, we mark them with a new flag, ATA_FLAG_NO_ATAPI.

Initial version contributed by Ben Collins.

Jeff Garzik   commited 2005-12-13 02:29:45 -05:00
50630195bb
Merge branch 'upstream'
Jeff Garzik   commited 2005-12-13 01:47:05 -05:00
d1397f8376
[PATCH] libata: remove unused qc->waiting
There is no user of qc->waiting left after ata_exec_internal()
changes.  Kill the field.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2005-12-13 01:34:46 -05:00
b563230340
[PATCH] libata: implement ata_exec_internal()
This patch implements ata_exec_internal() function which performs
libata internal command execution.  Previously, this was done by each
user by manually initializing a qc, issueing it, waiting for its
completion and handling errors.  In addition to obvious code
factoring, using ata_exec_internal() fixes the following bugs.

* qc not freed on issue failure
* ap->qactive clearing could race with the next internal command
* race between timeout handling and irq
* ignoring error condition not represented in tf->status

Also, qc & hardware are not accessed anymore once it's completed,
making internal commands more conformant with general semantics.
ata_exec_internal() also makes it easy to issue internal commands from
multiple threads if that becomes necessary.

This patch only implements ata_exec_internal().  A following patch
will convert all users.

Signed-off-by: Tejun Heo <htejun@gmail.com>

--

Jeff, all patches have been regenerated against upstream branch as of
today.  (575ab52a21)

Also, I took out a debug printk from ata_exec_internal (don't know how
that one got left there).  Other than that, all patches are identical
to the previous posting.

Thanks. :-)
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Tejun Heo   authored and   Jeff Garzik   commited 2005-12-13 01:34:45 -05:00
a2a7a662f8
Merge branch 'upstream'
Jeff Garzik   commited 2005-12-06 04:52:48 -05:00
701db69d66
[PATCH] libata: move err_mask to ata_queued_cmd
- remove err_mask from the parameter list of the complete functions
  - move err_mask to ata_queued_cmd
  - initialize qc->err_mask when needed
  - for each function call to ata_qc_complete(), replace the err_mask parameter with qc->err_mask.

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>

===============
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

Albert Lee   authored and   Jeff Garzik   commited 2005-12-06 04:49:22 -05:00
a22e2eb071
Merge branch 'upstream'
Jeff Garzik   commited 2005-11-18 11:44:17 -05:00
f333b3f111